Debian 系统虚拟内存(Swap)配置不完全指南

前言

本指南详细介绍在Debian系统中配置虚拟内存(Swap)的流程,包含交换文件(Swap File)的创建、启用、优化和管理方法。


1. 基础检查

1.1 检查当前内存和Swap状态

free -h

输出示例:

              total    used    free    shared    buff/cache    available
Mem:          7.6G    1.2G    5.8G     45M        600M         6.1G
Swap:         2.0G    0B      2.0G

1.2 检查磁盘空间

df -h /

确保根目录有足够空间存放交换文件

2. 创建交换文件

2.1 推荐创建位置

建议直接在根目录创建:

sudo touch /swapfile

2.2 使用dd命令创建(兼容性最好)

sudo dd if=/dev/zero of=/swapfile bs=1M count=4096

参数说明:

  • bs=1M:每次写入1MB
  • count=4096:写入4096次,总计4GB

2.3 使用fallocate创建(速度更快)

sudo fallocate -l 4G /swapfile

3. 配置交换文件

3.1 设置权限

sudo chmod 600 /swapfile

3.2 格式化交换空间

sudo mkswap /swapfile

成功输出示例:

Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
no label, UUID=3a6f2b9d-7b1a-4a3d-9c1b-2f5c6d8e9f0a

4. 启用交换空间

4.1 临时启用

sudo swapon /swapfile

4.2 验证状态

swapon --show
free -h

4.3 永久生效配置

编辑/etc/fstab:

sudo nano /etc/fstab

添加以下内容:

/swapfile none swap sw 0 0

5. 优化配置

5.1 调整swappiness值

echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

5.2 启用zswap压缩(可选)

sudo nano /etc/default/grub

修改GRUB_CMDLINE_LINUX:

GRUB_CMDLINE_LINUX="zswap.enabled=1"

更新grub:

sudo update-grub

6. 管理交换空间

6.1 禁用交换文件

sudo swapoff /swapfile

6.2 删除交换文件

sudo rm /swapfile

记得从/etc/fstab中删除对应行

6.3 调整交换文件大小

  1. 禁用现有交换文件
  2. 删除旧文件
  3. 按需创建新大小的交换文件
  4. 重新启用

7. 高级建议

  1. 大小建议
    • 物理内存 ≤4GB:Swap=2倍内存
    • 物理内存 ≥8GB:Swap=4-8GB足够
  2. 性能优化
    • 优先使用SSD存放交换文件
    • 避免使用网络存储或/tmp目录
  3. 特殊需求
    • 如需休眠功能,建议使用交换分区
    • 生产环境建议监控Swap使用情况

8. 常见问题解答

Q:交换文件和交换分区哪个更好?
A:对于大多数现代系统,交换文件性能足够且更灵活。只有在特殊需求(如休眠)或极高负载环境下才需要交换分区。

Q:swappiness值设为多少合适?
A:SSD建议10-30,机械硬盘建议30-60,具体根据使用场景调整。

Q:如何监控Swap使用情况?

vmstat 1
# 或
cat /proc/swaps

附录:命令速查表

功能 命令
检查内存 free -h
创建交换文件 sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
启用交换 sudo swapon /swapfile
永久生效 echo /swapfile none swap sw 0 0 sudo tee -a /etc/fstab
调整倾向 echo vm.swappiness=10 sudo tee -a /etc/sysctl.conf