明明有好多剩余空间,但Linux系统仍然提示没有空间剩余。为何会这样呢?Linux时常会有一些令人失望的模糊的错误消息出现,而这就是其中一种。不过这些错误一般都是由某几种诱因引起的。
通过du和df检测c盘空间
在开始行动前,最好先检测一下是否c盘上是否确实还有空间剩余。其实桌面环境的工具也很不错,但命令行上的工具更直接,要好的多。
首先让我们瞧瞧du命令。用它来检测问题c盘所在的挂载点目录。本文假定出问题的分区挂载点为根目录。
sudo du -sh /
因为它要遍历c盘中的所有文件linux site:infoq.cn,因而须要耗费一点时间。现今再让我们试试df。
sudo df -h
把根目录和在其中挂载的文件系统加在这条命令的旁边。例如,若你的有一个独立的c盘挂载到/homelinux磁盘相关命令,这么不仅根目录之外,你也须要把它加进来。使用空间的总和应当跟你du命令得到的结果接近。否则的话,就说明可能有已删掉文件的文件被进程占用。
其实,这儿主要专注点在于这种命令的结果是否要大于c盘的大小。假如确实大于c盘大小,这么很显著有好多地方不对劲。
相关:使用Agedu剖析硬碟空间使用状况
可能的诱因
这儿列举了一些形成这些情况的主要缘由。若你发觉du和df的结果之间有差异linux磁盘相关命令,这么可以直接检测第一项缘由。否则从第二项诱因开始检测。
已删掉文件被进程所占用
有时,文件可能早已被删除了,但有进程依旧在使用它。在进程运行期间,Linux不会释放该文件的储存空间。你须要找出这个进程之后重启这个进程。
使用下边命令来定位进程。
sudo lsof / | grep deleted
这应当会列举出问题的进程了,之后重启该进程。
sudo systemctl restart service_name
i节点不够了
文件系统中有一些称为“i节点inode”的元数据,其拿来保存文件的相关信息。好多文件系统中的i节点数目是固定的,因而很可能i节点早已用尽了而文件系统本身还没有用完。你可以使用df来检测。
sudo df -i /
比较一下已用的i节点和总共的i节点数目。假如没有可用的i节点了,这么很不幸,你也难以扩展i节点。删掉一些无用的和过期的文件来释放一些i节点吧。
坏块
最后一个很常见的问题就是坏的文件系统块。除非另有标记,否则操作系统很可能会觉得这种块都是可用的,这会造成文件系统受损或则硬碟坏死。最好是使用带-cc标志的fsck搜索并标记出这种块。记住,你不能使用正在使用的文件系统(LCTT评注:即包含坏块的文件系统)中的fsck命令。你应当会要用到liveCD。
sudo fsck -vcck /dev/sda2
很显著,这儿须要使用你想检测的c盘路径代替命令中的c盘位置。另外,要注意,这或许会花上很长一段时间。
相关:使用fsck检测并修补你的文件系统[Linux]
希望这种方案能解决你的问题。这些问题在任何情况下都不是这么容易确诊的。并且,在运气好的情况下linux shell,你可以把文件系统清除干净并让你的硬碟再度正常工作。
via:
作者:NickCongleton译者:lujun9972校对:wxy
本文由LCTT原创编译,Linux中国荣誉推出