如何使用硬盘上的分区分配内存充当 Amazon EC2 实例上的交换空间?
上次更新日期:2022 年 8 月 25 日
我想要使用硬盘上的分区分配内存充当 Amazon Elastic Compute Cloud (Amazon EC2) 实例上的交换空间。该如何操作?
简短描述
要分配内存充当交换空间,请执行以下操作:
1.. 计算交换空间大小。
2.. 在硬盘上创建一个分区作为交换空间。
3.. 设置交换区域。
您还可以创建交换文件以用作交换空间。有关更多信息,请参阅如何使用交换文件分配内存充当 Amazon EC2 实例中的交换空间?
注意:当 RAM 已满时,实例将使用交换空间。交换空间可用于具有少量 RAM 但不能替代更多 RAM 的实例。由于交换空间位于实例的硬盘驱动器上,因此与实际 RAM 相比,性能会更慢。要获得更多或更快的内存,请考虑增加实例大小。
解决方法
计算交换空间大小
最佳做法是交换空间等于物理 RAM 的 2 倍,最多可获得 2 GB 的物理 RAM。对于大于 2GB 的任何容量,再增加一个 1 个物理 RAM。最佳做法是交换空间永远不小于 32 MB。
系统 RAM 的量 | 建议的交换空间 |
2 GiB 的 RAM 或更少 | 2 倍的 RAM 量,但永远不能少于 32 MB |
超过 2 GiB 的 RAM,但小于 64 GiB | 0.5 倍的 RAM 量 |
超过 64 GiB | 取决于工作负载或用例 |
在硬盘驱动器上创建分区作为交换空间
1.. 使用 SSH 登录到实例。
2.. 列出可用的卷:
$ sudo fdisk -l
3.. 从列表中选择一个要分区的设备。在本示例中,使用设备 /dev/xvda。
$ sudo fdisk /dev/xvda
4.. 创建新的分区:
-> n
5.. 选择一种分区类型。在本示例中,使用主分区:
-> p
6.. 分配分区编号。在本示例中,使用分区 2:
-> 2
7.. 通过按 Enter 接受默认设置“第一个扇区”。
8.. 输入交换文件的大小。在本示例中,RAM 为 2GB,创建的分区为 4GB(指定为 +4G)。
-> +4G
9.. 保存并退出:
-> w
设置交换区域
1.. 使用 partprobe 命令通知操作系统分区表的更改:
$ partprobe
2.. 使用您在前述步骤中创建的交换分区设置 Linux 交换区域。在本示例中,交换分区为 /dev/xvda2。
$ mkswap /dev/xvda2
3.. 将分区添加为交换空间:
$ sudo swapon /dev/xvda2
4.. 显示当前的交换空间:
$ sudo swapon -s
将出现与以下类似的输出:
Filename Type Size Used Priority
/dev/xvda2 partition 4194300 0 -1
5.. 使用以下命令在重启后永久分配交换内存:
注意:如果 xvda2 不是您的交换设备名称,那么在您的环境中用交换设备名称替换这个术语。
$ cp /etc/fstab /etc/fstab_$(date +%Y%m%d%H%M%S)
$ cat <<EOF >> /etc/fstab
`sudo blkid /dev/xvda2 | grep -Eo '[[:alnum:]]{8}(-[[:alnum:]]{4}){3}-[[:alnum:]]{12}'` swap swap defaults 0 0
EOF
$ reboot