我怎样才能找出为什么我的存储空间在亚马逊 EC2是满的?

当我在 Amazon EC2服务器上运行 df -h时,输出如下:

[ec2-user@ip-XXXX ~]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1             25G   25G     0 100% /
tmpfs                 4.0G     0  4.0G   0% /dev/shm

不知道为什么,有东西在占用我的储物空间。

我试图找到所有的大文件/文件夹 这就是我得到的回报:

[ec2-user@ip-XXXX ~]$ sudo du -a / | sort -n -r | head -n 10
993580  /
639296  /usr
237284  /usr/share
217908  /usr/lib
206884  /opt
150236  /opt/app
150232  /opt/app/current
150224  /opt/app/current/[deleted].com
113432  /usr/lib64

我怎样才能知道是什么在侵蚀我的储藏空间?

90781 次浏览

嗯,我认为它的一个(或多个)日志文件已经变得太大,需要删除/备份。我建议你先查大文件。所以查找所有大于 10 MB的文件(10MB 是一个足够大的文件大小,您可以选择 + 1M 为1MB 类似)

sudo find / -type f -size +10M -exec ls -lh {} \;

现在你可以识别哪些是造成麻烦的原因,并相应地处理它们。

至于原来的 du -a / | sort -n -r | head -n 10命令,由于它是按大小排序的,所以不会起作用,因此,一个大文件的所有祖先目录都将沿着金字塔向上排列,而单个文件很可能会被遗漏。

注意: 在您找到的文件位置发现类似的其他日志文件/二进制文件应该很简单,所以建议您在包含原始文件的目录中执行 cd,以清除更多同类文件。接下来还可以使用命令迭代大于 1MB的文件,以此类推。

/键入 du -hs *root:

$ sudo su -
cd /; du -hs *

您将看到所有文件夹的完整大小,并识别较大的文件夹。

Anshl 的答案是找到大文件的方法。但是,如果希望查看文件系统中每个目录占用的空间,请将 cd 转到根目录,然后执行 du -k --max-depth=’。这将显示根目录中的每个子目录占用了多少空间。当您发现罪魁祸首,cd 到该目录,然后再次运行相同的命令,并重复,直到您找到正在消耗所有空间的文件。

如果您无法找到任何巨大的文件,那么关闭一些进程可能会解决这个问题(这对我很有效,请阅读完整的答案以了解原因)

早些时候:

/dev/xvda1       8256952 7837552         0 100% /

现在

/dev/xvda18256952 1062780   6774744  14% /

理由: 如果对当前由任何进程打开的文件执行 rm <filename>操作,它不会删除该文件,而该进程仍可能正在写入该文件。这些幽灵文件无法通过 find命令找到,也无法删除。使用此命令可查找哪些进程正在使用已删除的文件:

lsof +L1

关闭进程以释放文件。有时很难使用该文件杀死所有进程。尝试重新启动系统(我感觉不好,但这是一个快速的解决方案,确保没有进程使用被删除的文件)

阅读: Https://serverfault.com/questions/232525/df-in-linux-not-showing-correct-free-space-after-file-removal/232526

此空间由邮件通知占用

你可以通过打字来检查

sudo find / -type f -size +1000M -exec ls -lh {} \;

它将显示超过1000MB 的大文件夹

结果将有一个文件夹

/var/mail/username

通过运行以下命令可以释放该空间

> /var/mail/username

注意,大于(>)符号不是提示符,您必须使用它运行 cmd。

现在检查您的空间自由空间

df -h

现在你有足够的自由空间,享受... :)