Linux下LVM(邏輯卷管理)
在Linux系統安裝伊始,Linux用戶就會面臨一個問題:如何給系統各個分區分配足夠使用的磁盤空間。這個問題,當系統的存儲空間即將用盡時顯得尤爲棘手。解決的辦法通常是使用符號鏈接,或者一些調整分區大小的工具(如parted)對分區大小進行調整,但這只是一個暫時性的解決辦法,不久後,我們又會面臨同樣的問題。
此外,每次這樣的更改,都需要對分區表進行修改,又要對機器進行關機重啓操作。這樣的話,會對服務器上正在跑的業務造成一定的損失。LVM(邏輯卷管理)能夠幫助我們解決這個問題。
一、LVM簡介
LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它將一個或多個硬盤的分區在邏輯上集合,相當於一個大硬盤來使用,當硬盤的空間不夠使用的時候,可以繼續將其它的硬盤的分區添加其中,這樣可以實現磁盤空間的動態管理,相對於普通的磁盤分區有很大的靈活性。
與傳統的磁盤與分區相比,LVM爲計算機提供了更高層次的磁盤存儲。它使系統管理員可以更方便的爲應用與用戶分配存儲空間。在LVM管理下的存儲卷可以按需要隨時改變大小或添加移除(可能需對文件系統工具進行升級)。LVM也允許按用戶組對存儲捲進行管理,允許用戶使用更直觀的名稱(如"sales'、 'development')代替物理磁盤名(如'sda'、'sdb')來標識存儲卷。
因此,使用LVM主要是方便了對存儲系統的管理,增加了系統的擴展性。
注:由四個磁盤分區可以組成一個很大的空間,然後在這些空間上劃分一些邏輯分區,當一個邏輯分區的空間不夠用的時候,可以從剩餘空間上劃分一些空間給空間不夠用的分區使用。
二、LVM的基本術語
LVM是在磁盤分區和文件系統之間添加的一個邏輯層,來爲文件系統屏蔽下層磁盤分區佈局,提供一個抽象的盤卷,在盤捲上建立文件系統。首先我們要清楚以下幾個術語所代表的含義:
物理存儲介質(The physical media):
指硬盤,如:/dev/hda1、/dev/sda等,是存儲系統最底層的存儲單元。
物理卷PV(physicalvolume):
指硬盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
卷組VG(Volume Group):
LVM卷組類似於非LVM系統中的物理硬盤,其由物理卷組成。可以在卷組上創建一個或多個“LVM分區”(邏輯卷),LVM卷組由一個或多個物理卷組成。
邏輯卷LV(logicalvolume):
LVM的邏輯卷類似於非LVM系統中的硬盤分區,在邏輯卷之上可以建立文件系統(比如/home或者/usr等)。
PE(physical extent):
每一個物理卷被劃分爲大小相等的、稱爲PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認爲4MB。
LE(logical extent):
邏輯卷也被劃分爲被稱爲LE(LogicalExtents) 的可被尋址的基本單位。在同一個卷組中,LE的大小和PE是相同的,並且一一對應。
簡單來說就是:
PV:是物理的磁盤分區
VG:LVM中的物理的磁盤分區,也就是說PV必須加入VG,可以將VG理解爲一個倉庫或者是幾個大的硬盤,一個VG中包含多個PV
LV:也就是從VG中劃分的邏輯分區
注:每個PV有大小相等的PE組成(默認爲4M);每個LV有大小相等的LE組成(默認爲4M)
三、安裝LVM
lsmod| grep dm_mod #查看device-mapper模塊是否已經加載
若出現以下輸出,即表明加載成功:
dm_mod 63097 4 dm_mirror,dm_multipath,dm_raid45,dm_log
否則,使用以下命令加載device-mapper模塊:
modprobedm_mod
yuminstall lvm2 #安裝LVM2
四、創建和管理LVM
1、創建分區
fdisk /dev/sdb #創建新分區,將整個磁盤都創建爲兩個個分區,分區號爲sdb1和sdb2
t #更改分區類型爲8e
w #保存分區設置
partprobe #使分區立即生效,否則需要重啓系統
*LVM創建的大致過程
從硬盤驅動器分區中創建物理卷(physicalvolumes-PV)。
從物理卷中創建卷組(volumegroups-VG)
從卷組中創建邏輯卷(logicalvolumes-LV),並分派邏輯卷掛載點,其中只有邏輯卷纔可以寫數據。
2、創建PV
相關命令:
pvcreate 創建PV
pvscan 掃描PV
pvdisplay 顯示PV
pvremove 刪除PV
pvcreate /dev/sdb1
pvcreate /dev/sdb2 #使用pvcreate進行轉換
pvdisplay #查看創建好的pv
3、創建VG(這裏我們的VG中目前只有/dev/sdb1,如果以後VG的空間使用完,我們可以在添加其他硬盤擴充VG)
相關命令:
vgcreate 創建VG
vgscan 掃描目前系統上是否有VG存在
vgdispaly 顯示VG狀態
vgextend 在目前的VG中添加pv,即擴展VG
vgreduce 減小VG,即在目前的VG中移除pv
vgchange 配置VG是否啓動(active)
vgremove 刪除VG
vgcreate VG0 /dev/sdb1 /dev/sdb2 … #vgcreate 卷組名 物理卷1 物理卷2 …
vgdisplay #查看創建的VG狀態
vgchange–ay VG0 #激活卷組
4、創建LV
lvcreate -L 800M –n LV1 VG0 #創建一個大小爲800M,名爲LV1的邏輯卷。其中L指定大小,n指定邏輯卷名稱,VG0表示從VG0卷組中劃分LV1
lvdisplay #查看創建的LV
5、LV格式化及掛載
mkfs.ext4 /dev/VG0/LV1
或者mkfs –text4 /dev/VG0/LV1 #格式化LV1
mkdir/mnt/lvm #創建邏輯卷掛載目錄
mount/dev/VG0/LV1 /mnt/lvm #掛載
df–Thl #查看邏輯卷是否掛載上
最好是將LV1寫入fstable文件中,放邊其在啓東市就能掛載。
eg:/dev/VG0/LV1 /mnt/lvm ext4 defaults 1 2
到此,LVM的完整過程已經創建完畢。
五、LVM容量調整
下面的這些內容,纔是LVM真正強大的地方。LVM的容量調整可以再多個環節進行,無論是在PV卷,VG卷組還是LV上,都可以方便快速的進行容量調整。
一般情況下,我們對LVM分區大小的調整,都是從VG的剩餘空間來擴展的。如果VG中沒有剩餘空間了,那麼我們要通過添加PV給VG擴容。在沒有現成的PV時,我們需要通過添加硬盤來創建PV。
1、使用fdisk添加一塊物理分區,修改其分區類型爲8e。
fdisk /dev/sdc
n
l #新建邏輯分區
1 #分區號設爲1
t 8e #分區類型更改爲8e
w #寫入分區表
partprobe #重讀分區表
mkfs.ext4 /dev/sdc1 #格式化
partx/dev/sdc #查看當前硬盤的分區表及使用情況
具體步驟,參見“創建和管理LVM”中的“創建分區”。
這裏需要首先卸載掉原來掛載的LV1:
umount /dev/VG0/LV1
2、添加物理卷(這裏假定新添加的物理分區爲/dev/sdc1)
pvcreate /dev/sdc1
pvscan #瀏覽創建的物理卷,或者使用pvdisplay
3、對卷組進行擴容
vgdisplay
vgextend VG0 /dev/sdc1
4、對原來的LV進行擴容
這裏我們已經對卷組VG0擴容完畢,也就是說,VG0中已經有空閒的空間可以提供給LV進行擴容。
lvdisplay
lvextend -L +500M /dev/VG0/LV1 #對LV1擴容500M
lvscan
resize2fs -f /dev/VG0/LV1 #使系統識別到更改容量後的系統
mount /dev/VG0/LV1 /mnt/lvm #對剛纔卸載掉的LV1進行重新掛載
六、卸載LVM的方法
如果不想使用LVM的話,可以卸載它, 卸載的方法與分區的刪除方法類似,就是最後創建的最先刪除。順序如下:
先刪除LV
再刪除VG
最後PV
以前的LVM的分區應用fdisk轉換成其它類型的文件系統,當普通分區使用。
eg:1、df
2、umount/mnt/lvm
3、lvremove /dev/VG0/LV1 #刪除邏輯卷
4、vgchange –a n VG0 #更改VG0爲休眠狀態
vgremove VG0 #刪除卷組
5、pvscan
pvremove /dev/sdb1 /dev/sdb2 /dev/sdc1
6、使用fdisk修改磁盤的分區類型。一般的Linux文件系統類型爲83。