逻辑卷管理器 (LVM) 概述
在完成调整大小过程之前,重要的是我们首先要了解有关物理卷、卷组、逻辑卷和文件系统的一些基本概念。
- 物理卷 (PV):这可以在整个物理磁盘(想想 /dev/sda)或者 Linux 分区上创建。
- 卷组 (VG):它由至少一个或者多个物理卷组成。
- 逻辑卷 (LV):这有时被称为分区,它位于一个卷组内,并有一个文件系统写入其中。
- 文件系统: ext4 等文件系统将位于逻辑卷上。
LVM Resize - 如何增加或者扩展逻辑卷
这个过程使用 LVM 非常容易完成,因为它可以在不需要停机的情况下即时完成,我们可以在已安装的卷上执行它而不会中断。
为了增加逻辑卷的大小,它所在的卷组必须有可用空间。
要查看卷组的可用空间,请运行如下所示的 vgdisplay 命令并查看“可用 PE/大小”字段。
[jack@onitroad ~]# vgdisplay --- Volume group -- VG Name centos System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 6 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 20.74 GiB PE Size 4.00 MiB Total PE 5309 Alloc PE / Size 4030 / 15.74 GiB Free PE / Size 1280 / 5.00 GiB VG UUID VvG6Sp-wIgb-LTh0-szdU-s9R1-a6K9-qHassI
在此示例中,我们在卷组中有 5GB 的可用空间,如“Free PE/Size 1279/5.00 GiB”所示。
注意:如果卷组中没有任何或者足够的可用空间,则首先需要扩展卷组以完成调整大小。
或者,如果我们有多个 LVM 分区,我们可以先缩小不同的逻辑卷以在卷组内创建空间。
现在我们已经确认卷组中有可用空间,请确认我们要增加的逻辑卷的名称以及我们计划添加的空间量。
下面的 lvdisplay 命令将显示所有逻辑卷及其当前大小。
它还将显示逻辑卷所属的卷组,因此确保已使用 vgdisplay 检查正确的卷组是否有足够的空间,如前面所述,以防止尝试增加某个其他卷组内的逻辑卷。
如下例所示,我们将使用位于卷组“centos”中的逻辑卷“var”,即我们在 vgdisplay 中看到的卷组。
在此示例中,我们只有一个卷组,但我们可能有更多,因此我们需要检查。
[jack@onitroad ~]# lvdisplay --- Logical volume -- LV Path /dev/centos/var LV Name var VG Name centos LV UUID 7PNgg2-ZmnG-a26g-zRoT-PRVM-RDc1-oq6J4M LV Write Access read/write LV Creation host, time CentOS7, 2014-04-16 07:50:25 +1000 LV Status available # open 0 LV Size 5.00 GiB Current LE 1280 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2
现在是扩展逻辑卷的时候了。
在下面的示例中,我们使用 -L 标志来增加指定的大小(M 表示兆字节,G 表示千兆字节,T 表示太字节)。
我们也可以删除 + 以增加到指定的数量而不是指定的数量。
lvextend -L+5G /dev/centos/var Rounding size to boundary between physical extents: 4.90 GiB Size of logical volume centos/var changed from 5.00 GiB (1280 extents) to 10.00 GiB (2560 extents). Logical volume var successfully resized
上面的命令会将逻辑卷 /dev/centos/var 增加 5GB,目前它已经是 5GB,所以这将增加到总共 10GB。
我们可以使用“lvextend -L 10G /dev/centos/var”实现相同的效果,这会将逻辑卷也增加到 10GB,因为这是没有 + 指定的内容。
或者,如果我们只想使用卷组中的所有可用空间而不是指定要增加的大小,请运行“lvextend -l +100%FREE /dev/centos/var”。
我们可以运行如下所示的 lvdisplay 命令来检查扩展是否按预期完成。
[jack@onitroad ~]# lvdisplay --- Logical volume -- LV Path /dev/centos/var LV Name var VG Name centos LV UUID 7PNgg2-ZmnG-a26g-zRoT-PRVM-RDc1-oq6J4M LV Write Access read/write LV Creation host, time CentOS7, 2014-04-16 07:50:25 +1000 LV Status available # open 0 LV Size 10.00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2
现在逻辑卷已经扩展,我们可以调整文件系统的大小。
这将扩展文件系统,使其占用逻辑卷内新创建的空间。
该命令可能因我们使用的文件系统类型而异。
将此用于基于 ext3/4 的文件系统
resize2fs /dev/centos/var
或者,将此用于基于 xfs 的文件系统
xfs_growfs /dev/centos/var
调整文件系统大小后,空间应该可以使用了。
如果我们运行“df”命令来查看磁盘空间,我们应该会看到它已成功增加。
[jack@onitroad mnt]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 9.8G 1.4G 8.5G 14% / devtmpfs 908M 0 908M 0% /dev tmpfs 914M 0 914M 0% /dev/shm tmpfs 914M 8.6M 905M 1% /run tmpfs 914M 0 914M 0% /sys/fs/cgroup /dev/sda1 497M 96M 402M 20% /boot /dev/mapper/centos-var 10G 33M 10G 1% /mnt
在这个例子中,我运行了一个 'mount /dev/centos/var /mnt' 来将逻辑卷挂载到 /mnt,如上所示 /mnt 正确报告了 10G 的大小。
在这里,我们展示如何在 Linux 中扩展 LVM 卷或者分区,方法是首先调整逻辑卷的大小,然后调整文件系统的大小以利用另外的空间。
注意:在这个例子中,我们在 CentOS 7 中工作,在不同的 Linux 发行版中,某些命令可能会有所不同。
在这个例子中,我们将把逻辑卷 /var/centos/var 从 5GB 扩展到 10GB。
我们目前将此逻辑卷挂载到 /mnt。