`
和你在一起
  • 浏览: 681693 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

说说IO(一)- IO的分层

阅读更多

 

IO性能对于一个系统的影响是至关重要的。一个系统经过多项优化以后,瓶颈往往落在数据库;而数据库经过多种优化以后,瓶颈最终会落到IO。而IO性能的发展,明显落后于CPU的发展。Memchached也好,NoSql也好,这些流行技术的背后都在直接或者间接地回避IO瓶颈,从而提高系统性能。

 

IO系统的分层:

 

  1.   三层结构

上图层次比较多,但总的就是三部分。磁盘(存储)、VM(卷管理)和文件系统。专有名词不好理解,打个比方说:磁盘就相当于一块待用的空地;LVM相当于空地上的围墙(把空地划分成多个部分);文件系统则相当于每块空地上建的楼房(决定了有多少房间、房屋编号如何,能容纳多少人住);而房子里面住的人,则相当于系统里面存的数据。

 

  • 文件系统—数据如何存放?

 

对应了上图的File SystemBuffer Cache

File System(文件系统):解决了空间管理的问题,即:数据如何存放、读取。

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

 

  • VM—磁盘空间不足了怎么办?

 

对应上图的Vol Mgmt

VM其实跟IO没有必然联系。他是处于文件系统和磁盘(存储)中间的一层。VM屏蔽了底层磁盘对上层文件系统的影响。当没有VM的时候,文件系统直接使用存储上的地址空间,因此文件系统直接受限于物理硬盘,这时如果发生磁盘空间不足的情况,对应用而言将是一场噩梦,不得不新增硬盘,然后重新进行数据复制。而VM则可以实现动态扩展,而对文件系统没有影响。另外,VM也可以把多个磁盘合并成一个磁盘,对文件系统呈现统一的地址空间,这个特性的杀伤力不言而喻。

  • 存储—数据放在哪儿?如何访问?如何提高IO速度?

 

对应上图的Device DriverIO ChannelDisk Device

数据最终会放在这里,因此,效率、数据安全、容灾是这里需要考虑的问题。而提高存储的性能,则可以直接提高物理IO的性能

 

    2. Logical IO vs Physical IO

 

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

物理IO是设备驱动发起的IO,这个数据最终会落在磁盘上。

      逻辑IO和物理IO不是一一对应的。

21
2
分享到:
评论
7 楼 tws502934462 2011-09-08  
[url]    [/url]
6 楼 umeit 2011-01-05  
引言非常到位!
5 楼 lzg406 2010-12-29  
不错,深有体会
4 楼 dengzhangtao 2010-12-29  
强悍的第一段 理解阿 ^_^
3 楼 rmn190 2010-12-23  
引用
Memchached也好,NoSql也好,这些流行技术的背后都在直接或者间接地回避IO瓶颈,从而提高系统性能。



诚哉斯言!
2 楼 yzhw 2010-12-22  
1 楼 贾懂凯 2010-12-20  

相关推荐

    嵌入式系统及应用ucos-Chapter8-IO管理-new.ppt

    《嵌入式系统及应用UCOS-Chapter8-IO管理》是关于嵌入式系统中I/O管理的讲解,主要用于教学参考。I/O管理在任何操作系统中都是至关重要的,因为它负责处理系统与外部设备间的数据交换。在嵌入式系统中,由于资源有限...

    containerd.io-1.3.7-3.1.el7.x86_64.rpm

    【containerd.io-1.3.7-3.1.el7.x86_64.rpm】是一个针对RHEL(Red Hat Enterprise Linux)7系统的Docker容器运行时组件containerd的软件包。containerd是由Docker公司开发并维护的一个轻量级、可插拔的容器运行时...

    开源项目-dgraph-io-badger.zip

    **开源项目-dgraph-io-badger.zip** Badger是由Dgraph公司开发的一个高效、快速的键值存储系统,它完全用Go语言编写。作为一个开源项目,Badger为开发者提供了轻量级、高性能的存储解决方案,尤其适合那些需要处理...

    说说IO:IO原理与解析.zip

    内容概要:IO的分层;IO模型;IO性能的重要指标;文件系统;逻辑卷管理;Driver & IO Channel;RAID;三分天下 适用人群:Java开发人员 使用场景:想学习JavaIO以及在IO开发中遇到瓶颈 目标:通过本教程的讨论与解析...

    RapidIO V3.0

    RapidIO采用分层结构设计,其中逻辑层定义了整个数据传输机制,包括数据包的类型、如何发送和接收数据包等。 RapidIO V3.0的逻辑规范支持多种包类型,如数据包、管理包、控制包等。每种包类型都有不同的头部格式和...

    rapidIO嵌入式系统互连_rapidio_rapidIO嵌入式系统互连_rapidio嵌入式_嵌入式_

    2. **分层结构**:RapidIO协议分为物理层、数据链路层、传输层和应用层,这种层次化的结构使得协议具有良好的扩展性和可移植性。 3. **多通道支持**:通过多个并行的数据通道,RapidIO可以实现高带宽传输,满足高...

    Ceph IO 路径和性能分析-王豪迈

    王豪迈,作为一个独立的开源软件开发者,分享了他对 Ceph IO 路径和性能分析的深入见解。Ceph 的 IO 路径设计复杂而丰富,涉及从上层 API 接口到下层存储的每一个层面。 Ceph 的 IO 路径从上到下主要分为几个层次,...

    RapidIO_Introduction.pdf

    RapidIO是一种高性能、低延迟的串行互连技术,主要用于芯片间或板间通信,特别是在高性能计算、网络设备、通信系统以及嵌入式系统等领域广泛应用。Altera公司的RapidIO IP核是为FPGA/CPLD设计提供的一种关键组件,能...

    Core IO优化企业IT基础架构(微软2008年1月24日讲座课件(一))

    描述中提到的“Core IO优化企业IT基础架构”是一场讲座的主题,这场讲座旨在分享如何通过优化核心输入/输出(IO)系统来提升企业信息技术基础设施的性能和效率。讲座可能涵盖了在2008年背景下,微软针对企业级IT环境...

    io文档文档

    T-IO自诞生以来,已经经历了多个版本的迭代,文档中提到了T-IO的早期历史和版本变迁,包括T-IO被码云评为最有价值的开源项目、在2017年成为最受欢迎的开源软件之一,并列在热门开源项目中Star数第三、Fork数第五的...

Global site tag (gtag.js) - Google Analytics