2012-02-15 71 views
3

当我启动我的实例时,我的实例交换文件正在消失。停止ebs支持的实例时,交换消失。

我有一个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 

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

/mnt/512MiB.swap none swap sw 0 0 

由于我使用更大的交换,这个过程需要一些时间,我不想每次启动时都这样做。我宁愿支付存储费用。但是,当我启动实例时,交换消失了。如果我输入'top',则实例没有使用交换文件。

我该怎么办?

+0

可能有一个启动/关闭脚本清除/ mnt任何非挂载点文件。尝试使用/ tmp,或者最好是其他不太可能被自动清理的目录。 – 2012-02-15 20:57:24

+0

那里没有足够的空间;我正在寻找200GB的交换。我有一个非常需要记忆的任务,我需要每周运行一两次运行一夜。 – 2012-02-15 21:10:19

+0

内存密集和交换不相处。 swap = disk =比内存少许多个数量级的减少。 – 2012-02-15 21:12:26

回答

6

当您使用Amazon EC2实例已EBS支持Root Device Storage,所有EC2 instance types仍然有EC2 instance storage(也称为短暂店)可供使用,以及,更小的实例类型(如的m1.small和C1 .medium)将其附加并默认安装在/mnt甚至(较大的不是!)。

此存储类型最重要的特征是,实例存储卷上的数据仅在关联的Amazon EC2实例的使用期限内持续存在。

这个陈述现在有一点误导,它适用于停止EBS支持的实例(尽管不重新启动),即当您停止该实例时,安装在/mnt处的临时卷被分离并删除,所有那里存储的数据丢失了,当然包括你的交换文件;一旦你重新开始的情况下,新的临时卷将被连接,并安装在/mnt

解决方案

你仍然可以使用EC2实例存储(这是丰富且免费的),如果你确切地知道你在做什么(见下文背景),例如它是严格的临时数据或任何可以方便地根据需要进行重建,例如像缓存完美的选择。

交换文件符合这个要求也当然的,所以你只需要创建一个在你的问题中列出的命令的脚本并执行它的情况下开始重建交换文件。你应该把保护到位,虽然,因为实例存储生存重启,即你不需要也不应该重新上重新启动交换文件,只是真正的停止/启动循环。


背景

曾经是当亚马逊EC2首次引入的唯一存储选项,不过对于日常使用所产生的严重局限性实例存储已幸运地得到纠正与Amazon Elastic Block Store (EBS)您正在使用以及相应。埃里克·哈蒙德最近提供了极大的总结为什么You Should Use EBS Boot Instances on Amazon EC2,解决这个题目:

如果你是刚开始使用亚马逊EC2,然后使用EBS启动 情况下,停止阅读这篇文章。忘记你曾经听说过关于实例存储的 ,并接受我刚刚提到的道歉。 一旦您完全熟悉使用EBS引导实例 EC2,您可能(或可能不会)想要回到这里,并了解为什么您做出了一个很好的决定 。

+1

任何机会你有一个脚本,实现交换创建/开始,但不是在重新启动? – dialt0ne 2012-06-13 17:23:54