0.问题背景
在部署龙蜥或Centos操作系统时,其中有一步是磁盘挂载,如果部署时按自动分区,此时根目录/只有70G,大部分空间挂载到了/home分区。而且此时会有/swap分区。与实际要求不符,需要手动调整
/ 根目录,存放系统文件
/home
目录主要用于存放用户数据和配置文件/swap 虚拟内存分区,当物理内存不足时会启用虚拟内存,但虚拟内存的性能远低于物理内存,会导致系统卡顿
swap不需要开,当系统判断内存不足时会自动停止非关键服务,确保关键服务正常运行
图示:系统自动分区时系统盘分区如下:
处理思路:
①/home 对应的空间分配给 / 【本文主题】
②并将/swap 删除掉。 【可参考 关闭服务器Swap功能】
备注:前提是自动分区时是按LVM格式划分的
标准分区是指在安装系统或配置磁盘时直接创建的固定大小的分区(分配后无法更改空间大小)
LVM(逻辑分区)是在逻辑层面上管理磁盘空间,可动态调整逻辑卷的大小,而无需担心物理分区的限制
1.操作流程(简版)
可优先按简版进行操作,如果出现异常,可再阅读详细版本
龙蜥和Centos的区别主要在于/home 的逻辑路径名称略有不同,整个步骤基本是一致的
1.1 龙蜥8.9系统
df -h #检查空间路径 (图是删除后的,实际调整前还有一条/dev/mapper/ao-home)
(1)卸载/homeumount /home
#卸载/home目录挂载 #如果提示 Target is busy 异常处理(参考下侧↓)lvremove /dev/mapper/ao-home
# 移除/home卷。释放空间
#Target is busy 异常处理
一般报这个错误的时候是 /home 被占用,常见于部署龙蜥系统时勾选了 GUI并登录了可视化界面
解决办法:
sudo systemctl isolate multi-user.target
#停止图形界面服务,切换到多用户文本模式
sudo systemctl set-default multi-user.target
#下次启动时默认进入文本模式
lvremove /dev/mapper/ao-home
重启后再次尝试移除/home 卷
(2)将/home卸载后释放的空间扩容到根目录/下lvextend -l +100%FREE /dev/mapper/ao-root
#将空闲的空间移动 100% 到根目录下面xfs_growfs /dev/mapper/ao-root
#扩充到空间
df -h /
#检查扩容情况 (df -h /下看到的数据和 lsblk 看到的一定是一致的)
lsblk
#检查扩容情况(df -h /下看到的数据和 lsblk 看到的一定是一致的)
(3)注销/home开机挂载--关键(否则开机后报错)
vi /etc/fstab
#修改启动项 #i 进入编辑模式,然后在 home 行前面增加#(注销掉即可)
#esc 退出编辑模式 :wq!保存退出
reboot
#重启(或执行下面的重新挂载fatab命令)
systemctl daemon-reload
#加载/etc/fstab
lsblk
#重启后再检查下磁盘挂载是否符合预期
1.2 Centos 7.9系统
待补充(主要是home 路径不同)
附录:操作流程(详细版本)
主要是通过相关命令确认挂载的Path
(1)卸载 /home
umount -l /home
(2)移除/home卷,释放空间
先查看 /home 卷的名称,执行命令:lvdisplay
移除 /home 卷,执行命令:lvremove /dev/ao/home
如果报如下错误,说明/home 被使用中,需要释放后方可删除。可执行命令:
fuser -vm /dev/ao/home
#查看 /home 被占用进程
fuser -km /dev/ao/home
#关闭 /home 被占用进程
一般情况下刚部署的系统可能是因为部署时勾选了GUI(可视化操作系统),也可以通过如下命令关闭GUI重启后也会释放对/home的占用(推荐);
sudo systemctl isolate multi-user.target
#停止图形界面服务,切换到多用户文本模式
sudo systemctl set-default multi-user.target
#下次启动时默认进入文本模式
再次执行:lvremove /dev/ao/home
,得到如下内容即为成功
(3)将空闲空间全部扩展导根目录下
lvextend /dev/mapper/ao-root /dev/sda3
(4)扩容到文件系统空间
执行命令:xfs_growfs /dev/ao/root
如果报错xfs_growfs: /dev/openeuler/root is not a mounted XFS filesystem
则先查看root目录是什么文件系统格式 lsblk -f
如果是ext4格式,则执行 resize2fs /dev/ao/root
(5)修改/etc/fstab 去掉/home自动挂载记录
vi /etc/fstab
删除/home 这一行内容后(也可以在最前面加# 使其失效(linux命令中前面有#代表注释信息)),执行如下命令:
systemctl daemon-reload
#加载/etc/fstab
mount -a
#测试挂载是否正常
lsblk
#查看挂载是否符合要求(/home去掉等)