我想在硬盘上使用分区在 Amazon Elastic Compute Cloud(Amazon EC2)实例上分配内存来作为交换空间。
简短描述
要分配内存作为交换空间,请完成以下步骤:
- 计算交换空间大小。
- 在硬盘上创建分区作为交换空间。
- 设置交换区域。
您还可以创建交换文件来用作交换空间。有关详细信息,请参阅如何使用交换文件分配内存以在 Amazon EC2 实例中用作交换空间?
**注意:**实例会在 RAM 量已满时使用交换空间。您可以将交换空间用于 RAM 量较少的实例,但不能替代 RAM 较多的实例。由于交换空间位于实例的硬盘上,因此与实际 RAM 相比,性能较慢。要获得更多或更快的内存,请增加实例大小。
解决方法
计算交换空间大小
最佳做法是交换空间为物理 RAM 的两倍,物理 RAM 最大 2 GB。如果量超出 2 GB,额外添加 1 个物理 RAM。最佳做法是始终保持交换空间不低于 32 MB。
| |
---|
系统 RAM 容量 | 推荐交换空间 |
RAM 为 2 GiB 或以下 | RAM 量的 2 倍,不低于 32 MB |
RAM 在 2 GiB 以上,不超过 64 GiB | RAM 量的 0.5 倍 |
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. 输入交换文件的大小。在此示例中,有 2 GB RAM。您创建的分区为 4 GB(指定为 +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. 重新启动后,完成以下步骤,让交换内存分配成为永久配置:
从 blkid 命令打印 UUID:
$ sudo blkid
从前面的输出中复制交换分区的 UUID。使用文本编辑器(如 vi 或 nano)将以下内容添加到 /etc/fstab 文件中:
UUID=xxxxxxx none swap SW 0 0
6. 保存文件,然后执行重新启动。
重新启动操作系统后,可以使用 free -h 命令验证交换内存分配是否是一直如此。
相关信息
交换空间(在 Red Hat 网站上)