Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1204623
  • 博文数量: 185
  • 博客积分: 495
  • 博客等级: 下士
  • 技术积分: 1418
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-02 15:12
个人简介

治肾虚不含糖,专注内核性能优化二十年。 https://github.com/KnightKu

文章分类

全部博文(185)

文章存档

2019年(1)

2018年(12)

2017年(5)

2016年(23)

2015年(1)

2014年(22)

2013年(82)

2012年(39)

分类: LINUX

2013-09-26 12:05:02

原文地址:I/O分层 作者:登高望远海

1 IO分层

在操作系统层面从上至下逐层分解,IO系统的分层结构如下图所示:



其中,物理IO层又分为磁盘和卷管理VM层,卷管理层实际上完成了逻辑IO到物理IO的映射组织关系(这一层不是必须的,但是要实现更灵活、功能更强大的存储,则必须依赖VM),逻辑IO经过映射关系的重定位,转换成实际的物理IO,然后再对应的磁盘上完成最终的物理IO操作(读写数据)

1.1 三层结构

IO系统总体分成三部分:磁盘(存储)、VM(卷管理)和文件系统。磁盘是实际存储数据的地方,存放了各种数据;卷管理提供了对磁盘灵活管理的功能,对磁盘进行区间管理,它是实现RAID的基础;文件系统则是实现数据管理的作用,文件系统的功能很多,但是实际最核心的一点是管理、维护、索引每个文件,如果没有文件系统,那么对磁盘上的数据的引用就陷入大麻烦:应用程序怎么知道它要访问的数据在哪里呢,这就得靠文件系统来告诉它。

1.2 数据如何存放

数据主要存放在两个区域:内存和磁盘,分别对应了上图的File SystemBuffer Cache

Filesystem:解决了空间管理的问题,即:数据如何存放、读取。

Buffer Cache:解决数据缓冲的问题。对读,进行cache,即:缓存经常要用到的(磁盘上存储的)数据;对写,进行buffer,缓冲一定数据以后,一次性进行写入磁盘。

1.3 空间如何管理

对应上图的Vol Mgmt

VM其实跟IO没有必然联系。它是处于文件系统和磁盘(存储)中间的一层。VM屏蔽了底层磁盘对上层文件系统的影响。当没有VM的时候,文件系统直接使用存储上的地址空间,因此文件系统直接受限于物理硬盘,这时如果发生磁盘空间不足的情况,不得不新增硬盘,然后重新进行数据备份、转移。而VM则可以实现动态扩展,而对文件系统没有影响(实际上还是有一定影响的,但是不会出现重新进行数据备份、转移的步骤,需要做的仅仅是短期将文件系统下线一小段时间,当然现在有些高级文件系统新增磁盘大小的时候,甚至不需要下线文件系统)。另外,VM也可以把多个磁盘合并成一个磁盘,对文件系统呈现统一的地址空间,这就是RAID实现的基础。

1.4 数据存储处理

数据处理过程对应上图的Device DriverIO ChannelDisk DeviceDevice Driver定义了通过IO channel访问Disk Device的方法,并且利用IO channel传输数据到Disk Device。数据最终会存放在Disk Device,因此,效率、数据安全、容灾是这里需要考虑的问题。而提高存储的性能,则可以直接提高物理IO的性能。

1.5 逻辑IO和物理IO

逻辑IO是操作系统发起的IO,这个数据可能会放在磁盘上,也可能会放在内存(文件系统的Cache)里。

物理IO是设备驱动发起的IO,是逻辑IO经过设备映射转换得到的,IO处理的数据这个数据最终会落在磁盘上存储。

逻辑IO和物理IO不是一一对应的,一般一个逻辑IO对应一个或多个物理IO(RAID设备,一般一个逻辑IO至少对应2个物理IO)

阅读(1110) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~