kavin

Linux下逻辑卷管理LVM的原理与实现方式

kavin linux 2018-05-17 2232浏览 0

一,什么是LVM

LVM是逻辑卷管理(Logical Volume Manager)的简称,它是对磁盘分区进行管理的一种机制,简历在磁盘和分区之上的一个逻辑层,用来提高磁盘管理的灵活性。通过LVM可以将若干个磁盘分区连接为一个整块的卷组(Volume Group),形成一个存储池。可以在卷组上随意创建逻辑卷(Logical Volume),并进一步在逻辑卷上创建文件系统,与直接的物理存储在管理上相比,提供了更好的灵活性。

LVM本质上是一个虚拟的设备驱动,处于物理设备和文件系统层之间,维护这个逻辑盘区和物理盘区之间的映射。LVM主要是通过DM技术实现的,即Device mapper设备映射技术。

Device Mapper Kernel ArchitectureDM设备映射的内核架构,其中DM支持的技术比较广,包含linear线性链接,类似于JBod技术,可以将多个磁盘组织成一块磁盘使用;还有mirror镜像技术,可以实现数据的备份;snapshot即快照卷技术,可以将系统之前某一时刻保存下来,等后续如果系统出现错误,需要恢复,便可以使用快照来恢复;multipath多路径可以让服务器有多条线路传输数据,当一条线路出现问题后,系统仍然可以通过其他线路顺利的进行数据的传输。

二,LVM的优点

LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外与硬件相关的存储设置会被其隐藏,可以不停止应用或卸载文件系统就能直接调整卷大小和数据迁移,减少操作成本。LVM与直接使用物理存储相比,有以下优点:

(1)灵活的容量

当使用逻辑卷时,文件系统可以扩展到多个磁盘上,你可以聚合多个磁盘或磁盘分区成单一的逻辑卷。

(2)可伸缩的存储池

你可以使用简单的命令来扩大或缩小逻辑卷大小,不用重新格式化或分区磁盘设备。

(3)在线的数据分配

你可以在线移动数据,数据可以在磁盘在线的情况下重新分配。

(4)便捷的设备命名

逻辑卷可以按你觉得方便的方式来起任何的名称。

(5)镜像卷

LVM逻辑卷提供方便的方法来镜像你的数据。

(6)快照卷

使用逻辑卷,你可以获得设备快照用来一致性备份或者测试数据更新效果而不影响真实数据。

三,基本概念

1,物理卷:PVPhysical Volume

物理卷在逻辑管理中处于最底层,它可以是实际物理磁盘上的分区,也可以是整个物理磁盘,甚至可以是RAID磁盘阵列。

2,卷组:VGVolume Group

卷组建立在物理卷之上,一个卷组中至少包括一个物理卷,在卷组简历之后可以动态的扩展或缩小空间。

3,逻辑卷:LVLogical Volume

逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态的扩展或缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。

4,物理盘区:PEPhysical Extent

物理盘区是物理卷中可用于分配的最小的存储单元,物理盘区的大小可根据实际情况在建立物理卷的时候指定。物理盘区大小一旦确定将不能更改,同一卷组中所有物理的物理盘区大小都一致。

5,逻辑盘区:LELogical Extent

逻辑盘区是逻辑卷中可用于分配的最小的存储单元,逻辑盘区的大小取决于逻辑卷缩在卷组物理盘区的大小。

四,常用命令

PV

pvcreatpvremovepvscanpvdisplaypvmove

VG

vgvreatvgremovevgextendvgreducevgsvgdisplayvgscan

LV

lvcreatlvremovelvextendlvreducelvslvdisplay

五,LVM逻辑卷管理操作详解

首先创建三个PV分区

#fdisk /dev/sda

n(新建分区)

+7G

n

+3G

n

+5G

t(调整分区类型)

10

8e(调整为LVM类型)

t

11

8e

t

12

8e

w(保存退出)

#partprobe /dev/sda

解释:重读/dev/sda分区的信息

#cat /proc/partitions

解释:查看是否有重读分区信息后更新成功

#pvcreat /dev/sda{10,11}

解释:创建物理卷sda10sda11

#pvs

解释:查看当前系统的PV信息

#pvdisplay /dev/sda10

解释:查看sda10物理卷的详细信息

#pvscan

解释:扫描当前系统一共有多少个物理卷

创建VG卷组

#vgs

解释:查看当前系统的卷组信息

#vgcreat myvg /dev/sda{10,11}

解释:创建卷组,将sda10sda11放到myvg的卷组中

#vgs

解释:再来查看一下创建的卷组的信息

#vgdisplay myvg

解释:显示卷组创建的详细信息,可以看到PE Size的大小为4M

#pvdisplay /dev/sda10

解释:可以发现PE SizeTotal PE的数值都显示出来了

#vgremove myvg

解释:移除myvg

#vgcreat -s 8M myvg /dev/sda{10,11}

解释:重新指定PE物理盘区的单位大小为8M

#vgdisplay myvg

解释:显示卷组的详细信息,并且可以看到PE物理盘区的大小为8M

执行缩减VG卷组操作

#pvs

解释:可以查看每个磁盘对应的卷组的对应项

#pvmove /dev/sda11

解释:先把sda11上的物理盘区的数据先挪到其他盘区

#vgreduce myvg /dev/sda11

解释:从myvg中把sda11移除

#pvremove /dev/sda11

解释:最后可以执行删除物理卷sda11的操作

扩展新的卷组VG操作

#pvcreat /dev/sda12

解释:创建物理卷sda12

#vgextend myvg /dev/sda12

解释:在myvg的卷组中加入物理卷sda12

#pvdisplay /dev/sda12

解释:可以发现当sda12加入myvg的卷组后,sda12的默认物理盘区大小就自动更新为8M

创建逻辑卷

#lvcreat -L 50M -n testlv myvg

解释:对卷组myvg创建一个大小为50M名称为testlvLV逻辑卷

#lvdisplay /dev/myvg/testlv

解释:显示/myvg/testlv下的逻辑卷的详细信息

#mke2fs -j /dev/myvg/testlv

解释:对逻辑卷testlv进行高级格式化为ext3文件系统

#mount /dev/myvg/testlv /mnt

解释:将文件系统testlv挂载至/mnt目录下

#ls /mnt

解释:在/mnt目录下可以看到lost+found文件。说明挂载成功,该文件系统可用

#mount

解释:可以看到/mnt下挂载的是/dev/mapper/myvg-testlv文件

#ls -l /dev/mapper

解释:可以看到这个是属于b块设备文件

#ls -l /dev/myvg

解释:可以看到/dev/myvg下的testlv是一个链接文件,指向/dev/mapper/myvg-testlv

移除逻辑卷

#umount /mnt

解释:如果一个逻辑卷处于挂载的状态是处于打开的状态,是无法直接移除的,需要先卸载

#lvremove /dev/myvg/testlv

解释:可以移除逻辑卷成功

扩展逻辑卷

#lvcreat -L 2G -n testlv myvg

解释:由于之前的删除了,所以重新使用卷组myvg创建一个2G的逻辑卷testlv

#mke2fs -j /dev/myvg/testlv

解释:对重新创建的逻辑卷testlv进行高级格式化为ext3文件系统

#mkdir /users

解释:创建一个用户的目录,用来挂载逻辑卷的文件系统

#vim /etc/fstab

解释:进入/etc/fstab的配置文件中

/dev/myvg/testlv /users ext3 defaults,acl 0 0

解释:在/etc/fstab配置文件中添加上面的一行信息

#mount -a

解释:-a选项表示挂载/etc/fstab文件中定义的所有的文件系统

#df -lh

解释:此时发现/dev/mapper/myvg-testlv的大小是2G

#lvextend -L 5G /dev/myvg/testlv

解释:将逻辑卷testlv的物理边界扩展到5G大小

#lvs

解释:发现testlv的大小是扩展到了5G,但是目前只是扩展了物理边界,没有扩展逻辑边界

#resize2fs -p /dev/myvg/testlv

解释:将逻辑卷testlv的逻辑边界也扩展到和物理边界一样的大小5G

#df -lh

解释:发现dev/mapper/myvg-testlv也显示了5G

#cd /users

#ls

解释:仍然可以正常的查看文件inittab

缩减逻辑卷

注意:

1,不能在线缩减,得先卸载

2,确保缩减的空间大小仍然能存储原有的所有数据

3,在缩减之前应该先强行检查文件,以确保文件系统处于一致性状态

#df -lh

解释:先查看一下逻辑卷的大小

#umount /users

解释:卸载/users挂载的目录

#e2fsck -f /dev/myvg/testlv

解释:强行检查逻辑卷文件系统内部的一致性

#resize2fs /dev/myvg/testlv 3G

解释:首先缩减testlv逻辑卷的逻辑边界至3G大小

#lvreduce -L 3G /dev/myvg/testlv

解释:然后再缩减testlv逻辑卷的物理边界

#mount -a

解释:重读/etc/fstab中定义的所有文件系统,重新挂载缩减后的testlv逻辑卷

创建快照卷

注意:

1,生命周期为整个数据时长,在这段时长内,数据的增长量不能超出快照卷大小

2,快照卷应该是只读的

3,跟原卷在同一个卷组内

#cp /ect/inittab ./

解释:将/ect/inittab复制到当前目录下来

#cp /etc/issue ./

#lvcreat -L 20M -n test-snap -s -p r /dev/myvg/testlv

解释:-L快照卷的大小为20M-n快照卷的名称为test-snap-s创建快照卷,-p权限为只读

#mount /dev/myvg/tsetlv-snap /mnt

解释:挂载快照卷后,发现数据内容保存的是备份的那一时刻的数据信息,后面如果修改或新增都不会有显示

#tar jcf /tmp/users.tar.bz2 inittab issue

解释:将快照卷下的文件压缩为/tmp/users.tar.bz2文件

#umount /mnt

解释:此时快照卷的作用结束,可以卸载快照卷

#lvremove /dev/myvg/testlv-snap

解释:移除快照卷testlv-snap

#cd /users

#rm inittab issue messages

解释:模拟无意间删除了/users目录下的信息

#tar xf /tmp/users.tar.bz2

解释:将刚刚保存的快照卷的打包压缩文件展开至/users目录下,从而完成用快照卷还原到过去特定时刻的作用


继续浏览有关 LVM 的文章
发表评论