萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> Linux中如何使用和管理交換空間

Linux中如何使用和管理交換空間

  給計算機配置交換空間可以充分利用系統,在物理內存被充滿時使用,那麼Linux下要如何使用Linux交換空間呢?Linux交換空間又要如何管理呢?下面小編就給大家介紹下Linux下使用交換空間的方法,一起來學習下吧。

 Linux中如何使用和管理交換空間

  一、UNIX如何使用交換空間

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

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

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

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

  二、設置交換空間值

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

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

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

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

  1. 有些管理員認為,您的交換空間決不應該少於物理 RAM。由於其中的 VM 使用方式,這是較舊的 UNIX 版本(尤其是 SunOS)的一個要求。從理論上講,擁有比物理 RAM 更多的 VM 可以使操作系統能夠在系統變得空閒時將所有當前進程換出到磁盤上,並且能夠提高系統的性能,因為可以將新進程直接加載到 RAM 中,而不必預先交換應用程序。

  2.對於開發系統,許多管理員都贊成應該有與 RAM 一樣多的 VM。采用這種方法的原因在於,交換空間還在系統故障期間用作轉儲活動內存的位置;然後可以在啟動期間重新加載所存儲的內存轉儲,並將其保存為內核核心文件。如果所配置的交換空間小於物理 RAM,此類轉儲就無法實現。

  3.在高性能部署環境中,由於您只希望將應用程序活動地保留在內存中,並且不需要大量的交換,您可以配置盡可能小的 VM。崩潰恢復不是必需的,而確定物理 RAM 的潛在缺乏(由於交換空間用盡)的能力可以提供警告,使您知道應用程序環境未得到優化或者您需要升級 RAM。

  4.對於桌面環境,擁有非常大的 VM 分配可能對您有利,因為它使您能夠運行大量的應用程序(其中許多應用程序可能是空閒的,可以容易地交換,從而使更多 RAM 對活動應用程序可用)。

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

  下面是一些保守值:

  1. 在桌面系統上,至少分配與物理 RAM 一樣多的交換空間。

  2. 在服務器上,至少分配可用 RAM 的 50% 作為交換空間。一旦頭腦中有了大體數字,您就需要配置交換空間。

  三、配置交換空間

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

  交換空間的創建和配置方式隨不同的系統而異。在 Linux 下,用於交換的磁盤分區是通過分區 ID 來標識的,該分區必須通過 mkswap 命令來初始化:

  代碼如下:

  $ mkswap /dev/sda2

  在大多數傳統 UNIX 環境中,您可以使用任何可用分區而無需進行任何准備工作。在 HP-UX、AIX® 和 Linux 上,您可以使用 swapon 命令來將分區添加到可用的交換空間:

  代碼如下:

  $ swapon /dev/sda2

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

  代碼如下:

  $ swap -a /dev/dsk/c0t0d0s2

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

  四、添加啟動時交換空間

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

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

  代碼如下:

  #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 -

上一頁12下一頁共2頁

  下面顯示了 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 文件來配置交換空間分區

  代碼如下:

  * 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 工具來修改該文件內容,而不要直接編輯該文件。

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

  五、添加臨時交換容量

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

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

  若要將文件用於交換空間,請首先創建一個適當的文件。mkfile》 命令在這裡最合適,因為它提供了創建大型文件的簡單方法。您可以在命令行指定文件名和文件大小:

  代碼如下:

  mkfile 512m /export/data/swapfile

  然後可以像添加分區一

copyright © 萬盛學電腦網 all rights reserved