1,什麼叫LVM
LVM全名Logical Volume Manager(邏輯卷管理),它是Linux環境下一種磁盤分區管理機制,該機制可以彈性的修改分區大小.
物理塊(Physical Extent,PE)
每一個物理卷PV被劃分爲稱爲PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認爲4MB。所以物理卷(PV)由大小等同的基本單元PE組成。
物理卷(Physical Volume,PV)
指磁盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
卷組(Volume Group,VG)
類似於非LVM系統中的物理磁盤,其由一個或多個物理卷PV組成。可以在卷組上創建一個或多個LV(邏輯卷)。
邏輯卷(Logical Volume,LV)
類似於非LVM系統中的磁盤分區,邏輯卷建立在卷組VG之上。在邏輯卷LV之上可以建立文件系統(比如/home或者/usr等)。
文件系統:
文件系統大小一般小於等於物理磁盤空間,是操作系統用於明確磁盤或分區上的文件的方法和數據結構;即在磁盤上組織文件的方法。當我們調整物理盤區大小時,文件系統大小時固定的,此時我們需要擴大文件系統管理的空間,以達到拓展分區的作用,或者縮小文件系統管理的空間,以便磁盤空間被合理利用
構建LV邏輯卷時,需要依次創建PV,VG,LV,(PE在構建VG時可以使用-s指定大小,默認在創建LV時自動分配),拓展LVM邏輯卷時首先需要確認LV是否已經達到VG上限,若果沒有達到,可以直接調整LV大小,完成後使用resize2fs調整文建立在LV捲上的文件系統大小.
2.創建LVM操作步驟
2.1
創建物理卷PV:
創建物理卷時常用的命令:pvcreate,pvdisplay,pvscan,pvmove,pvremove
pvcreate | 創建PV,格式:pvcreate /PATH/disk|partition |
pvdisplay | 查看系統上PV卷信息,可單獨使用,也可以指定查看PV卷,格式:pvdisplay /PATH/PV |
pvscan/pvs | 查看系統上PV卷信息,所屬卷組,已使用空間等,可單獨使用,可以指定查看 |
pvmove | 移動PV數據,格式:pvmove /PATH/PV或指定位置pvmove /PATH/PV /PATH/PV |
pvremove | 移除PV卷,格式:pvremove /PATH/PV |
[root@localhost mysh]# pvcreate /dev/sdc{1,2,3,5} 基於分區創建PV卷
Physical volume "/dev/sdc1" successfully created
Physical volume "/dev/sdc2" successfully created
Physical volume "/dev/sdc3" successfully created
Physical volume "/dev/sdc5" successfully created
[root@localhost mysh]# pvdisplay /dev/sdc1 查看sdc1的pv信息
"/dev/sdc1" is a new physical volume of "1.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc1
VG Name
PV Size 1.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID NExGGE-7Sjh-xc42-jRZ8-YpOc-7m50-7ReIL7
[root@localhost mysh]# pvs 瀏覽系統上的pv卷
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 19.51g 0
/dev/sdb1 myvg lvm2 a-- 3.00g 3.00g
/dev/sdb2 myvg lvm2 a-- 3.00g 3.00g
/dev/sdb3 myvg lvm2 a-- 3.00g 3.00g
/dev/sdc1 lvm2 a-- 1.00g 1.00g
/dev/sdc2 lvm2 a-- 1.00g 1.00g
/dev/sdc3 lvm2 a-- 1.00g 1.00g
/dev/sdc5 lvm2 a-- 1.00g 1.00g
[root@localhost mysh]# pvremove /dev/sdc5 移除基於sdc5的pv卷
Labels on physical volume "/dev/sdc5" successfully wiped
2.2創建卷組VG
創建卷組常用到的命令:vgcreat,vgremove,vgextend,vgreduce,vgs,vgdisplay,vgscan
vgcreate | 創建VG,格式:vgcreate VG_NAME /PATH/PV (指定的PV卷可以爲多個) -s 指定PE大小,默認爲4M |
vgremove | 移除VG,格式:vgremove VG_NAME |
vgextend | 拓展VG:vgextend VG_NAME /PATH/PV |
vgreduce | 縮小PV:vgreduce VG_NAME /PATH/PV |
vgs vgdisplay vgscan | 查看VG卷組 |
[root@localhost ~]# vgcreate myvg2 /dev/sdc{1,2,3} 創建VG卷組
Volume group "myvg2" successfully created
[root@localhost ~]# vgs 查看系統上的VG卷組
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- 19.51g 0
myvg 3 0 0 wz--n- 8.99g 8.99g
myvg2 4 0 0 wz--n- 3.98g 3.98g
[root@localhost ~]# vgextend myvg2 /dev/sdc5 將pv卷sdc5添加到myvg2的VG卷組
Volume group "myvg2" successfully extended
[root@localhost ~]# vgreduce myvg2 /dev/sdc1 將pv卷sdc1從myvg2的VG卷組內移除
Removed "/dev/sdc1" from volume group "myvg2
2.3創建邏輯卷LV
創建LV常用到的命令:lvcreate lvremove,lvextend,lvreduce,lvs,lvdisplay,mke2fs
lvcreate | 創建LV卷:lvcreate -n LV_NAME -L 空間 VG_NAME -L:直接指定空間大小 -l:指定盤區(PE)個數 |
lvremove | 移除LV邏輯卷,移除設備時需要先卸載設備,格式:lvremove /dev/VG_NAME/LV_NAME |
lvextend | 拓展物理邊界 lvextend -L [+]# /dev/VG_NAME/PVNAME -L帶+表示需要增加的空間大小,不帶+表示拓展結果的空間大小 |
resize2fs | 拓展邏輯邊界:resize2fs /dev/VG_NAME/PVNAME -p表示拓展到物理邊界極限(即增加VG剩餘大小的空間) |
lvreduce | 裁剪邊界:lvreduce -L [-]# /PATH/TO/LV ,(要裁物理邊界需要先裁剪邏輯邊界,使用resize2fs) 帶-號是縮減#size,不帶-號代表縮減到#size |
mke2fs | 格式化LV卷:mke2fs -j /dev/VG_NAME/LV_NAME |
lvs lvscan lvdisplay | 瀏覽 |
2.3.1拓展LVM:
root@localhost dev]# lvextend -L 2.6G /dev/myvg/mylv 將LV卷拓展到2.6G
Extending logical volume mylv to 2.6 GiB
Logical volume mylv successfully resized
root@localhost dev]# lvs 查看LV
mylv myvg -wi-ao---- 2.60g
root@localhost dev]# df -h 查看磁盤使用
dev/mapper/myvg-mylv 1.9G 3.9M 1.8G 1% /mnt
root@localhost dev]# resize2fs -p /dev/myvg/mylv 拓展邏輯邊界至VG極限
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/myvg/mylv is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/myvg/mylv is now 681984 blocks long.
2.3.2 裁剪LVM;
要裁剪LVM,首先要對其邏輯捲進行調整,調整過程中需要遵循:
1,需要先卸載
2,確保縮減後的空間依然能足夠存儲原有數據
3,在縮減之前應該先強行檢查文件,以確保文件系統處於一致性狀態
[root@localhost dev]# resize2fs /dev/myvg/mylv 2G 調整邏輯邊界大小至2G
resize2fs 1.42.9 (28-Dec-2013)Please run 'e2fsck -f /dev/myvg/mylv' first. 注意此處要求運行單引號內的命令
[root@localhost dev]# e2fsck -f /dev/myvg/mylv 運行該命令
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/myvg/mylv: 11/172032 files (0.0% non-contiguous), 28167/681984 blocks
[root@localhost dev]# resize2fs /dev/myvg/mylv 2G 調整邏輯邊界大小至2G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/myvg/mylv to 524288 (4k) blocks.
The filesystem on /dev/myvg/mylv is now 524288 blocks long.
localhost dev]# lvs 查看LV
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
mylv myvg -wi-a----- 2.60g 此處可以看到修改邏輯卷後LV大小沒變
[root@localhost dev]# lvreduce -L 2.1G /dev/myvg/mylv 調整物理邊界,注意物理邊界要大於等於邏輯邊界
Rounding size to boundary between physical extents: 2.10 GiB
WARNING: Reducing active logical volume to 2.10 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv? [y/n]: y
Reducing logical volume mylv to 2.10 GiB
Logical volume mylv successfully resized
localhost dev]# lvs 查看LV
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
myvg -wi-a----- 2.10g 此處可以看到修改邏輯卷後LV大小已經改變
[root@localhost dev]# mount /dev/myvg/mylv /mnt 掛載
[root@localhost dev]# df -h 查看磁盤信息
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/myvg-mylv 2.0G 3.9M 1.8G 1% /mnt 此處可看到該LV卷大小已經調整至邏輯卷大小
[root@localhost dev]# resize2fs -p /dev/myvg/mylv 調整LV至物理邊界大小
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/myvg/mylv is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/myvg/mylv is now 550912 blocks long.
[root@localhost dev]# df -h 查看磁盤信息
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/myvg-mylv 2.1G 3.9M 1.9G 1% /mnt