Contents
LVM简介
LVM(Logical Volume Manager)即逻辑卷管理,是Linux环境下对磁盘分区进行管理的一种机制。LVM通过建立一个逻辑层在硬盘和分区之上,来提高磁盘分区管理的灵活性。以下是对LVM的详细介绍:
一、LVM的基本概念
LVM主要包括以下几个基本概念:
- 物理卷(Physical Volume, PV)
- 处于LVM最底层,可以是物理硬盘或者分区。
- PV在物理分区中划出了一个特殊的区域,用于记载与LVM相关的管理参数。
- 可以通过
pvcreate
命令创建物理卷。
- 卷组(Volume Group, VG)
- 建立在物理卷之上,可以含有一个到多个物理卷。
- 卷组抽象了底层设备的特性,并作为具有组件物理卷的合并存储容量的统一逻辑设备。
- 可以通过
vgcreate
命令创建卷组,并通过vgextend
命令扩展卷组。
- 逻辑卷(Logical Volume, LV)
- 建立在卷组基础上,相当于原来分区的概念,但大小可以动态改变。
- 逻辑卷是用户和应用程序将要与之交互的主要组件。
- 可以通过
lvcreate
命令创建逻辑卷,并通过lvextend
和lvreduce
命令扩展或缩小逻辑卷。
- 物理区域(Physical Extent, PE)
- 物理卷中可用于分配的最小存储单元。
- PE的大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致。
- 逻辑区域(Logical Extent, LE)
- 逻辑卷中可用于分配的最小存储单元。
- LE的大小取决于逻辑卷所在卷组中的物理区域的大小。
二、LVM的主要优势
- 灵活性
- LVM允许动态地调整逻辑卷的大小,而无需关闭系统或卸载文件系统。
- 可以轻松地添加或移除物理卷以扩展或减小卷组的容量。
- 扩展性
- LVM支持跨多个物理磁盘的存储,使得文件系统的大小不再受单个物理磁盘的限制。
- 可以通过添加新的物理卷来扩展卷组的容量,进而扩展逻辑卷的大小。
- 管理便捷性
- LVM提供了丰富的管理工具,如
pvs
、vgs
、lvs
等,方便系统管理员进行磁盘分区管理。 - 逻辑卷可以具有有意义的名称,便于识别和管理。
- LVM提供了丰富的管理工具,如
- 高级功能
- LVM还支持快照、条带化和镜像等高级功能,提高了数据的安全性和可用性。
三、LVM的工作原理
LVM通过在每个物理卷头部维护一个metadata来实现其功能。metadata中包含了整个卷组的信息,包括每个物理卷和逻辑卷的编号、每个物理区域到逻辑区域的映射关系等。当对逻辑卷进行读写操作时,LVM会根据metadata中的映射关系将数据定位到相应的物理区域上。
四、LVM的应用场景
LVM通常用于装备大量磁盘的系统,但同样适用于仅有一、两块硬盘的小系统。在大型系统中,使用LVM可以方便地管理多个不同容量的硬盘,并在用户需求与实际可用空间中寻求平衡。同时,LVM也支持在不中断服务的情况下进行数据的迁移和扩展。
逻辑卷常用命令
LVM整合分散空间,空间可以拓展
在“分区->格式化”中间增加的一个逻辑层
零散空闲存储–整合的虚拟磁盘–虚拟的分区
将众多的PV(物理卷)组成VG(卷组),再从VG(卷组)中划分LV(逻辑卷)
功能 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
Scan扫描 | pvscan/pvs | vgscan/vgs | lvscan/lvs |
Create 创建 | pvcreate | vgcreate | lvcreate |
Display 显示 | pvdisplay | vgdisplay | lvdisplay |
Remove 删除 | pvremove | vgremove | lvremove |
Exten 拓展 | / | vgextend | lvextend |
逻辑卷的创建和扩容
1、首先对硬盘进行分区
fdisk /dev/sdc
n
回车
回车
回车
w
fdisk /dev/sdd
n
回车
回车
回车
w
修改文件系统类型为8e,加快识别设备类型,不该没大影响
fdisk /dev/sdc
t
8e
w
fdisk /dev/sdd
t
8e
w
2、创建pv
yum install -y lvm2
pvcreate /dev/sdc1 /dev/sdd1
[root@nnode1 test1]# pvcreate /dev/sdc1 /dev/sdd1
Physical volume "/dev/sdc1" successfully created.
Physical volume "/dev/sdd1" successfully created.
[root@nnode1 test1]# pvscan
PV /dev/sdd1 lvm2 [1023.00 MiB]
PV /dev/sdc1 lvm2 [1023.00 MiB]
Total: 2 [<2.00 GiB] / in use: 0 [0 ] / in no VG: 2 [<2.00 GiB]
3、创建vg
vgscan
vgcreate vg0 /dev/sdc1 /dev/sdd1
[root@nnode1 test1]# vgcreate vg0 /dev/sdc1 /dev/sdd1
Volume group "vg0" successfully created
[root@nnode1 test1]# vgscan
Reading volume groups from cache.
Found volume group "vg0" using metadata type lvm2
[root@nnode1 test1]# vgdisplay
--- Volume group ---
VG Name vg0
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 1.99 GiB
PE Size 4.00 MiB
Total PE 510
Alloc PE / Size 0 / 0
Free PE / Size 510 / 1.99 GiB
VG UUID 1OdEw8-1ndl-dXLp-Io7w-f8C5-bw17-J1AeZC
4、创建逻辑卷
lvcreate -n lv0 -L 1G vg0
lvscan
[root@nnode1 test1]# lvcreate -n lv0 -L 1G vg0
Logical volume "lv0" created.
[root@nnode1 test1]# lvscan
ACTIVE '/dev/vg0/lv0' [1.00 GiB] inherit
[root@nnode1 test1]#
blkid /dev/vg0/lv0
没有信息表示没有格式化
格式化/dev/vg0/lv0
mkfs.xfs /dev/vg0/lv0
[root@nnode1 test1]# lvdisplay
--- Logical volume ---
LV Path /dev/vg0/lv0
LV Name lv0
VG Name vg0
LV UUID TMnfBI-ejUq-hKBf-Vw29-Unmg-aiYU-gXD5dz
LV Write Access read/write
LV Creation host, time nnode1, 2024-06-28 10:00:31 +0800
LV Status available
# open 0
LV Size 1.00 GiB
Current LE 256
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
5、挂载逻辑卷,开机自动挂载
[root@nnode1 test1]# mkdir /lv1
[root@nnode1 test1]# mount -a
[root@nnode1 test1]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 10M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda3 48G 14G 35G 28% /
/dev/sdb1 20G 7.5G 13G 38% /kvm_iso
/dev/sda1 297M 181M 117M 61% /boot
tmpfs 182M 0 182M 0% /run/user/0
tmpfs 182M 0 182M 0% /run/user/1000
/dev/mapper/vg0-lv0 1014M 33M 982M 4% /lv1
逻辑卷扩容
lvextend -L +0.5G /dev/vg0/lv0
xfs_growfs /dev/vg0/lv0
df -h
[root@nnode1 test1]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 10M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda3 48G 14G 35G 28% /
/dev/sdb1 20G 7.5G 13G 38% /kvm_iso
/dev/sda1 297M 181M 117M 61% /boot
tmpfs 182M 0 182M 0% /run/user/0
tmpfs 182M 0 182M 0% /run/user/1000
/dev/mapper/vg0-lv0 1.5G 33M 1.5G 3% /lv1
lvextend -l +100%FREE /dev/vg0/lv0
xfs_growfs /dev/vg0/lv0
df -h
卷组扩容
pvcreate /dev/sde1
vgextend vg0 /dev/sde1
[root@nnode1 test1]# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 1.99 GiB
PE Size 4.00 MiB
Total PE 510
Alloc PE / Size 510 / 1.99 GiB
Free PE / Size 0 / 0
VG UUID 1OdEw8-1ndl-dXLp-Io7w-f8C5-bw17-J1AeZC
[root@nnode1 test1]# vgextend vg0 /dev/sde1
Volume group "vg0" successfully extended
[root@nnode1 test1]# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 5
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 <2.99 GiB
PE Size 4.00 MiB
Total PE 765
Alloc PE / Size 510 / 1.99 GiB
Free PE / Size 255 / 1020.00 MiB
VG UUID 1OdEw8-1ndl-dXLp-Io7w-f8C5-bw17-J1AeZC
缩小逻辑卷
在对逻辑卷收缩时,数据丢失的风险比扩容时的大,除了提前做好数据的备份外,还要检查文件系统的完整性
1、卸载逻辑卷
umount /dev/data/lv1
2、检查文件系统完整性
e2fsck -f /dev/data/lv1
3、重新刷文件系统的大小为200MB
resize2fs /dev/data/lv1 200M
4、缩小逻辑卷的大小
这里可以看到文件系统已经成功缩小了,接下来缩小逻辑卷的大小,请注意一定要保证缩小后的逻辑卷空间大于或等于resize2fs命令缩小后的文件系统大小,否则该逻辑卷就出错不能正常使用了
可以先使用pvdisplay命令查看/dev/sdb的信息,缩小10个pe的大小
lvreduce -l 10 /dev/data/lv1
5、重新识别逻辑卷的大小,然后挂载
mkfs.xfs /dev/data/lv1
mount /dev/data/lv1 /lv1/
lsblk
其他命令
指定卷组PE的大小,lvm默认使用4MB,只能写2的倍数(除1) 最大为64
vgchange -s 1
创建时指定
vgcreate -s 12M vg02 /dev/sda1 /dev/sda2
创建指定50个pe的逻辑卷
lvcreate -l 50 -n lv02 vg02