Linux系统下创建交换分区(swap)的完整指南
交换分区(swap)是Linux系统中重要的虚拟内存机制,当物理内存(RAM)不足时,系统会将不活跃的内存页交换到磁盘空间。本文将详细介绍在Linux系统中创建和优化交换分区的多种方法。
为什么需要交换分区?
- 内存扩展:当物理内存不足时提供额外的"内存"空间
- 休眠支持:系统休眠(hibernate)需要交换分区保存内存状态
- 内存管理:内核可以将不常用的内存页交换出去
- 系统稳定性:避免内存耗尽导致的程序崩溃
交换分区大小建议
| 物理内存大小 | 建议交换空间 | 休眠时的建议 |
|---|---|---|
| ≤ 2GB | 2倍内存 | 内存大小+√内存大小 |
| 2-8GB | 等于内存大小 | 内存大小+0.5倍内存 |
| 8-64GB | 4GB-0.5倍内存 | 内存大小+0.25倍内存 |
| >64GB | 最小4GB | 内存大小+0.1倍内存 |
方法一:创建专用交换分区
-
准备磁盘空间
使用
fdisk或gparted工具创建一个新分区:sudo fdisk /dev/sdX # 在交互界面中创建新分区,类型设置为82(Linux swap)
-
格式化交换分区
sudo mkswap /dev/sdXn # Xn表示分区号,如sda1
-
启用交换分区
sudo swapon /dev/sdXn
-
永久配置
编辑
/etc/fstab添加以下内容:/dev/sdXn none swap sw 0 0
方法二:使用交换文件
当无法创建新分区时,交换文件是理想的替代方案。
-
创建交换文件
sudo fallocate -l 4G /swapfile # 或者使用dd(较慢但更可靠) sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
-
设置权限
sudo chmod 600 /swapfile
-
格式化并启用
sudo mkswap /swapfile sudo swapon /swapfile
-
永久配置
在
/etc/fstab中添加:/swapfile none swap sw 0 0
交换分区优化技巧
调整swappiness值
控制内核使用交换分区的倾向(0-100):
# 查看当前值 cat /proc/sys/vm/swappiness # 临时修改 sudo sysctl vm.swappiness=10 # 永久修改 echo "vm.swappiness=10" >> /etc/sysctl.conf
多个交换空间的优先级
可以使用pri参数设置优先级(越高越优先):
# 在/etc/fstab中 /swapfile none swap sw,pri=100 0 0 /dev/sdXn none swap sw,pri=50 0 0
常见问题解决
- 交换空间未启用
- 检查
dmesg日志,确认分区/文件有效 - 性能问题
- 考虑使用SSD而非HDD作为交换空间,或增加物理内存
- 交换空间不足
- 可以动态添加新的交换文件而不重启系统
合理配置交换空间对Linux系统性能和稳定性至关重要。根据您的硬件配置和使用场景,可以选择交换分区或交换文件方案。对于现代系统,建议将swappiness设为较低值(如10-30),并优先考虑增加物理内存而非过度依赖交换空间。
