通常情况下,FreeBSD云服务器默认不设置swap文件(虚拟内存)。在测试环境中,我们一般不需要关注swap,但是在生产环境中,了解swap文件的运行机制是很有必要的。当某个应用程序开始消耗大量内存时,swap能够提供额外的内存空间,避免系统失控。甚至在正常情况下,FreeBSD也采取积极的内存管理方式。例如,持续运行的应用程序占用的内存将会被交换至swap文件中,以腾出更多内存空间给更有用的程序,如文件系统缓存等。不使用swap的操作系统会导致一些不可预知的问题,即使是配置很高的云服务器,也需要设置swap文件。
1、确认swap文件状态
在设置之前,确认没有swap文件。swapinfo的返回结果应该为空。
# swapinfo
Device 1K-blocks Used Avail Capacity
2、创建swap文件
在创建swap文件之前,首先要决定swap文件的大小。传统的做法是内存的一倍、两倍或者五倍,但是这套规则在云服务器上已经不适用了。如果某台云服务器有16G的内存,我们当然不需要使用32G的硬盘空间来作为swap文件。因此,创建多大的swap文件没有特定的标准,而且swap文件的大小可以随时修改。尤其是使用SSD硬盘时,修改swap文件的大小对于磁盘IO的影响微乎其微。
在这个示例中,我们将创建一个512M的swap文件,路径为/usr/swap0,你可以根据情况调整swap文件的大小和路径。用root身份执行以下脚本。
dd if=/dev/zero of=/usr/swap0 bs=1m count=512
chmod 0600 /usr/swap0
echo "md99 none swap sw,file=/usr/swap0,late 0 0" >> /etc/fstab
swapon -aL
以上脚本先通过dd命令创建了swap文件,然后在/etc/fstab中增加了一行,告诉操作系统在启动时加载swap。swapon -aL命令告诉操作系统激活fstab中的所有swap分区文件。当FreeBSD系统启动时,swap文件就会进入正常加载状态。
3、确认swap文件是否创建成功
仍然使用swapinfo命令查看swap文件的状态。返回结果如下,说明创建成功。
# swapinfo
Device 1K-blocks Used Avail Capacity
/dev/md99 524288 0 524288 0%