Azure 的虚拟机没有提供 Swap 分区,只能使用 Swap 文件代替了,相对于分区来说,Swap 文件多了一层文件系统,效率是有一点损失,但相对于内存不足导致 OOM 来说这点损失不算什么。
使用 dd
创建 Swap 文件:
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
设置文件的权限:
$ sudo chmod 0600 /swapfile
编辑 /etc/fstab
,添加下面这行:
md11 none swap sw,file=/swapfile,late 0 0
这行的配置是把 /swapfile
mount 到 /dev/md11
,late
标志是必须的,表示 mount 完成之后再加载 swap 分区。
等价于系统启动时自动执行这两行命令:
$ sudo mdconfig -a -t vnode -f /swapfile -u 11
$ sudo swapon /dev/md11
另外,和 Swap 相关的一些 sysctl 配置:
vm.swap_enabled=1
vm.swap_idle_enabled=1
默认 swap_idle_enabled
的值是 0
,按需开启。
参考: