Raid奇偶校验条带重建的制作方法_2

文档序号:9769175阅读:来源:国知局
数值的术语“大约”或“近似”包含精确的值和合理的偏差。
[0028]如本发明实施方式使用的,术语“和/或”包括一个或更多个相关联的列表项的随意组合。
[0029]如本发明实施方式使用的,“A或B中的至少一个”的形式的短语可以包括A或B或A和B两者。相应地,“A或B或C中的至少一个”、或者包括更多的列表项的形式的短语,可以包括一个或更多个相关联的列表项的随意组合。
[0030]依照示例性的实施方式,奇偶校验条带可以指奇偶校验RAID系统中组织数据的单元。如图1A所示,奇偶校验条带可以由多个块构成。
[0031 ]奇偶校验条带中的每一块可以位于不同的磁盘中。如图1A的示例所示,虚线包围的第一奇偶校验条带的奇偶校验块遍布于存储磁盘1-4中。
[0032]奇偶校验条带中的块可以是具有近似4KB的通常大小的数据块或奇偶校验块。数据块可以容纳用户数据。奇偶校验块可以容纳依据某种奇偶校验算法从奇偶校验条带的数据块中计算得到的奇偶校验值,奇偶校验算法可以使用XOR计算。
[0033]依据示例性的实施方式,图1B示出了通常的(例如,非最优化的)RAID系统100如何应对用户读/写请求(140、145)。对于读请求,读处理直接从数据磁盘(D1、D2、D3、D4)中读取数据并将其送回用户。对于写请求,写处理首先读出旧数据及其相应的奇偶校验,并与新数据一起使用以生成新的奇偶校验,然后将新数据和新的奇偶校验写入数据和奇偶校验磁盘(D1、D2、D3、D4、P1)。
[0034]依据示例性的实施方式,图2示出了通常的RAID系统200在磁盘故障时如何进行在线重建。重建处理可以从第一个到最后一个奇偶校验条带顺序地重建RAID系统200的奇偶校验条带。为了构建每一奇偶校验条带,重建处理可以从无故障的磁盘(205、215、220、225)中读出相应的数据和奇偶校验块,通过奇偶校验计算还原故障磁盘210上的数据块,并将数据块写回替代的磁盘230。在在线重建期间,指向故障磁盘的用户I/O请求(240、245)必须快速地重建数据。对于读请求240,奇偶校验群中的所有其他数据和奇偶校验块将被读出,并且将通过奇偶校验计算重建所请求的数据。对于写请求245,除奇偶校验块之外的有其他数据块将被读出,然后将重建新的奇偶校验块并写回奇偶校验磁盘。因此,与正常模式相比,重建模式中用户I/O处理更复杂且具有更低的性能。应当注意,重建处理和用户I/O处理相互分离运行,在整个故障磁盘被重建之前,用户I/O处理不会返回正常模式。我们将这种方案归为粗粒度重建控制。
[0035]依据示例性的实施方式,图3示出了使用基于位图的细粒度重建控制的RAID系统300。在重建开始时,设置位图(REC0N位图350)来记录每一单独的奇偶校验条带的重建状况。位图350最初被置为全O,在奇偶校验条带被重构时,其在位图中的相应位被置为I。不同于需要以严格的顺序进行重建的粗粒度重建控制,基于位图的细粒度重建控制允许以任意次序进行奇偶校验条带的重建。根据细粒度重建控制,用户I/O处理与重建处理协作。当用户I/O处理请求了尚未被重建的故障数据块时,故障块将快速地被重建并写回替代磁盘230。然后,该块在位图中的相应位被置为I,表示该故障块已被重建。另一方面,重建处理仍从第一个到最后一个奇偶校验条带顺序运行。然而,在重建奇偶校验条带之前,重建处理将检查位图,以察看相应位是否被置位,如果该位已被置位,则重建操作将跳过重建该奇偶校验条带。
[0036]依据示例性的实施方式,图4示出了利用混合硬盘(405、410、415、420、425、430)的NVM高速缓存中的数据来最优化重建顺序。为了重建故障块,重建处理需要读出同一奇偶校验条带中的所有其他数据和奇偶校验块。因为从NVM高速缓存中读取数据比从旋转磁盘中读取数据快得多,并且存储在NVM高速缓存中的数据是热点(hot)数据和/或重要数据,如果一奇偶校验条带所有的或者大多数数据和奇偶校验块已被贮存到无故障的磁盘(405、415、420,425)的NVM高速缓存中,则重建该奇偶校验条带是更为有效的。因此,重建处理首先彻底扫描混合硬盘的NVM高速缓存,并且与其他奇偶校验条带相比,以较高的优先级重建有更多的数据和奇偶校验块贮存在NVM中的奇偶校验条带。对于仅有部分奇偶校验块贮存在NVM中的奇偶校验条带,可以进行附加的最优化以提示NVM高速缓存管理模块将未贮存的奇偶校验块预取到NVM高速缓存中用于随后的重建。当奇偶校验条带被重建时,它们的相应位在重建位图(RECON位图350)中被置位。
[0037]依据示例性的实施方式,图5示出了根据基于位图的细粒度重建控制来处理用户I/O请求。如图3所示,当用户请求指向尚未被重建的故障数据库时,将快速地重建数据块(对于读请求240)或者奇偶校验块(对于写请求245),这需要访问奇偶校验条带中所有无故障的磁盘(205、215、220、225),这是十分昂贵的。根据粗粒度重建控制,将以这种昂贵的方式处理所有的用户I/O请求,直到重建处理完成。然而,根据细粒度重建控制,可以依据每一单独的奇偶校验条带的重建状况来处理用户I/O请求。如图5所示,如果用户I/O请求指向已被重建的故障块,则以与图1所示的正常模式相同的方式来处理该请求。
[0038]依据示例性的实施方式,图6示出了通过直接复制重建在故障混合硬盘的NVM高速缓存中贮存的数据的方法。在实际的RAID系统600中,通常由旋转磁盘介质的读/写错误导致磁盘故障。因此,当混合硬盘410出现故障时,其NVM高速缓存仍可访问。重建开始时,RAID系统首先检测故障混合硬盘410的NVM高速缓存是否仍可访问。如果NVM高速缓存是可访问的,其内的数据块被读出并复制到替代磁盘,然后该数据块在重建位图中相应的位被置位并被标记为重建。这样,以一种比奇偶校验计算方式更有效的直截了当的方式构建NVM高速缓存中的数据块。此外,贮存在NVM高速缓存中的数据块通常是热点数据,并且被大比例的用户请求所访问。当它们被重建后,可以更有效地处理针对这些数据块的用户请求。
[0039]图7示出了依据示例性的实施方式、通过仅重建RAID系统的已用空间来缩短总的重建时间的方法。设置空间位图750来记录每一奇偶校验条带的分配/空闲状况。为了减少空间位图750的大小,多个奇偶校验条带可被认为是一单元,并对应于位图中的同一位。在创建RAID系统700时,通过将O写入所有的数据和奇偶校验磁盘(705、710、715、720、725)来进行同步。替代磁盘7 30的内容在后台也被初始化为O。空间位图750被初始化为全O。当首次分配奇偶校验条带,其在空间位图750中相应的位被置位为I。在重建期间,在重建特定的奇偶校验条带之前,重建处理检查空间位图750。如果相应位已被置位,则该奇偶校验条带应当已被分配且必须被重建;反之,奇偶校验条带应当是空闲的且仅包含O块,因此不需要被重建。应当注意,空间位图750被实施为块级别,并不需要改变上述文件系统。然而,为了最优使用空间位图750,文件系统可以支持类剪裁(trim-like)的命令,当其释放先前已分配的奇偶校验条带时,其可以通知RAID系统700 AAID系统700将在后台把奇偶校验条带写回O,然后复位空间位图中的相应位。
[0040]依照示例性的实施方式,可以在RAID的创建之后的数据重建开始时初始化空间位图。也就是说,当RAID系统的数据重建处理开始时,可以检查要被构建重建的每一奇偶校验条带的奇偶校验块。如果奇偶校验块是全0,则可以更新空间位图以便表示相关联的奇偶校验条带未被使用。如果奇偶校验块不是全0,则可以更新空间位图以表示相关联的奇偶校验条带已被使用。
[0041 ]例如,在RAID创建处理期间,RAID系统中所有的数据和奇偶校验块可以被初始化为O块。因而,如果奇偶校验条带已被使用,则其奇偶校验块必须被更新因而可以变为非O。然而,如果奇偶校验条带从未被使用,则其奇偶校验块可以保持为全O块。
[0042]在某些示
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1