Partition

如何合併lvm

  • July 1, 2020

我不知道我的同事到底做了什麼,但我知道他試圖增加 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  /

如您所見, andrhel-root下有兩個相同的名稱,並且它們都安裝在 thr root directory 上。sda2``sda3``/

但是,輸出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

你的同事已經成功地擴展了rhel-rootLV lvextend,所以它的一部分現在打開sda2,另一部分打開sda3。但是 LV 內部的文件系統還沒有擴展。

只有一個rhel-rootLV,但lsblk在這里以一種可能有點令人困惑的方式顯示它:它顯示了 LV 的總大小,顯然與每個單獨的部分相關聯。

sda2sda3PV 已經合併到VG 中,因此該rhelVG 中的 LV 可以增長超出單個 PV 的限制。顯然,您的同事希望避免與即時編輯包含根文件系統的分區相關的風險,並且剛剛使用新空間創建了一個新分區,並將其作為新 PV 添加到現有 VG。在我看來,這是在可引導磁碟上擴展 VG 最安全的方法:雖然它會給您留下多個分區作為 PV,這可能會冒犯您的整潔感,但它確實沒有其他顯著影響。


此時,如果你真的想要,你仍然可以刪除sda3和擴展sda2。程序如下:

首先,非常小心地使用lvreducerootLV 縮小回原來的樣子。您可以使用 LVM 備份文件/etc/lvm/archive來找出確切的大小,或者您可以使用lvdisplay -m /dev/mapper/rhel-root來查看 PV 上有多少個盤區sda2,並使用該值。**如果您選擇這樣做,您必須非常小心,不要將 LV 縮小到小於其中的文件系統的目前大小:**您不想切斷文件系統的尾部,甚至一點也不想要。

然後從VG 中刪除現在為空的sda3PV ,然後編輯分區表以刪除和擴展,用於使系統在磁碟正在使用時接受新的分區表(如果不可用或無法執行,則重新啟動job),然後通過擴展 PV 來擴展VG以佔用新空間。用於重新擴展LV。rhel``vgreduce rhel /dev/sda3``sda3``sda2``partprobe /dev/sda``partprobe``pvresize /dev/sda2``rhel``sda2``lvextend -l +100%FREE /dev/mapper/rhel-root``root

現在你和你的同事在同一點上,但沒有審美上的不愉快sda3


您的同事錯過的最後一步實際上是擴展文件系統以利用 LV 增加的容量。通過/runindf -h輸出和 VG name的存在rhel,我假設該系統是 RHEL 7 或更高版本。所以預設的文件系統類型是 XFS,這意味著擴展文件系統的命令是:

fsadm resize /dev/mapper/rhel-root

或者

xfs_growfs /

注意:在這樣做之前請仔細考慮,因為**目前沒有生產質量的工具來縮小 XFS 文件系統,無論是線上還是離線。**因此,一旦您擴展了文件系統,您將無法將其縮小到更小的尺寸。

無論您是選擇刪除sda3和擴展sda2,還是保持同事的工作原樣,此命令都是相同的。

引用自:https://unix.stackexchange.com/questions/596001