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

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

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

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

/tmp --> /mnt/tmp

但是我不太愿意去摆弄这么多 Linux 程序和工具使用的东西。我不确定每个程序是否都能正确解析符号链接,也不确定这会对性能产生什么影响。

答案1

对于 EBS 支持的图像,临时存储仍然可用,只是默认情况下不会映射为块设备(就像在实例存储图像上一样)

亚马逊文档是这里,还有一篇有用的博客文章,这里

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

符号链接/tmp可以工作,但在这种情况下我不建议这样做,因为您有大量的临时存储正在使用。一旦有了设备映射,您就可以像/tmp下面这样挂载设备/etc/fstab

对于小型实例,您应该有 150GB 的免费实例存储空间。但愿不用说,当实例重新启动时,这些存储空间会消失。如果您的使用不是临时的,那么您需要创建自己的新 EBS 卷并以此方式安装它。

答案2

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

sudo mount -B /tmp /mnt/tmp

答案3

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

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

2)格式化并挂载到/mnt/vol1

/tmp3)尽可能进行清理。

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

相关内容