调整 LVM 大小且不丢失数据

调整 LVM 大小且不丢失数据

我有带 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.)

系统警告我数据丢失。如何通过断开磁盘来减少空间而不丢失数据?

答案1

您必须先缩小 ext4 文件系统才能减小逻辑卷大小。您必须卸载根分区,因此为了缩小文件系统,您必须使用 USB/DVD Linux iso 启动服务器并执行救援模式。

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

答案2

NoNoNo 提供的链接上面,resize2fs+lvreduce命令可以在一行中完成,我认为这是最好的。特别是因为lvreduce否则会吐出非常糟糕的警告

在运行这些指令之前,请确保备份重要数据。

该指令可以恢复为:

  1. 在实时 CD/DVD 上启动(Linux 或 GParted Live)

  2. 确保你的根分区没有被挂载

     umount /dev/[partition-name]
    
  3. 确保 LVM 已启动(可能不是必需的,至少在 GParted Live 上)

     vgchange -ay
    
  4. 清理

     e2fsck -f /dev/[volumegroup]/[logicalvolume]
    

    重复此操作,直到不再发生错误,以增加调整文件系统大小时一切按预期进行的机会。

  5. 减少分区

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

    由于--resizefslvresize将花费很长时间(假设您有一个大分区,我的 1.8Tb 大约需要 5 个小时才能减少到 1.1Tb)。您应该在控制台中收到一些反馈。

    注意:LVM 环境提供三个命令来调整大小:lvresizelvreducelvextend。resize 允许您更改大小(更大或更小),reduce 仅允许较小的大小(即最多 X Gb),extend 仅允许较大的大小(即至少 X Gb)。

相关内容