LVM: Logical Volume Manager
概念
它就是通過將底層的物理硬盤抽象的封裝起來,然后以邏輯卷的方式呈現給上層應用。
允許對卷進行方便操作的抽象層,包括重新設定 文件系統的大小 允許在多個物理設備間重新組織文件系統 ? 將設備指定為物理卷 ? 用一個或者多個物理卷來創建一個卷組 ? 物理卷是用固定大小的物理區域(Physical Extent,PE)來定義的 ? 在物理卷上創建的邏輯卷是由物理區域(PE)組成 ? 可以在邏輯卷上創建文件系統
原理描述
LVM是邏輯盤卷管理(LogicalVolumeManager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬盤和分區之上的一個邏輯層,來提高磁盤分區管理的靈活性。
通過創建LVM,我們可以更輕松的管理磁盤分區,將若干個不同大小的不同形式的磁盤整合為一個整塊的卷組,然后在卷組上隨意的創建邏輯卷,既避免了大量不
同規格硬盤的管理難題,也使邏輯卷容量的擴充縮減不再受限于磁盤規格;并且LVM的snapshot(快照)功能給數據的物理備份提供了便捷可靠的方式
要想理解好LVM的原理,我們必須首先要掌握4個基本的邏輯卷概念。
① PE (Physical Extend) 物理拓展,物理磁盤上的每一個分區
② PV (Physical Volume) 物理卷, fdisk工具修改卷標為 8e,形成一個PV
③ VG (Volume Group) 卷組,將多個PV組合起來成為一個大的硬盤
④ LV (Logical Volume) 邏輯卷, 在VG上劃分出來的邏輯卷
lvm, lvm2
dm: device mapper 功用:將一個或多個底塊設備(包括RAID)組織一個邏輯存儲空間; 其邊界:可動態擴展或縮減; lv, multipath PE, LE Pysical Extent Logical Extent
管理命令:
pv: pvcreate, pvdisplay, pvs, pvscan, pvremove, pvmove vg: vgcreate, vgdisplay, vgs, vgscan, vgremove, vgextend, vgreduce lv: lvcreate, lvdisplay, lvs, lvresize, lvextend, lvreduce, lvremove
創建PV **pvcreate /dev ** 示例: 創建一個10G vg:
PV:
創建pv:
準備塊設備,調整其id為8e; pvcreate [-f] /dev/DEVICE
查看
# pvdisplay [/dev/DEVICE] 查看的是更詳細的信息 # pvs
移動pv上的pe到其它pv:
# pvmove
刪除pv:
# pvremove
VG:
創建vg: 新增一個vg,并指明其包含哪個或哪些pv實現;
# vgcreate VGNAME /dev/PV1...
-L 指明容量
-n 起個名
刪除vg:
# vgremove VGNAME... 縮減vg: 通過從vg中移除pv實現 注意:計劃移除的pv不能包含已經存儲數據的pe;如果有需要先使用pvmove移動到同vg內其它pv上; pvmove /dev/SOME_PV vgreduce VG_NAME /dev/some_PV
擴展vg: 向vg中添加更多的pv實現
vgextend VG_NAME /dev/some_PV...
LV: Logical Volume
查看
lvs lvdisplay
創建lv:
lvcreate -L 指明的大小 -n 名字 VG_name LogicalVolume{Name|Path}] VG_NAME -L指明大小 設備路徑: (1) /dev/VGNAME/LVNAME (2) /dev/mapper/VGNAME-LVNAME 實際路徑:/dev/dm-# 注意:lv的大小必須為pe的整數倍
移除lv:
lvremove LV_PATH
擴展lv:
存儲設備有:物理邊界 文件系統有:邏輯邊界
擴展:先擴展物理邊界,而后拉伸邏輯邊界
lvextend, lvresize
resize2fs
如何擴展lv:
1、先確定目標大小:要確保此lv所在vg中有足夠的空閑可用; 2G --> 4G 4G +2G 2、擴展物理邊界 lvextend -L [+]#[bBsSkKmMgGtTpPeE] /dev/VGNAME/LVNAME 3、拉伸邏輯邊界 resize2fs /dev/VGNAME/LVNAME
縮減lv:
注意: 1、縮減要離線! 2、先縮減文件系統大小,再縮減lv的大?。? 過程: 1、先確定縮減后的目標大小:要確??s減后的大小能夠容納現在的所有數據; 2、卸載邏輯卷,并強制做文件系統一致性檢查; e2fsck -f /dev/VGNAME/LVNAME 3、縮減邏輯邊界 resize2fs /dev/VGNAME/LVNAME #[bBsSkKmMgGtTpPeE] 4、縮減物理邊界 lvreduce -L [-]#[bBsSkKmMgGtTpPeE] /dev/VGNAME/LVNAME
快照卷:
訪問原卷上數據另一個路徑,備份工具可以通過此路徑完成數據備份; 快照卷自身僅是為備份工具提供一個時間點一致的訪問路徑; 備份開始之前創建快照卷,完成之后即可刪除之;快照卷的生命周期; 如何保證通過快照所訪問到的數據的時間點一致? 通過把那些要發生改變的位于原卷上的數據自動復制一份至快照卷進行的,因此,快照卷上的數據如果有效,則必須能完成存儲原卷即將發生改變的所有的數據的原有版本。 創建快照卷: (1) 快照卷要與原卷在同一卷組中,因此創建快照卷無須指定卷組; (2) 快照卷大小要精心設定;另外,快照卷應該是只讀的; 創建命令: lvcreate -L SIZE -n Name -p r -s /dev/VGNAME/LVNAME
練習:
1、創建一個至少有兩個PV組成的大小為20G的名為testvg的VG;要求PE大小為16MB, 而后在卷組中創建大小為5G的邏輯卷testlv;掛載至/users目錄
2、新建用戶archlinux,要求其家目錄為/users/archlinux,而后su切換至archlinux用戶,復制/etc/pam.d目錄至自己的家目錄
3、擴展testlv至7G,要求archlinux用戶的文件不能丟失
4、收縮testlv至3G,要求archlinux用戶的文件不能丟失
5、對testlv創建快照,并嘗試基于快照備份數據,驗正快照的功能
一 、
1、用fdisk分區 把 /dev/sdd 和/dev/sde 各分出10G
如果不同步就用 partprobe 命令同步一下!
2、創建兩個pv并組成一個vg
vgcreate testvg -s 16M /dev/sdd1 /dev/sde1
3、創建testlv 并掛載
lvcreate -L 5G -n testlv testvg mkdir /users mkfs.ext4 /dev/testvg/testlv mount /dev/testvg/testlv /users
二、
1、
useradd archlinux -d /users/archlinux
三、擴展testlv、
1、擴展擴展物理邊界
lvextend -L +2G /dev/testvg/testlv
2、擴展邏輯邊界
resize2fs /dev/testvg/testlv
四、收縮testlv
1、卸載邏輯卷,并強制做文件系統一致性檢查
umount /dev/testvg/testlv e2fsck -f /dev/testvg/testlv
2、縮減
resize2fs /dev/testvg/testlv 3G lvreduce -L 3G /dev/testvg/testlv
3、掛載查看
mount /dev/testvg/testlv /users/
五、創建快照
[root@localhost ~ ]# lvcreate -L 2G -n kuaizhao -p r -s /dev/testvg/testlv Logical volume "kuaizhao" created.
將快照掛載
mount -r /dev/testvg/kuaizhao /mnt/kuaizhao [root@localhost /mnt/kuaizhao ]# ll 總用量 20 drwx------. 6 archlinux archlinux 4096 9月 2 22:07 archlinux
刪除/users中的archlinux
[root@localhost /mnt/kuaizhao ]# cd /users [root@localhost /users ]# ls archlinux lost+found [root@localhost /users ]# rm -rf archlinux [root@localhost /users ]# ls lost+found [root@localhost /users ]# ls /mnt/kuaizhao/ archlinux lost+found [root@localhost /users ]# cp -arp /mnt/kuaizhao/archlinux . [root@localhost /users ]# ls archlinux lost+found
原創文章,作者:qzx,如若轉載,請注明出處:http://www.www58058.com/43318