Categories: Linux

Linux 增加 Swap 記憶體交換空間檔案教學與範例

介紹如何在 Linux 系統上以指令動態增加 swap 記憶體交換空間檔案,避免記憶體不足造成系統崩潰。

新增記憶體交換空間檔案

fallocate 指令配置一個準備作為記憶體交換空間(swap)的檔案:

# 建立交換空間用的檔案,大小為 1 GB
sudo fallocate -l 1G /swapfile

其中 -l 1G 是用來指定檔案的大小為 1 GB,可以自行更改為需要的大小,例如 256M1T

如果系統上沒有安裝 fallocate 指令,則可改用 dd 指令來配置檔案:

# 建立交換空間用的檔案,大小為 1 GB
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

作為系統的記憶體交換空間,檔案權限要設定為只有 root 才能存取:

# 設定檔案權限
sudo chmod 600 /swapfile

mkswap 指令將檔案設置為記憶體交換空間:

# 將檔案設置為記憶體交換空間(swap)
sudo mkswap /swapfile

swapon 啟用記憶體交換空間:

# 啟用記憶體交換空間
sudo swapon /swapfile

查看目前系統所有的記憶體交換空間使用狀況:

# 查看記憶體交換空間使用狀況
swapon -s

或是使用 free 查看整個系統的記憶體使用狀況:

# 查看記憶體使用狀況
free -h

/proc/meminfo 中有很詳細的記憶體資訊,其中也有包含交換空間的資料:

# 查看記憶體資訊
grep -i swap /proc/meminfo

設定開機自動掛載

若要將 /swapfile 這一個記憶體交換空間檔案設定為開機自動掛載,可以修改 /etc/fstab 設定檔,加入以下設定:

# 自動掛載 /swapfile 記憶體交換空間
/swapfile swap swap defaults 0 0

記憶體交換空間優先度

在 Linux 系統中有一個記憶體交換空間優先度(swappiness),捨設定的數值範圍是 0100,這個數值如果越大,系統就會越傾向使用交換空間,反之如果這個數值越小,系統就會越避免使用交換空間。

這個數值存放在 /proc/sys/vm/swappiness 之中,可以直接查看其數值:

# 查看記憶體交換空間優先度(swappiness)
cat /proc/sys/vm/swappiness
60

若要修改這個數值,可以使用 sysctl 指令:

# 修改記憶體交換空間優先度為 10
sudo sysctl vm.swappiness=10

若要永久更改此設定值,可以將設定值寫在 /etc/sysctl.conf 設定檔之中:

# 設定記憶體交換空間優先度為 10
vm.swappiness=10

移除記憶體交換空間檔案

若要移除記憶體交換空間檔案,首先以 swapoff 停用記憶體交換空間:

# 停用記憶體交換空間
sudo swapoff -v /swapfile

若有在 /etc/fstab 中設定開機自動掛載的話,記得把設定移除。

最後刪除這個檔案:

# 刪除檔案
sudo rm /swapfile

這樣就完成移除記憶體交換空間檔案了。

參考資料:LINUX 技術手札LinuxizenixCraft

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

10 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

10 個月 ago