LVM逻辑卷的使用

LVM简介

LVM(Logical Volume Manager)即逻辑卷管理,是Linux环境下对磁盘分区进行管理的一种机制。LVM通过建立一个逻辑层在硬盘和分区之上,来提高磁盘分区管理的灵活性。以下是对LVM的详细介绍:

一、LVM的基本概念

LVM主要包括以下几个基本概念:

  1. 物理卷(Physical Volume, PV)
    • 处于LVM最底层,可以是物理硬盘或者分区。
    • PV在物理分区中划出了一个特殊的区域,用于记载与LVM相关的管理参数。
    • 可以通过pvcreate命令创建物理卷。
  2. 卷组(Volume Group, VG)
    • 建立在物理卷之上,可以含有一个到多个物理卷。
    • 卷组抽象了底层设备的特性,并作为具有组件物理卷的合并存储容量的统一逻辑设备。
    • 可以通过vgcreate命令创建卷组,并通过vgextend命令扩展卷组。
  3. 逻辑卷(Logical Volume, LV)
    • 建立在卷组基础上,相当于原来分区的概念,但大小可以动态改变。
    • 逻辑卷是用户和应用程序将要与之交互的主要组件。
    • 可以通过lvcreate命令创建逻辑卷,并通过lvextendlvreduce命令扩展或缩小逻辑卷。
  4. 物理区域(Physical Extent, PE)
    • 物理卷中可用于分配的最小存储单元。
    • PE的大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致。
  5. 逻辑区域(Logical Extent, LE)
    • 逻辑卷中可用于分配的最小存储单元。
    • LE的大小取决于逻辑卷所在卷组中的物理区域的大小。

二、LVM的主要优势

  1. 灵活性
    • LVM允许动态地调整逻辑卷的大小,而无需关闭系统或卸载文件系统。
    • 可以轻松地添加或移除物理卷以扩展或减小卷组的容量。
  2. 扩展性
    • LVM支持跨多个物理磁盘的存储,使得文件系统的大小不再受单个物理磁盘的限制。
    • 可以通过添加新的物理卷来扩展卷组的容量,进而扩展逻辑卷的大小。
  3. 管理便捷性
    • LVM提供了丰富的管理工具,如pvsvgslvs等,方便系统管理员进行磁盘分区管理。
    • 逻辑卷可以具有有意义的名称,便于识别和管理。
  4. 高级功能
    • 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

《LVM逻辑卷的使用》

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、挂载逻辑卷,开机自动挂载

《LVM逻辑卷的使用》

[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 

参考

Linux系统如何迁移至LVM磁盘 – 季文康 – 博客园 (cnblogs.com)

两硬盘,Linux系统“迁移”及LVM调整 – linux,dev – 博客园 (cnblogs.com)

点赞

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注