Vultr 中添加 SWAP

如何在 Vultr 中添加 SWAP 交換分區

Written by

Linux 中 SWAP (交換分區),指的是類似於 Windows 的虛擬記憶體,就是當記憶體不足的時候,把一部分硬碟空間虛擬成記憶體使用,從而解決突發的記憶體容量不足的情況。

內容目錄:

  • 檢查 swap 空間
  • 檢查文件系統
  • 創建 swap
  • 格式化並啟動 swap
  • 啟動 swap

而這是一篇舊文章了,之前發表在 support 論壇裡,這個論壇已經沒有功能了,所以將之關閉,裡面一些文章移轉到這個網誌來。

Vultr 和 DigitalOcean 的 VPS 主機在開新方案後,預設置是不會有 swap 交換分區,不像 Linode 在管理後台 Rebuild 時,就可以設置 swap 分區大小。

swap 要設置多大,可以依以你的 VPS RAM 來判斷。
例如:
1GB RAM 那你的 swap 交換分區就可以設置 1024MB,Vultr 768RM 方案,swap 可以設置 512MB,一般最大可以設置到 8GM。

不過我也碰過老外工程師設置過獨服 swap 交換分區 32GB,可能認為我的 HD 不用錢吧 !

如何手動添加 swap 呢? ( CentOS / Ubuntu )

檢查 Swap 空間

在設置 swap 文件之前,有必要先檢查一下系統裡有沒有既存的 swap 文件。

swapon -s

如果返回的信息概要是空的,則表示 swap 文件不存在。

檢查文件系統

在設置 swap 文件之前,同樣有必要檢查一下文件系統,看看是否有足夠的硬碟空間來設置 swap。

df -hal

檢查返回的信息,還剩餘足夠的硬碟空間即可。

創建 swap

下面使用 dd 命令來創建 swap 文件。

dd if=/dev/zero of=/swapfile bs=1024 count=524288

回覆訊息

524288+0 records in
524288+0 records out
536870912 bytes (537 MB, 512 MiB) copied, 2.2845 s, 235 MB/s

格式化並啟動 swap

上面已經創建好 swap 文件,還需要格式化後才能使用。

mkswap /swapfile

回覆訊息

Setting up swapspace version 1, size = 512 MiB (536866816 bytes)
no label, UUID=b247ba10-f7cf-47b7-aa65-f69b2cfcc8fd

啟動 swap

swapon /swapfile

回覆訊息

swapon: /swapfile: insecure permissions 0644, 0600 suggested.

以上步驟做完,再一次運行命令:

swapon -s

回覆訊息

Filename                Type        Size    Used    Priority
/swapfile               file        524284    0     -1

如果要 VPS 主機重啟的時候自動掛載 swap ,那麼還需要修改 fstab 配置,用 vim 打開 / etc / fstab 文件,在其最後添加如下一行:

vi /etc/fstab
/swapfile          swap            swap    defaults        0 0

最後,賦予 swap 文件適當的權限:

chown root:root /swapfile
chmod 0600 /swapfile

同時,我們還可以修改 Linux swap 空間的 swappiness ,降低對硬碟的緩存。

Linux 會使用硬碟的一部分做為 swap 分區,用來進行進程調度。

進程是正在運行的程序,把當前不用的進程調成「等待 ( standby )」,甚至「睡眠 ( sleep )」。

一旦要用,再調成「活動 ( active )」,睡眠的進程就會在 swap 分區,把內存空出來讓給「活動」的進程。

如果記憶體夠大,應當告訴 Linux 不必太多的使用 swap 分區,可以通過修改 swappiness 的參數來設置。

swappiness = 0 的時候表示最大限度使用物理內存,然後才是 swap 空間。

swappiness = 100 的時候表示積極的使用 swap 分區,並且把內存上的數據及時的搬運到 swap 空間裡面。

在 CentOS 中,swappiness 的默認值是 60。

通過以下命令可以看到:

cat /proc/sys/vm/swappiness

返回值 60

我們可以調整 swappiness 的值到一個合適的參數,從而達到最優化使用 swap 的目的。

這裡我們將其設為 10。使用 sysctl 命令:

sysctl vm.swappiness=10

但是這只是臨時性的修改,在你重啟系統後會恢復默認的 60,要永久設置,還需要在 vim 中修改 sysctl.conf:

vi /etc/sysctl.conf

在這個文檔的最後加上這樣一行:

# Search for the vm.swappiness setting.  Uncomment and change it as necessary.
vm.swappiness=10

輸入 :qw,保存退出 vim 。

這樣一來,swap 分區重啟後都會生效了。


補充 swap file 計算方法:

建立 512MB 的 swap,一次讀寫 1024bytes

bs=1024 count=524288 # 1024 * 512M = 524288 block size

or

bs=1M count=4096

hosted by kinsta

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Your Mastodon Instance