亚马逊EC2 - 磁盘已满

时间:2013-11-17 14:08:14

标签: linux amazon-web-services amazon-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

我怎样才能知道我的存储空间是什么?

6 个答案:

答案 0 :(得分:70)

好吧,我认为它的一个(或多个)日志文件已经变得太大而需要删除/备份。我建议先把大文件放到后面。所以找到大于10 MB的所有文件(10 MB是一个足够大的文件大小,你可以为1MB选择+ 1M)

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

现在您可以确定导致问题的因素并相应地处理它们。

至于你原来的du -a / | sort -n -r | head -n 10命令,由于按大小排序,因此不起作用,因此,大文件的所有祖先目录都会向上移动到金字塔,而单个文件很可能是错过。

注意:在您找到的文件位置注意到类似的其他日志文件/二进制文件的出现应该非常简单,所以作为建议,请在包含原始文件的目录中执行cd清理更多同类文件。您还可以使用该命令迭代下一个大小大于1MB的文件,依此类推。

答案 1 :(得分:17)

如果你找不到任何巨大的文件,杀死一些进程可能会解决问题(这对我有用,请阅读完整答案以了解原因)

<强>早些时候:

/dev/xvda1       8256952 7837552         0 100% /

立即

/dev/xvda18256952 1062780   6774744  14% /

<强>原因: 如果对进程打开的文件执行rm <filename>,它实际上不会删除该文件,并且进程仍然可以写入该文件。 find命令无法找到或删除这些ghost文件。使用此命令可以找出正在使用已删除文件的进程:

lsof +L1

重启机器或终止进程以释放文件。

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

答案 2 :(得分:9)

/,将du -hs *键入root

$ sudo su -
cd /; du -hs *

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

答案 3 :(得分:5)

邮件通知消耗此空间

您可以输入

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

它将显示1000MB以上的大文件夹

结果将有一个文件夹

/var/mail/username

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

> /var/mail/username

请注意,大于(&gt;)的符号不是提示,您必须使用它运行cmd。

现在通过

检查空间可用空间
df -h

现在你有足够的可用空间,享受......:)

答案 4 :(得分:2)

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

答案 5 :(得分:0)

如果您对文件系统有任何快照,则使用情况不会在操作系统中显示。

因此,离开快照的时间越长,当前卷上消耗的磁盘就越多。如果删除快照,则重新启动丢失的磁盘容量将重新出现。