LVM(Logical Volume Manager)逻辑卷管理,是在硬盘分区和文件系统之间添加的一个逻辑层,为文件系统屏蔽下层硬盘分区布局,并提供一个抽象的盘卷,在盘卷上建立文件系统。管理员利用LVM可以在硬盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越物理硬盘。当服务器添加了新的硬盘后,管理员不必将原有的文件移动到新的硬盘上,而是通过LVM直接扩展文件系统来跨越物理硬盘。

主要用于动态扩容和缩容。

RAID,主要用于冗余和数据加速;

LVM, 主要用于数据加速和扩展


1. 常用概念

PE:物理拓展

PV:物理卷

VG :卷组

LV:逻辑卷

Linux之LVM学习_文件系统


Linux之LVM学习_文件系统_02


2. LVM的创建过程

1.1 新增硬盘并分区

1.2 创建PV

[root@localhost ~]# pvcreate /dev/sdb{1,2}

[root@localhost ~]# pvcreate /dev/sdb{1,2}
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.


查看PV

[root@localhost ~]# pvdisplay

[root@localhost ~]# pvdisplay
"/dev/sdb2" is a new physical volume of "<5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb2
VG Name
PV Size <5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID DW4XPe-UYiA-AT8p-rhnh-ypO8-tjIu-aJiqLB

"/dev/sdb1" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID LY7D17-sir7-59ez-hSCM-aN4S-DHLI-Km9Hxh


1.3 创建VG

[root@localhost ~]# vgcreate vg01 /dev/sdb1

vg名称 要加入vg的pv


[root@localhost ~]# vgcreate vg01 /dev/sdb1
Volume group "vg01" successfully created


查看VG

[root@localhost ~]# vgdisplay


1.4 创建LV

[root@localhost ~]# lvcreate -n lv01 -L 100M vg01

lv名称 lv大小 vg名称


查看LV

[root@localhost ~]# lvdisplay

[root@localhost ~]# lvdisplay 
--- Logical volume ---
LV Path /dev/vg01/lv01
LV Name lv01
VG Name vg01
LV UUID CJ0hc4-H4Eu-iH0V-ScK2-HKkS-0SqM-F08BwA
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2022-11-22 16:40:15 +0800
LV Status available
# open 0
LV Size 100.00 MiB
Current LE 25
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0


1.5 文件格式化和挂载

[root@localhost ~]# mkdir /lv01

[root@localhost ~]# mkfs.xfs /dev/vg01/lv01 #格式化

[root@localhost ~]# mount /dev/vg01/lv01 /lv01 #挂载



1.6 扩展LV

1.6.1 添加新硬盘

[root@localhost ~]# lsblk​ #查看新添加的硬盘


1.6.2 给新硬盘分区

[root@localhost ~]# gdisk /dev/sdc


1.6.3 创建新的PV

[root@localhost ~]# pvcreate /dev/sdc


1.6.4 扩展VG

[root@localhost ~]# vgextend vg01 /dev/sdc1


[root@localhost ~]# vgdisplay   #VG原来的大小
--- Volume group ---
VG Name vg01
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <30.00 GiB
PE Size 4.00 MiB
Total PE 7679
Alloc PE / Size 5120 / 20.00 GiB
Free PE / Size 2559 / <10.00 GiB
VG UUID npZElq-cTaq-p3Ob-YDgJ-54fo-bqWe-Ijsrdv

[root@localhost ~]# vgextend vg01 /dev/sdc1
Volume group "vg01" successfully extended

[root@localhost ~]# vgdisplay #VG扩展后的大小
--- Volume group ---
VG Name vg01
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 49.99 GiB
PE Size 4.00 MiB
Total PE 12798
Alloc PE / Size 5120 / 20.00 GiB
Free PE / Size 7678 / 29.99 GiB
VG UUID npZElq-cTaq-p3Ob-YDgJ-54fo-bqWe-Ijsrdv



1.6.5 扩展LV

[root@localhost ~]# lvextend -L 30G -r /dev/vg01/lv01

[root@localhost ~]# lvextend -L 30G -r /dev/vg01/lv01
Size of logical volume vg01/lv01 changed from 10.00 GiB (2560 extents) to 30.00 GiB (7680 extents).
Logical volume vg01/lv01 successfully resized.
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 2621440 to 7864320


综上,LVM的管理过程是:

创建PV -- 创建VG -- 创建LV -- 格式化 -- 挂载


3. LVM删除

LV的删除步骤恰恰相反:

卸载 -- 删除LV -- 删除VG -- 删除PV


[root@localhost ~]# umount /lv01 #卸载分区

[root@localhost ~]#lvremove /dev/vg01/lv01 #卸载LV

[root@localhost ~]# vgremove vg01 #卸载VG

[root@localhost ~]# pvremove /dev/sdb1 #卸载PV


4. SSM工具

SSM(SystemStorageManager)利用命令行工具ssm命令来一键完成磁盘管理。


[root@localhost ~]# yum -y install system-storage-manager

[root@localhost ~]# ssm list dev #显示硬盘设备信息

[root@localhost ~]# ssm list dev
--------------------------------
Device Total Mount point
--------------------------------
/dev/sda 20.00 GB
/dev/sda1 1.00 GB /boot
/dev/sda2 1.00 GB SWAP
/dev/sda3 18.00 GB /
/dev/sdb 10.00 GB
/dev/sdb1 5.00 GB
/dev/sdb2 5.00 GB
--------------------------------


4.1 使用SSM创建LVM

一条命令实现PV创建、VG创建、LV创建和挂载。


命令格式:

ssm create -s lv大小 -n lv名称 --fstype lv文件系统类型 -p VG名 设备 挂载点


​[root@localhost ~]# ssm create -s 200M -n lv01 --fstype xfs -p vg01 /dev/sdb{1,2} /lv01

[root@localhost ~]# ssm create -s 200M -n lv01 --fstype xfs -p vg01 /dev/sdb{1,2} /lv01
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
Volume group "vg01" successfully created
Logical volume "lv01" created.
meta-data=/dev/vg01/lv01 isize=512 agcount=4, agsize=12800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=51200, imaxpct=25
= 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
Directory '/lv01' does not exist! Create (Y/n/q) ? Y


[root@localhost ~]# df -h

[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 1.8G 17G 10% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.5M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 1014M 127M 888M 13% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/mapper/vg01-lv01 197M 11M 187M 6% /lv01