在EC2实例上/ tmp的大小增加


8

我在EC2 ebs上运行Ubuntu服务器,我的应用程序需要大量临时磁盘空间,这些空间在/ tmp中分配。但是,在ec2上,还包含/ tmp的根驱动器很小,大约10GB。所有剩余的磁盘空间都安装在/ mnt下。结果,我的应用程序返回“磁盘空间不足”错误,因为/ tmp似乎已满。

解决此问题的最佳方法是什么?我能想到的一件事是创建/ mnt / tmp并进行符号链接

/tmp --> /mnt/tmp

但是,我有点不愿意弄乱这么多Linux程序和工具所使用的东西。我不确定每个程序是否都能正确解析符号链接,也不确定性能如何。


2
绑定坐骑意味着不必进行符号链接。
伊格纳西奥·巴斯克斯

Answers:


5

使用EBS支持的映像,临时存储仍然可用,默认情况下它只是未映射为块设备(因为它在实例存储映像上)

亚马逊的文档是在这里,而且有一个有用的博客文章,在这里

总结:启动映像时,可以在命令行上指定此映射,然后将其作为普通卷安装在上/dev/sd[x]。或者,如果您滚动自己的AMI,则可以将映射烘焙到该AMI中,以便从其启动的所有映像都可以从一开始就对其进行访问。

符号链接/tmp可以工作,但在这种情况下(如果您使用了大量的临时存储空间),我不建议您这样做。一旦有了可用的设备映射,就可以像/tmp中那样安装设备/etc/fstab

对于小型实例,您应该免费拥有150GB的实例存储。不用说实例重新启动时该存储将消失,这真是令人高兴。如果您的使用不是那么临时,那么您需要创建自己的新EBS卷并以这种方式安装它。


1
为什么不建议使用符号链接?例如,如果我想将/ var / tmp和/ var / log都放在我的临时存储中,则可以将存储挂载为/ mnt并在其中将两个目录符号链接。
2012年

好点子。我基于OP正在考虑将符号链接回主分区的假设,正在考虑此特定情况。我会澄清我的答案。
SmallClanger 2012年

1

您可以将/ tmp挂载点绑定到/ mnt / tmp:

须藤挂载-B / tmp / mnt / tmp


2
该命令对我来说是向后看的。我认为您交换了两个目录名称。
kasperd '16

0

问题中建议的符号链接并不是很糟糕的解决方案。但是在执行此操作时要格外小心。为了巩固安装卷所涉及的精确步骤,请执行以下步骤:

1)在AWS控制台中创建新卷。将其附加到实例。

2)格式化它并说下安装 /mnt/vol1

3)/tmp尽一切可能进行清理。

4) mkdir /mnt/vol1/tmp && mv /tmp/* /mnt/ && rmdir /tmp && ln -s /mnt/vol1/tmp /tmp


对于当前打开的任何文件,将文件移动到新目录都无法获得理想的结果。我将重新启动,因为程序无法期望文件进入/tmp重新启动。
kasperd '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.