在Linux下管理磁盤貯存區算的上一個技巧,很多朋友在這上面常常問我,今天我就把這方面的東西匯總一下,從Linux特有的交換分區的原理開始介紹Linux下如何管理磁盤。
原理篇
1. 交換空間是什麼
Linux 中的 交換空間(Swap space) 在物理內存(RAM)被充滿時被使用。如果系統需要更多的內存資源,而物理內存已經充滿,內存中不活躍的頁就會被移到交換空間去。雖然交換空間可以為帶有少量內存的機器提供幫助,但是這種方法不應該被當做是對內存的取代。交換空間位於硬盤驅動器上,它比進入物理內存要慢。
交換空間可以是一個專用的交換分區(推薦的方法),交換文件,或兩者的組合。 交換空間的總大小應該相當於你的計算機內存的兩倍和 32 MB這兩個值中較大的一個,但是它不能超過 2048 MB(2 GB)。
2. 添加交換空間
有時,你會有必要在安裝後添加更多的交換空間。例如,你把系統內存從 64 MB 升級到 128 MB,但是你只有 128 MB 的交換內存。如果你執行的是大量使用內存的操作或運行需要大量內存的程序,把交換區增加到 256 MB 可能會對你有利。
你有兩種選擇:添加一個交換分區或添加一個交換文件。推薦你添加一個交換分區,不過,若你沒有多少空閒空間可用,創建交換分區可能會不大容易。
要添加一個交換分區(假設 /dev/hdb2 是你想添加的交換分區):
硬盤驅動器不能在被使用(分區不能被掛載,交換分區不能被啟用)。要達到這一目的的最簡單方法是在救援模式下引導你的系統。當提示掛載文件系統時,選擇 「跳過」 。
如果驅動器不包含任何被使用的分區,你還可以卸載這些分區,使用 swapoff 命令來關閉硬盤驅動器上的所有交換空間。
技巧篇
使用 parted 或 fdisk 來創建交換分區。 parted 比 fdisk 使用起來更方便,因此,只有 parted 在這裡會被說明。要使用 parted 來創建交換分區:
在 shell 提示下以根用戶身份鍵入命令: parted /dev/ hdb 。這裡的 /dev/ hdb 是你的帶有空閒空間的硬盤驅動器的設備名稱。
在 (parted) 提示下,鍵入 print 來查看現存的分區和空閒空間的數量。起止值以 MB 為單位。判定硬盤驅動器上的空閒空間數量,以及你想給新建的交換分區分配的空間數量。
在 (parted) 提示下,鍵入 mkpartfs part-type linux-swap start end ,這裡的 part-type 是 primary、extended、logical 中的一個, start 是分區的起始點, end 是分區的終止點。
警告:改變會立即發生,在鍵入時請謹慎從事。
鍵入 quit 來退出 parted 。
現在,你就可以創建交換分區了,使用 mkswap 命令來設置交換分區。在 shell 提示下以根用戶身份鍵入以下命令:
mkswap /dev/hdb2;
要立即啟用交換分區,鍵入以下命令:
swapon /dev/hdb2;
要在引導時啟用,編輯 /etc/fstab 文件來包括以下行:
/dev/hdb2 swap swap defaults 0 0;
在系統下次引導時,它就會啟用新建的交換分區。
新添了交換分區並啟用它之後,請查看 cat /proc/swaps 或 free 命令的輸出來確保交換分區已被啟用了。
要添加交換文件:
判定新交換文件的大小,將大小乘以 1024 來判定塊的大小。例如,大小的 64 MB 的交換文件的塊大小為 65536。
在 shell 提示下以根用戶身份鍵入以下命令,其中的 count 等於想要的塊大小:
dd if=/dev/zero of=/swapfile bs=1024 count=65536;
使用以下命令來設置交換文件:
mkswap /swapfile;
要立即啟用交換文件而不是在引導時自動啟用,使用以下命令:
swapon /swapfile;
要在引導時啟用,編輯 /etc/fstab 文件來包含以下行:
/swapfile swap swap defaults 0 0;
系統下次引導時,它就會啟用新建的交換文件。
新添了交換分區並啟用它之後,請查看 cat /proc/swaps 或 free 命令的輸出來確保交換分區已被啟用了。
3. 刪除交換空間
要刪除交換分區:
硬盤驅動器不能在被使用(分區不能被掛載,交換分區不能被啟用)。要達到這一目的的最簡單方法 是在救援模式下引導你的系統。
如果驅動器不包含任何被使用的分區,你還可以卸載這些分區,使用 swapoff 命令來關閉硬盤驅動器上的所有交換空間。
在 shell 提示下以根用戶身份鍵入以下命令來確定交換分區已被禁用(這裡的 /dev/hdb2 是交換分區):
swapoff /dev/hdb2;
從 /etc/fstab 文件中刪除這個項目。
使用 parted 或 fdisk 來刪除分區。只有 parted 在這裡會被說明。要使用 parted 來刪除分區:
在 shell 提示下以根用戶身份鍵入命令: parted /dev/ hdb 。這裡的 /dev/ hdb 是你的帶有交換空間的硬盤驅動器的設備名稱。
在 (parted) 提示下,鍵入 print 來查看現存的分區並判定你想刪除的交換分區的次要號碼。
在 (parted) 提示下,鍵入 rm MINOR ,這裡的 MINOR 是你想刪除的分區的次要號碼。
警告:改變會立即發生,你必須鍵入正確的次要號碼。
鍵入 quit 來退出 parted 。
要刪除交換文件:
在 shell 提示下以根用戶身份執行以下命令來禁用交換文件(這裡的 /swapfile 是交換文件):
swapoff /swapfile;
從 /etc/fstab 中刪除該項目。
刪除實際文件:
rm /swapfile;
4. 移動交換空間
要把交換空間從某處移到另一處,請首先遵循刪除交換空間的說明,再遵循添加交換空間的說明。
在你安裝了 Red Hat Linux 系統後,你可能想查看現存的分區表,改變分區的大小, 刪除分區,或從空閒空間或附加的硬盤驅動器上添加分區。 parted工具會允許你執行這些任務。本章討論如何使用parted命令來執行文件系統任務。此外,你還可以使用 fdisk來執行多數此類任務(除重新劃分分區以外)。要獲得 fdisk的更多信息,請閱讀其說明書頁(man)或信息頁(info)。
你必須安裝了parted 軟件包才能使用parted工具。要啟動parted ,在shell 提示下以根用戶身份鍵入命令 parted /dev/hdb
這裡的/dev/hdb是你想配置的設備名稱。你會看到一個(parted)提示。鍵入 help來查看可用命令的列表。
如果你想創建、刪除分區或重新劃分分區大小,分區所在設備不能正在被使用(分區不能被掛載,並且交換空間不能被啟用)。 達到這個目的的最簡單方法是在救援模式中引導系統。
如果驅動器不包含任何正在被使用的分區,你可以使用 umount 命令來卸載分區,使用swapoff 命令來關閉硬盤驅動器上的交換空間。
命令篇
下表包含一列最常用的parted命令。
print
A table similar to the following will appear:
Disk geometry for /dev/hda: 0.000-9765.492 megabytes
Disk label type: msdos
Minor Start End Type ; Filesystem; Flags
1 ; 0.031 101.975; primaryext3 boot
2 101.975 611.850; primarylinux-swap;
3 611.851 760.891; primaryext3
4 760.8919758.232; extended ; lba
5 760.9229758.232; logicalext3
第一行顯示了磁盤的大小;第二行顯示了磁盤標簽類型;剩余的輸出顯示了分區表。
在分區表中,Minor(次要)標簽是分區號碼。例如,次要號碼為 1 的分區和 /dev/hda1 相對。
Start(開始)和 End(結束)值以 MB 為單位。
Type(類型)是 primary、extended、logical 中的一個。
Filesystem(文件系統)是文件系統的類型,它可以是 ext2、ext3、FAT、hfs、jfs、linux-swap、ntfs、reiserfs、hp-ufs、sun-ufs 或 xfs 之一。
Flags(標志)列列出了分區被設置的標准。可用的標志有: boot、root、swap、hidden、raid、lvm 或 lba。
竅門:
要不重新啟動 parted來選擇不同的設備,使用select命令,再緊跟設備名,如/dev/hdb。然後,你便可以查看或配置它的分區表。