我正在EC2 ebs上运行Ubuntu服务器,而我的应用程序需要大量的临时磁盘空间,分配在/ tmp中。 但是,在ec2上,根驱动器也包含/ tmp,相当小,大约10GB。 所有剩余的磁盘空间都安装在/ mnt下。 因此,我的应用程序返回“磁盘空间不足”错误,因为/ tmp似乎已满。
解决这个问题的最好方法是什么? 我可以想到的一件事是创build/ mnt / tmp并创build一个符号链接
/tmp --> /mnt/tmp
不过,我有点不情愿乱用这么多Linux程序和工具所使用的东西。 我不确定每个程序是否能够正确解决这个符号链接,并且不知道它会如何performance。
使用EBS支持的映像,临时存储仍然可用,默认情况下它不会被映射为块设备(因为它在实例存储映像上)
亚马逊文件在这里 , 这里有一个有用的博客文章
总结:在启动映像时,可以在命令行上指定此映射,然后将其作为普通卷安装在/dev/sd[x] 。 或者,如果您推出了自己的AMI,那么您可以将映射映射到AMI中,以便从其中启动的所有映像从一开始就可以访问。
Symlinking /tmp可以工作,但在这种情况下,我不会推荐它,在这种情况下,您有大量的临时存储正在使用。 一旦设备映射可用,您可以将设备挂载为/etc/fstab /tmp 。
一个小实例,你应该有150GB的实例商店免费提供。 不用说这个存储在实例重新启动的时候死掉了。 如果您的使用不是那么临时,那么您需要创build自己的新EBS卷并以此方式安装。
您可以将/ tmp挂载点绑定到/ mnt / tmp:
sudo mount -B / tmp / mnt / tmp
问题中提出的符号链接并不是一个很好的解决scheme。 但在这样做的时候还要多加小心。 只是为了巩固安装卷的精确步骤是:
1)在AWS控制台中创build新卷。 附加到实例。
2)格式化并安装在say /mnt/vol1
3)尽可能清理/tmp 。
4) mkdir /mnt/vol1/tmp && mv /tmp/* /mnt/ && rmdir /tmp && ln -s /mnt/vol1/tmp /tmp