Linux中如何使用和管理交換空間
Linux中如何使用和管理交換空間
給計算機配置交換空間可以充分利用系統(tǒng),在物理內(nèi)存被充滿時使用,那么Linux下要如何使用Linux交換空間呢?Linux交換空間又要如何管理呢?下面學(xué)習(xí)啦小編就給大家介紹下Linux下使用交換空間的方法,一起來學(xué)習(xí)下吧。
一、UNIX如何使用交換空間
所有 UNIX 操作系統(tǒng)都支持某種虛擬內(nèi)存 (VM) 系統(tǒng)。使用 VM 系統(tǒng),您有兩個主要區(qū)域來存儲有關(guān)活動應(yīng)用程序及其使用的數(shù)據(jù)的信息——物理隨機訪問存儲器 (RAM) 和硬盤驅(qū)動器上分配的空間。
在具有 VM 的計算機中,可加載到內(nèi)存中的應(yīng)用程序和數(shù)據(jù)量可以大于物理 RAM,因為沒有活動地使用的應(yīng)用程序和信息被交換 到了磁盤上(交換空間 這個術(shù)語由此得名)。
VM 系統(tǒng)的優(yōu)點在于,物理 RAM 得到了更有效的利用——這是因為它僅包含正在執(zhí)行的應(yīng)用程序和正在使用的數(shù)據(jù)。由于 RAM 比硬盤空間快,您從活動地加載的應(yīng)用程序中獲得了所需的性能,同時還得益于能夠運行比通常所支持的更多的應(yīng)用程序。
其結(jié)果是您獲得了大得多的可尋址內(nèi)存空間(在 32 為系統(tǒng)上為 4GB,在 64 位系統(tǒng)上則更大),從而使得應(yīng)用程序開發(fā)更加容易,同時仍然提供高性能。
二、設(shè)置交換空間值
您在計算機上配置的交換空間量主要取決于應(yīng)用程序和操作系統(tǒng)。如果交換空間太小,則可能無法運行您希望運行的所有應(yīng)用程序,而如果交換空間太大,則可能在浪費那些從未使用的磁盤空間。您可能還會間接地使得系統(tǒng)過載,因為與太小的交換空間相比,太大的交換空間會導(dǎo)致糟糕的性能,這是由于與系統(tǒng)執(zhí)行實際處理所花的時間相比,它在換入和換出頁面上所花的時間更多。
不同的 UNIX 變體以不同的方式使用它們的交換空間。有些變體僅在已經(jīng)使用完物理內(nèi)存時才使用交換空間。其他變體則對所有非活動的應(yīng)用程序和未使用的頁面使用交換空間。有些變體保留所有應(yīng)用程序中的數(shù)據(jù)副本——同時包括內(nèi)存和交換空間中的應(yīng)用程序。缺省情況下,有些變體避免使用交換空間,并盡可能提供某種機制來允許您調(diào)整交換空間的使用方式。許多變體使用這些不同安排的組合來充分利用它們的交換空間。
例如在 Linux® 中,當(dāng)您使用 2.6 內(nèi)核時,可以通過設(shè)置 /etc/sysctl.conf 中的 vm.swappiness 值來調(diào)整系統(tǒng)的 swappiness。較高的值導(dǎo)致交換更多頁面,較低的值導(dǎo)致將更多應(yīng)用程序保留在內(nèi)存中(即使這些應(yīng)用程序處于空閑狀態(tài))。
除了這些基礎(chǔ)之外,還有許多關(guān)于應(yīng)該如何配置 VM 和應(yīng)該分配多少磁盤空間的觀點和規(guī)則。下面總結(jié)了其中一些方法:
1. 有些管理員認(rèn)為,您的交換空間決不應(yīng)該少于物理 RAM。由于其中的 VM 使用方式,這是較舊的 UNIX 版本(尤其是 SunOS)的一個要求。從理論上講,擁有比物理 RAM 更多的 VM 可以使操作系統(tǒng)能夠在系統(tǒng)變得空閑時將所有當(dāng)前進程換出到磁盤上,并且能夠提高系統(tǒng)的性能,因為可以將新進程直接加載到 RAM 中,而不必預(yù)先交換應(yīng)用程序。
2.對于開發(fā)系統(tǒng),許多管理員都贊成應(yīng)該有與 RAM 一樣多的 VM。采用這種方法的原因在于,交換空間還在系統(tǒng)故障期間用作轉(zhuǎn)儲活動內(nèi)存的位置;然后可以在啟動期間重新加載所存儲的內(nèi)存轉(zhuǎn)儲,并將其保存為內(nèi)核核心文件。如果所配置的交換空間小于物理 RAM,此類轉(zhuǎn)儲就無法實現(xiàn)。
3.在高性能部署環(huán)境中,由于您只希望將應(yīng)用程序活動地保留在內(nèi)存中,并且不需要大量的交換,您可以配置盡可能小的 VM。崩潰恢復(fù)不是必需的,而確定物理 RAM 的潛在缺乏(由于交換空間用盡)的能力可以提供警告,使您知道應(yīng)用程序環(huán)境未得到優(yōu)化或者您需要升級 RAM。
4.對于桌面環(huán)境,擁有非常大的 VM 分配可能對您有利,因為它使您能夠運行大量的應(yīng)用程序(其中許多應(yīng)用程序可能是空閑的,可以容易地交換,從而使更多 RAM 對活動應(yīng)用程序可用)。
選擇正確的交換空間量很大程度上取決于您所配置的平臺——其預(yù)期用途和您希望如何處理可用 VM 缺乏的情況。
下面是一些保守值:
1. 在桌面系統(tǒng)上,至少分配與物理 RAM 一樣多的交換空間。
2. 在服務(wù)器上,至少分配可用 RAM 的 50% 作為交換空間。一旦頭腦中有了大體數(shù)字,您就需要配置交換空間。
三、配置交換空間
所有 UNIX 系統(tǒng)都有多種類型的交換空間。主交換空間是通常在啟動時配置的交換空間,并且通常是作為操作系統(tǒng)安裝的一部分來設(shè)置的。所有 UNIX 系統(tǒng)通常都有一個主交換空間分配。
交換空間的創(chuàng)建和配置方式隨不同的系統(tǒng)而異。在 Linux 下,用于交換的磁盤分區(qū)是通過分區(qū) ID 來標(biāo)識的,該分區(qū)必須通過 mkswap 命令來初始化:
代碼如下:
$ mkswap /dev/sda2
在大多數(shù)傳統(tǒng) UNIX 環(huán)境中,您可以使用任何可用分區(qū)而無需進行任何準(zhǔn)備工作。在 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 -