Linux系统中LVM(逻辑卷的管理)的扩展以及缩小!

LVM的简介:

LVM(Logical Volume Manager) (逻辑卷管理):

每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值。因为如果估 计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。

虽然有很多动态调整磁盘的工具可以使用,例如PartitionMagic等等,但是它并不能完全解决问题,因为某个分区可能会再次被耗尽;另外一个方面这需要 重新引导系统才能实现,对于很多关键的服务器,停机是不可接受的,而且对于添加新硬盘,希望一个能跨越多个硬盘驱动器的文件系统时,分区调整程序就不能解 决问题。

因此完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。幸运的是Linux提供的逻辑盘卷管理(LVM,LogicalVolumeManager)机制就是一个完美的解决方案。

LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系 统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的 文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。

前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的存储卷,在存储卷上建立文件系统。首先我们讨论以下几个LVM术语:

*物理存储介质(PhysicalStorageMedia)

指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元

*物理卷(Physical Volume,PV)

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

*卷组(Volume Group,VG)

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

*逻辑卷(Logical Volume,LV)

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

*物理块(Physical Extent,PE)

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

*逻辑块(Logical Extent,LE)

逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

图所示LVM抽象模型,展示了PV、VG、LV三者之间关系:

和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的VGDA(卷组描述符区域)中。VGDA包括以下内容:PV描述符、VG描述符、LV描述符、和一些PE描述符。

系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置。当系统进行I/O操作时,就会根据VGDA建立的映射机制来访问实际的物理位置。

模型图:

 插图:

形象的总结一下:

我们的硬盘设备就相当于橙子,有几个设备就有几个橙子(即物理分区)

现在我们有一个客户他需要两个橘子那么大的橘子,物理上想要实现我们只能把俩橙子扎成汁来满足客户

现在我们将橘子扎成汁,放入杯子中(即物理卷)

将两杯澄汁倒入一个大杯子里(即物理卷组)

我们客户也有一个杯子用来喝澄汁(即逻辑卷),喝完了,不够喝的话去大杯子(物理卷组里取)当大杯子里澄汁不够的话,用其他橙子继续扎汁(其他设备)倒入大杯子(物理卷组)中;

 

开始实验吧!!!:

打开虚拟机:

用fdisk -l 查看硬盘分区信息:(可以看到我们/dev/vdb 硬盘分了3个主分区和一个拓展分区)

现在我们有了橘子物理分区:(/dev/vdb1,/dev/vdb2,/dev/vdb3)

后制作物理卷PV:步骤如下:

fdisk /dev/vdb 

其中输入t 表示更换类型:(先更改vdb1的类型)

输入l  查看所有类型:(可以看到8e 代表的是Linux  LVM 类型 选择它)

8e 改类型。 wq退出保存:

可以看到更改类型成功了:(目的是 便于系统识别 lvm最底层的类型)

并且顺便同步一下分区列表:

第二步:通过pvcreate 命令建立物理卷:(其中 需要输入y 确认)

通过pvs命令来查看物理卷是否建立成功:(可以看到我们刚才建立的 vdb1 物理卷显示出来了)

创建完物理卷,我们再来创建物理卷组:

当还没有创建的时候可以通过vgs命令查看是否有物理卷组:

可以看到此时没有:

vgcreate   weixingroup(自定义名称)   /dev/vdb1 (已有的物理卷设备)

可以看到新建物理卷组成功:(与物理卷vdb1有关的物理卷组)

最后新建逻辑卷:(其中 -L  后面跟容量大小可以使M ,G,T, -n 后面第一个是要命名的 逻辑卷名,后面是从物理卷组里取-L 后面的容量大小来使用!) 下图表示  我们从物理卷组weixingroup里取出了50M 供给我们 weixindata逻辑卷使用:

lvs查看一下:(可以看到  weixindata  并且大小50M左右)

而且我们可以看到我们新生成的虚拟设备:(而且 /dev/weixingroup/weixindata和 /dev/mapper/weixingroup-weixindata为同一个虚拟设备,都指向 ../dm-0)

下一步:格式化虚拟设备使他可以使用:

下一步:挂载我们的文件系统(虚拟设备):

为了方便观察我们新建一个名为/weixindatak的根下的目录:

将文件系统挂载到/weixindatak目录上:(可以看到挂载成功)

通过df -H 命令看一下设备容量大小:(可以看到和我们设置的50M大小一致):

为了方便观察,用watch -n 1  命令监视 物理卷,物理圈组,逻辑组,设备容量大小:

拉伸调整磁盘容量大小:

首先扩大逻辑卷(weixindata)的容量大小:

扩大之后,可以发现原本的物理卷,物理卷组的可用容量变小了,只剩16m可以供我们使用了:

最后扩大我们挂载的虚拟设备:

扩大完毕:(扩大为了80M):

可以看到当扩大为96M之后到了我们物理卷pv(/dev/vdb1)提供的容量极限值:

被我们用光了:(我们的逻辑卷扩大到了95M)

在已有的物理卷,物理卷组容量剩余不足的情况下我们需要新增 物理卷进来:

将vdb2,vdb3两个主分区全改为物理卷:

先调整系统标识符:

新建物理卷vdb2,vdb3:

把新建的两个物理卷加入到物理卷组(weixingroup)里:

可以看到物理卷组变大了:

紧接着扩大lv 逻辑卷:(从原来的96M 扩大到200M)

可以看到这次扩大到200M。我们把vdb1,vdb2的容量全部用完了。vdb3还剩余88M的容量:

扩大虚拟设备容量:

同理如果还想扩大容量重复上述操作

基本为   虚拟设备   》   lv(逻辑卷)  》  vg(物理卷组) 》 pv (物理卷) 》 物理分区 (从左往后要空间)

右边有就给,没有就向上一级继续要的这种形式。   

BUT!!!(而且  扩展可以在线完成(mount状态下).缩小不可以!)

xfs的文件类型只能扩大,却不能缩小,而ext4的文件类型可以扩大也可以缩小!

所以既然xfs不支持缩小,我们就得使用ext4来进行缩小:

第一步先卸载软件系统:

第二步更改文件系统的文件类型:(改为ext4文件类型):

首先演示一下ext4的拓展,与xfs方法大致一样:(将weixindata 逻辑卷由200M扩大到220M):

可以看到物理卷,物理卷组都少了20M,逻辑卷增加了20M到了220M:

扩大虚拟设备:(此处是ext4文件类型和xfs文件类型操作不一样的地方,使想要将weixingroup的容量完整的扩充到ext4文件系统只能使用resize2fs命令,而xfs还可以使用 xfs_grows 命令) 其中 resize2fs +文件系统 +(数量大小表示从逻辑卷取多少容量,不写的话,表示 weixindata所有容量被文件系统使用):

可以看到扩大到了220M:

说回缩小设备容量:

第一步卸载设备:

第二步:扫描文件系统:

缩减文件系统容量到100M:

挂载虚拟设备:

观察变化:(虚拟设备挂载后  由原来的220M 变为了我们刚才缩减为的100M)

缩小逻辑卷(lv)到166M(由220M到166M):输入y 表示确认缩小操作(缩小操作可能会导致文件损坏的发生)

可以看到当lv逻辑卷缩小后,缩小的那一些容量回到了 物理卷组和物理卷的剩余空间中去了!:

如何取出物理卷:

比如取出物理卷vdb2:

将vdb2中的数据迁移到vdb3中:(前提是vdb3的可用空间够我们转移!

可以看到变化:(vdb2全盘空余)

将物理卷vdb2从物理卷组 weixingroup中移除:

可以看到效果:

取出/dev/vdb2:

可以看到没有/dev/vdb2物理卷了:

猜你喜欢

转载自blog.csdn.net/Asukaaaa/article/details/83995080