Swap(交换空间)是 Linux 系统在物理内存(RAM)不足时使用的磁盘空间,用于防止内存耗尽导致系统崩溃。如果你的 Ubuntu 系统默认 Swap 太小(例如只有 1GB),而你想扩展至 2GB 或更大,可以按照本教程进行操作。
1. 检查当前 Swap 状态
在调整 Swap 之前,先查看当前 Swap 的使用情况:
sudo swapon --show # 查看已激活的 Swap
free -h # 查看内存和 Swap 使用情况
输出示例:
NAME TYPE SIZE USED PRIO
/swapfile file 1G 0B -2
如果 Swap 太小(如 1GB),可以扩展或创建新的 Swap 文件。
2. 方法一:创建新的 Swap 文件(推荐)
步骤 1:关闭现有 Swap(如果已启用)
sudo swapoff /swapfile # 如果已有 /swapfile
步骤 2:创建新的 Swap 文件(2GB)
sudo fallocate -l 2G /swapfile # 推荐方式
如果 fallocate
不可用,改用 dd
:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
步骤 3:设置权限
sudo chmod 600 /swapfile # 仅 root 可读写
步骤 4:格式化为 Swap
sudo mkswap /swapfile
步骤 5:启用 Swap
sudo swapon /swapfile
步骤 6:永久生效(编辑 /etc/fstab
)
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
验证
free -h # 检查 Swap 是否变为 2GB
3. 方法二:调整现有 Swap 文件大小
如果已有 Swap 文件,可以删除并重建:
sudo swapoff /swapfile # 关闭 Swap
sudo rm /swapfile # 删除旧文件
然后按照 方法一 重新创建 2GB Swap 文件。
4. 如何创建多个 Swap 文件?
如果你需要 多个 Swap 文件(例如 /swapfile1
和 /swapfile2
),可以:
- 创建并启用多个 Swap 文件:
sudo fallocate -l 1G /swapfile1 sudo chmod 600 /swapfile1 sudo mkswap /swapfile1 sudo swapon /swapfile1
sudo fallocate -l 1G /swapfile2 sudo chmod 600 /swapfile2 sudo mkswap /swapfile2 sudo swapon /swapfile2
- 在
/etc/fstab
中添加两行:/swapfile1 none swap sw 0 0 /swapfile2 none swap sw 0 0
- 验证:
swapon --show # 查看所有 Swap 文件 free -h # 检查总 Swap 大小
5. 优化 Swap 性能(可选)
调整 swappiness
(减少 Swap 使用频率)
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
- **
10
** 表示尽量少用 Swap(适用于 SSD)。 - 默认值 通常是
60
(适用于 HDD)。
6. 常见问题
Q1: fallocate
失败怎么办?
改用 dd
命令:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
Q2: /etc/fstab
里的 sw
是什么意思?
sw
表示 swap,即该文件用于 Swap 空间。none
表示 不挂载到目录(Swap 不需要挂载点)。
Q3: 如何删除多余的 Swap 文件?
sudo swapoff /swapfile2 # 关闭 Swap
sudo rm /swapfile2 # 删除文件
然后从 /etc/fstab
删除对应行。
7. 总结
操作 | 命令 |
---|---|
查看 Swap | free -h / swapon --show |
创建 Swap | sudo fallocate -l 2G /swapfile |
启用 Swap | sudo swapon /swapfile |
永久生效 | 编辑 /etc/fstab |
多个 Swap | 创建多个文件并在 /etc/fstab 添加多行 |
优化性能 | 调整 vm.swappiness |
通过本教程,你可以轻松调整 Ubuntu 的 Swap 空间,提高系统稳定性。如果有问题,欢迎在评论区讨论! 🚀
正文完