我想在硬盘上使用分区在 Amazon Elastic Compute Cloud(Amazon EC2)实例上分配内存来作为交换空间。
简短描述
要分配内存作为交换空间,请完成以下步骤:
- 计算交换空间大小。
- 在硬盘上创建分区作为交换空间。
- 设置交换区域。
您还可以创建交换文件来用作交换空间。有关详细信息,请参阅如何分配内存以在 Amazon EC2 实例中用作交换文件?
**注意:**实例会在 RAM 量已满时使用交换空间。您可以将交换空间用于 RAM 量较少的实例,但不能替代 RAM 较多的实例。由于交换空间位于实例的硬盘上,因此与实际 RAM 相比,性能较慢。要获得更多或更快的内存,请增加实例大小。
有关交换空间的详细信息,请参阅 Red Hat 网站上的交换空间。
解决方法
计算交换空间大小
最佳做法是交换空间等于物理 RAM 的两倍,物理 RAM 最大 2 GB。如果容量超过 2 GB,请额外添加 0.5 倍的物理 RAM。不允许交换空间降至 32 MB 以下,这也是一种最佳做法。请参阅下表来计算您的交换空间大小:
| |
---|
系统 RAM 容量 | 推荐交换空间 |
2 GiB 或以下 | RAM 容量的 2 倍,不低于 32 MB |
大于 2 GiB 但小于 64 GiB | RAM 容量的 0.5 倍 |
64 GiB 以上 | 取决于工作负载或用例 |
在硬盘驱动器上创建分区作为交换空间
要在硬盘上创建分区作为交换空间,请完成以下步骤:
-
使用 AWS Systems Manager 或 SSH 登录实例。
-
列出可用卷:
sudo fdisk -l
-
从列表中选择要进行分区的设备。在此示例中,使用设备 /dev/xvda。
sudo fdisk /dev/xvda
-
创建新分区:
\-> n
-
选择分区类型。在此示例中,使用“主要”:
\-> p
-
分配分区编号。在此示例中,使用分区 2:
\-> 2
-
按 Enter 接受“First sector”(第一扇区)默认值。
-
输入交换文件的大小。在此示例中,有 2 GB RAM。您创建的分区为 4 GB(指定为 +4G)。
\-> +4G
-
保存并退出:
\-> w
设置交换区域
要设置交换区域,请完成以下步骤:
-
使用 partprobe 命令通知操作系统进行了分区表更改:
partprobe
-
使用您在前面的步骤中创建的交换分区设置 Linux 交换区域。在以下示例中,交换分区为 /dev/xvda2。
mkswap /dev/xvda2
-
添加分区作为交换空间:
sudo swapon /dev/xvda2
-
显示当前交换空间:
sudo swapon -s
输出结果类似于以下示例:
Filename Type Size Used Priority/dev/xvda2 partition 4194300 0 -1
-
重新启动后,完成以下步骤,让交换内存分配成为永久配置:
通过 blkid 命令打印 UUID:
sudo blkid
从前面的输出中复制交换分区的 UUID。使用文本编辑器(如 vi 或 nano)将以下内容添加到 /etc/fstab 文件中:
UUID=xxxxxxx none swap SW 0 0
-
保存文件,然后执行重启。
重启操作系统后,使用 free -h 命令验证交换内存分配是否是一直如此。