如何使用交换文件分配内存充当 Amazon EC2 实例中的交换空间?

上次更新时间:2020 年 1 月 15 日

我想分配内存充当 Amazon Elastic Compute Cloud (Amazon EC2) 实例中的交换文件。该如何操作?

简短描述

当物理 RAM 已在使用时,Amazon EC2 实例使用交换空间作为物理 RAM 的短期替代工具。

未处于活动使用状态或不像其他数据或指令那样迫切需要的 RAM 内容可以临时分页到交换文件中。这样可以释放 RAM 以满足更迫切的需求。

您也可以在分区上创建交换空间。有关更多信息,请参阅如何使用硬盘上的分区分配内存充当 Amazon EC2 实例上的交换空间?

注意:最佳实践是仅在短暂存储实例存储卷上创建交换空间。

解决方法

计算交换空间大小

一般来说,根据以下条件计算交换空间:

物理 RAM 的数量 建议的交换空间
2GB 或更少的 RAM 2 倍的 RAM 量,但不得少于 32MB
大于 2GB 但小于 32GB 的 RAM 4GB + (RAM – 2GB)
32GB 或更多的 RAM 1 倍的 RAM 量

注意:交换空间不得少于 32MB。

创建交换文件

1.    使用 dd 命令在根文件系统上创建交换文件。在该命令中,bs 是数据块大小,count 是数据块的数量。交换文件的大小是 dd 命令中的数据块大小选项乘以计数选项。调整这些值以确定所需的交换文件大小。

您指定的数据块大小应小于实例上的可用内存,否则会收到“内存耗尽”错误。

在此示例 dd 命令中,交换文件为 4GB (128MB x 32):  

$ sudo dd if=/dev/zero of=/swapfile bs=128M count=32

2.    更新交换文件的读写权限:

$ sudo chmod 600 /swapfile

3.    设置 Linux 交换区域:

$ sudo mkswap /swapfile

4.    通过将交换文件添加到交换空间,使交换文件可供立即使用:  

$ sudo swapon /swapfile

5.    验证该过程是否成功:

$ sudo swapon -s

6.    通过编辑 /etc/fstab 文件,在启动时启用交换文件。

在编辑器中打开文件:

$ sudo vi /etc/fstab

在文件末尾添加以下新行,保存文件,然后退出:

/swapfile swap swap defaults 0 0

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?