admin管理员组

文章数量:1516870

解决Linux中磁盘空间不足的问题

问题:
1、无法自动补全命令
2、无法mkdir文件
通过 dudf 检查磁盘空间
命令: df -h 
分析情况
1、磁盘空间不足没有剩余空间。文件太大或者文件夹太多
2、已被删除的文件进程仍然在使用。该文件已经被删除但是进程未被释放
3、i(indoe)节点不够了

检查磁盘空间的使用情况
命令 :df -h
下图磁盘空间使用正常(示例磁盘空间已满:/dev/sad1 18G 18G 18G 100% / )

情况1:磁盘空间不足

根据命令一层层查找最大文件。删除不必要的文件

1、查看根目录中磁盘使用的情况,最大使用为/home文件夹

du -sh /*

du -sh /home/* #查看/home文件夹下的磁盘空间

rm-rf *#删除改目录下的所有文件rm-rf abc.txt #删除该目录下的abc.txt文件

情况2:文件已被删除,进程未被释放 (我的问题点在这)

当查找磁盘空间使用情况是。目录文件均使用合理。考虑是否是进程的问题

当一个文件正在被一个进程使用时,用户删除此文件,文件只会从目录结构中删除,但并没有从磁盘删除。当使用这个文件的进程结束后,文件才会真正的从磁盘删除,释放占有的空间。

lsof |grep -i deleted  #查看被删除但是仍然被占用的文件列表

lsof通常的输出格式为:

    COMMAND     PID   USER   FD      TYPE     DEVICE     SIZE       NODE NAME

常见包含例如以下几个字段

   1、COMMAND
   默认以9个字符长度显示的命令名称。可使用+c參数指定显示的宽度,若+c后跟的參数为零,则显示命令的全名
   2、PID:进程的ID号
   3、PPID
   父进程的IP号,默认不显示,当使用-R參数可打开。
    4、PGID
   进程组的ID编号,默认也不会显示,当使用-g參数时可打开。
   5、USER
   命令的执行UID或系统中登陆的username称。默认显示为username,当使用-l參数时,可显示UID。
   6、FD
   是文件的File Descriptor number。

当有文件被删除仍然有进程存在时,我们可以重启该项目,不建议直接杀掉进程
Kill-9 PID #重启项目时仍然不能解决问题可以直接杀掉PID

拓展:

  常常使用场景:
  1.显示开启某个文件的进程。
   lsof  /文件路径/文件名
  2.显示某个端口正在执行什么进程。比如查看ssh服务的默认端口22端口
   lsof -i:22      
  3.显示init超级进程如今打开的文件。
   lsof -c init
  4.显示进程号为x的进程打开了哪些文件。
   lsof -p x

情况3:i(indoe)节点不够了

  • 文件系统中有一些称为 “i 节点inode” 的元数据,其用来保存文件的相关信息。很多文件系统中的 i 节点数量是固定的,因此很可能 i 节点已经耗尽了而文件系统本身还没有用完。你可以使用 df 来检查。
  • i节点数量是固定的,无法进行扩充。当i节点已满,只能进行删除一些无用的节点

排查思路:
1、定时任务产生大量的琐碎的小文件
2、postfix不要的maildrop文件 (/var/spoor/postfix/maildrop/)
3、/data/cache /opt/newcache /tmp等

di -i  #查看磁盘空间i节点的使用情况

  • i节点知识匮乏待学习。请参考其他的其他资料
找到问题根源,删除不必要的日志文件和无法使用的文件,释放i节点

我又又又在工作上失误。有坑不要怕。学会填坑。

本文标签: 问题文件磁盘空间