Debian系统中,交换空间可通过交换分区(传统方式,性能更优)或交换文件(灵活易管理)实现。
交换文件配置(推荐新手):
使用fallocate命令快速创建指定大小的交换文件(如2GB),若未安装fallocate,可用dd命令替代:
sudo fallocate -l 2G /swapfile # 创建2GB交换文件
sudo dd if=/dev/zero of=/swapfile bs=1G count=2 # 替代方案(速度较慢)
设置严格的权限(仅root可读写),防止敏感数据泄露:
sudo chmod 600 /swapfile
将文件格式化为交换空间:
sudo mkswap /swapfile
启用交换文件:
sudo swapon /swapfile
交换分区配置(传统方式):
使用fdisk或parted工具创建新分区(如/dev/sdaX),设置分区类型为Linux swap(类型代码82);格式化分区:
sudo mkswap /dev/sdaX
启用分区:
sudo swapon /dev/sdaX
为确保系统重启后自动加载交换空间,需将配置添加到/etc/fstab文件(系统启动时自动挂载的配置文件)。
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
blkid命令查看UUID):/dev/sdaX none swap sw 0 0 # 设备名方式
UUID=xxxx-xxxx-xxxx-xxxx none swap sw 0 0 # UUID方式(推荐)
使用以下命令检查交换空间是否启用成功:
sudo swapon --show # 显示当前启用的交换空间详情(大小、类型、优先级)
free -h # 查看内存与交换空间总使用情况(更直观)
swappiness参数控制内核使用交换空间的倾向,取值范围为0-100(默认60)。
sudo sysctl vm.swappiness=10 # 推荐值:10-20(适用于桌面/服务器,减少磁盘IO)
/etc/sysctl.conf文件,添加或修改以下行:vm.swappiness=10
应用更改:sudo sysctl -p
当系统有多个交换空间(如多个交换分区或交换文件)时,pri参数可设置优先级(数值越大,优先级越高)。系统会优先使用高优先级的交换空间,直到其耗尽后再使用低优先级的。
swapon命令的-p选项设置优先级(如设置为10):sudo swapoff /dev/sdaX # 先禁用
sudo swapon -p 10 /dev/sdaX # 再启用并设置优先级
/etc/fstab文件,在交换空间条目中添加pri=10选项:/dev/sdaX none swap sw,pri=10 0 0
重新挂载所有交换空间:sudo swapoff -a && sudo swapon -a
LVM(逻辑卷管理)可动态调整交换分区大小,无需重新格式化磁盘,适合需要频繁扩展内存的场景。
sudo pvcreate /dev/sdb1 # 替换为实际磁盘分区
sudo vgcreate vg_swap /dev/sdb1
sudo lvcreate -L 2G -n lv_swap vg_swap # 创建2GB逻辑卷
sudo mkswap /dev/vg_swap/lv_swap
sudo swapon /dev/vg_swap/lv_swap
/etc/fstab(使用逻辑卷路径):/dev/vg_swap/lv_swap none swap sw 0 0
定期监控交换空间使用情况,及时调整策略:
free -h # 显示内存与交换空间总量、已用、空闲
swapon --show # 显示交换空间详情(大小、类型、优先级)
top或htop命令(需安装),查看Swap行的使用率;或使用vmstat命令查看页面交换频率(si/so列,数值过高表示频繁交换):vmstat 1 # 每秒刷新一次,关注si(swap in)、so(swap out)列
扩展交换空间:
/swapfile2,2GB):sudo fallocate -l 2G /swapfile2
sudo chmod 600 /swapfile2
sudo mkswap /swapfile2
sudo swapon /swapfile2
/etc/fstab:echo '/swapfile2 none swap sw 0 0' | sudo tee -a /etc/fstab
收缩交换空间(谨慎操作,可能导致系统不稳定):
sudo swapoff /swapfile2
sudo truncate -s 1G /swapfile2
sudo mkswap /swapfile2
sudo swapon /swapfile2
/etc/fstab(修改大小)。减少系统内存占用,从而降低对交换空间的依赖:
systemctl命令查看并停止不必要的服务(如cups打印服务、bluetooth蓝牙服务等):sudo systemctl list-unit-files --state=enabled # 查看所有启用服务
sudo systemctl stop cups # 停止cups服务
sudo systemctl disable cups # 禁止开机启动
swappiness设置为较低值(如10-20),并确保物理内存充足。/etc/fstab文件前,务必备份重要数据(如/etc/fstab的备份:sudo cp /etc/fstab /etc/fstab.bak),防止操作失误导致系统无法启动。swappiness值(如20-30),因为SSD的随机读写性能较好,频繁交换对性能影响较小。