前言
swap為虛擬記憶體,當memory不足時,我們可以暫時使用swap空間作為memory使用。
我們可以自己決定要分配多少的 swap memory 給系統。
查看目前系統的 swap 記憶體大小
swapon -s
# 或者,可以使用 top 或安裝 htop 來看目前的 swap 記憶體大小
top
htop
查看目前系統磁碟空間 (剩餘的磁碟大小)
df -h
建立好 swapfile 檔案,並指定要分配多少記憶體大小給他,啟動 swap 記憶體
方法一:fallocate (速度較快)
fallocate 比較快,相比 dd 少了寫入的動作
- 下面以建立 8G 的記憶體作為示範 ( 8G 可自行更改 )
sudo swapoff -a # turn off virtual memory
sudo fallocate -l 16G /swapfile # 16G swap
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile # turn on virtual memory
free -h
方法二:dd (速度較慢,但處理較乾淨)
這個命令使用 dd 來創建一個 64 GB 的文件,
通過從 /dev/zero 讀取數據並寫入 /swapfile 來完成
「bs=1G count=64 」,指的是每個塊的大小被設置為 1 GB,總共複製 64 次。
dd 因為有實際內容填充,因此速度較慢,但處理的會比 fallocate 相對乾淨,
但效果都是一樣的,因此怎麼選擇就看個人。
sudo swapoff -a # turn off virtual memory
sudo dd if=/dev/zero of=/swapfile bs=1G count=16 # 16 = 16G swap, swap size = bs*count
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile # turn on virtual memory
free -h
可能會碰到的問題:fallocate: fallocate failed: Text file busy
表示目前的 swap 記憶體正在使用中,需要先關閉swap記憶體
swapoff -a # turn off virtual memory
掛載 /etc/fstab ,使開機能夠自動啟動 swap memory
因為我們的設定並不是永久設定,重新開機時設定會消失,
如果想要開機自動啟用 swap memory,我們可以掛載 /etc/fstab
vim /etc/fstab
設定值範例如下
/swapfile swap swap sw 0 0
重要:確認有無正確設定 swap
如果 swap 設定有問題,可能會導致「無法開機」或更嚴重的後果。
- 我們可以用以下執令來確認:
sudo mount -a
- 如果沒有問題,正常來講就不會回傳任何東西。
如果有問題,請再次檢查有沒有哪一個步驟出錯。
有問題的範例:
(這只是隨便舉例,表示沒有設定好內容。)
關閉 swap memory (swapoff)
有時候當 swap memory 使用太多時,可以使用這個指令暫時關閉 swap memory。
系統會自動將 swap memory 使用的內容轉移至 memory,
請確保 memory 剩餘的空間足夠。
sudo swapoff -a
開啟 swap memory (swapon)
sudo swapon /swapfile