一、LVM简介

        LVM Logical VolumeManager(逻辑卷管理)的简写,它由Heinz MauelshagenLinux 2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。

与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为应用与用户分配存储空间。在LVM管理下的存储卷可以按需要随时改变大小与移除(可能需对文件系统工具进行升级)

二、LVM工作原理


083623236.jpg

LVM 在每个物理卷头部都维护了一个 metadata,每个 metadata 中都包含了整个 VG 的信息,包括每个 VG 的布局配置、PV 的编号、LV 的编号,以及每个 PE 到 LE 的映射关系。同一个 VG 中的每个 PV 头部的信息是相同的,这样有利于故障时进行数据恢复。

LVM 对上层文件系统提供 LV 层,隐藏了操作细节。对文件系统而言,对 LV 的操作与原先对 Partition 的操作没有差别。当对 LV 进行写入操作时,LVM 定位相应的 LE,通过 PV 头部的映射表,将数据写入到相应的 PE 上

三、使用LVM的优缺点

使用 LVM 的优势:

  1. 文件系统可以跨多个磁盘,因此大小不会受物理磁盘的限制。

  2. 可以在系统运行状态下动态地扩展文件系统大小。

  3. 可以增加新磁盘到 LVM 的存储池中。

  4. 可以以镜像的方式冗余重要数据到多个物理磁盘上

使用 LVM 的限制:

  1. 卷组中的一个磁盘损坏时,整个卷组都会受影响。

  2. 不能减小文件系统大小(受文件系统类型限制)。

  3. 因为加入了额外的操作,存储性能会受影响。

四、LVM基本术语


物理存储介质(The physical media):这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。

物理卷(physical volume):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

卷组(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

逻辑卷(logical volume):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。

PE(physical extent):每一个物理卷被划分为称为PE(PhysicalExtents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4M

LVM的操作流程图

112603128.gif

五、LVM的创建与管理

前期准备工作

/dev/sda3的磁盘信息

113216390.png

/dev/sdb3的磁盘信息

113233731.png


分区完成之后,查看内核是否已经识别到分区如果没有识别,则重启电脑

113245974.png


1)、pv的创建与管理

  1. ·pvcreate :将实体 partition 创建成为 PV ;

  2. ·pvscan :搜寻目前系统里面任何具有 PV 的磁盘;

  3. ·pvdisplay :显示出目前系统上面的 PV 状态;

  4. ·pvremove :将 PV 属性移除,让该 partition 不具有 PV 属性。

  5. /dev/sda3 和/dev/sdb3 创建成pv,大小为5G

  • 使用pvcreate创建 pv

[root@station64 ~]# pvcreate /dev/sd{a,b}3
  Physical volume "/dev/sda3" successfully created
  Physical volume "/dev/sdb3" successfully created


  • 查看pv的详细信息

  • 使用pvs查看简略信息,使用pvdisplay查看详细信息114017959.png


2)、VG 的创建与管理

  1. vgcreate :就是主要创建 VG 的命令

  2. vgscan :搜寻系统上面是否有 VG 存在

  3. vgdisplay :显示目前系统上面的 VG 状态;

  4. vgextend :在 VG 内添加额外的 PV ;

  5. vgreduce :在 VG 内移除 PV;

  6. vgchange :配置 VG 是否启动 (active);

  7. vgremove :删除一个 VG 啊!


  • 使用vgcreate创建 testvg,并通过vgs查看vg的详细信息

  • 114545385.png

  • 当vg创建完成之后,我们就可以查看pe的大小以及pe的数量114836674.png


3)、LV 的创建与管理

  1. lvcreate :创建 LV 啦!

  2. lvscan :查询系统上面的 LV ;

  3. lvdisplay :显示系统上面的 LV 状态啊!

  4. lvextend :在 LV 里面添加容量!

  5. lvreduce :在 LV 里面减少容量;

  6. lvremove :删除一个 LV !

  7. lvresize :对 LV 进行容量大小的调整!


  • 创建一个5G大小的lv,名称是testlv,并通过lvdisplay查看testlv的信息

  • -L:指定创建lv的大小

  • -l :指定pe的数量

  • -n :指定lv的名称

  • 115113402.png

  • 此时lvm创建完成,然后格式化并挂载就可以使用了

[root@station64 ~]# mke2fs -t ext4 /dev/testvg/testlv
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done                   
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@station64 ~]# mount /dev/testvg/testlv /mnt/


六、LVM动态调整大小

1、放大LVM的容量

  • 用 fdisk 配置新的具有 8e system ID 的 partition

  • 利用 pvcreate 建置 PV

  • 利用 vgextend 将 /dev/sdb2 加入到 testvg中,并查看容量增加了5G

  • 115706298.png

  • 利用 lvresize 将新加入的testvg加入到testlv中,并对比加入之前与加入之后testlv容量的变化

  • lvextend -L 指定增加了3G

  • 115946143.png

  • 通过 resize2fs 修改文件系统的容量120252326.png


2、缩小LVM的容量(缩小有风险)

  •  1、卸载并强行检查文件系统120615579.png

  • 使用resize2fs缩减容量到3G(注意是到3G,并不是缩减了3G)

  • 120835341.png

  • 查看挂载之后testlv(逻辑)的大小为3G

  • 121145946.png

  • 使用lvreduce -L 减少3G,并检测,然后挂载

  • 120918669.png

  • 查看挂载之后testlv(物理)的大小为 5G

  • 121349884.png

VG的缩减

  • 我们想要将/dev/sda3这块硬盘取下了,在取之前我们应该先查看一下这块硬盘是否有数据存在,如果直接取下硬盘,则导致数据丢失,所以我们使用pvdisplay命令查看 详细信息。发现sda3上有数据存在132459103.png


  • 使用pvmove将sda3的数据转移到sdb3上,并通过pvdisplay查看133753906.png


  • 从testvg中移除/dev/sda3这块硬盘,并存pv中删除这块硬盘

  • 134437374.png

  • 134439443.png


七、lvm快照卷的创建与管理

快照卷的创建

  • lvcreate -L

  • -n :快照卷的名称

  • -p:快照卷的访问权限

  • -s:创建快照卷

  • 创建一个testlv-snap的快照卷大小为1G

  • 135601313.png

  • 挂载快照卷到media目录下,并查看快照中的数据

  • 135854228.png

此时快照卷创建完成(也就意味着数据备份完成,我们可以使用tar命令将media的数据打包压缩备份)

快照卷的移除

  • 140312199.png

快照卷只是用于数据备份(原数据改变,快照卷的数据不会改变

LVM总结完毕,如有疏忽的地方,还请广大博友提宝贵意见!!!!