項目 widget-area-1 尚未註冊或是沒有一個 view.php 檔案.
項目 widget-area-1 尚未註冊或是沒有一個 view.php 檔案.
項目 search-input 尚未註冊或是沒有一個 view.php 檔案.

【Linux 系統控制 #3】Linux 增加 swap 的虛擬記憶體空間 (updated: 2023/12/16)

前言

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

Reference