Linux LVM 调整逻辑卷大小

说明

  • 磁盘使用 LVM
  • /dev/mapper/ArchinstallVg-root/:逻辑卷大小为 32G
  • /dev/mapper/ArchinstallVg-home/home:逻辑卷大小为 97G
  • ArchinstallVg:VG Name
[root@archlinux ~]# df -h
Filesystem                      Size  Used Avail Use% Mounted on
dev                             1.9G     0  1.9G   0% /dev
run                             2.0G  620K  2.0G   1% /run
/dev/mapper/ArchinstallVg-root   32G  2.3G   28G   8% /
tmpfs                           2.0G     0  2.0G   0% /dev/shm
none                            1.0M     0  1.0M   0% /run/credentials/systemd-journald.service
tmpfs                           2.0G     0  2.0G   0% /tmp
/dev/sda1                      1022M   79M  944M   8% /boot
/dev/mapper/ArchinstallVg-home   97G  2.1M   92G   1% /home
none                            1.0M     0  1.0M   0% /run/credentials/getty@tty1.service
tmpfs                           391M  4.0K  391M   1% /run/user/0
[root@archlinux ~]#

需求

  1. 逻辑卷 /home 到指定容量(如:5G
  2. 逻辑卷 / 增加指定容量(如:20G

注意事项

  1. 操作前务必备份重要数据 。虽然 LVM 调整相对安全,但一旦出错可能导致数据丢失。
  2. 缩小文件系统时,强烈建议先卸载 目标分区(此处为 /home ),避免数据损坏。
  3. 请确认 /home 当前没有活跃进程在使用(如用户登录、服务写入)。可以运行 lsof | grep /homefuser -m /home 检查。若有,需先关闭或切换到单用户模式。
  4. 以下示例假设 /home 使用 ext4 文件系统(Arch Linux 默认常用)。如果实际是其他类型(如 xfs、btrfs),缩小操作可能不同或不可行。请先用 blkid /dev/mapper/ArchinstallVg-homemount | grep home 确认类型。

操作

# 使用以下任意命令,检查 /home 当前没有活跃进程在使用(如用户登录、服务写入)
lsof | grep /home
fuser -m /home
# 检查当前卷组空闲空间
vgdisplay ArchinstallVg
[root@archlinux ~]# vgdisplay ArchinstallVg
  --- Volume group ---
  VG Name               ArchinstallVg
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <131.00 GiB
  PE Size               4.00 MiB
  Total PE              33535
  Alloc PE / Size       33471 / <130.75 GiB
  Free  PE / Size       64 / 256.00 MiB
  VG UUID               dwHpUC-KIyf-V5ZR-u8LW-TxKa-vArj-Wg8wFR

[root@archlinux ~]#
# 卸载 /home
umount /home

# 如果提示设备忙,可以先进入救援/单用户模式:
# systemctl isolate rescue.target   # 或添加 `single` 内核参数重启
# 强制检查 /home 文件系统(缩小前必须执行)
e2fsck -f /dev/mapper/ArchinstallVg-home
# 缩小文件系统到目标大小(例如 5G)
resize2fs /dev/mapper/ArchinstallVg-home 5G
# 缩小逻辑卷到相同大小
lvreduce -L 5G /dev/mapper/ArchinstallVg-home
# 重新挂载 /home 并检查
mount /home
df -h /home
# 逻辑卷 / 增加指定容量 20G
lvextend -L +20G /dev/mapper/ArchinstallVg-root

# 将卷组中所有空闲空间扩展给根逻辑卷
# lvextend -l +100%FREE /dev/mapper/ArchinstallVg-root
# 扩展根文件系统以使用新空间
resize2fs /dev/mapper/ArchinstallVg-root

# 如果根是 xfs,则使用 xfs_growfs /
# 验证结果
df -h /
df -h /home
[root@archlinux ~]# df -h /
Filesystem                      Size  Used Avail Use% Mounted on
/dev/mapper/ArchinstallVg-root   51G  2.3G   47G   5% /
[root@archlinux ~]# df -h /home
Filesystem                      Size  Used Avail Use% Mounted on
/dev/mapper/ArchinstallVg-home  4.4G  2.1M  4.2G   1% /home
[root@archlinux ~]#
vgdisplay ArchinstallVg
[root@archlinux ~]# vgdisplay ArchinstallVg
  --- Volume group ---
  VG Name               ArchinstallVg
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <131.00 GiB
  PE Size               4.00 MiB
  Total PE              33535
  Alloc PE / Size       14592 / 57.00 GiB
  Free  PE / Size       18943 / <74.00 GiB
  VG UUID               dwHpUC-KIyf-V5ZR-u8LW-TxKa-vArj-Wg8wFR

[root@archlinux ~]#