Swap 分区(交换分区)相当于虚拟内存,在物理内存(RAM)不够用时,系统会将一部分磁盘空间作为虚拟内存使用。主要作用如下:
Swap 分区的大小通常与系统 RAM 相关,推荐配置如下:
物理内存(RAM) | Swap 推荐大小(桌面系统) | Swap 推荐大小(服务器) |
---|---|---|
小于 2GB | 物理内存的 2 倍 | 物理内存的 2 倍 |
2GB - 8GB | 物理内存的 1.5 倍 | 物理内存的 1~2 倍 |
8GB - 16GB | 物理内存的 1 倍 | 物理内存的 1~2 倍 |
16GB 以上 | 4GB~8GB | 物理内存的 0.5~1 倍 |
休眠模式 | 至少等于 RAM 大小 | 至少等于 RAM 大小 |
如果服务器是高性能数据库或高 I/O 负载应用(如 NoSQL),尽量减少 Swap,以避免磁盘 I/O 影响性能。
如果系统安装时没有创建 Swap 分区,可以手动创建:
# 查看当前分区信息
lsblk
fdisk -l
# 创建新的 Swap 分区(假设 /dev/sdb1 为空闲分区)
mkswap /dev/sdb1 # 格式化为 swap
swapon /dev/sdb1 # 启用 swap
# 持久化配置(编辑 /etc/fstab)
echo '/dev/sdb1 swap swap defaults 0 0' >> /etc/fstab
如果磁盘已经分区完成,但需要增加 Swap,可以使用 Swap 文件:
# 创建 2GB 的 Swap 文件
sudo fallocate -l 2G /swapfile # 也可以用 dd 命令: sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
sudo chmod 600 /swapfile # 确保安全性
sudo mkswap /swapfile # 创建 Swap 文件
sudo swapon /swapfile # 启用 Swap
# 持久化配置(编辑 /etc/fstab)
echo '/swapfile swap swap defaults 0 0' >> /etc/fstab
Linux 通过 swappiness 参数控制 Swap 交换策略,值范围是 0~100:
查看当前 swappiness 值:
cat /proc/sys/vm/swappiness
临时修改(重启后失效):
sudo sysctl vm.swappiness=10
永久修改(重启后生效):
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p # 使修改生效
命令 | 作用 |
---|---|
swapon -s |
查看当前 Swap 使用情况 |
free -m |
显示内存和 Swap 使用情况 |
swapoff /dev/sdX |
关闭某个 Swap 分区 |
swapoff -a |
关闭所有 Swap |
swapon -a |
启用所有 Swap |
`cat /proc/meminfo | grep Swap` |
增加 Swap 分区的方式主要有两种:
如果你当前的 Swap 是一个独立分区,并且磁盘有剩余空间,可以按照以下步骤进行扩展。
先检查 Swap 设备:
swapon --show
然后关闭当前 Swap:
sudo swapoff -a
查看磁盘信息:
sudo fdisk -l
如果你有未分配的磁盘空间,可以使用 fdisk
或 parted
进行扩展:
sudo fdisk /dev/sdX # 选择你的 Swap 分区所在磁盘
删除现有的 Swap 分区并重新创建一个更大的分区(数据会丢失,谨慎操作)。
使用 resize2fs
(对于某些文件系统,如 ext4)或 parted
命令进行调整。
sudo mkswap /dev/sdXn # 重新格式化 Swap 分区(例如 /dev/sda3)
sudo swapon /dev/sdXn # 重新启用 Swap
编辑 /etc/fstab
,确保 Swap 分区挂载信息正确:
/dev/sdXn swap swap defaults 0 0
然后执行:
sudo mount -a
如果你不想修改已有的 Swap 分区,可以直接增加 Swap 文件,这种方法不会影响系统现有分区布局。
free -m
swapon --show
假设你想增加 4GB Swap,执行:
sudo fallocate -l 4G /swapfile # 创建 4GB 空间的 Swap 文件
(如果 fallocate
命令不可用,可以使用 dd
命令)
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 # 创建 4GB 文件
确保只有 root 用户能访问:
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
编辑 /etc/fstab
,添加以下内容:
/swapfile swap swap defaults 0 0
然后执行:
sudo mount -a
检查当前 swappiness
值:
cat /proc/sys/vm/swappiness
如果值较高(如 60),可以降低它(推荐 10~30,减少对 Swap 的依赖):
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
如果需要进一步增加 Swap,可以创建多个 Swap 文件:
sudo fallocate -l 2G /swapfile2
sudo chmod 600 /swapfile2
sudo mkswap /swapfile2
sudo swapon /swapfile2
并添加到 /etc/fstab
:
/swapfile2 swap swap defaults 0 0
free -m # 显示 Swap 总大小
swapon --show # 显示 Swap 设备信息
cat /proc/swaps # 查看 Swap 详细信息
✅ 修改分区(方法 1)
✅ 增加 Swap 文件(方法 2,推荐)