Swap(交换分区/文件)是Linux系统的虚拟内存空间,当物理内存(RAM)不足时,系统会将闲置内存数据暂存至Swap空间,以缓解内存压力。其本质是将硬盘的一部分空间模拟为内存,但访问速度远低于物理内存(尤其是机械硬盘)。合理配置Swap可提升系统稳定性,避免因内存耗尽导致的进程崩溃或系统死机。
在配置前,需先确认系统现有Swap情况,常用命令如下:
free -h(以人类可读格式显示,如G、M)或free -m(以MB为单位)。swapon --show(列出已启用的Swap分区/文件及优先级)。top或htop(动态监控工具,包含Swap使用率)。适用于需要固定大小、高性能Swap的场景(如服务器长期稳定运行),步骤如下:
使用fdisk工具在目标磁盘上创建新分区(以/dev/sdb为例):
fdisk /dev/sdb
n创建新分区,选择分区类型(主分区p或逻辑分区l),设置分区大小(如+1G表示1GB)。t修改分区类型,输入82(Linux Swap类型)。w保存并退出,此时分区尚未生效,需执行partprobe /dev/sdb让内核识别新分区。使用mkswap命令将分区格式化为Swap空间(假设分区为/dev/sdb1):
mkswap /dev/sdb1
执行后会显示Swap分区的UUID及大小。
使用swapon命令激活分区:
swapon /dev/sdb1
可通过free -h验证Swap是否启用。
编辑/etc/fstab文件,添加以下内容(替换为实际分区路径):
/dev/sdb1 swap swap defaults 0 0
保存后,系统重启时会自动启用该Swap分区。
适用于动态调整大小、无额外磁盘分区的场景(如云服务器、内存临时不足),步骤如下:
使用fallocate(快速)或dd(通用)命令创建指定大小的文件(以4GB为例):
sudo fallocate -l 4G /swapfile # 推荐,速度快
# 或
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 # 通用,速度慢
注:
bs为块大小(如1M),count为块数量(bs*count=文件大小)。
Swap文件需限制为root专属读写,防止普通用户篡改:
sudo chmod 600 /swapfile
使用mkswap命令将文件格式化为Swap空间:
sudo mkswap /swapfile
使用swapon命令激活文件:
sudo swapon /swapfile
编辑/etc/fstab文件,添加以下内容:
/swapfile none swap sw 0 0
保存后,系统重启时会自动启用该Swap文件。
Swap大小需根据物理内存大小和应用场景调整,常见建议如下:
swappiness是控制内核使用Swap积极程度的参数,取值范围为0-100:
sudo sysctl vm.swappiness=30 # 设置为30(默认60)
/etc/sysctl.conf文件,添加以下内容:vm.swappiness=30
执行sudo sysctl -p使配置生效。若需移除Swap,需先禁用再删除,步骤如下:
sudo swapoff /dev/sdb1 # 删除分区
# 或
sudo swapoff /swapfile # 删除文件
/etc/fstab中删除对应的Swap分区行。/etc/fstab中的配置:sudo rm /swapfile
sudo sed -i '/\/swapfile/d' /etc/fstab # 删除包含/swapfile的行
swappiness=0),提升系统响应速度。