返回部落格

在 Ubuntu 20.04 上新增置換空間:教學

在 Ubuntu 20.04 上新增置換空間:教學

為您的伺服器添加交換空間是彌補記憶體不足錯誤的絕佳選擇。Linux 允許使用者在系統的 RAM 已滿時,在系統中添加交換空間。當您建立一個專用的空間分割區時,您將能讓實體記憶體順暢運行,而無需過多擔心磁碟空間不足的問題。

交換空間概述

Linux 中的交換空間是機器 虛擬記憶體 的一部分,在實體記憶體空間耗盡時使用。特別是在運行大型程式或應用程式而需要額外記憶體時,交換空間是暫存非作用中記憶體分頁的理想選擇。建立交換空間允許使用者在運行大型程式時儲存資料,從而減少應用程式崩潰。這意味著如果系統需要更多記憶體資源且 RAM 已滿,記憶體中所有非作用中的分頁都會被轉移到交換空間,使程式能夠不中斷地運行。

我需要多少交換空間?

交換空間的大小取決於多個因素。其中包括可用的 RAM、承受的負載,以及系統是否需要支援休眠功能(暫停至磁碟)。請參閱下表,根據 RAM 中的可用空間來檢查建議的交換空間:

序號

可用 RAM 空間

建議交換空間

1.

1GB

1GB

2.

2GB

1GB

3.

3GB

2GB

4.

4GB

2GB

5.

5GB

2GB

6.

6GB

2GB

7.

8GB

3GB

在本教學中,我們將 引導您完成在 Ubuntu 20.04 上添加交換空間的步驟。讓我們開始吧!

先決條件

要繼續進行本教學,您需要:

步驟 1:檢查交換空間資訊

交換空間的大小取決於系統的 RAM。因此,在建立交換空間之前,必須先檢查系統中是否有可用的交換空間。輸入以下指令以檢查系統是否已設定任何交換空間:

Swap Space image 1

如果有顯示輸出,表示您的系統中有空間可以建立交換空間。然而,如果沒有輸出,則表示沒有足夠的可用空間來添加交換空間。

使用 free 工具來驗證沒有啟用的交換空間:

您將會看到輸出中有一行空值的交換空間列:

Swap Space image 2

步驟 2:檢查硬碟分割區可用空間

與檢查系統可用性類似,現在讓我們檢查目前的磁碟使用情況,以確保我們有足夠的空間。使用 df 指令來檢查硬碟分割區的可用空間:

/Mounted on 欄位中的裝置是我們的磁碟,它是 11% 空閒的。您將會看到輸出:

Swap Space image 3

在檢查系統需求之後,讓我們繼續並在我們的檔案系統上建立一個交換檔案。

步驟 3:建立交換檔案

要在我們的檔案系統上建立交換檔案,請使用 swapfile 於根 (/) 目錄中,並使用 fallocate 程式。分配檔案大小取決於您的需求。為了保持本教學簡單且易於理解,我們將建立一個 1G 檔案並分配 1G 的 RAM。使用 sudo  指令來建立交換檔案:

接下來,輸入此指令以驗證保留的空間:

您將會看到輸出:Swap Space image 3

現在我們已經在系統中建立了交換空間,讓我們在下一步中啟用它。

步驟 4:啟用交換檔案

一旦我們有了合適的大小,就讓我們將其轉換為交換空間。出於安全原因,至關重要的是讓我們的檔案僅能由 root 使用者存取,並防止一般使用者存取。我們將添加限制,以便具有 root 權限的使用者可以檢視該檔案並讀取其內容。使用以下 root 指令使該檔案僅能由 root 使用者存取:

然後,使用 ls 指令來驗證變更:

如您所見,只有 root 使用者啟用了讀取和寫入標記:

Swap Space image 4

之後,將該檔案標記為交換空間:

您將會看到輸出:

Swap Space image 5

之後,啟用 swap 檔案並允許我們的系統開始使用它:

接下來,驗證 swap 是否可用:

您將會看到以下輸出:

Swap Space image 6

正如我們在 步驟 1 中所做的,我們將再次檢查 free 工具的空間:

您將會看到以下輸出:

Swap Space image 7

我們的 swap 已成功設置,操作系統將在需要時開始使用它。在下一步中,我們將使 swap 檔案永久生效。

步驟 5:使 Swap 檔案永久生效

預設情況下,每當我們重新啟動時,伺服器不會自動保留 swap 設定。為了更改預設設定並確保安全,我們將把 swap 檔案添加到我們的 /etc/fstab 檔案中。使用 sudo 指令來備份 /etc/fstab 檔案:

接下來,將 swap 檔案資訊添加到您的 /etc/fstab 檔案末尾,輸入:

之後,讓我們檢視一些設定並進行修改,以便調整我們的 swap 空間。

步驟 6:修改 Swap 設定

在此步驟中,我們將配置設定並進行一些修改。讓我們調整 swappiness 屬性並更改快取壓力。

  • 調整 Swappiness 屬性

這個 swappiness 參數是一個可調節的核心參數。它改變了交換出執行階段記憶體之間的平衡,並負責將數據從 RAM 交換到 swap 空間。此參數值以百分比表示,範圍從 0 到 100。

這個 vm.swappiness 值對系統 swappiness 的行為有直接影響。 vm.swappiness 越高,系統進行交換的次數就越多,反之亦然。如果該值接近於零,核心將不會交換數據,這可能會導致效能下降。允許您的系統不依賴 swap 是提高其效能並獲得強大響應能力的好方法。

或者, vm.swappiness 越接近 100,系統就會嘗試將更多數據放入 swap 中,而減少在實體記憶體中的數據。與低到中等的 vm.swappiness 值不同,當有大量數據在 RAM 中頻繁換入換出時,高系統交換會產生非常不良的影響。

輸入以下指令檢查目前的 swappiness 值:

您將會看到以下輸出:

Swap Space image 8

您也可以使用 sysctl 指令來設定您選擇的 swappiness。輸入以下指令將 swappiness 值設定為 15:

您將會看到以下輸出:

output

在系統重新啟動之前,設定將保持不變。將該行添加到我們的 /etc/sysctl.conf 檔案中,以便在重新啟動時自動設定該值:

您可以在底部添加以下程式碼:

code

然後,儲存並關閉檔案。

  • 調整快取壓力

接下來,我們將修改 vfs_cache_pressure,這將處理 inodedentry 資訊(相對於其他數據)。這些 vfs_cache_pressure 設定 還控制了核心回收用於快取目錄的記憶體的傾向。再次瀏覽 proc 檔案系統以檢查目前的值:

您將會看到以下輸出:

output 2

由於配置已經完成,我們的系統將從快取中清除 inode 資訊。讓我們將 sysctl vm.vfs_cache_pressure 設定為更穩定的設定,如下所示:

您將會看到以下輸出:

Swap Space image 9

與我們在 swappiness 設定中所做的類似,我們也可以在這裡更改配置:

在底部插入一行,指出您建立的新值:

Swap Space image 10

最後,儲存並關閉檔案。

結論

您可以將交換空間新增為專用的交換分割區、交換檔案,或是兩者的組合。您可以建立交換空間並利用其優勢來流暢地執行應用程式,而無需過度擔心記憶體不足的警告。雖然在記憶體空間有限的系統中建立交換空間是一項額外的優勢,但絕不能將其視為增加更多 RAM 空間的替代方案。請記住,交換空間位於硬碟上,因此與實體記憶體相比,您可能會遇到稍微緩慢的存取時間。

以下是更多關於 我們部落格 的教學課程,將協助您開始使用您的 Ubuntu 伺服器:

祝您運算愉快!

author

Hark Labs

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的創意設計師,專注於透過傳統與創新行銷渠道建立一致的企業形象。他擅長將藝術願景與策略行銷相融合,創造具有影響力的品牌敘事。

留言

目前尚無留言。成為第一個留言的人吧。