暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

linux磁盘满排查

小董的成长笔记 2021-06-23
520

之前我们学习了inode和block的区别,磁盘满的原因可能是inode满了,也有可能是block满了。如果是小文件较多,inode容易满,大文件较多,block容易满,今天我们就来具体分析一下

排查思路:
  • 通过df命令看下是inode满了还是block满了,还是文件删除了没有彻底释放空间
  • 找到问题的目录,inode满了就查找小文件较多的目录,block满了就查找占用空间较大的目录
  • 看下文件是否有用,是否可以删除
  • 如果文件需要用到,不可删除,需要扩容磁盘,如果文件可以删除,先备份到硬盘,然后在系统中删除释放空间
删除文件的时候一定要注意,如果文件正在被别的程序调用,那么直接使用rm删除是不会释放空间的,可以使用清空的方式释放该文件的空间。
只要有程序调用或者文件的硬链接数量不为0,空间就不会释放

inode满如何解决

inode满是因为小文件较多导致的,我们只要找到哪个文件夹下小文件较多就可以了
  • 查看inode空间
    [root@web ~]# df -ih
    Filesystem     Inodes IUsed IFree IUse% Mounted on
    devtmpfs         228K   325 227K   1% /dev
    tmpfs           230K     2 230K   1% /dev/shm
    tmpfs           230K   404 230K   1% /run
    tmpfs           230K   16 230K   1% /sys/fs/cgroup
    /dev/vda1       2.5M   63K 2.5M   3% /
    tmpfs           230K     1 230K   1% /run/user/0
    复制
  • 查找每个目录下有多少个文件
    for i in /*;do echo $i;find $i|wc -l;done|xargs -n2
    复制
  • 找到小文件较多的目录,看是否有用,无用的话就备份删除

block满如何解决?

block满是因为大文件较多导致的,我们只要找到大文件就可以了
  • 查看磁盘空间
    [root@web ~]# df -h
    Filesystem     Size Used Avail Use% Mounted on
    devtmpfs       909M     0 909M   0% /dev
    tmpfs           919M     0 919M   0% /dev/shm
    tmpfs           919M 492K 919M   1% /run
    tmpfs           919M     0 919M   0% /sys/fs/cgroup
    /dev/vda1       40G 2.6G   35G   7% /
    tmpfs           184M     0 184M   0% /run/user/0
    复制
  • 查看那些文件比较大
    root@web ~]# du -sh /*|grep G
    1.8G   /usr
    root@web ~]# du -sh /usr/*|grep G
    复制
    从根目录查找,然后一级一级往下找,直到找到大文件位置
  • 找到大文件,看是否可以删除,不可以删除扩容磁盘,可以删除,备份之后在删除
还有一种情况,df和du查看到的空间大小不一致,那么可能是你使用rm删除了一些文件,这些文件还有程序在调用它,那么它还是会占用磁盘空间的
[root@web ~]# lsof |grep delete
aliyun-se 10920         root   7uW     REG             253,1         0     393218 /tmp/AliyunAssistClientSingleLock.lock (deleted)
aliyun-se 10920 10922   root   7uW     REG             253,1         0     393218 /tmp/AliyunAssistClientSingleLock.lock (deleted)
aliyun-se 10920 10923   root   7uW     REG             253,1         0     393218
复制
如果文件删除了,空间还没有释放,都会带有deleted标志,我们需要根据它的uid找到对应的程序,然后重启,这些空间就释放了。最常用的就是一些web的日志满了,这个时候我们一般都是使用清空的方式去释放日志的空间,这样既不用重启程序,磁盘空间也释放了
[root@web ~]# ps -ef|grep 10920
root     10920     1 0 Jun07 ?       00:15:29 /usr/local/share/aliyun-assist/2.2.3.196/aliyun-service
复制
根据pid找到对应的程序重启,空间也会释放
文章转载自小董的成长笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论