EC2 - 停止/启动后保留实例存储交换卷

EC2 - 停止/启动后保留实例存储交换卷

我有一个 EC2 实例,想要为其配置交换实例卷。

我可以相对轻松地完成此操作,通过启动附加了实例存储卷的实例,然后运行以下命令......

$ sudo mkswap /dev/xvdb
$ sudo swapon -p 1 /dev/xvdb

然后我可以运行以下命令来验证它是否有效......

$ sudo swapon -s
Filename                                Type            Size    Used    Priority
/dev/xvdb                               partition       335515644       0 1

我可以通过在 /etc/fstab 中添加类似这样的行来使其在重启后继续存在

/dev/xvdb swap swap pri=1 0 0

问题是,如果我停止实例,然后重新启动它。交换会消失。我必须使用 mkswap 和 swapon 重新创建它。

配置实例以自动将实例卷附加为交换空间的正确方法是什么?

我尝试将以下内容添加到实例用户数据中......

#!/bin/sh

mkswap /dev/xvdb
swapon -p 1 /dev/xvdb

但这没有任何作用。每次启动实例时我仍然需要手动重新创建交换。

答案1

通过停止后执行的用户数据然后启动,如本文所述AWS 文档

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash
DISK=/dev/nvme1n1

mkswap $DISK
swapon -p 1 $DISK
--//

或者通过 init 配置系统上的 rc.local,附加到 /etc/rc.local:

DISK=/dev/xvdb
mkswap $DISK
swapon -p 1 $DISK

相关内容