驱动器失效之后用于驱动器恢复的系统和方法

文档序号:6465764阅读:126来源:国知局
专利名称:驱动器失效之后用于驱动器恢复的系统和方法
技术领域
本发明通常涉及数据存储系统的领域,具体而言,涉及通过启用 的写缓存重建驱动器的系统和方法。
背景技术
由于信息的使用和价值持续增加,个人和企业都在寻找处理和存 储信息的其它方式。 一种用户可用的选择是信息处理系统。信息处理 系统通常为了商业、个人或其它目的而处理、编译、存储和/或传送信 息或数据,由此允许用户利用信息的价值。由于技术和信息处理的需 要和要求在不同的用户或应用之间变化,所以信息处理系统也可根据 处理什么信息,如何处理信息,处理、存储或传送多少信息,以及如 何快速有效地处理、存储或传送信息而改变。信息处理系统中的变化 对于信息处理系统可以是一般的,或专为具体用户配置的,具体用户 例如财务事项处理、航班预定、企业数据存储或全球通信。此外,信 息处理系统可以包括各种硬件和软件部件,这些部件可被配置用于处 理、存储和传送信息,信息处理系统可以包括一个或多个计算机系统、 数据存储系统和网络系统,例如计算机、个人计算机工作站、便携式 计算机、计算机服务器、打印服务器、网络路由器、网络集线器、网 络交换机、储存区域网络磁盘阵列、独立磁盘冗余阵列(RedundantArray of Inexpensive Drivers,简称RAID)系统和无线电通信交换机。信息处理系统通常包括一个或多个分组成驱动器阵列的驱动器。 许多驱动器包括能被选择性地启用或禁止的相关的写缓存。关于包括 启用的写缓存的驱动器,有时候在驱动器通知驱动器控制器写入成功时与数据被写入驱动器的存储介质时之间存在延迟。具有启用的写缓 存的驱动器经常在驱动器的写缓存中引导或存储写入数据。 一旦写入 数据被成功地传送到缓存,驱动器将向驱动器控制器发出通知,说明 已经成功地执行了写入命令。即使写指令的数据没有被写入永久的和 非易失性的驱动器介质,也从驱动器向驱动器控制器发出通知。在写 缓存中替换写指令的数据允许写控制器的控制电路优化信息写入驱动 器介质中的顺序。但是在写指令已经成功地写入驱动器的缓存而没有成功地写入驱 动器的非易失性介质的情况下,这种技术是有问题的。在此情况下, 驱动器已经通知驱动器控制器该写指令是成功的。如果在此情况下驱 动器失效(例如,驱动器掉电或重启或写缓存被破坏),存储在写缓存 中的数据可能丢失并且不会写入磁盘。但是由于驱动器的控制电路已 经指出执行了写指令,所以驱动器控制器不会意识到数据的丢失。驱 动器控制器和驱动器没有同步,导致没有写入磁盘的写缓存中的数据丢失。为了避免失效事件发生,经常禁止RAID系统中的驱动器的写 缓存。当驱动器的写缓存被禁止时,驱动器不能临时地将写入数据存 储到缓存,由此迫使驱动器将数据直接写入驱动器的非易失性存储介 质。在这种情况下,直到驱动器已经将写入数据写入其非易失性存储 介质时,驱动器才通知驱动器控制器已经成功写入。但是当驱动器的 写缓存被禁止时,驱动器的性能可能受到负面影响,因为驱动器的控 制电路不能优化从缓存到驱动器的永久介质的数据传输。RAID存储阵列的特征在于能够在失效之后修复或重建关于驱动 器的信息。例如,在RAID5阵列中,在阵列的驱动器上存储奇偶校验 信息。如果一个驱动器失效,将根据存储在阵列中其它驱动器上的奇 偶校验信息重建该驱动器。因为驱动器中介质的容量增加,所以增加 的必须被恢复的信息量导致驱动器的恢复耗费较长的时间。对于具有 能够存储几十或几百吉字节数据的介质的驱动器而言,数小时或一天 或几天的重建时间是很常见的。当阵列中驱动器被重建时,许多RAID 阵列以简化工作方式运行。在简化工作方式下,由于资源被用于重建 驱动器导致阵列的性能下降。此外,如果在重建期间内正被重建的驱 动器的缓存被禁止,则重建该驱动器所需的时间与重建具有启用的写缓存的驱动器所需时间相比可能更长。因此,在许多的RAID级中, 当阵列处于简化工作模式时如果第二驱动器失效,则该阵列将丢失。发明内容按照本发明,公开了一种用于重建驱动器阵列中的驱动器的系统 和方法。被重建的驱动器的写缓存是启用的。在重建过程期间,发向 驱动器的指令也记录在与驱动器控制器相关的日志中。周期地向驱动 器发送同步指令。响应同步指令,驱动器将写缓存中的没有被写入非 易失性介质的所有数据写入介质。在同步之后,清除日志,也清除己 经相对驱动器阵列的非易失性存储器被执行的写指令。此处所公开的系统和方法的优点在于縮短了失效驱动器的重建时 间。启用正被恢复的驱动器的写缓存允许驱动器的控制逻辑优化指令 被写入介质的顺序。启用正被恢复的驱动器的写缓存也允许在与写指 令相关的数据被写入驱动器的介质中之前向磁盘发送多个写指令。因 为写缓存被启用,所以能够比重建过程中写缓存被禁止的驱动器更快 地重建驱动器。此处所公开的系统和方法的另一个优点在于公开的技 术包括预见在写缓存被启用时以及重建过程期间正被重建的驱动器可 能经历系统失效的可能性的预防措施。为了补偿这种可能性,指令被 写入日志并相对于驱动器被周期地同步。同步过程包括使驱动器缓存 中的与写指令相关的所有数据写入驱动器的存储介质中。在驱动器控 制器的日志中存储可能不同步的指令的子集,避免了必须从开端重新 开始重建过程的可能性。替代的是,如果重建过程期间发生失效(例 如,掉电)则重建过程可以从存储在日志中的这些指令重新开始。因 此,此处公开的重建过程包括了在不影响重建过程性能的同时避免随 后失效的安全机构。通过阅读随后的说明、权利要求书和附图,本领 域普通技术人员将清楚了解其它的优点。


通过结合附图参照下面的说明可更完整地理解本发明及其优点,附图中相同的参考标记表示相同的特征,其中 图1是冗余存储阵列的图示;图2是存储阵列的驱动器和相关的驱动器控制器;图3是用于重建驱动器阵列的驱动器的方法的流程图。
具体实施方式
出于说明的目的,信息处理系统可包括工具或工具的集合,该工 具或工具的集合可计算、分类、处理、传输、接收、检索、初始、切 换、存储、显示、证明、检测、记录、再现、操作或利用用于商业、 科学、控制或其它目的的任何形式的信息、情报或数据。例如,信息 处理系统可以是个人计算机、网络存储设备或任何其它适合的设备, 并且在尺寸、形状、性能、功能和价格上是可变的。信息处理系统可 以包括随机存取存储器(RAM)、 一个或多个例如中央处理器(CPU) 或硬件或软件控制逻辑的处理资源、ROM和/或其它类型的非易失性存 储器。信息处理系统的额外部件可包括一个或多个磁盘驱动器, 一个 或多个用于与外部设备通信的网络端口,以及各种输入/输出(I/O)设 备,例如键盘、鼠标和视频显示器。信息处理系统还可以包括一个或 多个用于在各硬件部件之间传输通信的总线。图1是5级RAID存储阵列的图示,其通常用10表示。存储阵列 10包括5个驱动器,其有时被称为盘或巻。图l示出的四个驱动器的 每个都包括8条带(stripe)或8行(row)数据,其标注为条带O(Stripe O)至条带7(Stripe 7)。应当认识到,图1的RAID阵列的构造仅是RAID 阵列的示例,RAID阵列可以被配置成具有更多或更少的驱动器,每个 驱动器可以具有更多或更少的条带或行。参照Stripe 0,数据被存储在 驱动器A、驱动器B和驱动器C。 Stripe 0的奇偶检验位被存储在驱动 器D,用P()表示,奇偶检验位是对驱动器A、驱动器B和驱动器C中 Stripe 0的内容执行异或运算的结果。参照Stripe 7说明RAID阵列10 的数据结构的第二个例子,数据被存储在驱动器B、驱动器C和驱动 器D中。Stripe 7的奇偶检验位被存储在驱动器A,用P7表示,奇偶检 验位是对驱动器B、驱动器C和驱动器D中Stripe 7的内容执行异或 运算的结果。例如,如果驱动器C失效或以其它方式被鉴别为退化的 驱动器,则将通过RAID阵列10中其它三个驱动器中的数据重建驱动 器C的每片中的数据。如图1所示,存储阵列中的每个驱动器都连接到主机。RAID 5阵列10是容错RAID级的例子,其中能够支持单个 驱动器失效,并能够重建失效的驱动器。其它的容错RAID级包括1、 4、 5、 6、 10和0+1。存储阵列的每个驱动器与驱动器控制器通信并受其控制。图2是 驱动器20和驱动器控制器22的图示。驱动器20和驱动器控制器22 通过通道24彼此连接。通道24可以按照多种通信协议工作,包括并 行或串行SCSI通信总线或链路,并行或串行ATA通信总线或链路, 光纤通道通信链路,或无线通信链路。驱动器20包括介质存储元件26、 控制逻辑21和写缓存27。介质存储元件26可以包括适于存储信息的 任何介质,包括磁介质或光介质。类似地,写缓存27可以包括适于存 储信息的任何存储机构。写缓存27通常是易失性存储器,与通常是非 易失性的存储介质26相比写缓存27可用于更快的存取其内容。驱动器20的控制逻辑21响应并处理来自驱动器控制器22的指令 (包括从驱动器20读数据或向驱动器20写数据的指令),启用或禁止 写缓存27,并使写缓存27中所有的信息写入存储介质26。控制逻辑 21也将数据和提示信息发送到驱动器控制器22。此外,控制逻辑21 控制存储介质26和写缓存27。驱动器控制器22包括控制逻辑元件23, 其与驱动器控制器的日志28和存储器位置29通信并指导它们。按照 本发明公开的驱动器控制器22的示例包括RAID控制器、下层的 ATA/SATA或SCSI控制器或两者。日志28是存储过去发送到驱动器20的写指令的信息存储位置。 日志28的内容由控制逻辑23控制。控制逻辑23可以发布指令使日志 28清除或清空其内容。日志28本质上最好是非易失性的,以便在驱动 器或周围网络突然掉电时保护日志28的内容。日志28的内容是最近 发送到驱动器20的指令列表,以及与每个所列指令相关的指令计数。 存储器位置29可以是控制逻辑23可存取的任何存储器位置。运行的 指令计数被存储在存储器位置29中。指令计数的值对应最近发送到驱 动器20的指令。存储器位置29中的指令计数可由控制逻辑23控制。 特别的,控制逻辑23可以将新的指令计数存储在存储器位置29中, 可以检索存储的指令计数,或者擦除或复位指令计数。存储器位置29 可以包括非易失性存储器,以便在驱动器或网络掉电时保护指令计数。图3是用于重建驱动器阵列的驱动器的方法的流程图。当必须重 建驱动器阵列的驱动器时执行图3的步骤。有许多原因需要重建驱动 器。驱动器上的数据可能被劣化或者驱动器可能是一个己经被添加到 驱动器阵列的驱动器。可以按照自动重建来重建该驱动器,自动重建 识别要求重建驱动器的条件。或者,可以根据系统管理员的手动引导 来重建驱动器。在步骤30,启用驱动器的写缓存,由此允许驱动器使 用其写缓存来帮助优化向驱动器介质的写入。驱动器20的写缓存通常 由驱动器控制器22发送至驱动器20的指令来启用。例如,如果驱动 器20是SCSI驱动器,则驱动器控制器22将MODE SELECT (模式 选择)指令发送至驱动器20的控制逻辑21中的Cache Mode Page (缓 存模式页),并将驱动器中Write Cache Enable (写缓存使能)位设置成 1 。在ATA或SATA情况下,驱动器控制器发送具有子命令代码的SET FEATURES (设置特征)指令以启用写缓存。在歩骤32,驱动器控制器22接收发向驱动器的指令。这些指令包 括重建驱动器所必须的写指令。因为驱动器的一部分被重建,所以指 令可以包括有效负载指令,以便向驱动器的重建部分写入新的数据。 在步骤32,接收的指令被记录在日志28。因为每个指令都被接收,所 以写指令的运行列表被载入日志28。在将指令记录在日志28中之后, 在存储器位置29中增加指令计数。在步骤38,将接收的指令发送到驱 动器。从步骤32至38可以看出,在指令发送到驱动器之前,指令被 记录在日志中。以此方式,在指令被提供给驱动器之前,记录是由每 个指令构成的。当驱动器接收到指令时,指令及其内容可存储在缓存 中或存储在驱动器的存储介质中。由于驱动器上的写缓存被启用,所 以驱动器可以选择处理指令的方法,该方法可最有效地利用存储器的 写缓存。 一旦驱动器成功地处理了该指令,无论是通过在缓存中还是 在其存储介质中替换该指令,驱动器都将向控制器发布提示指令,指 出驱动器己经成功地处理了该指令。在步骤40,在驱动器的表示成功接收该指令的提示发送之后,确 定是否完成重建过程。如果驱动器重建过程没有完成,在步骤42确定 指令计数是否已经达到预定的最大值。 一旦指令计数达到预定的最大 值,即, 一旦指令的预定的最大值记录在日志中,则执行一系列步骤以使日志与驱动器的存储介质的内容同步。预定的最大值可以是不大 于日志中可存储的指令数量的任何适当的数。预定的最大值不应当设 置的太低,以至于日志和存储介质的同步过于频繁,干扰了同步步骤 与重建过程的有效完成。预定值不应当设置的太高,以至于在日志中 存储过量的指令。如果发生被重建的驱动器的随后损失,日志中具有 过量的指令与跟踪用于重复执行的有限数量的指令的目的相违。如果没有达到预定的指令计数值,流程图返回到步骤32在驱动器控制器接 收下一个指令。如果在步骤42确定出已经达到预定的指令计数值,则使记录在日 志中的指令与驱动器的存储介质的内容同步。在步骤44,驱动控制器 发布指令,以便将存储在缓存中的与写指令相关的所有数据写到介质 中。该指令是由驱动器的控制逻辑识别的指令。在SCSI情况下,驱动 器控制器发布SYNCHRONIZE (同步)指令。在ATA或SATA情况下, 驱动器控制器发布FLUSH (清除)指令。该指令使缓存中所有与写指 令相关的数据将关于驱动器中的存储介质被清除。该步骤之后,驱动 器的缓存不包括还没有被写入驱动器的存储介质中的一些写指令。在 已经成功地执行了步骤44之后,步骤46清除日志,并将指令计数清 零。流程图返回到步骤32在驱动器控制器接收发向驱动器的其它指令。如果步骤40确定了重建已经完成,则流程图进行到步骤48,发布 指令迫使所有的写指令离开缓存,以便能够关于驱动器的存储介质执 行这些指令。应当意识到步骤48与步骤44是一致的。成功完成步骤 48之后,在步骤50,清除日志并将指令计数清零。应当意识到步骤50 与步骤46是一致的。在步骤52,禁止驱动器的写缓存。在SCSI情况 下,驱动器控制器将MODE SELECT (模式选择)指令发送至驱动器 20的控制逻辑21中的Cache Mode Page (缓存模式页),并将Write Cache Enable (写缓存使能)位设置成0。在ATA或SATA情况下,驱 动器控制器发送具有子命令代码的SET FEATURES (设置特征)指令 以禁止写缓存。禁止驱动器写缓存使驱动器处于发向存储驱动器的写 指令不能到达驱动器的条件,由此确保向驱动器的所有写入都被写入 驱动器的非易失性存储介质。此处公开的系统和方法,在防止重建过程期间驱动器的随后失效的同时,允许使用优化的启用的写缓存重建驱动器。在日志中记录写 指令提供了用于列出最近发布的写指令的资源。如果在驱动器的重建 期间驱动器的写缓存掉电,则日志将包括还没有写到驱动器的存储介 质中的这些指令的列表。因此,如果发生被重建驱动器的缓存的失效 或掉电,日志的内容能够用作避免必须重新开始重建过程的资源。应当理解,此处公开的系统和方法不限于此处公开的附图中所示 的精确构造。而是,此处公开的系统和方法能够采用任何适当的计算 机系统构造,该计算机系统构造包括冗余电源的使用。还应当理解, 此处公开的系统和方法不限于对专用处理器或处理器族或处理器的专 用指令的应用。而是,此处公开的系统和方法可使用能够通过调整一 个或多个内部时钟来调整其功耗的任何处理器。尽管已经详细的说明 了本发明,但是应当理解,在不脱离权利要求书所限定的本发明的实 质和范围的情况下,能够进行各种改变、替换和修改。
权利要求
1.一种用于管理发往驱动器的重建指令的方法,该驱动器具有非易失性存储器和缓存;启用该驱动器的缓存;将发往该驱动器的重建指令记录在第一存储器位置;以及周期地使该驱动器将与该重建指令相关的缓存的数据转储清除到其非易失性存储器中;其中在驱动器的缓存被启用的期间内,每个发往驱动器指令至少被临时地记录在该存储器位置。
2. 如权利要求1所述的用于管理发往驱动器的重建指令的方法, 还包括在成功地重建驱动器之后禁止驱动器缓存的步骤。
3. 如权利要求2所述的用于管理发往驱动器的重建指令的方法, 其中使该驱动器将缓存的数据转储清除到其非易失性存储器中的步骤 包括以下步骤保持存储在该第一存储器位置中的指令数量的计数; 当存储在该第一存储器位置中的指令数量的计数达到预定的临界 值时,使该驱动器将与缓存的数据转储清除到其非易失性存储器中。
4. 如权利要求3所述的用于管理发往驱动器的重建指令的方法, 还包括在将数据从缓存成功地转储清除到非易失性存储器中之后清除 该第一存储器位置和该计数的步骤。
5. —种存储阵列,包括 多个驱动器,其中每个驱动器包括,用于存储数据的非易失性存储介质;和用于缓存与驱动器接收到的写指令相关的数据的写缓存;以及驱动器控制器,其中每个驱动器控制器与存储阵列的一驱动器相关并与其连接,其中每个驱动器控制器都包括第一存储器,其中该第 一存储器用于存储从每个驱动器控制器发送到与其相关的驱动器的写指令的历史记录;其中每个驱动器控制器用于管理其相关驱动器的重建 启用该驱动器的缓存;将发送到该驱动器的每个写指令记录在第一存储器中; 周期地使该驱动器转储清除该驱动器写缓存中的数据;和 在成功的完成驱动器重建之后禁止该驱动器的写缓存。
6. 如权利要求5所述的存储阵列,其中在成功转储清除该相关驱 动器写缓存中数据的指示之后,每个驱动器控制器清除其第一存储器。
7. 如权利要求5所述的存储阵列,其中每个驱动器控制器包括用 于记录存储在该第一存储器中的指令数量的第二存储器。
8. 如权利要求7所述的存储阵列,其中当存储在该第一存储器中 的指令数量达到预定的临界值时,每个驱动器控制器使其相关的驱动 器转储清除写缓存中的数据。
9. 如权利要求5所述的存储阵列,其中第一存储器是非易失性的。
10. —种用于重建驱动器的存储介质的方法,其中该驱动器与可 被选择启用的写缓存通信,该方法包括启用该驱动器的写缓存; 向该驱动器发送一个或多个指令; 将该一个或多个指令写入日志;和使该驱动器将该写缓存中的数据转储清除到存储介质中。
11. 如权利要求10所述的用于重建驱动器的存储介质的方法,还 包括清除日志的步骤。
12.如权利要求ll所述的用于重建驱动器的存储介质的方法,还包括在成功地重建该驱动器的介质之后禁止该写缓存的步骤。
13. 如权利要求10所述的用于重建驱动器的存储介质的方法,还 包括以下步骤提供发送到该驱动器的指令的计数;和其中当发送到该驱动器的指令的计数达到预定值时执行使该驱动 器转储清除该写缓存中的数据的步骤。
14. 如权利要求13所述的方法,还包括在成功地转储清除该写缓 存中的数据之后清除该日志的步骤。
15. 如权利要求13所述的方法,还包括在成功地重建该驱动器的 介质之后禁止该写缓存的步骤。
16. 如权利要求10所述的方法,还包括在驱动器转储清除该写缓 存中的所有数据并发送指示缓存的数据被写入介质的消息之后,清除 该日志的步骤。
17. 如权利要求10所述的方法,其中该日志由与该驱动器控制器 相关的非易失性存储器构成。
18. —种用于通过通信通道与驱动器通信的驱动器控制器,包括 用于记录在驱动器被重建期间内从驱动器控制器发送到该驱动器的指令的第一存储器;用于存储记录在该第一存储器中指令的计数的第二存储器; 其中,在该驱动器被重建期间内,驱动器控制器用于启用该驱动器的写缓存,并且该指令的计数达到预定的临界值时使该驱动器转储清除该驱动器的写缓存中的数据。
19. 如权利要求18所述的驱动器控制器,其中该驱动器控制器在 成功地重建该驱动器之后禁止该驱动器的写缓存。
20.如权利要求19所述的驱动器控制器,其中该第一存储器包括 非易失性存储器。
全文摘要
本发明公开了一种用于重建驱动器的系统和方法,其中该驱动器的写缓存被启用,并且对发送到该驱动器的指令保持分开记录。在周期性的基础上,驱动器转储清除其缓存中的数据,并清除指令的历史记录。当该成功地重建该驱动器时,禁止该驱动器的缓存。
文档编号G06F12/16GK101324864SQ20081013359
公开日2008年12月17日 申请日期2005年3月21日 优先权日2004年3月22日
发明者A·A·J·阿里, K·T·马克斯, R·克劳森 申请人:戴尔产品有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1