在 CentOS 6 中使用 System-Config-LVM 会导致文件系统损坏

在 CentOS 6 中使用 System-Config-LVM 会导致文件系统损坏

我习惯于system-config-lvm在系统运行时使用 RedHat Linux 中的实用程序(我使用的是 RHEL 5)来调整 LVM 的大小。需要说明的是,我是在正在使用的磁盘上运行时执行此操作的为了我使用的系统,没有出现任何错误或问题。执行此操作时,系统告诉我必须卸载卷,然后在完成后重新安装。我这样做时,成功了。

我尝试在 CentOS 6.5 中使用 执行此操作system-config-lvm。我首先尝试将/home分区大小调整为较小,以便我可以增加分区/root。我将其缩小,单击应用,我被告知必须先卸载它,我单击确定,然后我被告知无法卸载它,因为设备正忙。这已经与 RHEL 的行为不同,我理解 LV 旨在能够在使用时调整大小。嗯,某种程度上网上搜索说事实并非如此,并且不可能(在使用时卸载卷),并建议使用实时 CD 并在尚未安装文件系统的情况下执行操作。这就是我所做的。我拿了一个 CentOS 6.5 实时 CD,运行system-config-lvm调整 LV 大小(基本上交换/(根)和/home卷的大小),成功了,然后我重新启动。

当我重新启动时,启动被检测到的文件系统错误中断。我决定将逻辑卷大小调整为原始大小(这需要重新启动到 Live CD 并重复 LVM 过程),重新启动后仍然出现错误。错误仅存在于卷中/home,因为/(根)卷完全完好无损。为了尝试挽救,我尝试fsck -y这样做,但没有成功,没关系,因为整个文件系统一开始就是虚拟机的克隆。我不介意丢失数据。

但我想知道的是,为什么会发生这种情况?或者更好的是,正确的做法是什么?当然,理想情况下不会产生文件系统错误。这可能是由于卷的大小太小而导致的(我相信我检查过,情况并非如此,但我不能完全确定)?我明白了此服务器故障帖子建议使用resize2fs。 这是正确的做法吗? 而不是system-config-lvm

答案1

Lvm 管理块设备,而不是其上的文件系统。要扩展文件系统,首先要扩展块设备 (LV)。

lvextend -l +5G /dev/volumegroup/volumename

然后,使用 resize2fs 来扩大 ext2/3/4 的文件系统。

resize2fs /dev/volumegroup/volumename

它会将文件系统增大到卷的新大小。

这可以在线(已安装)或离线(未安装)工作。

对于 xfs,您可以使用 xfs_growfs,它只能在线(已安装)工作。您无法缩小 xfs 文件系统,并且只能离线(未安装)缩小 ext2/3/4 文件系统。

至关重要的是,首先缩小文件系统(resize2fs 新大小文件系统),然后再缩小逻辑卷。

答案2

Lvm 有 3 层。最底层称为物理层,所有命令都以 pv 开头。pvcreate 将磁盘或分区(物理卷)切成许多编号为 aa 大小的块(默认为 4 MB)。这些块称为物理扩展,简称 PE。您可以使用 pvdisplay 查看它。

中间层是卷组,所有命令都以 vg 开头。然后,vgcreate 获取一个或多个物理卷(磁盘)的 PE,并将它们组合成一个卷组。

上层是逻辑卷层,所有命令都以 lv 开头。(我相信您看到了模式)。

lvcreate 根据逻辑卷所需的大小获取多个块(不一定全部位于同一磁盘上),并将它们作为 bblock 设备呈现给 linux 系统。

然后,在该新块设备(逻辑卷)上创建文件系统。(ext4、xfs、vfat、ntfs……)安装该文件系统并使用它来存储文件。

现在到了有趣的部分:如果文件系统空间不足,您只需扩大逻辑卷,然后在其上扩大文件系统。

如果您的卷组中没有更多可用的 PE,您可以向您的机器添加一个新的磁盘,执行 pvcreate new-disk,使用 vgextend 将其添加到您的卷组,您可以将逻辑卷扩展到比原始磁盘更大。

重要提示:您的文件系统(存储日期、文件夹和文件的地方)位于逻辑卷的顶部,因此如果您在不先缩小文件系统的情况下缩小 lv,那么就像您砍掉了数据和文件系统结构仍然指向的磁盘部分,所以您的文件系统会被损坏。

相关内容