LVM的基本概念
-
實戰場景:對於生產環境下的服務器來說,如果存儲數據的分區磁盤空間不夠了怎麼辦?
-
答:只能換一個更大的磁盤。 如果用了一段時間後, 空間又不夠了,怎麼辦?再加一塊更大的?換磁盤的過程中,還需要把數據從一個硬盤複製到另一個硬盤,過程太慢了。
-
解決方案:使用LVM在線動態擴容
LVM的工作原理
LVM( Logical Volume Manager)邏輯卷管理,是在磁盤分區和文件系統之間添加的一個邏輯層,來爲文件系統屏蔽下層磁盤分區佈局,提供一個抽象的盤卷,在盤捲上建立文件系統。管理員利用LVM可以在磁盤不用重新分區的情況下動態調整文件系統的大小,並且利用LVM管理的文件系統可以跨越磁盤,當服務器添加了新的磁盤後,管理員不必將原有的文件移動到新的磁盤上,而是通過LVM可以直接擴展文件系統跨越磁盤
它就是通過將底層的物理硬盤封裝起來,然後以邏輯卷的方式呈現給上層應用。在LVM中,其通過對底層的硬盤進行封裝,當我們對底層的物理硬盤進行操作時,其不再是針對於分區進行操作,而是通過一個叫做邏輯卷的東西來對其進行底層的磁盤管理操作。
LVM常用的術語
-
物理存儲介質(The physical media):LVM存儲介質可以是磁盤分區,整個磁盤,RAID陣列或SAN磁盤,設備必須初始化爲LVM物理卷,才能與LVM結合使用
-
物理卷PV(physical volume) :物理卷就是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數,創建物理卷它可以用硬盤分區,也可以用硬盤本身;
卷組VG(Volume Group) :一個LVM卷組由一個或多個物理卷組成
- 邏輯卷LV(logical volume) :LV建立在VG之上,可以在LV之上建立文件系統
PE(physical extents) :PV物理卷中可以分配的最小存儲單元,PE的大小是可以指定的,默認爲4MB
-
LE(logical extent) : LV邏輯卷中可以分配的最小存儲單元,在同一個卷組中,LE的大小和PE是相同的
-
最小存儲單位總結:
名稱 最小存儲單位
硬盤 扇區(512字節)
文件系統 block(1K或4K )# mkfs.ext4 -b 2048 /dev/sdb1 ,最大支持到4096
raid chunk (512K) #mdadm -C -v /dev/md5 -l 5 -n 3 -c 512 -x 1 /dev/sde{1,2,3,5}
LVM PE (4M) # vgcreate -s 4M vg1 /dev/sdb{1,2}
磁盤結構
操作思路:
總結:多個磁盤/分區/raid-> 多個物理卷PV->
合成卷組VG->從VG劃出邏輯卷LV-> 格式化LV掛載使用
創建lvm步驟:
a) 添加物理磁盤,創建物理卷
b) 創建卷組,將物理卷加入卷組
c) 在卷組中劃分邏輯卷
d) 格式化邏輯卷
e) 掛載使用
實驗環境
系統 | ip |
---|---|
centos 7 | 192.168.10.11 |
常用命令
功能 | pv管理命令 | vg管理命令 | lv管理命令 |
---|---|---|---|
scan 掃描 | pvscan | vgscan | lvscan |
create創建 | pvcreate | vgcreate | lvcreate |
display 顯示 | pvdisplay | vgdisplay | lvdisplay |
remove 移除 | pvremove | vgremove | lvcreate |
extend 擴展 | vgextend | lvextend | |
reduce 減少 | vgreduce | lvreduce |
實驗演示
- 準備物理磁盤
[root@localhost ~]# lsblk |grep "sd[bcd]"
sdb 8:16 0 1G 0 disk
sdc 8:32 0 1G 0 disk
sdd 8:48 0 1G 0 disk
- 將磁盤加入pv
[root@localhost ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
[root@localhost ~]# partprobe /dev/sdb 記得刷新下
[root@localhost ~]#
//檢查pv創建情況
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 --- 1.00g 1.00g
- 創建名爲datavg的卷組
[root@localhost ~]# vgcreate datavg /dev/sdb
Volume group "datavg" successfully created
//檢查卷組
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datavg 1 0 0 wz--n- 1020.00m 1020.00m
- 創建邏輯卷, 分配名稱, 以及大小, 指定卷組
[root@localhost ~]# lvcreate -L 100M -n lv1 datavg
Logical volume "datalv1" created.
//檢查邏輯卷
[root@localhost ~]# lvscan
ACTIVE '/dev/datavg/lv1' [100.00 MiB] inherit
- 格式化文件系統
[root@localhost ~]# mkfs.xfs /dev/datavg/lv1
//掛載並使用
[root@localhost ~]# mkdir /lv1
[root@localhost ~]# mount /dev/datavg/lv1 /lv1/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/mapper/datavg-lv1 97M 5.2M 92M 6% /lv1
卷組管理
- 擴展卷組,將新磁盤加入卷組
新硬盤加入pv
[root@localhost ~]# pvcreate /dev/sdc
- 使用vgextend擴展
[root@localhost ~]# vgextend datavg /dev/sdc
Volume group "datavg" successfully extended
- 縮減卷組,將指定磁盤從卷組中刪除
[root@localhost ~]# vgreduce datavg /dev/sdb
Removed "/dev/sdb" from volume group "datavg"
``
- 數據遷移卷組,同一卷組的磁盤纔可以進行在線遷移
//檢查當前邏輯卷VG中PV使用情況
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg1 lvm2 a -- 2.00g 1.76g
/dev/sdc vg1 lvm2 a -- 2.00g 2.00g
- pvmove在線數據遷移至其他pv
[root@localhost ~]# pvmove /dev/sdb
/dev/sdb: Moved: 41.33%
/dev/sdb: Moved: 100.00%
- 檢查是否將sdb數據遷移至sdc
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg1 lvm2 a -- 2.00g 2.00g
/dev/sdc vg1 lvm2 a -- 2.00g 1.76g
- 邏輯卷管理
邏輯卷擴展,邏輯卷的擴展取決於卷組中的容量,邏輯卷擴展的容量不能超過卷組的容量
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 2 0 wz --n- 1.88g 1.00g
- 擴展lv邏輯卷
//增加800M分配給邏輯卷 {注意: 800M +800M 不一樣}
[root@localhost ~]# lvextend -L +800M /dev/datavg/lv1
//分配磁盤池中多少百分比給邏輯卷
[root@localhost ~]# lvextend -l +50%FREE /dev/datavg/lv1
- 擴展fs文件系統
//xfs擴容
[root@localhost ~]# xfs_growfs /dev/datavg/lv1
//ext擴容
[root@localhost ~]# resize2fs /dev/datavg/lv1
對ext4文件系統的邏輯卷裁剪容量
- 如果已經掛載,必須先卸載
1. umount /dev/finance/uplooking 如果已經掛載,必須先卸載
e2fsck -f /dev/finance/uplooking 裁剪容量,必須是先檢測文件系統
resize2fs /dev/finance/uplooking 512M
4. lvreduce -L 512M /dev/finance/uplooking 調整完畢後採取裁剪邏輯卷容量
WARNING: Reducing active logical volume to 512.00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce uplooking? [y/n]: y
5. e2fsck -f /dev/finance/uplooking 強烈建議裁剪後,再次檢測文件系統
掛載測試
如果能夠掛載,一般說明裁剪成功,文件系統沒有損壞
- 縮減邏輯卷注意事項:
不能在線縮減,得先卸載;
確保縮減後的空間大小依然能存儲原有的所有數據;
在縮減之前應該先強行檢查文件,以確保文件系統處於一致性狀態。使用命令e2fsck -f /PATH/TO/LV