1 介绍
逻辑卷管理器是 Linux 系统用于对硬盘分区进行管理的一种机制,理论性较强,其创建初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。
卷组(vg)将多个物理卷(pg)组成一个大的单位,然后在根据需要去分配成多个逻辑卷
2 相关命令
3 为了节省空间,我们准备将5G磁盘 和raid10 的10G组成一个lvm来进行测试
然后遇到了一个问题,原有的系统有stata nvme 然后新增了一个scsi 开启系统直接报错,而且无法进入正常救援模式,于是排查半天,最后移除就好了,重新增加一块stata硬盘,正常
》1 创建物理卷
[root@localhost ~]# pvcreate /dev/sdf /dev/sdg
WARNING: xfs signature detected on /dev/sdf at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/sdf.
Physical volume "/dev/sdf" successfully created.
Physical volume "/dev/sdg" successfully created.
》2 创建卷组
[root@localhost ~]# vgcreate vg1 /dev/sdf /dev/sdg
Volume group "vg1" successfully created
》3 创建逻辑卷 -n 逻辑卷名称 -L 指定大小 -l 标准大小的个数 卷组名称
[root@localhost ~]# lvcreate -n lv1 -L 4G vg1
Logical volume "lv1" created.
然后查看的时候发现默认情况下,主目录也是lvm 这下可以调整下了
》4 格式化创建的逻辑卷
[root@localhost ~]# mkfs.xfs /dev/vg1/lv1
》5 挂载到文件
echo “/dev/vg1/lv1 /media/lv1 xfs defaults 0 0” >>/etc/fstab
挂载后可以看到,udev给我们的名字其实是
/dev/mapper/vg1-lv1 4.0G 61M 4.0G 2% /media/lv1
5 增大lvm大小 调整之前卸载设备,实际测试的时候忘记了,但是也成功了
[root@localhost media]# lvextend -L 5G /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 4.00 GiB (1024 extents) to 5.00 GiB (1280 extents).
Logical volume vg1/lv1 successfully resized.
》但是df -h 还是显示4G 然后重新挂载还是不行,重启,还是显示不对,然后卸载重新操作
[root@localhost ~]# lvextend -L 5G /dev/vg1/lv1
New size (1280 extents) matches existing size (1280 extents).
显示相同
》卸载后,检查磁盘完整性,然后重置磁盘容量
[root@localhost ~]# umount /media/lv1
[root@localhost ~]# e2fsck -f /dev/vg1/lv1
The superblock could not be read or does not describe a valid ext2/ext3/ext4
提示不能被读取,是一个无效的ext格式文件
》格式成ext4 mkfs.ext4 /dev/vg1/lv1
重新挂载
/dev/vg1/lv1 /media/lv1 ext4 defaults 0 0
这个时候已经变成了5G 说明lvm对xfs支持的不是很好
/dev/mapper/vg1-lv1 4.9G 20M 4.6G 1% /media/lv1
6 减小lvm
介绍一个额外命令
Linux e2fsck命令用于检查使用 Linux ext* 档案系统的 partition 是否正常工作。
device : 预备检查的硬盘 partition,例如:/dev/sda1-a : 对 partition 做检查,若有问题便自动修复,等同 -p 的功能-B : 设定单位 block 的大小-c : 检查该partition 是否有坏轨-C file : 将检查的结果存到 file 中以便查看-f : 强制检查-n : 将档案系统以[唯读]方式开启-p : 对 partition 做检查,若有问题便自动修复-v : 详细显示模式-V : 显示出目前 e2fsck 的版本-y : 预先设定所有检查时的问题均回答[是]
a 卸载 [root@localhost ~]# umount /dev/vg1/lv1
b 检查完整性 [root@localhost ~]# e2fsck -f /dev/vg1/lv1
c 调整磁盘大小 resize2fs /dev/vg1/lv1 1G
d 调整逻辑卷大小 [root@localhost ~]# lvreduce -L 1G /dev/vg1/lv1
但是我就想试试先操作lvreduce显示成功,但是在挂载的时候,直接显示分区有损坏,按照提示使用e2fsck -fy /dev/vg1/lv1 命令进行修复,但是还是提示损坏,减小分区还是适当注意一下
为了继续操作,移除错误的逻辑分区
lvremove /dev/vg1/lv1
lvcreate -L 1G -n lv1 /dev/vg1 # 创建
mkfs.ext4 /dev/vg1/lv1 格式化,其实刚才我想可能直接格式化也可以解决这个错误,或者应该尝试-a 修复一下
重新挂载,没有问题,然后按顺序再次按上面步骤操作,挂载成功
7 lvm快照
¾ 快照卷的容量必须等同于逻辑卷的容量;¾ 快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除。
A 创建
[root@localhost ~]# vgdisplay /dev/vg1 查看卷组情况,是否有足够空间
VG Size 7.99 GiB
PE Size 4.00 MiB
Total PE 2046
Alloc PE / Size 125 / 500.00 MiB # 占用
Free PE / Size 1921 / 7.50 GiB # 空闲
lvcreate -L 500M -s -n snap_lv1 /dev/vg1/lv1 -s 创建1个大小一样的快照逻辑卷
Logical volume "snap_lv1" created.
[root@localhost lv1]# lvdisplay /dev/vg1/snap_lv1 # 查看状态
其他输出省略:LV snapshot status active destination for lv1 可以看到快照状态就绪
我们将它挂载上来可以看到实际上他就是一样大小,然后把这个磁盘文件原样存储一份
B 我们更新一个文件到源端逻辑卷
[root@localhost media]# dd if=/dev/zero of=/media/lv1/10Mfile bs=10M count=1
可以看到,现在已经和快照不同了
C 还原快照
[root@localhost ~]# umount /media/lv1 # 卸载要操作的逻辑卷
[root@localhost ~]# lvconvert --merge /dev/vg1/snap_lv1 # 恢复分区
Merging of volume vg1/snap_lv1 started.
vg1/lv1: Merged: 100.00%
可以看到恢复后,快照分区就被清除了,文件也恢复成快照时候的样子
D 删除lvm 先删除逻辑卷-删除卷组- 删除物理卷
--- umount /dev/vg1/lv1 卸载
--- lvremove /dev/vg1/lv1 移除逻辑卷
---vgremove /dev/vg1 移除卷组
---pvremove /dev/sda /dev/sdb 移除物理卷
