逻辑卷管理器LVM

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/gongxifacai_believe/article/details/84112982

1、LVM概述

想象一个情况,我们在当初规划主机的时候将/home分配了50G空间,等到使用者众多之后导致这个filesystem不够大,此时我们该怎么做呢?通常做法是这样的:再加一颗新硬盘,然后重新分割、格式化,将/home的数据完整的复制过来,然后将原本的partition卸载重新挂载新的partition。整个过程较为繁琐。若是第二次分割给的容量太多,导致很多磁盘容量被浪费了,又想将这个partition缩小时,该如何操作?将上述的流程再做一遍?有没有更简单的方法呢?有的!那就是LVM。
LVM(Logical Volume Manager, 逻辑卷管理器),我们使用的是版本2,LVM的类型编号为8e。LVM的重点在于可以弹性的调整filesystem的容量,而并非在于数据的存储效率及安全方面,提高文件的读写效率和数据的可靠性是RAID所考虑的问题。LVM可以整合多个实体partition在一起,让这些partitions看起来就像是一个磁盘一样。而且还可以在未来新增或移除其他的实体partition到这个LVM管理的磁盘当中。如此一来,整个磁盘空间的使用实在是相当的具有弹性。

2、LVM的各功能组件

(1)PV(物理卷)
PV物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块。但和基本的物理存储介质(如分区、磁盘等)比较,却包含有LVM特有的管理参数。
(2)VG(卷组)
LVM卷组类似于非LVM系统中的物理硬盘,由一个或多个物理卷组成,可以在卷组上创建一个或多个LVM分区(即逻辑卷)。
(3)LV(逻辑卷)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
PV、VG、LV之间的关系可以这样理解。假设现在有3个苹果,有4个人要吃,每个人需要吃的量还不同,1个人需要0.5个,1个人需要0.6个,1个人需要1个,另外1个人需要0.9个,那如何去分呢?我们可以将苹果切碎成泥,然后按照各自所需的量进行分配,这样就满足了各自的需求,也避免了相互之间的影响。
同样,LVM就是这样一种类似的管理方法。LVM将一些零碎的磁盘分区(PV)合并成一个较大的磁盘(VG),然后再根据需要将这个较大的磁盘(VG)划分成不同的小分区(LV),这些小的分区(LV)是可以动态的扩展与缩小的。这就是LVM逻辑卷管理的方式。
所谓的LVM大磁盘就是将许多PV整合成的这个VG,那么这个大磁盘最大可以达到多少容量呢?我们知道在文件系统里面,数据存储的最小单位是块,即block。在LVM当中数据存储的最小单位是PE,PE与block的作用是一样的。LVM默认使用的是4MB的PE区块,而LVM的VG最多仅能含有65534个PE,因此默认的LVM的VG会有4M*65534/1024M=256G,我们可以在创建VG的时候通过设定PE的大小来决定VG的大小。
LV的命名:dm(device mapper),将一个或多个底层块设备组织成一个逻辑设备的模块。用/dev/dm-#标识。
链接访问路径:

  1. /dev/mapper/VG_NAME-LV_NAME,如:/dev/mapper/vol0-root;
  2. /dev/VG_NAME/LV_NAME,如:/dev/vol0/root。

3、LVM的实现

接下来我们就通过示例来看看如何去实现LVM逻辑卷的管理。
(1)创建PV
与PV相关的一些管理命令有:pvcreate,pvdisplay,pvs,pvscan,pvremove,pvmove。
pvcreate:pvcreate /dev/DEVICE:将实体partition创建成为PV。
pvscan:搜寻目前系统里面任何具有PV的磁碟。
pvs:简要PV信息显示;
pvdisplay:显示PV的详细信息;
pvremove:将PV属性移除,让该partition不具有PV属性。

  1. 先准备块设备,调整其ID为8E;
  2. 然后创建PV:pvcreate [-f] /dev/sda{4,5,6}
  3. 查看PV信息:pvdisplay [/dev/sda{4,5,6}

(2)创建VG
与VG相关的一些管理命令有:
vgcreate:主要创建VG的命令,参数比较多。
vgscan:搜寻系统上面是否有VG存在。
vgdisplay:显示目前系统上面的VG状态。
vgextend:在VG内添加额外的PV。
vgreduce:在VG内移除PV。
vgchange:配置VG是否启动(active)。
vgremove:删除一个VG。
vgs:简要vg信息显示;
vgdisplay:显示vg的详细信息;
vgcreate [-s #[kKmMgGtTpPeE]] [-t|--test] [-v|--verbose] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...](需要先做pvmove)
vgremove:删除卷组

vgcreate myvg /dev/sda3
vgextend myvg /dev/sda5    将/dev/sda5加入myvg中;
pvmove /dev/sda5           移动/dev/sda5
vgreduce myvg /dev/sda5

(3)创建LV
与LV相关的一些管理命令有:
lvcreate:创建LV。
lvscan:查询系统上面的LV。
lvs:简要LV信息显示。
lvdisplay:显示LV的详细信息。
lvextend:在LV里面添加容量。
lvreduce:在LV里面减少容量。
lvremove:删除一个LV。
lvresize:对LV进行容量大小的调整。
lvcreate -L #[bBsSkKmMgGtTpPeE] [-n|--name LogicalVolume{NAME|Path}] VG_NAME
例如:lvcreate -L 10G -n magedulv mageduvg
lvremove /dev/VG_NAME/LV_NAME:删除逻辑卷
(4)扩展逻辑卷

  1. 用fdisk配置新的具有8E System ID的partition。
  2. 利用pvcreate创建PV。
  3. 利用vgextend将PV加入我们的mageduvg。
  4. 利用lvresize将新加入的PV内的PE加入magedulv中。
  5. 通过resize2fs将文件系统的容量增加。

# lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME: 修改物理边界(分区的物理空间);
# resize2fs /dev/VG_NAME/LV_NAME:修改逻辑边界(文件系统大小),不指定大小代表使用该分区物理空间上所有可用大小;
(5)缩减逻辑卷
# umount /dev/VG_NAME/LV_NAME:卸载已经挂载的LV;
# e2fsck -f /dev/VG_NAME/LV_NAME:文件系统强制检测和修复;
# resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]:缩减逻辑边界(文件系统大小);
# lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME:缩减逻辑卷大小(物理边界、分区的物理空间);
# mount /dev/VG_NAME/LV_NAME /mnt/lvm:重新挂载缩减后的LV。
(6)LV的挂载
要想真正的使用lvm就必须对lv进行格式化挂载。

  1. mkfs -t ext3 /dev/mageduvg/magedulv
  2. mkdir /mnt/lvm
  3. mount /dev/mageduvg/magedulv /mnt/lvm

4、快照:snapshot

(1)LVM快照概述
快照就是将当前的系统数据记录下来,在未来若有数据变动,则会将变更前的数据放在快照区进行保存,那么快照区将有两部分组成:变更之前的数据和未变更的数据。LVM的系统快照只备份有变更的数据,文件系统内没有变动的数据依旧保存在原本的区块内,因此通过LVM快照备份下来的数据所占用的容量非常小。由于快照区与原本的LV共享很多PE块,因此快照卷与原卷必须在同一个卷组中。
(2)LVM快照操作
创建快照:lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name
snapshot_lv_name:快照卷名字,original_lv_name:原卷名字。
示例如下:

创建快照:lvcreate -s -L 512M -n mylv-snap -p r /dev/myvg/mylv
显示信息:lvdisplay
创建快照目录:mkdir /mnt/snapshot
挂载快照卷:mount /dev/myvg/mylv-snap /mnt/snapshot

umount /mnt:卸载快照卷
lvremove /dev/myvg/mylv-snap:删除快照卷
umount /backup:卸载原卷
lvremove /dev/myvg/mylv:删除原卷
vgremove myvg:删除原卷组
pvremove /dev/sda3:删除物理卷
(3)利用快照恢复数据
注意:所要恢复的数据不能超过快照区的总大小,因为如果变动的数据大小超过了快照区的空间,那么快照区不能容纳所有变动的数据,这时快照功能将失效。
示例:先在原来的LV中写入一些数据,然后通过LVM的快照功能来恢复到之前的操作。

  1. cp -R /etc /mnt/lvm/
  2. 创建一个数据恢复的临时目录:mkdir -PV /tmp/backup
  3. cd /mnt/snapshot
  4. tar -zcf /tmp/backup/lvm.tar.gz *
  5. 将快照卷mageduss卸载并移除,因为里面的内容已经备份出来了
    5.1 umount /mnt/snapshot
    5.2 lvremove /dev/mageduvg/mageduss
  6. 解压备份出来的文件,和/mnt/lvm目录中的数据做对比,查看是否已经恢复到相关操作之前了。
展开阅读全文

没有更多推荐了,返回首页