每一个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,由于系统管理员不但要考虑到当前某个分区须要的容量,还要预见该分区之后可能须要的容量的最大值。由于若是估 计不许确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、从新对硬盘分区,而后恢复数据到新分区。 服务器
虽然有不少动态调整磁盘的工具可使用,例如PartitionMagic等等,可是它并不能彻底解决问题,由于某个分区可能会再次被耗尽;另一个方面这须要 从新引导系统才能实现,对于不少关键的服务器,停机是不可接受的,并且对于添加新硬盘,但愿一个能跨越多个硬盘驱动器的文件系统时,分区调整程序就不能解 决问题。 工具
所以完美的解决方法应该是在零停机前提下能够自如对文件系统的大小进行调整,能够方便实现文件系统跨越不一样磁盘和分区。幸运的是Linux提供的逻辑盘卷管理(LVM,LogicalVolumeManager)机制就是一个完美的解决方案。 布局
LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是创建在硬盘和 分区之上的一个逻辑层,来提升磁盘分区管理的灵活性。经过LVM系统管理员能够轻松管理磁盘分区,如:将若干个磁盘分区链接为一个整块的卷组 (volumegroup),造成一个存储池。管理员能够在卷组上随意建立逻辑卷组(logicalvolumes),并进一步在逻辑卷组上建立文件系 统。管理员经过LVM能够方便的调整存储卷组的大小,而且能够对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。并且当系统添加了新的磁盘,经过LVM管理员就没必要将磁盘的 文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘便可。 spa
前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的存储卷,在存储卷上创建文件系统。首先咱们讨论如下几个LVM术语: htm
*物理存储介质(PhysicalStorageMedia) 内存
指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。 get
*物理卷(Physical Volume,PV) it
指磁盘分区或从逻辑上与磁盘分区具备一样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。 io
*卷组(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创建的映射机制来访问实际的物理位置。