3

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

我有一个 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”,则该实例没有正在使用的交换文件。

我该怎么办?

4

1 回答 1

6

虽然您使用的Amazon EC2实例具有EBS支持的Root Device Storage,但所有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 引导实例,您可能(或可能不)想回到这里并了解您做出正确决定的原因。

于 2012-04-21T15:00:12.400 回答