如何合并lvm

如何合并lvm

我不知道我的同事到底做了什么,但我知道他正在尝试增加 LVM 的大小。现在,执行命令后我可以看到这样的输出lsblk

NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0             2:0    1    4K  0 disk
sda             8:0    0  100G  0 disk
├─sda1          8:1    0    1G  0 part /boot
├─sda2          8:2    0   39G  0 part
│ ├─rhel-root 253:0    0   95G  0 lvm  /
│ └─rhel-swap 253:1    0    4G  0 lvm  [SWAP]
└─sda3          8:3    0   60G  0 part
  └─rhel-root 253:0    0   95G  0 lvm  /

可以看到,和rhel-root下有两个相同的名称,并且都挂载在根目录下。sda2sda3/

然而, 的输出df -h是:

Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               3.9G     0  3.9G   0% /dev
tmpfs                  3.9G     0  3.9G   0% /dev/shm
tmpfs                  3.9G  9.6M  3.9G   1% /run
tmpfs                  3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/rhel-root   35G   28G  7.3G  80% /
/dev/sda1             1014M  285M  730M  29% /boot
tmpfs                  783M  8.0K  783M   1% /run/user/42
tmpfs                  783M     0  783M   0% /run/user/1001

看起来大小/还是35G,也就是说没有扩容。

看来我需要合并sda3sda2但我不知道如何解决这个问题。

输出lvs

  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root rhel -wi-ao---- 94.99g
  swap rhel -wi-ao----  4.00g

输出vgs

  VG   #PV #LV #SN Attr   VSize  VFree
  rhel   2   2   0 wz--n- 98.99g    0

输出pvs

  PV         VG   Fmt  Attr PSize   PFree
  /dev/sda2  rhel lvm2 a--  <39.00g    0
  /dev/sda3  rhel lvm2 a--  <60.00g    0

输出vgdisplay

  --- Volume group ---
  VG Name               rhel
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  9
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               98.99 GiB
  PE Size               4.00 MiB
  Total PE              25342
  Alloc PE / Size       25342 / 98.99 GiB
  Free  PE / Size       0 / 0
  VG UUID               tPY1JO-AwK2-ULra-Matz-5VVy-lxWK-CL60ng

答案1

您的同事已成功扩展了rhel-rootLV lvextend,因此现在它的一部分已打开sda2,另一部分也已打开sda3。但LV内的文件系统还没有扩展。

只有一个rhel-rootLV,但lsblk这里显示它的方式可能有点令人困惑:它显示了 LV 的总大小,显然与每个单独的部分相关。

sda2和PVsda3已合并到rhelVG 中,因此该 VG 内的 LV 的增长可以超出单个 PV 的限制。显然,您的同事希望避免与动态编辑包含根文件系统的分区相关的风险,只是使用新空间创建了一个新分区,并将其作为新的 PV 添加到现有 VG 中。在我看来,这是在可启动磁盘上扩展 VG 的最安全方法:虽然它会给您留下多个分区作为 PV,这可能会损害您的整洁感,但它确实没有其他显着影响。


此时,如果您确实愿意,您仍然可以删除sda3并扩展sda2。程序如下:

首先,非常小心地lvreduce将 LV 缩小root到原来的样子。您可以使用 LVM 备份文件来/etc/lvm/archive找出确切的大小,或者您可以使用lvdisplay -m /dev/mapper/rhel-root查看 PV 上有多少个盘区sda2,并使用该值。如果您选择这样做,则必须非常小心,不要将 LV 缩小到小于其中文件系统的当前大小:你不想切断文件系统的尾部,哪怕是一点点。

然后使用 删除VGsda3中现在空的PV ,然后编辑分区表以删除和扩展,使用使系统在磁盘使用时接受新的分区表(如果不可用或无法执行操作,则重新启动job),然后通过扩展PV来扩展VG以占据新的空间。用于重新扩展LV。rhelvgreduce rhel /dev/sda3sda3sda2partprobe /dev/sdapartprobepvresize /dev/sda2rhelsda2lvextend -l +100%FREE /dev/mapper/rhel-rootroot

现在你和你的同事处于同样的境地,但没有美观上的不愉快sda3


您的同事错过的最后一步实际上是扩展文件系统以利用 LV 增加的容量。根据输出/run中的存在df -h以及 VG name rhel,我假设该系统是 RHEL 7 或更高版本。所以默认的文件系统类型是XFS,这意味着扩展文件系统的命令将是:

fsadm resize /dev/mapper/rhel-root

或者

xfs_growfs /

注意:在执行此操作之前请仔细考虑,因为目前还没有生产质量的工具可以在线或离线缩小 XFS 文件系统。因此,一旦扩展文件系统,您将无法将其缩小到较小的大小。

无论您选择删除sda3并扩展sda2,还是保持同事的工作不变,此命令都是相同的。

相关内容