1.LVM的概念和作用
LVM(Logical Volume Manager)邏輯卷管理是在Linux2.4內核以上實現的磁盤管理技術。LVM通過將底層的物理硬盤抽象的封裝起來,然後以邏輯卷的方式呈現給上層應用。
在LVM中,主要有三個概念:
物理卷(Physical Volume, PV): 物理卷可以是一個磁盤,也可以是磁盤中的一個分區,它爲LVM提供了存儲介質。
邏輯卷組(Logical Volume Group, LVG): 可以把邏輯卷組想象成一個存儲池,或者是邏輯硬盤。
邏輯卷(Logical Volume, LV): 可以將卷組劃分成若干個邏輯卷,相當於在邏輯硬盤上劃分出幾個邏輯分區,每個邏輯分區上都可以創建具體的文件系統。
2.LVM的部署
部署LVM時,需要逐個配置物理卷、卷組和邏輯卷。
功能/命令 物理卷管理 卷組管理 邏輯卷管理
掃描 pvscan vgscan lvscan
建立 pvcreate vgcreate lvcreate
顯示 pvdisplay vgdisplay lvdisplay
刪除 pvremove vgremove lvremove
擴展 vgextend lvextend
縮小 vgreduce lvreduce
a.創建物理卷
使用兩塊新硬盤/dev/sdb和/dev/sdc創建物理卷,使用pvs或者pvdisplay查看:
[root@shijie Desktop]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
[root@shijie Desktop]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- 19.51g 0
/dev/sdb lvmvg lvm2 a-- 20.00g 20.00g
/dev/sdc lvmvg lvm2 a-- 20.00g 20.00g
[root@shijie Desktop]# pvdisplay /dev/sdb /dev/sdc
"/dev/sdb" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID wk2YIh-l5Hf-U59E-9Uas-We4n-si9s-wnozZE
"/dev/sdc" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID zfzxXh-WMXD-f7l3-eSVx-IZGs-2FAs-D9jtKB
b.創建卷組
使用物理卷/dev/sdb和/dev/sdc創建一個名稱爲lvmvg的卷組,使用vgs或者vgdisplay查看:
[root@shijie Desktop]# vgcreate lvmvg /dev/sdb /dev/sdc
Volume group "lvmvg" successfully created
[root@shijie Desktop]# vgs
VG #PV #LV #SN Attr VSize VFree
lvmvg 2 0 0 wz--n- 39.99g 39.99g
rhel 1 2 0 wz--n- 19.51g 0
[root@shijie Desktop]# vgdisplay lvmvg
--- Volume group ---
VG Name lvmvg
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 39.99 GiB
PE Size 4.00 MiB
Total PE 10238
Alloc PE / Size 0 / 0
Free PE / Size 10238 / 39.99 GiB
VG UUID IRlex8-TuEU-dydv-Ws1K-q7zg-635q-oOnyqy
vg卷組PE大小爲4MiB,這是PE的默認大小,PE是卷組的最小儲存單位,我們也可以用-s參數來修改,不過這隻能才創建卷組時使用,一旦卷組創建成功是沒法再去修改PE大小的。
c.創建邏輯卷
在剛剛創建的llvmvg卷組上創建邏輯卷lvmlv,使用-L參數設定邏輯卷大小,這個大小必須是設定的PE值的整數倍,如果不是它會分一個比設定的大一點的空間也就是向上去整數倍空間。也可以使用-l,後面跟的就是PE數量。像上個步驟中我們劃分的卷組PE值爲4MiB,數量爲10238,那劃分的邏輯卷大小就爲4x你劃分的數量MiB。
[root@shijie Desktop]# lvcreate -L 2G -n lvmlv lvmvg
Logical volume "lvmlv" created
[root@shijie Desktop]# lvcreate -l 500 -n lvmlv2 lvmvg
Logical volume "lvmlv2" created
[root@shijie dev]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lvmlv lvmvg -wi-a----- 2.00g
lvmlv2 lvmvg -wi-a----- 1.95g
root rhel -wi-ao---- 17.51g
swap rhel -wi-ao---- 2.00g
[root@shijie Desktop]# lvdisplay /dev/lvmvg/lvmlv /dev/lvmvg/lvmlv2
--- Logical volume ---
LV Path /dev/lvmvg/lvmlv
LV Name lvmlv
VG Name lvmvg
LV UUID iuAiCP-23uZ-1GLZ-8Ccn-Xazs-mEEY-v4cjkp
LV Write Access read/write
LV Creation host, time shijie, 2020-05-16 03:37:11 +0800
LV Status available
# open 0
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/lvmvg/lvmlv2
LV Name lvmlv2
VG Name lvmvg
LV UUID yEZEGP-IQiu-Qr36-wK09-Mwo6-0hos-V3yumg
LV Write Access read/write
LV Creation host, time shijie, 2020-05-16 03:45:19 +0800
LV Status available
# open 0
LV Size 1.95 GiB
Current LE 500
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
d.格式化邏輯卷
[root@shijie Desktop]# mkfs.ext4 /dev/lvmvg/lvmlv
mke2fs 1.42.9 (28-Dec-2013)
文件系統標籤=
OS type: Linux
塊大小=4096 (log=2)
分塊大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
第一個數據塊=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: 完成
正在寫入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
e.掛載使用
[root@shijie Desktop]# mkdir dir
[root@shijie Desktop]# mount /dev/lvmvg/lvmlv ./dir/
[root@shijie Desktop]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/mapper/rhel-root 18G 3.1G 15G 18% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 84K 2.0G 1% /dev/shm
tmpfs 2.0G 8.9M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sr0 3.5G 3.5G 0 100% /media/cdrom
/dev/sda1 497M 119M 379M 24% /boot
/dev/mapper/lvmvg-lvmlv 2.0G 6.0M 1.8G 1% /root/Desktop/dir
3.邏輯卷的擴容與縮小
a.擴容
先使用vgs查看lvmvg所剩空間是否充足,接着使用lvextend命令來對lvmlv進行擴容。-L參數和創建卷組的-L參數一個性質,後面都是直接跟大小,不過這裏要注意+3G是增加3G空間,如果不跟+是擴容到3G,同理如果使用-l參數後,後面跟的就是要增加多少PE值。
[root@shijie Desktop]# vgs
VG #PV #LV #SN Attr VSize VFree
lvmvg 2 2 0 wz--n- 39.99g 36.04g
rhel 1 2 0 wz--n- 19.51g 0
[root@shijie Desktop]# lvextend -L 3G /dev/lvmvg/lvmlv -r
Extending logical volume lvmlv to 3.00 GiB
Logical volume lvmlv successfully resized
[root@shijie Desktop]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/mapper/rhel-root 18G 3.1G 15G 18% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 84K 2.0G 1% /dev/shm
tmpfs 2.0G 8.9M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sr0 3.5G 3.5G 0 100% /media/cdrom
/dev/sda1 497M 119M 379M 24% /boot
/dev/mapper/lvmvg-lvmlv 2.9G 6.0M 2.8G 1% /root/Desktop/dir
b.縮小
邏輯卷擴容可以在線操作但是縮小需要先卸載已掛載的邏輯卷。擴容邏輯卷我們是先擴大邏輯卷再擴大文件系統,而縮小邏輯卷就需要我們反着來,我們要先縮小文件系統,再去縮小邏輯卷。縮小文件系統前我們要先對文件系統做個掃描檢測,如果我們直接使用resize2fs系統會提示讓你先對文件系統進行檢測,這是爲了保護縮減文件系統時不對數據損害。
[root@shijie Desktop]# umount /dev/lvmvg/lvmlv
[root@shijie Desktop]# e2fsck -f /dev/lvmvg/lvmlv
e2fsck 1.42.9 (28-Dec-2013)
第一步: 檢查inode,塊,和大小
第二步: 檢查目錄結構
第3步: 檢查目錄連接性
Pass 4: Checking reference counts
第5步: 檢查簇概要信息
/dev/lvmvg/lvmlv: 11/262144 files (0.0% non-contiguous), 34894/1048576 blocks
[root@shijie Desktop]# resize2fs /dev/lvmvg/lvmlv 2G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/lvmvg/lvmlv to 524288 (4k) blocks.
The filesystem on /dev/lvmvg/lvmlv is now 524288 blocks long.
[root@shijie Desktop]# lvreduce -L 2G /dev/lvmvg/lvmlv
WARNING: Reducing active logical volume to 2.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lvmlv? [y/n]: y
Reducing logical volume lvmlv to 2.00 GiB
Logical volume lvmlv successfully resized
[root@shijie Desktop]# mount /dev/lvmvg/lvmlv ./dir/
[root@shijie Desktop]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/mapper/rhel-root 18G 3.1G 15G 18% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 84K 2.0G 1% /dev/shm
tmpfs 2.0G 8.9M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sr0 3.5G 3.5G 0 100% /media/cdrom
/dev/sda1 497M 119M 379M 24% /boot
/dev/mapper/lvmvg-lvmlv 2.0G 6.0M 1.8G 1% /root/Desktop/dir