Ubuntu如何手動新增虛擬記憶體(swap)
虛擬記憶體,虛擬,簡而言之,就不是真的記憶體,是取用硬碟的一部分空間來當作記憶體使用,記憶體不敷使用時才輪到他,所以另一種說法是"備用"的記憶體;在以往傳統硬碟的速度都較實體記憶體要慢,使用虛擬記憶體速度也不如一般記憶體,充其量只是在偶爾使用超過記憶體容量時,暫時借用一下硬碟讓工作可以繼續(如果經常不足,電腦該多加條記憶體了)。
不過在技術進步的現代,硬體的成本大量降低,虛擬記憶體的使用機會已經幾近於零,一般電腦已經鮮少在設定虛擬記憶體,所以很多人都會跟你說不需要使用這功能多佔用硬碟空間,因為做為虛擬記憶體會將空間扣除,保留給系統使用。
但是情形換到網站伺服器就不一樣了,網站伺服器經常會因用途考量低成本,等到發現資源不足時才增加資源;但記憶體不足,在增加資源之前,不是系統當機(當機自動重開機可能還好),就是遇到記憶體滿了,系統停止mysql或是php,網站就掛了,反而是更加麻煩。
所以在網站伺服器建議一個做法是,反正小型網站伺服器硬碟使用量很低,不妨移出部分空間給虛擬記憶體(swap)使用,再說很多虛擬網站伺服器都是用SSD(固態式硬碟),虛擬記憶體的速度就跟記憶體一樣快。
一般設定虛擬記憶體,最好的時機就是建立主機(安裝系統)時,最簡單。
但如果主機都已經上線工作了,該如何修改設定呢?
在這裡對Ubuntu linux系統介紹設定的方法,只要幾個指令就可設定完成。
1. 切割4GB空間做為swap使用。
指令 |
sudo fallocate -l 4G /swapfile |
4G:可視個人需求修改
/swapfile:做為swap使用的檔案存放路徑,可修改
這時你的硬碟空間就已被扣除4G保留為此檔案,做為虛擬記憶體使用。
不過這時只是新增了一個容量4G大的檔案而已,系統並不知道要用他來做swap。
2. 告知系統使用此檔案,啟用swap功能。
指令 |
sudo chmod 600 /swapfile
sudo mkswap /swapfile sudo swapon /swapfile |
2.1.為了系統安全考量,將這個檔案權限修改為只有root可讀寫。
2.2.mkswap,告訴系統將此檔案做為swap使用。
2.3.swapon,啟用swap。
到這裡swap就啟用完成了,我們有很多方法可以來檢視這4G的空間是否真的被啟用了(htop, top)。不過必須注意一點,這些指令只是在"這次開機"的過程中生效而已。
3. 將swap設定為開機自動掛載。
指令 |
sudo vim /etc/fstab
… 開啟檔案,到最後加入此行 /swapfile none swap sw 0 0 |
這樣以後每次重開機就會固定載入這個檔案做為虛擬記憶體使用了。
附註:其實在虛擬網站伺服器都是使用SSD的現在,舉個例,如Linode的Linode 2GB規格,記憶體2G硬碟30G,設定個6G~10G來做虛擬記憶體,就等於你擁有8~12G的記憶體可能還太多了,如果主機有特殊需求使用大量記憶體,可以參考看看這個做法。
參考資料:
How To Add Swap on Ubuntu 14.04
Linux oom-killer kernel: Out of Memory: Killed 問題處理 & 手動增加動態 swap
Cloud Server Plans and Pricing – Linode
更多相關教學,可以訂閱我們的Facebook粉絲專頁,進一步了解更多關於電商或是網站開發的資訊喔!
Comment (1)
Ubuntu 16.04.5 LTS
etc當中沒有fstab