如何缩小逻辑卷,并将释放的空间重新分配到同一驱动器上的新分区中?

Cpt*_*rkt 7 linux hard-drive partitioning lvm lvm2

我有一个驱动器,sda。它有两个分区:

sda1: /boot
sda2: LVM managed in Volume Group volgrp01
Run Code Online (Sandbox Code Playgroud)

volgrp01 包含以下逻辑卷:

lv_root (30 GB)
lv_swap (8 GB)
lv_scratch (430 GB)
Run Code Online (Sandbox Code Playgroud)

我想要做的是将 lv_scratch 减少到 50 GB,并将新释放的 380 GB 重新分配到一个新分区 sda3(然后我将添加到另一个卷组)。

我附上了我想要的之前和之后的图片。我正在学习 LVM,虽然我可以掌握在卷组中调整逻辑卷大小的想法,但我不确定如何将该空间重新分配到新分区中。

我正在使用 RHEL6。

在此处输入图片说明

Wyz*_*ard 12

第 1 步:进行 备份。

我知道,大多数人会跳过这一步,但是您所做的更改可能会导致重大数据丢失,如果您搞砸了,并且您正在从 Internet 上随机陌生人那里获得指导。 有责任确保您的数据安全。我不是。

第 2 步:lv_scratch. 如果它是 ext2/3/4 文件系统,请卸载它并使用resize2fs; 如果是其他原因,您需要查找有关调整该类型文件系统大小的文档。

例如:

resize2fs /dev/volgrp01/lv_scratch 50G
Run Code Online (Sandbox Code Playgroud)

完成后(假设您正在使用resize2fs),它会告诉您文件系统的新大小(以字节为单位)。记下该编号,因为您可以在下一步中使用它进行安全检查。

第 3 步:使用 缩小逻辑卷lvreduce

  • 如果您想简单,请使用lvreduce --size 50G volgrp01/lv_scratch.
  • 如果您想特别注意不要将 LV 缩小到小于它包含的文件系统的大小,请使用 来检查卷组的vgdisplay volgrp01物理盘区大小,并计算需要多少物理盘区来保存文件系统的字节大小(使用 1MB = 1048576 字节)。然后使用--extents选项而不是--size 50G.

或者,您可以跳过第 1 步,而是使用lvreduce's-r选项自动调整文件系统的大小。这可能更容易,但我没有个人经验,不知道它有多可靠。

在这一点上,我建议fsck -f在你身上运行,/dev/volgrp01/vg_scratch以确保它完好无损。如果您收到有关“超出设备末端的访问”的任何错误,则意味着您将 LV 缩小了太多,并且lvextend在继续之前需要它。

第 4 步:使用 缩小物理卷pvresize

pvresize --setphysicalvolumesize 88G /dev/sda2
Run Code Online (Sandbox Code Playgroud)

您在这里不需要额外的安全检查,因为pvresize它将拒绝将物理卷缩小到对于您现有的逻辑卷来说太小的大小。但是,如果其他 LV 的大小不是 1GB 的精确倍数,则 88G 可能太小,您可能需要使用不同的值。

第 5 步:sda2使用 缩小分区fdisk

运行fdisk /dev/sda,并在其提示下运行p以查看现有分区。请注意sda2分区的起始扇区号。然后删除sda2分区——这不会触及实际数据,只是删除它开始和结束位置的记录——并创建一个sda2具有相同起始扇区(这很重要)和 88G 大小的新分区。分区的类型代码应该是8e“Linux LVM”。

如果你想格外小心——我建议你这样做,特别是如果你必须指定一个与pvresize之前不同的大小——使用检查物理卷的 PE 大小和总 PEpvdisplay /dev/sda2并将它们相乘以找到大小以字节为单位的物理卷(再次使用 1MB = 1048576 字节)。然后从新sda2分区的结束扇区号中减去新分区的起始扇区号,加 1 以便计算最后一个扇区,然后乘以磁盘的扇区大小(应该是 512 或 4096 字节)。确保两个结果匹配。

现在创建新sda3分区,保存更改,然后退出fdisk。如果您收到有关需要重新启动以使更改生效的消息,请重新启动。


小智 2

不确定它是否会起作用 - 我只是增加了 pv。无论如何,除非您有可读的备份,否则不要在有价值的数据上尝试它。

  1. 使用 FS 特定工具(如果有)在 lv_scratch 上调整 FS 大小

  2. lvresize -L 50G /dev/volgrp01/lv_scratch

  3. pvresize --setphysicalvolumesize 88G /dev/sda2

  4. 调整 /dev/sda2 的大小(不确定是否可以使用parted/cfdisk等,可能您需要其他分区编辑器)

  5. 创建新分区、创建新 pv、创建卷组等。

调整大小时请仔细检查所有数字,就好像将逻辑卷或物理卷缩小到超过 FS 一样,最终可能会导致 FS 损坏并丢失数据,通常最好保留一些未使用的空间,以防混乱。