邏輯卷管理 - LVM
概述
1.1 特點
1.2 原理圖名詞解釋
2.1 PV - 物理卷
2.2 VG - 卷組
2.3 LV - 邏輯卷
2.4 PE
2.5 關(guān)系圖 - 原理圖管理命令
實戰(zhàn)
4.1 案例01 - 創(chuàng)建物理卷、卷組和邏輯卷,格式化,掛載至 /data 目錄
4.2 案例02 - /data 目錄空間不足,對其使用邏輯卷擴(kuò)容
4.3 刪除邏輯卷、卷組和物理卷
4.4 減少邏輯卷大小容易導(dǎo)致數(shù)據(jù)丟失概述
LVM (Logical Volume Manager) 即邏輯卷管理。它是Linux環(huán)境下對磁盤分區(qū)進(jìn)行管理的一種機(jī)制。
它可以將多個硬盤和硬盤分區(qū)做成一個邏輯卷,并把這個邏輯卷作為一個整體來統(tǒng)一管理,動態(tài)對分區(qū)進(jìn)行擴(kuò)縮空間大小,安全快捷方便管理。
LVM的工作原理通過將底層的物理硬盤抽象的封裝起來,然后以邏輯卷的方式呈現(xiàn)給上層應(yīng)用。在傳統(tǒng)的磁盤管理機(jī)制中,我們的上層應(yīng)用是直接訪問文件系統(tǒng),從而對底層的物理硬盤進(jìn)行讀取。
而在LVM中,其通過對底層的硬盤進(jìn)行封裝,當(dāng)我們對底層的物理硬盤進(jìn)行操作時,不再是針對于分區(qū)進(jìn)行操作,而是通過一個叫做邏輯卷的東西來對其進(jìn)行底層的磁盤管理操作。例如,增加一個物理硬盤,這個時候上層的服務(wù)是感覺不到的,因為呈現(xiàn)給上層服務(wù)的是以邏輯卷的方式。
1.1 特點
可以對磁盤進(jìn)行動態(tài)管理邏輯卷的大小是可以動態(tài)調(diào)整的,而且不會丟失現(xiàn)有的數(shù)據(jù)。如果我們新增加了硬盤,也不會改變現(xiàn)有上層的邏輯卷。作為一個動態(tài)磁盤管理機(jī)制,邏輯卷技術(shù)大大提高了磁盤管理的靈活性。
1.2 原理圖

2.名詞解釋
2.1PV-物理卷
PhysicalVolume
物理卷在邏輯卷管理中處于最底層,它可以是實際物理硬盤上的分區(qū),也可以是整個物理硬盤,也可以是RAID,是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(zhì)(如分區(qū)、磁盤等)比較,卻包含有與LVM相關(guān)的管理參數(shù)。
2.2VG-卷組
VolumeGroup
卷組建立在物理卷之上,一個卷組中至少要包括一個物理卷,在卷組建立之后可動態(tài)添加物理卷到卷組中。一個邏輯卷管理系統(tǒng)工程中可以只有一個卷組,也可以擁有多個卷組。
2.3LV-邏輯卷
LogicalVolume
邏輯卷建立在卷組之上,卷組中的未分配空間可以用于建立新的邏輯卷,邏輯卷建立后可以動態(tài)地擴(kuò)展和縮小空間。系統(tǒng)中的多個邏輯卷可以屬于同一個卷組,也可以屬于不同的多個卷組。
2.4PE
PhysicalExtendt
每一個物理卷被劃分為多個稱為PE的基本單元。PE的大小是在創(chuàng)建VG過程中配置的,默認(rèn)為4MB。
2.5關(guān)系圖-原理圖

3.管理命令

- 實戰(zhàn)
4.1 案例01 - 創(chuàng)建物理卷、卷組和邏輯卷,格式化,掛載至 /data 目錄
準(zhǔn)備兩塊磁盤,各 100MB
將其中一塊磁盤,劃分兩個主分區(qū),并建立物理卷
新建卷組,并將兩個物理卷加入卷組
創(chuàng)建邏輯卷,將已建的卷組空間全部分給邏輯卷
格式化邏輯卷,并掛載到 /data 目錄
實現(xiàn) 開機(jī)自動掛載
# 第一步: 添加兩塊100MB的磁盤,需要重啟才能生效
# 第二步: 給某一磁盤進(jìn)行分區(qū)
fdisk /dev/sdb
[root@machine-for-class ~]# ll /dev/sdb*
brw-rw---- 1 root disk 8, 16 Mar 22 14:40 /dev/sdb
brw-rw---- 1 root disk 8, 17 Mar 22 14:40 /dev/sdb1
brw-rw---- 1 root disk 8, 18 Mar 22 14:40 /dev/sdb2
# 第三步: 對磁盤分區(qū)創(chuàng)建物理卷
[root@machine-for-class ~]# pvcreate /dev/sdb1 /dev/sdb2
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
# 第四步: 創(chuàng)建卷組 ,并將物理卷加入卷組
[root@machine-for-class ~]# vgcreate vg01 /dev/sdb1 /dev/sdb2
Volume group "vg01" successfully created
[root@machine-for-class ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.51g 0
vg01 2 0 0 wz--n- 96.00m 96.00m
[root@machine-for-class ~]# vgdisplay
--- Volume group ---
VG Name vg01
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 96.00 MiB
PE Size 4.00 MiB
Total PE 24
Alloc PE / Size 0 / 0
Free PE / Size 24 / 96.00 MiB
VG UUID sEwqUc-wJvm-aWbt-KQpE-wkA1-mg6q-4GXJns
# 第五步: 創(chuàng)建邏輯卷,將卷組所有空間給邏輯卷
[root@machine-for-class ~]# lvcreate -n lv01 -L +96M vg01
Logical volume "lv01" created.
[root@machine-for-class ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync
Convert
root centos -wi-ao---- <17.51g
swap centos -wi-ao---- 2.00g
lv01 vg01 -wi-a----- 96.00m
# 第六步: 格式化-創(chuàng)建文件系統(tǒng),掛載至 /data 目錄
[root@machine-for-class ~]# mkfs.xfs /dev/vg01/lv01
meta-data=/dev/vg01/lv01 isize=512 agcount=4, agsize=6144 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=24576, imaxpct=25
4.2 案例02 - /data 目錄空間不足,對其使用邏輯卷擴(kuò)容
將另一塊磁盤創(chuàng)建為 物理卷
將 新的物理卷加入 卷組,即卷組擴(kuò)容
給 邏輯卷 擴(kuò)容
檢測確認(rèn)是否生效
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@machine-for-class ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.6M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 18G 2.7G 15G 15% /
/dev/sda1 497M 131M 367M 27% /boot
tmpfs 98M 0 98M 0% /run/user/0
[root@machine-for-class ~]# mount /dev/vg01/lv01 /data
[root@machine-for-class ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.6M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 18G 2.7G 15G 15% /
/dev/sda1 497M 131M 367M 27% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg01-lv01 93M 5.1M 88M 6% /data
# 第七步: 配置 /etc/fstab 文件,實現(xiàn)自動掛載
案例02 - /data 目錄空間不足,對其使用邏輯卷擴(kuò)容
將另一塊磁盤創(chuàng)建為 物理卷
將 新的物理卷加入 卷組,即卷組擴(kuò)容
給 邏輯卷 擴(kuò)容
檢測確認(rèn)是否生效
# 第一步: 將 另一塊磁盤創(chuàng)建為物理卷
[root@machine-for-class ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
[root@machine-for-class ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.51g 0
/dev/sdb1 vg01 lvm2 a-- 48.00m 0
/dev/sdb2 vg01 lvm2 a-- 48.00m 0
/dev/sdc lvm2 --- 102.00m 102.00m
# 第二步: 擴(kuò)容卷組
[root@machine-for-class ~]# vgextend vg01 /dev/sdc
Volume group "vg01" successfully extended
[root@machine-for-class ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.51g 0
vg01 3 1 0 wz--n- 196.00m 100.00m
[root@machine-for-class ~]# vgdisplay
--- Volume group ---
VG Name vg01
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size 196.00 MiB
PE Size 4.00 MiB
Total PE 49
Alloc PE / Size 24 / 96.00 MiB
Free PE / Size 25 / 100.00 MiB
VG UUID sEwqUc-wJvm-aWbt-KQpE-wkA1-mg6q-4GXJns
# 第三步: 給 邏輯卷擴(kuò)容
[root@machine-for-class ~]# lvextend -r -L +100M /dev/vg01/lv01
Size of logical volume vg01/lv01 changed from 96.00 MiB (24 extents) to 196.00
MiB (49 extents).
Logical volume vg01/lv01 successfully resized.
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=4, agsize=6144 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=24576, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 24576 to 50176
## lvextend -r -l +100%FREE lv_name
##
# 第四步: 檢測確認(rèn)
[root@machine-for-class ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.6M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 18G 2.7G 15G 15% /
/dev/sda1 497M 131M 367M 27% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg01-lv01 193M 5.3M 188M 3% /data
4.3 刪除邏輯卷、卷組和物理卷
# 01: 取消掛載
[root@machine-for-class ~]# umount /data
[root@machine-for-class ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.6M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 18G 2.7G 15G 15% /
/dev/sda1 497M 131M 367M 27% /boot
tmpfs 98M 0 98M 0% /run/user/0
# 02: 移除邏輯卷
[root@machine-for-class ~]# lvremove /dev/vg01/lv01
Do you really want to remove active logical volume vg01/lv01? [y/n]: y
Logical volume "lv01" successfully removed
[root@machine-for-class ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync
Convert
root centos -wi-ao---- <17.51g
swap centos -wi-ao---- 2.00g
[root@machine-for-class ~]#
# 03: 移除卷組
[root@machine-for-class ~]# vgremove vg01
Volume group "vg01" successfully removed
[root@machine-for-class ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.51g 0
# 04: 移除物理卷
[root@machine-for-class ~]# pvremove /dev/sdc /dev/sdb1 /dev/sdb2
Labels on physical volume "/dev/sdc" successfully wiped.
Labels on physical volume "/dev/sdb1" successfully wiped.
Labels on physical volume "/dev/sdb2" successfully wiped.
[root@machine-for-class ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.51g 0
4.4 減少邏輯卷大小容易導(dǎo)致數(shù)據(jù)丟失