Linux 系統上交換空間的介紹

2021-09-22 01:24:31 字數 2816 閱讀 7163

學習如何修改你的系統上的交換空間的容量,以及你到底需要多大的交換空間。

當今無論什麼作業系統交換swap空間是非常常見的。linux 使用交換空間來增加主機可用的虛擬記憶體。它可以在常規檔案或邏輯卷上使用乙個或多個專用交換分割槽或交換檔案。

典型計算機中有兩種基本型別的記憶體。第一種型別,隨機訪問儲存器 (ram),用於儲存計算機使用的資料和程式。只有程式和資料儲存在 ram 中,計算機才能使用它們。隨機儲存器是易失性儲存器;也就是說,如果計算機關閉了,儲存在 ram 中的資料就會丟失。

硬碟是用於長期儲存資料和程式的磁性介質。該磁介質可以很好的儲存資料;即使計算機斷電,儲存在磁碟上的資料也會保留下來。cpu(**處理器)不能直接訪問硬碟上的程式和資料;它們必須首先複製到 ram 中,ram 是 cpu 訪問**指令和運算元據的地方。在引導過程中,計算機將特定的作業系統程式(如核心、init 或 systemd)以及硬碟上的資料複製到 ram 中,在 ram 中,計算機的處理器 cpu 可以直接訪問這些資料。

交換空間是現代 linux 系統中的第二種記憶體型別。交換空間的主要功能是當全部的 ram 被占用並且需要更多記憶體時,用磁碟空間代替 ram 記憶體。

例如,假設你有乙個 8gb ram 的計算機。如果你啟動的程式沒有填滿 ram,一切都好,不需要交換。假設你在處理電子**,當新增更多的行時,你電子**會增長,加上所有正在執行的程式,將會占用全部的 ram 。如果這時沒有可用的交換空間,你將不得不停止處理電子**,直到關閉一些其他程式來釋放一些 ram 。

核心使用乙個記憶體管理程式來檢測最近沒有使用的記憶體塊(記憶體頁)。記憶體管理程式將這些相對不經常使用的記憶體頁交換到硬碟上專門指定用於「分頁」或交換的特殊分割槽。這會釋放 ram,為輸入電子**更多資料騰出了空間。那些換出到硬碟的記憶體頁面被核心的記憶體管理**跟蹤,如果需要,可以被分頁回 ram。

linux 計算機中的記憶體總量是 ram + 交換分割槽,交換分割槽被稱為虛擬記憶體.

linux 提供了兩種型別的交換空間。預設情況下,大多數 linux 在安裝時都會建立乙個交換分割槽,但是也可以使用乙個特殊配置的檔案作為交換檔案。交換分割槽顧名思義就是乙個標準磁碟分割槽,由mkswap命令指定交換空間。

如果沒有可用磁碟空間來建立新的交換分割槽,或者卷組中沒有空間為交換空間建立邏輯卷,則可以使用交換檔案。這只是乙個建立好並預分配指定大小的常規檔案。然後執行mkswap命令將其配置為交換空間。除非絕對必要,否則我不建議使用檔案來做交換空間。(lctt 譯註:ubuntu 近來的版本採用了交換檔案而非交換空間,所以我對於這種說法保留看法)

當總虛擬記憶體(ram 和交換空間)變得快滿時,可能會發生頻繁交換。系統花了太多時間在交換空間和 ram 之間做記憶體塊的頁面切換,以至於幾乎沒有時間用於實際工作。這種情況的典型症狀是:系統變得緩慢或完全無反應,硬碟指示燈幾乎持續亮起。

使用free的命令來顯示 cpu 負載和記憶體使用情況,你會發現 cpu 負載非常高,可能達到系統中 cpu 核心數量的 30 到 40 倍。另乙個情況是 ram 和交換空間幾乎完全被分配了。

事實上,檢視 sar(系統活動報告)資料也可以顯示這些內容。在我的每個系統上都安裝 sar ,並將這些用於資料分析。

許多年前,硬碟上分配給交換空間大小是計算機上的 ram 的兩倍(當然,這是大多數計算機的 ram 以 kb 或 mb 為單位的時候)。因此,如果一台計算機有 64kb 的 ram,應該分配 128kb 的交換分割槽。該規則考慮到了這樣的事實情況,即 ram 大小在當時非常小,分配超過 2 倍的 ram 用於交換空間並不能提高效能。使用超過兩倍的 ram 進行交換,比實際執行有用的工作的時候,大多數系統將花費更多的時間。

ram 現在已經很便宜了,如今大多數計算機的 ram 都達到了幾十億位元組。我的大多數新電腦至少有 8gb 記憶體,一台有 32gb 記憶體,我的主工作站有 64gb 記憶體。我的舊電腦有 4 到 8gb 的記憶體。

下表根據系統中的 ram 大小以及是否有足夠的記憶體讓系統休眠,提供了交換分割槽的推薦大小。建議的交換分割槽大小是在安裝過程中自動建立的。但是,為了滿足系統休眠,您需要在自定義分割槽階段編輯交換空間。

表 1: fedora 28 文件中推薦的系統交換空間

系統記憶體大小推薦的交換空間推薦的交換空間大小(支援休眠模式)

小於 2 gb

2 倍 ram

3 倍 ram

2 gb – 8 gb

等於 ram 大小

2 倍 ram

8 gb – 64 gb

0.5 倍 ram

1.5 倍 ram

大於 64 gb

工作量相關

不建議休眠模式

在上面列出的每個範圍之間的邊界(例如,具有 2gb、8gb 或 64gb 的系統 ram),請根據所選交換空間和支援休眠功能請謹慎使用。如果你的系統資源允許,增加交換空間可能會帶來更好的效能。

當然,大多數 linux 管理員對多大的交換空間量有自己的想法。下面的表2 包含了基於我在多種環境中的個人經歷所做出的建議。這些可能不適合你,但是和表 1 一樣,它們可能對你有所幫助。

表 2: 作者推薦的系統交換空間

ram 大小

推薦的交換空間

≤ 2gb

2x ram

2gb – 8gb

= ram

>8gb

8gb這兩個表中共同點,隨著 ram 數量的增加,超過某一點增加更多交換空間只會導致在交換空間幾乎被全部使用之前就發生頻繁交換。根據以上建議,則應盡可能新增更多 ram,而不是增加更多交換空間。如類似影響系統效能的情況一樣,請使用最適合你的建議。根據 linux 環境中的條件進行測試和更改是需要時間和精力的。

Linux系統增加交換空間的方法

增加交換空間有兩種方法 嚴格的說,在系統安裝完後只有一種方法可以增加swap,那就是本文的第二種方法,至於第一種方法應該是安裝系統時設定交換區。1 使用分割槽 在安裝os時劃分出專門的交換分割槽,空間大小要事先規劃好,啟動系統時自動進行mount。這種方法只能在安裝os時設定,一旦設定好不容易改變,...

Linux 檢視交換空間

命令 free 此命令用於在幾行中檢查系統上的記憶體和交換利用率。不使用任何開關,顯示的輸出以千位元組列印。命令 free h 使用 h開關,free命令以最接近的3位數格式顯示記憶體和交換利用率。命令 swapon s 您可以使用swapon命令檢查特定分割槽,邏輯卷或檔案的交換。在這裡,我們將使...

Linux 交換空間 swap space

linux中 虛擬記憶體 物理記憶體 ram 交換空間 swap space swap space可以是專用的交換分割槽 swap partition 推薦 交換檔案 swap file 或者是兩者組合。swap space 用途 當ram不夠用時,linux將部分不活動的頁 inactive pa...