FreeBSD 10添加Swap文件

起因

最近在使用Vultr的VPS。这家VPS提供了我喜欢的FreeBSD 10.1。然后直接部署了我的代理程序,开心的进行了yutube的观看。但是好戏不长,发现代理及其不稳定经常OOM,一开始以为是自己代码的问题,各种跟踪和分析发现没有任何问题,内存消耗非常正常。

发现问题

有一天为了调试,以console模式启动,竟然也被系统杀掉了。仔细看了下杀掉的原因是out of swap space,为什么是out of swap space呢?难道是swap空间不足,用了swapctl -s去查看了下,swap空间竟然是0,我瞬间就无语了。原来该VPS供应商的FreeBSD镜像默认不提供swap空间。

解决方法-步骤一

中规中矩的照着文档做了一遍

cd /
dd if=/dev/zero of=swapfile bs=1024 count=2076672
chmod 0600 swapfile
echo "md0 none	swap sw,file=/swapfile 0 0" >> /etc/fstab
swapon -aq

OK,看起来万事大吉了,让我们重启下。好了问题来了,当我重启结束后,神奇的发现swap没挂上。好吧,难道不能自动挂载?让我来手动挂载一次吧,结果告诉我md0是只读文件系统无法挂载,这什么情况?

解决方法-步骤二

此时此刻我的内心一万头xxx马飞奔而过,难道我做错什么了,又查看了下文档,毫无问题。正在走头无路的时候,突然在想,如果FreeBSD文档的作者如果这么做成功了,我和他们的差别在何处。

再次仔细观察,作者放在了/usr目录下,为什么呢?迅速翻出神作<<FreeBSD操作系统设计和实现>>,找到启动过程那一章。

从该章节中发现,FreeBSD的loader是用只读模式挂载根分区的,然后Kernel接管后会将分区用读写模式重新挂载根分区。那么好了,我们的md0在根分区还是只读的模式的时候就被挂载上去了,当然是不可写的。好了问题找到了,怎么解决呢?在看了fstab和mount的文档后,发现有个参数late,就是不理会mount -a的操作请求而是等到mount -l的操作请求发出后才将带有late参数的分区加载上去。而mount -l的执行时机是在Kernel接管系统并重新挂载根分区后。

我们只需要修改/etc/fstab文件,修改md0项

md0 none swap sw,file=/swapfile,late 0 0



转载于:https://my.oschina.net/u/236698/blog/473581

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值