要创建一个卷管理器的stripe,所有构成的LUN必须设定成可以访问到主机的。MetaLUN要求只有一个单一的SCSI LUN被影射到主机;这个主机并不能看到组成这个metaLUN的多个LUN。这会让管理员在以下几个情形下得益:
对于因为OS限制而有受限制的LUN可用的主机
? 对于那些增加LUN导致SCSI设备重编号的主
机;经常一个内核需要重建,用来清除设备的条目。
?
在这些情形下,使用metaLUN而不是卷管理器会简化在主机上的管理。 没有卷管理器
不是所有的操作系统都有卷管理器的支持。MS的Server Win2000/2003 集群使用Microsoft Cluster Services(MSCS)并不能使用动态磁盘。MetaLUN是一个可以为这些系统提供可扩展的,stripe和concatenated(连接的)卷的解决方案 。 卷的复制
如果卷是要被使用SnapView,MirrorView或者SAN Copy的存储系统所复制的话,一个可用的镜像会要求持续的处理分离的能力。采用metaLUN会简化复制。 卷访问共享的介质
当一个使用了stripe或者concatenate的卷必须要允许在主机间共享访问,一个卷管理器不能许可共享访问,而metaLUN可以使用并实现这个功能。MetaLUN可以在两个的主机存储组之间应用。 存储处理器(SP)的带宽
卷管理器的卷和metaLUN之间的一个重要的显著区别是,metaLUN是可以被一个CLARiiON存储系统上的一个存储处理器完全的访问。如果一个单一的卷需要非常高的带宽,一个卷管理器仍然是最好的方式,因为卷可以从不同的SP上的LUN上来建立。一个卷管理器允许用户访问存储器,通过很多个SP的集合起来的带宽。
卷管理器和并发访问
正如在“Plaids: 为高带宽设置”章节里指出的那样,基于主机的stripe的卷的使用,对于有多线程的大的request(那些有多于一个卷stripe segment组成的request),会有比较高的效果。这会增加存储器的并发访问能力。使用metaLUN不会带来多线程上好的效果,因为component LUN上的多路复用是由存储系统来实现的。
16
[编辑]
B. MetaLUN的使用说明和推荐
MetaLUN包含了以下三种类型:条带的(stripe),结和的(concatenate),和混合的(hybrid)。这个章节会做出几个通常的推荐。对那些想要更多细节的人来说,接下来的章节中将会定位建立metaLUN和相关每种类型的优点的策略和方法。 什么时候使用metaLUN
通过前面的卷管理器的讨论,应该在以下情形下使用metaLUN:
当大量的存储整合变得有必要的时候(每一个卷都需要非常多的很多磁盘) ? 当要求LUN的扩展的时候
?
当你建立一个metaLUN的时候,你可以控制以下的要素:component LUN的类型,metaLUN的类型,和stirpe multiplier(增加的)。 Component LUN 的类型
用来绑定在一个metaLUN上的LUN的类型应该能反映metaLUN上要求的I/O的形式。例如,使用在这份白皮书里面建议的各种不同的Raid 的类型(“Raid的类型和性能”提供了更多的信息),来匹配I/O的形式。 当绑定component LUN的时候,使用以下规则:
? ? ?
? ?
?
当为metaLUN绑定LUN的时候,总是使用默认的stripe element size(128 block) 总是激活读缓存和写缓存
确保为component LUN设置的write-aside的大小为2048。(write-aside在“RAID引擎缓存”里面会被提到)
避免在RAID 5的磁盘组里使用少于4块的硬盘(或者说,至少是要3+1模式) 使用RAID 1/0 磁盘组的时候,至少使用4块硬盘(新的1+1并不是对metaLUN的一个好的选择)
不要使用component LUN位移来校正stripe的对齐。MetaLUN有他们自己的位移值。
MetaLUN的类型
17
一般来说,尽可能的使用stripe方式的metaLUN,因为他们能体现出我们能预知的更好的性能。Concatenat一个单独的LUN给一个metaLUN,会更加方便;这可能在扩展一个对性能并不敏感的卷会更加合适。
Hybrid metaLUN使用stripe的方式捆绑concatenate的LUN。这个方式被用来克服stipe扩展的成本(这样会比较低)。一个采用stripe方式的metaLUN可以通过concatenate另一个stripe component的方式来扩展。这样保持了stripe component可预计的性能,也允许用户用来扩展一个stripe的metaLUN而不用队已经出线的数据的重组(性能将会受到影响,当重新条带化操作进行的时候)。图四展示了这一点。
图四 hybrid-striped metaLUN
在理想的情况下,在扩展stripe设置的LUN将会分布在同样RAID类型的不同的RAID组里面,也会表现得更原始的stripe component一致。大部分最直接的方式是使用同一个RAID组作为基础的component。这个RAID组是被最先扩展的,以便使空间变的可用。这个方式在“metaLUN 扩展方法”里会演示。 RAID组的扩展是更加有效率的,对比metaLUN restripe(把这个重分条过程设置成中等优先级别),也会对主机性能有更小的影响。
MetaLUN stripe multiplier stripe multiplier决定了metaLUN的stripe element size:
Stripe multiplier * base LUN stripe size = metaLUN stripe segment size MetaLUN stripe segment size是任何component LUN能收到的最大的I/O。 所有的高带宽性能和随机分布都要求metaLUN stripe element 的大小为1MB左右。而且,在下面的RAID组还可能被扩充。我们需要确保metaLUN stripe element是足够大,大到跟写的完全的stripe一样,用来扩展component LUN(图表1)。 使用以下规则来设置stripe multiplier:
?
除非使用RAID 0,使用最少四个磁盘的磁盘
组,来组成作为component LUN主机的RAID组。
18
为磁盘组的大小来测定选择有效的磁盘个数。例如,六个磁盘的RAID 1/0是3(3+3)。五个磁盘的RAID5是4(4+1)
? 通过图表1,为有效磁盘的个数而选择
multiplier
?
如果有疑问,使用4作为metaLUN的stripe multiplier。对大部分情形来说,这是一个默认的,也是一个好的选择。 MetaLUN对齐的位移
如果你计划通过metaLUN来使用SnapView或者MirrorView,把metaLUN对齐位移值设为0。使用磁盘分区工具来调整分区的位移。 MetaLUN和ATA磁盘
在这个时候,ATA并不适合繁忙的随机I/O访问的方案。这个章节集中在使用ATA磁盘作为高带宽的应用。
保持RAID组的足够小,是metaLUN策略的一部分。这会使ATA硬盘更加合理,因为小的磁盘组比大的会有更小的重组时间。但是,必须意识到的时,metaLUN会被一个单一的磁盘组的rebuild所影响,而ATA磁盘的rebulid时间是冗长的。基于数据可用性的考量,在非常多的环境里,我们最好避免使用ATA硬盘来做metaLUN除非动态扩展或者需要非常大的一个容量。 CLI例子:建立一个metaLUN
在接下来的例子的代码,我们建立一个stripe方式的使用base LUN30的
metaLUN。没有建立metaLUN的命令;你需要扩展一个已经出现的FLARE LUN来建立一个metaLUN。在命令中设计而成的LUN,都是相同RAID的类型和容量的FLARE LUN。LUN 30会变成基本的—新的metaLUN会把30作为他的identifier。 Matalun –expand –base 30 –lus 31 32 33 –name P1H00 –elszm 4 –type S
19
扩展的类型被设置成S,作为stripe方式,而选择element size(4)是因为LUN是建立在5块硬盘的RAID5组里面。
[编辑]
C. MetaLUN的扩充战略
对于有长期扩展计划的用户来说,有好几种使用策略。使用一种策略,你必须要确认你的目标。在接下来的章节会出现的一些可能的目标如下:
把本地的爆发的随机数据分布到多个磁盘上去
? 好的顺序/带宽的性能 ? 有效的利用容量 ? 灵活的扩展设备
?
这些都是使用metaLUN的用户的主要的目的。
扩展模式的初始化配置初始化安装的规则在图5中阐明。这些规则是:
为初始化容量部署,来部署所需要的磁盘 ? 建立合适大小的磁盘阵列组:
?
a. 对于RAID 1/0,使用4或6个硬盘 b. 对于RAID5或者RAID3,使用5个硬盘
?
? ?
? ?
把磁盘组按照每一个set有4-8个RAID组的方法来组织。(如果要求高的随机I/O,那么需要更多的磁盘组)
对于每一个metaLUN,根据归属来确定Raid组的set。
对每一个计划要做的metaLUN,通过用RAID组在自己的RAID组set里面的数目来分metaLUN的大小,来确定component LUN的大小。
从每一个在自己set里的RAID组里,为每一个metaLUN建立一个component。 建立metaLUN的时候,请让组成这个metaLUN的LUN,跨越所有的的RAID组set里的RAID组。
图5是一个set的metaLUN和他们的RAID组set的例子
20