在這一系列中,我要向您介紹如何安裝和使用新的內(nèi)置在 Linux 2.4 內(nèi)核中的“邏輯卷管理”支持。如果您以前從未使用過任何形式的 LVM ,那么您得好好學一學;它是一種非常棒的技術(shù)。 在我們真正設(shè)置和運行 LVM 之前,我要解釋一下它究竟是什么以及它是如何工作的。然后,我們準備對 LVM 做一些測試來充分了解它。
如果您象我一樣,那么您對 UNIX 和 Linux 的體驗是從 PC 平臺,而不是從大型的商業(yè) UNIX 服務器和工作站上開始的。在基本 PC 上,我們總是不得不對硬盤驅(qū)動器執(zhí)行分區(qū)。使用 PC 的人通常相當了解 fdisk 這樣的在硬盤上創(chuàng)建和刪除主要分區(qū)和擴展分區(qū)的工具。硬盤分區(qū)是一種令人厭煩,但公認是使操作系統(tǒng)設(shè)置和運行進程不可或缺的一部分。
因為要做好工作,確實需要精確地估計每個分區(qū)需要多少空間,所以硬盤驅(qū)動器分區(qū)可能是非常煩人的事。如果估計得不準確,Linux 系統(tǒng)很可能會顧此失彼 -- 為解決這個問題,您甚至可能需要執(zhí)行整個系統(tǒng)備份、將硬盤清除干凈,然后將所有數(shù)據(jù)恢復到新的(可能比原來好一些)分區(qū)布局中。討厭!這些就是系統(tǒng)管理員在一開始就盡力避免的情況。
雖然分區(qū)曾一度是靜態(tài)存儲器的天下,但值得慶幸的是,我們現(xiàn)在有許多 PC 重新分區(qū)工具(PowerQuest 的 Partition Magic 產(chǎn)品就是最流行的一種)。這些工具可以讓您用一個特殊磁盤來引導系統(tǒng),并可以動態(tài)地重新調(diào)整分區(qū)和文件系統(tǒng)的大小。重新引導后,您就擁有了重新調(diào)整過大小的新分區(qū),這樣就有望將您從存儲器危境中解脫出來。這些重新調(diào)整分區(qū)大小的工具很有效,并從某種程度上解決了一些存儲器管理問題。但它們是不是就完美了呢?不一定。
象 Partition Magic 這樣的工具對于工作站來說非常有效,但對服務器來說就不合適了。首先,它們需要重新引導系統(tǒng)。而這正是大多數(shù)系統(tǒng)管理員盡量避免的。如果在每次需要調(diào)整存儲器(例如,如果每周存儲器調(diào)整都需要做很大調(diào)整)時不能重新引導機器怎么辦?如果需要擴充文件系統(tǒng)使它能跨越多個硬盤驅(qū)動器會發(fā)生什么,或者如果在允許 Apache 繼續(xù)提供 Web 頁面的同時需要動態(tài)擴充或縮減卷的存儲容量,您該怎么做?在一個高度可用的動態(tài)環(huán)境中,基本的分區(qū)大小調(diào)整器無法滿足這些要求。對于這樣一些和其它一些情況,“邏輯卷管理”是一種非常出色(如果不是最完美)的解決方案。
現(xiàn)在,讓我們看看 LVM 是如何解決這些問題的。我們執(zhí)行下面的三步驟過程來創(chuàng)建 LVM 邏輯卷。首先,我們需要選擇用于 LVM 的物理存儲器資源。這些通常是標準分區(qū),但也可以是我們已創(chuàng)建的 Linux Software RAID 卷。如果使用 LVM 術(shù)語,這些存儲器資源稱為“物理卷”。設(shè)置 LVM 的第一步是正確初始化這些分區(qū)以使它們可以被 LVM 系統(tǒng)識別。如果添加物理分區(qū),它還包括設(shè)置正確的分區(qū)類型,以及運行 pvcreate 命令。
在初始化 LVM 使用的一個或多個物理卷后,可以繼續(xù)進行第二步 -- 創(chuàng)建卷組。您可以把卷組看作是由一個或多個物理卷所組成的存儲器池。 在 LVM 運行時,我們可以向卷組添加物理卷,甚至從中除去它們。不過,我們不能直接在卷組上安裝或創(chuàng)建文件系統(tǒng)。而是告訴 LVM 使用我們的卷組存儲器池創(chuàng)建一個或多個“邏輯卷”:
在物理卷上創(chuàng)建卷組
創(chuàng)建 LVM 邏輯卷非常容易,而且一旦創(chuàng)建它以后,我們就可以把文件系統(tǒng)放在它上面、安裝它,然后開始使用卷來存儲文件。使用 "lvcreate" 命令來創(chuàng)建邏輯卷,指定新卷的名稱、所希望的卷的大小,以及希望這個特定邏輯卷所屬的卷組。然后,LVM 系統(tǒng)從我們指定的卷組中分配存儲量來創(chuàng)建準備使用的新卷。創(chuàng)建新卷后,可以將 ext2 或 ReiserFS 文件系統(tǒng)放在上面、安裝它,然后照我們喜歡的方式使用它。
從現(xiàn)有卷組創(chuàng)建兩個邏輯卷
在幕后,LVM 系統(tǒng)以大小相等的“塊”(稱為“范圍”)為單位分配存儲量。我們可以指定在創(chuàng)建卷組時使用的特定的范圍大小。范圍的大小缺省為 4Mb,這對于大多數(shù)情況來說相當理想。LVM 的一個好處是在已經(jīng)安裝了邏輯卷并在使用邏輯卷的情況下,可以動態(tài)地改變邏輯卷使用的范圍的物理存儲位置(換句話說,就是存儲它們所在的磁盤)。LVM 系統(tǒng)確保邏輯卷在管理員物理地改變存儲位置的同時能夠繼續(xù)正常操作。
當然,因為所有事物都是在大小相等的范圍之上創(chuàng)建的,所以要為已存在的邏輯卷分配一些額外的范圍實際上很容易 -- 換句話說,動態(tài)“增長”卷:
從卷組添加額外的范圍,擴展邏輯卷的大小
一旦擴充了邏輯卷,接下來就可以擴充 ext2 或 ReiserFS 文件系統(tǒng)來利用這一新的磁盤空間。如果使用例如 resize_reiserfs 這樣的程序,也可以 在已安裝和正使用卷時擴充文件系統(tǒng)!真正令人稱奇的是 -- 使用 LVM 和聯(lián)機文件系統(tǒng)擴充實用程序,可以在改變存儲器配置時不再需要重新引導系統(tǒng),甚至不需要降低到運行級別 1。
唯一需要關(guān)閉系統(tǒng)的情況是在需要添加新的物理磁盤時。添加了新磁盤后,可以將這些新的物理卷添加到卷組中來創(chuàng)建新的范圍補給。
好,讓我們開始安裝 LVM。LVM 由兩部分組成:內(nèi)核部分和一套用戶空間工具。為了開始,先跳到主要 LVM 頁面(請參閱本文稍后部分的 參考資料)并下載可以找到的最新版本的 LVM tar 文件(當前是 lvm_0.9.1_beta3.tar.gz)。LVM tar 文件包含了所有用戶空間工具以及一組內(nèi)核補丁程序。這正是令人感興趣的地方。
如果已經(jīng)安裝了 2.4 系列內(nèi)核,則系統(tǒng)上已有 LVM 支持,如果沒有,很簡單,只需要重新編譯內(nèi)核來啟用 LVM 支持即可。不過,您可能不希望使用自帶的(或發(fā)行版提供的)2.4 內(nèi)核所包括的 LVM 支持。如果希望使用最新的 LVM 版本,要將 LVM tar 文件中的補丁程序應用到當前的 2.4 內(nèi)核源碼樹。以下是執(zhí)行方法。
為了開始,進入內(nèi)核源碼目錄 (/usr/src/linux) 并創(chuàng)建一個稱為 "extras" 的目錄。然后進入該目錄并抽取 LVM tar 文件:
# cd /usr/src/linux# mkdir extras# cd extras# tar xzvf /path/to/location/of/lvm_0.9.1_beta3.tar.gz |
執(zhí)行完這一步后,您會注意到在 extras 中有一個稱之為 "LVM" 的目錄,它包含了另一個根據(jù)您剛剛解包的 LVM 版本命名的目錄。進入這兩個目錄找到 LVM 源碼:
您將看到幾個文本文件、腳本和源目錄。您會在 "INSTALL" 文件中找到安裝指令;我將指導您完成這一過程。首先,我們希望運行配置腳本,如下:
# ./configure --prefix=/ --mandir=/usr/man |
執(zhí)行完這條命令后,將創(chuàng)建并配置 Makefile,以在 /sbin 中安裝所有 LVM 工具,在 /usr/man 中安裝幫助頁面。如果您的幫助頁面位于 /usr/share/man 中(按照 FHS 2.1),則對上述路徑作相應的調(diào)整。如果內(nèi)核源碼不在 /usr/src/linux 中,還需要將 "--with-kernel_dir=/path/to/usr/src/linux" 選項添加到一行中。配置腳本完成后,我們就可以準備安裝這些工具并生成當前內(nèi)核的補丁了。讓我們首先對內(nèi)核加以修補。進入 PATCHES 目錄:
# cd PATCHES |
現(xiàn)在輸入 "make"。makefile 將生成專用于特定 2.4 系列內(nèi)核源碼的補?。?/p>
# make |
補丁名為 lvm-[lvmversion]-[kernelversion].patch。例如,因為我使用的是版本 0.9.1_beta3 的 LVM 和內(nèi)核 2.4.0-ac11,所以補丁名為 lvm-0.9.1_beta3-2.4.0-ac11.patch。您可以在當前目錄中找到它?,F(xiàn)在該應用補丁了。要應用補丁,需要將目錄切換到內(nèi)核源碼所在的位置,然后使用 patch 命令,如清單 2 所示:
雖然 LVM INSTALL 文檔并沒有提到,但我通常將 "-l" 選項傳遞給 patch。該選項讓補丁程序補償空白中的任何變化(例如細微的縮排變化),這些變化一般會造成補丁的某些部分失敗。如果上述命令完成時沒有任何帶有 "FAILED" 的行,那么就可以準備安裝用戶磁盤空間工具了。如果不是這樣,您需要審視 /usr/src/linux 目錄來查找 ..rej 文件,然后使用文本編輯器手工將被拒絕的部分插入到源碼中 -- 真麻煩!不過,在大多數(shù)情況下,應用補丁都很順利,您可以迅速使用它。
好,現(xiàn)在有了一個經(jīng)過修補的內(nèi)核,因此它具有最新可用的 LVM 代碼。現(xiàn)在需要配置內(nèi)核來啟用 LVM 支持。我建議您直接將 LVM 支持編譯到內(nèi)核中而不是將它配置成作為一個模塊編譯。啟動您喜愛的 Linux 內(nèi)核配置方法:
# cd /usr/src/linux# make menuconfig |
您在 "Multi-device support (RAID and LVM)" 部分中可以找到 LVM 選項。一旦啟用了第一個選項:
[*] Multiple devices driver support (RAID and LVM) |
....您將看到以下選項,您也應該啟用它們:
<*> Logical volume manager (LVM) support |
根據(jù)您使用的 LVM 版本,可能還有其它一些希望啟用的與 LVM 相關(guān)的選項。完成后,保存內(nèi)核配置,并執(zhí)行標準內(nèi)核編譯例程,然后重新引導。恭喜 -- 您現(xiàn)已啟用了內(nèi)核 LVM 支持;現(xiàn)在,我們需要編譯和安裝用戶磁盤空間工具。這一步很簡單:
# cd /usr/src/linux/extras/LVM/0.9.1_beta3# make# make install |
另外還有一步,它是可選的。如果您要做的不僅是測試 LVM,還需要將以下幾行添加到啟動 rc 腳本中:
/sbin/vgscan/sbin/vgchange -a y |
這些行將瀏覽所有可用的卷組并激活它們。然后,將以下這行添加到關(guān)機 rc 腳本中,并確保它在卸裝了所有文件系統(tǒng)后執(zhí)行:
/sbin/vgchange -a n |
如果只是測試 LVM,可以跳過這些步驟。只是要記住,在每次重新引導后,在邏輯卷可以使用前,需要以 root 輸入 "vgscan" 和 "vgchange -a y"。
以上就是這篇文章的內(nèi)容。在下一篇文章中,我將介紹如何創(chuàng)建您自己的邏輯卷,以及如何發(fā)揮 LVM 的威力。到時候再見