Linux 文件系統之LVM詳解
阿新 • • 發佈:2018-04-24
linux lvm snapshotLVM是 Logical Volume Manager邏輯卷管理的簡寫,主要功能對卷能夠進行方便的動態擴展和縮減,大提高了磁盤管理的靈活性,工作原理大概如下幾點
1.物理磁盤被格式化為PV(Physical Volume) 物理卷,空間被劃分為一個個的PE(Physical Extend) 物理拓展
2.把PV加入到VG(Volume Group) 卷組中,在VG中以PE的形式展示
3.LV基於PE創建,大小為PE的整數倍,組成LV的PE可能來自不同的物理磁盤,但都是同一個VG中PE
4.LV現在就直接可以格式化後掛載使用了
5.LV的擴充縮減實際上就是增加或減少組成該LV的PE數量,其過程不會丟失原始數據
1.物理磁盤被格式化為PV(Physical Volume) 物理卷,空間被劃分為一個個的PE(Physical Extend) 物理拓展
2.把PV加入到VG(Volume Group) 卷組中,在VG中以PE的形式展示
3.LV基於PE創建,大小為PE的整數倍,組成LV的PE可能來自不同的物理磁盤,但都是同一個VG中PE
4.LV現在就直接可以格式化後掛載使用了
5.LV的擴充縮減實際上就是增加或減少組成該LV的PE數量,其過程不會丟失原始數據
具體實現
centos7 默認沒有lvm工具,需要安裝lvm2
yum install -y lvm2
準備2塊8e格式的分區塊
Device Boot Start End Blocks Id System
/dev/sdb9 8400896 10498047 1048576 8e Linux LVM
/dev/sdb10 10500096 14694399 2097152 8e Linux LVM
1、創建pv
[root@localhost mnt]# pvcreate /dev/sdb9 [root@localhost mnt]# pvcreate /dev/sdb10 [root@localhost mnt]# pvs PV VG Fmt Attr PSize PFree /dev/sdb10 lvm2 --- 2.00g 2.00g /dev/sdb9 lvm2 --- 1.00g 1.00g #詳細查看 [root@localhost mnt]# pvdisplay
2、創建vg並擴展
[root@localhost mnt]# vgcreate myvg /dev/sdb9
[root@localhost mnt]# vgextend myvg /dev/sdb10
[root@localhost mnt]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg 2 0 0 wz--n- 2.99g 2.99g
#詳細查看
[root@localhost mnt]# vgdisplay myvg
3、lv創建
[root@localhost mnt]# lvcreate -L 1G -n mylv myvg #查看 [root@localhost mnt]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv myvg -wi-a----- 1.00g
4、創建文件系統並掛載
[root@localhost mnt]# mkfs.ext4 -L mylv /dev/myvg/mylv
[root@localhost mnt]# mount /dev/myvg/mylv /mnt/t3
[root@localhost mnt]# df -h|grep mapp
/dev/mapper/myvg-mylv 976M 2.6M 907M 1% /mnt/t3
5、擴展lv 先要查看當前lv所在的組vg還有多少空間
[root@localhost mnt]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mylv myvg -wi-ao---- 1.00g
[root@localhost mnt]# vgs myvg
VG #PV #LV #SN Attr VSize VFree
myvg 2 1 0 wz--n- 2.99g 1.99g
[root@localhost mnt]# lvextend -L 2G /dev/myvg/mylv
#擴展文件系統
[root@localhost mnt]# resize2fs /dev/myvg/mylv
#檢查
[root@localhost mnt]# df -h|grep mapp
/dev/mapper/myvg-mylv 2.0G 3.0M 1.9G 1% /mnt/t3
6、縮減lv 是為了騰出pe
[root@localhost mnt]# umount /dev/mapper/myvg-mylv
[root@localhost mnt]# e2fsck -f /dev/mapper/myvg-mylv
[root@localhost mnt]# resize2fs /dev/myvg/mylv 512M
#這步之前必須確定1G是否能裝下源文件
[root@localhost mnt]# lvreduce -L 512M /dev/myvg/mylv
7、 查看VFree是否大於 下面要移除的分區
[root@localhost mnt]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg 2 1 0 wz--n- 2.99g 2.49g
[root@localhost mnt]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb10 myvg lvm2 a-- <2.00g <1.50g
/dev/sdb9 myvg lvm2 a-- 1020.00m 1020.00m
8、先轉義pe數據,在縮小vg,在移除pv
[root@localhost mnt]# pvmove /dev/sdb10
/dev/sdb10: Moved: 10.94%
/dev/sdb10: Moved: 100.00%
[root@localhost mnt]# vgreduce myvg /dev/sdb10
Removed "/dev/sdb10" from volume group "myvg"
[root@localhost mnt]# pvremove /dev/sdb10
Labels on physical volume "/dev/sdb10" successfully wiped.
9、如果vg也不要了 這裏省去了移除lv操作[lvremove myvg/mylv]
[root@localhost mnt]# vgremove myvg
Do you really want to remove volume group "myvg" containing 1 logical volumes? [y/n]: y
Do you really want to remove active logical volume myvg/mylv? [y/n]: y
Logical volume "mylv" successfully removed
Volume group "myvg" successfully removed
[root@localhost mnt]# pvremove /dev/sdb9
Labels on physical volume "/dev/sdb9" successfully wiped.
快照介紹
原理介紹:快照是對源卷的備份,是基於同一個lv卷的實現。
快照卷特性:
1.源卷的另外一個訪問入口
2.快照之後當源卷的已有文件發生變化時候,會復制源文件到快照卷中
3.新增的文件不會復制到快照卷
快照:snapshot
lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name
-L 大小
-r onlyread
-s 快照
snapshot_lv_name 快照卷名
original_lv_name 源卷名
1.創建快照 快照卷源卷都是基於mylv邏輯卷
[root@localhost ~]# lvcreate -s -L 500m -n mylv-snap -p r /dev/myvg/mylv
Using default stripesize 64.00 KiB.
Logical volume "mylv-snap" created.
2.掛載快照
[root@localhost ~]# mount /dev/myvg/mylv-snap /mnt/t2/
mount: /dev/mapper/myvg-mylv--snap 寫保護,將以只讀方式掛載
[root@localhost ~]# cp /etc/passwd /mnt/t3/ #源卷中文件,之後修改這個文件跟快對比
3、編輯源卷文件
[root@localhost t3]# echo 999999 >> passwd
[root@localhost t3]# tail -1 passwd
999999
3.1、查看快照卷
[root@localhost t2]# tail -1 passwd
marvin:x:1001:1001::/home/marvin:/bin/bash
4、對源卷添加文件
[root@localhost t3]# cp /root/anaconda-ks.cfg /mnt/t2/
cp: 無法創建普通文件"/mnt/t2/anaconda-ks.cfg": 只讀文件系統
[root@localhost t3]# cp /root/anaconda-ks.cfg /mnt/t3
4.1、查看快照卷 並沒有
[root@localhost t2]# ls
issue lost+found passwd
5、刪除快照卷
[root@localhost mnt]# umount /mnt/t2
[root@localhost mnt]# lvremove /dev/myvg/mylv-snap
Do you really want to remove active logical volume myvg/mylv-snap? [y/n]: y
Logical volume "mylv-snap" successfully removed
Linux 文件系統之LVM詳解