问题描述:有时候安装系统时,业务所在的分区太小,很容易导致分区爆满,而其他分区空闲,需要从其他分区挪空间过来或者新增磁盘扩容

centos 扩容home centos 扩容opt_centos 扩容home

 

需求分析:分配的硬盘50G,/opt分到为19G,随着业务的使用/opt文件系统已经达到100%,现在计划新分配500G的空间

 


 

方法一:

新增磁盘:已通过虚拟化控制台新增一块大小为500G的硬盘,重启系统识别确认。已识别到大小为500G的磁盘, 磁盘名称为vdb(因为是虚拟机,所以是vdx名称格式)

centos 扩容home centos 扩容opt_centos_02

文件系统扩容操作:

1、查看卷组信息,只有一个centos_hikvisionos卷组且剩余空间为40m

centos 扩容home centos 扩容opt_文件系统_03

 

 

查看逻辑卷信息,opt逻辑卷属于centos_hikvisionos卷组且大小为18.41g

 

 

 

centos 扩容home centos 扩容opt_centos_04

 

 

查看逻辑卷绝对路径 

centos 扩容home centos 扩容opt_centos 扩容home_05

 

 

新增磁盘vdb创建为物理卷

centos 扩容home centos 扩容opt_逻辑卷_06

 

 

 

5、物理卷扩容至centos_hikvisionos卷组内

centos 扩容home centos 扩容opt_centos 扩容home_07

 

 

确认centos_hikvisionos卷组扩容后的剩余空间,由40m变为500.04g

centos 扩容home centos 扩容opt_逻辑卷_08

7、opt逻辑卷进行扩容,增加300G

centos 扩容home centos 扩容opt_centos 扩容home_09

 

opt文件系统空间自动扩展

 

centos 扩容home centos 扩容opt_centos_10

 

 

9、查看确认文件系统大小,/opt文件系统大小为319G,扩容成功

centos 扩容home centos 扩容opt_centos_11


方法二:

从其他分区挪用,如从/home

检查文件系统类型以及空间使用情况

 

centos 扩容home centos 扩容opt_centos_12

 

从上图得知:

  • 报空间不足的/opt并非独立文件系统,而是/(根文件系统)的子目录
  • /类型为XFS、容量50G、已用50G、可用空间20K、已用%为100%
  • /home类型为XFS、容量286G、已用785M、可用285G、已用%为1%
  • /和/home同属卷组centos,由逻辑卷root和home格式化成XFS文件系统

综上可以得出结论:/文件系统已使用100%,和图1所示设备空间不足报错吻合;Web登录产生的会话信息需要空间来保存,/文件系统剩余空间不足时必然会影响业务正常运行。

方案制定:

/home文件系统未规划使用,只是存放一些用户信息,286G容量处于闲置的状态,/文件系统50G空间完全满足不了系统需求。图1显示/和/home同属centos卷组,分别对应的逻辑卷为/dev/mapper/centos-root和/dev/mapper/centos-home,逻辑卷格式化创建的XFS类型文件系统具有在线扩容的功能,但不具备在线缩减缩减需要重新格式化才能正常使用,格式化会清空原数据。所以考虑缩减/home时,必须先备好原数据,以便数据被清空后从备份数据恢复。文件系统的操作需要使用root用户来执行,而且根文件系统能正常读写。目前根文件系统100%读写异常,需要清理部分空间来满足读写正常,且必须要保证root用户可以远程SSH登录综上信息可以得出最终的解决方案可从四方面进行:

①   清理/var部分可回收文件释将/已用%的值降低至100%以下,确保系统命令可正常执行

②  确保root用户可通过SSH远程登录

③  备份/home数据至本地,/home缩减200G空间,格式化后再重新挂载,上传备份文件恢复数据

④  /home缩减200G大小,完成后centos卷组剩余空间增加200G,新增剩余200G大小用于扩容/,/扩容后容量增加至250G,解决50G空间不足的问题

*****开始干活*****

1、清理/var可回收文件。执行“cd /var”进入/var目录,执行“du -sh *”查看目录下每个文件和目录的大小

centos 扩容home centos 扩容opt_centos_13

 

 如上图,log目录占用空间9.5G,进入log目录进一步确认可回收的文件。执行“cd log”进入log目录,执行“du -sh *” 查看目录下每个文件和目录的大小

centos 扩容home centos 扩容opt_文件系统_14

 

 messagesXX文件占用空间10G左右,经确认3个4月份文件可删除回收,因此决定删除此3个文件回收7G左右空间。执行“rm -rf messages-201804*”命令删除文件,执行“df -Th”查看文件删除后/文件系统可用%的值

centos 扩容home centos 扩容opt_文件系统_15

 

 结果显示/文件系统空间回收完成,从已用%从100%将至88%

2、检查root用户SSH远程登录。执行“cat /etc/ssh/sshd_config |grep PermitRootLogin”查看命令查看root用户登录权限

centos 扩容home centos 扩容opt_centos_16

 

 PermitRootLogin参数为“yes”说明root用户允许SSH远程登录。HikOS默认为no,请把no修改为yes保存退出,执行”systemctl restart sshd”重启sshd服务立即生效,打开xshell测试root用户远程登录的权限

3、/home文件系统大小调整。执行“tar”命令打包/home下所有数据并命名为“home20180508bak.tar”,使用“ls”命令来确认文件是否产生。执行“mv”命令移动“home20180508bak.tar”文件至/tmp目录作为数据备份,以便将来恢复至/home

centos 扩容home centos 扩容opt_centos_17

 

4、/home下的数据被打包成home20180508bak.tar文件并移动到/tmp下,完成数据的备份。执行“umount”命令卸载文件系统/home,执行“lvresize”缩减至200G /dev/centos/home逻辑卷,逻辑卷的名称请使用lvdisplay来查询确认,如图9所示,执行“mkfs.xfs”来格式化缩减后的/dev/centos/home逻辑卷,再执行“mount”重新把/dev/centos/home挂载至/home

(lvresize -L 200G /dev/centos/home  缩减到200G)

(lvresize -L -200G /dev/centos/home  缩减200G)

(lvresize -L +200G /dev/centos/home  扩容200G)

centos 扩容home centos 扩容opt_逻辑卷_18

 

 

centos 扩容home centos 扩容opt_centos_19

 

 

centos 扩容home centos 扩容opt_centos_20

 

PS:有时umount时,会报device is busy,目标设备正在使用中,无法unmount,需要kill掉相关进程。处理方法参考:

/dev/centos/home完成缩减200G(-L 200G”按理应该减少至200G,但此图却是从286G缩减到86G,请以现场实际情况为准),经过格式化重新挂载至挂载点/home,文件系统空间调整顺利完成

执行“mv”移动备份文件至/home,执行“tar”命令解压原数据至/home,执行“ls -la”检查原数据是否完整

centos 扩容home centos 扩容opt_centos 扩容home_21

备份文件home20180508bak.tar完整解压至/home下,数据恢复成功。

4、/文件系统扩容。 执行“lvextend”来扩容/dev/centos/root逻辑卷,执行“xfs_growfs”在线扩展XFS容量,使用“df -Th”来验证扩容的结果

centos 扩容home centos 扩容opt_centos_22

 

/文件系统从容量50G增加至250G,扩容成功。最后检查业务是否已经恢复