[Linux][Swap] 虛擬記憶體與 Swap 分頁指南

Intro

Wiki - 分頁 Swap

常見的應用情境是:在低規格的 Linux 開發環境中,安裝套件時若因記憶體不足導致失敗,可透過暫時設定 Swap 檔案,模擬額外記憶體來解決問題。


查詢與卸載

查看 Swap 狀態:

$ swapon -s

Filename                Type       Size        Used        Priority
/dev/vdb                partition  4194300     0           -2
/swapfile                file         20971516   0           -3

卸載 Swap:

# Partition
$ sudo swapoff /dev/hdb2

# File
$ sudo swapoff /swapfile

增加虛擬記憶體

這裡提供檔案與分割區兩種方式指南

透過建立檔案設定 Swap

主要透過swaponswapoff指令來啟用或停用 Swap,常見做法是建立一個檔案,並將其設為 Swap 空間,以使用硬碟來模擬額外記憶體。

  1. 先建立一個想要配給 Swap 容量的檔案於硬碟分割區,可以透過fallocate指令:

    $ sudo fallocate -l 20G /swapfile
  2. 格式化此檔案為Swap file:

    $ sudo chmod 600 /swapfile
    $ sudo mkswap /swapfile
    $ sudo swapon /swapfile
  3. 完成後可以使用swapon -s指令確認查看目前使用中的 Swap 狀態

  4. 如要設定自動掛載此 Swap,則可以於/etc/fstab加入設定:

    /swapfile   swap    swap    sw  0   0

透過創建 Swap 分割區來設定 Swap

與使用檔案作為 Swap 空間不同,Swap 分割區是直接在硬碟中劃分一塊專用區域來作為 Swap。這種方法通常會提供更好的效能,適用於需要穩定且高效能的環境。

  1. 創建 Swap 分割區

    使用 fdiskparted 工具來創建 Swap 分割區。例如,使用 fdisk

    sudo fdisk /dev/sda

    fdisk 中,選擇創建一個新的分割區,並設置分割區類型為 Linux swap(代碼 82)。完成後保存並退出。

  2. 格式化為 Swap 分割區

    使用 mkswap 格式化新創建的分割區:

    sudo mkswap /dev/sdaX

    其中 /dev/sdaX 是你新創建的分割區名稱。

  3. 啟用 Swap 分割區

    使用 swapon 指令啟用該分割區:

    sudo swapon /dev/sdaX
  4. 自動啟用 Swap 分割區

    為了讓 Swap 分割區在開機時自動啟用,將它加入 /etc/fstab

    /dev/sdaX none swap sw 0 0

    保存並退出。

Leave a Reply

Your email address will not be published. Required fields are marked *