《MS SQL Server 2000管理员手册》系列——5. 设定与规划I/O 子系统[5]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

磁盘 1
位 1 磁盘 2
位 1 磁盘 3
位 1 磁盘 4
位 1 磁盘 5
同位位 位总合
0 1 1 1 1 4 (偶数)
所以,稍微思考一下在单一位建立同位检查的意义。虽然磁盘数据带上可能包含无数位,但您只要在单一位建立同位性便可让数据回复原貌。
就如您在表5-2所看到的,同位性实际上只建立在数据带上独立的位。即使磁盘损坏的数据区块或数据带可能是64KB或超过64KB,但如此处所示,我们在位阶段即已建立其同位性。事实上,同位检查是以一种更精密的算法则来计算的。
现在,假设磁盘3故障了。在这种情形下,因为总合必须是一个偶数,同位位只要加上其它尚可使用的位,便可回复磁盘3上失去的位。
建立同位性
 
就如您所看到的,RAID 5 产生同位性的方法,是先找到数组里所有磁盘驱动器相同位置的位的总合,再依此建立同位位,以使总合结果为偶数。您可以想象得到,如果每次 I/O 作业时,控制卡都必须到所有磁盘读取所有数据,这是相当不切实际的做法。效能既差,速度也慢。
当 RAID 5 建立时,数据是归零的,且同位位已开始建立。您的 RAID 5 磁盘集合将没有数据但却有整组齐全的同位位。
重点在于,当数据要写进磁盘时,数据磁盘与同位磁盘必须先被读取。新的数据与旧的数据做比较,如果某一特定位被改变了,则同位将因此位而有所改变。这个过程是以互斥的 OR(XOR)运算来完成。如此一来,仅需读取数据磁盘与同位磁盘,而不是所有磁盘都需读取。当此运算完成,数据磁盘与同位磁盘都需有写出的动作,因为同位作业将影响整个数据带。因此,每有数据写入 RAID 5 磁盘区时,会导致四个实体 I/O 作业:两次读取(一次读取数据,一次读取同位信息),两次写入(写回数据及写回同位信息)。不过在 RAID 5 数组中,同位信息是分散的,因此 I/O 量可以平均分摊到数组里的每部磁盘。
RAID 5建议
 
由于在 RAID 5 的写入动作将会造成额外的 I/O 作业,此 RAID 层级建议用在多数执行读取动作的磁盘区。因为同位信息分散于数组里不同的磁盘中,所有磁盘都可用来进行读取动作。基于这项特点,我们的建议如下:
•  在只读磁盘区中使用 RAID 5。任何磁盘区有超过 10% 的写入需求时就不该使用 RAID 5。
 
•  在 RAID 5 磁盘区使用写入快取。因为 RAID 5 的写入动作要到两读两写都完成时才算结束,透过写入快取的使用可以改善写入的响应时间。(使用写入快取时,要确定备援电力是否正常。)然而,写入快取并不是让您的硬盘能长期超速驱动的药方,您仍然必须持续注意这些磁盘的容量。
 
如您所见,虽然 RAID 5 相当经济,但却必须付出效能的代价。本章稍后您会看到这个代价将有多高。
RAID 10
 
RAID 10 是 RAID 0 与 RAID 1 的综合体。RAID 10 内含有磁盘数据带的镜像备份。每个磁盘都有其复本,但每个磁盘里只包含有数据的一部份,如图5-12所示。这个层级能提供 RAID 1 的容错功能及 RAID 0 在便利与效能上的优势。
如同 RAID 1,每个 RAID 10 写入动作会造成两次实体 I/O 作业-有一次是写入镜像备份里的磁盘。因此,当计算每个磁盘的 I/O 作业数量时,您必须将写入动作乘以2。另一个与 RAID 1 相同的特点是,RAID 10 的 I/O 作业要到两次写入都完成时才算结束,因此,写入延迟将会增加。不过,一如 RAID 1,多数控制卡在 RAID 10 都支持分离搜寻。
RAID 10 提供高阶的容错功能。事实上,即使故障的硬盘超过一个以上,数组仍可存活下去。当然,镜像备份与原始数据都遗失的话,数据将无法弥补。如果镜像备份是分开存放于所有的磁盘柜,则即使某一磁盘柜整个阙漏了,容错依然可发挥它的作用。

 
 
图5-12 RAID 10
RAID 10 建议
 
RAID 10 提供高阶的效能与容错。当我们需要一个大型的磁盘区且写入 的I/O 作业超过10%的时候,应该使用 RAID 10。RAID 10 的相关建议如下:
•  当数组的写入作业有超过 10% 状况时使用 RAID 10。对于大量的写入动作,RAID 5 的效能将无法跟 RAID 10 相提并论。
 
•  当效能问题成为系统关键时使用 RAID 10。RAID 10 支持分离搜寻,您将可获得优值的效能表现。
 
•  在 RAID 10 磁盘区使用写入快取。因为 RAID 10 的写入动作必须在两次写入都完成时才算结束,透过写入快取的使用可以改善其写入的效能。写入快取只有在备援电力已正确连接快取时才是安全的。
 
从保护与效能的观点来看,RAID 10 是最佳的容错方案,不过它也相当昂贵。您必须购置两倍于 RAID 0 所需求的磁盘数量。如果您的磁盘区以读取动作为多,RAID 5 可能是较可以接受的选择。
RAID层级效能比较
 
要正确的规划与调校您的 RAID 系统,您必须了解不同的 RAID 层级在效能上的差异。只要明白 RAID 系统如何运作及其在不同状况下的执行方式,您便能将 I/O 子系统调校得更好。您在前一节所看到不同的效能特色,本节将更详细的加以比较。
读取效能
 
您所选择的 RAID 层级对读取效能将不会有显著的影响。当 RAID 磁盘区执行读取作业时,每个磁盘都对磁盘区的效能都有所帮助。由于随机性 I/O 作业是大多数效能问题的症结,这类困扰在此将可得到解决。您可以将循序性 I/O 作业分开独立在各自的磁盘区内,让循序性执行能有最大的发挥。以下是在不同 RAID 层级里随机读取的效能说明:
•  RAID 0 磁盘区将数据平均分割在数组里所有的磁盘中。因此,随机性 I/O 作业应该也是平均地分摊给系统里的所有磁盘。如果我们预估一部磁盘每秒约可掌握 85 个随机性 I/O 作业,那么一个由10部磁盘组成的 RAID 0 数组每秒应可掌握850个随机性 I/O 作业。
 
•  RAID 1 磁盘区支持分离搜寻,因此可以有两部磁盘同时执行读取作业。换言之,RAID 1 可以支持两倍于一部磁盘所能做到的读取作业数量,也就是每秒170个 I/O 作业。如果读取动作比此更为频繁,则效能将会变得很糟。
 
•  RAID 5 数组将数据平均分割在数组里所有的磁盘中。在每个分割中把一个磁盘当作同位。因为 I/O 动作是任意的,因此所有磁盘皆会使用到。RAID 5 数组的读取数据效率是 RAID 0 数组的85%,多少会影响 SQL server 的效能。
 
RAID 10 数组,就如同 RAID 1 数组,支持分离搜寻的功能。因此其最大效能等于磁盘总数量乘以每秒85个 I/O 作业。您也许会在初始规划上投入更为频繁的 I/O 作业,但它们将不会如您设想般那么快完成整个 I/O 动作。
如您所见,一个 RAID 数组的读取容量是相当容易计算的。只要增添足够的磁盘来应付您的 I/O需求,并且留心这些限制,您将可以让系统顺利的最佳化。
写入效能
 
您使用的 RAID 控制卡类型将对写入效能有戏剧性的影响。同样的,随机性 I/O 作业是大多数效能问题的症结,这些关键在此也会有所讨论。您可以将循序性 I/O 作业分开独立在各自的单一或多个磁盘区内,让循序性执行能有最大的发挥。以下是在不同 RAID 层级里随机写入的效能比较:
•  RAID 0 是最能掌握写入作业而不造成效能降低的 RAID 层级,但却无法拥有容错功能。由于 RAID 0 既没有镜像备份也不使用同位检查,其效能单纯的来自每个磁盘个别的总合。亦即,一个由 10 个磁盘组成的 RAID 0 数组每秒可操作 850 个随机写入。
 
•  RAID 1 数组必须对所有写入数组的数据进行镜像备份的工作。因此,一个单一的写入数组的作业,磁盘将产生两次 I/O 作业。故一个 RAID 1 数组只有一个单一磁盘的容量,即每秒 85 个 I/O 作业。
 
•  RAID 5 在写入作业的表现上更为缓慢。一个 RAID 5 的写入作业实际上会产生两个从磁盘读取的动作及两个写进磁盘的动作。亦即,一个写入到 RAID 5 数组的作业将造成磁盘上四个实体 I/O 作业。因此,RAID 5 数组的写入容量等于数组内磁盘驱动器写入容量的四分之一。
 
•  RAID 10 与 RAID 1 数组有相同的写入特色。每个写入到 RAID 10 的作业产生两个实体的写入动作。因此,RAID 10 数组的写入容量等于数组内磁盘驱动器写入容量的二分之一。
 
如您所见,计算一个 RAID 数组的写入容量是相当复杂的事。只要增添足够的磁盘来应付您的I/O 需求,并且留心这些限制,您将可以让系统顺利的最佳化。在下一节,您将会了解如何计算不同情况下每磁盘的 I/O 作业数量。
磁盘计算
 
要确定系统中每颗磁盘个别担负的载量,您必须做一点计算。如果您使用的是硬件 RAID 控制卡,您在效能监测面板上所读到的每秒 I/O 作业量是指到达数组的 I/O 作业量。控制卡因容错而产生的额外 I/O 作业量并没有显示出来。事实上,Windows 2000 里也没有可以了解这些数据的接口,但您却必须意识到这些额外的部分确实存在,且必须依据这些数据来决定需要多少部磁盘驱动器才能达到理想的效能。底下所列的一些计算式可以帮助您测定到底有多少 I/O 作业实际到达您数组里的每个磁盘:
RAID 0
 
RAID 0 数组里每磁盘 I/O 作业率的计算方法是先将数组的读取数量与写入数量加总,再除以数组里的磁盘总数量。RAID 0 仅需以下简单的公式即可算出其 I/O 作业率:
每磁盘作业数量=(读取数量+写入数量)÷磁盘数量
RAID 1
 
RAID 1 的计算稍微有点复杂。由于写入量需要加倍,每磁盘 I/O 作业数量等于写入数量乘以二再加上读取数量,然后除以数组里的磁盘数量(RAID 1 数组为2个磁盘)。公式如下:
每磁盘作业数量=(读取数量+(2×写入数量))÷磁盘数量
RAID 1 在写入上较为缓慢但却能提供高阶的容错功能。
RAID 5
 
RAID 5 提供容错,但写入作业却会耗去不少时间。RAID 5 的读取同样分散给数组里不同的磁盘,但写入作业实际上是四个实体 I/O 作业。要计算每个磁盘个别的 I/O 作业数量,您必须将写入数量乘以四再加上读取数量,然后除以数组里的磁盘数量。因此,RAID 5 的公式如下:
每磁盘作业数量=(读取数量+(4×写入数量))÷磁盘数量
RAID 10
 
RAID 10 就如同 RAID 1 一样,在写入上较慢但可提

本文关键:《MS SQL Server 2000管理员手册》系列——5. 设定与规划I/O 子系统
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top