容桂品牌网站建设优惠进入百度搜索首页
学习资料:大话存储 存储系统底层架构原理极限剖析 终极版 张冬编著——清华大学出版社 2015.01
文章目录
- 0.1 序
- 0.1.1 信息存储技术溯源
- 0.1.2 数字化信息推动存储技术发展
- 0.1.3 数字存储技术
- 0.2 存储系统介绍
- 0.2.1 信息
- 0.2.2 数据
- 0.2.3 数据存储
- 0.2.4 用计算机来处理、保存信息
- 0.3 IO
- 0.3.1 三种总线
- 0.3.2 网络三元素模型
- 0.3.3 计算机网络系统
- 连
- 多层PCB
- 北桥
- 南桥
- PCI总线
- 找
- 发
0.1 序
书中内容涉及:
-
计算机IO基本概念
-
硬盘物理结构、盘片数据结构和工作原理;
-
七种常见的RAID原理详析以及性能细节对比,
-
虚拟磁盘、卷和文件系统原理
-
磁盘阵列系统
-
OSI模型
-
FC模型
-
众多磁盘阵列架构
同时也涉及很多新兴技术:
- 机械硬盘
- SSD
- FC/SAS协议
- HBA卡
- 存储控制器
- Thin Provision自动精简配置
- 数据容灾
- 应用容灾
- 业务容灾
- 性能优化
- 存储系统IO路径
- 云计算与云存储
0.1.1 信息存储技术溯源
信息存储是信息跨越时间的传递,也是人类传承知识的主要手段。在信息存储技术上,人类有超过万年的发明创造史。早期就地取材,人类利用石刻、泥板、竹简和羊皮等来记录信息,后来发明了纸张和活字印刷来保存和传播信息,近代发明了照相、录音和录像技术来存储信息。利用这些发明和创造,人类留下了极为丰富的文字、绘画、图像、语音和视频信息。正是这些信息.记录了人类创造的知识体系,使我们能够传承文明,并在此基础上创造新的文明。
-
竹简,纸张
-
选数管:1946年开发,电子存储装置,一种由直观存储转向机器存储的产物,256-4096bit
-
穿孔卡:用于输入数据和程序
-
穿孔纸带:用于输入和输出数据,一行代表一个字符
-
磁带:1951年作为数据存储设备使用,20世纪70年代后期到80年代,出现小型盒式磁带,长度为90分钟的磁带每一面可以记录大约660KB的数据
-
磁鼓存储器:1932年,通常作为内存,大约10KB
-
硬盘:1956年
-
软盘:IBM在1971年引入,目前已被淘汰
-
光盘:1987年,目前已经出现了CD-ROM、DVD、D9、D18、蓝光技术
-
Flash芯片和卡式存储:固态硅芯片,专用数字电路芯片,通用CPU芯片,RAM芯片,Flash芯片(永久存储数据的芯片)
-
磁盘阵列:硬盘容量爆炸引发
-
大型网络化磁盘阵列
0.1.2 数字化信息推动存储技术发展
从计算机的发明为开端,人类的信息技术进入了一个以 数字化 为特征的历史性新阶段。各种形式的信息被转换成数字后,以容易的方式进行处理、传输和存储,然后再转换为各种形式的信息被人们所利用。各种信息被大规模数字化,使得数字化的信息呈爆炸性增长。特别是互联网的普及,大大加快了信息的流通过程,使得数字化信息加速产生。Jim Gary:人类每18个月新增的数据量,将是历史上所有数据量之和。由此可见,对信息存储的需求将是无止境的,信息存储技术在这种需求驱动下得到了空前的发展
0.1.3 数字存储技术
为了保存数字化的信息,当代的科学家和工程师在最近的几十年中发明了磁存储、光存储半导体存储等多种存储技术,其中大容量的硬盘在海量信息存储中扮演了主要的角色。硬盘的密度在短短几十年中增长了一百万倍以上。
由硬盘作为基本单元,通过各种总线、网络将硬盘连接成不同层次和不同规模的存储系统,就构成了我们目前的 网络存储系统。
- 由硬盘组加上几余纠错技术构成磁盘阵列,再由磁盘阵列通过局部高速网络连接形成存储区域网;
- 通过包含硬盘的大规模集群和文件系统形成的海量存储系统成为大型网站和数据中心新的存储架构。
人们发明了各种技术来提高存储系统的容量、性能、效率、可用性、安全性和可管理性
- 存储虚拟化、归档存储、集群存储、云存储、绿色存储等新名词不断涌现,SSD固态存储、重复数据删除、连续数据保护、数据备份与容灾、数据生命周期管理等新技术层出不穷,令人应接不暇
0.2 存储系统介绍
随着人类相互之间交流的愿望越来越迫切,逐渐形成了通用的象形文字。有了文字之后,人们对每个文字加上了声音的表达,就形成了语言,也就是将一种形式的信息,转换成另一种形式的信息。人们用文字作为交流工具,将自己大脑产生的信息,通过这种方式传递给其他人。人类将大脑中的数据,变成语言编码然后通过声带的振动,通过空气这个大广播网,传递给网内的每个人。后来,人们将信息保存在介质上,如纸张、书本(活字印刷术)、激光打印机、纸带、软盘、硬盘、光盘
0.2.1 信息
信息:理解为对大脑的一种刺激形式
物质或者非物质,最后都是通过信息来表现。世界在生物眼中就是信息,世界通过信息来反映
任何物质都可以被表现为一种信息,只要信息存在,世界就存在,即世界可被认知
- 眼睛所能感知的只是光线,光触发了视网膜细胞,产生了一系列生化反应,经过蛋白质相互作用,神经网络传导,直至大脑中枢,产生一系列脉冲,一系列逻辑,就是信息
0.2.2 数据
将信息保存下来,所需要的是描述信息的信息,这些信息就是数据
- 数据包含了信息,读入数据,就是读入了信息,产生另一种信息。数据可以保存在某一种物质上,这种物质信息对计算机的刺激就产生了具体信息,而这些信息进而对人脑产生刺激,就产生人类可感知的信息
整个世界,就是信息之间的相互作用,信息影响信息
0.2.3 数据存储
早期的计算机,存储系统是没有磁盘的,只有纸带。纸带上时一些按一定规则排列的小孔,当这些小孔被银针穿过之后,银针便会接触到纸带下放置的水银槽,从而导通计算机上的电路,进行电路逻辑运算
磁存储技术被发明出来后,首先出现的是软盘,其速度很慢,程序存储在磁盘后,计算机启动,CPU按照ROM中的指令一条一条执行,先是检查硬件。检查完毕之后,ROM中最后一条指令就是让CPU跳转到磁盘的0磁道来执行存储在磁盘中的程序。这些初始化程序直接以二进制的形式存储在磁盘上,载入执行之后,就启动了程序内核。每个程序都必须独立完成在该计算机上运行的所有代码
在磁盘技术上发明出来的是文件系统,目的是为了方便应用程序管理磁盘上的数据产生。实际上是操作系统的代码模块,
- 这段代码本身也是信息,也要存储在磁盘上。而且文件系统的代码也需要读取一些信息,才能完成功能
- 文件系统的元数据:用于描述文件系统结构的数据,这些元数据以文件的形式放在磁盘上
0.2.4 用计算机来处理、保存信息
人脑可以存储各种信息,而计算机也能利用外部介质来存放数据,计算机本质上是人脑的一个外部信息的存储和处理的工具
计算机存储领域的一些虚拟化产品,本身就模拟了二级智能功能,可以连接任何不同型号品牌的存储设备,从这些设备上提取信息然后传输给主机
计算机存储领域研究的就是 怎么样为计算机又快又高效地提供数据以便辅助其运算
-
高速:将多块磁盘做成RAID(Redundant Array of Independent Disks)系统,将每个独立的磁盘组成阵列,联合存储数据,加快存储速度
-
容量:传统的将硬盘放到计算机主机箱内的做法已经不能满足现代应用程序对存储容量的需求,就催生了网络存储技术
将存储系统扩展到网络上,使存储设备成为了网络上的一个结点,以供其他结点访问。计算机可以通过网络来存取网络设备上的数据,他关注的是如何在网络上向其他结点提供数据流服务。进而产生了相关联的技术:IT系统容灾技术等
0.3 IO
IO就是IN和OUT建成。CPU需要从内存中提取数据来运算,运算完毕后再放回内存,或者直接将电信号发向一些针脚以操作外部设备
- 对于CPU来说,从内存提取数据,叫做IN;运算完后将数据直接发送给某些针脚或放回内存,叫做OUT
- 对于磁盘来说,IN指数据写入磁盘的过程,OUT是指数据从磁盘读出来的过程
数据在每个部件不断进行IO过程,传递给CPU由其运算处理,再经过IO过程,最终到达输出设备
0.3.1 三种总线
当代计算机中,IO通过共享 数据总线 的方式来实现。
总线是一条或多条物理上的导线,每个部件连接到这些导线上,导线上的电位每个时刻都相等,这样总线上的所有部件都会收到相同的信号
半双工工作模式 :同一时刻只能有一个部件在接收或者发送
仲裁总线 或 中断总线 上给出的信号来判断某个时刻总线由哪个部件来使用
- CPU运行操作系统内核的设备管理程序,产生控制信号
0.3.2 网络三元素模型
网络:将所有要通信的节点 连 起来,然后 找 到目标,找到后就 发 送数据
-
连
将网络上各部件连接起来,可以通过HUB总线,以太网,电话交换,无线,直连,中转等。每个网络点到其他网络点总有通路
-
找:编址+映射
通过命名建立区分机制。任何节点,不管所在的环境使用什么命名方式,到了网络层,都需要使用IP地址根据TCP/IP协议,实现节点与节点无障碍的通信
-
发
传输层需要保证发送数据。
0.3.3 计算机网络系统
连
CPU和内存时一个冲突域,IO总线是一个冲突域,桥接芯片将这两个冲突域桥接起来
多层PCB
主板上每个部件都是通过总线连接起来的,总线的条数与位宽相关(CPU按其内部寄存器到运算单元之间的总线数目来确定位数)。
- 部件交换数据的 数据总线
- 确认通信时目标设备的 地址总线
- 互相传递控制信号的 控制总线
- 中断与仲裁用的 仲裁总线
导线之间很密集,在高频振荡时会产生很大干扰,所以人们将这些导线印刷到不同电路板上,然后再将这些电路板压合起来,形成一块板——多层印刷电路
每块板上的导线数量降低,板与板之间的信号屏蔽性更好
北桥
CPU和内存速度很快,他们之间单独用一条总线连接.这个总线和慢速IO之间通过一个桥接芯片连接——主板上的 北桥芯片
- 北桥芯片连接了CPU、内存和IO总线
CPU和北桥之间的连线叫 系统总线(前端总线)
- 总线频率相当于CPU向外部存取数据时的数据传输速率,CPU自身频率表则表示CPU运算时电路的频率
南桥
由于北桥速度太快,IO总线速度相对于北桥很慢,所以北桥和IO总线之间往往要增加一个网桥,叫 南桥
- 在南桥上,集成了众多外设的控制器,如磁盘控制器,USB
PCI总线
PCI总线:目前计算机与服务器所普遍使用的一种南桥与外设连接的总线技术
用于传递外设的数据信号,可以终结在一个插槽,用于将PCI接口的板卡插入PCI总线,也可以直接与外设连接(一般用于集成在主板上的设备)
PCI总线的地址总线和数据总线是分时复用的
- 节省接插件的管脚数
- 便于实现突发数据传输
数据传输
数据传输时,一个PCI设备作为发起者(主控,Initiator,Master),另一个PCI设备作为目标(从设备,Target,Slave)。总线上所有时序的产生与都由Master发起
由于是总线式,所以同一时刻只能有一对设备完成数据传输,需要 总裁机构 决定总线使用优先级
- 当PCI总线进行操作时,Master先置
REQ#
信号,用来请求总线使用权,当得到仲裁器的许可(GNT#
信号),会将FRAME#
信号(传输开始或结束信号)置低,并在地址总线(分时复用数据总线)上放置Slave地址,同时C/BE#
(命令信号)放置命令信号,说明接下来的传输类型 - 所有PCI总线上的设备都需要对此地址译码,被选中的设备要置
DEVSEL#
(被选中信号)以声明自己被选中。当IRDY#
(Master可以发送信号)和TRDY#
(Slave可以发送信号)都置低时,可以传输数据。 - 当Master数据传输结束前,将
FRAME#
置高位表明只剩最后一组数据要传输,并在传送数据后放开IRDT#
以释放总线控制权
PCI总线的中断共享
PCI总线可以实现中断共享,即不同设备使用同一中断而不发生冲突
- 对外之可见PCI上有中断请求
硬件上,采用电平触发:中断系统一端接高电阻,在要产生中断的板卡上用三极管的集电集将信号拉低。不管有几块板产生中断,中断信号都是低电平;当所有办卡上的中断都得到处理后,中断信号才恢复高电平
软件上,采用中断链方式:系统启动时,扫描所有板卡,若板卡 A 使用了中断7,则将中断7的内存区指向板卡 A 的中断服务程序入口 ISR_A
,若还有板卡B也使用了中断7,则将 ISR_B
头插入中断7链表。当中断发生时,系统跳转到中断7对应的内存,轮询中断7的中断链,直至找到板卡相应的中断服务程序
找
主机总线中的设备地址映射。每个IO设备启动时,都要向内存中映射一个或多个地址,地址8bit,称为IO端口。
被北桥芯片重定向到总线上世实际的设备上
发
-
CPU将IO地址放到系统总线上,北桥收到后,会等待CPU发送第一条针对这个外设的指令,CPU会发送三条指令:
- 第一条:指令包含了表示当前指令是读还是写的位,以及其他选项(操作完成是否需要中断通知CPU处理,是否启用磁盘缓存等)
- 第二条:指明应该读取的硬盘逻辑块号(LBA)
- 第三条:给出读取出来的内容应该存放到内存中哪个地址
这3条指令被北桥依次发送到IO总线上的磁盘控制器执行
-
磁盘控制器接收到第一条指令,知道是读/写指令,且知道一些相应的操作选项
等待下一条指令,即逻辑块号
接收到逻辑块号后,会进行映射,一个逻辑块会对应多个扇区。定位完成后,等盘体转到扇区后,控制器会驱动磁头寻道,磁头开始读取数据
在读取数据的同时,会接收到第三条指令,数据读出后,可以直接通过DMA技术(磁盘控制器可以直接对内存寻址并执行写操作,不需要CPU参与)
数据存入内存后,CPU就从内存中取数据,进行其他运算
CPU实际是对南桥上集成(或通过PCI接入IO总线)的控制器发出对磁盘的指令,控制器再将这些指令翻译成内部指令执行操作。CPU只需要知道待操作设备的设备号、逻辑地址与对逻辑地址的操作,这些信息都由磁盘控制器驱动程序产生