QQ:122567712
msn:myprotein0007@hotmail.com
敝人专著《大话存储》终于出版了!2008年10月中旬全面上市!
关于网友stornewer对《网络存储导论》的一些疑问的讨论。
上一篇 / 下一篇 2007-02-07 10:03:49 / 个人分类:我的原创文章
stornewer说:
正在读《网络存储导论1.0》遇到不明白的地方
该PDF是从本网站的资源共享置顶页下载的
1) Page6
关于raid卡:
半软半硬:缺乏自己的I/O处理芯片,所以这方面的工作仍要由 CPU与驱动程序来完成所以这方面的工作仍要由 CPU与驱动程序来完成。而且,半软半硬 RAID所采用的 RAID 控制/处理芯片的能力一般都比较弱,不能支持高的 RAID 等级(什么是I/O处理芯片即I/O处理器?)
2)page 16
Raid4:Independent Data disks with shared Parity disk(独立的数据硬盘与共享的校验硬盘)。与 RAID 3 相比,存储工程师发现关键之处是把条带改成了“块”。即 RAID 4 是按数据块为单位存储的,那么数据块应该怎么理解呢?简单的话,一个数据块是一个完整的数据集合,比如一个文件就是一个典型的数据块。RAID 4 这样按块存储可以保证块的完整,不受因分条带存储在其他硬盘上而可能产生的不利影响(比如当其他多个硬盘损坏时,数据就完了)。由于RAID 4在写入时要等一个硬盘写完后才能写一下个,并且还要写入校验数据所以写入效率比较差,读取时也是一个硬盘一个硬盘的读,但校验迅速,所以相对速度更快
1.这里说条带变成了块,怎么理解?硬件底层还根据上层文件系统中文件做校验?
2.比如当其他多个硬盘损坏时,数据就完了?如何理解?RAID4 中2个磁盘损坏,还有恢复数据的可能?
3)page 20
作为磁盘阵列,虽然在操作系统和各个磁盘驱动器之间增加了一层RAID控制器,但目前所有的 RAID 控制器本身只作为对磁盘容错的管理和校验的计算等一些必要的操作,并不对数据请求做合并、重新排序和优化处理,因为它的设计出发点是建立在单个主机连接的已经经过操作系统优化的和排序的数据请求的基础之上,它所拥有的缓存也只有直接缓存和计算缓存的功能,不对数据做排队处理,只是将主机端口过来的数据按着先进先计算先出的方式通过 CPU计算校验以后写入磁盘。
1.真是这样的吗?阵列控制器这么差?倒不如买台处理器强的cpu做软raid呢
4)page 21
所谓大规模磁盘阵列存储系统,一般是指在一个存储系统中使用总线结构或交叉点(什么是总线结构或交叉点交换结构?)交换构将多个存储子系统(磁盘阵列)连接起来,并在总线中或交换结构中使用大容量的缓存和用于更多主机连接的类似于通道集线器或交换机的主机连接模块,最后通过复杂的存储管理软件组合成的大型的存储系统。这种存储系统可以提供比单个小的磁盘阵列更大的容量和更高的性能。象采用总线结构的 EMC 的Symmetrix 系统在单个磁盘阵列的性能只能达到25 至50M字节/秒(只有这么多?)时,它的最高性能就可以到100M字节/秒,甚至在使用RAID10(磁盘镜像)时最高可到 200至300M 字节/秒。象采用总线结构和交叉点交换结构(最新的系统)日立的两种存储系统,也可以到类似于 Symmetrix RAID10 的实际性能。一般在这类存储系统中缓存对性能都有巨大的贡献,但只有在事务处理应用和类似于计费的应用中才起作用。几十 G字节的缓存可以存储数小时的事务处理数据,系统可以从容地在空闲时将数据写入磁盘,物理卷的非常小的数据段设置也足以说明这类存储系统只适合于事务处理类应用。对于多媒体数据来说几十G字节的缓存相当于几十秒或几分钟的数据量,缓存写满以后将考验系统直接从磁盘上访问数据的能力。而一般的这类系统虽然拥有几十 100M字节/秒带宽的光纤通道主机连接端口,但内部集成的多个磁盘阵列子系统与一般的用于事务理的磁盘阵列并没有什么不同,磁盘阵列子系统的一个控制器的一个逻辑单元的性能在只有一个主机访问这个逻辑单元的情况下可以有25 至50M字节左右的实际性能。在多主机访问同一个逻辑单元(多主机是否是指前端接口连接主机?同一时间下,控制器允许单个逻辑单元多主机访问?上层的文件系统不是独占式访问的吗?是否需要OS下软件支持?)的情况下,由于在所有的这些系统中没有数据重新排序和优化功能(总线结构和交叉点交换结构决定了这一点)(什么样的产品具有数据重新排序和优化功能?)
所以同样会产生较大的性能影响。但这种性能衰减与小规模的磁盘阵列的性能衰减有所不同。由于在这种大规模磁盘阵列存储系统内部包括了相对独立的多个磁盘阵列子系统(例如四个或八个),每个磁盘阵列子系统由一对磁盘控制器组成,在不同的主机访问不同的磁盘阵列子系统时各自的性能不受影响,只受到系统总线带宽的限制。所以在多主机的数据流访问平均分布在不同的存储子系统中时,它的多主机的支持能力可以是小规模磁盘阵列系统的几倍。在这种大规模磁盘阵列存储系统中,一个逻辑单元只能建立在单个磁盘子系统中,由于单个磁盘阵列子系统的内部串行(是指什么,串行结构不块?光纤路径不是采用串行SCSI-3,速度不是很快吗?)结构,决定了一个逻辑单元只能通过一个串行路径来提供给用户,所以大规模磁盘阵列存储系统并不能提高单个逻辑单元的性能,而对于视音频数据流的应用,用户数据访问的单个数据流一般都很大,但访问次数相对较小,即使有一定的规律性也有可能发生对不同逻辑单元的需求不均衡的现象,这样极易造成某个逻辑单元阻塞或性能明显下降。所以这种大规模磁盘阵列存储系统并不适合使用于视音频和多媒体的应用领域。
5)page 23
在视音频应用环境中来自不同主机的多个媒体流对 NAS 存储系统性能的影响。
NAS 存储系统是建立在传统 RAID 技术的基础上,发挥单个主机连接时磁盘阵列系统拥有
最好的性能的特点,使用 NFS 和CIFS协议将瘦服务器连接的存储系统通过以太网共享给外部的用户。由于瘦服务器削减了与存储管理和数据通讯无关的各种功能,优化了 TCP/IP 协议的数据传输能力,同时使用多个(目前最多十个)(怎么算出来最多是十个的?)并行的 TCP/IP数据传输,使单个 NAS 存储系统的最大共享速度可以达到 60M字节/秒左右。这样一来,由于单个 TCP/IP 流由其协议的限制最多可以到6M字节/秒左右(6MB/S还不够吗?像在线播放只类的vod每个用户需要这么大的流量吗?即使是下载我觉得也够了),造成对媒体流大小的限制。同时大多数媒体流具有实时性,而 TCP/IP 的打包传输特点不能提供一个持续稳定的传输,会导致媒体流的掉帧的或质量的下降。NAS 的共享能力只有 60M字节/秒(根据10(并行数据流)*6M/S 算出来的?如果是由于网卡原因,多网卡做负载均衡不行吗?),而对于实时性很强的媒体流类型应用来说,有效的共享能力可能只有 30 至40M字节/秒,这种有限的共享能力对存储工程师目前的需求来说是远远不够的。在媒体流应用中,如果用户的需求超过 NAS 存储所能提供的共享能力时,将导致对每一个用户的服务质量下降。
6)page 25
举例2:HDS 公司的 Lightning9960 存储系统分析

Lightning9960 的体系结构如图一(图示在尾部,图中每个磁盘通道可以接32个硬盘,怎么算出来,是由于机柜没用空间了,还是算出来的?所示,主机接口最大可以使用四个 CHIP 对,每个 CHIP
对由两个可以互相备份(每个主机必须通过两个光纤通道适配器同时与两个CHIP 的一个口连接)的 CHIP 组成,每个 CHIP 拥有四个光纤通道(ESCON 接口在本文中将不涉及,但并响存储工程师对性能的讨论)主机接口和两个用于与内部两个交换机连接的光纤通道接口,四个CHIP 对共有32 个光纤通道主机接口和 16 个光纤通道的与内部交换机相连接的接口。在Lightning9960 的中间采用两个 Crossbar交换机,每个交换机都与每个 CHIP、每个缓存块和每个磁盘阵列控制器的光纤通道相连接。Lightning9960 最多有四块8GB 的缓存,缓存是 CHIP 与控制器之间数据的必经缓冲区,它与交换机之间共有 16 个光纤通道连接(图中只画出了 8 个)。在体系结构的最下面是四对磁盘阵列控制器,每对控制器有四个连接交换机的通道和 8 个用于连接磁盘驱动器的磁盘通道。控制器对中的不同控制器的两个磁盘通道同时连接到双端口磁盘的两个端口上提供备份连接,所以每对控制器实际有 4 个独立的磁盘通道。
Lightning9960 的数据通道带宽:
从 Lightning9960 的结构图中可以计算出每部分的带宽是:32 个光纤通道主机端口总带宽为3200MB/秒;CHIP与交换机之间的总带宽为 1600MB/秒;在交换机到缓存之间的总带宽为1600MB/秒;在缓存到交换机之间的总带宽为1600MB/秒(缓存和交换机之间是双向传输所以此项带宽与上一项带宽互相不影响);交换机到磁盘阵列控制器的总带宽为 1600MB/秒;内部磁盘通道的总带宽为1200MB/秒(因为每对磁盘阵列控制器的四个磁盘通道中在做RAID5 时有一个通道的带宽被用来做校验)。由于所有以上的带宽都是串行结构,所以 Lightning9960 的数据通道实际总带宽受到链路中最小值 1200MB/秒的限制。但数据通道带宽并不等于整个系统的实际性能,实际的性能将受到每个磁盘阵列控制器(ACP)的RAID 引擎、系统整个体系结构和应用环境的影响,下面将讨论在应用中的实际性能。 Lightning9960 的实际性能: Lightning9960 存储系统中每个磁盘阵列的性能由于受到每个磁盘阵列控制器(ACP)的RAID 引擎的限制,单个控制器的性能只有60MB/秒左右(这么弱吗?台湾厂商陈列柜使用的控制器性能岂不是更低?)
新手上路,希望版主解疑,感谢!
冬瓜头说:
支持楼主,勤思考,勤推敲!
一头一脑一双手,
一思一考现眉头。
一词一句勤推敲,
一招一式苦练成!
1) Page6
所谓IO处理器,这个词,实在不好理解。raid卡上的IO处理器,暂且把它看成是掌管着主机总线和raid电路之间通信的一个中介模块即可。也就是数据从总线传来,由IO处理器负责送至raid模块处理,之后在经由IO处理器将数据放到总线,双向传输。

2)page 16
1.这里说条带变成了块,怎么理解?硬件底层还根据上层文件系统中文件做校验?
这个块,以及raid所有级别,楼主需要深刻理解,不妨看一下《存储秘史》,里面对这个作了详细讲解。
2.比如当其他多个硬盘损坏时,数据就完了?如何理解?RAID4 中2个磁盘损坏,还有恢复数据的可能?
作者的意思是说,如果按照上层事物性的一大块,都放在一个磁盘上,那么一旦有其它硬盘故障,还可以保证这个事务的完整性,可以直接读取出来这块数据。2块盘出错,raid4不能恢复整体数据,但是可以恢复零散的数据,但是这些数据,需要很复杂的分析,才有可能恢复成具有文件系统级别意义的数据。
3)page 20
1.真是这样的吗?阵列控制器这么差?倒不如买台处理器强的cpu做软raid呢
其实磁盘真列,本身就是一台软raid,你说对了。只不过有些功能,给固化到芯片中而已,比如xor。要想把控制逻辑做成纯数字电路逻辑,这个成本太高了。不过作者所说的“磁盘阵列本身没有队列优化功能”,这个我表示一些怀疑。比如NCQ等等技术,都是要求实现在物理磁盘上的,磁盘真列本身对于主机控制器来说,就是一个磁盘,如果想实现队列优化,可以仅靠操作系统或者主机控制器,但是也可以靠磁盘阵列,路径中任何点上都可以做这个动作。作者这个论断,不知道是不是有内部资料的参考,不能确定。
4)page 21
《《《什么是总线结构或交叉点交换结构?
总线和交换,是网络通信的基本拓扑,还有仲裁环,也应该算一个。可以将这些拓扑整合起来,形成多样的网络。其中作者说的EMC的Symmetrix 系统是总线结构,好像不太对,应该是点对点直连结构,他是独享线路,而不是总线。
《《《多主机是否是指前端接口连接主机?同一时间下,控制器允许单个逻辑单元多主机访问?上层的文件系统不是独占式访问的吗?是否需要OS下软件支持?
是的。可以允许,磁盘阵列可以做成scsi保留独占)模式或者共享模式。上层文件系统是独占式访问,但是对于cluster fs来说,可以在多个主机之间互相协调访问。os下软件,这个软件就是cluster fs,比如nfs,gfs,pvfs,lustre等等。
《《《总线结构和交叉点交换结构决定了这一点
不懂这句话,好像并没有什么关联吧
《《《什么样的产品具有数据重新排序和优化功能?
比如NCQ。
《《《是指什么,串行结构不块?光纤路径不是采用串行SCSI-3,速度不是很快吗?
内部串行,作者想要表达的可能是:对于每个scsi指令及其数据,最终都是串行的。不是说串行不快,fc用串行,比用并行快,是因为目前远距离并行传输已经达到技术极限。纯理论上将,串行是比并行慢的。作者还说由于串行,所以“决定了一个逻辑单元只能通过一个串行路径来提供给用户”,楼主要看上下文。
5)page 23
《《《怎么算出来最多是十个的?
这个我想是不是和流媒体有关,每个媒体流,最多建立10个socekt连接,还需要参考流媒体方面的知识。
《《《6MB/S还不够吗?像在线播放只类的vod每个用户需要这么大的流量吗?即使是下载我觉得也够了
作者所说的“由于单个 TCP/IP 流由其协议的限制最多可以到6M字节/秒左右”,我觉得不恰当。tcpip协议从来没听说过有速度限制。我想作者的意思是上层流媒体编码等等的限制,这个6MB,是说最终的裸数据,而不是连带开销一起的数据,也就是tcpip层承载的数据。
作者一开始就假定nas的最大速率为60MB,这个我不知道他是怎么得出结论的,可能只是参考了某一个产品来说的吧。然后还有“最多10个”的假定,所以60除以10=6,这一系列的推断,需要作者来解释了。
6)page 25
《《《怎么算出来,是由于机柜没用空间了,还是算出来的?
产品就是这么设计的。一个磁盘通道,如果用fc al的话,最多可以连接128节点(包含控制器以及保留地址),实际证明磁盘数量在60块左右可以达到最高IOPS密度。
作者说“由于每个 CHIP 可以将与它连接的所有的不同主机来的I/O请求重新排队”,这个和他上面的论断“磁盘阵列不会做什么优化排队”显然是矛盾的。
关于每个控制器性能只有60MB,这个问题也是我一直以来没有高清楚的问题,也就是fcal是微观串行,宏观并行的架构,如果每个磁盘都以缓存的速度发送数据,那么可以达到al的带宽,但是如果磁盘缓存都禁用了,那么貌似就是没有缓存时候的一块磁盘的最大速率,那么这个60MB的顺序传输速率的由来,也就不足为奇了。但是IOPS,不能按照这个理论来解释,iops和顺序传输最大带宽没有很大的关系。
感谢《网络存储导论》的作者,时成阁博士
也感谢楼主
我在《存储秘史》的以后章节中,会尽量避免这些让人有争议的论断,尽量说得通俗,正确。
stornewer说:
感谢冬瓜头这么有人心的版主,遇到这样的版主三生有幸!以后有问题要抓紧问,不要错过,呵呵!
1)Page6 关于I/o处理器,是不是在存在I/O处理器的情况下,主机的CPU只要把传到PCI总线就可以了,至于怎么和如何传到raid模块,由插在pci插槽(假设是pci插槽)I/O处理器完成?
2)好的,一会我看你的秘笈大作!
2.2.比如当其他多个硬盘损坏时,数据就完了?如何理解?RAID4 中2个磁盘损坏,还有恢复数据的可能?
作者的意思是说,如果按照上层事物性的一大块,都放在一个磁盘上,那么一旦有其它硬盘故障,还可以保证这个事务的完整性,可以直接读取出来这块数据。2块盘出错,raid4不能恢复整体数据,但是可以恢复零散的数据,但是这些数据,需要很复杂的分析,才有可能恢复成具有文件系统级别意义的数据。
意思我明白,即使这样,但是数据的完整一致性raid控制器无法校验,raid控制器会相信这样的数据?这样的数据有意义吗?莫非通过单个磁盘把这些数据拿出来,通过别的设备还原?
4)上层文件系统是独占式访问,但是对于cluster fs来说,可以在多个主机之间互相协调访问。os下软件,这个软件就是cluster fs,比如nfs,gfs,pvfs,lustre等等。作者是这样的意思吗?
作者说“由于每个 CHIP 可以将与它连接的所有的不同主机来的I/O请求重新排队”,这个和他上面的论断“磁盘阵列不会做什么优化排队”显然是矛盾的
这个CHIP是什么东西?也有处理器,磁盘陈列和chip是位于不同的位置,如果它们都有自己的处理数据的能力,矛盾吗?
冬瓜头说:
《《《1)Page6 关于I/o处理器,是不是在存在I/O处理器的情况下,主机的CPU只要把传到PCI总线就可以了,至于怎么和如何传到raid模块,由插在pci插槽(假设是pci插槽)I/O处理器完成?
》》》不管硬卡还是软件raid,都需要磁盘控制器,都需要驱动程序。硬raid卡也在主机内存中驻留驱动程序的,只不过主机接受到的数据,是已经raid处理过的数据,而软raid,主机接受到磁盘控制器的数据,是不经raid处理的数据。
“至于怎么和如何传到raid模块,由插在pci插槽(假设是pci插槽)I/O处理器完成?”,是的。
《《《“莫非通过单个磁盘把这些数据拿出来,通过别的设备还原?”
》》》就是这个意思。可以直接读取磁盘扇区。比如你存储了一段字符“拉登将于2008年1月1日炸毁白宫”,那么这几个字节,除非做raid2,否则一般这么小的块(一个扇区),都会放到一个磁盘上,所以你读取出这个扇区,就会知道这个数据,这就是一个完整事务,拉登将于2008年元旦实施恐怖活动。
《《《4)上层文件系统是独占式访问,但是对于cluster fs来说,可以在多个主机之间互相协调访问。os下软件,这个软件就是cluster fs,比如nfs,gfs,pvfs,lustre等等。作者是这样的意思吗?
》》》多主机访问同一LUN,这个随便了,当然可以,但是你要保证文件系统的一致性,就要么ha,要么cluster。作者这里并没有过多的说细节。
《《《这个CHIP是什么东西?也有处理器,磁盘陈列和chip是位于不同的位置,如果它们都有自己的处理数据的能力,矛盾吗?
》》》chip就是chipist,主板,芯片组。也就是处理数据用的。盘阵其实就是一台主机,也有自己的总线,cpu内存,适配器,chip泛指一个电路处理模块。
recharluo兄说:
说一下自己的观点:
1)关于raid卡:
半软半硬:缺乏自己的I/O处理芯片,所以这方面的工作仍要由 CPU与驱动程序来完成所以这方面的工作仍要由 CPU与驱动程序来完成。而且,半软半硬 RAID所采用的 RAID 控制/处理芯片的能力一般都比较弱,不能支持高的 RAID 等级(什么是I/O处理芯片即I/O处理器?)
不知道谁取得“半软半硬“的名字,很有创意!通常,他是指像Chipset提供的raid,或者像VIA6421之类的RAID卡!
A) 它比起纯粹的软RAID,多了基本的I/O处理模块(这个模块,按照芯片组来理解,就像是南桥里面的ide控制器,sata控制器;如果把这个sata控制器的ic拿出来单独封装就可以做成专门的SATA控制芯片,如VIA6421卡上的片子);I/O,I/O,说白了,就是做读写,具体点对于存储来说,也就是处理ATA,SCSI命令和数据之类的玩意儿,进一步讲基本的I/O芯片就是处理传输这些命令和数据的接口芯片,如PATA, SATA, SCSI, FC等接口芯片(他们可以单独封装,也可以整合在一个大的chip里面,如Intel的Xscale处理器)。
B)而比起真正的纯粹硬件的RAID卡,它在硬件上少了一个RAID的处理模块;一些功能强大的RAID卡,比如Adaptec的,卡上甚至带有处理器,有memory,甚至有RAID的硬件IC模块来offload(比如Xscale里面的raid加速器);从而提供更为强大的I/O功能和特性。当然,也需要烧掉用户不少银子!
那么,这两个卡的驱动有什么影响?如何占用该卡所在主机的CPU cycle并影响到性能?
a)对于半软半硬卡的驱动,一个SCSI数据发送下来,由于没有RAID硬件IC,显然要在驱动中进行RAID的逻辑分析并可能作分拆和计算;那么对于raid5这样需要做Parity的类型,就只有霸占CPU来做计算,然后把计算的结果分别发送到raid5中的相应盘中。从而,需要CPU来干涉RAID处理的各种细节,大把大把的占用了cpu cycle资源。
b)而对于纯硬件卡的驱动,一个SCSI数据发送下来,由于卡本身有强大的I/O功能(甚至卡上自身就又一个嵌入式操作系统,基本上可以被看作为RAID Subsystem,可以提供更加高级的特性),从而该卡就会告诉CPU,你该干嘛干嘛去,我办事你放心。从而,节约了CPU大把时间。
因此,对于"半软半硬"和"纯硬"来说,一个重大差别就在于对于所在主机性能的影响;
如果用户觉得对性能要求不高,却在乎银子,那么"半软半硬"也是个不错的选择。
至于提到的“不能支持高的 RAID 等级",据我所知,恰恰相反,往往"半软半硬"提供更多的等级;这倒不是因为技术上的问题,很多是宣传和市场上的需求,个中道理值得慢慢品位啊!
冬瓜头说:
罗兄果然说得好啊。
不过,raid计算模块不应该归属到驱动部分吧,应该归属到vm一层中更为恰当吧。
没错。IBM做过测试,aix下的lVM软raid0,甚至比ssa卡raid性能还要高。linux的软raid模块,就可以做raid5,所以并不是说不能做high level的raid的。盘阵本身其实就是一个“软”raid。
还有个问题请教罗兄,卷管理层和磁盘驱动之间,是不是还要经过os的一些中介,比如queue之类的模块,而不是直接call的关系吧?
罗兄说:
不过,raid计算模块不应该归属到驱动部分吧,应该归属到vm一层中更为恰当吧。
---LVM有RAID功能,这个RAID是纯粹软RAID,是在LVM卷管理中实现的,这个RAID基本所有卷管理器都有,不过此RAID并非LZ所说卡上的RAID;
没错。IBM做过测试,aix下的lVM软raid0,甚至比ssa卡raid性能还要高。linux的软raid模块,就可以做raid5,所以并不是说不能做high level的raid的。盘阵本身其实就是一个“软”raid。
---很多卷管理器的性能都不错,因为它们通过一些缓冲算法,在某种程度上牺牲数据一致性的情况下来提高性能!
还有个问题请教罗兄,卷管理层和磁盘驱动之间,是不是还要经过os的一些中介,比如queue之类的模块,而不是直接call的关系吧?
--- 当然,它们中间有很多东西需要处理,如此庞大复杂的SCSI协议集(以及广泛应用的ATA协议集),需要灵活的设计才会有更好的扩展兴,queue技术只是很少的一部分!
stornewer说:
Page 30 Initialization:初始化
在逻辑驱动器的数据区上写零的操作过程,并且生成相应的奇偶位,使逻辑驱动器处于就
绪状态。初始化将删除以前的数据并产生奇偶校验,所以逻辑驱动器在此过程中将一并进行一致性检测。没有经过初始化的阵列是不能使用的,因为还没有生成奇偶区,阵列会产生一致性检测错误。(本人曾经看到一些陈列卡支持foreground 和background initialazation的工作模式,不明白产生奇偶校位有什么用,此时陈列没有数据,反正在写入数据的时候还是要计算才能产生,我觉得此时清零和分段就可以了,原因是什么:);又比如HP DL380 G4主板集成的smart array 6i,设好raid-level就可以安装系统,而有些陈列必须要等到初始化完成时候才能使用,区别在什么地方?)
Page 31 Logical Volume:逻辑卷
由逻辑磁盘形成的虚拟盘,也可称为磁盘分区。(是不是LUN?)
Power Fail Safeguard:掉电保护
当此项设置为可用时,在重构过程中(非重建),所有的数据将一直保存在磁盘上,直到
重构完成后才删除。这样如果在重构过程中发生掉电,将不会发生数据丢失的危险情况。
(在重构过程中,重构进度的纪录是放在什么地方的?)
Page 35当对SAN和NAS 进行比较时,这两种相互竞争的技术实际上是互补的。SAN和 NAS是在不同用户需求的驱动下的独立事件。SAN是以数据为中心的,而 NAS是以网络为中心的。概括来说,SANs 具有高带宽块状数据传输的优势,而 NAS 则更加适合文件系统级别上的数据访问(我总觉得这样比较不是一个级别的,客户端应用程序对数据访问,最终都会经过服务器(包含nas)上面的操作系统,主机I/O总线,I/O控制器,存储I/O总线,磁盘。路径都差不多吧?区别也只是nas访问中,由于使用了I/O重定向器,客户端减少了tcp/ip协议中tcp上层的开销)
冬瓜头说:
《《《本人曾经看到一些陈列卡支持foreground 和background initialazation的工作模式,不明白产生奇偶校位有什么用,此时陈列没有数据,反正在写入数据的时候还是要计算才能产生,我觉得此时清零和分段就可以了,原因是什么:
》》》一块新的磁盘,刚刚出厂的时候,上面有没有数据?有人说没有,但是我说:有。具体什么数据呢?就是:要么全是0要么全是1,我所说的全0是指实际数据部分,扇区控制等一些特殊格式除外。因为磁盘上的磁性区域就有两种状态,不是N极,就是S极。那么也就是说不是0就是1,而不可能有第三种状态,所以你说全是0或者1,算不算数据?当然要算了。那么好,如果我做了一个raid5,但此时,磁盘上任何数据都不动,那么我们看一下是个什么状态,比如5块磁盘,4块数据盘空间,1块校验盘空间,同一个条带上,4块数据块,一块校验块,他们都是0(或者1),那么此时如果按照raid5来算,是正确的,因为0 xor 0 xor 0 xor 0 xor 0 = 0,全是0,对。如果一开始磁盘全是1,那么同样的1 xor 1 xor 1 xor 1 xor 1 = 1 全是1,也对。但是如果此时我6块盘做raid5,而且初始全为1,情况就矛盾了:1 xor 1 xor 1 xor 1 xor 1 xor 1 = 0,此时正确结果应该是校验块为0,但是初始磁盘全部为1。有人还是持怀疑态度,那么我们来测试一下,如果初始化过程不对磁盘进行任何更改,直接拿来写数据,比如此时我就网第二个extend上写了一块数据,将1变为了0,然后控制器根据公式:
新数据的校验数据=(老数据 EOR 新数据) EOR 老校验数据
(1 eor 0) eor 1 = 0,新校验收据为0,所以最终数据变成了这样:
1 xor 0 xor 1 xor 1 xor 1 xor 1 ,我们来算一下他应该的正确的教研数据,一算,应该等于1,而由raid控制器算的却成了0,所以就矛盾了,为什么会犯这个错误?那是因为一开始,raid控制器就没有从一个正确的数据关系开始算,导致越算越错。所以raid控制器在做完设置,启用之后,初始化的过程需要将磁盘每个扇区都写成0或者1,然后计算出正确的校验位,在这个基础上,新到来的数据才不会以讹传讹。
(以上摘自《存储秘史》第7篇)
foreground就是指上面说得。background initialazation是说做好raid group之后立即就可以用,只不过这些过程都在后台完成,不需要等待全部完成。
《《《比如HP DL380主板集成的smart arry 6i,设好raid-level就可以安装系统,而有些陈列必须要等到初始化完成时候才能使用,区别在什么地方?
》》》raid1,0等非校验型level,不需要初始化校验,所以直接可用。如果需要校验的level也直接可用,那么就是background initialazation模式
《《《由逻辑磁盘形成的虚拟盘,也可称为磁盘分区。(是不是LUN?)
》》》说成分区,有些争议,是说mbr里的分区,还是其它形式的分区?这个需要具体情况具体分析。逻辑磁盘泛指LUN。(关于LUN的由来请参考《存储秘史》
《《《(在重构过程中,重构进度的纪录是放在什么地方的?)
》》》不了解,可能被打断后,会重新来,也可能可以继续。请咨询研发人员。
《《《(我总觉得这样比较不是一个级别的,客户端应用程序对数据访问,最终都会经过服务器(包含nas)上面的操作系统,主机I/O总线,I/O控制器,存储I/O总线,磁盘。路径都差不多吧?区别也只是nas访问中,由于使用了I/O重定向器,客户端减少了tcp/ip协议中tcp上层的开销)
》》》nas就是一个远程文件系统,怎么说呢,fs在本地实现,和在远程实现,差别就在于传输路径成了tcpip,而不是pci总线了。这么理解就可以了。nas和san,谁都不会被取代,因为各自都有自己的作用范围。
正在读《网络存储导论1.0》遇到不明白的地方
该PDF是从本网站的资源共享置顶页下载的
1) Page6
关于raid卡:
半软半硬:缺乏自己的I/O处理芯片,所以这方面的工作仍要由 CPU与驱动程序来完成所以这方面的工作仍要由 CPU与驱动程序来完成。而且,半软半硬 RAID所采用的 RAID 控制/处理芯片的能力一般都比较弱,不能支持高的 RAID 等级(什么是I/O处理芯片即I/O处理器?)
2)page 16
Raid4:Independent Data disks with shared Parity disk(独立的数据硬盘与共享的校验硬盘)。与 RAID 3 相比,存储工程师发现关键之处是把条带改成了“块”。即 RAID 4 是按数据块为单位存储的,那么数据块应该怎么理解呢?简单的话,一个数据块是一个完整的数据集合,比如一个文件就是一个典型的数据块。RAID 4 这样按块存储可以保证块的完整,不受因分条带存储在其他硬盘上而可能产生的不利影响(比如当其他多个硬盘损坏时,数据就完了)。由于RAID 4在写入时要等一个硬盘写完后才能写一下个,并且还要写入校验数据所以写入效率比较差,读取时也是一个硬盘一个硬盘的读,但校验迅速,所以相对速度更快
1.这里说条带变成了块,怎么理解?硬件底层还根据上层文件系统中文件做校验?
2.比如当其他多个硬盘损坏时,数据就完了?如何理解?RAID4 中2个磁盘损坏,还有恢复数据的可能?
3)page 20
作为磁盘阵列,虽然在操作系统和各个磁盘驱动器之间增加了一层RAID控制器,但目前所有的 RAID 控制器本身只作为对磁盘容错的管理和校验的计算等一些必要的操作,并不对数据请求做合并、重新排序和优化处理,因为它的设计出发点是建立在单个主机连接的已经经过操作系统优化的和排序的数据请求的基础之上,它所拥有的缓存也只有直接缓存和计算缓存的功能,不对数据做排队处理,只是将主机端口过来的数据按着先进先计算先出的方式通过 CPU计算校验以后写入磁盘。
1.真是这样的吗?阵列控制器这么差?倒不如买台处理器强的cpu做软raid呢
4)page 21
所谓大规模磁盘阵列存储系统,一般是指在一个存储系统中使用总线结构或交叉点(什么是总线结构或交叉点交换结构?)交换构将多个存储子系统(磁盘阵列)连接起来,并在总线中或交换结构中使用大容量的缓存和用于更多主机连接的类似于通道集线器或交换机的主机连接模块,最后通过复杂的存储管理软件组合成的大型的存储系统。这种存储系统可以提供比单个小的磁盘阵列更大的容量和更高的性能。象采用总线结构的 EMC 的Symmetrix 系统在单个磁盘阵列的性能只能达到25 至50M字节/秒(只有这么多?)时,它的最高性能就可以到100M字节/秒,甚至在使用RAID10(磁盘镜像)时最高可到 200至300M 字节/秒。象采用总线结构和交叉点交换结构(最新的系统)日立的两种存储系统,也可以到类似于 Symmetrix RAID10 的实际性能。一般在这类存储系统中缓存对性能都有巨大的贡献,但只有在事务处理应用和类似于计费的应用中才起作用。几十 G字节的缓存可以存储数小时的事务处理数据,系统可以从容地在空闲时将数据写入磁盘,物理卷的非常小的数据段设置也足以说明这类存储系统只适合于事务处理类应用。对于多媒体数据来说几十G字节的缓存相当于几十秒或几分钟的数据量,缓存写满以后将考验系统直接从磁盘上访问数据的能力。而一般的这类系统虽然拥有几十 100M字节/秒带宽的光纤通道主机连接端口,但内部集成的多个磁盘阵列子系统与一般的用于事务理的磁盘阵列并没有什么不同,磁盘阵列子系统的一个控制器的一个逻辑单元的性能在只有一个主机访问这个逻辑单元的情况下可以有25 至50M字节左右的实际性能。在多主机访问同一个逻辑单元(多主机是否是指前端接口连接主机?同一时间下,控制器允许单个逻辑单元多主机访问?上层的文件系统不是独占式访问的吗?是否需要OS下软件支持?)的情况下,由于在所有的这些系统中没有数据重新排序和优化功能(总线结构和交叉点交换结构决定了这一点)(什么样的产品具有数据重新排序和优化功能?)
所以同样会产生较大的性能影响。但这种性能衰减与小规模的磁盘阵列的性能衰减有所不同。由于在这种大规模磁盘阵列存储系统内部包括了相对独立的多个磁盘阵列子系统(例如四个或八个),每个磁盘阵列子系统由一对磁盘控制器组成,在不同的主机访问不同的磁盘阵列子系统时各自的性能不受影响,只受到系统总线带宽的限制。所以在多主机的数据流访问平均分布在不同的存储子系统中时,它的多主机的支持能力可以是小规模磁盘阵列系统的几倍。在这种大规模磁盘阵列存储系统中,一个逻辑单元只能建立在单个磁盘子系统中,由于单个磁盘阵列子系统的内部串行(是指什么,串行结构不块?光纤路径不是采用串行SCSI-3,速度不是很快吗?)结构,决定了一个逻辑单元只能通过一个串行路径来提供给用户,所以大规模磁盘阵列存储系统并不能提高单个逻辑单元的性能,而对于视音频数据流的应用,用户数据访问的单个数据流一般都很大,但访问次数相对较小,即使有一定的规律性也有可能发生对不同逻辑单元的需求不均衡的现象,这样极易造成某个逻辑单元阻塞或性能明显下降。所以这种大规模磁盘阵列存储系统并不适合使用于视音频和多媒体的应用领域。
5)page 23
在视音频应用环境中来自不同主机的多个媒体流对 NAS 存储系统性能的影响。
NAS 存储系统是建立在传统 RAID 技术的基础上,发挥单个主机连接时磁盘阵列系统拥有
最好的性能的特点,使用 NFS 和CIFS协议将瘦服务器连接的存储系统通过以太网共享给外部的用户。由于瘦服务器削减了与存储管理和数据通讯无关的各种功能,优化了 TCP/IP 协议的数据传输能力,同时使用多个(目前最多十个)(怎么算出来最多是十个的?)并行的 TCP/IP数据传输,使单个 NAS 存储系统的最大共享速度可以达到 60M字节/秒左右。这样一来,由于单个 TCP/IP 流由其协议的限制最多可以到6M字节/秒左右(6MB/S还不够吗?像在线播放只类的vod每个用户需要这么大的流量吗?即使是下载我觉得也够了),造成对媒体流大小的限制。同时大多数媒体流具有实时性,而 TCP/IP 的打包传输特点不能提供一个持续稳定的传输,会导致媒体流的掉帧的或质量的下降。NAS 的共享能力只有 60M字节/秒(根据10(并行数据流)*6M/S 算出来的?如果是由于网卡原因,多网卡做负载均衡不行吗?),而对于实时性很强的媒体流类型应用来说,有效的共享能力可能只有 30 至40M字节/秒,这种有限的共享能力对存储工程师目前的需求来说是远远不够的。在媒体流应用中,如果用户的需求超过 NAS 存储所能提供的共享能力时,将导致对每一个用户的服务质量下降。
6)page 25
举例2:HDS 公司的 Lightning9960 存储系统分析

Lightning9960 的体系结构如图一(图示在尾部,图中每个磁盘通道可以接32个硬盘,怎么算出来,是由于机柜没用空间了,还是算出来的?所示,主机接口最大可以使用四个 CHIP 对,每个 CHIP
对由两个可以互相备份(每个主机必须通过两个光纤通道适配器同时与两个CHIP 的一个口连接)的 CHIP 组成,每个 CHIP 拥有四个光纤通道(ESCON 接口在本文中将不涉及,但并响存储工程师对性能的讨论)主机接口和两个用于与内部两个交换机连接的光纤通道接口,四个CHIP 对共有32 个光纤通道主机接口和 16 个光纤通道的与内部交换机相连接的接口。在Lightning9960 的中间采用两个 Crossbar交换机,每个交换机都与每个 CHIP、每个缓存块和每个磁盘阵列控制器的光纤通道相连接。Lightning9960 最多有四块8GB 的缓存,缓存是 CHIP 与控制器之间数据的必经缓冲区,它与交换机之间共有 16 个光纤通道连接(图中只画出了 8 个)。在体系结构的最下面是四对磁盘阵列控制器,每对控制器有四个连接交换机的通道和 8 个用于连接磁盘驱动器的磁盘通道。控制器对中的不同控制器的两个磁盘通道同时连接到双端口磁盘的两个端口上提供备份连接,所以每对控制器实际有 4 个独立的磁盘通道。
Lightning9960 的数据通道带宽:
从 Lightning9960 的结构图中可以计算出每部分的带宽是:32 个光纤通道主机端口总带宽为3200MB/秒;CHIP与交换机之间的总带宽为 1600MB/秒;在交换机到缓存之间的总带宽为1600MB/秒;在缓存到交换机之间的总带宽为1600MB/秒(缓存和交换机之间是双向传输所以此项带宽与上一项带宽互相不影响);交换机到磁盘阵列控制器的总带宽为 1600MB/秒;内部磁盘通道的总带宽为1200MB/秒(因为每对磁盘阵列控制器的四个磁盘通道中在做RAID5 时有一个通道的带宽被用来做校验)。由于所有以上的带宽都是串行结构,所以 Lightning9960 的数据通道实际总带宽受到链路中最小值 1200MB/秒的限制。但数据通道带宽并不等于整个系统的实际性能,实际的性能将受到每个磁盘阵列控制器(ACP)的RAID 引擎、系统整个体系结构和应用环境的影响,下面将讨论在应用中的实际性能。 Lightning9960 的实际性能: Lightning9960 存储系统中每个磁盘阵列的性能由于受到每个磁盘阵列控制器(ACP)的RAID 引擎的限制,单个控制器的性能只有60MB/秒左右(这么弱吗?台湾厂商陈列柜使用的控制器性能岂不是更低?)
新手上路,希望版主解疑,感谢!
冬瓜头说:
支持楼主,勤思考,勤推敲!
一头一脑一双手,
一思一考现眉头。
一词一句勤推敲,
一招一式苦练成!
1) Page6
所谓IO处理器,这个词,实在不好理解。raid卡上的IO处理器,暂且把它看成是掌管着主机总线和raid电路之间通信的一个中介模块即可。也就是数据从总线传来,由IO处理器负责送至raid模块处理,之后在经由IO处理器将数据放到总线,双向传输。

2)page 16
1.这里说条带变成了块,怎么理解?硬件底层还根据上层文件系统中文件做校验?
这个块,以及raid所有级别,楼主需要深刻理解,不妨看一下《存储秘史》,里面对这个作了详细讲解。
2.比如当其他多个硬盘损坏时,数据就完了?如何理解?RAID4 中2个磁盘损坏,还有恢复数据的可能?
作者的意思是说,如果按照上层事物性的一大块,都放在一个磁盘上,那么一旦有其它硬盘故障,还可以保证这个事务的完整性,可以直接读取出来这块数据。2块盘出错,raid4不能恢复整体数据,但是可以恢复零散的数据,但是这些数据,需要很复杂的分析,才有可能恢复成具有文件系统级别意义的数据。
3)page 20
1.真是这样的吗?阵列控制器这么差?倒不如买台处理器强的cpu做软raid呢
其实磁盘真列,本身就是一台软raid,你说对了。只不过有些功能,给固化到芯片中而已,比如xor。要想把控制逻辑做成纯数字电路逻辑,这个成本太高了。不过作者所说的“磁盘阵列本身没有队列优化功能”,这个我表示一些怀疑。比如NCQ等等技术,都是要求实现在物理磁盘上的,磁盘真列本身对于主机控制器来说,就是一个磁盘,如果想实现队列优化,可以仅靠操作系统或者主机控制器,但是也可以靠磁盘阵列,路径中任何点上都可以做这个动作。作者这个论断,不知道是不是有内部资料的参考,不能确定。
4)page 21
《《《什么是总线结构或交叉点交换结构?
总线和交换,是网络通信的基本拓扑,还有仲裁环,也应该算一个。可以将这些拓扑整合起来,形成多样的网络。其中作者说的EMC的Symmetrix 系统是总线结构,好像不太对,应该是点对点直连结构,他是独享线路,而不是总线。
《《《多主机是否是指前端接口连接主机?同一时间下,控制器允许单个逻辑单元多主机访问?上层的文件系统不是独占式访问的吗?是否需要OS下软件支持?
是的。可以允许,磁盘阵列可以做成scsi保留独占)模式或者共享模式。上层文件系统是独占式访问,但是对于cluster fs来说,可以在多个主机之间互相协调访问。os下软件,这个软件就是cluster fs,比如nfs,gfs,pvfs,lustre等等。
《《《总线结构和交叉点交换结构决定了这一点
不懂这句话,好像并没有什么关联吧
《《《什么样的产品具有数据重新排序和优化功能?
比如NCQ。
《《《是指什么,串行结构不块?光纤路径不是采用串行SCSI-3,速度不是很快吗?
内部串行,作者想要表达的可能是:对于每个scsi指令及其数据,最终都是串行的。不是说串行不快,fc用串行,比用并行快,是因为目前远距离并行传输已经达到技术极限。纯理论上将,串行是比并行慢的。作者还说由于串行,所以“决定了一个逻辑单元只能通过一个串行路径来提供给用户”,楼主要看上下文。
5)page 23
《《《怎么算出来最多是十个的?
这个我想是不是和流媒体有关,每个媒体流,最多建立10个socekt连接,还需要参考流媒体方面的知识。
《《《6MB/S还不够吗?像在线播放只类的vod每个用户需要这么大的流量吗?即使是下载我觉得也够了
作者所说的“由于单个 TCP/IP 流由其协议的限制最多可以到6M字节/秒左右”,我觉得不恰当。tcpip协议从来没听说过有速度限制。我想作者的意思是上层流媒体编码等等的限制,这个6MB,是说最终的裸数据,而不是连带开销一起的数据,也就是tcpip层承载的数据。
作者一开始就假定nas的最大速率为60MB,这个我不知道他是怎么得出结论的,可能只是参考了某一个产品来说的吧。然后还有“最多10个”的假定,所以60除以10=6,这一系列的推断,需要作者来解释了。
6)page 25
《《《怎么算出来,是由于机柜没用空间了,还是算出来的?
产品就是这么设计的。一个磁盘通道,如果用fc al的话,最多可以连接128节点(包含控制器以及保留地址),实际证明磁盘数量在60块左右可以达到最高IOPS密度。
作者说“由于每个 CHIP 可以将与它连接的所有的不同主机来的I/O请求重新排队”,这个和他上面的论断“磁盘阵列不会做什么优化排队”显然是矛盾的。
关于每个控制器性能只有60MB,这个问题也是我一直以来没有高清楚的问题,也就是fcal是微观串行,宏观并行的架构,如果每个磁盘都以缓存的速度发送数据,那么可以达到al的带宽,但是如果磁盘缓存都禁用了,那么貌似就是没有缓存时候的一块磁盘的最大速率,那么这个60MB的顺序传输速率的由来,也就不足为奇了。但是IOPS,不能按照这个理论来解释,iops和顺序传输最大带宽没有很大的关系。
感谢《网络存储导论》的作者,时成阁博士
也感谢楼主
我在《存储秘史》的以后章节中,会尽量避免这些让人有争议的论断,尽量说得通俗,正确。
stornewer说:
感谢冬瓜头这么有人心的版主,遇到这样的版主三生有幸!以后有问题要抓紧问,不要错过,呵呵!
1)Page6 关于I/o处理器,是不是在存在I/O处理器的情况下,主机的CPU只要把传到PCI总线就可以了,至于怎么和如何传到raid模块,由插在pci插槽(假设是pci插槽)I/O处理器完成?
2)好的,一会我看你的秘笈大作!
2.2.比如当其他多个硬盘损坏时,数据就完了?如何理解?RAID4 中2个磁盘损坏,还有恢复数据的可能?
作者的意思是说,如果按照上层事物性的一大块,都放在一个磁盘上,那么一旦有其它硬盘故障,还可以保证这个事务的完整性,可以直接读取出来这块数据。2块盘出错,raid4不能恢复整体数据,但是可以恢复零散的数据,但是这些数据,需要很复杂的分析,才有可能恢复成具有文件系统级别意义的数据。
意思我明白,即使这样,但是数据的完整一致性raid控制器无法校验,raid控制器会相信这样的数据?这样的数据有意义吗?莫非通过单个磁盘把这些数据拿出来,通过别的设备还原?
4)上层文件系统是独占式访问,但是对于cluster fs来说,可以在多个主机之间互相协调访问。os下软件,这个软件就是cluster fs,比如nfs,gfs,pvfs,lustre等等。作者是这样的意思吗?
作者说“由于每个 CHIP 可以将与它连接的所有的不同主机来的I/O请求重新排队”,这个和他上面的论断“磁盘阵列不会做什么优化排队”显然是矛盾的
这个CHIP是什么东西?也有处理器,磁盘陈列和chip是位于不同的位置,如果它们都有自己的处理数据的能力,矛盾吗?
冬瓜头说:
《《《1)Page6 关于I/o处理器,是不是在存在I/O处理器的情况下,主机的CPU只要把传到PCI总线就可以了,至于怎么和如何传到raid模块,由插在pci插槽(假设是pci插槽)I/O处理器完成?
》》》不管硬卡还是软件raid,都需要磁盘控制器,都需要驱动程序。硬raid卡也在主机内存中驻留驱动程序的,只不过主机接受到的数据,是已经raid处理过的数据,而软raid,主机接受到磁盘控制器的数据,是不经raid处理的数据。
“至于怎么和如何传到raid模块,由插在pci插槽(假设是pci插槽)I/O处理器完成?”,是的。
《《《“莫非通过单个磁盘把这些数据拿出来,通过别的设备还原?”
》》》就是这个意思。可以直接读取磁盘扇区。比如你存储了一段字符“拉登将于2008年1月1日炸毁白宫”,那么这几个字节,除非做raid2,否则一般这么小的块(一个扇区),都会放到一个磁盘上,所以你读取出这个扇区,就会知道这个数据,这就是一个完整事务,拉登将于2008年元旦实施恐怖活动。
《《《4)上层文件系统是独占式访问,但是对于cluster fs来说,可以在多个主机之间互相协调访问。os下软件,这个软件就是cluster fs,比如nfs,gfs,pvfs,lustre等等。作者是这样的意思吗?
》》》多主机访问同一LUN,这个随便了,当然可以,但是你要保证文件系统的一致性,就要么ha,要么cluster。作者这里并没有过多的说细节。
《《《这个CHIP是什么东西?也有处理器,磁盘陈列和chip是位于不同的位置,如果它们都有自己的处理数据的能力,矛盾吗?
》》》chip就是chipist,主板,芯片组。也就是处理数据用的。盘阵其实就是一台主机,也有自己的总线,cpu内存,适配器,chip泛指一个电路处理模块。
recharluo兄说:
说一下自己的观点:
1)关于raid卡:
半软半硬:缺乏自己的I/O处理芯片,所以这方面的工作仍要由 CPU与驱动程序来完成所以这方面的工作仍要由 CPU与驱动程序来完成。而且,半软半硬 RAID所采用的 RAID 控制/处理芯片的能力一般都比较弱,不能支持高的 RAID 等级(什么是I/O处理芯片即I/O处理器?)
不知道谁取得“半软半硬“的名字,很有创意!通常,他是指像Chipset提供的raid,或者像VIA6421之类的RAID卡!
A) 它比起纯粹的软RAID,多了基本的I/O处理模块(这个模块,按照芯片组来理解,就像是南桥里面的ide控制器,sata控制器;如果把这个sata控制器的ic拿出来单独封装就可以做成专门的SATA控制芯片,如VIA6421卡上的片子);I/O,I/O,说白了,就是做读写,具体点对于存储来说,也就是处理ATA,SCSI命令和数据之类的玩意儿,进一步讲基本的I/O芯片就是处理传输这些命令和数据的接口芯片,如PATA, SATA, SCSI, FC等接口芯片(他们可以单独封装,也可以整合在一个大的chip里面,如Intel的Xscale处理器)。
B)而比起真正的纯粹硬件的RAID卡,它在硬件上少了一个RAID的处理模块;一些功能强大的RAID卡,比如Adaptec的,卡上甚至带有处理器,有memory,甚至有RAID的硬件IC模块来offload(比如Xscale里面的raid加速器);从而提供更为强大的I/O功能和特性。当然,也需要烧掉用户不少银子!
那么,这两个卡的驱动有什么影响?如何占用该卡所在主机的CPU cycle并影响到性能?
a)对于半软半硬卡的驱动,一个SCSI数据发送下来,由于没有RAID硬件IC,显然要在驱动中进行RAID的逻辑分析并可能作分拆和计算;那么对于raid5这样需要做Parity的类型,就只有霸占CPU来做计算,然后把计算的结果分别发送到raid5中的相应盘中。从而,需要CPU来干涉RAID处理的各种细节,大把大把的占用了cpu cycle资源。
b)而对于纯硬件卡的驱动,一个SCSI数据发送下来,由于卡本身有强大的I/O功能(甚至卡上自身就又一个嵌入式操作系统,基本上可以被看作为RAID Subsystem,可以提供更加高级的特性),从而该卡就会告诉CPU,你该干嘛干嘛去,我办事你放心。从而,节约了CPU大把时间。
因此,对于"半软半硬"和"纯硬"来说,一个重大差别就在于对于所在主机性能的影响;
如果用户觉得对性能要求不高,却在乎银子,那么"半软半硬"也是个不错的选择。
至于提到的“不能支持高的 RAID 等级",据我所知,恰恰相反,往往"半软半硬"提供更多的等级;这倒不是因为技术上的问题,很多是宣传和市场上的需求,个中道理值得慢慢品位啊!
冬瓜头说:
罗兄果然说得好啊。
不过,raid计算模块不应该归属到驱动部分吧,应该归属到vm一层中更为恰当吧。
没错。IBM做过测试,aix下的lVM软raid0,甚至比ssa卡raid性能还要高。linux的软raid模块,就可以做raid5,所以并不是说不能做high level的raid的。盘阵本身其实就是一个“软”raid。
还有个问题请教罗兄,卷管理层和磁盘驱动之间,是不是还要经过os的一些中介,比如queue之类的模块,而不是直接call的关系吧?
罗兄说:
不过,raid计算模块不应该归属到驱动部分吧,应该归属到vm一层中更为恰当吧。
---LVM有RAID功能,这个RAID是纯粹软RAID,是在LVM卷管理中实现的,这个RAID基本所有卷管理器都有,不过此RAID并非LZ所说卡上的RAID;
没错。IBM做过测试,aix下的lVM软raid0,甚至比ssa卡raid性能还要高。linux的软raid模块,就可以做raid5,所以并不是说不能做high level的raid的。盘阵本身其实就是一个“软”raid。
---很多卷管理器的性能都不错,因为它们通过一些缓冲算法,在某种程度上牺牲数据一致性的情况下来提高性能!
还有个问题请教罗兄,卷管理层和磁盘驱动之间,是不是还要经过os的一些中介,比如queue之类的模块,而不是直接call的关系吧?
--- 当然,它们中间有很多东西需要处理,如此庞大复杂的SCSI协议集(以及广泛应用的ATA协议集),需要灵活的设计才会有更好的扩展兴,queue技术只是很少的一部分!
stornewer说:
Page 30 Initialization:初始化
在逻辑驱动器的数据区上写零的操作过程,并且生成相应的奇偶位,使逻辑驱动器处于就
绪状态。初始化将删除以前的数据并产生奇偶校验,所以逻辑驱动器在此过程中将一并进行一致性检测。没有经过初始化的阵列是不能使用的,因为还没有生成奇偶区,阵列会产生一致性检测错误。(本人曾经看到一些陈列卡支持foreground 和background initialazation的工作模式,不明白产生奇偶校位有什么用,此时陈列没有数据,反正在写入数据的时候还是要计算才能产生,我觉得此时清零和分段就可以了,原因是什么:);又比如HP DL380 G4主板集成的smart array 6i,设好raid-level就可以安装系统,而有些陈列必须要等到初始化完成时候才能使用,区别在什么地方?)
Page 31 Logical Volume:逻辑卷
由逻辑磁盘形成的虚拟盘,也可称为磁盘分区。(是不是LUN?)
Power Fail Safeguard:掉电保护
当此项设置为可用时,在重构过程中(非重建),所有的数据将一直保存在磁盘上,直到
重构完成后才删除。这样如果在重构过程中发生掉电,将不会发生数据丢失的危险情况。
(在重构过程中,重构进度的纪录是放在什么地方的?)
Page 35当对SAN和NAS 进行比较时,这两种相互竞争的技术实际上是互补的。SAN和 NAS是在不同用户需求的驱动下的独立事件。SAN是以数据为中心的,而 NAS是以网络为中心的。概括来说,SANs 具有高带宽块状数据传输的优势,而 NAS 则更加适合文件系统级别上的数据访问(我总觉得这样比较不是一个级别的,客户端应用程序对数据访问,最终都会经过服务器(包含nas)上面的操作系统,主机I/O总线,I/O控制器,存储I/O总线,磁盘。路径都差不多吧?区别也只是nas访问中,由于使用了I/O重定向器,客户端减少了tcp/ip协议中tcp上层的开销)
冬瓜头说:
《《《本人曾经看到一些陈列卡支持foreground 和background initialazation的工作模式,不明白产生奇偶校位有什么用,此时陈列没有数据,反正在写入数据的时候还是要计算才能产生,我觉得此时清零和分段就可以了,原因是什么:
》》》一块新的磁盘,刚刚出厂的时候,上面有没有数据?有人说没有,但是我说:有。具体什么数据呢?就是:要么全是0要么全是1,我所说的全0是指实际数据部分,扇区控制等一些特殊格式除外。因为磁盘上的磁性区域就有两种状态,不是N极,就是S极。那么也就是说不是0就是1,而不可能有第三种状态,所以你说全是0或者1,算不算数据?当然要算了。那么好,如果我做了一个raid5,但此时,磁盘上任何数据都不动,那么我们看一下是个什么状态,比如5块磁盘,4块数据盘空间,1块校验盘空间,同一个条带上,4块数据块,一块校验块,他们都是0(或者1),那么此时如果按照raid5来算,是正确的,因为0 xor 0 xor 0 xor 0 xor 0 = 0,全是0,对。如果一开始磁盘全是1,那么同样的1 xor 1 xor 1 xor 1 xor 1 = 1 全是1,也对。但是如果此时我6块盘做raid5,而且初始全为1,情况就矛盾了:1 xor 1 xor 1 xor 1 xor 1 xor 1 = 0,此时正确结果应该是校验块为0,但是初始磁盘全部为1。有人还是持怀疑态度,那么我们来测试一下,如果初始化过程不对磁盘进行任何更改,直接拿来写数据,比如此时我就网第二个extend上写了一块数据,将1变为了0,然后控制器根据公式:
新数据的校验数据=(老数据 EOR 新数据) EOR 老校验数据
(1 eor 0) eor 1 = 0,新校验收据为0,所以最终数据变成了这样:
1 xor 0 xor 1 xor 1 xor 1 xor 1 ,我们来算一下他应该的正确的教研数据,一算,应该等于1,而由raid控制器算的却成了0,所以就矛盾了,为什么会犯这个错误?那是因为一开始,raid控制器就没有从一个正确的数据关系开始算,导致越算越错。所以raid控制器在做完设置,启用之后,初始化的过程需要将磁盘每个扇区都写成0或者1,然后计算出正确的校验位,在这个基础上,新到来的数据才不会以讹传讹。
(以上摘自《存储秘史》第7篇)
foreground就是指上面说得。background initialazation是说做好raid group之后立即就可以用,只不过这些过程都在后台完成,不需要等待全部完成。
《《《比如HP DL380主板集成的smart arry 6i,设好raid-level就可以安装系统,而有些陈列必须要等到初始化完成时候才能使用,区别在什么地方?
》》》raid1,0等非校验型level,不需要初始化校验,所以直接可用。如果需要校验的level也直接可用,那么就是background initialazation模式
《《《由逻辑磁盘形成的虚拟盘,也可称为磁盘分区。(是不是LUN?)
》》》说成分区,有些争议,是说mbr里的分区,还是其它形式的分区?这个需要具体情况具体分析。逻辑磁盘泛指LUN。(关于LUN的由来请参考《存储秘史》
《《《(在重构过程中,重构进度的纪录是放在什么地方的?)
》》》不了解,可能被打断后,会重新来,也可能可以继续。请咨询研发人员。
《《《(我总觉得这样比较不是一个级别的,客户端应用程序对数据访问,最终都会经过服务器(包含nas)上面的操作系统,主机I/O总线,I/O控制器,存储I/O总线,磁盘。路径都差不多吧?区别也只是nas访问中,由于使用了I/O重定向器,客户端减少了tcp/ip协议中tcp上层的开销)
》》》nas就是一个远程文件系统,怎么说呢,fs在本地实现,和在远程实现,差别就在于传输路径成了tcpip,而不是pci总线了。这么理解就可以了。nas和san,谁都不会被取代,因为各自都有自己的作用范围。
相关阅读:
- 深入理解各种raid相对单盘速度的变化 (冬瓜头, 2006-12-27)
- 《存储秘史》免费发布一层秘笈,欲得到全部,请联系我 (冬瓜头, 2006-12-27)
- 《存储秘史》之北斗七星阵(续1) (冬瓜头, 2006-12-28)
- 《存储秘史》之七星北斗阵(续2) (冬瓜头, 2006-12-28)
- 读懂raid3,并发、顺序、连续、随机IO (冬瓜头, 2006-12-29)
- 和wdq兄的讨论,继续中。。。。 (冬瓜头, 2006-12-29)
- 剖析ntfs的一些细节。 (冬瓜头, 2006-12-29)
- 关于《存储秘史》之北斗七星阵,有人提出的问题的回答 (冬瓜头, 2007-1-09)
- 关于控制器作用机制的问答 (冬瓜头, 2007-1-10)
- 你深入了解raid么?请看《存储秘史》冬瓜头著。 (冬瓜头, 2007-1-16)
标题搜索
日历
|
|||||||||
| 日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
| 1 | 2 | 3 | 4 | 5 | 6 | ||||
| 7 | 8 | 9 | 10 | 11 | 12 | 13 | |||
| 14 | 15 | 16 | 17 | 18 | 19 | 20 | |||
| 21 | 22 | 23 | 24 | 25 | 26 | 27 | |||
| 28 | 29 | 30 | 31 | ||||||
我的存档
数据统计
- 访问量: 30486
- 日志数: 174
- 图片数: 10
- 建立时间: 2006-12-26
- 更新时间: 2008-12-03

