栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

记一次磁盘不足的排查过程

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

记一次磁盘不足的排查过程

做压测时,磁盘突然满了,造成测试中断。
环境:

根目录只有50G,其他磁盘都分home(很大)docker容器都映射日志到统一的日志目录docker未修改默认镜像容器目录 1.通过df -h查看,确实提示使用100% 2.把容器的应用日志移到home分区

通过建立home分区的软链接ln -s /home/log /data/log

3.把数据库的日志也建立软链接到home分区

ln -s /home/db/log /opt/db/log
具体可见:https://blog.csdn.net/atzqtzq/article/details/122754717

4.通过docker system df -v,查看镜像和容器大小

不需要的镜像删除删除容器内的日志,发现个别容器占用磁盘很大,经找原因是nacos有两部分日志,一部分日志还在容器里未映射出来,造成容器很大,修改日志等级解决,根本还是需要都映射出单独的日志分区 5.再次通过df -h查看,发现空闲了部分磁盘空间

但好像隐隐不对,释放的空间应该更多啊
6.通过在根目录执行du -sh *,显示实际文件占用大小 远小于df -h显示的实际磁盘占用大小。
查询当前文件夹的大小排序
du -h * | sort -nr
7.通过df -i,显示inode未满

不过通过查看inode,发现gis应用的瓦片图层很多4k小文件,可以在这方面优化

#当前根目录下执行
for i in /*; do echo $i ; find $i | wc -l; done
#再执行上述命令,就这样层层深入最终确定是那个目录文件最多
for i in /user/*; do echo $i ; find $i | wc -l; done

#查看block大小
dumpe2fs  /dev/sda1|grep -i "block size"(block默认大小1k(boot分区)或4K(非系统分区默认为4K))

#查看Inode大小
dumpe2fs  /dev/sda1|grep -i "Inode size"  linux的centos5.8是128字节,6.4是256字节
8.到这,基本确实是删除的文件,未及时回收,造成空间没有被释放

安装lsof

#下载lsof
https://dl.packetstormsecurity.net/UNIX/IDS/lsof/lsof_4.76.tar.gz

#解压
tar -zxvf lsof_4.76.tar.gz

#再解压
cd lsof_4.76
tar -xvf lsof_4.76_src.tar

# 编译,有确认,都按"y"确认
cd lsof_4.76_src
./Configure linux

#生成
make

#创建软链接
ln -s /root/songzehao/lsof_4.76/lsof_4.76_src/lsof /usr/bin

使用lsof |grep deleted,查询到大量未释放的空间应用
lsof 参数说明,参考:
https://cloud.tencent.com/developer/article/1591481?from=15425使用ps -aux|grep {pid},查询到都是僵尸进程
进程状态说明,参考:
https://blog.csdn.net/qq_21989927/article/details/109299176使用kill -9 {pid},结束进程使用df -h发现磁盘空间大了很多 9.未确定docker挂载的方式会不会存在空闲挂载未使用却依然占用空间的问题

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/728522.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号