文档章节

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

abcijkxyz
 abcijkxyz
发布于 2016/07/08 16:29
字数 1670
阅读 3
收藏 0

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

 

 

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

 

  • 统一进行磁盘管理。按需分配空间,提供动态扩展。
  • 条带化(Striped)
  • 镜像(mirrored)
  • 快照(snapshot)

 

 

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

 

 

LVM的磁盘管理方式

 

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

 

  • PV(physical volume):物理卷。在LVM中,一个PV对应就是操作系统能看见的一块物理磁盘,或者由存储设备分配操作系统的lun。一块磁盘唯一对应一个PV,PV创建以后,说明这块空间可以纳入到LVM的管理。创建PV时,可以指定PV大小,即可以把整个磁盘的部分纳入PV,而不是全部磁盘。这点在表面上看没有什么意义,但是如果主机后面接的是存储设备的话就很有意义了,因为存储设备分配的lun是可以动态扩展的,只有当PV可以动态扩展,这种扩展性才能向上延伸。
  • VG(volume group):卷组。一个VG是多个PV的集合,简单说就是一个VG就是一个磁盘资源池。VG对上屏蔽了多个物理磁盘,上层是使用时只需考虑空间大小的问题,而VG解决的空间的如何在多个PV上连续的问题。
  • LV(logical volume):逻辑卷。LV是最终可供使用卷,LV在VG中创建,有了VG,LV创建是只需考虑空间大小等问题,对LV而言,他看到的是一直联系的地址空间,不用考虑多块硬盘的问题。

 

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

 

 

  • PE(physical extend): 物理扩展块。LVM在创建PV,不会按字节方式去进行空间管理。而是按PE为单位。PE为空间管理的最小单位。即:如果一个1024M的物理盘,LVM的PE为4M,那么LVM管理空间时,会按照256个PE去管理。分配时,也是按照分配了多少PE、剩余多少PE考虑。
  • LE(logical extend):逻辑扩展块。类似PV,LE是创建LV考虑,当LV需要动态扩展时,每次最小的扩展单位。

 

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

 

 

 

 

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

      

串联、条带化、镜像

 

 

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

 

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

 



Striping带来好处有:

 

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

 

Striping带来的问题:

 

  • 数据完整性的风险。Striping导致一份完整的数据被分布到多个磁盘上,任何一个磁盘上的数据都是不完整,也无法进行还原。一个条带的损坏会导致所有数据的失效。因此这个问题只能通过存储设备来弥补。
  • 条带大小的设定很大程度决定了Striping带来的好处。如果条带设置过大,一个IO操作最终还是发生在一个磁盘上,无法带来并行的好处;当条带设置国小,本来一次并行IO可以完成的事情会最终导致了多次并行IO。

 

镜像(mirror)

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

 

 

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

  • 读取操作可以从两个磁盘上获取,因此读效率会更好些。
  • 数据完整复杂了一份,安全性更高。
但是,伴随也存在一些问题:
  • 所有的写操作都会同时发送在两个磁盘上,因此实际发送的IO是请求IO的2倍
  • 由于写操作在两个磁盘上发生,因此一些完整的写操作需要两边都完成了才算完成,带来了额外负担。
  • 在处理串行IO时,有些IO走一个磁盘,另外一些IO走另外的磁盘,一个完整的IO请求会被打乱,LVM需要进行IO数据的合并,才能提供给上层。像一些如预读的功能,由于有了多个数据获取同道,也会存在额外的负担。

 

快照(Snapshot)

 

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

 

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

 

本文转载自:http://blog.csdn.net/yuwenruli/article/details/6708097

共有 人打赏支持
abcijkxyz
粉丝 63
博文 6196
码字总数 1876
作品 0
深圳
项目经理
#11 硬连接与软链接与RAID与LVM2

两种特殊文件: 设备文件: mknod 符号链接文件: 链接:就是访问一个文件的不同路径; 硬连接: 数据块指针指向同一个数据块的文件; 不能跨文件系统创建硬连接; 目录文件不能创建硬连接;...

谁等了谁
06/26
0
0
浅谈linux性能调优之十九:lvm高级使用

上节引出了“逻辑卷”管理技术,大家都知道它比传统磁盘管理所具有的优势,我这里有一个关于lvm管理的手册“LVM HOWTO”,大多介绍是概念,使用方法。要的话可以给我留言或者在网上找找,练会...

OscerSong
2013/07/30
0
0
Linux学习笔记:存储管理

Linux系统中所有的硬件设备都是通过文件的方式来表现和使用的,我们将这些文件称为设备文件,在Linux下的/dev目录中有大量的设备文件,根据设备文件的不同,又分为字符设备文件和块设备文件。...

何时心安
2017/05/12
0
0
LV2 卷组 特殊文件

两种特殊文件; 设备文件; mknod 符号链接文件; 链接;就是访问一个文件的不同的路径 硬链接; 数据块指针指向同一个数据块的文件; 每次创建硬链接都会增加inode的引用计数 注意;不能跨文...

杨铄
2017/05/27
0
0
Linux之lvm管理

一、简介 LVM,即Logical Volume Manager(逻辑卷管理)的缩写,是Linux环境下对磁盘分区进行管理的一种机制。 二、版本 LVM1:最初在1998年发布,在Linux内核2.4版本上实现。 LVM2:LVM1的升级...

小辉hui
2014/05/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
34分钟前
1
0
我为什么用GO语言来做区块链?

Go语言现在常常被用来做去中心化系统(decentralised system)。其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。 我们在决定做Karachain的时候,考量(b...

HiBlock
40分钟前
1
0
大数据学习脑图以及入门教程!

近些年,大数据的火热可谓是技术人都知道啊,很多人呢,也想学习大数据相关,所以,这里分享几个大数据脑图,希望可以让你清楚明白从哪里入门大数据,知道该学习以及掌握哪些知识点; 大数据...

董黎明
今天
1
0
聊聊redis的监控工具

序 本文主要研究一下redis的监控工具 redis-stat redis-stat是一个比较有名的redis指标可视化的监控工具,采用ruby开发,基于redis的info命令来统计,不影响redis性能。 docker运行 docker r...

go4it
今天
2
0
TypeScript基础入门之高级类型的索引类型(Index types)

转发 TypeScript基础入门之高级类型的索引类型(Index types) 高级类型 索引类型(Index types) 使用索引类型,编译器就能够检查使用了动态属性名的代码。 例如,一个常见的JavaScript模式是从...

durban
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部