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 組成。
文件系統可以跨多個磁盤,因此大小不會受物理磁盤的限制。
可以在系統運行狀態下動態地擴展文件系統大小。
可以增加新磁盤到 LVM 的存儲池中。
可以以鏡像的方式冗餘重要數據到多個物理磁盤上。
可以很方便地導出整個卷組,並導入到另外一臺機器上。
在從卷組中移除一個磁盤時必須使用 reducevg,否則會出問題。
當卷組中的一個磁盤損壞時,整個卷組都會受影響。
僅支持有限個文件系統類型的減小操作(ext3不支持減少文件系統大小的操作)。
因爲加入了額外的操作,存儲性能會受影響(使用 Stripe 的情況另當別論)
pvcreate /dev/sda1 //將傳統分區變爲LVM中的物理卷
vgcreate vg /dev/sda1 //將(1)中創建的物理卷加入卷組vg來完成卷組的創建
lvcreate -L 20G -n data vg //從卷組vg中創建大小爲20G,名稱爲data的邏輯卷分區
mke2fs -j /dev/vg/data //將LV格式化爲ext2文件系統類型
mount -t reiserfs /dev/vg/data /mnt/
二 、具體操作
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