QQ:122567712 msn:myprotein0007@hotmail.com 敝人专著《大话存储》终于出版了!2008年10月中旬全面上市!

关于网友stornewer对《网络存储导论》的一些疑问的讨论(续)

上一篇 / 下一篇  2007-02-09 08:21:44 / 个人分类:我的原创文章

罗兄说:
不过,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,谁都不会被取代,因为各自都有自己的作用范围。

 

stornewer说:

1)假设一个字母“A”占用一个字节,如果存取这个字母,是不是就是对应磁盘的一个扇区的一个字节?如果已经写入这个字母,再写入另外一个字母“B”,那么“B”能不能写在这个扇区上,就是这个扇区会不会浪费?
2)双端口磁盘目前有没有开始使用了?性能提升?稳定性递升了?
3)看资源共享置顶《SAN存储区域网络第二版》
06章  39页
RAID 4的写瓶颈
由于RAID 4使用了一个专有的校验磁盘,所以,RAID 4在处理写请求时有一个内在的瓶颈考虑由R A I D写额外开销所引起的性能问题,这是一个双倍性能损失。因为RAID 4支持对所有磁盘的独立访问,阵列中的多个写操作都要读出校验数据,再重写到单个磁盘,因此,校验磁盘必须支持所有等待的写操作,这种对校验磁盘的依赖性是一个系统瓶颈。
RAID 4中磁盘数量的局限
RAID 4中的磁盘数量增加时,它的写瓶颈效应随之增加。阵列中的磁盘数量在某种程度
上决定了交叉操作的数量。例如,一个3个磁盘的阵列每次最多处理2个请求。虽然在使用诸如标记命令排队技术时,可以对流水线操作产生另外的处理,但每个磁盘臂一次只能处理一个请求。因此,5个磁盘的阵列比4个磁盘的阵列能支持更多的I / O操作,6个磁盘的阵列比5个磁盘的阵列能够支持更多的I / O操作,以此类推。通过增加更多的磁盘方法(支持有什么用,实现不了,除非校验盘使用性能更好的磁盘?),可以在R A I D子系统中分散负载,产生另外的并行性,这似乎很有道理,但事实上未必成立。为了在成员磁盘中维护高度并行的负载分布,需要很好地匹配R A I D阵列的数据映射和应用的访问特性,这几乎是不可能实现的。但无论如何,更多磁盘的阵列拥有更多的磁盘臂,因而,可潜在地提供更好的性能优势。
3.1假设所做的分块64KBraid控制器在读请求需要读出一个8KB数据时,在哪种raid级别读出数据为数据所在位置的的分块64KB,哪种raid级别仅仅为8KBraid2?),存不存在需要读出所有磁盘数据所在分区所在分块(也就是大小为N*64KB分块大小)的级别?;写请求时,raid控制器在写请求需要读出原始的一个8KB数据时,在哪种raid级别读出数据为数据所在位置的的分块64KB,哪种raid级别仅仅为8KB,校验码计算的时候,做XOR运算,是不是一个一个位(bit)去运算?是不是仅仅对需要修改的8KB的扇区去做XOR运算?
28页
尽管RAID 3差不多总是使用专用的校验磁盘,但这并不是必需的实现方法。例如,对于不
同的分块,其校验位置可以散布在不同的磁盘(因为分块的大小可以调整,这样的话和raid5的区别是不是仅仅在读写数据的时候raid3读取去所有磁盘的分块(是否读出校验码计算读出的数据是否正确?)然后使用新的数据计算校验码?目前哪个厂商的磁盘陈列是这样设计的?)
RAID 3的典型特征之一是:它总是完成所有磁盘上的数据分条,而不更新分条中的许多分
块中的一个,即不完整操作。它消除了读、修改和更新写的额外开销,而这些额外开销却广泛存在于更高级的R A I D之中。由于这个原因,RAID 3经常应用于写性能要求严格的环境中。(操作系统、文件系统、应用程序一次I/O SIZE最大值有限制吧,Appication <= FS <= OS ?比如我在生成了一个50MB的视频文件,这个时候写入磁盘,一次I/O大小是多少?)

冬瓜头说:

》》》1)假设一个字母“A”占用一个字节,如果存取这个字母,是不是就是对应磁盘的一个扇区的一个字节?如果已经写入这个字母,再写入另外一个字母“B”,那么“B”能不能写在这个扇区上,就是这个扇区会不会浪费?
这个建议兄弟看看文件系统有关方面的知识,我可以回答一下,不过还是靠自己看。如果一个文件只有一个字节,如果是ntfs,那么这个文件应该十个驻留文件(因为太小了),直接在mft中了,如果是fat文件系统,这个文本文件肯定占用一个扇区的,但是文件属性中有描述,这个文件长度多少,所以读出这个扇区到内存之后,再从内存中的入口将这一个字节的数据取出来。如果再写入一个“b",还是这个文件,那么还是占用一个扇区,但是如果再次创建另一个文件,还是一个b,那么将再次占用一个扇区(fat)。磁盘IO的最小单位,就是扇区,即使文件只有一个字节长。
》》》2)双端口磁盘目前有没有开始使用了?性能提升?稳定性递升了?
有爽端口的,fc磁盘一般都是双端口,双端口一般用来作冗余的,但是有些控制器号称可以双active,这样做意意不太大吧我觉得,本来就是串行的,你再并发,还是要排队,噱头

《《《3)看资源共享置顶《SAN存储区域网络第二版》
06章  39页
RAID 4的写瓶颈
由于RAID 4使用了一个专有的校验磁盘,所以,RAID 4在处理写请求时有一个内在的瓶颈考虑由R A I D写额外开销所引起的性能问题,这是一个双倍性能损失。因为 RAID 4支持对所有磁盘的独立访问,阵列中的多个写操作都要读出校验数据,再重写到单个磁盘,因此,校验磁盘必须支持所有等待的写操作,这种对校验磁盘的依赖性是一个系统瓶颈。
RAID 4中磁盘数量的局限
当RAID 4中的磁盘数量增加时,它的写瓶颈效应随之增加。阵列中的磁盘数量在某种程度
上决定了交叉操作的数量。例如,一个 3个磁盘的阵列每次最多处理 2个请求。虽然在使用诸如标记命令排队技术时,可以对流水线操作产生另外的处理,但每个磁盘臂一次只能处理一个请求。因此,5个磁盘的阵列比4个磁盘的阵列能支持更多的I / O操作,6个磁盘的阵列比5个磁盘的阵列能够支持更多的I / O操作,以此类推。通过增加更多的磁盘方法(支持有什么用,实现不了,除非校验盘使用性能更好的磁盘?),可以在 R A I D子系统中分散负载,产生另外的并行性,这似乎很有道理,但事实上未必成立。为了在成员磁盘中维护高度并行的负载分布,需要很好地匹配R A I D阵列的数据映射和应用的访问特性,这几乎是不可能实现的。但无论如何,更多磁盘的阵列拥有更多的磁盘臂,因而,可潜在地提供更好的性能优势。
》》》raid4是一个不伦不类的raid level。不知道你看了存储秘史之七星北斗没有。
wafs在fs层上对raid4作了优化,使得每次IO尽量做到整条写。所以磁盘数量再多,校验盘总是要排队的,不能并行。但是通过wafs这样的优化,可以小程度提高性能。


《《《3.1假设所做的分块64KB,raid控制器在读请求需要读出一个8KB数据时,在哪种raid级别读出数据为数据所在位置的的分块64KB,哪种raid级别仅仅为8KB(raid2?),存不存在需要读出所有磁盘数据所在分区所在分块(也就是大小为N*64KB分块大小)的级别?;写请求时,raid控制器在写请求需要读出原始的一个8KB数据时,在哪种raid级别读出数据为数据所在位置的的分块64KB,哪种raid级别仅仅为8KB,校验码计算的时候,做XOR运算,是不是一个一个位(bit)去运算?是不是仅仅对需要修改的8KB的扇区去做XOR运算?
》》》这个还是建议看一下存储秘史,说得很清楚了,我没有理解你说的这些分块,8k,64k什么的,所以无法回答,请说清楚一些。xor当然是以bit为最小单位的,但是可以批量并行校验,不可能是串行校验,并行校验多少位,这个看电路的位宽了。

《《《28页
尽管RAID 3差不多总是使用专用的校验磁盘,但这并不是必需的实现方法。例如,对于不
同的分块,其校验位置可以散布在不同的磁盘(因为分块的大小可以调整,这样的话和raid5的区别是不是仅仅在读写数据的时候raid3读取去所有磁盘的分块(是否读出校验码计算读出的数据是否正确?)然后使用新的数据计算校验码?目前哪个厂商的磁盘陈列是这样设计的?)。
》》》raid3如果做成校验盘分布,没有好处,raid3到raid5是一个量变到质变的过程。


《《《RAID 3的典型特征之一是:它总是完成所有磁盘上的数据分条,而不更新分条中的许多分
块中的一个,即不完整操作。它消除了读、修改和更新写的额外开销,而这些额外开销却广泛存在于更高级的R A I D之中。由于这个原因,RAID 3经常应用于写性能要求严格的环境中。(操作系统、文件系统、应用程序一次I/O SIZE最大值有限制吧,Appication <= FS <= OS ?比如我在生成了一个50MB的视频文件,这个时候写入磁盘,一次I/O大小是多少?)
》》》IO在不同层次有不同的大小,越往下,密度越高。比如creatfile(),setlenth(),这对于应用来说就算一次IO,但是对于底层来说,需要对磁盘多次IO,才能完成。如果拷贝大文件,则一次IO可以到64K(磁盘控制器)。


TAG: 我的原创文章

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar