交换分区大小的设置建议值:
内存小于 4GB 时,推荐不少于 2GB 的 swap 空间
内存 4GB~16GB,推荐不少于 4GB 的 swap 空间
内存 16GB~64GB,推荐不少于 8GB 的 swap 空间
内存 64GB~256GB,推荐不少于 16GB 的 swap 空间
创建交换分区需要有一块独立的分区,如果没有多余的分区时,可以用交换分区文件来代替。创建交换文件:
dd if=/dev/zero of=/swap bs=1MB count=8192
或
fallocate -l 8G /swap
验证交换文件大小:
du -sh /swap
改变文件的用户、组以及权限:
chown root:root /swap
chmod 600 /swap
格式化文件为 swap 文件系统:
mkswap -L swap /swap
挂载交换分区:
swapon /swap
查看交换分区:
free -h
编辑 /etc/fstab 文件以便开机自动挂载:
/swap swap swap defaults 0 0
卸载交换分区:
swapoff /swap
内核参数 vm.swappiness 控制换出运行时内存的相对权重,参数值大小对如何使用 swap 分区有很大联系。值越大,表示越积极使用 swap 分区,越小表示越积极使用物理内存。一般系统的默认值 swappiness=60,表示内存使用率超过 100-60=40% 时开始使用交换分区。swappiness=0 的时候表示最大限度使用物理内存,然后才是 swap 空间;swappiness=100 的时候表示积极使用 swap 分区,并把内存上的数据及时搬运到 swap 空间(对于 3.5 以后的内核和 RedHat 2.6.32 之后的内核,设置为 0 会禁止使用 swap,从而引发 out of memory,这种情况可以设置为 1)。查看参数值:
cat /proc/sys/vm/swappiness
临时调整该值:
sysctl vm.swappiness=40
永久调整需编辑 /etc/sysctl.conf 文件,加入如下内容:
vm.swappiness=10
然后加载参数:
sysctl -p
此处评论已关闭