1. 程式人生 > 其它 >Linux LVM

Linux LVM

什麼是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

  可以通過vgdisplayvgs來檢視建立的卷組

至此,物理卷和卷組已經建立成功,但是硬碟空間還不能使用,我們還需要建立邏輯卷。

第三步:基於卷組建立邏輯卷(LV)

lvcreate -n 自定義邏輯卷名稱 -L 要建立的邏輯卷的大小 VG名稱

例:lvcreate -n LVName -L 3G VGName

   可以使用命令lvslvdisplay檢視lv的詳細資訊

第四步:為建立好的邏輯卷建立檔案系統

例:mkfs.ext4 /dev/VGName/LVName

第五步:掛載LV

例:mount /dev/VGName/LVName /mnt

第六步:設定開機掛載

/dev/mapper/vg_test-lv_test /test ext4 defaults 1 2 寫入/etc/fstab

至此,大功告成!

至此,邏輯卷就建立掛載好了,可以使用啦~!

刪除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