如何使用硬盘上的分区分配内存充当 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

这篇文章对您有帮助吗?


您是否需要账单或技术支持?