一、什么是 SWAP?
SWAP 是一种虚拟内存机制,当物理内存不足时,Linux 内核会将一部分数据暂时移出到硬盘上的一个特殊区域,这个区域就是 SWAP 空间。SWAP 可以是硬盘上的一个文件或一个专用的分区。
二、SWAP 的作用
- 内存不足时的扩展:当系统的物理内存被占满,SWAP 可以作为额外的内存空间。
- 进程休眠:当某个进程暂时不需要执行但又不能被完全删除时,其内存内容可以被移到 SWAP 中,释放物理内存给更活跃的进程使用。
- 内存管理辅助:操作系统可以利用 SWAP 进行内存页的换入换出操作,优化内存使用效率。
三、SWAP 的配置方法
- 创建 SWAP 文件
决定 SWAP 文件的大小,可以根据物理内存和实际用途来考虑。如果按照物理内存考虑的话,可以参考下面的建议
小于 2GB 的物理内存:建议 SWAP 空间的大小至少是物理内存的两倍。
2GB 至 8GB 的物理内存:SWAP 空间的大小可以设置为物理内存的 1.5 倍。
大于 8GB 的物理内存:SWAP 空间的大小通常设置为物理内存的大小,或者更小一些,例如 4GB 或 8GB。
例如创建1G的空间
建议方式(速度快)
$ fallocate -l 1G /swapfile
或者使用 dd
$ dd if=/dev/zero of=/swapfile bs=1M count=1024
- 设置权限
$ chmod 600 /swapfile
- 格式化
$ mkswap /swapfile
- 启用 SWAP
$ swapon /swapfile
- 设置开机启动
编辑 /etc/fstab
文件,添加以下行以确保 SWAP 在系统启动时自动启用。
/swapfile none swap defaults 0 0
执行以下脚本直接写入更方便
$ echo "/swapfile none swap defaults 0 0" >> /etc/fstab
四、调整 SWAP 使用策略
通过调整 /proc/sys/vm/swappiness 文件中的值,可以控制 SWAP 的使用倾向。值范围是 0 到 100。
该参数的含义可以理解为 “内存空间剩余多少时,开始使用swap”
- 查看该值
$ cat /proc/sys/vm/swappiness
- 临时调整,重启失效
$ sysctl vm.swappiness=10
- 永久调整
编辑 /etc/sysctl.conf
, 添加或修改 vm.swappiness = 10
,然后执行以下命令使更改生效即可
$ sysctl -p
五、修改SWAP 的大小
可以先取消挂载,然后删除文件后重新创建,重新挂载即可。
- 取消挂载
$ swapoff /swapfile
网友评论