1. 首页
  2. IT资讯

Linux 磁盘满了解决方案

Linux 磁盘满了解决方案

问题原因:

今天突然遇到,图片不能上传了!我当时就想,不可能啊,之前一直都没问题!小编作为一个后端就查啊查,发现没有地方有问题啊。然后想起,阿里云提示是说上面磁盘满了!当时挺纳闷,磁盘怎么会满。ok,接下来开始排查之路!

Linux 磁盘满了解决方案

步骤说明:

第一步:查看磁盘情况

我们要知道哪个磁盘,我们首先要知道各个磁盘占用情况!可以使用以下命令

# 查看磁盘状态 df -h

解释一下:

df: 用于显示目前在Linux系统上的文件系统的磁盘使用情况统计。

-h:以K,M,G为单位,提高信息的可读性。

运行结果如下图

Linux 磁盘满了解决方案

Size:总内存数

Used:使用内存数

Avail:剩余内存数

Mounted on:挂载点

第二步:查看文件夹下面的磁盘使用情况

当然你可能并不关系磁盘还剩余多少空间,你是需要知道当前的文件夹下的磁盘使用情况:

# 需要进入跟路径 cd / du --max-depth=1 -h

解释一下这条命令:

du:会显示指定的目录或文件所占用的磁盘空间。

–max-depth-1:–max-depth=<目录层数> 超过指定层数的目录后,予以忽略。

-h:以K,M,G为单位,提高信息的可读性。

执行结果:

Linux 磁盘满了解决方案

文件夹太多,小编就截了一部分图

这个应该一看就明白,前面一列占用大小,后面是文件名,这个我们就知道哪个文件占用大了,如果这个文件没有用我们就可以删了。

第三步:如果删除完了,我们磁盘占用情况没变怎么办

接下来我们来解释一下这个问题

在Linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%,整个系统无法正常运行。这种情况下,通过df和du命令查找的磁盘空间,两者是无法匹配的,可能df显示磁盘100%,而du查找目录的磁盘容量占用却很小。遇到这种情况,基本可以断定是某些大文件被某些程序占用了,并且这些大文件已经被删除了,但是对应的文件句柄没有被某些程序关闭,造成内核无法收回这些文件占用的空间。简而言之,就是你把这个文件删了,但是进程还占用着这个文件。

第四步:查看哪些文件被哪些程序占用

可以使用以下命令

lsof -n | grep deleted

解释一下:

lsof:列出当前系统打开文件的工具

Linux 磁盘满了解决方案

然后我们找到我们已经开始删除的文件,将这个进程使用kill命令关掉。然后我们再是第一步使用的命令查看磁盘情况,发现有变化了!

Linux 磁盘满了解决方案

原文始发于:Linux 磁盘满了解决方案

主题测试文章,只做测试使用。发布者:酒颂,转转请注明出处:http://www.cxybcw.com/24210.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code