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