一,LVM知識要點
LVM(Logical Volume Manager) 是Linux環境下對磁盤分區進行管理的一種機制,它是一種抽象化存儲技術,實現的方式,根據操作系統而有所不同。LVM是建立在硬盤和分區之上的一個邏輯層,來提高磁盤分區管理的靈活性。通過LVM管理器,用戶可以便捷的操作管理虛擬的邏輯卷對數據進行管理,而不用去擔心複雜物理硬件變化.能夠方便的擴展邏輯卷的大小.
DM邏輯設備介紹(lvm對底層物理設備組合成邏輯設備的核心就是由內核中的dm模塊來實現的,dm纔是真正意義上將多個組件擴展爲一個邏輯設備的核心)
1 、物理卷(Pysical Volume):也就是物理磁盤,類似於/dev/sda2, /dev/sdb1等等,可以是一個分區或者是整塊硬盤,也可以是RAID陣列組成的分區.多個PV可以組合起來形成一個VG(卷組Volume Group),物理卷的基本單位是由PE (Physical Extends)物理磁盤塊組成,在創建時可以指定物理卷的大小,指定之後不能更改
2、PE (Physical Extend):建立VG的時候指定的block塊大小,默認是4MB。一個VG最大可以容許65534個PE.
3、卷組(Voume Group):將多個物理卷組合叫做卷組,卷組類似於擴展分區 必須被格式化之後纔可以使用,一個卷組內可以創建多個邏輯卷,一個邏輯卷可跨越多個物理卷。
4、邏輯卷(Logical Volume):在卷組之上創建的邏輯扇區,用戶對數據文件進行管理的扇區.本身有兩種邊界,一個是物理邊界,一個是邏輯邊界。可以創建文件系統對數據文件進行管理操作,需要注意的是假設一個PE的大小爲8MB,那麼創建一個大小爲50MB的邏輯卷,它必須是8的倍數(7*8=56)所以它不可能精確到50MB。調整邏輯卷大小,其實就是給邏輯卷通過卷組增加或減少物理塊實現.
5、LV:(邏輯塊),根據操作系統而有所不同。大小由物理塊決定.
6、 快照可以理解成訪問同一個文件的另一條途徑,把數據停留在過去的某一個時刻主要是實現數據備份.對卷創建了快照實際上是對邏輯卷創建快照,快照卷也就是跟它的邏輯卷在同一個卷組當中。當數據沒有改變時用戶是通過快照卷調用原卷數據,而數據發生改變的部分會記錄在快照卷中,用戶訪問時是把快照卷中備份的原數據返回給用戶.快照卷應該是隻讀的,不允許修改,跟原卷在同一卷組內.
命令介紹
物理卷命令
pvcreate(創建pv) pvs(查看pv信息) pvdisplay(查看pv詳細信息) pvmove(將PV數據轉移至其他PV)pvremove(刪除pv) pvscan(掃描pv)
pvcreate:創建pv物理卷 如:pvcreate /dev/sdb1
pvs:查看pv物理卷 如:pvs /dev/sdb1
pvdisplay:查看pv詳細信息 如:pvdisplay /dev/sdb1
pvmove:將pv物理捲上的數據移動到其他pv 如:pvmove /path/to/pv
卷組命令
vgcreate(創建vg) vgremove(刪除vg)vgextend(擴展vg) vgreduce(縮減vg )vgs(查看vg信息)vgdisplay(查看vg詳細信息) vgscan(掃描vg)
-s:指定PE
vgcreate myvg /dev/sdb{n,n} 創建VG卷組
vgdisplay myvg 只查看myvg卷組
vgremove myvg:刪除myvg卷組,(刪除一個vg)
vgreduce VG_NAME /path/to/pv :縮小減vg,也就意味着可以把pv縮減(一定要先把pv上的數據移走)
pvmove /dev/sdb1 把sdb1上面的數據移走
vgreduce myvg /dev/sdb1 從myvg移走/dev/sdb1
pvremove /dev/sdb1 刪除/dev/sdb1
擴展vg:vgextend myvg /dev/sdb2 擴展myvg卷組
邏輯卷命令
lvcreate(創建lv) lvremove(刪除lv) lvextend(擴展lv) lvreduce(縮減lv)lvs(查看lv信息)lvdisplay(查看lv詳細信息) lvscan(掃描lv)
lvcreate -L +G(指定空間大小)-n LV_NAM(邏輯卷名稱) VG_NAME 會自動擴展VG_NAME
lvdisplay:顯示所有lv邏輯卷 如:dev/myvg/testlv
二,常用命令
邏輯卷擴展的步驟:
1、先確定擴展的大小;並確保所屬的卷組有足夠的剩餘空間;
2、擴展物理邊界:
# lvextend -L [+]Size /path/to/lv_device
3、擴展邏輯邊界:
# resize2fs /path/to/lv_device
縮減邏輯卷的步驟:
1、卸載卷,並執行強制檢測
# e2fsck -f /path/to/lv_device
2、縮減邏輯邊界:
# resize2fs /path/to/lv_device SIZE
3、縮減物理邊界:
# lvreduce -L [-]Size /path/to/lv_device
三, 實驗:
1、創建一個由兩個物理卷組成大小爲20G的卷組myvg,要求PE大小16M;而後新建 大小爲7G邏輯卷mylv1,要求其文件系統爲ext4,塊大小爲2048,且開機能自動掛載至/users;
2、新建用戶openstack,其家目錄爲/users/openstack,而後切換至openstack用戶,複製一些文件至其家目錄中;
3、縮減mylv1至5G大小;而後切換至openstack用戶,確保其數據沒有丟失;
4、對mylv1創建快照卷snap-mylv1,並通過其備份數據至/tmp/user.tar.bz2;
劃分2個任意大小的硬盤分區組合爲一個20G的卷組myvg,設置PE大小爲16M,
3.1.1新建兩個個10g分區sdb1和sdb2
3.1.2 重讀分區
3.1.3 修改分區格式爲fd,只有分區ID設置爲8e,Linux LVM才能創建pv
3.1.4 創建pv
3.1.5 創建vg
3.1.6 創建lv, 大小爲7G邏輯卷mylv1,要求其文件系統爲ext4,塊大小爲2048
此處需要注意
#卷組只需要名稱,但lv靠設備文件來引用(/dev/卷組(gv)名/pv名 (/dev/vgtest/lvtest0)
#邏輯卷的設備文件存放路徑:/dev/mapper/
3.1.7開機能自動掛載至/users
掛載
修改配置文件開機自動掛載/etc/fstab
3.1.8重啓驗證開機自動加載是否成功
新建用戶openstack,其家目錄爲/users/openstack,而後切換至openstack用戶,複製一些文件至其家目錄中;
3.2.1 新建用戶openstack,其家目錄爲/users/openstack
3.2.2 切換至用戶openstack,複製一些文件至其家目錄中;
縮減mylv1至5G大小;而後切換至openstack用戶,確保其數據沒有丟失;
縮減邏輯卷的步驟:
1、卸載卷,並執行強制檢測
# e2fsck -f /path/to/lv_device
2、縮減邏輯邊界:
# resize2fs /path/to/lv_device SIZE
3、縮減物理邊界:
# lvreduce -L [-]Size /path/to/lv_device
3.3.1卸載並檢測lv
3.3.2縮減邏輯邊界:
3.3.4 重新掛載並驗證
對mylv1創建快照卷snap-mylv1,並通過其備份數據至/tmp/user.tar.bz2;
3.4.1創建快照卷snap-mylv1,預計快照大小爲100M,但是因爲pv塊是16M爲單位,所以創建出來的快照爲112M
3.4.2掛載快照卷,快照卷只給讀權限
3.4.3通過snap-mylv1備份數據至/tmp/user.tar.bz2
3.4.4 查看備份包/tmp/user.tar.bz2