邏輯卷詳解
LVM是Linux環境中對磁盤分區進行管理的一種機制,是建立在硬盤和分區之上、文件系統之下的一個邏輯層,可提高磁盤分區管理的靈活性。RHEL5默認安裝的分區格式就是LVM邏輯卷的格式,需要注意的是 /boot分區不能基於LVM創建,必須獨立出來。
邏輯卷名詞解釋
- PV(Physical Volume):物理卷,處於LVM最底層,可以是物理硬盤或者分區。
- VG(Volume Group):卷組,建立在PV之上,可以含有一個到多個PV。
- LV(Logical Volume):邏輯卷,建立在VG之上,相當於原來分區的概念。不過大小可以動態改變。
1.邏輯卷創建
邏輯卷創建首先需要準備新的硬盤或者分區(爲了後期便於維護管理,記得給分區加上8e標示)
- 將磁盤或分區轉換成爲物理卷PV
pvcreate /dev/sdb1 /dev/sdb2
查看物理卷 pvs pvdisplay - 創建卷組vg0,將創建好的物理卷添加到卷組中,默認的PE大小是4MB,PE是卷組的最小存儲單元,可以用過-s參數修改
vgcreate vg0 /dev/sdb1 /dev/sdb2
查看卷組 vgs vgdisplay - 創建邏輯卷lvdata
lvcreate -L 1G -n lvdata vg0 - 在邏輯捲上創建文件系統
mkfs.ext4 /dev/vg0/lvdata - 掛載,將邏輯卷掛載到一個空目錄下
mount /dev/vg0/lvdata /mnt/data - 爲了便於以後實現自動掛載,需要再/etc/fstab文件裏面添加一條記錄通過mount -a命令使配置文件生效
2.邏輯卷擴展
擴展邏輯卷,先關心下卷組裏的可用空間vgdsiplay,給邏輯卷拓展空間,不會影響以前空間的使用。
- 拓展邏輯卷,指定擴展大小
lvextend -L +1G /dev/vg0/lvdata
-L:指定邏輯卷的大小,單位爲“kKmMgGtT”字節;
-l:指定邏輯卷的大小(LE數)。 - 同步拓展文件系統
xfs_growfs /mnt/data/ xfs文件系統使用,後面跟掛載點
resize2fs /dev/vg0/lvdata ext文件系統使用,後臺跟邏輯卷名
lvextend -r -l +500 /dev/vg0/lvdata 通用寫法,推薦
3.卷組拓展
當卷組vg可用空間不足情況下,可以用分區或者新磁盤添加到卷組中
- vgextend vg0 /dev/sdb3
4.邏輯捲縮減
邏輯卷空間縮減,有一定風險,應當謹慎
- 先卸載邏輯卷
umount /mnt/data - 通過e2fsck命令檢查邏輯卷
e2fsck -f /dev/vg0/lvdata - resize2fs命令縮減文件系統空間
resize2fs /dev/vg0/lvdata 2G - 縮減邏輯卷空間
lvreduce -L 2G /dev/vg0/lvdata - 重新掛載
mount /dev/vg0/lvdata /mnt/data
注意:邏輯捲縮減只能是ext系列文件系統,xfs只支持拓展,不支持縮減
5.卷組縮減(由於磁盤或者分區故障,將數據轉移到相同卷組其他空間)
- 通過pvmove命令轉移空間數據
pvs 查看下各物理卷的剩餘空間
pvmove /dev/sdb1 /dev/sdb2 - 通過vgreduce命令將壞的磁盤或者分區從卷組vg0中移除
vgreduce vg0 /dev/sdb1 - 通過pvremove命令將即將壞的磁盤或者分區從邏輯卷系統中刪除
pvremove /dev/sdb1
pvmove命令,需要先關注下pvs中,各pv下剩餘空間,預先規劃,再操作
更多pvmove命令的案例可以參考網址:
http://man7.org/linux/man-pages/man8/pvmove.8.html
6.邏輯卷的刪除
- 先取消掛載
umount /mnt/data - 修改/etc/fstab文件裏面的掛載信息,否則系統啓動會出故障
- lvremove刪除邏輯卷
lvremove /dev/vg0/lvdata - vgremove刪除卷組
vgremove vg0 - pvremove將物理卷轉換爲分區或者磁盤
pvremove /dev/sdb2 /dev/sdb3 - 如果有分區,修改分區標示,取消邏輯卷標示,換成普通標示
7.邏輯卷快照創建
- 快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準確拷貝
- 對於需要備份或者複製的現有數據臨時拷貝以及其它操作來說,快照是最合適
的選擇 - 快照只有在它們和原來的邏輯卷不同時纔會消耗空間
- 在生成快照時會分配給它一定的空間,但只有在原來的邏輯卷或者快照有所
改變纔會使用這些空間 - 當原來的邏輯卷中有所改變時,會將舊的數據複製到快照中
- 快照中只含有原來的邏輯卷中更改的數據或者自生成快照後的快照中更改的
數據 - 建立快照的卷大小小於等於原始邏輯卷,也可以使用lvextend擴展快照
- 由於快照區與原本的LV共用很多PE的區塊,因此快照與被快照的LV必須在同
一個VG中.系統恢復的時候的文件數量不能高於快照區的實際容量
lvcreate -L # -n SLV_NAME -s -p r /PATH/LV 【指定爲那個邏輯卷創建的】
-s:表示快照卷
-p:指定權限r|w
-L:快照卷大小
xfs
lvcreate -s -n mysql_snapshot2 -L 1G /dev/vg0/mysql
//mount -o nouuid,ro /dev/vg0/mysql_snapshot2 /mnt/snap/
ext4
lvcreate -n binlog_snapshot -s -p r -L 1G /dev/vg0/binlog
//mount /dev/vg0/binlog_snapshot /mnt/snap/
** 注意,快照是不需要格式化和掛載的,爲了方便查看,可以掛在到文件目錄下 **
8.邏輯卷快照還原
- 取消邏輯卷掛載
umount /mnt/data - 執行lvconvert將快照的數據合併到原邏輯卷
lvconvert --merge /dev/vg0/binlog_snapshot - 重新掛載原邏輯卷
mount /dev/vg0/lvdata /mnt/data