生产或者测试环境中由于没有正确的使用磁盘空间(没有将数据放到最大磁盘空间目录),会导致根目录不够用,出现这样的情况有如下三种方案
一.删除根目录无用数据
二.停止所有服务和程序,将数据迁移到最大磁盘目录
三.扩容根目录磁盘空间
针对以上三种情况我们下边分别做介绍
一.删除目录无用数据
(不要随意删除/var /dev /lib等系统文件夹数据,否则系统可能无法正常运行)
1、进入根目录:cd /
2、使用命令 : du -sh * 查看根目录下每个文件夹的大小
3.将文件夹按照大小排序,显示前10
du -a / | sort -nr | head -n 10
4.清理tar.gz安装包或者log文件
删除7天前创建的大于100M的log文件(注意有些删除之后会导致程序无法运行,需要手动到日志文件目录手动创建一个同名的日志文件,注意权限问题)
find / -type f -size 100M -name *.log|xargs -i rm -rf {} \;
5清理Tomcat大的日志文件
有时候Catalina.out占用空间比较大无法直接删除,可以使用echo "">catalina.out 清理,但是清理之后df -h 发现磁盘占用并没有减少,原因是文件指针问题,需要将Tomcat重启之后磁盘空间就会释放
二、数据迁移到最大磁盘目录(假设为/home)
1.停止待迁移目录(假设为/app)下所有服务
2.迁移目录
mv /app /home
3建软连接
为保证程序工作路径不变,需要建一个软连接
ln -s /home/app /app
(此处需要注意chown对软连接目录无效,需要使用目录的实际路径)
4启动目录下的服务
三 扩容根目录磁盘空间
如下图根目录不够用了
添加磁盘,这里我们假设为sdb1,添加完之后用fdisk -l可以看到该盘
添加逻辑卷sdb1
先用parted确定磁盘类型,若类型为MBR则使用fdisk,若为GPT则使用gdisk来分割。
parted /dev/sdb1 print
确认一个扇区(sector)的大小为512字节
确定类型为msdos(mbr),所以使用fdisk。
2.磁盘分区
fdisk /dev/sdb1
依次输入 n-p-t-w
注意:此处因为是要将sdb1中所有容量都拿过来,所以在设定容量时直接按默认值回车了,如果要分配出指定的容量,则在last sector 行自行设置,例 +2G;再将系统识别码设置称lvm可是别的8e,w保存。
格式化为xfs格式
mkfs -t xfs /dev/sdb1
4.通过lvm管理sdb1
先创建物理卷pv
lvm
pvcreate /dev/sdb1
将pv(物理卷)加入到vg(卷组),可以通过·vgdisplay 查看组信息
vgextend centos /dev/sdb1
可以看到vg size 增加到了22G,Free PE size 也有了2G(511)的大小。(我们要增加的就是这个PE的大小!!)逻辑卷扩容
lvextend -l +511 /dev/mapper/centos-root
同样可以通过lvdisplay查看结果
6.接下来扩容文件系统
注意:如果文件系统是xfs格式用 xfs_growfs命令 , ext4格式用resize2fs命令
xfs_growfs /dev/mapper/centos-root
df -h 查看结果
可以看到我们的根目录已经成功扩容。