Linux

調整 LVM 大小而不失去數據

  • March 28, 2022

我有帶 LVM 的 Cloud Linux Serwer 和兩個磁碟(40 + 50)。今天,我不需要第二個驅動器,我想通過保留 LVM 來拔掉它以備將來使用。

# vgdisplay
 --- Volume group ---
 VG Name               system
 System ID
 Format                lvm2
 Metadata Areas        2
 Metadata Sequence No  20
 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               89.75 GiB
 PE Size               4.00 MiB
 Total PE              22977
 Alloc PE / Size       22977 / 89.75 GiB
 Free  PE / Size       0 / 0
 VG UUID               QkkfoN-Ftor-suCL-VF4J-huV2-lhWp-9K5cMx

# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/system-root ext4       88G   21G   63G  25% /
none                    tmpfs     4.0K     0  4.0K   0% /sys/fs/cgroup
udev                    devtmpfs  485M  4.0K  485M   1% /dev
tmpfs                   tmpfs     100M  412K   99M   1% /run
none                    tmpfs     5.0M     0  5.0M   0% /run/lock
none                    tmpfs     496M     0  496M   0% /run/shm
none                    tmpfs     100M     0  100M   0% /run/user
/dev/vda1               ext2      236M   98M  127M  44% /boot

# lsblk
NAME                     MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0                       11:0    1  1024M  0 rom
vda                      253:0    0    40G  0 disk
├─vda1                   253:1    0   243M  0 part /boot
├─vda2                   253:2    0     1K  0 part
└─vda5                   253:5    0  39.8G  0 part
 ├─system-root (dm-0)   252:0    0  88.8G  0 lvm  /
 └─system-swap_1 (dm-1) 252:1    0     1G  0 lvm  [SWAP]
vdb                      253:16   0    50G  0 disk
└─vdb1                   253:17   0    50G  0 part
 └─system-root (dm-0)   252:0    0  88.8G  0 lvm  /

# pvdisplay --maps
 --- Physical volume ---
 PV Name               /dev/vda5
 VG Name               system
 PV Size               39.76 GiB / not usable 2.00 MiB
 Allocatable           yes (but full)
 PE Size               4.00 MiB
 Total PE              10178
 Free PE               0
 Allocated PE          10178
 PV UUID               aUQpTn-xi1T-ygwu-emIh-I2CT-w2tp-cRUNjl

 --- Physical Segments ---
 Physical extent 0 to 9921:
   Logical volume      /dev/system/root
   Logical extents     0 to 9921
 Physical extent 9922 to 10177:
   Logical volume      /dev/system/swap_1
   Logical extents     0 to 255

 --- Physical volume ---
 PV Name               /dev/vdb1
 VG Name               system
 PV Size               50.00 GiB / not usable 2.00 MiB
 Allocatable           yes (but full)
 PE Size               4.00 MiB
 Total PE              12799
 Free PE               0
 Allocated PE          12799
 PV UUID               5IbHi7-bS0j-ZDEQ-pPfY-BGW4-PAk0-pEV8VH

 --- Physical Segments ---
 Physical extent 0 to 12798:
   Logical volume      /dev/system/root
   Logical extents     9922 to 22720

現在如果他想使用命令 lvresize

# lvresize --size -50G /dev/mapper/system-root
 WARNING: Reducing active and open logical volume to 38.75 GiB
 THIS MAY DESTROY YOUR DATA (filesystem etc.)

系統會警告我有關數據失去的資訊。如何通過斷開磁碟而不失去數據來減少空間?

您必須先縮小 ext4 文件系統才能減小邏輯卷大小。您必須解除安裝根分區,因此為了縮小文件系統,您必須使用 USB/DVD Linux iso 啟動伺服器並執行救援模式。

範例:https ://www.thegeekdiary.com/centos-rhel-how-to-shrink-lvm-root-file-system/

從上面NoNoNo 提供的連結resize2fs中, +lvreduce命令可以在一個班輪中完成,我認為這是最好的。特別是因為lvreduce否則會吐出一個非常糟糕的警告

在執行這些說明之前,請確保備份您的重要數據。

指令可以恢復到:

  1. 在 Live CD/DVD 上啟動(Linux 或 GParted Live)
  2. 確保您的根分區未掛載
umount /dev/[partition-name]
  1. 確保 LVM 已啟動(可能不需要,至少在 GParted Live 上)
vgchange -ay
  1. 清理
e2fsck -f /dev/[volumegroup]/[logicalvolume]

重複直到不再發生錯誤,以增加在調整文件系統大小時事情按預期工作的機會。 5. 減少分區

lvresize --resizefs -L [newlvsize] /dev/[volumegroup]/[logicalvolume]

因為這--resizefs需要lvresize很長時間(假設你有一個大分區,我的 1.8Tb 需要大約 5 個小時才能減少到大約 1.1Tb)。您應該在控制台中獲得一些回饋。

注意:LVM 環境提供三個命令來調整大小:lvresizelvreducelvextend。resize 讓你改變大小(更大或更小),reduce 只允許更小的大小(即最多 X Gb),而 extend 只允許更大的大小(即至少 X Gb)。

引用自:https://serverfault.com/questions/904752