主頁(yè) > 知識(shí)庫(kù) > Linux系統(tǒng)交換空間介紹

Linux系統(tǒng)交換空間介紹

熱門標(biāo)簽:昆明外呼系統(tǒng) 400電話申請(qǐng)找哪家公司 七大洲地圖標(biāo)注 河南省鄭州市地圖標(biāo)注 地圖標(biāo)注w是什么方向 新鄉(xiāng)人工智能電話機(jī)器人加盟 臨汾電銷機(jī)器人費(fèi)用 地圖標(biāo)注需要提交啥資料入駐 福州呼叫中心外呼系統(tǒng)哪家好

交換空間是當(dāng)今計(jì)算的一個(gè)共同方面,不管操作系統(tǒng)如何。Linux使用交換空間來增加主機(jī)可用的虛擬內(nèi)存量。它可以在常規(guī)文件系統(tǒng)或邏輯卷上使用一個(gè)或多個(gè)專用交換分區(qū)或交換文件。

在一臺(tái)典型的計(jì)算機(jī)中有兩種基本的內(nèi)存類型。第一種類型,隨機(jī)存取存儲(chǔ)器(RAM),用于存儲(chǔ)數(shù)據(jù)和程序,而這些數(shù)據(jù)和程序正在由計(jì)算機(jī)積極使用。除非程序和數(shù)據(jù)存儲(chǔ)在RAM中,否則計(jì)算機(jī)無(wú)法使用它們。RAM是易失性內(nèi)存;也就是說,如果關(guān)閉計(jì)算機(jī),存儲(chǔ)在RAM中的數(shù)據(jù)就會(huì)丟失。
硬盤是用于長(zhǎng)期存儲(chǔ)數(shù)據(jù)和程序的磁性介質(zhì).磁性介質(zhì)是非易失性的;存儲(chǔ)在磁盤上的數(shù)據(jù)即使從計(jì)算機(jī)中移除電源也保持不變。CPU(中央處理單元)不能直接訪問硬盤上的程序和數(shù)據(jù);必須首先將其復(fù)制到RAM中,這就是CPU可以訪問其編程指令和這些指令要操作的數(shù)據(jù)的地方。在引導(dǎo)過程中,計(jì)算機(jī)將特定的操作系統(tǒng)程序(如內(nèi)核、init或systemd)以及硬盤驅(qū)動(dòng)器中的數(shù)據(jù)復(fù)制到RAM中,由計(jì)算機(jī)的處理器CPU直接訪問。

交換空間

交換空間是現(xiàn)代Linux系統(tǒng)中的第二種內(nèi)存類型。交換空間的主要功能是當(dāng)實(shí)際內(nèi)存被填滿,需要更多的空間時(shí),用磁盤空間代替RAM內(nèi)存。

例如,假設(shè)您有一個(gè)具有8GB RAM的計(jì)算機(jī)系統(tǒng)。如果您啟動(dòng)的程序不填充該RAM,一切都是好的,不需要交換。但是假設(shè)當(dāng)您添加更多的行時(shí),您正在處理的電子表格會(huì)增長(zhǎng),并且,再加上正在運(yùn)行的所有其他內(nèi)容,現(xiàn)在將填充所有的RAM。如果沒有可用的交換空間,您將不得不停止電子表格的工作,直到您可以通過關(guān)閉一些其他程序來釋放一些有限的RAM。

內(nèi)核使用內(nèi)存管理程序來檢測(cè)最近沒有使用內(nèi)容的內(nèi)存塊,也就是頁(yè)面。內(nèi)存管理程序?qū)⑦@些相對(duì)較少使用的內(nèi)存頁(yè)交換到專門指定用于“分頁(yè)”或交換的硬盤驅(qū)動(dòng)器上的一個(gè)特殊分區(qū)。這將釋放RAM,并為將更多數(shù)據(jù)輸入電子表格騰出空間。內(nèi)核的內(nèi)存管理代碼會(huì)跟蹤那些交換到硬盤上的內(nèi)存頁(yè),如果需要的話,可以將它們分頁(yè)回RAM。

Linux計(jì)算機(jī)中的內(nèi)存總量是RAM加上交換空間,稱為虛擬存儲(chǔ)器.

Linux交換的類型

Linux提供了兩種類型的交換空間。默認(rèn)情況下,大多數(shù)Linux安裝都會(huì)創(chuàng)建交換分區(qū),但也可以使用特殊配置的文件作為交換文件。交換分區(qū)正是它的名稱所暗示的-一個(gè)標(biāo)準(zhǔn)磁盤分區(qū),由mkswap命令。

如果沒有可用的磁盤空間來創(chuàng)建新的交換分區(qū),或者在卷組中可以為交換空間創(chuàng)建邏輯卷,則可以使用交換文件。這只是一個(gè)常規(guī)文件,它被創(chuàng)建并預(yù)先分配到指定的大小。然后mkswap命令將其配置為交換空間。除非絕對(duì)必要,否則我不建議使用文件作為交換空間。

震蕩

當(dāng)整個(gè)虛擬內(nèi)存(包括RAM和交換空間)幾乎滿時(shí),就會(huì)發(fā)生震蕩。系統(tǒng)在交換空間和RAM之間花費(fèi)大量的時(shí)間分頁(yè)內(nèi)存塊,然后再分頁(yè),這樣就只剩下很少的時(shí)間用于實(shí)際的工作了。這方面的典型癥狀是顯而易見的:系統(tǒng)變得緩慢或完全沒有響應(yīng),硬盤驅(qū)動(dòng)器的活動(dòng)幾乎不斷地亮著。

如果您能夠設(shè)法發(fā)出如下命令free這顯示了CPU負(fù)載和內(nèi)存使用情況,您將看到CPU負(fù)載非常高,可能是系統(tǒng)中CPU核心數(shù)量的30至40倍。另一個(gè)癥狀是RAM和交換空間幾乎都被完全分配了。

之后,查看SAR(系統(tǒng)活動(dòng)報(bào)告)數(shù)據(jù)也可以顯示這些癥狀。我在我工作的每一個(gè)系統(tǒng)上安裝了SAR,并使用它進(jìn)行修復(fù)后的法醫(yī)分析。

適當(dāng)?shù)慕粨Q空間是多少?

許多年前,應(yīng)該在硬盤上分配的交換空間數(shù)量的經(jīng)驗(yàn)法則是計(jì)算機(jī)中安裝的RAM數(shù)量的2倍(當(dāng)然,大多數(shù)計(jì)算機(jī)的RAM是以KB或MB計(jì)算的)。因此,如果計(jì)算機(jī)有64 KB的RAM,128 KB的交換分區(qū)將是最佳大小。這條規(guī)則考慮到了這樣一個(gè)事實(shí),即當(dāng)時(shí)RAM的大小通常很小,為交換空間分配超過2X的RAM并不能提高性能。由于交換內(nèi)存超過兩倍,大多數(shù)系統(tǒng)花費(fèi)的時(shí)間比實(shí)際執(zhí)行有用的工作花費(fèi)的時(shí)間更多。

RAM已經(jīng)成為一種廉價(jià)的商品,現(xiàn)在大多數(shù)電腦都有大量的RAM,可以擴(kuò)展到幾十GB。我的大多數(shù)較新的計(jì)算機(jī)至少有8GB的RAM,一臺(tái)有32 GB,我的主工作站有64 GB。我的舊電腦有4到8GB的內(nèi)存。

當(dāng)處理具有大量RAM的計(jì)算機(jī)時(shí),交換空間的限制性能因子遠(yuǎn)遠(yuǎn)低于2X乘法器。Fedora 28,定義了當(dāng)前交換空間分配的思路。我在下面列出了該文件中的一些討論和建議表。

下表提供了交換分區(qū)的推薦大小,這取決于系統(tǒng)中的RAM數(shù)量以及是否需要為系統(tǒng)冬眠提供足夠的內(nèi)存。推薦的交換分區(qū)大小是在安裝期間自動(dòng)確定的。但是,為了允許休眠,您需要在自定義分區(qū)階段編輯交換空間。

表1:Fedora 28文檔中推薦的系統(tǒng)交換空間

系統(tǒng)RAM數(shù)量 推薦交換空間 推薦與休眠的交換
小于2GB RAM數(shù)量的2倍 RAM數(shù)量的3倍
2GB-8GB 等于RAM的數(shù)量 RAM數(shù)量的2倍
8 GB-64 GB 內(nèi)存數(shù)量的0.5倍 1.5倍的RAM數(shù)量
超過64 GB 工作負(fù)荷依賴 不建議冬眠

 

在上面列出的每個(gè)范圍之間的邊界(例如,具有2GB、8GB或64 GB系統(tǒng)RAM的系統(tǒng)),對(duì)選擇的交換空間和休眠支持使用謹(jǐn)慎。如果您的系統(tǒng)資源允許的話,增加交換空間可能會(huì)帶來更好的性能。

當(dāng)然,大多數(shù)Linux管理員對(duì)于交換空間的適當(dāng)數(shù)量有自己的想法-以及幾乎所有其他的東西。下表2是我根據(jù)個(gè)人在多種環(huán)境中的經(jīng)驗(yàn)提出的建議。這些可能不適用于您,但與表1一樣,它們可能會(huì)幫助您開始工作。

表2:作者推薦的系統(tǒng)交換空間

RAM數(shù)量 推薦交換空間
≤2GB 2x RAM
2GB-8GB =RAM
>8GB 8GB

 

這兩個(gè)表中的一個(gè)考慮因素是,隨著RAM數(shù)量的增加,超過某個(gè)點(diǎn),添加更多的交換空間只會(huì)在交換空間幾乎被填滿之前就會(huì)導(dǎo)致混亂。如果您在遵循這些建議的同時(shí),虛擬內(nèi)存太少,則應(yīng)該在可能的情況下添加更多的RAM,而不是更多的交換空間。與影響系統(tǒng)性能的所有建議一樣,請(qǐng)使用對(duì)特定環(huán)境最有效的建議。這將需要時(shí)間和精力來根據(jù)您的Linux環(huán)境中的條件進(jìn)行實(shí)驗(yàn)和進(jìn)行更改。

將更多的交換空間添加到非lvm磁盤環(huán)境中。

由于已經(jīng)安裝了Linux的主機(jī)上對(duì)交換空間的需求發(fā)生了變化,可能需要修改為系統(tǒng)定義的交換空間的數(shù)量。此過程可用于任何需要增加交換空間的一般情況。它假定有足夠的可用磁盤空間。此過程還假定磁盤在“原始”EXT 4和交換分區(qū)中分區(qū),不使用邏輯卷管理(LVM)。

要采取的基本步驟很簡(jiǎn)單:

  1. 關(guān)閉現(xiàn)有的交換空間。
  2. 創(chuàng)建一個(gè)所需大小的新交換分區(qū)。
  3. 重新讀取分區(qū)表。
  4. 將分區(qū)配置為交換空間。
  5. 添加新的分區(qū)/etc/fSTAB。
  6. 打開交換。

不應(yīng)該需要重新啟動(dòng)。

為了安全起見,在關(guān)閉交換之前,您至少應(yīng)該確保沒有運(yùn)行應(yīng)用程序,也沒有使用交換空間。這,這個(gè),那,那個(gè)free或top命令可以告訴您是否正在使用交換空間。為了更安全,您可以恢復(fù)到運(yùn)行級(jí)別1或單用戶模式。

使用關(guān)閉所有交換空間的命令關(guān)閉交換分區(qū):

swapoff -a

現(xiàn)在,在硬盤上顯示現(xiàn)有分區(qū)。

fdisk -l

這將顯示每個(gè)驅(qū)動(dòng)器上的當(dāng)前分區(qū)表。按編號(hào)標(biāo)識(shí)當(dāng)前交換分區(qū)。

啟動(dòng)fdisk在與命令交互的模式下:

fdisk /dev/<device name>

例如:

fdisk /dev/sda

在這一點(diǎn)上,fdisk現(xiàn)在是交互式的,并且將只在指定的磁盤驅(qū)動(dòng)器上運(yùn)行。

使用fdiskp子命令來驗(yàn)證磁盤上是否有足夠的空閑空間來創(chuàng)建新的交換分區(qū)。硬盤上的空間以512字節(jié)塊和起始和結(jié)束柱面數(shù)表示,因此您可能需要做一些計(jì)算來確定分配分區(qū)之間和末尾的可用空間。

使用n命令創(chuàng)建一個(gè)新的交換分區(qū)。fdisk會(huì)問你啟動(dòng)汽缸的問題。默認(rèn)情況下,它選擇編號(hào)最低的可用圓柱.如果希望更改,請(qǐng)鍵入起始?xì)飧椎臄?shù)目。

這,這個(gè),那,那個(gè)fdisk命令現(xiàn)在允許您以多種格式輸入分區(qū)的大小,包括最后一個(gè)圓柱號(hào)或以字節(jié)、KB或MB為單位的大小。輸入4000米,這將在新分區(qū)上提供大約4GB的空間(例如),然后按Enter鍵。

使用p子命令,以驗(yàn)證分區(qū)是否按您指定的方式創(chuàng)建。注意,除非使用結(jié)束圓柱號(hào),否則分區(qū)可能不是您指定的。這,這個(gè),那,那個(gè)fdisk命令只能在整個(gè)圓柱上以增量方式分配磁盤空間,因此分區(qū)可能比指定的要小或大一些。如果分區(qū)不是您想要的,您可以刪除它并再次創(chuàng)建它。

現(xiàn)在有必要指定新分區(qū)為交換分區(qū)。分命令t允許您指定分區(qū)的類型。所以進(jìn)入t,指定分區(qū)號(hào),當(dāng)它請(qǐng)求十六進(jìn)制代碼分區(qū)類型時(shí),類型82,即Linux交換分區(qū)類型,然后按Enter鍵。

當(dāng)您對(duì)所創(chuàng)建的分區(qū)感到滿意時(shí),請(qǐng)使用w命令將新分區(qū)表寫入磁盤。這,這個(gè),那,那個(gè)fdisk程序在完成修改后的分區(qū)表后將退出并返回到命令提示符。您可能會(huì)收到以下消息:fdisk完成編寫新分區(qū)表:

The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

此時(shí),您可以使用partprobe命令強(qiáng)制內(nèi)核重新讀取分區(qū)表,以便不需要執(zhí)行重新啟動(dòng)。

partprobe

現(xiàn)在使用以下命令fdisk -l要列出分區(qū)和新的交換分區(qū),應(yīng)該在列出的分區(qū)中。確保新的分區(qū)類型是“Linux交換”。

為了指向新的交換分區(qū),必須修改/etc/fSTAB文件。現(xiàn)有的行可能如下所示:

LABEL=SWAP-sdaX  swap    swap  defaults   0 0

哪里X是分區(qū)號(hào)。根據(jù)新交換分區(qū)的位置,添加一個(gè)類似于此的新行:

/dev/sdaY     swap    swap  defaults   0 0

確保使用正確的分區(qū)號(hào)?,F(xiàn)在,您可以執(zhí)行創(chuàng)建交換分區(qū)的最后一步。使用mkswap命令將分區(qū)定義為交換分區(qū)。

mkswap /dev/sdaY

最后一步是使用以下命令打開交換:

swapon -a

您的新交換分區(qū)現(xiàn)在與以前存在的交換分區(qū)一起聯(lián)機(jī)。您可以使用free或top驗(yàn)證這一點(diǎn)的命令。

將交換添加到lvm磁盤環(huán)境中。

如果您的磁盤安裝程序使用LVM,則更改交換空間將相當(dāng)容易。同樣,這假設(shè)當(dāng)前交換卷所在的卷組中有可用的空間。默認(rèn)情況下,LVM環(huán)境中FedoraLinux的安裝過程會(huì)將交換分區(qū)創(chuàng)建為邏輯卷。這很容易,因?yàn)槟梢院?jiǎn)單地增加交換卷的大小。

以下是在LVM環(huán)境中增加交換空間所需的步驟:

  1. 關(guān)掉所有交換。
  2. 增加指定用于交換的邏輯卷的大小。
  3. 將調(diào)整大小的卷配置為交換空間。
  4. 打開交換。

首先,讓我們使用lvs命令(列出邏輯卷)。

[root@studentvm1 ~]# lvs
 LV   VG        Attr    LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
 home  fedora_studentvm1 -wi-ao---- 2.00g                           
 pool00 fedora_studentvm1 twi-aotz-- 2.00g        8.17  2.93              
 root  fedora_studentvm1 Vwi-aotz-- 2.00g pool00    8.17                  
 swap  fedora_studentvm1 -wi-ao---- 8.00g                           
 tmp  fedora_studentvm1 -wi-ao---- 5.00g                           
 usr  fedora_studentvm1 -wi-ao---- 15.00g                           
 var  fedora_studentvm1 -wi-ao---- 10.00g                           
[root@studentvm1 ~]#

您可以看到當(dāng)前交換大小為8GB。在本例中,我們希望將2GB添加到此交換卷中。首先,停止現(xiàn)有的交換。如果正在使用交換空間,則可能必須終止正在運(yùn)行的程序。

swapoff -a

現(xiàn)在增加邏輯卷的大小。

[root@studentvm1 ~]# lvextend -L +2G /dev/mapper/fedora_studentvm1-swap
 Size of logical volume fedora_studentvm1/swap changed from 8.00 GiB (2048 extents) to 10.00 GiB (2560 extents).
 Logical volume fedora_studentvm1/swap successfully resized.
[root@studentvm1 ~]#

運(yùn)行mkswap命令將整個(gè)10 GB分區(qū)放入交換空間。

[root@studentvm1 ~]# mkswap /dev/mapper/fedora_studentvm1-swap
mkswap: /dev/mapper/fedora_studentvm1-swap: warning: wiping old swap signature.
Setting up swapspace version 1, size = 10 GiB (10737414144 bytes)
no label, UUID=3cc2bee0-e746-4b66-aa2d-1ea15ef1574a
[root@studentvm1 ~]#

打開掉包。

[root@studentvm1 ~]# swapon -a
[root@studentvm1 ~]#

現(xiàn)在,使用List塊設(shè)備命令驗(yàn)證新的交換空間是否存在。同樣,不需要重新啟動(dòng)。

[root@studentvm1 ~]# lsblk 
NAME                 MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda                  8:0  0  60G 0 disk 
|-sda1                 8:1  0  1G 0 part /boot
`-sda2                 8:2  0  59G 0 part 
 |-fedora_studentvm1-pool00_tmeta  253:0  0  4M 0 lvm 
 | `-fedora_studentvm1-pool00-tpool 253:2  0  2G 0 lvm 
 |  |-fedora_studentvm1-root    253:3  0  2G 0 lvm /
 |  `-fedora_studentvm1-pool00   253:6  0  2G 0 lvm 
 |-fedora_studentvm1-pool00_tdata  253:1  0  2G 0 lvm 
 | `-fedora_studentvm1-pool00-tpool 253:2  0  2G 0 lvm 
 |  |-fedora_studentvm1-root    253:3  0  2G 0 lvm /
 |  `-fedora_studentvm1-pool00   253:6  0  2G 0 lvm 
 |-fedora_studentvm1-swap      253:4  0  10G 0 lvm [SWAP]
 |-fedora_studentvm1-usr      253:5  0  15G 0 lvm /usr
 |-fedora_studentvm1-home      253:7  0  2G 0 lvm /home
 |-fedora_studentvm1-var      253:8  0  10G 0 lvm /var
 `-fedora_studentvm1-tmp      253:9  0  5G 0 lvm /tmp
sr0                  11:0  1 1024M 0 rom 
[root@studentvm1 ~]#

您還可以使用swapon -s命令,或top, free,或者其他幾個(gè)命令中的任何一個(gè)來驗(yàn)證這一點(diǎn)。

[root@studentvm1 ~]# free
       total    used    free   shared buff/cache  available
Mem:    4038808   382404   2754072    4152   902332   3404184
Swap:   10485756      0  10485756
[root@studentvm1 ~]#

注意,不同的命令以不同的形式顯示或要求設(shè)備特殊文件作為輸入。在/dev目錄中訪問特定設(shè)備的方式有很多種。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

標(biāo)簽:岳陽(yáng) 鎮(zhèn)江 紅河 烏海 臨沂 四川 股票

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Linux系統(tǒng)交換空間介紹》,本文關(guān)鍵詞  Linux,系統(tǒng),交換,空間,介紹,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Linux系統(tǒng)交換空間介紹》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Linux系統(tǒng)交換空間介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章