LVM逻辑卷管理
它是Linux环境下对磁盘和分区进行管理的一种机制。
普通的磁盘分区管理方式在分区划分好之后一般无法改变其大小(有风险),当一个分区存放不下文件时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。简单来说LVM就是将物理磁盘融合成一个或几个大的虚拟磁盘存储池,按照我们的需求去存储池划分空间来使用,由于是虚拟的存储池,所以划分空间时可以自由的调整大小LVM组成:物理卷(pv)、卷组(vg)、逻辑卷(lv)
1.创建lvm格式的分区表
首先是有一块拥有分新区的磁盘,在这个磁盘分lvm格式的分区表
1.创建lvm分区表
[root@localhost ~]# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10
Command (? for help): n #n是创建新的分区
Partition number (1-128, default 1): #默认即可
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: #默认即可
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +1G #输入新分区的大小
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8e00 #8300创建的是主分区,8200创建的是交换分区,8e00创建的是lvm格式的分区
Changed type of partition to 'Linux LVM'
Command (? for help): w #保存退出
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y #输入y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
2.查询新建的分区表—fdisk -l
[root@localhost ~]# fdisk -l
Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
Disk identifier: F6AA6B62-5B8F-465D-A9A3-BC6E883AF220
# Start End Size Type Name
1 2048 4196351 2G Linux LVM Linux LVM
2 4196352 6293503 1G Linux LVM #新生产的lvm格式分区
2.生成物理卷
1.创建物理卷(pv)–pvcreate
[root@localhost ~]# pvcreate /dev/sdb2 #将lvm性质的分区转化为物理卷(pv)
Physical volume "/dev/sdb2" successfully created. #表示物理卷已经生成
2.查看生成的物理卷–pvdisplay
[root@localhost ~]# pvdisplay /dev/sdb2 #查看生成的物理卷
"/dev/sdb2" is a new physical volume of "1.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb2 #生成的物理卷名称
VG Name
PV Size 1.00 GiB #物理卷的大小
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID dyvdHE-XqwF-c3j6-qGo6-3q3n-dv0p-pldBrJ
3.查看所有的物理卷–pvs
[root@localhost ~]# pvs #查看所有物理卷
PV VG Fmt Attr PSize PFree #剩余可用空间大小
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb1 lvm2 --- 2.00g 2.00g
/dev/sdb2 lvm2 --- 1.00g 1.00g
4.删除物理卷–pvremove
[root@localhost ~]# pvremove /dev/sdb1 #删除物理卷
3.生成卷组
格式:vgcreate 选项 卷组名 物理卷(写多个时用空格分开)
-s:大小:指定VG的PE大小,默认4M,PE卷组的最小存储单元,PE所在的位置是VG卷组,即硬盘上,那么我们可以把PE理解为硬盘上的扇区,默认是4MB,可自由配置。
1.生成卷组(vg)–vgcreate
[root@localhost ~]# vgcreate JK /dev/sdb2 #生成卷组JK
--- Volume group ---
VG Name JK #生成卷组的名称
System ID
Format lvm2
Metadata Areas 1
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 1
Act PV 1
VG Size 1020.00 MiB
PE Size 4.00 MiB
Total PE 255
Alloc PE / Size 0 / 0
Free PE / Size 255 / 1020.00 MiB
VG UUID QpMfMj-gOYL-xTrO-2fEw-Ecdq-Pkz8-BdRO77
2.查看生产的卷组(vg)–vgdisplay
[root@localhost ~]# vgdisplay JK #查看生成的卷组
[root@yanzixuan ~]# vgdisplay JK
--- Volume group ---
VG Name JK
System ID
Format lvm2
Metadata Areas 1
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 1
Act PV 1
VG Size 1020.00 MiB
PE Size 4.00 MiB
Total PE 255
Alloc PE / Size 0 / 0
Free PE / Size 255 / 1020.00 MiB
VG UUID QpMfMj-gOYL-xTrO-2fEw-Ecdq-Pkz8-BdRO77
3.查看所有卷组(vg)–vgs
[root@localhost ~]# vgs #查看所有的卷组
VG #PV #LV #SN Attr VSize VFree
JK 1 0 0 wz--n- 1020.00m 1020.00m
centos 1 2 0 wz--n- <19.00g 0
4.增加卷组容量–vgextend
[root@localhost ~]# vgextend JK /dev/sdb1 #增加卷组容量
Volume group "JK" successfully extended #增加的就是物理卷/dev/sdb1的容量大小
5.删除卷组–vgremove
格式:vgremove 卷组名 物理卷名
4.生成逻辑卷
1.生成逻辑卷
格式:lvcreate 选项 -n 逻辑卷名 卷组名
-L:容量:指定创建的逻辑卷大小,单位:MB,GB,TB等
-l:(小) PE个数:按照PE个数来指定逻辑卷大小
-n:逻辑卷的名称
[root@localhost ~]# lvcreate -L +1G -n LL JK #LL是逻辑卷名称 JK是卷组名
Logical volume "LL" created. #创建成功
2.查看生成逻辑卷–lvdisplay
[root@localhost ~]# lvdisplay /dev/JK/LL #查看生产的逻辑卷
--- Logical volume ---
LV Path /dev/JK/LL #逻辑卷路径
LV Name LL #名称
VG Name JK #卷组名称
LV UUID er82Nq-bfac-cRmQ-aMK1-NPq4-lDnb-dCpgVD
LV Write Access read/write
LV Creation host, time yanzixuan, 2020-11-24 23:08:06 -0500
LV Status available
# open 0
LV Size 1.00 GiB #逻辑卷大小
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
3.查看所有的逻辑卷–lvs
[root@localhost ~]# lvs #查看所有逻辑卷
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
LL JK -wi-a----- 1.00g #新生产的逻辑卷
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
4.逻辑卷扩容–lvextend
扩容数据是无损的,扩容分两步:先增加LV的大小,更新LV文件系统
1.增加逻辑卷大小
[root@localhost ~]# lvextend -L +1G /dev/JK/LL #逻辑卷扩容
--- Logical volume ---
LV Path /dev/JK/LL
LV Name LL
VG Name JK
LV UUID er82Nq-bfac-cRmQ-aMK1-NPq4-lDnb-dCpgVD
LV Write Access read/write
LV Creation host, time yanzixuan, 2020-11-24 23:08:06 -0500
LV Status available
# open 0
LV Size 2.00 GiB #容量增加了1G
Current LE 512
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
2.更新LV文件系统
xfs_growfs /dev/JK/LL #更新文件系统
2.格式化逻辑卷
[root@localhost ~]# mkfs.xfs /dev/JK/LL #格式逻辑卷,生成文件系统
meta-data=/dev/JK/LL isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
6.创建逻辑卷挂载目录
[root@localhost ~]# mkdir /ss #创建目录
7.挂载
[root@localhost ~]# mount /dev/JK/LL /ss #挂载
[root@localhost ~]# echo '/dev/JK/LL /ss xfs defaults 0 0' >> /etc/fstab
[root@localhost ~]# mount -a #刷新挂载
[root@localhost ~]# df -h #查看挂载
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.7G 16G 10% /
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 1014M 133M 882M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/JK-LL 2.0G 33M 2.0G 2% /ss #挂载成功