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
分类:
Linux
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?