1. 为什么需要Swap交换分区在Ubuntu系统中Swap交换分区相当于Windows中的虚拟内存。当物理内存RAM不足时系统会将部分暂时不用的内存数据转移到硬盘上的Swap分区中从而释放RAM空间供其他程序使用。特别是在以下场景中Swap分区显得尤为重要运行内存密集型应用如视频编辑、3D渲染处理大型数据集如机器学习训练服务器环境运行多个服务物理内存较小的老旧设备注意虽然Swap可以缓解内存压力但硬盘读写速度远低于RAM过度依赖Swap会导致系统性能下降。建议Swap大小一般为物理内存的1-2倍超过这个比例的实际收益会递减。2. 检查现有Swap状态在开始设置前我们需要先确认当前系统的Swap配置情况。打开终端CtrlAltT依次执行以下命令# 查看内存和Swap使用情况 free -h # 查看Swap分区详细信息 swapon --show # 检查所有块设备信息 lsblk典型输出示例total used free shared buff/cache available Mem: 7.7G 2.1G 3.2G 456M 2.4G 4.8G Swap: 2.0G 512M 1.5G NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi ├─sda2 8:2 0 732M 0 part /boot └─sda3 8:3 0 464.6G 0 part /如果Swap行显示为0或者swapon命令没有输出说明当前系统没有激活Swap分区。3. 创建Swap文件的详细步骤3.1 确定Swap文件大小建议的Swap大小取决于你的物理内存和工作负载内存 ≤ 2GBSwap 内存 x 2内存 2-8GBSwap 内存大小内存 8GBSwap 内存 x 0.5例如我的系统有8GB内存计划创建8GB的Swap文件sudo fallocate -l 8G /swapfile实操技巧如果fallocate报错某些文件系统不支持可以使用dd命令替代sudo dd if/dev/zero of/swapfile bs1M count81923.2 设置正确的文件权限Swap文件需要严格的权限设置以确保系统安全sudo chmod 600 /swapfile sudo chown root:root /swapfile3.3 格式化Swap文件将文件格式化为Swap格式sudo mkswap /swapfile成功后会显示类似信息Setting up swapspace version 1, size 8 GiB (8589930496 bytes) no label, UUID3e5a6b7c-8d9f-4a1b-8c3d-2e1f0b6a7c8d3.4 激活Swap文件sudo swapon /swapfile再次运行free -h确认Swap已启用。4. 永久化Swap配置上述设置重启后会失效需要将其加入/etc/fstab文件echo /swapfile none swap sw 0 0 | sudo tee -a /etc/fstab验证fstab配置是否正确sudo mount -a5. 优化Swap性能参数5.1 调整swappiness值swappiness参数0-100控制系统使用Swap的倾向性# 查看当前值默认60 cat /proc/sys/vm/swappiness # 临时设置为更保守的值推荐10-30 sudo sysctl vm.swappiness20 # 永久生效 echo vm.swappiness20 | sudo tee -a /etc/sysctl.conf5.2 调整缓存压力echo vm.vfs_cache_pressure50 | sudo tee -a /etc/sysctl.conf sudo sysctl -p6. 删除Swap文件如需如果需要移除Swap文件按以下步骤操作# 禁用Swap sudo swapoff /swapfile # 删除文件 sudo rm /swapfile # 从fstab中删除对应行 sudo nano /etc/fstab7. 常见问题解决方案7.1 swapon failed: Invalid argument错误可能原因文件系统不支持Swap如FAT32文件创建方式不正确解决方案# 确认文件系统类型 df -Th /swapfile # 使用dd重新创建文件 sudo dd if/dev/zero of/swapfile bs1M count8192 sudo mkswap /swapfile7.2 休眠功能失效如果使用休眠功能Swap大小必须 ≥ 内存大小# 查看当前内存用量 free -h # 重新创建足够大的Swap文件 sudo swapoff /swapfile sudo fallocate -l 16G /swapfile # 假设内存是16G sudo mkswap /swapfile sudo swapon /swapfile7.3 SSD寿命考虑对于SSD用户可以通过以下方式减少Swap写入echo vm.swappiness10 | sudo tee -a /etc/sysctl.conf echo vm.dirty_background_ratio5 | sudo tee -a /etc/sysctl.conf echo vm.dirty_ratio10 | sudo tee -a /etc/sysctl.conf sudo sysctl -p8. 进阶使用独立Swap分区对于长期需要大容量Swap的用户建议创建独立分区使用GParted创建新分区格式化为Swap类型sudo mkswap /dev/sdXn # 替换为实际分区启用分区sudo swapon /dev/sdXn添加到/etc/fstab/dev/sdXn none swap sw 0 0我在服务器环境中发现独立Swap分区的性能通常比Swap文件高15-20%特别是在频繁交换的场景下。但对于大多数桌面用户Swap文件已经足够且更灵活。