概念:
- Volume Group 卷组 LVM中高抽象的概念,其组合逻辑卷和物理卷成为一个可管理的单元。
- Physical Volume 物理卷 通常意义上的硬件磁盘,当然也可以是一个看起来像硬件磁盘的设备,比如软RAID设备。
- Logical Volume 逻辑卷 等效于非LVM系统上的磁盘分区,LV(逻辑卷)被视为一个块设备,可以包含文件系统挂载到指定目录。
- Physical Extent 物理块 每一个物理卷被划分为若干数据块,被作为物理块,这些物理块拥有和卷组的逻辑块同样的大小。
- Logical Extent 逻辑块 逻辑卷被划分为若干数据块,被作为逻辑块,在卷组中所有逻辑卷的逻辑块大小是一致的。
- Volume Group Descriptor Area 卷组描述符区域 和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的数据也是保存在位于物理卷起始处的VGDA(卷组描述符区域)中。VGDA包括以下内容:PV描述符、VG描述符、LV描述符、和一些PE描述符。
系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置。当系统进行I/O操作时,就会根据VGDA建立的映射机制来访问实际的物理位置。
逻辑关系:
hda1 hdc1 (PV:s on partitions or whole disks)
\ /
\ /
diskvg (VG)
/ | \
/ | \
usrlv rootlv varlv (LV:s)
| | |
ext2 reiserfs xfs (filesystems)
我们来总结一下:
一个VG1的卷组Volume Group,物理块Physical Extent为4MB。在这个卷组中我们引入2个硬件磁盘分区,/dev/sda1和/dev/sdb1。这些磁盘分区将成为物理卷Physical Volume PV1和PV2,也可以命名为其它可读名称。PV被划分为4M的块,这个大小由VG的PE决定。加入我们从PV1上获取99个块,从PV2上获取248个块。现在我们就可以创建逻辑卷Logical Volume,可以在1到347(99+248)之间的任何一个大小。当LV创建时,相当于创建了一个逻辑块和物理块之间的映射关系。例如逻辑块1可以映射到物理卷的物理块51上。写入逻辑卷的第一个4MB数据相当于写入到PV1的第51个PE物理块中。
映射模式:线性/条带
- 线性映射:按照顺序的分配一定数量的物理块PE到一个逻辑卷的范围内。例如逻辑块LE1-99映射到物理卷PV1,逻辑块LE100-347映射到物理卷PV2。
- 条带映射:逻辑块单元交错分布于一定数量的物理卷PV。
1st chunk of LE[1] -> PV1[1],
2nd chunk of LE[1] -> PV2[1],
3rd chunk of LE[1] -> PV3[1],
4th chunk of LE[1] -> PV1[2],
在相应场景下,这种策略可以提高逻辑卷LV的性能。
LVM1中条带化创建的逻辑卷不可以被扩展。
在LVM2中条带化的逻辑卷可以连接另外的设备集合到之前的集合之后。所以此时你可以创建一个逻辑卷由一个2条带的集合线性连接一个4条带的集合。
快照
快照允许管理员创建新的块设备,该设备和指定逻辑卷【在某一时间冻结】为精确拷贝。快照主要用来作为备份,但是不需要你终止运行的系统。当快照设备已经被完成,原始设备是可以被管理移除的。这个措施要求逻辑卷上的数据处于一致状态时创建快照,LVM1中的VFS-lock会确保当快照创建时文件系统自动完成,2.6内核的文件系统会自动完成当不打补丁创建快照时。
如果快照逻辑卷成为全量将被丢弃,所以指定足够的空间是至关重要的。快照的使用和空间的大小是独立的,所以没有解决方案,如果快照大小等于原始大小,它将永不溢出。
LVM1拥有只读快照,通过一个异常表来工作,异常表用来跟踪哪些块被更改。如果一个原始块被更改,它首先拷贝到快照上,并在异常表上标记为拷贝的,然后新数据写入到原始卷。
LVM2中快照是默认可读写的。读写快照工作起来像一个只读快照,带有额外的属性,数据写到快照上,在异常表中标记那个块为使用的,并且不在从原始卷中拷贝数据。这是得产生许多LVM1不会发生的可能。比如快照一个卷,挂载快照,运行一些实验程序修改卷上的数据。或者是快照一个卷,并修改快照作为某一实例数据。在原始数据上再快照一个,修改作为另外的实例数据。我们修改的只是某一个块,原始数据的大部分仍然是被两个实例共享的。
从当前的LVM2/device-mapper 代码,原始盘可以增长但是不可缩小。对于LVM1,原始盘不可改动大小。
确保移除逻辑卷的快照,当从LVM1升级为LVM2时。