LVM基本原理

一、 LVM 架構

1.基本概念介紹:
  • PP,物理分區(Physical Partition),如硬盤的分區,或 RAID 分區。

  • PV,物理卷(Physical Volume),是 PP 的 LVM 抽象,它維護了 PP 的結構信息,是組成 VG 的基本邏輯單元,一般一個 PV 對應一個 PP。

  • PE,物理擴展單元(Physical Extends),每個 PV 都會以 PE 爲基本單元劃分

  • VG,卷組(Volume Group),即 LVM 卷組,它可由一個或數個 PV 組成,相當於 LVM 的存儲池

  • LE,邏輯擴展單元(Logical Extends),組成 LV 的基本單元,一個 LE 對應一個 PE

  • LV,邏輯卷(Logical Volume),它建立在 VG 之上,文件系統之下,由若干個 LE 組成。

2. LVM 原理分析
   LVM 在每個物理卷(PV)頭部都維護了一個MetaData,叫做卷組描述域(VGDA,Volume Group Description Area),每個VGDA中都包含了整個VG(Volume Group)的信息,包括每個VG的佈局配置、PV 的編號、LV的編號,以及每個PE到LE的映射關係。同一個VG中的每個PV頭部的信息是相同的,這樣有利於發生故障時進行數據恢復。
   LVM 對上層文件系統提供 LV 層,隱藏了操作細節。對文件系統而言,對 LV 的操作與原先對 Partition 的操作沒有差別。當對 LV 進行寫入操作時,LVM 定位相應的 LE,通過 PV 頭部的映射表,將數據寫入到相應的 PE 上。
  LVM 實現的關鍵在於在PE 和LE間建立映射關係,不同的映射規則決定了不同的LVM存儲模型。LVM 支持多個PV的Stripe和Mirror,這點和軟RAID的實現十分相似。
   LVM 對上層文件系統提供抽象層,隱藏了操作細節,對文件系統而言,對LV的操作與原先對分區( Partition)的操作沒有差別。當對LV進行寫入操作時,LVM定位相應的LE,通過PV頭部的映射表,將數據寫入到相應的PE上。
3. LVM 優缺點分析
(1)LVM優點
  • 文件系統可以跨多個磁盤,因此大小不會受物理磁盤的限制。

  • 可以在系統運行狀態下動態地擴展文件系統大小。

  • 可以增加新磁盤到 LVM 的存儲池中。

  • 可以以鏡像的方式冗餘重要數據到多個物理磁盤上。

  • 可以很方便地導出整個卷組,並導入到另外一臺機器上。

(2)LVM缺點
  • 在從卷組中移除一個磁盤時必須使用 reducevg,否則會出問題。

  • 當卷組中的一個磁盤損壞時,整個卷組都會受影響。

  • 僅支持有限個文件系統類型的減小操作(ext3不支持減少文件系統大小的操作)。

  • 因爲加入了額外的操作,存儲性能會受影響(使用 Stripe 的情況另當別論)

4. 使用LVM的基本步驟
(1)在物理分區(PP)上創建物理卷(PV)
  1. pvcreate /dev/sda1   //將傳統分區變爲LVM中的物理卷

(2)在創建卷組(VG)
  1. vgcreate vg /dev/sda1   //將(1)中創建的物理卷加入卷組vg來完成卷組的創建

(3)從 VG 中分配空間,創建邏輯卷(LV)
  1. lvcreate -L 20G -n data vg //從卷組vg中創建大小爲20G,名稱爲data的邏輯卷分區

(4)格式化新創建的LV爲某種文件系統類型

  1. mke2fs -j /dev/vg/data     //將LV格式化爲ext2文件系統類型

(5)掛載LV

  1. mount -t reiserfs /dev/vg/data /mnt/

自此,新創建的LV可用。


二 、具體操作

1.準備物理分區(Physical Partions)
  首先,我們需要選擇用於 LVM 的物理存儲器。這些通常是標準分區,但也可以是已創建的 Linux Software RAID 卷。這裏我利用fdisk命令,將sdb、sdc兩塊磁盤分了兩個區sdb1、sdc1, 通過fdisk的t指令指定分區爲8e類型(Linux LVM) 。
  2.創建物理卷PV(Physical Volumes) 物理卷(Physical Volumes)簡稱PV,是在磁盤的物理分區或與磁盤分區具有同樣功能的設備(如RAID)上創建而來。它只是在物理分區中劃出了一個特殊的區域,用於記載與LVM相關的管理參數。
  創建物理卷的命令是 pvcreate :
  [root@li2 ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
  [root@li2 ~]# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created
  以上命令分別將/dev/sdc1、/dev/sdd1初始化成物理卷,使用物理卷顯示命令pvdisplay查看物理卷情況如下:
  [root@li2 ~]# pvdisplay
  --- NEW Physical volume ---
  PV Name /dev/sdb1
  VG Name
  PV Size 36.00 GB
  Allocatable NO
  PE Size (KByte) 0
  Total PE 0
  Free PE 0
  Allocated PE 0
  PV UUID QDmnUd-tuvH-U4Hn-n5Ry-zGRT-O1yK-67Dxbb
  --- NEW Physical volume ---
  PV Name /dev/sdc1
  VG Name
  PV Size 36.00 GB
  Allocatable NO
  PE Size (KByte) 0
  Total PE 0
  Free PE 0
  Allocated PE 0
  PV UUID NDBf68-6qrD-9hE6-Rotv-RdxL-Azvv-7NlC0S
  3.創建卷組VG(Volume Groups)
  卷組(Volume Group)簡稱VG,它是一個或者多個物理卷的組合。卷組將多個物理卷組合在一起,形成一個可管理的單元,它類似於非LVM系統中的物理硬盤。
  創建卷組的命令爲vgcreate,下面利用它創建了一個名爲“lvmdisk”的卷組,該卷組包含/dev/sdb1、/dev/sdc1兩個物理卷。
  [root@li2 ~]# vgcreate lvmdisk /dev/sdb1 /dev/sdc1
  Volume group "lvmdisk" successfully created
  使用卷組查看命令vgdisplay顯示卷組情況:
  [root@li2 ~]# vgdisplay
  --- Volume group ---
  VG Name lvmdisk
  System ID
  Format lvm2
  Metadata Areas 2
  Metadata Sequence No 1
  VG Access read/write
  VG Status resizable
  MAX LV 0
  Cur LV 0
  Open LV 0
  Max PV 0
  Cur PV 2
  Act PV 2
  VG Size 71.98 GB
  PE Size 4.00 MB
  Total PE 18428
  Alloc PE / Size 0 / 0
  Free PE / Size 18428 / 71.98 GB
  VG UUID SARfuj-wAUI-od81-VWAc-A1nt-aaFN-JWaPVf
  當多個物理卷組合成一個卷組後時,LVM會在所有的物理捲上做類似格式化的工作,將每個物理卷切成一塊一塊的空間,這一塊一塊的空間就稱爲PE(Physical Extent ),它的默認大小是4MB。
  由於受內核限制的原因,一個邏輯卷(Logic Volume)最多隻能包含65536個PE(Physical Extent),所以一個PE的大小就決定了邏輯卷的最大容量,4 MB 的PE決定了單個邏輯卷最大容量爲 256 GB,若希望使用大於256G的邏輯卷,則創建卷組時需要指定更大的PE。在Red Hat Enterprise Linux AS 4中PE大小範圍爲8 KB 到 16GB,並且必須總是 2 的倍數。
  例如,如果希望使用 64 MB 的PE創建卷組,這樣邏輯卷最大容量就可以爲4 TB,命令如下:
  # vgcreate - 64MB lvmdisk /dev/sdb1 /dev/sdc1
  4.創建邏輯卷LV(Logical Volumes)
  邏輯卷(Logical Volumes)簡稱LV,是在卷組中劃分的一個邏輯區域,類似於非LVM系統中的硬盤分區。
  創建邏輯卷的命令爲lvcreate,通過下面的命令,我們在卷組lvmdisk上創建了一個名字爲pldy1的邏輯卷,大小爲15GB,其設備入口爲/dev/lvmdisk/pldy1
  [root@li2 dev]# lvcreate -L 15G -n pldy1 lvmdisk
  Logical volume "pldy1" created
  也可以使用-l參數,通過指定PE數來設定邏輯分區大小。
  例如,希望創建一個使用全部空間的邏輯卷,需要先查清卷組中的PE總數,通過上面的vgdisplay命令查得當前卷組PE總數爲18428,命令如下:
  # lvcreate -l 18428 -n pldy1 lvmdisk
  當邏輯卷創建成功後,可以使用lvdisplay命令查看邏輯卷情況:
  [root@li2 ~]# lvdisplay
  --- Logical volume ---
  LV Name /dev/lvmdisk/pldy1
  VG Name lvmdisk
  LV UUID FQcnm3-BMyq-NkJz-hykw-9xg1-Qy8d-8UeGCN
  LV Write Access read/write
  LV Status available
  # open 0
  LV Size 15.00 GB
  Current LE 3840
  Segments 1
  Allocation inherit
  Read ahead sectors 0
  Block device 253:0
  同卷組一樣,邏輯卷在創建的過程中也被分成了一塊一塊的空間,這些空間稱爲LE(Logical Extents),在同一個卷組中,LE的大小和PE是相同的,並且一一對應。
  5.創建文件系統
  在邏輯捲上創建ext3文件系統:
  [root@li2 ~]# mkfs -t ext3 /dev/lvmdisk/pldy1
  創建了文件系統以後,就可以加載並使用了:
  [root@li2 ~]# mkdir /opt/Oracle
  [root@li2 ~]# mount   /dev/lvmdisk/pldy1    /opt/Oracle
  爲了在系統啓動時自動加載文件系統,則還需要在/etc/fstab中添加內容:
  /dev/lvmdisk/pldy1 /opt/Oracle ext3 defaults 1 2
  管理LVM
  LVM的最大好處就是可以動態地調整分區大小,而無須重新啓動機器,下面讓我們來體驗一下吧!繼續上面的實例,現假設邏輯卷/dev/lvmdisk/pldy1空間不足,需要增加其大小,我們分兩種情況討論:
  1.卷組中有剩餘的空間
  通過vgdisplay命令可以檢查當前卷組空間使用情況:
  [root@li2 ~]# vgdisplay
  --- Volume group ---
  VG Name lvmdisk
  System ID
  Format lvm2
  Metadata Areas 2
  Metadata Sequence No 2
  VG Access read/write
  VG Status resizable
  MAX LV 0
  Cur LV 1
  Open LV 0
  Max PV 0
  Cur PV 2
  Act PV 2
  VG Size 71.98 GB
  PE Size 4.00 MB
  Total PE 18428
  Alloc PE / Size 3840 / 15.00 GB
  Free PE / Size 14588 / 56.98 GB
  VG UUID SARfuj-wAUI-od81-VWAc-A1nt-aaFN-JWaPVf
  確定當前卷組剩餘空間56.98GB,剩餘PE數量爲14588個。在這裏將所有的剩餘空間全部增加給邏輯卷 /dev/lvmdisk/pldy1。
  [root@li2 Oracle]# lvextend -l+14588 /dev/lvmdisk/pldy1
  Extending logical volume pldy1 to 56.98 GB
  Logical volume pldy1 successfully resized
  上面的命令使用了-l+14588參數,它的意思是給指定的邏輯卷增加14588個PE。如果不是將全部空間都使用,還可使用其他形式的lvextend命令。
  例如將邏輯卷/dev/lvmdisk/pldy1增加5GB的空間,使其空間達到20GB,可寫成: “# lvextend   -L+5G /dev/lvmdisk/pldy1”或“# lvextend   -L20G /dev/lvmdisk/pldy1”。增加了邏輯卷容量後,就要通過ext2online命令修改文件系統的大小了。
  [root@li2 ~]# ext2online /opt/Oracle/
  轉換好後,讓我們查看一下文件系統的當前狀態:
  [root@li2 ~]# df -lh
  Filesystem 1k-blocks Used Available Use% Mounted on
  /dev/sda1 7.4G 1.8G 5.3G 25% /
  none 135M 0 135M 0% /dev/shm
  /dev/mapper/lvmdisk-pldy1 71G 81M 68G 1% /opt/Oracle
  2.卷組中空間不足
  當卷組中沒有足夠的空間用於擴展邏輯卷的大小時,就需要增加捲組的容量,而增加捲組容量的惟一辦法就是向卷組中添加新的物理卷。
  首先是增加一塊新硬盤(36GB SCSI 硬盤),並對其完成分區、創建物理卷等工作。接下來是利用vgextend命令將新的物理卷(/dev/sdd1)加入到卷組中。
  擴展卷組的命令如下:
  [root@li2 ~]# vgextend lvmdisk /dev/sdd1
  Volume group "lvmdisk" successfully extended
  利用vgdisplay命令查看卷組lvmdisk的情況:
  [root@li2 ~]# vgdisplay
  --- Volume group ---
  VG Name lvmdisk
  System ID
  Format lvm2
  Metadata Areas 3
  Metadata Sequence No 3
  VG Access read/write
  VG Status resizable
  MAX LV 0
  Cur LV 1
  Open LV 0
  Max PV 0
  Cur PV 3
  Act PV 3
  VG Size 107.97 GB
  PE Size 4.00 MB
  Total PE 27640
  Alloc PE / Size 3840 / 15.00 GB
  Free PE / Size 23800 / 92.97 GB


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章