溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux如何使用交換空間

發(fā)布時間:2021-10-13 15:43:14 來源:億速云 閱讀:134 作者:小新 欄目:系統(tǒng)運維

這篇文章主要為大家展示了“Linux如何使用交換空間”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Linux如何使用交換空間”這篇文章吧。

一、UNIX如何使用交換空間

所有 UNIX 操作系統(tǒng)都支持某種虛擬內(nèi)存 (VM) 系統(tǒng)。使用 VM 系統(tǒng),您有兩個主要區(qū)域來存儲有關活動應用程序及其使用的數(shù)據(jù)的信息——物理隨機訪問存儲器 (RAM) 和硬盤驅(qū)動器上分配的空間。

在具有 VM 的計算機中,可加載到內(nèi)存中的應用程序和數(shù)據(jù)量可以大于物理 RAM,因為沒有活動地使用的應用程序和信息被交換 到了磁盤上(交換空間 這個術語由此得名)。

VM 系統(tǒng)的優(yōu)點在于,物理 RAM 得到了更有效的利用——這是因為它僅包含正在執(zhí)行的應用程序和正在使用的數(shù)據(jù)。由于 RAM 比硬盤空間快,您從活動地加載的應用程序中獲得了所需的性能,同時還得益于能夠運行比通常所支持的更多的應用程序。

其結(jié)果是您獲得了大得多的可尋址內(nèi)存空間(在 32 為系統(tǒng)上為 4GB,在 64 位系統(tǒng)上則更大),從而使得應用程序開發(fā)更加容易,同時仍然提供高性能。

二、設置交換空間值

您在計算機上配置的交換空間量主要取決于應用程序和操作系統(tǒng)。如果交換空間太小,則可能無法運行您希望運行的所有應用程序,而如果交換空間太大,則可能在浪費那些從未使用的磁盤空間。您可能還會間接地使得系統(tǒng)過載,因為與太小的交換空間相比,太大的交換空間會導致糟糕的性能,這是由于與系統(tǒng)執(zhí)行實際處理所花的時間相比,它在換入和換出頁面上所花的時間更多。

不同的 UNIX 變體以不同的方式使用它們的交換空間。有些變體僅在已經(jīng)使用完物理內(nèi)存時才使用交換空間。其他變體則對所有非活動的應用程序和未使用的頁面使用交換空間。有些變體保留所有應用程序中的數(shù)據(jù)副本——同時包括內(nèi)存和交換空間中的應用程序。缺省情況下,有些變體避免使用交換空間,并盡可能提供某種機制來允許您調(diào)整交換空間的使用方式。許多變體使用這些不同安排的組合來充分利用它們的交換空間。

例如在 Linux® 中,當您使用 2.6 內(nèi)核時,可以通過設置 /etc/sysctl.conf 中的 vm.swappiness 值來調(diào)整系統(tǒng)的 swappiness。較高的值導致交換更多頁面,較低的值導致將更多應用程序保留在內(nèi)存中(即使這些應用程序處于空閑狀態(tài))。

除了這些基礎之外,還有許多關于應該如何配置 VM 和應該分配多少磁盤空間的觀點和規(guī)則。下面總結(jié)了其中一些方法:

1. 有些管理員認為,您的交換空間決不應該少于物理 RAM。由于其中的 VM 使用方式,這是較舊的 UNIX 版本(尤其是 SunOS)的一個要求。從理論上講,擁有比物理 RAM 更多的 VM 可以使操作系統(tǒng)能夠在系統(tǒng)變得空閑時將所有當前進程換出到磁盤上,并且能夠提高系統(tǒng)的性能,因為可以將新進程直接加載到 RAM 中,而不必預先交換應用程序。
2.對于開發(fā)系統(tǒng),許多管理員都贊成應該有與 RAM 一樣多的 VM。采用這種方法的原因在于,交換空間還在系統(tǒng)故障期間用作轉(zhuǎn)儲活動內(nèi)存的位置;然后可以在啟動期間重新加載所存儲的內(nèi)存轉(zhuǎn)儲,并將其保存為內(nèi)核核心文件。如果所配置的交換空間小于物理 RAM,此類轉(zhuǎn)儲就無法實現(xiàn)。
3.在高性能部署環(huán)境中,由于您只希望將應用程序活動地保留在內(nèi)存中,并且不需要大量的交換,您可以配置盡可能小的 VM。崩潰恢復不是必需的,而確定物理 RAM 的潛在缺乏(由于交換空間用盡)的能力可以提供警告,使您知道應用程序環(huán)境未得到優(yōu)化或者您需要升級 RAM。
4.對于桌面環(huán)境,擁有非常大的 VM 分配可能對您有利,因為它使您能夠運行大量的應用程序(其中許多應用程序可能是空閑的,可以容易地交換,從而使更多 RAM 對活動應用程序可用)。

選擇正確的交換空間量很大程度上取決于您所配置的平臺——其預期用途和您希望如何處理可用 VM 缺乏的情況。

下面是一些保守值:
1. 在桌面系統(tǒng)上,至少分配與物理 RAM 一樣多的交換空間。
2. 在服務器上,至少分配可用 RAM 的 50% 作為交換空間。一旦頭腦中有了大體數(shù)字,您就需要配置交換空間。

三、配置交換空間

所有 UNIX 系統(tǒng)都有多種類型的交換空間。主交換空間是通常在啟動時配置的交換空間,并且通常是作為操作系統(tǒng)安裝的一部分來設置的。所有 UNIX 系統(tǒng)通常都有一個主交換空間分配。

交換空間的創(chuàng)建和配置方式隨不同的系統(tǒng)而異。在 Linux 下,用于交換的磁盤分區(qū)是通過分區(qū) ID 來標識的,該分區(qū)必須通過 mkswap 命令來初始化

代碼如下:

$ mkswap /dev/sda2


在大多數(shù)傳統(tǒng) UNIX 環(huán)境中,您可以使用任何可用分區(qū)而無需進行任何準備工作。在 HP-UX、AIX® 和 Linux 上,您可以使用 swapon 命令來將分區(qū)添加到可用的交換空間: 

代碼如下:

$ swapon /dev/sda2


在 Solaris 上,您可以使用 swap 命令來將交換空間添加到系統(tǒng):

代碼如下:

$ swap -a /dev/dsk/c0t0d0s2


請注意,以這種方式添加的交換空間在重新啟動后不會保留。若要永久地將交換空間添加到系統(tǒng),您必須配置啟動配置文件之一來自動啟用交換空間分配

四、添加啟動時交換空間

在大多數(shù) UNIX 變體下,交換空間都是作為內(nèi)核初始化的一部分在啟動時自動添加的。大多數(shù)變體使用文件系統(tǒng)安裝文件(/etc/fstab、/etc/vfstab 或 /etc/filesystems)中的行來指定要用作交換空間的分區(qū)。您可以從 Solaris 的 /etc/vfstab 文件中看到這樣一個示例

在 Solaris 中指定要用作交換空間的分區(qū):

代碼如下:

#device         device           mount            FS    fsck mount   mount
#to mount       to fsck          point            type  pass at boot options
#
fd              -                /dev/fd          fd    -    no      -
/proc           -                /proc            proc  -    no      -
/dev/dsk/c0d0s1 -                -                swap  -    no      -
/dev/dsk/c0d0s0 /dev/rdsk/c0d0s0 /                ufs   1    no      -
/dev/dsk/c0d0s7 /dev/rdsk/c0d0s7 /export/home     ufs   2    yes     -
/devices        -                /devices         devfs -    no      -
ctfs            -                /system/contract ctfs  -    no      -
objfs           -                /system/object   objfs -    no      -
swap            -                /tmp             tmpfs -    yes     -

下面顯示了 Linux 中的 /etc/fstab 文件示例

代碼如下:

# <fs>             <mountpoint>    <type>       <opts>    
<dump/pass>
/dev/sda1          /boot           ext2         noauto,noatime 1 1
/dev/sda3          /               ext3         noatime        0 0
/dev/sda2          none            swap         sw             0 0
/dev/hda1          /var/lib/mysql  ext3         noatime        1 2
/dev/hdb1          /export/data    ext3         noatime        1 2
/dev/hde1          /export/home    ext3         noatime        1 2
/dev/hde2          /var/tmp        ext3         noatime        1 2
/dev/hde3          /usr/portage/distfiles  ext3 noatime        1 2
/dev/hde4          /tmp            ext3         noatime        1 2

/dev/cdroms/cdrom0 /mnt/cdrom      iso9660      noauto,ro      0 0
none               /proc           proc         defaults       0 0

最后,您可以在 AIX 中使用 /etc/swapspaces 文件來配置交換空間分區(qū)

代碼如下:

* This file is modified by the chps, mkps and rmps commands and referenced
* by the lsps and swapon commands.

hd6:
       dev = /dev/hd6

paging00:
       dev = /dev/paging00

paging01:
       dev = /dev/paging01

您應該使用對應的命令或 Smitty 工具來修改該文件內(nèi)容,而不要直接編輯該文件。

若要刪除額外的交換空間,您可以使用對應的 swapoff 或 swap -d 命令來禁用該交換分區(qū)。然而要注意,您只能禁用當前未使用的交換分區(qū),并且不能禁用主交換分區(qū)。

五、添加臨時交換容量

有時您可能會用盡已配置的交換空間分區(qū),從而在短時間內(nèi)需要更多 VM,直到您能夠組織某種更永久性的解決方案。如果有某個分區(qū)可用,您可以按照上面在配置交換分區(qū)部分中的介紹來準備它。

如果沒有空余的分區(qū)可用,您可以創(chuàng)建一個或多個文件,并將它們臨時添加到可用交換池中。大多數(shù)系統(tǒng)甚至允許您在 NFS 安裝的文件系統(tǒng)上使用交換文件,當您沒有本地磁盤空間可用時,就可以使用這樣的文件系統(tǒng)。

若要將文件用于交換空間,請首先創(chuàng)建一個適當?shù)奈募?。mkfile> 命令在這里最合適,因為它提供了創(chuàng)建大型文件的簡單方法。您可以在命令行指定文件名和文件大?。?/p>

代碼如下:

mkfile 512m /export/data/swapfile

然后可以像添加分區(qū)一樣添加該文件:

代碼如下:

$ swap -a /export/data/swapfile


or

代碼如下:

$ swapon /export/data/swapfile

以這種方式使用的交換文件通常決不是針對交換空間問題的長期解決方案。您應該盡快為交換空間配置專用分區(qū)。

六、監(jiān)視交換空間使用情況

交換空間及其使用情況的監(jiān)視包括兩個方面:當前使用情況和活動使用情況。您可以在各種 UNIX 變體中找到一批不同的工具,它們報告可用空閑內(nèi)存和 VM 使用情況以及當前使用情況。

在 Solaris 下,swap 工具提供了大多數(shù)交換接口功能,包括報告使用情況和可用設備。例如,若要獲得已配置的交換設備列表,如在 Solaris 下監(jiān)視交換空間使用情況

代碼如下:

$ swap -l
swapfile             dev  swaplo blocks   free
/dev/dsk/c0d0s1     102,1       8 1220928 1220928

在 AIX 下,您可以使用 lsps 工具來獲得同樣的信息

代碼如下:

$ lsps -a

Page Space  Physical Volume  Volume Group  Size   %Used Active Auto
hd6         hdisk0           rootvg        2048MB     3    yes  yes

在 Linux 下,您可以使用 swapon 工具

代碼如下:

$ swapon -s
Filename                 Type            Size    Used    Priority
/dev/sda2                partition       1004052 319744  -1

在上述每個示例中,您都可以看到可用交換空間位置列表及其用途,并大致了解交換空間的當前使用量情況。

這些快照視圖非常有用,但它們僅顯示了當前使用情況。其中有關交換空間的定期或全面使用情況的信息非常少。出于性能的考慮,或者在診斷您懷疑可能與交換空間有關的問題時,您通常需要內(nèi)存和分頁使用情況的更加交互式的視圖。

七、活動 VM 監(jiān)視

vmstat 命令可以提供虛擬內(nèi)存使用情況的長期視圖,包括提供有關交換空間與 RAM 之間正在活動地交換的內(nèi)存量的信息。在命令行上,您需要指定要在報告統(tǒng)計信息時使用的間隔(以秒為單位)。結(jié)果輸出顯示了大量的信息,并且可用于做出有關 VM 配置和分配的決策。

下面顯示了針對 Solaris 計算機的輸出示例(間隔為五秒)

代碼如下:

kthr      memory            page            disk          faults      cpu
r b w   swap  free  re  mf pi po fr de sr cd cd cd cd   in   sy   cs us sy id
0 0 0 945932 385632  9  36 13  0  1  0 100 3  0  0  0  413  172   87  0 36 63
0 0 0 944616 384068  0   8  3  0  0  0  0  0  0  0  0  654   21   51  0  1 99
0 0 0 944612 384064  0   0  0  0  0  0  0  0  0  0  0  596   21   52  0  1 99
0 0 0 944612 384064  0   0  0  0  0  0  0  0  0  0  0  694   12   48  0  1 99
0 0 0 944612 384064  0   0  0  0  0  0  0  5  0  0  0  658   11   50  0  1 99
0 0 0 944612 384064  0   0  0  0  0  0  0  0  0  0  0  576   18   52  0  1 99
0 0 0 944500 383988 115 850 1  0  0  0  0  0  0  0  0  612 1656  120  1  5 94
0 0 0 942060 382444  6  62  0  0  0  0  0  0  0  0  0  669  256  146  0  2 98
0 0 0 942048 382432  9 105  0  0  0  0  0  0  0  0  0  699  414  188  0  2 98
0 0 0 946188 388188 481 2400 10 10 10 0 0  5  0  0  0  595 12613 6082 6 18 76
0 0 0 944488 386308 769 4753 1 8  8  0  0  7  0  0  0  625 15705 6285 8 29 63
0 0 0 943128 385104 839 5194 176 9 9 0  0 14  0  0  0  579 16077 6304 8 32 60
0 0 0 937692 377628 32 209  2  0  0  0  0  2  0  0  0  654  403  131  0  2 97
0 0 0 937228 377208  0   0  0  0  0  0  0  0  0  0  0  647   38   63  0  1 99
0 0 0 937220 377200 121 980 0  0  0  0  0  0  0  0  0  623 1246  218  1  6 93
0 0 0 937348 377320 126 1044 2 1  1  0  0  3  0  0  0  667 1266  228  1  7 93
0 0 0 937428 377408 57 686  0  0  0  0  0  0  0  0  0  702  890  180  1  5 94
0 0 0 937436 377404 72 861  0  0  0  0  0 54  0  0  0  689 1113  295  1  6 93

其中存在許多列&mdash;&mdash;有些列比另一些列更重要。關鍵的列包括:
* swap顯示可用的總交換空間
* free顯示空閑的交換空間量
* pi換入的千字節(jié)數(shù)
* po換出的千字節(jié)數(shù)
* fr空閑的千字節(jié)數(shù)

非常低的空閑空間量和較高的換入或換出頁數(shù)可能表明 VM 不足,非常高的換入和換出頁數(shù)可能表明物理 RAM 不足。

八、將交換空間用于臨時存儲

在某些 UNIX 變體下,特別是 Solaris 和 Linux,您可以使用 tmpfs 文件系統(tǒng);該文件系統(tǒng)使用 VM 作為存儲空間。當您有充足的 RAM 時,這提供了支持超快速磁盤訪問的理想方法;未使用的文件將交換到磁盤上。其結(jié)果是實現(xiàn)了快速訪問最常用文件的高效解決方案,并且它可以顯著提高應用程序速度,例如軟件開發(fā),其中要在編譯過程期間創(chuàng)建大量的臨時文件。

以上是“Linux如何使用交換空間”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI