LVM(Logical Volume Manager:邏輯建管理)
dm:將一個或多個底層快設備組織成一個邏輯設備的模塊
查看:/dev/mapper
相關概念:
PV:物理卷,指磁盤分區或從邏輯上與磁盤分區具有同樣功能的設備,是LVM的基本存儲邏輯塊
VG:卷組,類似於非LVM系統中的物理磁盤,由一個或多個物理卷組成。可以在卷組上創建一個或多個LLV:邏輯卷,類似於非LVM系統中的磁盤分區,邏輯卷建立在卷組VG之上
PE:物理塊,LVM設備最小的存儲單元。每一個PV被劃分爲多個PE,默認4M
PV、VG、LV三者的關係
首先產生物理卷PV
再將物理卷PV合併成爲卷組VG
最後從卷組VG中劃分出多個邏輯卷LV直接使用
具體說明:
物理磁盤被格式化爲PV,空間被劃分爲很多個PE
很多不同的PV組成了同一個VG,PV中的PE全部進入了VG的PE池中
LV是基於PE創建的,組成LV的PE可能來自不同的物理磁盤
LV可以直接格式化後掛在使用
LV的擴展與縮減實質上是增加與減少PE的數量,在此過程中不會丟失數據
安裝LVM
首先確定系統中是否安裝了LVM工具
~]#rpm -qa | grep lvm
創建和管理LVM
使用分區工具(如:fdisk等)創建LVM分區,方法和創建其他一般分區的方式是一樣的,區別僅僅是LVM的分區類型爲8e
創建2個分區(sdb1,sdb2)
將linux類型更改爲8e:
t---8e
w保存
創建邏輯卷:
pvcreate /dev/sdb1 /dev/sdb2
pvs:查看PV的信息
pvdisplay:仔細查看PV信息
將新創建的兩個分區/dev/sdb1和/dev/sdb2轉化成物理卷
創建卷組VG,並將剛纔創建好的兩個物理卷加入該卷組.可以看出默認PE大小爲4MB,PE是卷組的最小存儲單元.可以通過 –s參數修改大小。
vgcreate vg /dev/sdb1 /dev/sdb2:卷組名稱爲vg,可以起別的名稱
vgs:查看vg的信息
vgdisplay:查看詳細信息
從vg上分割1G給新的邏輯卷LV1:
lvcreate -L 1G -n lv1 vg
lvs
格式化:(使用mkfs創建ext4文件系統)
mkfs.ext4 /dev/vg/lv1
將創建好的文件系統掛在到/data1上(創建好後會在/dev/mapper生成軟連接vg-lv1):
記得要創建/data1目錄:
mkdir /data1
mount /dev/vg/lv1 /data1
dh -f:查看
ll /dev/vg/lv1:查看一下
便於服務器重啓後自動掛載,需要將創建好的文件系統掛載信息添加到/etc/fstab裏面,UUID可以通過blkid查詢:
blkid(找/dev/mapper/vg-vl1)
UUID="739cd3f6-0da8-45a4-9fe4-87c4704ecdbf"
vim /etc/fstab
UUID="739cd3f6-0da8-45a4-9fe4-87c4704ecdbf" /data1 ext4 defaults 0 0
爲了查看/etc/fstab是否設置正確,可以先卸載邏輯卷data1,然後使用mount -a使內核重新讀取/etc/fstab,看能否自動掛載
umount /data1
mount -a
mount | grep data1
邏輯卷lv1不夠用了,該如何擴展
給邏輯卷增加空間並不會影響以前空間的使用,所以無需卸載文件系統,直接通過命令lvextend –L +500M /dev/vg/lv1或者lvextend –l 2.5G /dev/vg/lv1 給lv1加500M空間(lv1目前是2G空間)設置完成之後,記得使用resize2fs命令來同步文件系統。
lvextend -L +500M /dev/vg/lv1
lvs查看
resize2fs /dev/vg/lv1 同步
df -h查看文件系統
卷組不夠用了,該如何擴大卷組
重新從第二塊硬盤上創建一個分區sdb3,具體操作步驟省略。並將創建好的分區加入到已經存在的卷組vgdata中。通過pvs命令查看是否成功。
vgextend vg /dev/sdb3:將創建好的分區加入到組vg中
pvs:查看
若磁盤空間不足,如何減少邏輯卷空間釋放給其他邏輯卷使用
減少邏輯卷空間:
先卸載邏輯卷lv
然後通過e2fsck命令檢測邏輯捲上空餘的空間
使用resize2fs將文件系統減少到700M
再使用lvreduce命令將邏輯卷減少到700M
注意:文件系統大小和邏輯卷大小一定要保持一致才行。如果邏輯卷大於文件系統,由於部分區域未格式化成文件系統會造成空間的浪費。如果邏輯卷小於文件系統,那數據就出問題了。
umount /data1
e2fsck -f /dev/mapper/vg-lv1
resize2fs /dev/mapper/vg-lv1 1G
lvreduce -L 700M /dev/vgdata/lv1
完成後就可以重新使用了:
mount /dev/vg/lv1 /data1
mount | grep data1
如果某一塊磁盤或者分區故障瞭如何將數據快速轉移到相同的卷組其他的空間去
通過pvmove命令轉移空間數據
通過vgreduce命令將即將壞的磁盤或者分區從卷組vgdata裏面移除除去
通過pvremove命令將即將壞的磁盤或者分區從系統中刪除掉
pvs查看
pvmove /dev/sdb1 /dev/sdb2
pvs查看
vgreduce vg /dev/sdb1
pvremove /dev/sdb1
刪除整個邏輯卷
先通過umount命令卸載掉邏輯卷lv1
修改/etc/fstab裏面邏輯卷的掛載信息,否則系統有可能啓動不起來
通過lvremove 刪除邏輯卷lv1
通過vgremove 刪除卷組vg
通過pvremove 將物理卷轉化成普通分區
umount /dev/mapper/vg-lv1
lvremove /dev/vg/lv1
vgremove vg
pvremove /dev/sdb1 /dev/sdb2
刪除完了,別忘了修改分區的id標識。修改成普通Linux分區即可
總結:LVM邏輯卷是Linux裏面一個很棒的空間使用機制,因爲分區在沒有格式化的情況下是沒有辦法加大或者放小的。通過LVM可以將你的磁盤空間做到靈活自如