[RHCE] LVM

LVM

LVM(Logical Volume Management,邏輯捲軸管理)是一種可以更彈性管理磁碟的方法。藉由將實體儲存裝置的分割區整合提供一個更大的儲存空間,讓管理員依照需求去分配資源。並且若日後需要增加或縮減檔案系統空間,都可以在不重新格式化整個檔案系統的情況下完成。

LVM主要分成四個項目,而這四個項目也代表著建制LVM的階段作業。

PV(Physical Volume,實體捲軸)

LVM中最底層的空間,為實體切割區調整系統識別碼後格式化的區域。因為PV無法跨實體磁碟,所以最大空間即為實體磁碟空間。

PE(Physical Extend,實體延伸區塊)

PE是LVM中最小的儲存單位,類似實體磁碟的block,建立VG時可以決定PE的大小,預設是4MB。PE可以決定VG的大小,在LVM1中,PE的個數限制在65534個,每個PE的大小為8k-512MB。而在LVM2中,PE移除了個數的限制,大小則是延伸到16GB,使得管理員可以建立更大的VG。

VG(Volume Group,捲軸群組)

VG為PV所集合而成的空間,可跨越實體磁碟。VG的大小主要因PE而決定,在LVM1中,VG最大的限制到2TB。在LVM2中,VG在32bits的系統中可到達16TB,在64bits的系統更可到達8EB的空間。

LV(Logical Volume,邏輯捲軸)

VG最終會切割出各個LV,在格式化LV之後就可成為類似分割區的空間儲存資料。LV的大小也是以PE為單位。

整個LVM的建立流程就是,一個實體的磁碟經由建立PV,再由建立VG決定PE大小而堆疊組合出VG。VG在經過管理者分配切割為LV,格式化LV之後便成為可用的檔案系統,如下圖所示:
1326908877-2349957955.jpg-RHCE LVM

LVM CREATE

首先先來介紹LVM建立的方法。
  1. 使用 #fdisk 建立一個系統識別碼為8e的分割區( #fdisk 切割出分割區後按t可變更識別碼)。
  2. #pvcreate /dev/[分割區代號] 建立PV。
  3. 使用 #vgcreate -s [PE大小] [VG名稱] [PV名稱] 建立VG,-s為設定PE大小,預設為4MB。如有多個PV,例如vda5、vda6、vda7,則輸入 #vgcreate -s [VG名稱] /dev/vda{5,6,7}
  4. 使用 #lvcreate -n [LV名稱] -L 2G [VG名稱] 建立LV,-n為設定LV名稱,-L為設定LV大小。或者可使用-l,為以PE作為單位切割,-L並非切割剛好的空間,而是切割出最接近的PE數量。
  5. #mkfs -t ext4 /dev/[VG名稱]/[LV名稱],建立檔案系統。
  6. #mkdir /[掛載點],建立掛載點。
  7. #mount /dev/[VG名稱]/[LV名稱] /[掛載點] 掛載,或編輯/etc/fstab自動掛載。

當各步驟輸入指令完畢之後,可以查詢各階段設定是否正確。#pvdisplay /dev/[PV分割區代號],查詢PV資訊。#vgdisplay [VG名稱],查詢VG資訊。#lvdisplay /dev/[VG名稱]/[LV名稱],查詢LV資訊。

LVM EXTEND & REDUCE

LVM的優點就在於它彈性的空間配置,可以隨時增加或縮減空間的大小而不影響檔案系統。例如當管理員購置的新硬碟,可以增加到VG或LV裡面,而不用格式化整個系統。或者當管理員發現哪邊有閒置的空間,可以先刪除然後增加到其他檔案系統中。

LVM在進行空間縮減的時候,會先以空白的空間進行搬移,盡量避免動到有資料的空間。但在進行空間大小變更前,最好還是先確認過目前空間的狀況後,才開始進行縮減的動作。不然剩餘的空間不足以應付增加或縮減時,資料就有可能受損了。所以建議使用指令 #df -h /[掛載點],或者 #vgdispaly [VG名稱] 來確認目前空間大小。

LV Extend & Reduce

當進行LV增加或縮減時,避免出錯最好都先將空間卸載。增加LV大小時,必須要先確定VG有足夠的延伸空間。先輸入 #lvextend -L [空間大小] /dev/[VG名稱]/[LV名稱]-L可改為-l以PE數量為單位。如果空間大小前面使用「+」表示增加多少空間大小,若不使用表示指定為多少空間大小。然後 #resize2fs -p /dev/[VG名稱]/[LV名稱] 變更檔案系統大小,再重新掛載檔案系統。

要縮小LV大小時,系統會提示要先做 #e2fsck -f [VG名稱]/[LV名稱] 這個動作。跟延伸不同的是要先做 #resize2fs -p /dev/[VG名稱]/[LV名稱] [空間大小]要注意這邊是縮減檔案系統為指定大小,而不是縮減多少大小。然後 #lvreduce -L [空間大小] /dev/[VG名稱]/[LV名稱]-L可改為-l,以PE數量為單位。跟延伸相同,若空間大小前加上「-」表示減少多少空間大小,不使用表示指定空間大小。完成之後再將檔案系統重新掛載即可。

VG Extend & Reduce

要進行VG的空間增加時,我們要先建立新的PV。再使用 #vgextend [VG名稱] /dev/[PV分割區代號],就可以把新的PV加進VG了。

而要縮減VG大小時,先以 #pvmove /dev/[PV分割區代號] 移除PV。再使用 #vgreduce [VG名稱] /dev/[PV分割區代號] 將VG中的PV移除。

留言