Linux系統中磁盤創建管理(二)
Linux系統中LVM的創建與管理指南
LVM是Logical Volume Manager(邏輯卷管理器)的簡寫,它爲主機提供了更高層次的磁盤存儲管理能力。LVM可以幫助系統管理員爲應用與用戶方便地分配存儲空間,在LVM管理下的邏輯卷可以按需改變大小或添加移除。另外,LVM可以爲所管理的邏輯卷提供定製的命名標識。
LVM相關概念簡介
LVM是建立在磁盤分區和文件系統之間的一個邏輯層,專門爲文件系統屏蔽下層磁盤分區佈局,提供一個邏輯的盤卷,再在盤捲上來建立文件系統。
LVM的結構如圖1所示:
圖1展示了LVM的基本結構,那麼圖中的VG是什麼,PV又是什麼?下面對LVM邏輯卷涉及的概念作以簡單的介紹。
1、物理卷(Physical Volume,PV)
物理卷就是指硬盤分區,也可以指整個硬盤或已創建的軟RAID ,是LVM的基本存儲設備,與普通物理存儲介質的區別是該設備包含有LVM相關的管理參數。
2、卷組(Volume Group,VG)
卷組是由一個或多個物理卷所組成的存儲池,在卷組上能創建一個或多個“LVM分區”(邏輯卷)。
3、邏輯卷(Logical Volume,LV)
邏輯卷LV類似於非LVM系統中的硬盤分區,它建立在卷組之上,是一個標準的塊設備,在邏輯卷之上可以建立文件系統。可以做這樣一個設想來理解以上三者的關係: 如果把PV比做地球的一個板塊,VG則是一個地球,因爲地球是由多個板塊組成的,那麼在地球上劃分一個區域並標記爲亞洲,則亞洲就相當於一個LV。
4、物理塊(Physical Extent,PE)
物理卷是由大小相等的物理塊PE爲存儲的基本單位,同時也是LVM尋址的最小單元。
5、邏輯塊(Logical Extent,LE)
邏輯卷是由大小相等的邏輯塊爲存儲的基本單位。在同一個卷組中,LE的大小和PE是相等的,有一一對應的關係。
6、卷組描述區(Volume Group Description Area,VGDA)
VGDA中保存了邏輯卷以及卷組相關的元數據,它和磁盤將包含分區信息的元數據保存在位於分區的起始位置的分區表類似。
VGDA包括以下內容: PV描述符、VG描述符、LV描述符、和一些PE描述符。系統啓動LVM時激活VG,並將VGDA加載至內存,來識別LV的實際物理存儲位置。當系統進行I/O操作時,就會根據VGDA建立的映射機制來訪問實際的物理位置。
如何創建邏輯卷
創建邏輯卷通常包括如下步驟:
創建分區
創建物理卷
創建卷組
激活卷組
創建邏輯卷
創建文件系統
相關命令:
PV命令——
pvcreate 建立 PV
pvscan 查找當前系統中具有 PV 屬性的磁盤
pvdisplay 顯示目前系統上面的 PV 狀態
VG命令——
vgcreate 建立 VG
vgscan 查看系統上具有 VG 屬性
vgdisplay 查看系統上的 VG 狀態
vgextend 在 VG 內增加額外的 PV
vgreduce 在 VG 內移除 PV
LV命令——
lvcreate 建立 LV
-L 後面設定容量
-n 後面設定 LV 名稱
lvscan 查看系統上 LV 的屬性
lvdisplay 查看系統上的 LV 狀態
lvextend 在 LV 裏面增加容量
下面通過一個實例來詳細介紹創建邏輯卷的整個過程。
【LVM實例】
添加1塊物理硬盤,進行 LVM 的磁盤管理。
查看分區表:
#fdisk -l
可以看到有 1 塊新硬盤,sdb
我們將這塊硬盤分成 3 個分區,每個分區 300MB 空間
上面曾經提到過,標準的 Linux分區ID號爲 83,此時我們已經產生了3個標準的分區:sdb1 sdb2 sdb3。下面需要將這 3 個標準分區的 ID號改成可以支持 LVM 的分區ID。
備註:LVM的分區ID=8e
備註:t 表示更改分區 ID號
保存退出之後,查看一下分區表,就看見了 3個新的分區,並且 ID=8e
[root@oracle ~]# partprobe
既然已經產生了支持 LVM的標準分區,下面來創建 PV,這裏我們先使用兩個標準分區 sdb1 sdb2
查看一下創建的結果:
pvscan 查找當前系統中具有 PV 屬性的磁盤
pvdisplay 顯示目前系統上面的 PV 狀態
現在創建了 PV 之後,開始將這兩個 PV 合併成一個 VG,
並把這個 VG 定名爲 firstVG
備註:此時這個 VG 中的 PE爲默認值,即 4MB
若想改變 PE 的大小,需要在創建 VG 的時候指定 PE 的大小
如:
備註:我們從 VG 中刪除一個 PV
#vgreduce firstVG /dev/sdb2
看一下 VG 的創建結果
vgscan 查看系統上具有 VG 屬性
vgdisplay 查看系統上的 VG 狀態
現在 VG 也產生了,接下來就是將這個 VG 分割成 LV,從上圖可以看到該 VG 的容量是 576MB,下面我們直接將整個 VG 劃分成一個 LV,同時將這個 LV 命名爲 firstLV。
查看一下 LV 的創建結果
lvscan 查看系統上 LV 的屬性
lvdisplay 查看系統上的 LV 狀態
現在 LV 也創建好了,接下來就是格式化、掛載目錄使用了
備註:實現永久掛載
#vi /etc/fstab
當有一天發現 /mnt/lvm 這個目錄的空間不夠用了,咋辦?
下面就來演示擴展的操作:
先卸載該目錄
我們在最開始的時候創建了第三個具有8e標識的分區 sdb3,現在先把這個分區變成 PV,再將該 PV加入到 firstVG中。
創建 PV 的步驟略。
加入到原有 VG 中後,可以先查看一下新的 PV 的容量,pvdisplay
之後根據這個容量顯示的單位來進行原有 LV 的擴展
lvextend 在 LV 裏面增加容量
此時查看一下 firstLV 的容量
仔細觀察可以看到原有 firstLV 的大小已經被擴容到 856MB了。
我將已經擴容了的新 LV 掛載到 /mnt/lvm下
使用 df 命令來查看一下 /mnt/lvm這個目錄的容量
我們看到了一個有意思的地方,顯示 /mnt/lvm 目錄的容量爲 567MB。
也就是說 /dev/firstVG/firstLV 這個分區的大小並沒有擴大,但是上面明明看到了新的 LV 的大小是 856MB,這是咋回事呢??
這裏涉及到了文件系統的擴容,需要一個命令 resize2fs
備註:文件系統擴容時,需要先將已經掛載的目錄卸載
現在我們再次掛載之後再來查看一下 /mnt/lvm 目錄的大小
至此實現了真正的擴容。
刪除LVM
#umount /mnt/lvm 卸載目錄
#lvremove /dev/firstVG/firstLV 移除 LV
#vgchange -a n firstVG 關閉 VG 的 Active 標誌
#vgremove firstVG 移除 VG
#pvremove /dev/sdb1 移除 PV