內核模塊dm可以實現以下功能
快照:保留數據當時狀態,提供數據另外訪問路徑。如果訪問快照里面的數據沒改變,那么會使用原來路徑,如果發生改變則訪問快照數據。可以用來進行備份。
多路徑:每條路徑,操作系統會認為是一個實際存在的物理盤,但實際上只是通向同一個物理盤的不同路徑而已
LVM2:
物理卷(PV):
物理盤區(PE):邏輯存儲單位
邏輯卷組(VG):為LV提供統一接口容器。鏡像功能:在不同物理卷中都存放一份相同數據
邏輯卷(LV):動態擴展縮減的文件系統
邏輯分區(LE):指定多個PE為一個LE
快照卷:為邏輯卷預留空間創建快照
LVM操作:
pv:pvcreate,pvremove,pvscan,pvdisplay,pvmove
vg:vgcreate,vgremove,vgextend,vgreduce,vgs,vgscan
lv:lvcreate,lvremove,lvextend,lvreduce,lvresize,lvs,lvdisplay


[root@localhost ~]# pvcreate /dev/sdd{1,2} Physical volume "/dev/sdd1" successfully created. Physical volume "/dev/sdd2" successfully created. [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 rhel lvm2 a-- <93.82g 4.00m /dev/sdd1 lvm2 --- 1.41g 1.41g /dev/sdd2 lvm2 --- 599.00m 599.00m 詳細信息查看pvdisplay [root@localhost ~]# pvscan PV /dev/sda2 VG rhel lvm2 [<93.82 GiB / 4.00 MiB free] PV /dev/sde2 lvm2 [699.00 MiB] PV /dev/sdf1 lvm2 [600.00 MiB] PV /dev/sdd2 lvm2 [599.00 MiB] PV /dev/sdf2 lvm2 [1.41 GiB] PV /dev/sde1 lvm2 [<1.32 GiB] PV /dev/sdd1 lvm2 [1.41 GiB] Total: 7 [99.81 GiB] / in use: 1 [<93.82 GiB] / in no VG: 6 [<6.00 GiB] |
vg操作:
vgcreate vgname path_to_pv -s指定pe大小默認4M [root@localhost ~]# vgs -------------------查看vg VG #PV #LV #SN Attr VSize VFree rhel 1 2 0 wz--n- <93.82g 4.00m [root@localhost ~]# vgcreate yellow /dev/sd{d,e,f}{1,2} -------------------創建vg Volume group "yellow" successfully created [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree rhel 1 2 0 wz--n- <93.82g 4.00m yellow 6 0 0 wz--n- <5.98g <5.98g [root@localhost ~]# vgdisplay yellow --- Volume group --- VG Name yellow System ID Format lvm2 Metadata Areas 6 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 6 Act PV 6 VG Size <5.98 GiB PE Size 4.00 MiB Total PE 1530 Alloc PE / Size 0 / 0 Free PE / Size 1530 / <5.98 GiB VG UUID u5fZZK-BWLN-RtSt-kvL9-cyfr-oJUW-F0e52L [root@localhost ~]# vgremove yellow --------------刪除vg Volume group "yellow" successfully removed 從vg中刪除pv: [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 rhel lvm2 a-- <93.82g 4.00m /dev/sdd1 yellow lvm2 a-- 1.41g 1.41g /dev/sdd2 yellow lvm2 a-- 596.00m 596.00m /dev/sde1 yellow lvm2 a-- 1.31g 1.31g /dev/sde2 yellow lvm2 a-- 696.00m 696.00m /dev/sdf1 yellow lvm2 a-- 596.00m 596.00m /dev/sdf2 yellow lvm2 a-- 1.41g 1.41g [root@localhost ~]# pvmove /dev/sdf2 -----------------先把pv數據移動到其他vg No data to move for yellow. [root@localhost ~]# vgreduce yellow /dev/sdf2 -----------------從vg中刪除vg Removed "/dev/sdf2" from volume group "yellow" [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree rhel 1 2 0 wz--n- <93.82g 4.00m yellow 5 0 0 wz--n- <4.57g <4.57g [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 rhel lvm2 a-- <93.82g 4.00m /dev/sdd1 yellow lvm2 a-- 1.41g 1.41g /dev/sdd2 yellow lvm2 a-- 596.00m 596.00m /dev/sde1 yellow lvm2 a-- 1.31g 1.31g /dev/sde2 yellow lvm2 a-- 696.00m 696.00m /dev/sdf1 yellow lvm2 a-- 596.00m 596.00m /dev/sdf2 lvm2 --- 1.41g 1.41g [root@localhost ~]# pvremove /dev/sdf2 --------------------刪除pv Labels on physical volume "/dev/sdf2" successfully wiped. [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 rhel lvm2 a-- <93.82g 4.00m /dev/sdd1 yellow lvm2 a-- 1.41g 1.41g /dev/sdd2 yellow lvm2 a-- 596.00m 596.00m /dev/sde1 yellow lvm2 a-- 1.31g 1.31g /dev/sde2 yellow lvm2 a-- 696.00m 696.00m /dev/sdf1 yellow lvm2 a-- 596.00m 596.00m 加入一個vg [root@localhost ~]# pvcreate /dev/sdf2 Physical volume "/dev/sdf2" successfully created. [root@localhost ~]# vgextend yellow /dev/sdf2 Volume group "yellow" successfully extended [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree rhel 1 2 0 wz--n- <93.82g 4.00m yellow 6 0 0 wz--n- <5.98g <5.98g |
lv操作:
創建lv: lvcreate -n lv_name -L (大小KMG)[-l 多少個盤區] vg_name [root@localhost ~]# lvcreate -L 80M -n testlv yellow Logical volume "testlv" created. [root@localhost ~]# lvdisplay /dev/yellow/testlv --- Logical volume --- LV Path /dev/yellow/testlv LV Name testlv VG Name yellow LV UUID 1zCsL4-YEZt-Nh1P-RTAw-dH7R-LG7B-1cVx5D LV Write Access read/write LV Creation host, time localhost.localdomain, 2018-05-30 23:47:15 +0800 LV Status available # open 0 LV Size 80.00 MiB Current LE 20 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2 [root@localhost ~]# mkfs.ext4 -j /dev/yellow/testlv -------------創建文件系統 mke2fs 1.42.9 (28-Dec-2013) 文件系統標簽= OS type: Linux 塊大小=1024 (log=0) 分塊大小=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 20480 inodes, 81920 blocks 4096 blocks (5.00%) reserved for the super user 第一個數據塊=1 Maximum filesystem blocks=33685504 10 block groups 8192 blocks per group, 8192 fragments per group 2048 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729 Allocating group tables: 完成 正在寫入inode表: 完成 Creating journal (4096 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 [root@localhost ~]# mount /dev/yellow/testlv /mnt/ --------掛在到相關目錄 邏輯卷移除: 移除前確認掛載點已經umount [root@localhost ~]# lvremove /dev/mapper/yellow-testlv Logical volume yellow/testlv contains a filesystem in use. [root@localhost ~]# umount /mnt/ [root@localhost ~]# lvremove /dev/mapper/yellow-testlv Do you really want to remove active logical volume yellow/testlv? [y/n]: y Logical volume "testlv" successfully removed |
擴展邏輯卷:
lvextend -L [+]#(加號表示擴展多少,#表示擴展到多少) [root@localhost mapper]# df -h 文件系統 容量 已用 可用 已用% 掛載點 /dev/mapper/rhel-root 90G 33G 58G 37% / devtmpfs 1.4G 0 1.4G 0% /dev tmpfs 1.5G 0 1.5G 0% /dev/shm tmpfs 1.5G 9.4M 1.4G 1% /run tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup /dev/sda1 1014M 170M 845M 17% /boot tmpfs 287M 28K 287M 1% /run/user/0 /dev/mapper/yellow-qq 477M 2.3M 445M 1% /uuu [root@localhost mapper]# vgs ---------------------擴展前查看vg free有足夠大小 VG #PV #LV #SN Attr VSize VFree rhel 1 2 0 wz--n- <93.82g 4.00m yellow 6 1 0 wz--n- <5.98g <5.49g [root@localhost mapper]# lvextend -L 2G /dev/yellow/qq Size of logical volume yellow/qq changed from 500.00 MiB (125 extents) to 2.00 GiB (512 extents). Logical volume yellow/qq successfully resized. [root@localhost mapper]# df -h 文件系統 容量 已用 可用 已用% 掛載點 /dev/mapper/rhel-root 90G 33G 58G 37% / devtmpfs 1.4G 0 1.4G 0% /dev tmpfs 1.5G 0 1.5G 0% /dev/shm tmpfs 1.5G 9.4M 1.4G 1% /run tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup /dev/sda1 1014M 170M 845M 17% /boot tmpfs 287M 28K 287M 1% /run/user/0 /dev/mapper/yellow-qq 477M 2.3M 445M 1% /uuu |
縮減邏輯卷:
1、不能在線縮減,得先卸載。 2、確保縮減后大小能承載原有數據 3、縮減之前強行檢查文件,確保文件系統處於一致性檢查 [root@localhost mapper]# umount /uuu
[root@localhost mapper]# e2fsck -f /dev/mapper/yellow-qq e2fsck 1.42.9 (28-Dec-2013) 第一步: 檢查inode,塊,和大小 第二步: 檢查目錄結構 第3步: 檢查目錄連接性 Pass 4: Checking reference counts 第5步: 檢查簇概要信息 /dev/mapper/yellow-qq: 11/128016 files (0.0% non-contiguous), 26684/512000 blocks [root@localhost mapper]# lvreduce -L 1G /dev/yellow/qq WARNING: Reducing active logical volume to 1.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce yellow/qq? [y/n]: y Size of logical volume yellow/qq changed from 2.00 GiB (512 extents) to 1.00 GiB (256 extents). Logical volume yellow/qq successfully resized.
[root@localhost mapper]# mount /dev/yellow/qq /uuu [root@localhost mapper]# df -h 文件系統 容量 已用 可用 已用% 掛載點 /dev/mapper/rhel-root 90G 33G 58G 37% / devtmpfs 1.4G 0 1.4G 0% /dev tmpfs 1.5G 0 1.5G 0% /dev/shm tmpfs 1.5G 9.4M 1.4G 1% /run tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup /dev/sda1 1014M 170M 845M 17% /boot tmpfs 287M 28K 287M 1% /run/user/0 /dev/mapper/yellow-qq 477M 2.3M 445M 1% /uuu |
快照卷:
1、生命周期內數據增長量不能超過快照卷大小(可以指定lv中數據量大小) 2、快照卷是只讀的 3、跟原卷在同一個卷組 lvcreate -L(大小) -s(快照卷) -p r|w lv_name [root@localhost mapper]# lvcreate -L 10M -n testlv_snap -s /dev/yellow/qq -p r Rounding up size to full physical extent 12.00 MiB Logical volume "testlv_snap" created. |
鏡像卷:
[root@localhost mapper]# lvcreate -L 1G -m1 -n bbq yellow /dev/sdf1 /dev/sdf2 /dev/sde1 Logical volume "bbq" created. [root@localhost mapper]# lvs -a -o +devices LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices root rhel -wi-ao---- 90.00g /dev/sda2(976) swap rhel -wi-ao---- 3.81g /dev/sda2(0) bbq yellow rwi-a-r--- 1.00g 100.00 bbq_rimage_0(0),bbq_rimage_1(0) [bbq_rimage_0] yellow iwi-aor--- 1.00g /dev/sdf2(1) [bbq_rimage_1] yellow iwi-aor--- 1.00g /dev/sde1(1) [bbq_rmeta_0] yellow ewi-aor--- 4.00m /dev/sdf2(0) [bbq_rmeta_1] yellow ewi-aor--- 4.00m /dev/sde1(0) qq yellow owi-aos--- 1.00g /dev/sdd1(0) testlv_snap yellow sri-aos--- 12.00m qq 0.10 /dev/sdd1(256) [root@localhost mapper]# lvdisplay /dev/yellow/bbq --- Logical volume --- LV Path /dev/yellow/bbq LV Name bbq VG Name yellow LV UUID mVwhvG-djHj-0jdM-6MlR-T4iG-0vNx-PHz8s4 LV Write Access read/write LV Creation host, time localhost.localdomain, 2018-05-31 01:25:13 +0800 LV Status available # open 0 LV Size 1.00 GiB Current LE 256 Mirrored volumes 2 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:10 [root@localhost ~]# lvextend bbq /dev/sde1 [root@localhost ~]# lvconvert -m1 /dev/yellow/bbq /dev/sde1 /dev/sdf1 /dev/sdf2 |
參考:
https://blog.csdn.net/cybertan/article/details/7623356
https://blog.csdn.net/yanggd1987/article/details/48676347