说说IO(五)- 逻辑卷管理

LVM(逻辑卷管理),位于操作系统和硬盘之间,LVM屏蔽了底层硬盘带来的复杂性。最简单的,LVM使得N块硬盘在OS看来成为一块硬盘,大大提高了系统可用性。

LVM的引入,使得文件系统和底层磁盘之间的关系变得更为灵活,而且更方便关系。LVM有以下特点:

    - 统一进行磁盘管理。按需分配空间,提供动态扩展。

    - 条带化(Striped

    - 镜像(mirrored

    - 快照(snapshot

LVM可以做动态磁盘扩展,想想看,当系统管理员发现应用空间不足时,敲两个命令就完成空间扩展,估计做梦都要笑醒:)

LVM的磁盘管理方式

spacer.gif

LVM中有几个很重要的概念:

    - PVphysical volume:物理卷。在LVM中,一个PV对应就是操作系统能看见的一块物理磁盘,或者由存储设备分配操作系统的lun。一块磁盘唯一对应一个PVPV创建以后,说明这块空间可以纳入到LVM的管理。创建PV时,可以指定PV大小,即可以把整个磁盘的部分纳入PV,而不是全部磁盘。这点在表面上看没有什么意义,但是如果主机后面接的是存储设备的话就很有意义了,因为存储设备分配的lun是可以动态扩展的,只有当PV可以动态扩展,这种扩展性才能向上延伸。

    - VGvolume group:卷组。一个VG是多个PV的集合,简单说就是一个VG就是一个磁盘资源池。VG对上屏蔽了多个物理磁盘,上层是使用时只需考虑空间大小的问题,而VG解决的空间的如何在多个PV上连续的问题。

    - 

LVlogical volume:逻辑卷。LV是最终可供使用卷,LVVG中创建,有了VGLV创建是只需考虑空间大小等问题,对LV而言,他看到的是一直联系的地址空间,不用考虑多块硬盘的问题。

有了上面三个,LVM把单个的磁盘抽象成了一组连续的、可随意分配的地址空间。除上面三个概念外,还有一些其他概念:

    - PEphysical extend物理扩展块。LVM在创建PV,不会按字节方式去进行空间管理。而是按PE为单位。PE为空间管理的最小单位。即:如果一个1024M的物理盘,LVMPE4M,那么LVM管理空间时,会按照256PE去管理。分配时,也是按照分配了多少PE、剩余多少PE考虑。

    - LElogical extend:逻辑扩展块。类似PVLE是创建LV考虑,当LV需要动态扩展时,每次最小的扩展单位。

对于上面几个概念,无需刻意去记住,当你需要做这么一个东西时,这些概念是自然而然的。PV把物理硬盘转换成LVM中对于的逻辑(解决如何管理物理硬盘的问题),VG是PV的集合(解决如何组合PV的问题),LV是VG上空间的再划分(解决如何给OS使用空间的问题);而PE、LE则是空间分配时的单位。

spacer.gif

如图,为两块18G的磁盘组成了一个36GVG。此VG上划分了3LV。其PELE都为4M。其中LV1只用到了sda的空间,而LV2LV3使用到了两块磁盘。

串联、条带化、镜像

spacer.gif

串联(Concatenation): 按顺序使用磁盘,一个磁盘使用完以后使用后续的磁盘。

条带化(Striping): 交替使用不同磁盘的空间。条带化使得IO操作可以并行,因此是提高IO性能的关键。另外,Striping也是RAID的基础。如:VG2PVLV做了条带数量为2的条带化,条带大小为8K,那么当OS发起一个16K的写操作时,那么刚好这2PV对应的磁盘可以对整个写入操作进行并行写入。

spacer.gif

Striping带来好处有:

    - 并发进行数据处理。读写操作可以同时发送在多个磁盘上,大大提高了性能。

Striping带来的问题:

    - 数据完整性的风险。Striping导致一份完整的数据被分布到多个磁盘上,任何一个磁盘上的数据都是不完整,也无法进行还原。一个条带的损坏会导致所有数据的失效。因此这个问题只能通过存储设备来弥补。

    - 条带大小的设定很大程度决定了Striping带来的好处。如果条带设置过大,一个IO操作最终还是发生在一个磁盘上,无法带来并行的好处;当条带设置国小,本来一次并行IO可以完成的事情会最终导致了多次并行IO

镜像(mirror

如同名字。LVM提供LV镜像的功能。即当一个LV进行IO操作时,相同的操作发生在另外一个LV上。这样的功能为数据的安全性提供了支持。如图,一份数据被同时写入两个不同的PV

spacer.gif

使用mirror时,可以获得一些好处:

    - 读取操作可以从两个磁盘上获取,因此读效率会更好些。

    - 数据完整复杂了一份,安全性更高。

但是,伴随也存在一些问题:

    - 所有的写操作都会同时发送在两个磁盘上,因此实际发送的IO是请求IO2

    - 由于写操作在两个磁盘上发生,因此一些完整的写操作需要两边都完成了才算完成,带来了额外负担。

    - 在处理串行IO时,有些IO走一个磁盘,另外一些IO走另外的磁盘,一个完整的IO请求会被打乱,LVM需要进行IO数据的合并,才能提供给上层。像一些如预读的功能,由于有了多个数据获取同道,也会存在额外的负担。

快照(Snapshot)

spacer.gif

快照如其名,他保存了某一时间点磁盘的状态,而后续数据的变化不会影响快照,因此,快照是一种备份很好手段。

但是快照由于保存了某一时间点数据的状态,因此在数据变化时,这部分数据需要写到其他地方,随着而来回带来一些问题。关于这块,后续存储也涉及到类似的问题,后面再说。


你可能感兴趣的:(操作系统,动态,Physical,系统管理员,volume)