逻辑卷管理器 (LVM) 概述

在完成调整大小过程之前,重要的是我们首先要了解有关物理卷、卷组、逻辑卷和文件系统的一些基本概念。

  • 物理卷 (PV):这可以在整个物理磁盘(想想 /dev/sda)或者 Linux 分区上创建。
  • 卷组 (VG):它由至少一个或者多个物理卷组成。
  • 逻辑卷 (LV):这有时被称为分区,它位于一个卷组内,并有一个文件系统写入其中。
  • 文件系统: ext4 等文件系统将位于逻辑卷上。
LVM 调整大小 - 如何减少 LVM 分区

在这里,我们展示如何在 Linux 中缩小 LVM 卷或者分区,方法是首先调整文件系统的大小,然后调整逻辑卷的大小。

注意:在这个例子中,我们在 CentOS 7 中工作,在不同的 Linux 发行版中,某些命令可能会有所不同。
从 CentOS 7 开始,默认文件系统是 XFS,目前无法缩小,此示例使用 ext4 文件系统。

在这个例子中,我们将把逻辑卷 /var/centos/var 从 10GB 缩小到 5GB。

LVM 调整大小 - 如何减少或者缩小逻辑卷

要减小 LVM 分区的大小,我们必须首先减小其中的文件系统以避免可能的数据损坏。
如果我们输入的命令不正确,则可能会发生这种情况,因此强烈建议我们在继续之前对数据进行完整备份。
缩小逻辑卷将为我们在卷组中提供更多空间,这意味着我们可以使用这个新发现的空间来扩展另一个逻辑卷。

第一步将取决于我们是要缩小 LVM 根卷还是非根卷。

缩小root卷

根卷通常是挂载到/的逻辑卷。
我们不能卸载它来缩小它,因为它正在被正在运行的操作系统使用,这意味着我们必须首先从 Live CD 启动才能完成此操作。
一旦启动到 Live CD,我们可能首先需要运行以下命令来获取 LVM 卷,但这通常发生在启动过程中,因此可能不需要,如果有疑问只需运行它。

vgchange -a y

缩小非root卷

或者,如果我们要缩小的卷是非root卷,即未安装到文件系统根目录的任何其他卷,我们可以卸载该卷,如下所示继续。
请注意,当我们卸载卷时,数据将不可用,因此我们可能需要在卸载之前安排停机时间并停止运行使用其中数据的应用程序。
通过指定逻辑卷或者它当前挂载到的位置来卸载,在下面的示例中,我们指定可以在 /dev/(vg-name)/(lv-name) 中找到的逻辑卷。

umount /dev/centos/var

以下所有步骤现在都适用于根卷或者非根卷。

在能够尝试缩小 LVM 卷的大小之前,我们必须首先对其运行文件系统检查。
如果不这样做,我们将收到一条错误消息,并且无法继续。
这是必需的步骤,因为在错误状态下调整文件系统的大小可能会导致数据损坏。
-f 标志使检查运行,即使文件系统看起来很干净,而 -y 假设对所有问题都是肯定的,如果被要求修复问题,它将响应。

e2fsck -fy /dev/centos/var

接下来我们需要缩小文件系统,为了安全起见,我们将把文件系统缩小到低于逻辑卷将缩小到的程度。
这是因为我们不希望在下一步中意外地将逻辑卷缩小到小于文件系统的大小,因为这可能会导致损坏和数据丢失。
别担心,我们会在最后收回空间。

下面的命令将缩小文件系统,使其总大小仅为 4G,请注意,无论我们指定缩小到什么大小,文件系统中都必须有可用空间,否则我们必须先删除数据。

resize2fs /dev/centos/var 4G

文件系统缩小后,我们可以使用 lvreduce 命令缩小逻辑卷的大小。
将其减小到我们希望卷的大小,如 -L 标志所指定的那样。
相反,如果我们想缩小指定的大小,只需在大小前面放一个。
为了完整起见,下面显示了两者,但是我们只需要运行一个。

减少到5G

lvreduce -L 5G /dev/vg/disk-name

减少5G

lvreduce -L -5G /dev/vg/disk-name

执行 lvreduce 命令后,我们将收到一条警告,提示我们选择减小的大小,因此请以此为契机确认我们将逻辑卷缩小到不小于我们之前缩小文件的大小系统到。
确认后可以继续输入“y”并按回车键。

在逻辑卷减小到所需大小后,在该卷上运行 resize2fs,因为这将扩展文件系统以使用逻辑卷内的所有可用空间。
这利用了所有剩余的可用空间,以便在我们之前将文件系统缩小到小于逻辑卷的大小时不会浪费任何空间。

resize2fs /dev/centos/var

此时,剩下要做的就是挂载卷。
如果这是一个根卷并且我们在 Live CD 中工作,只需引导回主要 Linux 操作系统。

如果这是一个非根卷并且我们卸载它以完成减少,只需将其重新安装。
假设我们已经在 /etc/fstab 中设置了配置,我们可以使用 'mount -a' 执行此操作,否则指定逻辑卷及其应安装到的位置。
这里我们手动挂载到 /mnt 只是为了测试。

mount /dev/centos/var /mnt

在我们启动回主操作系统或者完成挂载后,检查使用“df”命令显示的空间以确认它已按预期减少。

[jack@onitroad /]# 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  4.8G   20M  4.6G   1% /mnt
日期:2020-07-07 20:56:51 来源:oir作者:oir