以下内容主要来自于系统运维|Lnux LVM简明教程。
简介
逻辑卷管理LVM是用来管理磁盘的一个工具。传统分区使用固定大小分区,重新调整大小十分麻烦,而LVM就是解决这个问题的。
LVM使用分层结构,如下图所示。
这其中就涉及到我们后面需要操作的三个核心组件,物理卷,卷组,逻辑卷。
首先,实际的物理磁盘及其划分的分区被成为物理卷(PV),一个或多个物理卷可以用来创建卷组(VG)。基于卷组可以创建逻辑卷(LV)。在一个卷组中可以创建多个逻辑卷。文件系统就是在逻辑卷上创建的,然后可以在操作系统挂载和访问。
LVM的基本操作
准备磁盘分区
通过使用fdisk,创建磁盘分区。我们需要创建3个1G分区,注意,并不要求分区的大小一致。同样,分区需要使用‘8e’类型来使他们可用于LVM。
重复上面的操作来创建其他两个分区。分区创建完成后,我们应该有类似如下的输出:
其中/dev/sdb1, /dev/sdb2等就是我们所说的磁盘分区。
准备物理卷(PV)
通过pvcreate
可以在磁盘分区上创建物理卷。
pvcreate /dev/sdb1
pvcreate /dev/sdb2
pvcreate /dev/sdb3
使用pvdisplay
命令可以检查查看当前机器上的物理卷情况。
在我自己的主机上的显示情况如下。
使用pvremove
可以删除物理卷
pvremove /dev/sdb1
准备卷组(VG)
使用vgcreate
进行卷组的创建。
下列命令用来创建名为’volume-group1’的卷组,使用/dev/sdb1, /dev/sdb2 和 /dev/sdb3创建。
vgcreate volume-group1 /dev/sdb1 /dev/sdb2 /dev/sdb3
使用vgdisplay
来查看主机上的卷组
在我自己的主机上如下所示。
从众我们可以看到卷组的使用量/总量。物理卷给卷组提供空间,只要这个卷组中还有可用空间,我们就可以随意创建逻辑卷。
vgs命令也可以查看卷组的信息,但是比较简略。
使用vgremove删除卷组。
vgremove volume-group1
创建逻辑卷(LV)
使用lvcreate
进行裸机卷的创建。下面是创建一个名为1v1
大小为100MB的逻辑卷。
lvcreate -L 100M -n 1v1 volume-group1
逻辑卷可以使用lvdisplay
命令查看。
我自己的机器上显示效果如下。
我们可以格式化和挂载逻辑卷。
# mkfs.ext4 /dev/volume-group1/lv1
# mkdir /lvm-mount
# mount /dev/volume-group1/lv1 /lvm-mount/
使用lvremove可以删除逻辑卷。
# umount /lvm-mount/
# lvremove /dev/volume-group1/lv1
拓展一个LVM卷
逻辑卷的大小是可以调整的。在调整逻辑卷大小之后,也要对文件系统调整大小进行匹配。这个额外的步骤各不相同,取决于创建文件系统的类型。
首先需要卸载掉1v1卷。
umount /lvm-mount/
然后设置卷的大小为200M
lvresize -L 200M /dev/volume-group1/1v1
也可以用lvextend命令来进行了扩容
lvextend -l +100%FREE /dev/VolGroup00/lv_root
将当前卷组中所有的空闲空间都拓展到lv_root这个逻辑卷中。
接下来检查磁盘错误
e2fsck -f /dev/volume-group1/1v1
运行一下命令拓展文件系统
resize2fs /dev/volume-group1/1v1
然后检查一下lv的状态来验证。
缩减一个LVM卷
和上面差不多的步骤。需要注意的是减少后逻辑卷的大小值如果小于存储数据的大小,存储在后面的数据会丢失。
umount /dev/volume-group1/lv1 # 卸载掉卷。
e2fsck -f /dev/volume-group1/lv1 # 检测磁盘错误。
resize2fs /dev/volume-group1/lv1 100M # 缩小文件系统,更新ext4信息。
lvresize -L 100M /dev/volume-group1/lv1 #减少逻辑卷大小
最后验证调整后的逻辑卷大小。
拓展一个卷组
将一个物理卷添加到卷组。主要用于将一个新挂载的磁盘加入到LVM中。
检查现在的卷组状态。
创建一个2GB分区sdc1,类型为LVM(8e)
再创建物理卷并拓展卷组。
pvcreate /dev/sdc1
vgextend volume-group1 /dev/sdc1
使用vgdisplay来验证。
只要是8e类型的磁盘分区都可以用来拓展卷组。
lvm用法实践
centos中将home分区合并到/分区
备份home分区的文件并卸载home分区
tar cvf /tmp/home.tar /home umount /home
取消home分区的开机挂载,把
/etc/fstab
里面的/dev/mapper/centos-home
这一行注释掉。删除与home分区有关的进程
fuser -m -v -i -k /home
删除/home所在的lv
lvremove /dev/mapper/centos-home
拓展/root所在的lv,将剩下全部可用大小都分配给root
lvextend -l +100%FREE /dev/mapper/centos-root # 下面的命令应该用哪一个? xfs_growfs /dev/mapper/centos-root resize2fs /dev/mapper/centos-root
- 把原来备份的home目录中的东西放到/home文件夹中。