03.Linux下目录动态扩容,以分配home的部分空间给root为例
简介
本篇文章将介绍Linux下分配home目录的部分空间给root目录。
大致思路:卸载home,解除其磁盘容量占用->扩容root,增加其磁盘空间->重建恢复home
操作演示环境为CentOS系统,其他操作系统例如openEuler也可作为参考。
相关文章参考:
01.Linux下目录扩容,以增加root目录的磁盘容量分配为例
操作系统版本如下
名称 | 版本 |
---|---|
CentOS | 7.6+ |
1. 分配详情
执行 lsblk 命令,可以看到
centos-home 分配了较多存储空间,而 root 只有50G
在没有额外磁盘空间可以继续分配的情况下(如果有可参考: 01.Linux下目录扩容,以增加root目录的磁盘容量分配为例 )
则需要把home的部分空间腾出,分配给root使用(实际应用场景中,root使用量毕竟较大)
[root@localhost harbor]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 66.7M 0 rom /mnt
vda 252:0 0 1T 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 1023G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 31.5G 0 lvm [SWAP]
└─centos-home 253:2 0 941.5G 0 lvm /home
[root@localhost harbor]#
2. 卸载home
2.1 终止进程
终止 /home 文件系统下的所有进程(注意:不要在/home目录下执行 fuser -km home)
执行报错:-bash: fuser: 未找到命令
问题分析:最小化安装centos的时候,没有fuser这个命令,导致无法fence
解决方法:yum install psmisc
[root@localhost portainer]# cd ~
[root@localhost ~]# fuser -km home
2.2 备份/home
[root@localhost ~]# tar cvf /run/home.tar /home
tar: 从成员名中删除开头的“/”
/home/
/home/harbor/
/home/harbor/harbor.v2.8.2.tar.gz
2.3 卸载/home
[root@localhost ~]# umount /home
[root@localhost ~]#
2.4 删除/home所在的逻辑卷lv
提示:Logical volume centos/home contains a filesystem in use
解决:重新挂载 mount /home,执行2.1终止进程(或者其他方法终止/home文件系统下的进程)
[root@localhost ~]# lvremove /dev/mapper/centos-home
Do you really want to remove active logical volume centos/home? [y/n]: y
Logical volume "home" successfully removed
[root@localhost ~]#
3. 扩容root
3.1 扩大/root所在的逻辑卷lv
home 卸载后空出950G左右
这里分配出800G给root
[root@localhost ~]# lvextend -L +800G /dev/mapper/centos-root
Size of logical volume centos/root changed from 50.00 GiB (12800 extents) to 850.00 GiB (217600 extents).
Logical volume centos/root successfully resized.
[root@localhost ~]#
3.2 扩大/root文件系统
[root@localhost ~]# xfs_growfs /dev/mapper/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 222822400
[root@localhost ~]#
3.3 查看扩容是否成功
可以看到 centos-root 已经成功扩容到1023G
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 66.7M 0 rom /mnt
vda 252:0 0 1T 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 1023G 0 part
├─centos-root 253:0 0 850G 0 lvm /
└─centos-swap 253:1 0 31.5G 0 lvm [SWAP]
[root@localhost ~]#
4. 重建/home
4.1 创建/home所在的逻辑卷lv
[root@localhost ~]# lvcreate -L 141G -n /dev/mapper/centos-home
Logical volume "home" created.
[root@localhost ~]#
4.2 创建/home文件系统
[root@localhost ~]# mkfs.xfs /dev/mapper/centos-home
meta-data=/dev/mapper/centos-home isize=512 agcount=4, agsize=9240576 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=36962304, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=18048, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]#
4.3 将新建的文件系统挂载到/home目录下
[root@localhost ~]# mount /dev/mapper/centos-home
[root@localhost ~]#
4.4 恢复/home内容
记得恢复 home 下停掉的程序
[root@localhost ~]# tar xvf /run/home.tar -C /
home/
home/harbor/
home/harbor/harbor.v2.8.2.tar.gz
4.5 删除备份
[root@localhost ~]# rm -rf /run/home.tar
[root@localhost ~]#
相关文章参考:
01.Linux下目录扩容,以增加root目录的磁盘容量分配为例