xfs 文件系统的 LVM 缩容秘籍

缩容有风险,操作需谨慎;数据是无价的,三思而后行

安装所需的工具

  • xfsdump 是用来备份 xfs 文件系统的
  • psmisc 是用来执行 fuser 命令,可以查看指定目录被哪些进程使用
yum install -y xfsdump psmisc

备份 xfs 文件系统

xfsdump -f home.xfsdump /home

please enter label for 这里需要两次回车

xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control

 ============================= dump label dialog ==============================

please enter label for this dump session (timeout in 300 sec)
 ->
session label entered: ""

 --------------------------------- end dialog ---------------------------------

xfsdump: WARNING: no session label specified
xfsdump: level 0 dump of repository:/home
xfsdump: dump date: Mon Jun 24 23:43:46 2024
xfsdump: session id: 1858ef54-a504-4c9e-82a4-3a9f617105df
xfsdump: session label: ""
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 20800 bytes
xfsdump: /var/lib/xfsdump/inventory created

 ============================= media label dialog =============================

please enter label for media in drive 0 (timeout in 300 sec)
 ->
media label entered: ""

 --------------------------------- end dialog ---------------------------------

xfsdump: WARNING: no media label specified
xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size 21352 bytes
xfsdump: dump size (non-dir files) : 0 bytes
xfsdump: dump complete: 3 seconds elapsed
xfsdump: Dump Summary:
xfsdump:   stream 0 /root/home.xfsdump OK (success)
xfsdump: Dump Status: SUCCESS

开始缩容

查看磁盘挂载和使用情况

df -h

当前 / 分区只有 50G,/home 分区有 47G

Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  457M     0  457M   0% /dev
tmpfs                   tmpfs     485M     0  485M   0% /dev/shm
tmpfs                   tmpfs     485M  7.0M  478M   2% /run
tmpfs                   tmpfs     485M     0  485M   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        50G   17G   34G  33% /
/dev/sda1               xfs      1014M  197M  818M  20% /boot
overlay                 overlay    50G   17G   34G  33% /var/lib/docker/overlay2/9573f8051acdd23320b4430286b81272df321c71669c57a1b7c88ddef9ace598/merged
tmpfs                   tmpfs      97M     0   97M   0% /run/user/0
overlay                 overlay    50G   17G   34G  33% /var/lib/docker/overlay2/50a281a671d54861d29b916e876590f12fb7604b476428bbfdeffc308dc98f20/merged
/dev/mapper/centos-home xfs        47G   33M   47G   1% /home

检查是否有进程占用

没返回说明没有进程占用

fuser -km /home

取消挂载

umount /home

lvm 缩容

给 home 目录对应的 lvm 目录进行缩容

lvreduce -L 10G /dev/centos/home

需要输入 y 来确认

  WARNING: Reducing active logical volume to 10.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce centos/home? [y/n]: y
  Size of logical volume centos/home changed from 46.99 GiB (12030 extents) to 10.00 GiB (2560 extents).
  Logical volume centos/home successfully resized.

lvm 扩容

将缩容出来的空间,扩容给根的 lvm

lvextend -l +100%FREE /dev/centos/root

返回 success 表示成功了

  Size of logical volume centos/root changed from 50.00 GiB (12800 extents) to <87.00 GiB (22271 extents).
  Logical volume centos/root successfully resized.

刷新分区表

xfs_growfs /dev/centos/root

有类似下面的输出,说明分区表刷新完成了

meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=3276800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=13107200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=6400, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 13107200 to 22805504

验证磁盘容量

df -h

可以看到根分区变成 87G 了

Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 457M     0  457M   0% /dev
tmpfs                    485M     0  485M   0% /dev/shm
tmpfs                    485M  7.0M  478M   2% /run
tmpfs                    485M     0  485M   0% /sys/fs/cgroup
/dev/mapper/centos-root   87G   17G   71G  20% /
/dev/sda1               1014M  197M  818M  20% /boot
overlay                   87G   17G   71G  20% /var/lib/docker/overlay2/9573f8051acdd23320b4430286b81272df321c71669c57a1b7c88ddef9ace598/merged
tmpfs                     97M     0   97M   0% /run/user/0
overlay                   87G   17G   71G  20% /var/lib/docker/overlay2/50a281a671d54861d29b916e876590f12fb7604b476428bbfdeffc308dc98f20/merged

挂载 home 分区

检查 fstab 目录

grep home /etc/fstab

确认是路径的方式还是 uuid

/dev/mapper/centos-home /home                   xfs     defaults        0 0

如果不是 uuid 就直接执行下面的命令

mount -a

如果是 uuid 就执行 blkid | grep home 命令查看 uuid 后修改 /etc/fstab 文件,再执行上面的命令重新挂载

还原备份

xfsrestore -f home.xfsdump /home

返回 success 就完成了

xfsrestore: using file dump (drive_simple) strategy
xfsrestore: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsrestore: searching media for dump
xfsrestore: examining media file 0
xfsrestore: dump description:
xfsrestore: hostname: repository
xfsrestore: mount point: /home
xfsrestore: volume: /dev/mapper/centos-home
xfsrestore: session time: Mon Jun 24 23:43:46 2024
xfsrestore: level: 0
xfsrestore: session label: ""
xfsrestore: media label: ""
xfsrestore: file system id: 3d8d359e-263a-44d2-9265-18e306949d3f
xfsrestore: session id: 1858ef54-a504-4c9e-82a4-3a9f617105df
xfsrestore: media id: 3d5c2fbb-06c3-4461-a506-0879f931f644
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 1 directories and 0 entries processed
xfsrestore: directory post-processing
xfsrestore: restore complete: 0 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore:   stream 0 /root/home.xfsdump OK (success)
xfsrestore: Restore Status: SUCCESS
posted @   月巴左耳东  阅读(137)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示