Linux 如何更改 swapfile 大小

或許你覺得預設的 swapfile 太小,想要加大,沒問題!

什麼是 swapfile

如果你跟我一樣,安裝的時候都選 Use Entire Disk 的話,你可能會注意到,大約 Ubuntu 18.04 開始,預設使用 swapfile 而不是原本的 SWAP 分割區。

$ cat /proc/swaps
Filename        Type    Size    Used    Priority
/swap.img       file    2097148 0       -2

相對應的 fstab 也變得不一樣:

# <file system>		<mount point>	<type>	<options>	<dump>	<pass>
UUID=1b734262-e44d-45c3-ace0-48e6ff23e407 / ext4 defaults 0 0
/swap.img	none	swap	sw	0	0

根據這篇文章所述,多數現在的電腦都搭載相當大量的系統記憶體,所以分配一個專用的空間給 SWAP 來使用,實在是有點過於浪費。而且需要變動 SWAP 大小的時候也必須移動分割區,實在是個大工程(風險先不提的話)。

動工吧!

在開始之前,先下個 free 指定,檢查一下現在的 記憶體 和 SWAP 大小(使用 -h 自動轉換成容易閱讀的單位)

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G         98M        1.6G        944K        242M        1.7G
Swap:          2.0G          0B        2.0G

接下來,先把 swapfile 關掉

$ swapoff /swap.img

然後建立新的 swapfile

$ rm /swap.img                    # 刪掉舊的
$ sudo fallocate -l 1G /swap.img  # 建立新的
$ ls -lh /swap.img                # 顯示資訊
-rw-r--r-- 1 root root 1.0G Jun  9 16:06 /swap.img

改權限

$ sudo chmod 600 /swap.img        # 更改權限
$ ls -lh /swap.img                # 顯示資訊
-rw------- 1 root root 1.0G Jun  9 16:06 /swap.img

格式化

sudo mkswap /swap.img

啟用 swap.img

sudo swapon /swap.img

檢查一下

$ cat /proc/swaps
Filename        Type    Size    Used    Priority
/swap.img       file    1048572 0       -2

設定 /etc/fstab(如果本來沒有的話),請新增下面那一行

/swap.img none swap sw 0 0

參考資料

發表迴響