在Ubuntu 18.04上添加交換空間的方法

這篇文章主要介紹了在Ubuntu 18.04上添加交換空間的方法,非常不錯,具有一定的參考借鑑價值,需要的朋友可以參考下

https://www.digitalocean.com/...

如何在Ubuntu 18.04上添加交換空間

Brian Boucheron

本教程的先前版本由Justin Ellingwood編寫

介紹

防範應用程序內存不足錯誤的最簡單方法之一是爲服務器添加一些交換空間。在本指南中,我們將介紹如何將交換文件添加到 Ubuntu 18.04服務器。

警告 :雖然通常建議對使用傳統旋轉硬盤驅動器的系統進行交換,但使用SSD交換可能會導致硬件隨着時間的推移而出現問題。出於這種考慮,我們不建議在任何使用SSD存儲的上啓用交換。這樣做會影響您的底層硬件的可靠性。本指南是爲可能在其他地方使用旋轉磁盤系統的用戶提供的參考。

什麼是交換?

交換是硬盤驅動器上的一個區域,它被指定爲操作系統可以臨時存儲無法再保存在RAM中的數據的位置。基本上,這使您能夠增加服務器在其工作“內存”中保留的信息量,但有一些注意事項。硬盤驅動器上的交換空間將主要用於RAM中不再有足夠空間來保存正在使用的應用程序數據。

寫入磁盤的信息將比RAM中保存的信息慢得多,但操作系統更願意在內存中運行應用程序數據,並使用交換舊數據。總的來說,將交換空間作爲系統RAM耗盡時的後備空間,可以很好地防範具有非SSD存儲的系統上的內存不足異常。

步驟1 - 檢查系統的交換信息

在開始之前,我們可以檢查系統是否已經有一些可用的交換空間。可以有多個交換文件或交換分區,但通常一個就足夠了。

我們可以通過鍵入以下內容來查看系統是否已配置任

sudo swapon --show

如果您沒有收到任何輸出,這意味着您的系統當前沒有可用的交換空間。

您可以使用該free實用程序驗證沒有活動交換:

free -h

輸出

total        used        free      shared  buff/cache   available
Mem:           985M         84M        222M        680K        678M        721M
Swap:            0B          0B          0B

正如您在輸出的Swap行中看到的那樣,系統上沒有活動交換。

第2步 - 檢查硬盤驅動器分區上的可用空間

在我們創建交換文件之前,我們將檢查當前的磁盤使用情況,以確保我們有足夠的空間。通過輸入:

df -h

輸出

Filesystem      Size  Used Avail Use% Mounted on
udev            481M     0  481M   0% /dev
tmpfs            99M  656K   98M   1% /run
/dev/vda1        25G  1.4G   23G   6% /
tmpfs           493M     0  493M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           493M     0  493M   0% /sys/fs/cgroup
/dev/vda15      105M  3.4M  102M   4% /boot/efi
tmpfs            99M     0   99M   0% /run/user/1000

在這種情況下/,Mounted on列中的設備是我們的磁盤。在這個例子中我們有足夠的空間(僅使用1.4G)。您的使用可能會有所不同。

雖然對於交換空間的適當大小有很多意見,但這實際上取決於您的個人偏好和您的應用程序要求。通常,等於或加倍系統RAM的量是一個很好的起點。另一個好的經驗法則是,如果您只是將其用作RAM後備,那麼任何超過4G的交換都可能是不必要的。

第3步 - 創建交換文件

現在我們知道了可用的硬盤空間,我們可以在文件系統上創建一個交換文件。我們將swapfile在根(/)目錄中分配我們想要調用的交換大小的文件。

創建交換文件的最佳方法是使用該fallocate程序。此命令立即創建指定大小的文件。

由於我們示例中的服務器具有1G的RAM,因此我們將在本指南中創建1G文件。調整此項以滿足您自己的服務器的需求:

sudo fallocate -l 1G /swapfile

我們可以通過輸入以下內容來驗證是否保留了正確的空間量:

ls -lh /swapfile
-rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

我們的文件創建時留出了正確的空間。

第4步 - 啓用交換文件

現在我們有一個正確大小的文件,我們需要實際將其轉換爲交換空間。

首先,我們需要鎖定文件的權限,以便只有具有root權限的用戶才能讀取內容。這可以防止普通用戶訪問該文件,這會產生嚴重的安全隱患。

通過鍵入以下內容使該文件只能由root訪問:

sudo chmod 600 /swapfile

鍵入以下命令驗證權限更改:

ls -lh /swapfile

輸出

-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

如您所見,只有root用戶啓用了讀寫標誌。

我們現在可以通過輸入以下內容將文件標記爲交換空間

sudo mkswap /swapfile

輸出t

Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

標記文件後,我們可以啓用交換文件,允許我們的系統開始使用它:

sudo swapon /swapfile

輸入以下內容驗證交換是否可用:

sudo swapon --show

輸出

NAME      TYPE  SIZE USED PRIO
/swapfile file 1024M   0B   -2

我們可以free再次檢查該實用程序的輸出以證實我們的發現:

free -h

輸出

total        used        free      shared  buff/cache   available
Mem:           985M         84M        220M        680K        680M        722M
Swap:          1.0G          0B        1.0G

我們的交換已成功設置,我們的操作系統將在必要時開始使用它。

第5步 - 使交換文件永久化

我們最近的更改已啓用當前會話的交換文件。但是,如果我們重新啓動,服務器將不會自動保留交換設置。我們可以通過將交換文件添加到我們的/etc/fstab文件來更改此設置。

/etc/fstab如果出現任何問題,請備份該文件:

sudo cp /etc/fstab /etc/fstab.bak

/etc/fstab鍵入以下內容,將交換文件信息添加到文件末尾:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

接下來,我們將回顧一些我們可以更新的設置以調整我們的交換空間。

第6步 - 調整交換設置

您可以配置一些選項,這些選項會在處理交換時對系統的性能產生影響。

調整Swappiness屬性

該 swappiness 參數配置系統將數據從 RAM 交換到交換空間的頻率。這是介於0和100之間的值,表示百分比。

值接近於零時,除非絕對必要,否則內核不會將數據交換到磁盤。請記住,與交換文件的交互是“昂貴的”,因爲它們比與RAM的交互花費更長的時間,並且它們可能導致性能的顯着降低。告訴系統不要太依賴交換,通常會使您的系統更快。

接近100的值將嘗試將更多數據放入交換中以努力保持更多RAM空間。根據應用程序的內存配置文件或服務器的使用情況,在某些情況下可能會更好。

我們可以通過輸入以下內容來查看當前的 swappiness 值:

cat /proc/sys/vm/swappiness

輸出

對於桌面,swappiness設置爲60並不是一個糟糕的值。對於服務器,您可能希望將其移近0。

我們可以使用該sysctl命令將swappiness設置爲不同的值。

例如,要將swappiness設置爲10,我們可以鍵入:

sudo sysctl vm.swappiness=10

輸出

vm.swappiness = 10

此設置將持續到下次重新啓動。我們可以通過在/etc/sysctl.conf文件中添加以下行來自動設置此值:

sudo nano /etc/sysctl.conf

在 /etc/sysctl.conf 底部,您可以添加:

vm.swappiness=10

完成後保存並關閉文件。

調整緩存壓力設置

您可能想要修改的另一個相關值是 vfs_cache_pressure。此設置配置系統將選擇多少緩存 inode 和 dentry信息而不是其他數據。

基本上,這是關於文件系統的訪問數據。這通常是非常昂貴的查詢和非常頻繁的請求,所以這是您的系統緩存的一個很好的事情。您可以通過 proc 再次查詢文件系統來查看當前值:

cat /proc/sys/vm/vfs_cache_pressure

輸出

由於它當前已配置,我們的系統會過快地從緩存中刪除 inode 信息。我們可以通過輸入以下內容將其設置爲更保守的設置(如50):

sudo sysctl vm.vfs_cache_pressure=50

輸出

vm.vfs_cache_pressure = 50

同樣,這僅適用於我們當前的會話。我們可以通過將其添加到配置文件來改變它,就像我們使用swappiness設置一樣:

sudo nano /etc/sysctl.conf

在/etc/sysctl.conf底部,添加指定新值的行:

vm.vfs_cache_pressure=50

完成後保存並關閉文件。

結論

按照本指南中的步驟將爲您提供一些 swap 空間,否則會導致內存不足異常。交換空間在避免一些常見問題方面非常有用。

如果遇到OOM(內存不足)錯誤,或者如果發現系統無法使用所需的應用程序,最佳解決方案是優化應用程序配置或升級服務器。

總結

以上所述是小編給大家介紹的在Ubuntu 18.04上添加交換空間的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對神馬文庫網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章