Hegel2011的博客

读书 - 工作 - 生活 - 笔记

大话存储

张冬的《大话存储》确实一本好书,读了之后顿感以前的计算机组成算是白学了。

书到IP SAN之前都是很棒的。讲的很仔细,简直可以替换计算机组成的有关内容了。作者的实战经验很丰富,专业的知识面很广,如PCB盘片为什么要分层,对磁盘的解析,磁盘与CPU、OS的交互都很细致和形象,串行并行的优劣势,对几种Raid之间的区别于联系、发展脉络讲解的十分到位,柜和阵的区别,FC究竟意味着什么。可以看出作者是一个勤于思考勤于提炼的人。

不足之处就是书籍有点虎头蛇尾,在IP SAN讲解完之后的几章内容相对没有重点。当然,作为又出了第二版,我看了下主要补充的就是后半部分的内容。两本我都有,但是简单看了下第二版的后半部分,也还是不如前半部写的出色。

存储的发展

封面很山寨,图片有很多。比较有利于增强感性认识,也符合我想认识设备的需求。

纸带 磁存储 硬盘 磁阵 网络磁阵(几百个磁盘) 网络存储(硬盘从主机箱移到外面)

总线

总线就是一条或多条物理导线,导线可以有多条,比如8条、16条、128条。导线(总线)是可以印刷在电路板上,但密集的导线之间会产生高频振荡,所以会将这些导线分组印刷到不同的电路板上。然后再将多块板压合起来,形成了所谓的多层印刷电路板(多层PCB)。
导线中,有些是交互数据用的数据总线,有些是传递控制信号的控制总线,包括处理中断与仲裁的,另有一些是用来确认目标设备的地址总线。

连找发模型、CPU与硬盘的交互

主板上的电容电阻蛇形线都是为了保证导线的通畅。
CPU和硬盘通过总线相
即地址通过IO端口向内存中映射,由北桥芯片将这类地址的数据全部映射到总线上的实际设备;
即发送操作指令,对于磁盘CPU有如下三条指令: 1. 读还是写,外加其他选项如是否缓存、是否用中断来通知CPU处理 2. 知名应该读取的硬盘逻辑号[LBA]
3. 给出读取出来的内容放在内存中的哪个地址。
上面这三个指令其实是发给南桥上的控制器,南桥再将指令翻译成磁盘认识的一系列指令,南桥和磁盘之间的协议接口形成了ATA和SCSI两个指令集。

磁盘结构

盘片有两个盘面,每个盘面对应一个磁头,所以盘面号就是磁头号,一般是0-5号;
磁头和头发丝的大小差不多,磁头和盘面间的距离只有头发丝的千分之一;
盘片上每个同心圆就一个磁道,磁道从0开始编号,磁道上的每段圆弧称作扇区,一个扇区有512字节通常,扇区是流式的,类似磁带,扇区是分块的;
不同的盘之间相同磁道号的磁道共同组成柱面,圆柱面也从0开始编号,读写是首先在同一个柱面展开的,这样可以取得类似并行读写的效果,避免了不同磁道间的频繁切换;
能划分的扇区数取决于磁头有多小以及磁头的步进距离有多小,即磁道和磁道间隔有多细

扇区传统上采用CHS编码(Cylinder柱面、Header磁头、Sector扇区),每个扇区包含扇区头信息和数据区两部分,头信息就有CHS信息以及是否为坏扇区这些内容;不过随着发展,目前已经抽象成了LBA寻址方式,但这只是在磁盘外部表现的逻辑

扇区交叉因子是为了满足磁头旋转时因速度原因跑过了头,从而把不连续的扇区编号成为第2扇区,其实是一种模的运算,核心还是为了迎合磁头的物理运转需求 磁头扭斜则是为了满足切换磁道时也会产生的位移,因而磁道之间开始编号的起始扇区也有一个差

低级格式化就是利用磁头重新划分扇区

总有个最小单位(芝诺悖论,龟兔赛跑悖论)

硬盘接口技术

  • ATA

    • IDE(PIO,DMA两种主要模式,前者的数据通过CPU写入内存,后者磁盘直接写入内存,最高的是ATA133)
    • SATA(较PATA的信号干扰小)
  • SCSI(带宽大,热插拔,较ATA多了SCSI控制卡,其实就是多了一个处理器)

    • 并行
    • 串行
    • IBM SSA
    • FC接口(FCP)

CPU —–> 磁盘控制器(南桥) —–> 磁盘驱动器控制电路(硬盘内)

`接口1:磁盘控制器驱动程序`   `接口2:ATA/SCSI接口`  

磁盘数据 —–> 驱动控制电路的缓存 —–> 磁盘控制器

  `内部传输速率`               `外部传输速率`  

并行的劣势

并行是要求同步达到,这给并发信息之间的配合带来问题;它的传输频率不能太高,因为并行会增加干扰增加配合难度,而串行则无此问题,可以通过增加频率来提高速度。这里面的核心问题是传输距离,距离低的比如内存到cpu就不用担心干扰和配合带来的难题。而距离远的,如usb ata这是串行优势明显。

七种Raid

  • Raid 0 — 几块硬盘全部并发;
  • Raid 1 — 1比1镜像;
  • Raid 2 — 一部分盘用于校验,校验算法采用海明码; 校验盘数量很大,8位的数据就需要4块校验盘,所以已废弃
  • Raid 3 — 较Raid 2 对校验进行了突破,采用了布尔运算中的抑或算法,可以用更少的校验盘,可以校验和找回,但不像R2那样可以纠错,条带也被弄成了4KB; 每个读写都要所有盘全部一起动,所以文件系统的并发IO很差,因为每个IO都会让所有磁盘都在运作,从而无法可以同时执行多个文件系统IO
  • Raid 4 — 较Raid 3 增加了条带的深度,使得磁阵的block更大,从而在写数据时可以只动用少数硬盘;但所有的操作都要写校验盘,从而形成了一个瓶颈;
  • Raid 5 — 继续使用校验,突破点在于不再单独地使用一个硬盘做校验盘,而是在所有的磁盘中都产生了校验区;

    • Raid 5E和Raid 5EE都是带热备盘的Raid5.
  • Raid 6 — 另外6种Raid基本只容忍可以损坏一种磁盘,Raid 6允许损坏2块磁盘。在XOR运算之外,又增加了一种校验运算,从而提高了磁阵的可靠性。

Raid 0速度快所以可以和其他Raid杂交,组成Raid 50 、 Raid 10等等。

Raid 虚拟磁盘 卷 和文件系统实现

软硬Raid

Raid程序位于OS底层。

Raid 卡北连PCI南部包含了SCSI控制器。

虚拟磁盘是Raid卡把多个磁盘组合出来的,在OS看来就是一个物理磁盘。windows中的动态磁盘。

卷管理层

LV – 最后构成了LV
LP – 往往就是PP,但也可以按Raid 0 和 Raid 1的方式由PP组成
PP – 分成N个可以用于磁盘分配的块
VG – 卷组,多个磁盘都可以放到一个卷组里面
PV – 物理磁盘

实际的I/O参与者(1个manager,3个drivers)

  • I/O manager —> 寻求FS翻译
  • File System driver —> 把偏移转换成LV相关的便宜, 通过I/O Manager
  • LV manager driver —> 翻译成磁盘号和便宜,再次呼叫下一个driver,通过 Manager
  • Disk driver —> 翻译成磁盘相关的磁盘上的物理便宜位置

这个东西从架构风格上而言就是一个manager带着3个driver,采用过滤器式的链式传递。driver的顺序由manager管理,执行顺序由manager负责。 具体的活则由driver完成。

阵列

起步,JBOD,Just a Bound Of Disks, 里面就做到电路板上的SCSI线缆,连接15块硬盘,机箱外露出一个SCSI接口,与主机通过SCSI线相连。

之后,把RAID功能做进箱子里。因为JBOD时OS看见的和能操作的只有磁盘,反之,则能看见磁盘还能用OS工具把磁盘做成Raid。 因此,约定俗成,JBOD叫做磁盘柜,后一个叫做磁盘阵列

独立后的磁阵可分为前端后端,前端就是对外部提供的接口(外部接口), 后端就是面向内部管理的接口(内部接口),前端和后端的协议可以不一样。一个前端 也可以有多外部接口,这样就可以连到多个主机。

高级磁阵内部的芯片控制器都是双路的,这样避免了磁阵的单点故障。工作方式有 Active-Standby和Dual-Active。

机头就是带有控制器的磁盘阵列,后面可以接多个磁盘柜。这样一个机头就可以拖n个磁盘柜,从而扩大容量。

盘阵类型有 SCSI-FC、FC-FC、SATA-FC、SCSI-SCSI等等,前后表示后端,后者表示前端。 例如,SCSI-FC表示后端为SCSI接口,前端连接主机的是FC接口。

FC协议的引入

FC协议和以太网

FC协议其实是Fibre Channel(网状通道)的意思。其传输介质可以是光纤也可以是铜线。就像以太网的传输介质也可以是光纤是一样的。 只不过用光纤连接的多,于是FC在中国就变成光纤通信了。FC协议的传输效率比以太网高,但实现更复杂。但都是可以适应各种传输介质的, 比如无线信号、铜线、光纤。

FC的适配器也有光纤和RJ45等。

前端从SCSI迁移到FC

SCSI指令集在SCSI-3中做了分割,从此应用层的指令语义部分独立出来,下层改造成了一个适配器。而FC只要实现了这个适配器的功能就能 使用上层的指令语义部分。就这样,FC和SCSI的组合构成了新的SCSI前端。

意义(好处):

  1. 扩展性提高,只要连接上FC交换机,磁阵就能和多台主机相连。
  2. 增加了传输距离,铜线和光纤的区别。
  3. 有了安全策略:
    • 磁阵控制器上配置LUN映射表,规定只有某些主机能访问某些LUN,解决磁阵共享的问题
    • 在FC交换机上配置ZONE,类似VPN的做法
    • 磁阵共享的另一个解决办法是集群文件系统。是否磁阵独占由SCSI指令集协议定义
  4. 可实现冗余和均衡负载

FC是面向无连接的基于包分发的连接形式,是串行的所以适合远距离。

攻陷前端之后,FC又扩展到了SAN的后端。只是后端用的不是FC交换,而是FC中相对简单的另一个模式。协议的上层依然是SCSI。而且后端主要 还是铜材料连接。

配置LUN(划分磁盘),各个LUN参数(条带深度、数据宽度),配置LUN映射。类似PC上给磁盘分区后格式化。

DAS , SAN 和NAS

NAS(Network Attached Storage)就是把文件系统的功能放置在存储设备中,暴露在外面的不再是一个裸设备。 Windows使用CIFS协议,Linux使用NFS协议。

NAS暴露出去的是一个文件系统,而SAN在惯例中只是暴露出去的一个形式上类似物理磁盘的设备。

实际使用中,NAS后面可以接SAN作为存储。即混合使用。NAS也能作为SAN的一种特例。在我国,通常SAN就是指FC SAN。

以太网和TCP/IP概述

  • HUB — 无对应表
  • 网桥 — 总线-MAC
  • 交换机 — MAC-端口

TCP/IP 和 以太网的关系是PoP,即Protocol over Protocol。它们的关系是一对组合。 协议融合的方式有Tunnel和Map两个大类,PPPoE就是PPP协议 over Ethernet协议。

IP SAN

ISCSI, Internet Small Computer System Interface,SCSI协议走在以太网(通过ISCSI)上,以太网替换了FC,如同FC替换了SCSI链路, 编号RFC3720,2004年通过。开销比例约6%。

主机称作ISCSI Initiator,磁阵称作ISCSI Target设备。

以太网的发展速度以10倍速为单位,10Mb/s,100Mb/s,1Gb/s,10Gb/s. 而FC是以2倍速为单位,1Gb/s,2Gb/s,4Gb/s,8Gb/s。

IP SAN的成本低,卡和交换机都便宜的多,速度也还过得去,成本只有1/10以下。

IP 与 FC的融合

局部隔离(逻辑独立)、全局共享(连通)。不明所以,应该就是adapter,但实际上不太能行得通应该。还不如直接加入软件。

Included file 'twitter_sharing.html' not found in _includes directory