LVM(逻辑卷管理)

一、LVM概述:

        LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的办法是使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着linux内核中逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。

       LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的存储卷,在存储卷上建立文件系统。

     LVM的几个基本术语:

1.物理存储介质(PhysicalStorageMedia)                                                        

      指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等。

2.物理卷(Physical Volume,PV)

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

3.卷组(Volume Group,VG)

     由一个或多个物理卷PV组成,类似于非LVM系统中的物理磁盘,可以在卷组上创建一个或多个LV(逻辑卷)。

4.逻辑卷(Logical Volume,LV)

     逻辑卷建立在卷组VG之上,类似于非LVM系统中的磁盘分区,在逻辑卷LV之上可以建立文件系统。

5.物理块(Physical Extent,PE)

    每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。

二、在linux系统中划分逻辑卷-实现扩容

### 1.首先让系统中已建立好的分区具有LVM功能:

#博主使用vdb这块硬盘做实验,首先用fdisk    /dev/vdb进入该盘的设置界面, 用p命令查看该硬盘上的分区情况:

# 发现此盘上现在有两个分区,但都未开启LVM功能,下一步我们开启这两个分区的LVM功能:

在上一步的设置界面输入t命令修改分区的类型,输入1为分区1修改类型,再输入L命令查看VLM功能的id是多少。

没错id 如上图所示是 8e,继续输入8e,这时分区一的类型就修改完成了,按p命令查看修改结果:

发现已经修改成功,我们模仿上面的步骤对分区2进行同样的操作。

### 2.创建物理卷(PV)、卷组(VG)、逻辑卷(LV)

    首先我们把vdb1分区做成物理卷PV,用命令:pvcreate    /dev/vdb1  实现,在这之前一定记得用 partprobe命令通知系统的分区情况。

 接着我们创建卷组(VG),使用命令:vgcreate    vg1    /dev/vdb1

再接着我们创建逻辑卷(LV),为逻辑卷分配50M的大小,使用命令:lvcreate    -L  50M   -n     lv1  vg1

查看PE、LV、VG的信息:

现在我们为逻辑卷(LV)创建文件系统,再将其挂载到/mnt目录上:

### 3.为逻辑卷(LV)扩容

我们先来看看现在LV的容量:

我们将其扩展至100M,使用命令:lvextend     -L    100M     /dev/vg1/lv1 

查看已经成功扩展至100M:

但这只是lv1 这块设备扩容成功了,文件系统记录的还是原来的设备大小:

所以还需要扩展文件系统,使用该命令:xfs_growfs    /dev/vg1/lv1

      此时文件系统也扩展至将近100M。有的人可能会问:为什么磁盘的容量和lv1卷的容量不一致?这时因为磁盘采用的是1M=1024KB,而lv1逻辑卷采用的1M=1000KB。

### 4. 对VG卷组进行扩容

# 若某天你的原有的VG卷组的容量用完了,我们就需要对卷组进行扩容。

首先先要创建一块新的物理卷,使用命令 :    pvcreate  /dev/vdb2   来创建新的物理卷。

接着将新创建的物理卷加入之前的卷组vg1,使用命令:vgextend    vg1   /dev/vdb2 来进行扩展vg1:

然后再查看扩展的结果,已经由之前的496M扩展至1.46GB:

三、ext4类型的文件系统的扩展和压缩

在压缩前应该注意,xfs文件系统是不可以压缩的,  而ext类型的文件系统可压缩。

(一)、使用tx4文件系统的设备容量的拉伸

### 1.首先将xfs文件系统转换为ext文件系统

/dev/mapper/vg1-lv1 卸载 并 格式化为ext4类型的文件系统:

然后挂载该设备 并 用blkid命令查看修改的结果:

### 2.拉伸lv1的容量

先看看现在lv1的容量为多大:

将其扩展至1GB,使用命令:lvextend   -L   1000M    /dev/vg1/lv1

### 3.拉伸ext4文件系统

先来看看现在的文件系统记录的挂载的容量大小

使用命令:resize2fs     /dev/vg1/lv1 对文件系统进行扩展,并查看扩展后的结果:

(二)、使用ext4文件系统的设备容量的压缩

### 1. 使用监控命令监控pv  vg  lv   以及挂载在/mnt上的虚拟设备vg1-lv1设备的动态信息:

   命令:   watch   -n  1        'pvs;echo ===;vgs;echo ===;lvs;echo ===;df -h /mnt'

### 2.扫描检测逻辑卷的大小

此步是必须进行的操作,防止压缩太小,已有文件放不下。

使用命令:  e2fsck   -f   /dev/vg1/lv1 来进行检测,检测前要卸载掉设备,如下图:

### 3.ext4 文件系统的压缩

#文件系统的压缩要在设备的压缩之前,防止数据损坏

使用该命令对文件系统进行压缩:resize2fs    /dev/vg1/lv1   500M,表示压缩至500M。

观察监视窗口发现:虽然挂载的设备已经压缩至500MB,但逻辑卷lv1这块虚拟设备的容量并没有变化:

### 4.逻辑卷lv1的压缩

使用该命令进行压缩:lvreduce   -L   500M   /dev/vg1/lv1 

再观察监视窗口发现 挂载的lv1设备和真实的lv1的容量大小都被压缩至500M了:

四、物理卷PV的增减:

### 1.新建一个2GB大小的物理卷,并加入卷组vg1,此物理卷未被使用过:

### 2.从vg1中移除未使用的物理卷和增加新的物理卷:

再监视窗口里看见vdb3这块物理卷现在在vg1这个卷组中:

使用命令:vgreduce   vg1   /dev/vdb3 从vg1中移除该物理卷:

使用命令:vgextend    vg1   /dev/vdb3来把vdb3这块物理卷再次加入卷组vg1中:

### 3.从vg1中去掉已经使用的物理卷:

#博主这里的vdb2这块物理卷已经使用过了且正在使用,我们试着把其从vg1中移除掉。

#首先将物理卷vdb2移到物理卷vdb3,注意!!!vdb3这块物理卷需要具备两个条件:1.容量要比vdb2大;2.未被逻辑卷lv1使用过。

放一张移动前的数据图片:

现在使用命令: pvmove   /dev/vdb2   /dev/vdb3 来移动vdb2到vdb3:

再将vdb2 从vg1卷组 中移除掉:

### 4.磁盘的快照:

##第一步:挂载 /dev/mapper/vg1-lv1 设备到 /mnt 目录上,然后再目录/mnt下面创建10个文件:

## 第二步:对逻辑卷磁盘设备vg1-lv1做快照

先卸载掉/dev/mapper/vg1-lv1:

然后对逻辑卷lv1进行快照。

使用命令: lvcreate   -L   100M  -n  lv1_snop  -s  /dev/vg1/lv1    ####  表示对lv1逻辑卷创建一个大小为100M名字叫lv1_snop的快照。

现在挂载快照文件,发现真实设备中的10个file文件也在:

## 第三步:删除快照文件及里面的10个文件

首先删除掉10个文件:

然后卸载掉快照:

最后删除掉快照:

### 第四步:再创建快照

    lvcreate   -L    50M    -n  lv1_snop1    -s /dev/vg1/lv1

### 第五步:测试看那10个文件是否还存在。

最后得出结论:对i磁盘进行快照后读的是原文件,更改的是快照文件,原文件没有被损坏。

四、撤销之前建立的 LVM的格设备的步骤:

1.先卸载挂载的逻辑卷以及快照设备:

2.移除快照设备:

3.移除逻辑卷lv1:

移除之前:

用命令 lvremove    /dev/vg1/lv1 移除:

观察监视窗口,lv1 消失了,说明已经被成功移除:

4.移除 卷组 vg1:

移除前监控窗口:

用命令  vgremove   vg1 移除卷组vg1:

观察监控窗口:

5. 移除物理卷

使用命令  pvremove     /dev/vdb{1,2,3} 移除三个物理卷:

观察监控窗口:

#现在所有的LVM设备都被删除了

然后我们删除掉 vdb1 vdb2  vdb3 这三个分区:

最后我们用命令 partprobe 命令通知系统对分区的改变,到这里关于LVM的所有设备和设定都移除了。

猜你喜欢

转载自blog.csdn.net/qq_40628106/article/details/83476302