在CentOS系统(以及许多其他Linux发行版)中,默认情况下/home分区有较大空间而/root(实际上是根分区/)较小,这种设计有官方处于实用和安全方面的考虑,但是对于个人开发者而言,我们自己用的主机大部分都是root账号,/home下的空间基本不会用到,如下图,笔者的机器/home下完全没有使用,但是/home目录所属磁盘分区分配了180多G空间,比较浪费,故而我们尝试把这块空间挪到常用的/dev/centos/root下。
所有磁盘类操作,建议都先备份数据,防止出现问题时可以恢复数据。
针对本次问题,我们需要手动备份/home下的数据,可以直接打包/home目录,放入/tmp或其他空间暂存,代码示例如下:
tar zcvf /tmp/home.tar /home
使用umount命令卸载/home分区
umount /dev/centos/home
使用LVM(逻辑卷管理)的工具减少/home的大小,并增加/root的大小。
您可以使用lvreduce来减少/home的大小,然后使用lvextend来增加/root的大小,如果你完全不再需要/home空间,可以使用lvremove命令移除/home目录所属分区。
# 方法1:减少特定大小空间,比如100G
lvreduce -L -100G /dev/centos/home
# 方法2:完全移除分区(笔者采用该方式)
lvremove /dev/centos/home
命令行会弹出交互式提示,是否确认操作,选择y
# 示例:为/dev/centos/root分区增加180G
lvextend -L +180G /dev/centos/root
此时,实际还有一些零碎的空间,我们可以继续尝试增加,根据提示调整大小(前提是不再需要/home目录,如果有需要,可以留一小部分空间重新建立/dev/centos/home)
OK,至此基本没有冗余空间了。
在调整了逻辑卷的大小之后,需要调整文件系统以匹配新的分区大小。对于ext4文件系统,可以使用xfs_growfs 命令。
xfs_growfs /dev/centos/root
至此,笔者的需求已满足,/dev/centos/home分区磁盘空间已转移到/dev/centos/root分区下。
如果你需要/home目录,只是需要空间小一点,可以通过调整逻辑卷和文件系统来实现
# 创建逻辑卷,如果上述步骤3采用的是lvreduce,则无需执行该步骤
lvcreate -L 40G -n /dev/centos/home
# 创建文件系统
mkfs.xfs /dev/centos/home
# 挂载home
mount /dev/centos/home
# 恢复/home目录文件
tar zxvf /tmp/home.tar -C /home/
【星猿科技】:在这里我们共同探索科技新趋势,分享积累的点滴,从人工智能到高性能计算,我们追求技术的进步,同时珍视分享的力量。欢迎关注我们,在科技与影视的精彩世界中一起遨游,发现更多未知!