如何向 AWS EC2/Lightsail Amazon Linux 实例添加交换
因此,像许多个人开发者一样,我的资源很紧张,尤其是资金方面。我有两个 AWS EC2 VM 在 Amazon Linux 上作为 WireGuard VPN 运行供个人使用,另一个是我的开发机器,上面运行着 Python、PHP 和其他东西。这些都是只有 512MB RAM 的微型 VM。主要问题是,当我运行“ sudo yum update”时,我的由 CentOS 或 Amazon Linux 2 驱动的小型 VM 会内存不足。RHEL 和 co 的 BaseOS 存储库太大了。它至少需要 3 GB 的 RAM。因此,当内存不足时,我也会出现段错误,如下所述。我相信 RHN 中有一个 dnf 错误。因此,我决定自己动手,在 AWS 上运行的 Amazon Linux 2 EC2 / Lightsail VM 上添加 8GB 的交换空间来解决问题。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 是的 |
要求 | Linux 终端 |
类别 | 系统管理 |
先决条件 | 具有 EC2/Lightsail VM 的 AWS 帐户 |
操作系统兼容性 | Alma • Fedora • Linux • RHEL • Rocky • Stream |
预计阅读时间 | 3 分钟 |
切换到 AWS EC2/Lightsail Amazon Linux 实例的过程
- 使用 ssh 命令登录到您的 AWS EC2 / Lightsail Amazon Linux 2 VM:
$ ssh ec2-user@ec2-example-wireguard-vpn
$ ssh ec2-user@lightsail-ipv4-address-here - 使用 sudo 命令以 root 用户身份登录:
$ sudo -i
- 键入 dd 命令来创建一个名为 /aws-swapfile-1 的新 8GB 交换文件存储(1M * 8192 计数 {8*1024} == 8GB):
# dd if=/dev/zero of=/aws-swapfile-1 bs=1M count=8192 status=progress
该status=progress选项传递给 dd 命令以在屏幕上显示进度,如下所示:8588886016 bytes (8.6 GB) copied, 132.245227 s, 64.9 MB/s 8192+0 records in 8192+0 records out 8589934592 bytes (8.6 GB) copied, 132.257 s, 64.9 MB/s
- 出于安全原因,使用 chmod 命令设置权限:
# chmod -v 0600 /aws-swapfile-1
详细信息表明只有我们的 root 用户和系统 Linux 内核可以访问交换文件:mode of ‘/aws-swapfile-1’ changed from 0644 (rw-r--r--) to 0600 (rw-------)
- 使用 swapon 命令在 AWS/Lighsail Amazon Linux 上启用交换空间以进行分页和交换:
# swapon -v /aws-swapfile-1
系统确认我已分配内存作为 Amazon EC2 实例中的交换空间:swapon: /aws-swapfile-1: found signature [pagesize=4096, signature=swap] swapon: /aws-swapfile-1: pagesize=4096, swapsize=8589934592, devsize=8589934592 swapon /aws-swapfile-1
- 使用 swapon 命令/free 命令或 top 命令/htop 命令进行验证:
$ swapon -s
$ htop
$ free -h -t
- 使用文本编辑器编辑/etc/fstab文件并添加以下行以在启动时打开 SWAP:
/aws-swapfile-1 swap swap defaults 0 0
/dev/zero 用作初始化交换文件的数据存储的字符流。
接下来使用 mkswap 命令使用名为 /aws-swapfile-1 的文件设置 Linux 交换区域。例如:
# mkswap /aws-swapfile-1
输出:
Setting up swapspace version 1, size = 8 GiB (8589930496 bytes) no label, UUID=6713d1b4-13d0-44d5-908f-f7479da3401e
这就是向 AWS EC2/Lightsail Amazon Linux 实例添加交换空间的方法。现在我的yum 命令可以正常工作,没有任何内存问题:
$ sudo yum update
总结
当 AWS EC2 或 Lightsail VM 上的物理 RAM 不足时,我会使用交换空间。本页介绍了如何配置和使用 Amazon EC2 或 Lightsail 实例来交换空间作为物理 RAM 的短期替代品,以便 dnf 命令或yum 命令正常工作而不会导致问题。我从未在使用 Debian、Ubuntu 和其他 Linux 发行版时遇到过这样的问题,因此,我记录了解决内存问题的步骤。所以我希望 Red Hat 能通过 yum/dnf 修复这个问题。有关更多信息,请使用 Amazon Linux 或 CentOS/RHEL VM 上的 --help 选项命令或 man 命令阅读文档:
$ man 5 fstab
$ man dd
$ man swapon
$ man mkswap
本篇文章是Linux 和 UNIX 交换文件管理教程系列中的第4 篇(共10 篇)。继续阅读本系列的其余文章: