2013-09-16 28 views
0

我在一个小的AWS Linux实例上运行Mongo。今天早上我的系统因数据库锁定日志中的大量错误而关闭,因为磁盘已满而导致数据库锁定失败。Mongo报告AWS上的空间不足

我怎样才能找出为什么/什么是满的?我认为小AWS实例应该有160G可用?当我使用mongo/data目录时,它显示了5.5G。

我知道Mongo可能是磁盘饥渴的。我的数据(原始)大约是150-200MB的JSON。

回答

0

您的磁盘可能已满。

160 GB编号是指仅在您明确启用它时启用的实例存储。其默认情况下未启用的原因是它不是持久的。由于此存储连接到主机,因此如果您停止实例或因任何原因导致主机出现故障,您将丢失其中包含的任何内容。

您使用的存储是EBS卷。 AWS相当于SAN卷。默认情况下,大多数AMI都会在8-10 GB左右创建此卷。您可以将它的大小增加到每卷1TB。

要纠正目前的情况,您需要一些停机时间。您可以执行导入到配置了更多空间的新实例。否则,您可以对当前音量进行快照,并使用该快照创建新的较大音量。您需要调整分区大小以利用所有空间。

0

正如你所提到的,小实例在本地有短暂的磁盘,但它被挂载到/ media/ephemeral0之类的地方,而不是根/。默认情况下,EBS根卷挂载在/上,MongoDB的默认数据目录为/ data。这意味着MongoDB放置在EBS根卷中,而不是临时磁盘。

此外,当实例终止时,临时存储会丢失,因此一般不建议使用临时存储,除非您对数据丢失的影响感到满意。

参见:
MongoDB Document about EC2
AWS Document