FreeBSD 10添加Swap文件

原由

最近在使用Vultr的VPS。這家VPS提供了我喜歡的FreeBSD 10.1。而後直接部署了個人代理程序,開心的進行了yutube的觀看。可是好戲不長,發現代理及其不穩定常常OOM,一開始覺得是本身代碼的問題,各類跟蹤和分析發現沒有任何問題,內存消耗很是正常。spa

發現問題

有一天爲了調試,以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操做系統設計和實現>>,找到啓動過程那一章。code

從該章節中發現,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
相關文章
相關標籤/搜索