什么是LVM
LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁盤分區進行管理的一種機制。
為什么使用LVM
直接使用fdisk分區掛載的話,隨着時間的推移,數據量越來越大,硬盤空間越來越小,要想擴充容量的話,就必須掛載新硬盤然后做數據遷移,這就必然導致前台業務的停止,不符合企業需求,因此完美的解決方法應該是在零停機前提下可以自如對文件系統的大小進行調整,可以方便實現文件系統跨越不同磁盤和分區。Linux提供的邏輯盤卷管理(LVM,Logical Volume Manager)機制就是一個完美的解決方案。
LVM邏輯卷管理通過將底層物理硬盤抽象封裝起來,以邏輯卷的形式表現給上層系統,邏輯卷的大小可以動態調整,而且不會丟失現有數據。新加入的硬盤也不會改變現有上層的邏輯卷,大大提高了磁盤管理的靈活性。
LVM原理
首先我們討論以下幾個LVM術語:
物理存儲介質(The physical media):這里指系統的存儲設備:硬盤,如:/dev/hda、/dev/sda等等,是存儲系統最低層的存儲單元。
物理卷(physical volume):物理卷就是指硬盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
卷組(Volume Group):LVM卷組類似於非LVM系統中的物理硬盤,其由物理卷組成。可以在卷組上創建一個或多個“LVM分區”(邏輯卷),LVM卷組由一個或多個物理卷組成。
邏輯卷(logical volume):LVM的邏輯卷類似於非LVM系統中的硬盤分區,在邏輯卷之上可以建立文件系統(比如/home或者/usr等)。
PE(physical extent):每一個物理卷被划分為稱為PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認為4MB。
LE(logical extent):邏輯卷也被划分為被稱為LE(Logical Extents) 的可被尋址的基本單位。在同一個卷組中,LE的大小和PE是相同的,並且一一對應。
一塊硬盤(物理存儲介質)被格式化為物理卷(physical volume),其內部被分成若干個默認大小為4M的PE(physical extent),然后在PV的基礎上創建卷組(Volume Group),可以把一個或者多個PV加到VG中,VG就好像一個空間池,假如多少個PV,VG就有多大的容量,最后基於VG創建邏輯卷(logical volume) ,一個邏輯卷就是若干個PE,然后將LV格式化再掛載(將LV當成是分區)
1、物理磁盤被格式化為PV,空間被分為一個個PE
2、不同的PV加入同一個VG,不同PV的PE全部進入VG的PE池內
3、LV基於PE創建,大小為PE的整數倍,組成LV的PE可能自來不同的物理磁盤
4、LV現在就直接可以格式化后掛載使用了
5、LV的擴充縮減實際上就是增加或減少組成該LV的PE的數量,其過程不會丟失數據
實現LVM
第一步:創建物理卷(PV)
pvcreate 硬盤名稱
pvcreate /dev/sdb /dev/sdc
可以通過pvdisplay或者pvs命令來查看創建的物理卷
第二步:創建一個卷組(VG),將物理卷加入卷組中
vgcreate 自定義VG名稱 要加入的PV
vgcreate VGName /dev/sdb /dev/sdc
可以通過vgdisplay或vgs來查看創建的卷組
至此,物理卷和卷組已經創建成功,但是硬盤空間還不能使用,我們還需要創建邏輯卷。
第三步:基於卷組創建邏輯卷(LV)
lvcreate -n 自定義邏輯卷名稱 -L 要創建的邏輯卷的大小 VG名稱
lvcreate -n LVName -L 3G VGName
可以使用命令lvs或lvdisplay查看lv的詳細信息
第四步:為創建好的邏輯卷創建文件系統
mkfs.ext4 /dev/VGName/LVName
第五步:掛載LV
mount /dev/VGName/LVName /mnt
至此,邏輯卷就創建掛載好了,可以使用啦~!
刪除LV
lvremove 邏輯卷名稱
lvremove /dev/vgTest/lvTest
刪除VG
vgremove vg名稱
vgremove vgTest
刪除PV
pvremove pv名稱
pvremove /dev/sdb /dev/sdc
注意:刪除邏輯卷的過程一定是
卸載掛載---刪除lv---刪除vg---刪除pv
拉伸與縮小LVM
LVM和其他的分區方式最大的優勢就是可以動態的拉伸或縮小邏輯卷空間,並且是在線執行的,拉伸並不會影響原有數據無需下線,縮小邏輯卷需要下線,如果直接縮小,數據則有可能被破壞
拉伸LV:
1、保證VG中有足夠的空閑空間
vgdisplay
2、擴充邏輯卷
lvextend -L +1G /dev/vgTest/lvTest
3、查看擴充后的lv的大小
lvdisplay
4、更新文件系統
resize2fs /dev/vgTest/lvTest
5、查看更新后的文件系統
df -h
拉伸VG
當邏輯卷空間不夠的時候,我們可以擴充邏輯卷,其實質就是從VG中拿若干PE到LV中,但是當VG中空間也不夠時,我們就需要拓展VG,也就是將新硬盤格式化為PV添加到VG中
1、將要添加到VG的硬盤格式化為PV
pvcreate /dev/sdd
2、將新的PV添加到指定卷組中
vgextend linuxcast /dev/sdd
3、查看擴充后的VG
vgs
縮小邏輯卷
邏輯卷的縮小必須離線,需要卸載邏輯卷,如果在線縮小,則有可能丟失數據,先縮小文件系統,再縮小LV
1、卸載已經掛載的邏輯卷
2、縮小文件系統
resize2fs 需要縮小的文件系統 縮小到的大小
resize2fs /dev/linuxcast/mylv 10G
3、縮小LV
lvreduce -L 縮小大小 縮小的LV
4、查看縮小后的LV
5、掛載
縮小卷組
1、將一個PV從指定的卷組中移除
vgreduce 卷組名稱 硬盤名稱
vgreduce linuxcast /dev/sdd
2、查看縮小后的卷組
vgdisplay
整理自:LinuxCast(www.LinuxCast.net)