如何使用交换文件分配内存充当 Amazon EC2 实例中的交换空间?
上次更新时间:2021 年 11 月 18 日
我想要分配内存充当 Amazon Elastic Compute Cloud (Amazon EC2) 实例中的交换文件。该怎么做?
简短描述
当物理 RAM 已在使用时,Amazon EC2 实例使用交换空间作为物理 RAM 的短期替换。
未处于活动使用状态或不需要像其他数据或指令一样紧急的 RAM 的内容可以临时分页到一个交换文件。这样可以释放 RAM,以便更直接地使用。
您也可以在分区上创建交换空间。有关更多信息,请参阅如何使用硬盘上的分区分配内存充当 Amazon EC2 实例上的交换空间?
注意:最佳实践是只在临时存储实例存储卷上创建交换空间。
解决方法
在开始执行该解决方法之前,请验证您的文件系统是否支持使用交换文件。
注意:大多数常见的文件系统(ext3、ext4、XFS)都受支持。对于其他文件系统,这可能不一样。最佳实践是审核最新的文件系统文档。
计算交换空间大小
有关如何计算交换空间大小的信息,请参阅以下内容:
- linux.com 网站上的关于 Linux 交换空间的所有内容。
- help.ubuntu.com 网站上的我需要多少交换空间?。
创建交换文件
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