一、LVM簡單介紹:
LVM(Logical Volume Manager):邏輯卷管理,它主要用於在邏輯層面上,將多個存儲設備組織成一個存儲設備進行使用。與raid不同的是,LVM支持在線擴展和縮減,同時,LVM支持快照。
LVM機制:在內核空間,將多個存儲設備PV(Physical Volume)組織在一起形成邏輯層面的VG(Volume Group),在VG層面將存儲空間分給成一個一個的數據塊(PE—Physical Extend)來管理。在用戶空間,用戶可以以一個PE爲單位,向內核申請使用VG中的多個PE塊,來使用存儲空間。
如果線上業務的存儲空間不夠用同時又不能讓業務下線就可以在在VG中申請使用多個PE,在線擴展業務的使用空間。同時,如果業務的存儲空間過大,爲了使其他業務使用該閒置空間,可以將LV的PE塊放回到VG中以供下次業務的使用。
二、創建LVM操作:
1、創建PV:
在進行PV創建之前,先加入一塊虛擬硬盤,然後對其分區,並改變分區特性爲“8e”。
加入硬盤:虛擬機—>設置—>添加—>硬盤—>“選擇合適的大小”—>保存退出就OK。在這裏我就不做截圖說明了。
分區操作:如果有不熟悉的朋友可以查看http://11229885.blog.51cto.com/11219885/1749744。
PV的創建:
命令:pvcreate <device-name>
# pvcreate /dev/sdb[1,2,3]
PV其他常用命令:
pvremove: 將某一個PV移除;
pvscan: 掃描PV
pvs: 查看PV的短信息
pvdisplay: 查看PV的詳細信息
pvmove: 將某一個PV上的數據移動到另一個PV上,常用於縮減操作。
2、創建VG:
在以上創建的PV的基礎上創建VG。
命令:vgcreate [option] <vg-name> <pv-device>
option: -s :指定PE的大小,默認爲4M。
# vgcreate -s 8M myvg /dev/sdb[1,2,3]
VG常用命令:
vgremove:移除VG。
vgscan:掃描VG
vgs:顯示VG的短信息
vgdisplay:顯示VG的詳細信息
vgrename:給VG重命名
vgextend:擴展VG
vgreduce: 縮減VG
3、創建LV:
命令:lvcreate [option] <vg-name>
Option:-n <lv-name> : 指定lv的名稱
-L # :指定LV的大小
# lvcreate -n mylv -L 200M myvg
LV的其他命令:lvremove,lvscan,lvs,lvdisplay,lvextend,lvreduce。其含義與VG類命令類似,就不做詳細解釋了。
三、使用LVM
1、格式化
命令:mke2fs -t <fs-type> <device-name>
# mke2fs -t ext4 /dev/myvg/mylv
補充:在這裏需要說明一下,對於lv的訪問不能簡單使用其設備名稱就可以訪問到,可以使用一下三種方式訪問:
1、/dev/vg_name/lv_name。如:/dev/myvg/mylv。
2、/dev/mapper/vg_name-lv_name。如:/dev/mapper/myvg-mylv。
3、/dev/dm-#。#代表系統對於LV的編號,該文件是真實的LV文件。
2、掛載
命令:mount <Source-device> <Dest-dir>
# mount /dev/myvg/mylv /mnt/lvdir
3、擴展LV操作
命令:lvextend # <lv-path> ; resize2fs <lv-path> [#]
擴展物理邊界:# lvextend 400M /dev/myvg/mylv
擴展邏輯邊界:# resize2fs /dev/myvg/mylv (不帶#,默認改變成與物理邊界一致)
4、縮減LV操作
命令:umount <lv-path>; e2fsck -f <lv-path>; lvreduce # <lv-path>; resize2fs <lv-path> <#>
卸載並檢測:
# umount /dev/myvg/mylv
# e2fsck -f /dev/myvg/mylv
縮減邏輯邊界:# resize2fs /dev/myvg/mylv 200M
縮減物理邊界:# lvreduce 200M /dev/myvg/mylv
5、擴展VG操作
命令:vgextend <vg-name> <device-path>
# vgextend myvg /dev/sdb4
注意:/dev/sdb4必須是一個從存儲設備中分好的分區。
6、縮減VG操作
命令:pvmove <source-pv> <dest-pv>;vgreduce <vg-name> <pv-name>
# pvmove /dev/sdb3 /dev/sdb1
# vgreduce myvg /dev/sdb3
四、快照
快照卷:它是邏輯卷的一種,提供文件的另一種訪問路徑。
實現機制:快照卷也是一種存數設備,它提供了另一種對快照對象的訪問路徑。當快照對象的某個數據快中的內容需要改變時,在數據改變之前,保存一份數據塊副本在快照卷中。其他不改變的數據就不用再在快照卷中保存。當訪問快照卷時,改變的數據塊在快照卷中可以直接訪問,沒有改變的數據塊仍然在原來的快照對象中訪問。
快照卷的大小:快照卷的大小取決於在規定的時間內,變化數據的總大小。
實現過程:
命令:lvcreate [option] <lv-mame>
可以通過使用option(-s)來實現對某一個邏輯卷創建快照卷。
# lvcreate -s -L 200M -n mylv-snap /dev/myvg/mylv.