我在 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
/tmp
3)尽可能进行清理。
4) mkdir /mnt/vol1/tmp && mv /tmp/* /mnt/ && rmdir /tmp && ln -s /mnt/vol1/tmp /tmp