停止ebs支持的实例时,交换消失.

Pat*_*ann 3 amazon-ec2 amazon-ebs amazon-web-services ubuntu-11.10

当我启动我的实例时,我的实例交换文件正在消失.

我有一个Ubuntu ec2实例,我按照https://help.ubuntu.com/community/SwapFaq上的"四步处理添加交换文件"说明操作:

sudo dd if=/dev/zero of=/mnt/512MiB.swap bs=1024 count=524288
sudo chmod 600 /mnt/512MiB.swap
sudo mkswap /mnt/512MiB.swap
sudo swapon /mnt/512MiB.swap
Run Code Online (Sandbox Code Playgroud)

然后我改变了我的/ etc/fstab包括:

/mnt/512MiB.swap  none  swap  sw  0 0
Run Code Online (Sandbox Code Playgroud)

由于我使用的是更大的交换,这个过程需要一些时间,而且我不想每次开始都这样做.我宁愿为存储付钱.但是,当我启动我的实例时,交换已经消失.如果我输入'top',则实例没有正在使用的交换文件.

我该怎么办?

Ste*_*pel 6

虽然您使用的Amazon EC2实例具有EBS支持的根设备存储,但所有EC2实例类型仍然具有可供使用的EC2实例存储(也称为临时存储),以及较小的实例类型(例如m1.small和c1.medium)/mnt默认情况下连接并安装(更大的没有!).

要了解此存储类型的最重要特征是,实例存储卷上的数据仅在关联的Amazon EC2实例的生命周期内持续存在.

这句话现在有点误导,因为它适用于停止EBS支持的实例(虽然不重启),即当你停止该实例时,安装在/mnt那里的临时卷被分离并删除,并且存储在那里的所有数据都会丢失,当然包括你的交换文件; 一旦你再次启动实例,将附加一个新的临时卷并安装在/mnt.

如果您确切知道自己在做什么,仍然可以使用EC2实例存储(丰富且免费)(例如,请参阅下面的背景部分),例如,对于严格临时数据或任何可以轻松重建的内容,它都是完美的选择.需求,例如缓存.

交换文件当然也符合这些要求,因此您只需要使用问题中列出的命令创建脚本,并在实例启动时执行它以重新创建交换文件.你应该设置一个防护装置,因为实例存储可以重新启动,即你不需要也不应该在重新启动时重新创建交换文件,只需要实际的停止/启动周期.


背景

实例存储曾经是Amazon EC2首次推出时唯一的存储选项,但幸运的是,由于您正在使用的Amazon Elastic Block Store(EBS),日常使用所带来的严重限制已得到纠正.Eric Hammond最近提供了一个很好的总结,为什么你应该在Amazon EC2上使用EBS引导实例,解决这个问题:

如果您刚开始使用Amazon EC2,请使用EBS启动实例并停止阅读本文.忘记你曾经听过实例店并接受我刚才提到的道歉.一旦您完全熟悉在EC2上使用EBS启动实例,您可能(或可能不)想回到这里并阅读您做出正确决定的原因.