一. 什麼是LVM:PV,PE,VG,LV的概念
LVM的全名為Logical Volume Manager 邏輯卷管理器 LVM是将幾個實體分區通過軟體組合成一個大磁盤(VG),然後再将這塊大磁盤分成可使用的分區(LV),然後進行挂載使用
pv 實體卷 被lv指令處理過的實體分區
vg 實體卷組 被組裝到一起的實體卷
pe 實體擴充 lvm裝置的最小存儲單元,lvm是pe的整數倍
lv 邏輯卷 從VG中拿出的我們想要的存儲空間
##lvm建立##
watch -n 1 'pvs;vgs;lvs;df -h /mnt' ##再另打開一個Terminal 觀察變化
1.分區時定分區标簽為8e
pvcreate /dev/vdb1
vgcreate vg0 /dev/vdb1 ##vg0為自定義實體卷組的名字
lvcreate -L 20M -n lv0 vg0 ##lv0為自定義lv的名字
mkfs.xfs /dev/vg0/lv0 ##格式化并搭載檔案系統
mount /dev/vg0/lv0 /mnt ##挂載
df -H /mnt
df -h /mnt
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSPjRUT4VEVa9GcYR2Mk1mYwx2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0EjN2ATOxAjMzADOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
##lvm的拉伸##
lvm支援熱拉伸 ##支援挂載時進行拉神
1.當vg中的剩餘容量充足情況
lvextend -L 80M /dev/vg0/lv0 ##拉伸裝置 由上面設定的20M拉伸到80M
xfs_growfs /dev/vg0/lv0 ##拉伸檔案系統
##一定先拉神裝置再拉神檔案系統
2.當vg中的容量不足時
再次建立分區并修改标簽8e
pvcreate /dev/vdb2
vgextend vg0 /dev/vdb2 ##拉伸實體卷組
lvextend -L 200M /dev/vg0/lv0
xfs_growfs /dev/vg0/lv0
3.針對ext檔案系統的裝置擴充和縮減
1.改變檔案系統
umount /mnt ##改變檔案系統必須先解除安裝
mkfs.ext4 /dev/vg0/lv0 ##将檔案系統改為ext4
2.ext4檔案裝置的擴充
lvextend -L 100M /dev/vg0/lv0
resize2fs /dev/vg0/lv0 100M
mount /dev/vg0/lv0 /mnt
3.裝置的縮減
umount /mnt ##縮減不支援在挂載時縮減。是以先解除安裝,先縮小檔案系統
mkfs.ext4 /dev/vg0/lv0 ##xfs檔案系統隻支援擴充,不支援縮減 是以先将檔案系統改為ext4,再縮減
e2fsck -f /dev/vg0/lv0 ##掃描,防止縮小到存儲不了原來的内容
resize2fs /dev/vg0/lv0 100M
lvreduce -L 100M /dev/vg0/lv0
mount /dev/vg0/lv0 /mnt
##縮減vg
vgreduce vg0 /dev/vdb2 縮減vg
vgextend vg0 /dev/vdb2 擴充vg
##資料遷移(移除含有資料的裝置)
pvmove /dev/vdb1 /dev/vdb2
vgreduce vg0 /dev/vdb1
pvremove /dev/vdb1
####lvm快照####
lvcreate -L 40M -n lv0-backup -s /dev/vg0/lv0
mount /dev/vg0/lv0-backup /mnt
如果截取資料大于40M,會損壞裝置
dd if=/dev/zero of=/mnt/file bs=1M count=60
再次挂載會報錯
umount /mnt
lvremove /dev/vg0/lv0-backup
lvcreate -L 40M -n lv0-backup -s /dev/vg0/lv0 ##相當于裝置reset
再次挂載可以看原裝置資料
####全部删除還原####
lvremove /dev/vg0/lv0-backup ##先删快照,再删裝置本身
lvremove /dev/vg0/lv0
vgremove vg0
pvremove /dev/vdb2
fdisk /dev/vdb
d *