存储系统和存储控制装置

申请号 CN201280072189.4 申请日 2012-04-27 公开(公告)号 CN104205059B 公开(公告)日 2017-07-14
申请人 株式会社日立制作所; 发明人 吉原朋宏;
摘要 一种存储系统具有:多个存储设备,多个存储设备中的每个存储设备具有多个存储介质和用于控制多个存储介质的设备 控制器 并且具有由多个存储介质配置的RAID组;以及系统控制器,系统控制器具有处理器、通过预定通信网络耦合到多个存储设备和处理器的缓冲 存储器 以及通过预定通信网络耦合到处理器和缓冲存储器的高速缓存存储器。处理器在高速缓存存储器中存储与来自主机计算机的写入 请求 有关的第一数据、从多个存储设备 指定 用于存储在更新之前的数据的第一存储设备,在更新之前的数据是在更新第一数据之前获得的数据,并且向指定的第一存储设备传送第一数据。第一存储设备的第一设备控制器从第一存储设备向系统控制器传输第一数据和基于在更新之前的数据的第二数据。随后,处理器在缓冲存储器中存储第二数据、从多个存储设备指定第二存储设备并且向指定的第二存储设备传送存储的第二数据。处理器也管理指示对写入请求执行的过程的阶段的过程阶段信息项。
权利要求

1.一种存储系统,包括:
多个闪存包;
系统控制器,包括:
处理器,其被配置为控制所述多个闪存包作为RAID组;
高速缓存存储器,其耦合到所述处理器,以及
缓冲存储器,其耦合到所述处理器和所述高速缓存存储器,并且耦合到所述多个闪存包中的每一个,
其中所述处理器被配置为将从计算机发送的新数据传送到存储旧数据的第一闪存包,所述第一闪存包的第一存储器控制器被配置为接收所述新数据以用于根据所述新数据和所述旧数据生成中间奇偶校验,并且将所述中间奇偶校验从所述第一闪存包传送到所述缓冲存储器,同时所述第一存储器控制器将所述新数据和所述旧数据维持为启用状态,其中所述处理器被进一步配置为将所述中间奇偶校验与用于生成新奇偶校验的中间奇偶校验传输命令一起经由所述缓冲存储器传送到存储旧奇偶校验的第二闪存包,而不将所述中间奇偶校验存储到所述高速缓存存储器中,
其中所述存储系统还包括第二闪存包的第二存储器控制器,其被配置为接收所述中间奇偶校验以用于根据所述中间奇偶校验和所述旧奇偶校验生成所述新奇偶校验,并且将关于用于生成所述新奇偶校验的所述中间奇偶校验传输命令的完成响应传送到所述处理器,以及
其中所述处理器被进一步配置为根据从所述第二闪存包接收到所述完成响应,将提交命令传送到所述第一闪存包以用于禁用所述旧数据,使得所述旧数据在接收到所述提交命令之后被所述第一存储器控制器删除。
2.根据权利要求1所述的存储系统,
所述旧数据被存储于所述闪存包的第一物理区域中,并且
所述第一存储器控制器在与所述闪存包的所述第一物理区域不同的第二物理区域中存储所述新数据,并且保持在所述旧数据与所述第一物理区域之间的对应关系和在所述新数据与所述第二物理区域之间的对应关系直至所述新奇偶校验被存储于所述第二闪存包中。
3.根据权利要求2所述的存储系统,
其中所述第一存储器控制器向由来自计算机的写入请求指明的第一逻辑区域分配存储所述旧数据的所述第一物理区域,并且向所述第二物理区域中写入从所述第二存储器获得的新数据,所述第二物理区域是在所述第一闪存包中的、与所述第一物理区域不同的物理区域,并且
在向所述第二闪存包写入所述新奇偶校验之后,所述第一存储器控制器向所述第一逻辑区域分配所述第二物理区域。
4.根据权利要求3所述的存储系统,
其中所述第二存储器控制器基于从所述第一闪存包传送的数据向用于存储奇偶校验的第二逻辑区域分配存储所述旧奇偶校验的第三物理区域,并且向第四物理区域中写入所述新奇偶校验,所述第四物理区域是在所述第二闪存包中的、与所述第三物理区域不同的物理区域,并且
在向所述第二闪存包写入所述新奇偶校验之后,所述第二存储器控制器向所述第二逻辑区域分配所述第四物理区域。
5.根据权利要求4所述的存储系统,还包括:
用于存储指明对所述写入请求执行的过程的阶段的过程阶段信息项的第一存储器;以及
附加系统控制器,所述附加系统控制器在所述系统控制器中出现故障时,基于在所述第一存储器中存储的所述过程阶段信息项来接管更新过程。
6.根据权利要求5所述的存储系统,还包括:
用于存储与在所述第一存储器中存储的所述过程阶段信息项相同的过程阶段信息项的附加第一存储器,
其中所述附加系统控制器在所述第一存储器中出现故障时,基于在所述附加第一存储器中存储的所述过程阶段信息项来接管所述更新过程。
7.根据权利要求5所述的存储系统,还包括:
用于存储与在所述高速缓存存储器中存储的数据相同的数据的附加高速缓存存储器,其中所述附加系统控制器在所述高速缓存存储器中出现故障时,通过使用所述附加高速缓存存储器来接管所述更新过程。
8.根据权利要求7所述的存储系统,其中所述系统控制器向所述高速缓存存储器和所述附加高速缓存存储器中写入从所述计算机发送的新数据。
9.根据权利要求5所述的存储系统,还包括:
用于存储与在所述缓冲存储器中存储的数据相同的数据的附加缓冲存储器,其中所述附加系统控制器在所述缓冲存储器中出现故障时,通过使用所述附加缓冲存储器来接管所述更新过程。
10.根据权利要求5所述的存储系统,
其中所述多个闪存包中的每个闪存包为非易失性半导体存储器并且具有多个物理,所述多个物理块中的每个物理块具有多个物理页面,
数据以空白物理页面为单位被写入到所述多个闪存包,并且
在所述多个闪存包中存储的数据以物理块为单位被擦除。
11.根据权利要求1所述的存储系统,其中:
所述中间奇偶校验代表所述新数据和所述旧数据,并且所述第二闪存包是所述旧奇偶校验被存储在其中的闪存包,并且
所述第二存储器控制器基于从所述缓冲存储器获得的所述新数据和所述旧数据以及在所述第二闪存包中存储的所述旧奇偶校验来计算所述新奇偶校验,并且向所述第二闪存包中写入所述新奇偶校验。
12.一种存储控制装置,包括:
从计算机接收写入请求的系统控制器;
高速缓存存储器,所述高速缓存存储器耦合到所述系统控制器并且存储所述系统控制器已经从所述计算机接收的数据;以及
缓冲存储器,所述缓冲存储器用于存储在第一系统控制器和第二系统控制器与多个控制器中的每个控制器之间传送的数据,
其中所述写入请求用于指明在多个闪存包中的第一闪存包中存储的旧数据并且将所述旧数据更新成新数据,并且
所述系统控制器:
将从计算机发送的新数据传送到存储旧数据的第一闪存包,
使所述第一闪存包的第一存储器控制器接收所述新数据以用于根据所述新数据和所述旧数据生成中间奇偶校验,并且将所述中间奇偶校验从所述第一闪存包传送到所述缓冲存储器,同时所述第一存储器控制器将所述新数据和所述旧数据维持为启用状态,将所述中间奇偶校验与用于生成新奇偶校验的中间奇偶校验传输命令一起经由所述缓冲存储器传送到存储旧奇偶校验的第二闪存包,而不将所述中间奇偶校验存储到所述高速缓存存储器中,
使第二闪存包的第二存储器控制器接收所述中间奇偶校验以用于根据所述中间奇偶校验和所述旧奇偶校验生成所述新奇偶校验,并且将关于用于生成所述新奇偶校验的所述中间奇偶校验传输命令的完成响应传送到所述系统控制器,以及
根据从所述第二闪存包接收到所述完成响应,将提交命令传送到所述第一闪存包以用于禁用所述旧数据,使得所述旧数据在接收到所述提交命令之后被所述第一存储器控制器删除。
13.根据权利要求12所述的存储控制装置,其中:
所述旧数据被存储于所述闪存包的第一物理区域中,并且
所述系统控制器使所述第一存储器控制器在与所述闪存包的所述第一物理区域不同的第二物理区域中存储所述新数据,并且保持在所述旧数据与所述第一物理区域之间的对应关系和在所述新数据与所述第二物理区域之间的对应关系,直至所述新奇偶校验被存储于所述第二闪存包中。

说明书全文

存储系统和存储控制装置

技术领域

[0001] 本发明涉及用于计算在存储设备中存储的冗余性代码的技术。

背景技术

[0002] 已知如下存储系统,该存储系统具有多个盘设备和用于控制这些盘设备的存储控制器,其中盘设备中的每个盘设备工作用于创建奇偶校验(例如,专利文献1)。在这一存储系统中,存储控制器向存储在更新之前的数据(旧数据)的盘设备传输更新的数据(新数据)。根据旧数据和新数据,盘设备创建用于创建新奇偶校验的中间值(中间奇偶校验)、向其盘中写入新数据并且清空旧数据被存储在其中的存储区域以具有空白区域。盘设备向存储控制器传输这一中间奇偶校验。存储控制器在高速缓存存储器和存储控制器的非易失性存储器中存储中间奇偶校验。存储控制器然后从高速缓存存储器读取中间奇偶校验并且向存储旧奇偶校验的盘设备传输中间奇偶校验。这一盘设备根据接收的中间奇偶校验和旧奇偶校验创建新奇偶校验、向其盘中写入新奇偶校验并且清空旧奇偶校验被存储在其中的存储区域以具有空白区域。
[0003] 引用列表
[0004] 专利文献
[0005] PTL 1:第6,098,191号美国专利申请

发明内容

[0006] 技术问题
[0007] 在专利文献1中,用于在高速缓存存储器和非易失性存储器二者中存储中间奇偶校验的过程增加对存储控制器施加的负荷。这使存储控制器的性能成为瓶颈从而使存储控制器的性能恶化。然而,在高速缓存存储器或者非易失性存储器中存储中间奇偶校验可能在系统故障的情况下引起数据丢失。
[0008] 对问题的解决方案
[0009] 作为本发明的一个方面的一种存储系统具有:多个存储设备,多个存储设备中的每个存储设备具有多个存储介质和用于控制多个存储介质的设备控制器并且具有由多个存储介质配置的RAID组;以及系统控制器,系统控制器具有处理器、通过预定通信网络耦合到多个存储设备和处理器的缓冲存储器以及通过预定通信网络耦合到处理器和缓冲存储器的高速缓存存储器。
[0010] 处理器在高速缓存存储器中存储与来自主机计算机的写入请求有关的第一数据、从多个存储设备指定用于存储在更新之前的数据的第一存储设备,在更新之前的数据是在更新第一数据之前获得的数据,并且向指定的第一存储设备传送第一数据。第一存储设备的第一设备控制器从第一存储设备向系统控制器传输第一数据和基于在更新之前的数据的第二数据。
[0011] 处理器在缓冲存储器中存储第二数据、从多个存储设备指定第二存储设备并且向指定的第二存储设备传送存储的第二数据。处理器也管理指示对写入请求执行的过程的阶段的过程阶段信息项。附图说明
[0012] [图1]图1示出了存储系统的配置。
[0013] [图2]图2示出了FMPK 144的配置。
[0014] [图3]图3示出了菜单屏幕。
[0015] [图4]图4示出了根据实施例1的写入过程。
[0016] [图5]图5示出了根据实施例1的、由MP 121在接收写入命令时执行的操作。
[0017] [图6]图6示出了根据实施例1的、由MP 121在执行向FEPK 110的缓冲器113中写入之后执行的操作。
[0018] [图7]图7示出了根据实施例1的、由MP 121在执行向CM 131中写入之后执行的操作。
[0019] [图8]图8示出了根据实施例1的、由MP 121在获得写入命令响应之后执行的操作。
[0020] [图9]图9示出了根据实施例1的、由MP 121在执行向BEPK 140中写入之后执行的操作。
[0021] [图10]图10示出了根据实施例1的、由MP 121在新数据传输命令的正常结束之后执行的操作。
[0022] [图11]图11示出了根据实施例1的、由MP 121在中间奇偶校验接收命令的正常结束之后执行的操作。
[0023] [图12]图12示出了根据实施例1的、由MP 121在中间奇偶校验传输命令的正常结束之后执行的操作。
[0024] [图13]图13示出了根据实施例1的、由MP 121在向数据FMPK144A传输的新数据提交(commit)命令的正常结束之后执行的操作。
[0025] [图14]图14示出了根据实施例1的、由MP 121在向奇偶校验FMPK 144P传输的新数据提交命令的正常结束之后执行的操作。
[0026] [图15]图15示出根据实施例1的、由MP 121在出现MP故障时执行的操作。
[0027] [图16]图16示出了根据实施例1的、由MP 121在有在奇偶校验生成后队列中的注册的情况下执行的操作。
[0028] [图17]图17示出了根据实施例1的、在奇偶校验生成前阶段中出现MP故障时执行的转变写入过程。
[0029] [图18]图18示出了根据实施例1的、在奇偶校验生成后阶段中出现MP故障时执行的转变写入过程。
[0030] [图19]图19示出了根据实施例1的FMPK状态1。
[0031] [图20]图20示出了根据实施例1的FMPK状态2。
[0032] [图21]图21示出根据实施例1的、在FMPK状态1之下基于新数据传输命令执行的操作。
[0033] [图22]图22示出了根据实施例1的、在FMPK状态2之下基于新数据传输命令执行的操作。
[0034] [图23]图23示出了根据实施例1的、在FMPK状态1之下基于中间奇偶校验接收命令执行的操作。
[0035] [图24]图24示出了根据实施例1的、在FMPK状态2之下基于中间奇偶校验接收命令执行的操作。
[0036] [图25]图25示出了根据实施例1的、在FMPK状态1之下基于中间奇偶校验传输命令执行的操作。
[0037] [图26]图26示出了根据实施例1的、在FMPK状态2之下基于中间奇偶校验传输命令执行的操作。
[0038] [图27]图27示出了根据实施例1、的在FMPK状态1之下基于新数据提交命令执行的操作。
[0039] [图28]图28示出了根据实施例1的、在FMPK状态2之下基于新数据提交命令执行的操作。
[0040] [图29]图29示出了根据实施例1的、在FMPK状态1之下基于正常读取命令执行的操作。
[0041] [图30]图30示出了根据实施例1的、在FMPK状态2之下基于正常读取命令执行的操作。
[0042] [图31]图31示出了根据实施例1的、在FMPK状态1之下基于正常写入命令执行的操作。
[0043] [图32]图32示出了根据实施例1的、在FMPK状态2之下基于正常写入命令执行的操作。
[0044] [图33]图33示出了根据实施例1的系统状态的转变。
[0045] [图34]图34示出了根据实施例1的、在系统状态1中的数据的布置。
[0046] [图35]图35示出了根据实施例1的、在系统状态2中的数据的布置。
[0047] [图36]图36示出了根据实施例1的、在系统状态3中的数据的布置。
[0048] [图37]图37示出了根据实施例1的、在系统状态4中的数据的布置。
[0049] [图38]图38示出了根据实施例1的、在系统状态5中的数据的布置。
[0050] [图39]图39示出了根据实施例1的、在系统状态6中的数据的布置。
[0051] [图40]图40示出了根据实施例1的、在系统状态7中的数据的布置。
[0052] [图41]图41示出了根据实施例1的、在系统状态a中的数据的布置。
[0053] [图42]图42示出了根据实施例1的、在系统状态A中的数据的布置。
[0054] [图43]图43示出了根据实施例1的、在系统状态B中的数据的布置。
[0055] [图44]图44示出了根据实施例1的、在系统状态C中的数据的布置。
[0056] [图45]图45示出了根据实施例1的、在系统状态D中的数据的布置。
[0057] [图46]图46示出了根据实施例1的、在系统状态E中的数据的布置。
[0058] [图47]图47示出了根据实施例1的、在系统状态F中的数据的布置。
[0059] [图48]图48示出了根据实施例1的、在系统状态b中的数据的布置。
[0060] [图49]图49示出了根据实施例1的、在系统状态c中的数据的布置。
[0061] [图50]图50示出了根据实施例1的、在系统状态G中的数据的布置。
[0062] [图51]图51示出了根据实施例1的、在系统状态e中的数据的布置。
[0063] [图52]图52示出了根据实施例1的、在系统状态f中的数据的布置。
[0064] [图53]图53示出了根据实施例1的、在系统状态I中的数据的布置。
[0065] [图54]图54示出了根据实施例2的写入过程。
[0066] [图55]图55示出了根据实施例2的、在奇偶校验生成前阶段中出现MP故障时执行的转变写入过程。
[0067] [图56]图56示出了根据实施例2的、在数据介质更新中阶段中出现MP故障时执行的转变写入过程。
[0068] [图57]图57示出了根据实施例2的、在奇偶校验更新中阶段中出现MP故障时执行的转变写入过程。
[0069] [图58]图58示出了根据实施例2的、在奇偶校验生成后阶段中出现MP故障时执行的转变写入过程。
[0070] [图59]图59示出了根据实施例2的、基于正常读取命令执行的操作。
[0071] [图60]图60示出了根据实施例2的、基于正常写入命令执行的操作。
[0072] [图61]图61示出了根据实施例2的、基于XDWRITE命令执行的操作。
[0073] [图62]图62示出了根据实施例2的、基于XDREAD命令执行的操作。
[0074] [图63]图63示出了根据实施例2的、基于XPWRITE命令执行的操作。
[0075] [图64]图64示出了根据实施例3的写入过程。
[0076] [图65]图65示出了根据实施例3的、在奇偶校验生成前阶段中出现MP故障时执行的转变写入过程。
[0077] [图66]图66示出了根据实施例3的、在数据介质更新中阶段中出现MP故障时执行的转变写入过程。
[0078] [图67]图67示出了根据实施例3的、在奇偶校验介质更新中阶段中出现MP故障时执行的转变写入过程。
[0079] [图68]图68示出了根据实施例4的写入过程。
[0080] [图69]图69示出了根据实施例4的、在奇偶校验生成前阶段中出现MP故障时执行的转变写入过程。
[0081] [图70]图70示出了根据实施例4的、在奇偶校验生成后阶段中出现MP故障时执行的转变写入过程。
[0082] [图71]图71示出了根据实施例4的FMPK状态1a。
[0083] [图72]图72示出了根据实施例4的FMPK状态2a。
[0084] [图73]图73示出了根据实施例4的FMPK状态3a。
[0085] [图74]图74示出了根据实施例4的、在FMPK状态1a之下基于旧数据传输命令执行的操作。
[0086] [图75]图75示出了根据实施例4的、在FMPK状态2a之下基于旧数据传输命令执行的操作。
[0087] [图76]图76示出了根据实施例4的、在FMPK状态3a之下基于旧数据传输命令执行的操作。
[0088] [图77]图77示出了根据实施例4的、在FMPK状态1a之下基于新数据传输命令执行的操作。
[0089] [图78]图78示出了根据实施例4的、在FMPK状态2a之下基于新数据传输命令执行的操作。
[0090] [图79]图79示出了根据实施例4的、在FMPK状态3a之下基于新数据传输命令执行的操作。
[0091] [图80]图80示出了根据实施例4的、在FMPK状态1a之下基于新数据提交命令执行的操作。
[0092] [图81]图81示出了根据实施例4的、在FMPK状态2a之下基于新数据提交命令执行的操作。
[0093] [图82]图82示出了根据实施例4的、在FMPK状态3a之下基于新数据提交命令执行的操作。
[0094] [图83]图83示出了根据实施例5的写入过程。
[0095] [图84]图84示出了根据实施例5的、在奇偶校验生成前阶段中出现MP故障时执行的转变写入过程。
[0096] [图85]图85示出了根据实施例5的、在奇偶校验介质更新中阶段中出现MP故障时执行的转变写入过程。
[0097] [图86]图86示出了根据实施例5的、在奇偶校验生成后阶段中出现MP故障时执行的转变写入过程。
[0098] [图87]图87示出了根据实施例6的写入过程。
[0099] [图88]图88示出了根据实施例6的、在奇偶校验生成前阶段中出现MP故障时执行的转变写入过程。
[0100] [图89]图89示出了根据实施例6的、在奇偶校验介质更新中阶段中出现MP故障时执行的转变写入过程。
[0101] [图90]图90示出了根据实施例6的、在奇偶校验生成后阶段中出现MP故障时执行的转变写入过程。
[0102] [图91]图91示出了根据实施例7的写入过程的第一过程。
[0103] [图92]图92示出了根据是示例7的写入过程的第二过程。

具体实施方式

[0104] 下文现在描述本发明的若干实施例。
[0105] 在以下描述中,各种类型的信息由“***表”表达,但是各种类型的信息可以由除了表之外的数据结构表达。为了描述各种类型的信息独立于数据结构,“***表”可以被称为“***信息”。
[0106] 另外,在以下描述中,使用“程序”作为句子的主语来描述每个过程;然而,描述每个过程的句子的主语可以是“处理器”,因为程序由处理器(例如,CPU(中央处理单元))执行以通过适当地使用存储资源(例如,存储器)和/或通信接口设备(例如,通信端口)来执行某个过程。使用“程序”作为主语来描述的过程可以由存储系统、在存储系统中包含的控制器、下文描述的在控制器中包含的MP-PK或者在MP-PK以内的MP(微处理器)执行。处理器可以包括执行由处理器执行的过程的部分或者整个过程的硬件电路。可以从程序源向每个计算机中安装计算机程序。程序源可以例如是程序分发服务器或者存储介质。
[0107] 实施例1
[0108] 存储系统的配置
[0109] 下文描述存储系统的配置作为本发明的应用的示例。
[0110] 图1示出了存储系统的配置。存储系统具有控制器100和耦合到控制器100的存储单元200。在该图中,控制器100和存储单元200通过BE-I/F(后端接口)141来相互耦合。
[0111] 存储单元200具有多个(或者一个)FMPK(闪存包)114。在存储单元200中采用的物理存储介质是具有非易失性半导体存储器(例如,闪存)的存储器驱动(例如,SSD(固态驱动))。一个或者多个RAID(廉价(或者独立)盘冗余阵列)组145由多个FMPK114配置。在本实施例中,控制器100使用多个FMPK来形成RAID级5的RAID组。另外,在本实施例中,在单个RAID组中包括的FMPK耦合到不同总线。在RAID组由耦合到单个总线的多个FMPK配置的情况下,如果故障在总线中出现,则FMPK都未变成可访问;因此,不能恢复数据。然而,RAID组可以由耦合到相同总线的FMPK配置。
[0112] 一个或者多个主机计算机30和管理计算机20耦合到控制器100。控制器100和主机计算机30通过预定通信网络(例如,SAN(存储区域网络))来相互耦合。控制器100和管理计算机20通过预定通信网络(例如,包括交换机或者LAN(局域网))150来相互耦合。
[0113] 控制器100由各种包(PK)组成,这些包比如是FEPK(前端包)110、MPPK(微处理器包)120、CMPK(高速缓存存储器包)130和BEPK(后端包)140。在图1中所示的示例中,多个各种包(PK)被复用,但是多个类型的PK中的至少一个类型的PK可以单数存在。FEPK 110、MPPK 120、CMPK(高速缓存存储器包)130和BEPK 140通过预定通信网络(例如,包括交换机)150来相互耦合。
[0114] FEPK 110具有一个或者多个FE-IF(前端接口)111、传送电路112和缓冲器113。FE-I/F 110是与在主机计算机30的前端存在的通信设备等通信的接口设备。例如,FE-I/F 111从主机计算机30接收I/O请求(写入请求或者读取请求)、在缓冲器113中暂时地存储接收的I/O请求并且经由传送电路112向MPPK 120传送I/O请求。FEPK 110可以具有控制设备,比如CPU。缓冲器113例如是易失性半导体存储器。缓冲器113也可以是非易失性半导体存储器。
[0115] BEPK 140具有一个或者多个BE-I/F 141、传送电路142和缓冲器143。BE-I/F 141是与FMPK 144通信的接口设备。例如,BE-I/F 141从FMPK 144读取数据并且在缓冲器143中暂时地存储数据。传送电路142向CMPK 130发送从FMPK 144向缓冲器143写入的数据。传送电路142也向缓冲器143中写入从CMPK 130读取的数据。BE-I/F 141向FMPK 144发送向缓冲器143写入的数据。BEPK 140可以具有控制设备,比如CPU。BEPK 140也可以是在控制设备与存储设备之间的接口,比如盘适配器。缓冲器143例如是易失性半导体存储器。缓冲器143也可以是非易失性半导体存储器。
[0116] MPPK 120具有多个(或者一个)微处理器(下文为“MP”)121和通过内部路径123耦合到MP 121的一个或者多个LM(本地存储器)122。MP 120处理从FE-I/F 111发送的I/O请求。每个LM 122存储在SM(共享存储器)132中存储的管理信息的必需部分或者存储由MP 121执行的计算机程序。在根据本实施例的系统配置中。MPPK 120通过其内部网络耦合到FEPK 110、CMPK 130和BEPK140。因此,MPPK 120可以控制与PK(MPPK 120、FEPK 110、CMPK130和BEPK 140)一起的数据传送以及向FEPK 110的缓冲器113、CMPK 130的CM 131和SM 132以及BEPK 140的缓冲器143传输的数据的存储/删除。
[0117] CMPK 130具有CM 131和SM 132。CM 131和SM 132例如是易失性半导体存储器。至少CM 131或者SM 132可以是非易失性存储器。
[0118] CM 131具有用于暂时地存储用于存储介质的I/O目标数据的存储区域。SM 132具有各条管理信息(在由存储系统执行的操作中使用的各条信息)和计算机程序被存储在其中的存储区域。
[0119] BEPK 140的缓冲器143存储从CM 131读取的并且向FMPK 144传输的数据。一般而言,缓冲器具有比CM更小的容量。缓冲器保持与一个某个过程(例如,I/O过程)有关的数据直至该过程完成。换言之,一旦完成系一列过程就删除在缓冲器中存储的数据。在另一方面,在CM中存储的数据即使在某个I/O过程完成之后仍然基本上未被删除并且只要CM具有足够容量就保留在CM上。另外,在另一I/O过程中重用数据。在CM中存储与I/O过程有关的数据;然而,与I/O过程异步地删除数据。例如,在删除在CM中存储的数据时,可以从已经被存储最长时间段的在时间上最旧的数据或者从具有最旧上次访问时间的数据开始删除数据。在CM中的区域和在CM中存储的数据由MPPK、FEPK和BEPK使用;因此对CM施加大量负荷。
[0120] FC(光纤信道)、SAS(串行附着SCSI)或者SATA(串行ATA)中的至少一个类型可以是这些部件的接口。
[0121] 管理计算机20例如是具有显示设备和输入设备的计算机。例如,管理计算机20响应于管理员对SVP(服务处理器)的操作来传输用于在存储系统上建立各种设置的命令。SVP 110响应于来自管理员的命令来更新在SM 132中存储的管理信息并且在SM 132中设置信息。管理信息包括指示在CM 131内的用于存储数据的区域的区域信息和指示系统在写入过程期间的多个状态之一的过程阶段信息。
[0122] 图2示出了FMPK 144之一的配置示例。FMPK 144具有通信接口设备、存储设备以及耦合到通信接口设备和存储设备的控制设备。通信接口例如是耦合到通信网络的端口1441和耦合到FM 1443的盘I/F 1446。FM控制器1447包括端口1441、逻辑运算电路1442、CPU144、存储器1445和盘I/F 1446。
[0123] 存储设备例如是存储器1445和FM(闪存)1443。控制设备例如是CPU 1444。除了比如CPU 1443这样的处理器之外,控制设备还可以包括执行预定过程(例如,压缩、扩展、加密或者解密)的专用硬件电路。专用硬件电路例如是计算奇偶校验或者中间奇偶校验的逻辑运算(例如,XOR(异或)运算)电路1442。逻辑运算电路1442在以下描述中被称为“XOR电路1442”。
[0124] FM 1443是数据以页面为单位被写入到其中/从其被读取的或者数据以单位在其中被擦除的非易失性半导体存储器(通常为NAND型FM芯片)。FM包括多个块,多个块中的每个块包括多个页面。在重写在FM 1443中存储的数据时,不能在先前数据被存储在其中的物理区域(物理页面)上改写数据。因此,在FM控制器1447接收将被更新成在某个物理页面中存储的数据的数据时,向另一物理页面写入接收的数据。在这样做时,更新逻辑页面地址和物理页面地址的映射。然后,FM控制器1447禁用在更新之前的数据以获得禁用的数据并且作为启用的数据管理更新的数据。擦除禁用的数据被存储在其中的物理页面。启用的数据被存储在其中的物理页面与逻辑页面关联,但是禁用的数据被存储在其中的物理页面不与逻辑页面关联。在FM 1443中,为了重写在某个物理区域中存储的数据,需要以块为单位对在物理区域中的数据执行擦除过程(下文为“块擦除”)。可以清空受到擦除过程的块,从而使得可以向其重写数据。FM 1443可以不仅是闪存而且还是WORM存储器(例如,相变存储器)。FM控制器1447执行回收过程。在回收过程中,FM控制器1447将在某个块中存储的启用的数据(与逻辑页面关联的数据)复制到另一个块、禁用复制源块的启用的数据并且擦除这一个块。FM控制器147然后以块为单位擦除数据。
[0125] 在FMPK 144的存储器1445中存储指针表,该指针表关联从控制器100访问的逻辑页面与在FM 1443以内的物理页面。存储器1445可以暂时地已经在其中存储从控制器100获得的数据。存储器1445例如是易失性半导体存储器。存储器1445也可以是非易失性半导体存储器。
[0126] 接着描述使用多个FMPK 144的RAID组。
[0127] 控制器100从多个FMPK 144(见图1)创建RAID级5的RAID组。控制器100从创建的RAID组的地址空间向多个逻辑卷(LU:逻辑单位)分配连续区域。
[0128] 控制器100分配跨越在多个FMPK 144上的地址空间延伸的条线。在多个FMPK 144上的配置条线的地址空间包括具有在其中存储的用户数据的地址空间和具有在其中存储的奇偶校验数据的一个地址空间。例如,控制器100对于每个条线向多个FMPK 144中的每个FMPK分配FMPK编号并且移位向用户数据和奇偶校验数据分配的FMPK编号。控制器100向LM 122中写入与每个RAID组和LU有关的信息。
[0129] 在下文中,在向RAID组分配的多个FMPK 144之中,存储由写入命令指示的用户数据的FMPK 144被称为“数据FMPK 144A”,并且存储基于用户数据的奇偶校验数据的FMPK 144被称为“奇偶校验FMPK 144P”
[0130] 存储系统10能够根据来自主机计算机30的写入请求来执行读取-修改-写入过程。读取-修改-写入过程是用于仅更新在某个条线中的单个FMPK 144的逻辑区域(块或者页面)中存储的用户数据的写入过程。
[0131] 在以下描述中,在由写入请求指明的逻辑区域中的在更新之前的用户数据被称为“旧用户数据”,在逻辑页面中的在更新之后的用户数据被称为“新数据”,基于旧用户数据的在更新之前的奇偶校验数据被称为“旧奇偶校验”,并且基于新用户数据的在更新之后的奇偶校验数据被称为“新奇偶校验”。在以下描述和附图中,旧用户数据被称为“oD”,新用户数据被称为“nD”,旧奇偶校验被称为“oP”,并且新奇偶校验被称为“nP”。此外,用“+”标记XOR算法
[0132] 例如,在读取-修改-写入过程中,通过对旧数据和新数据执行的XOR运算来生成中间奇偶校验,并且通过对中间奇偶校验和旧奇偶校验执行的XOR运算来生成新奇偶校验。在以下描述和附图中,中间奇偶校验被称为“mP”。换言之,从(oD+nD)计算mP,并且从(oP+mP)计算nP。
[0133] 接着描述FMPK 144的奇偶校验计算功能的设置。
[0134] 在以下实施例中,具有逻辑运算电路1442的FMPK 144根据来自控制器100的指令执行用于生成中间奇偶校验和奇偶校验的奇偶校验计算。控制器100(MPPK 120、BEPK 140、FEPK 110和CMPK130中的任何一项或者多项)可以具有逻辑运算函数。在FMPK 144和控制器100二者均具有逻辑运算函数的情况下,可以基于用户操作来确定逻辑运算函数中的哪个逻辑运算函数应当用来计算中间奇偶校验和/或奇偶校验。
[0135] 在这一情况下,管理计算机20可以显示用于设置FMPK 144的奇偶校验计算功能的菜单屏幕。图3示出了菜单屏幕。这一菜单屏幕G100具有FMPK设置字段G101、逻辑卷设置字段G104、保存按钮B10和取消按钮B11。
[0136] FMPK设置字段G101是用于设置FMPK 144的XOR函数的可用性的录入字段。FMPK设置字段G101具有用于输入FMPK 144的XOR函数的启用状态或者禁用状态的GUI,比如单选按钮G102。
[0137] 逻辑卷设置字段G104在通过FMPK设置字段G101将FMPK 144的XOR函数设置为启用时变成启用。逻辑卷设置字段G104具有逻辑卷编号显示字段G105和XOR函数设置字段G106。逻辑卷编号显示字段G105显示由FMPK 144创建的逻辑卷编号。XOR函数设置字段G106是用于关于在逻辑卷编号显示字段G105上显示的逻辑卷设置FMPK 144的XOR函数的可用性的录入字段。XOR函数设置字段G106是用于输入逻辑卷的XOR函数的启用状态或者禁用状态的GUI,比如单选按钮。
[0138] 保存按钮B10是用于保存向菜单屏幕G100输入的设置并且然后关闭菜单屏幕G100的按钮。取消按钮B10是用于丢弃向菜单屏幕G100输入的设置并且然后关闭菜单屏幕G100的按钮。
[0139] 在为某个逻辑卷将FMPK 144的XOR函数设置为启用的情况下,FMPK 144的XOR电路1442在用于逻辑卷的写入过程期间生成中间奇偶校验或者新奇偶校验。在为某个逻辑卷将FMPK 144的XOR函数设置为禁用时,控制器100在用于逻辑卷的写入过程期间生成中间奇偶校验或者新奇偶校验。
[0140] 以这一方式,用户可以设置FMPK 144的XOR函数的可用性和为每个逻辑卷设置FMPK 144的XOR函数的可用性。根据以上描述,向逻辑卷的所有区域预先分配基于RAID组的存储区域。然而,根据精简配置的逻辑卷(虚拟卷)可以应用于逻辑卷。未向虚拟卷预先分配用于存储数据的存储区域;然而,响应于关于虚拟卷的写入请求来按照预定单位向虚拟卷分配存储区域。在写入请求被以存储区域被分配到的虚拟卷的区域为目标的情况下,无需分配存储区域。控制器100的MPPK 120分配存储区域并且管理分配的或者未分配的区域。
[0141] 根据实施例1的写入过程
[0142] 下文现在描述正常写入过程。
[0143] 这里描述存储系统10基于来自主机计算机30的写入命令来执行读取-修改-写入过程。读取-修改-写入过程更新至少在由FMPK144创建的RAID组内的单个页面中存储的数据。
[0144] 在这一实施例中,除了正常写入命令和正常读取命令之外,还将新数据传输命令、中间奇偶校验接收命令、中间奇偶校验传输命令和新数据提交命令定义作为从控制器100向FMPK 144发送的I/O命令。
[0145] 图4示出了根据实施例1的写入过程。这一幅图和后续序列图示出了主机计算机30、控制器100、数据FPMK 144A和奇偶校验FMPK 144P的操作。在这一序列图中的更高序列(在S2350之前的操作)中的操作目标是SM 132、MP 121、CM 131、FEPK 110的缓冲器113、FEPK 110的I/F 111和主机计算机30。在序列图中的更低序列(在S2350之后的操作)中的操作目标是SM 132、MP 121、CM 131、BEPK 140的缓冲器143、BEPK 140的I/F 141、数据FMPK 
144A的端口1441、数据FMPK 144A的XOR电路1442、数据FMPK 144A的存储介质DFa和DFb、奇偶校验FMPK 144P的端口1441、奇偶校验FMPK 144P的XOR电路1442以及奇偶校验FMPK 144P的存储介质PFa和PFb。
[0146] 这里,数据FMPK 144A的存储介质DFa代表FM 1443的存储器1445。存储介质DFb代表FM 1443的物理页面。另外,数据FMPK 144A的存储介质DFa代表FM 1443的存储器1445。存储介质DFb代表FM 1443的物理页面。奇偶校验FMPK 144P的存储介质PFa代表奇偶校验FM 1443的存储器1445。存储介质PFb代表在奇偶校验FM 1443以内的物理页面。
[0147] 在这一序列图中,在每个操作目标的操作(生命线)以下示出在写入过程中对操作目标中的每个操作目标的访问数目。
[0148] 在数据FMPK 144A中,DFb是存储在写入过程之前的旧用户数据的物理页面,并且DFa是存储在写入过程之后的新用户数据的与DFb不同的物理页面。在奇偶校验FMPK 144P中,PFb是存储在写入过程之前的旧奇偶校验的与PFb不同的物理页面,并且PFa是存储在写入过程之后的新奇偶校验的物理页面。
[0149] 出于例示的目的,下文将存储系统10在写入过程中的状态称为“系统状态”。下文定义存储系统10的一些系统状态。如将随后描述的那样,可以通过根据系统状态改变在出现故障时执行的过程来避免在出现故障时的数据丢失。
[0150] 首先,主机计算机30向存储系统10的控制器100发送用于将旧用户数据更新成新用户数据的写入命令。
[0151] 图5示出了根据实施例1的、由MP 121在接收写入命令时执行的操作。接着,MP 121从主机计算机30接收写入命令(S2110)。MP 121然后保护在FEPK 110的缓冲器113中的用于向其写入新用户数据的区域(S2120)。MP 121然后向主机计算机30传输写入预备完成(S2130)。
[0152] 在图4中所示的控制器100中,FEPK 110的I/F 111向在S2120中保护的在缓冲器113中的区域中写入从主机计算机获得的新数据。
[0153] 图6示出了根据实施例1的、由MP 121在执行向FEPK 110的缓冲器113中写入之后执行的操作。随后,主机计算机30向MP 121通知向缓冲器113中写入完成(S2210)。MP 121然后保护在两个CMPK 130的CM 131中的用于向其写入新用户数据的区域(S2220)。MP 121然后向FEPK 110传输用于向两个CM 131的保护的区域中写入新用户数据的写入指令(S2230)。
[0154] 在图4中所示的控制器100中,FEPK 110的传送电路112复制在缓冲器113中存储的新用户数据并且向在S2230中保护的、两个CM 131的区域中写入所得数据。
[0155] 图7示出了根据实施例1的、由MP 121在执行向CM 131中写入新用户数据之后执行的操作。随后,FEPK 110向MP 121通知向两个CM 131中写入完成(S2310)。MP 121然后向在与两个CM 131对应的两个SM 132中存储的区域信息项中写入值(在CM上的地址),这些值指示新用户数据被存储在其中的、两个CM 131的区域(S2320)。MP 121然后向在与两个CM 131的区域对应的两个SM 132中存储的过程阶段信息项中写入指示奇偶校验生成前阶段的值(S2330)。MP 121然后在SM 132中的奇偶校验生成前队列中注册这一奇偶校验生成前阶段(S2340)。随后,MP 121指令FEPK 110释放新用户数据被存储在其中的缓冲器113(S2345)。MP 121然后向主机计算机30通知写入命令的正常结束(S2350)。MP 121为对新用户数据执行的每个写入过程在SM上存储区域信息项和过程步骤信息项。在故障在MP中出现时,使其它MP能够通过参考过程步骤信息项来接管写入过程。
[0156] 在这一时刻的系统状态被称为“状态1”。
[0157] 图8示出了根据实施例1的、由MP 121在获得写入命令响应之后执行的操作。随后,一旦MP 121检测到有在奇偶校验生成前队列中的注册(S2410),MP 121就保护在BEPK 140的缓冲器143中的用于向其写入新用户数据的区域(S2420)。MP 121然后向BEPK 140传输用于从CM 131之一读取新用户数据的指令(S2430)。
[0158] 在图4中所示的控制器100中,BEPK 140的传送电路142从CM131读取新用户数据并且向缓冲器143中写入新用户数据。
[0159] 图9示出了根据实施例1的、由MP 121在执行向BEPK 140的缓冲器143中写入之后执行的操作。随后,一旦MP 121被BEPK 140通知读取完成(S2510)并且向数据FMPK 144A传输用于写入新用户数据的新数据传输命令(S2530)。这一新数据传输命令指明存储旧用户数据的逻辑页面的逻辑页面并且伴随新用户数据。
[0160] 在这一时刻,BEPK 140的I/F 141从缓冲器143读取新用户数据并且向数据FMPK 144A发送新用户数据。
[0161] 接着,在图4中所示的数据FMPK 144A中,CPU 1444经由端口1441接收新用户传输命令和新用户数据、向FM 1443的DFa中写入新用户数据并且向控制器100通知新数据传输命令的正常结束。这里,在FMPK 1443中,在与某个逻辑页面地址关联的物理页面中存储和保持新用户数据和旧用户数据。在物理页面中保持存储的新用户数据和旧用户数据至少直至基于存储的新用户数据和旧数据生成并且然后向物理页面写入了新奇偶校验。
[0162] 在这一时刻的系统状态被称为“状态2”。
[0163] 图10示出了根据实施例的、由MP 121在新数据传输命令的正常结束之后执行的操作。随后,一旦数据FMPK 144A向MP 121通知新数据传输命令的正常结束(S2610),MP 121就保护BEPK 140的缓冲器143的存储区域(S2620)并且向数据FMPK 144A传输用于使数据FMPK 144A生成中间奇偶校验并且获取中间奇偶校验的中间奇偶校验接收命令(S2630)。这一中间奇偶校验接收命令指明存储旧用户数据的逻辑页面的逻辑页面。
[0164] 在图4中所示的数据FMPK 144A中,CPU 1444经由端口1441接收中间奇偶校验接收命令、从DFb读取旧用户数据、从DFa读取新用户数据并且向XOR电路1442发送旧用户数据和新用户数据。XOR电路1442根据旧用户数据和新用户数据计算中间奇偶校验。CPU 1444通过端口1441向BEPK 140通知中间奇偶校验接收命令的正常结束并且向控制器100发送中间奇偶校验。
[0165] 接着,在图4中所示的控制器100中,BEPK 140的I/F 141向在S2620中保护的缓冲器143的存储区域中写入从数据FMPK 144A接收的中间奇偶校验。
[0166] 图11示出了根据实施例1的、由MP 121在中间奇偶校验接收命令的正常结束之后执行的操作。一旦FMPK 144A向MP 121通知中间奇偶校验接收命令的正常结束(S3110),MP 121就向奇偶校验FMPK 144P发送用于根据中间奇偶校验生成新奇偶校验并且写入新奇偶校验的中间奇偶校验传输命令(S3120)。这一中间奇偶校验传输命令指明存储旧奇偶校验的逻辑页面的逻辑页面并且伴随中间奇偶校验。
[0167] 在这一时刻,BEPK 140的I/F 141从缓冲器143读取中间奇偶校验并且向奇偶校验FMPK 144P发送中间奇偶校验。这里,MP 121向BEPK 140的缓冲器143中存储从数据FMPK 144A读取的中间奇偶校验并且然后向奇偶校验FMPK传送中间奇偶校验而未在CM 131中存储中间奇偶校验。由于在传送中间奇偶校验时未使用CM 131,所以可以减少对CM 131施加的负荷,从而改进存储系统的性能。另外,由于每个FMPK 144耦合到在缓冲器143附近的定位,所以可以高效地传送中间奇偶校验。
[0168] 接着,在图4中所示的奇偶校验FMPK 144P中,CPU 1444经由端口1441接收中间奇偶校验传输命令和中间奇偶校验、从PFb读取旧奇偶校验并且向XOR电路1442发送旧奇偶校验和中间奇偶校验。XOR电路1442根据旧奇偶校验和新奇偶校验计算新奇偶校验。CPU 144向PFa中写入新奇偶校验并且向控制器100通知中间奇偶校验传输命令的正常结束。
[0169] 在这一时刻的系统状态被称为“状态3”。
[0170] 图12示出了根据实施例1的、由MP 121在中间奇偶校验传输命令的正常结束之后执行的操作。随后,一旦奇偶校验FMPK 144P向MP 121通知中间奇偶校验传输命令的正常结束(S3210),MP 121就向在上述两个SM 132中存储的过程阶段信息项中写入指示奇偶校验生成后阶段的值(S3220)。在这一时刻的系统状态被称为“状态4”。接着,MP 121指令BEPK 140释放中间奇偶校验被存储在其中的缓冲区域。MP 121然后向数据FMPK 144A发送新数据提交命令(S3230)。新数据提交命令指明存储旧用户数据的逻辑页面的逻辑页面。
[0171] 接着,在图4中所示的数据FMPK 144A中,CPU 1444经由端口1441接收新数据提交命令、将新用户数据确定为在更新之后的用户数据并且向控制器100通知新数据提交命令的正常结束。作为结果,可以基于从控制器100发送的正常写入命令和正常读取命令访问新用户数据。
[0172] 在这一时刻的系统状态被称为“状态5”。
[0173] 图13示出了根据实施例1的、由MP 121在向数据FMPK 144A传输的新数据提交命令的正常结束之后执行的操作。一旦数据FMPK144A向MP 121通知新数据提交命令的正常结束(S3310),MP 121就向奇偶校验FMPK 144P发送新数据确定(S3320)。这一新数据提交命令指明存储旧奇偶校验的逻辑页面。作为结果,可以基于从控制器100发送的正常写入命令和正常读取命令访问新用户数据。新数据提交命令向数据FMPK 144A的传输和新数据提交命令向奇偶校验FMPK 144P的传输可以按照相反顺序出现。
[0174] 接着,在图4中所示的奇偶校验FMPK 144P中,CPU 1444经由端口1441接收新数据提交命令、将新奇偶校验确定为在更新之后的奇偶校验并且向控制器100通知新数据提交命令的正常结束。
[0175] 在这一时刻的系统状态被称为“状态6”。
[0176] 图14示出了根据实施例1的、由MP 121在向奇偶校验FMPK 144P传输的新数据提交命令的正常结束之后执行的操作。一旦奇偶校验FMPK 144P向MP 121通知新数据提交命令的正常结束(S3410),MP 121就清空过程阶段信息项被存储在其中的两个SM 132的区域(S3420)并且结束写入过程。
[0177] 在这一时刻的系统状态被称为“状态7”。
[0178] 以上是写入过程。在括号中指示对CM的访问数目。
[0179] 在这一写入过程中,复制并且向CMPK 120的CM 121中写入(两次)并且从另一CM 121读取、然后从CM 121向BEPK 140的缓冲器143发送来自主机计算机30的新用户数据。向缓冲器143写入并且从缓冲器143向数据FMPK 144A发送来自CM 121的新用户数据。向缓冲器143写入并且从缓冲器143向奇偶校验FMPK 144P发送来自数据FMPK 144A的中间奇偶校验。由于这一点,对CM 131的访问数目在单个写入过程中变成三倍,因此可以减少对CM 131的访问数目。
[0180] 如以上描述的那样,FMPK 144执行奇偶校验计算并且控制器100从缓冲器143向奇偶校验FMPK 144P发送中间奇偶校验而未向CM 131中写入从数据FMPK 144A接收的中间奇偶校验。作为结果,可以减少对在存储控制器中的MP和CM施加的负荷,从而改进存储系统的写入过程性能。
[0181] 出于比较目的,现在描述控制器100在常规写入过程中使用CM 121来对RAID 5执行奇偶校验计算的情况。在这一情况下,控制器100复制从主机计算机获得的新用户数据、向CM中写入所得数据(两次)、从数据FMPK 144A获取旧用户数据、向CM 121中写入旧用户数据(一次)、从奇偶校验FMPK 144P获取旧奇偶校验并且向CM 121中写入旧奇偶校验(一次)。另外,控制器100读取在CM 121中存储的旧用户数据、新用户数据和旧奇偶校验(三次)以计算新奇偶校验、复制新奇偶校验并且向两个CM 121中写入所得奇偶校验(两次)、读取在CM 
121中存储的新用户数据(一次)、向数据FMPK 144A中写入新用户数据、读取在CM 121中存储的新奇偶校验(一次)并且向奇偶校验FMPK 144P中写入新奇偶校验。在这一情况下,在单个写入过程中对CM 131的访问数目是十一。
[0182] 在这一实施例中,可以通过使用BEPK 140的位于FMPK 144附近的缓冲器143来高效地传送中间奇偶校验。
[0183] 另外,RAID 5由耦合到不同总线的多个FMPK 144配置以便在系统故障时维持冗余配置。允许多个FMPK 144共享BEPK 140的缓冲器可以维持冗余配置并且使用缓冲器来传送中间奇偶校验。根据这一实施例,可以通过在两个CMPK 120中存储新用户数据并且向SM 132中存储与新用户数据对应的过程阶段信息项来改进存储系统10的可靠性。
[0184] 可以在互不相同的包中提供具有在其中存储的新用户数据的CM 131和具有在其中存储的与新用户数据对应的过程阶段信息的SM 132。另外,在存储器1445中存储但是可以在FM 1443中存储FMPK 144的指针表。
[0185] 根据实施例1的转变写入过程
[0186] 下文描述在出现MP故障时执行的转变写入过程。
[0187] 接管写入过程是在写入过程期间在故障在MP 121中出现时出现的过程。在这一情况下,无故障的其它MP 121执行接管写入过程的转变写入过程。在写入过程期间,无故障的MP 121可以识别过程阶段信息项,因为在两个SM 132中存储过程阶段信息项,并且根据过程阶段信息项执行适当转变写入过程。如果丢失过程阶段信息项,则数据丢失出现。数据丢失是丢失并且因此不能恢复主机计算机的写入数据的情形。数据丢失不是用于存储系统的有利条件。因此,复制和存储过程阶段信息项。另外,执行下文描述的转变写入过程以便避免在出现MP故障时引起的数据丢失。
[0188] 现在描述转变写入过程。图15示出了根据实施例1的、由MP 121在出现MP故障时执行的操作。首先,无故障的MPPK 120的MP 121检测到在其它MPPK 120中出现故障(S3610)。MP 121然后选择SM 132中的未从多个SM 131之中搜索的SM 132(S3620)、搜索这一SM 132并且确定是否从搜索到的SM 132检测到过程阶段信息项的奇偶校验生成前阶段(S3630)。
[0189] 在检测到奇偶校验生成前阶段(S3630,是)时,MP 121基于在SM 132中存储的区域信息来在SM 132的奇偶校验生成前队列中注册奇偶校验生成前阶段(S3640)并且使过程进展到S3670。
[0190] 在另一方面,在未检测到奇偶校验生成前阶段(S3630,否)时,MP 121确定是否从搜索到的SM 132检测到过程阶段信息项的奇偶校验生成后阶段(S3650)。
[0191] 在检测到奇偶校验生成后阶段(S3650,是)时,MP 121基于在SM 132中存储的区域信息来在SM 132中存储的奇偶校验生成后队列中注册这一奇偶校验生成后阶段(S3660)并且使过程进展到S3670。
[0192] 在未检测到奇偶校验生成后阶段(S3650,否)时,MP 121结束这一过程流程。
[0193] 在S3640和S3660之后,MP 121确定是否完成搜索所有SM 132(S3670)。在未完成搜索所有SM 132(S3670,否)时,MP 121使过程进展到S3620。在完成搜索所有SM 132(S3670,是)时,MP 121结束这一过程流程。
[0194] 由MP 121在有在奇偶校验生成前队列中的注册时执行的操作与以上描述的S2410至S2430相同。换言之,MP 121在CM 131中存储的新用户数据被传送到BEPK 140的阶段接管过程。
[0195] 图16示出了根据实施例1的、由MP 121在有在奇偶校验生成后队列中的注册的情况下执行的操作。一旦MP 121检测到有在奇偶校验生成后队列中的注册(S3710),MP 121就向数据FMPK 144A发送新数据提交命令(S3720)。具体而言,在有在SM 132中的任何SM 132的奇偶校验生成后队列中的注册时,MP 121与正常写入过程的情况一样从新数据提交命令被传输到数据FMPK 144A的点接管写入过程。
[0196] 以这一方式,无故障的MP 121可以取决于在SM 132中存储的过程阶段信息项的类型从具有故障的MP 121接管写入过程。
[0197] 根据实施例1的转变写入过程的具体示例。
[0198] 现在描述在出现MP故障时执行的转变写入过程的若干具体示例。
[0199] 根据实施例1的转变写入过程的第一具体示例
[0200] 这里描述在奇偶校验生成前阶段中出现MP故障时执行的转变写入过程。
[0201] 图17示出了根据实施例1的、在奇偶校验生成前阶段中出现MP故障时执行的转变写入过程。在这一序列图中示出的操作的关键组成与在与正常写入过程有关的序列图中示出的关键组成相同。
[0202] 一旦无故障的MP 121确认过程阶段信息项指示奇偶校验生成前阶段,无故障的MP 121就如在以上描述的正常写入过程中那样向数据FMPK 144A发送新数据传输命令(S2530)。因而,数据FMPK 144A向Dfa中写入新用户数据(存储器1445)。
[0203] 接着,在控制器100中,MP 121如在正常写入过程中那样向数据FMPK 144A发送中间奇偶校验接收命令(S2630)。因而,数据FMPK 144A计算中间奇偶校验并且向控制器100发送中间奇偶校验。因而,BEPK 140向缓冲器143中写入中间奇偶校验。
[0204] 在控制器100中,MP 121然后如在正常写入过程(S3120中)那样向奇偶校验FMPK 144P发送中间奇偶校验传输命令。因而,奇偶校验FPMK 144P计算新奇偶校验并且向PFa(存储器1445)中写入新奇偶校验。
[0205] 随后,在控制器100中,MP 121如在正常写入过程中那样向数据FMPK 144A发送新数据提交命令(S3230)。因而,数据FMPK 144A将新用户数据确定为在更新之后的用户数据。
[0206] 在控制器100中,MP 121然后如在正常写入过程中那样向奇偶校验FMPK 144P发送新数据提交命令(S3320)。因而,奇偶校验FMPK 144P将新奇偶校验确定为在更新之后的奇偶校验。
[0207] 以上是转变写入过程。
[0208] 由于在SM 132中记录了过程阶段,所以无故障的另一MP 121可以在某个MP 121中出现故障时接管写入过程。在过程阶段信息项指示在出现MP故障时的奇偶校验生成前阶段时,无故障的另一MP 121在新用户数据从CM 131被传送到BEPK 140的阶段接管写入过程。
[0209] 根据实施例1的转变写入过程的第二具体示例
[0210] 这里描述在奇偶校验生成后阶段中出现MP故障时执行的转变写入过程。
[0211] 图18示出了根据实施例1的、在奇偶校验生成后阶段中出现MP故障时执行的转变写入过程。在这一序列图中示出的操作的操作目标与在与正常写入过程有关的序列图中示出的操作目标相同。一旦无故障的MP 121确认过程阶段信息项指示奇偶校验生成后阶段,无故障的MP 121就如在正常写入过程中那样向数据FMPK 144A发送新数据提交命令(S3230)。因而,数据FMPK 144A将新用户数据确定为在更新之后的用户数据。
[0212] 在控制器100中,MP 121然后如在正常写入过程中那样也向奇偶校验FMPK 144P发送新数据提交命令(S3320)。因而,奇偶校验FMPK 144P将新奇偶校验确定为在更新之后的奇偶校验。
[0213] 以上是转变写入过程。
[0214] 如以上描述的那样,在SM 132中记录过程阶段信息项可以允许另一MP即使在某个MP中出现故障时仍然接管写入过程。在过程阶段信息项指示在出现MP故障时的奇偶校验生成后阶段时,无故障的另一MP 121在确定在数据FMPK 144A中存储的新用户数据的阶段接管写入过程。在过程阶段信息项指示奇偶校验生成后阶段时,不必从CM 131重新传送用户数据,因为新用户数据存在于FMPK 144A中。换言之,这一转变写入过程未引起对CM 131的附加访问。
[0215] 根据实施例1的在写入过程中的FMPK状态
[0216] 下文将奇偶校验FMPK 144P在写入过程期间的状态称为“FMPK状态”,并且下文描述“FMPK状态1”和“FMPK状态2”。图19示出了根据实施例1的FMPK状态1。图20示出了根据实施例1的FMPK状态2。
[0217] 在FMPK 144的操作的以下描述中,在数据FMPK 144A中存储的旧用户数据和在奇偶校验FMPK 144P中存储的旧奇偶校验被称为“旧数据”。在数据FMPK 144A中存储的新用户数据和在奇偶校验FMPK 144P中存储的新奇偶校验称为“新数据”。换言之,下文描述的FMPK 144的操作可以应用于数据FMPK 144A的操作和奇偶校验FMPK 144P的操作。另外,附加数据指示转变写入过程从控制器100向FMPK 144重新传输的新用户数据。使用FMPK 144来描述主要由FMPK 144的CPU 1444执行的操作。
[0218] 在每个FMPK 144的存储器1445中存储指针表1447,该指针表1447关联从控制器100访问的逻辑页面与在FM 1443以内的一些物理页面。指针表1447包括物理页面与在FMPK 
144内的所有逻辑页面的对应关系。在以下描述中,在每个FMPK 144内的逻辑页面之中,由从控制器100向FMPK 144发送的命令指明的逻辑页面被称为“目标逻辑页面”,在存储器
1445中所示的指针表1447中的条目之中,用于目标逻辑页面的条目被称为“目标条目
1446”。
[0219] 目标条目1446具有用于逻辑页面地址(该逻辑页面地址是指明目标逻辑页面的逻辑地址(例如,LBA:逻辑块地址)的字段、用于旧物理页面地址(该旧物理页面地址是指明旧物理页面的物理地址)的字段和用于新物理页面地址(该新物理页面地址是与以上提到的物理页面不同的物理页面并且将新物理页面指明为用于旧物理页面的候选)的字段。在该图和以下描述中,在目标条目1446中,逻辑页面地址被称为“LA”,旧物理页面地址称为“oPA”,并且新物理页面地址称为“nPA”。在该图和以下描述中,逻辑页面地址的值被描述为“LBA xxx”,并且旧物理页面地址和新物理页面地址的值被描述为“p0”、“p1”和“p2”。
[0220] 在该图中,从在目标条目1446中存储的物理页面地址引向FM1443内部的箭头代表指针,该指针指示这一物理页面地址指示由箭头指向的物理页面。在箭头是以虚线的形式时,它意味着删除箭头的指针。
[0221] 在FMPK 144从控制器100接收用于目标物理页面的正常写入命令和正常读取命令的情况下,FMPK 144基于指针表的目标条目1446来关联目标逻辑页面与旧物理页面以访问旧物理页面。换言之,仅对旧物理页面执行来自控制器100的正常访问。
[0222] 目标条目1446可以具有在其中存储的指示逻辑页面的逻辑页面编号以取代逻辑页面地址。目标条目1446可以具有在其中存储的指示旧物理页面的物理页面编号以取代物理页面地址。目标条目1446可以具有在其中存储的指示新物理页面的物理页面编号以取代新物理页面地址。指针表由CPU 1444管理和更新。
[0223] 在以下描述中,在FMPK 144向目标条目1446的旧物理页面地址或者新物理页面地址中注册用于存储数据的物理地址的值时,这一操作被称为用于数据的“指针连接”。此外,在FMPK 144将在目标条目1446的旧物理页面地址或者新物理页面地址中注册的值改变成具有其它数据的物理页面的物理地址的值时,这一操作被称为用于数据的“指针替换”。在FMPK 144删除在目标条目1446的旧物理页面地址或者新物理页面地址中注册的值时,这一操作被称为用于数据的“指针删除”。这些操作意味着CPU 1444更新指针表的目标条目1446。
[0224] 在“FMPK状态1”中,在旧物理页面中存储旧数据。在目标条目1446中存储逻辑页面地址和旧物理页面地址。在FMPK状态2中,在旧物理页面中存储旧数据,并且在新物理页面中存储新数据。在目标条目1446中存储逻辑页面地址、旧物理页面地址和新物理页面地址。在“FMPK状态1”中,旧数据是启用的数据。在“FMPK状态2”中,新数据和旧数据是启用的数据。在“FMPK状态2”中执行回收过程的情况下,由于新数据和旧数据是启用的数据,所以从分别存储新数据和旧数据的块向其它空块复制新数据和旧数据。FM控制器1447可以用如下方式执行控制,该方式为未回收包括在奇偶校验计算期间获得的新数据和/或旧数据的块。
无论哪种方式,FM控制器1447直至接收新数据提交命令才擦除旧数据。以这一方式,可以在出现故障时执行的过程中生成中间奇偶校验,下文描述该过程。接着描述指针表的目标条目。FM控制器1447可以对多个条目(逻辑页面)并行执行奇偶校验计算过程和读取/写入过程。
[0225] FMPK 144基于命令的操作
[0226] 下文描述FMPK 144基于每个命令的操作。
[0227] 图21示出了根据实施例1的、在FMPK状态1之下基于新数据传输命令执行的操作。这一操作对应于以上描述的S2530。在FMPK 144中,在旧物理页面中存储旧数据。在目标条目1446中,旧物理页面地址指示旧物理地址。首先,BEPK 140向FMPK 144发送指明目标逻辑页面并且伴随新数据的新数据传输命令(S5110)。FMPK 144在存储器1445中暂时地存储新数据并且此后向FM 1443的新物理页面中写入新数据(S5120)。FMPK 144然后通过指明用于目标条目1446的新物理页面地址的新物理页面来对新数据执行指针连接(S5130)。随后,FMPK 144向控制器100发送正常结束响应(S5140)。这一操作允许系统状态从状态1转变成状态2。有了这一新数据传输命令,即使在写入新数据之后仍然可以维持在逻辑页面地址与旧物理页面地址之间的对应关系而未让旧数据被禁用。在下文描述的FM控制器1447接收新数据提交命令时,取消在逻辑页面地址与旧物理页面地址之间的对应关系。另外,利用新数据传输命令,可以在生成中间奇偶校验之前向FM的物理页面的物理页面写入新数据。在奇偶校验FMPK 144P中保持旧用户数据直至向物理存储区域写入新奇偶校验。因而,即使在出现故障时仍然可以使用旧用户数据来生成中间奇偶校验。在另一方面,参照图31描述正常写入过程。
[0228] 图22示出了根据实施例1的、在FMPK状态2之下基于新数据传输命令执行的操作。在FMPK 144中,在旧物理页面中存储旧数据,并且在新物理页面中存储新数据。在目标条目
1446中,旧物理页面地址指示旧物理页面,并且新物理页面地址指示新物理页面。首先,控制器100向FMPK 144发送指明目标逻辑页面和伴随附加数据的新数据传输命令(S5210)。
FMPK 144在存储器1445中暂时地存储附加数据并且此后向附加物理页面中写入附加数据,该附加物理页面是与FM 1443的旧物理页面和新物理页面不同的物理页面(S5220)。FMPK 
144然后通过指明用于目标条目1446的新物理页面地址的附加物理页面来执行用于用附加数据替换新数据的指针替换(S5230)。随后,FMPK 144向控制器100发送正常结束响应(S5240)。在这一过程中,在FM中存储的新数据未被视为旧数据。由于该阶段在生成新奇偶校验之前出现,所以维持在生成旧奇偶校验时获得的旧数据作为旧数据。在处理新数据传输命令时,FMPK状态未从FMPK状态2转变。换言之,当在FMPK状态1中处理新数据传输命令时,FMPK状态向FMPK状态2转变。当在FMPK状态2中处理新数据传输命令时,FMPK状态保持为FMPK状态2。这意味着FMPK的状态的转变无论FMPK的状态如何都由于新数据传输命令而出现。在另一方面,参照图32描述正常写入过程。
[0229] 图23示出了根据实施例1的、在FMPK状态1之下基于中间奇偶校验接收命令执行的操作。首先,控制器100向FMPK 144发送中间奇偶校验接收命令(S5310)。这一中间奇偶校验接收命令指明目标逻辑页面。随后,FMPK 144向控制器100发送异常结束响应(S5320)。
[0230] 图24示出了根据实施例1的、在FMPK状态2之下基于中间奇偶校验接收命令执行的操作。在FMPK 144中,在旧物理页面中存储旧数据,并且在新物理页面中存储新数据。在目标条目1446中,旧物理页面地址指示旧物理页面,并且新物理页面地址指示新物理页面。换言之,将旧物理页面和新物理页面映射到逻辑页面地址。首先,控制器100向FMPK 144发送中间奇偶校验接收命令(S5410)。这一中间奇偶校验接收命令指明目标逻辑页面。FMPK 144然后读取由在目标条目1446中存储的旧物理页面地址和新物理页面地址分别指示的旧数据和新数据,并且使用XOR电路1442来生成中间奇偶校验(S5420)。在FMPK 144中,基于来自控制器100的新数据传输命令来维持映射到旧数据。因而,FM控制器可以指定用于某个逻辑页面地址的新用户数据和旧用户数据。随后,FMPK 144向控制器100发送关于中间奇偶校验的响应(S5430)。此外,如在图22中所示,即使当在FM中存储附加数据时仍然执行相同过程。换言之,FM控制器根据附加用户数据和旧用户数据生成中间奇偶校验。在FMPK 144中,与正常读取/写入过程并行对其它用户数据执行中间奇偶校验生成过程多次,并且也在这些过程中使用存储器1445。因此,在存储器1445中维持写入的新用户数据并且在生成中间奇偶校验之后向FM写入它增加在存储器中存储新用户数据的时间段。这可能降低读取/写入过程的性能。在本实施例中,FM控制器读取新用户数据和旧用户数据以在向FM中写入新数据之后并且在接收中间奇偶校验接收命令时生成中间奇偶校验。因此,可以在生成中间奇偶校验时缩短在FMPK 144的存储器1445中存储新用户数据和旧用户数据的时间段。作为结果,可以增加可以在读取/写入过程中使用的在存储器中的区域,从而提高FMPK 144的过程性能。
[0231] 图25示出了根据实施例1的、在FMPK状态1之下基于中间奇偶校验传输命令执行的操作。在FMPK 144中,在旧物理页面中存储旧奇偶校验。在目标条目1446中,旧物理页面地址指示旧物理页面。首先,BEPK 140向FMPK 144发送指明目标逻辑页面并且与中间奇偶校验有关的中间奇偶校验传输命令(S5510)。然后,FMPK 144在存储器1445中暂时地存储中间奇偶校验、从由目标条目1446的旧物理页面地址指示的旧物理页面读取旧奇偶校验、在存储器1445中暂时地存储旧奇偶校验、通过使用XOR电路1442根据中间奇偶校验和旧奇偶校验生成新奇偶校验并且向新物理页面写入新奇偶校验(S5520)。FMPK 144然后通过指明用于目标条目1446的新物理页面地址的新物理页面来对新奇偶校验执行指针连接(S5530)。随后,FMPK 144向控制器100发送正常结束响应(S5540)。
[0232] 图26示出了根据实施例1的、在FMPK状态2之下基于中间奇偶校验传输命令执行的操作。在FMPK 144中,在旧物理页面中存储旧数据,并且在新物理页面中存储新数据。在目标条目1446中,旧物理页面地址指示旧物理页面,并且新物理页面地址指示新物理页面。首先,控制器100向FMPK 144发送指明目标逻辑页面并且伴随中间奇偶校验的中间奇偶校验传输命令(S5610)。FMPK 144然后从由在目标条目1446中存储的旧物理页面地址指示的旧物理页面读取旧数据、使用XOR电路1442根据中间奇偶校验和旧数据生成附加数据并且向与旧物理页面和新物理页面不同的附加物理页面中写入附加数据(S5620)。FMPK 144然后通过指明用于目标条目1446的新物理页面地址的附加物理页面来执行用于用附加数据替换新数据的指针替换(S5630)。随后,FMPK 144向控制器100发送正常结束响应(S5640)。以这一方式,即使在FMPK状态1或者FMPK状态2中,仍然可以在FM控制器接收中间奇偶校验传输命令时根据旧奇偶校验和中间奇偶校验生成附加奇偶校验(与新奇偶校验相同)。
[0233] 图27示出了根据实施例1的、在FMPK状态1之下基于新数据提交命令执行的操作。在这一过程由数据FMPK 144A执行时,确定新数据。在该过程由奇偶校验FMPK 144P执行时,确定新奇偶校验。在FMPK 144中,在旧物理页面中存储旧数据。在目标条目1446中,旧物理页面地址指示旧物理页面。首先,控制器100向FMPK 144发送新数据提交命令(S5710)。这一新数据提交命令指明目标逻辑页面。随后,FMPK 144向控制器100发送正常结束响应(S5720)。换言之,由于已经确定了新数据,所以FMPK状态1被识别为正常状态。在系统故障在确定了新数据和新奇偶校验之后并且在清空在SM 132中的过程阶段信息项之前出现时执行这一过程以便确认FMPK状态。
[0234] 图28示出了根据实施例1的、在FMPK状态2之下基于新数据提交命令执行的操作。在这一过程由数据FMPK 144A执行时,确定新数据。在该过程由奇偶校验FMPK 144P执行时,确定新奇偶校验。作为这一过程的结果,FMPK 144的状态从FMPK状态2转变成FMPK状态1。在FMPK 144中,在旧物理页面中存储旧数据,并且在新物理页面中存储新数据。在目标条目
1446中,旧物理页面地址指示旧物理页面,并且新物理页面地址指示新物理页面。首先,控制器100向FMPK 144发送新数据提交命令(S5810)。这一新数据提交命令指明目标逻辑页面。FMPK 144然后通过指明用于目标条目1446的旧物理页面地址的新物理页面来执行用于用新数据替换旧数据的指针替换,并且通过从目标条目1446的新物理页面地址删除新物理页面来对新数据执行指针删除(S5820)。随后,FMPK 144向控制器100发送正常结束响应(S5830)。在这些步骤之后,FM控制器在接收读取请求时用新数据做出响应。以这一方式,在FMPK状态1和FMPK状态2二者中,在接收新数据提交命令时保证建立FMPK状态1。
[0235] 图29示出了根据实施例1的、在FMPK状态1之下基于正常读取命令执行的操作。首先,控制器100向FMPK 144发送正常读取命令(S4310)。这一正常读取命令指明目标逻辑页面。FMPK 144然后读取由目标条目1446的旧物理页面地址指示的旧数据并且向控制器100发送关于旧数据的响应(S4320)。
[0236] 图30示出了根据实施例1的在FMPK状态2之下基于正常读取命令执行的操作。在FMPK 144中,在旧物理页面中存储旧数据,并且在新物理页面中存储新数据。在状态2中,将旧物理页面和新物理页面二者映射到某个LBA。换言之,对于存储系统,这一状态是未完成写入新数据。首先,控制器100向FMPK 144发送正常读取命令(S4410)。这一正常读取命令指明目标逻辑页面。FMPK 144然后读取由目标条目1446的旧物理页面地址指示的旧数据,并且向控制器100发送关于旧数据的响应(S4420)。
[0237] 图31示出了根据实施例1的、在FMPK状态1之下基于正常写入命令执行的操作。在FMPK 144中,在旧物理页面中存储旧数据。在目标条目1446中,旧物理页面地址指示旧物理页面。首先,控制器100向FMPK 144发送指明目标逻辑页面并且伴随新数据的正常写入命令(S4110)。FMPK 144然后向在FM 1443中存储的新物理页面中写入新数据(S4120)。FMPK 144然后通过指明用于目标条目1446的旧物理页面地址的新物理页面来执行用于用新数据替换旧数据的指针替换(S4130)。随后,FMPK 144向控制器100发送正常结束响应(S4140)。这一操作未允许FMPK状态从FMPK状态1转变。
[0238] 图32示出了根据实施例1的、在FMPK状态2之下基于正常写入命令执行的操作。在FMPK 144中,在旧物理页面中存储旧数据并且在新物理页面中存储新数据。在目标条目1446中,旧物理页面地址指示旧物理页面,并且新物理页面地址指示新物理页面。首先,控制器100向FMPK 144发送指明目标逻辑页面并且伴随附加数据的正常写入命令(S4210)。
FMPK 144然后向附加物理页面中写入附加数据,该附加物理页面是与在FM 1443中存储的旧物理页面和新物理页面不同的物理页面(S4220)。FMPK 144然后通过指明用于目标条目
1446的旧物理页面地址的附加物理页面来对旧数据执行指针替换(S4230)。随后,FMPK 144通过从目标条目1446的新物理页面地址删除新物理页面来对新数据执行指针删除(S4240)。FMPK 144然后向控制器100发送正常结束响应(S4250)。这一操作允许系统从FMPK状态2转变成FMPK状态1。
[0239] 系统状态的转变
[0240] 图33示出了根据实施例1的每个过程和系统的状态由于出现系统故障而引起的转变。系统的在这一实施例中采用的状态除了以上描述的系统状态1至7之外还是系统状态a、系统状态b、系统状态c、系统状态e、系统状态f、系统状态A、系统状态B、系统状态C、系统状态D、系统状态E、系统状态F、系统状态G和系统状态I,这些状态中的每个状态指示系统在出现故障时的状态。在括号中示出了描述FMPK的对应过程的附图的编号。在附图中,术语“奇偶校验生成前阶段”和“奇偶校验生成后阶段”指示在SM 132中存储的过程阶段信息项的内容。术语“清空SM”意味着确定新数据和新奇偶校验并且从SM 132删除与FMPK有关的过程阶段信息项。在系统状态1至3中,在数据FMPK 144A中保持在逻辑页面与旧用户数据被存储在其中的物理页面之间的对应关系。在系统状态1至3中,在奇偶校验FMPK 144P中保持在逻辑页面与旧奇偶校验被存储在其中的物理页面之间的对应关系。因此,在故障在系统状态1至3中出现时,可以通过允许控制器100向数据FMPK 144A传输新用户数据来生成中间奇偶校验,并且可以根据中间奇偶校验和旧奇偶校验生成新奇偶校验。在系统状态4至6中,在数据FMPK 144A中保持在逻辑页面与新用户数据被存储在其中的物理页面之间的对应关系。在系统状态4至6中,在奇偶校验FMPK 144P中保持在逻辑页面与新奇偶校验被存储在其中的物理页面之间的对应关系。因此,在故障在系统状态4至6中出现时,可以通过允许控制器
100向数据FMPK 144A和奇偶校验FMPK 144P传输新数据提交命令来确定新用户数据和新奇偶校验。如以上描述的那样,在SM 132中存储的过程阶段信息项具有两个阶段:“奇偶校验生成前阶段”和“奇偶校验生成后阶段”。出于这一原因,可以避免在出现故障时引起的数据丢失,并且可以减少为了管理过程阶段信息项而施加的负荷。具体管理过程阶段信息项增加对SM 132的用于在其中记录过程阶段信息项的访问数目并且增加作为对SM 132进行的访问的结果而引起的负荷。
[0241] 首先描述系统状态的正常转变。
[0242] 图34示出了根据实施例1的、在系统状态1中的数据的布置。在以下描述中,控制器100的FEPK 110中的两个FEPK分别被称为“FEPK 110A”和“FEPK 110B”。控制器100的MPPK 
120中的两个MPPK分别被称为“MPPK 120A”和“MPPK 120B”。控制器100的CMPK 130中的两个CMPK分别被称为“CMPK 130A”和“CMPK 130B”。控制器100的BEPK 140中的两个BEPK分别被称为“BEPK 140A”和“BEPK 140B”。在配置RAID组的多个FMPK 144之中,除了数据FMPK 144A和奇偶校验FMPK 144P之外的FMPK 144被称为“其它数据FMPK 144E”。此外,在该图和以下描述中,旧用户数据(该旧用户数据是在写入过程的更新之前获得的用户数据)被称为“oDi”,新用户数据(该新用户数据是在更新之后的用户数据)被称为“nDi”,其它用户数据(该其它用户数据是在与oDi相同的条内的其它数据FMPK 144E中存储的用户数据)被称为“oDx”。另外,中间奇偶校验被称为“mP”,旧奇偶校验被称为“oP”,并且新奇偶校验被称为“nP”。在附图和以下描述中,在写入过程中的MPPK 144A的MP 121被称为“在过程中的MP”。
[0243] 系统状态1在控制器100传输新数据传输命令之前出现。CMPK 130A的CM 131和CMPK 130B的CM 131具有在其中存储的新用户数据。CMPK 130A的SM 132和CMPK 130B的SM 132示出了奇偶校验生成前阶段。数据FMPK 144A具有在其中存储的旧用户数据。奇偶校验FMPK 144P具有在其中存储的旧奇偶校验。其它FMPK 144E具有在其中存储的其它用户数据。数据FMPK 144A的目标条目1446的旧物理页面地址指示旧用户数据。奇偶校验FMPK 
144P的目标条目14446的旧物理页面地址指示旧奇偶校验。
[0244] 在状态1中,控制器100向数据FMPK 144A发送新数据传输命令。作为结果,系统状态转变成状态2。
[0245] 图35示出了根据实施例1的、在系统状态2中的数据的布置。这一状态在控制器100完成新数据传输命令之后出现。新数据传输命令经由BEPK 140A向FMPK 144A发送在CMPK 130A的CM 131中存储的新用户数据。作为结果,BEPK 140A存储新用户数据。数据FMPK 144A也存储旧用户数据和新用户数据。新物理页面地址和旧物理页面地址二者与在数据FMPK 
144A中的目标逻辑页面地址关联。新物理页面地址指示新用户数据被存储在其中的物理页面,并且旧物理页面地址指示旧用户数据被存储在其中的物理页面。
[0246] 在系统状态2中,控制器100向数据FMPK 144A发送中间奇偶校验接收命令并且向奇偶校验FMPK 144P发送中间奇偶校验传输命令。作为结果,系统状态转变成状态3。
[0247] 图36示出了根据实施例1的、在系统状态3中的数据的布置。这一状态在控制器100完成中间奇偶校验接收命令和中间奇偶校验传输命令之后出现。中间奇偶校验接收命令向BEPK 140A的缓冲器1743发送由数据FMPK 144A生成的中间奇偶校验。中间奇偶校验传输命令向奇偶校验FMPK 144P发送BEPK 140A的缓冲器143的中间奇偶校验而未存储在CM中,并且向奇偶校验FMPK 144P中写入由奇偶校验FMPK 144P生成的新奇偶校验。因而,BEPK 140A的缓冲器143存储新用户数据和中间奇偶校验。新物理页面地址和旧物理页面地址二者与在奇偶校验FMPK 144P中的目标逻辑页面地址关联。新物理页面地址指示新奇偶校验被存储在其中的物理页面,并且旧物理页面地址指示旧奇偶校验被存储在其中的物理页面。至少直至这一阶段,在数据FMPK 144A中保持在目标逻辑页面地址与旧用户数据被存储在其中的旧物理页面之间的对应关系。因此,在故障在状态1至3中出现时,如下文将描述的那样,向数据FMPK 144A传输新数据可以生成中间奇偶校验。
[0248] 在系统状态3中,控制器100将SM 132的过程阶段信息改变成奇偶校验后更新阶段,由此系统状态转变成状态4。
[0249] 图37示出了根据实施例1的、在系统状态4中的数据的布置。这一状态在控制器100传输中间奇偶校验传输命令之后、在完成在奇偶校验FMPK中写入新奇偶校验之后和在MP将在SM 132中存储的过程阶段信息项更新成奇偶校验生成后阶段之后出现。在CMPK 130A的SM 132和CMPK 130B的SM 132二者中存储过程阶段信息项以获得冗余过程阶段信息。
[0250] 在系统状态4中,控制器100向数据FMPK 144A发送新数据提交命令。作为结果,系统状态转变成状态5。
[0251] 图38示出了根据实施例1的、在系统状态5中的数据的布置。这一状态在控制器100对新用户数据完成新数据提交命令之后出现。因而,在数据FMPK 144A中的目标条目1446的旧物理页面地址指示新用户数据,并且清空新物理页面地址。在向在FMPK 144P中的FM的物理页面写入新奇偶校验之后,在数据FMPK 144A中存储的旧数据变成不再必需。由新数据提交命令取消逻辑页面和旧数据被存储在其中的旧物理页面的映射,并且因此擦除旧物理页面。具有FM的存储设备需要空区域以便执行回收过程、磨损调平过程等。因此,在本实施例中,一旦旧数据变成非必需,就可以通过不映射旧数据来擦除旧数据,从而使得可以在FM中通过执行适当过程来保证空块(自由空间)。
[0252] 在系统状态5中,控制器100向奇偶校验FMPK 144P发送新数据提交命令。作为结果,系统状态转变成状态6。
[0253] 图39示出了根据实施例1的、在系统状态6中的数据的布置。这一状态在控制器100对奇偶校验FMPK 144P完成新数据提交命令之后出现。因此,在奇偶校验FMPK 144P中的目标条目1446的旧物理页面地址指示新奇偶校验,并且清空新物理页面地址。
[0254] 在系统状态6中,控制器100清空在每个SM 132中存储的过程阶段信息项,由此系统状态转变成系统状态7。
[0255] 图40示出了根据实施例1的、在系统状态7中的数据的布置。这一系统状态7在由控制器100清空在每个SM 132中存储的过程阶段信息项之后出现。作为结果,清空CMPK 130A的SM 132和CMPK 130B的SM 132二者。
[0256] 接着描述在系统故障在状态1至7中的每个状态中出现时执行的恢复过程。
[0257] 这里的系统故障意味着在多个MPPK 120、多个CMPK 130、多个BEPK 40和多个FMPK 144中出现的同时故障点。在出现这一系统故障时,一个类型的故障包数目等于或者小于一。此外,出现这一系统故障包括在多个类型的页面中同时出现故障。如下文将描述的那样,即使在多个类型的包中同时出现故障时,仍然可以恢复其数据而未丢失。
[0258] 在状态1中,出现系统故障使系统状态转变成状态a。
[0259] 图41示出了根据实施例1的、在系统状态a中的数据的布置。这一系统状态a意味着故障在写入过程中在MPPK 120A、CMPK 130A、具有在其中存储的新用户数据的BEPK 140A和具有在其中存储的其它用户数据的FMPK 144C中出现的情形。在这一幅图中,由“X”示出出现故障的节段。在该图和以下描述中,MPPK 144B的MP121(该MP 121接管其中已经出现故障的MPPK 120A的过程)被称为“转变MP”。转变MP检测到在CMPK 130B的SM 132中存储的过程阶段信息指示奇偶校验生成前阶段。响应于这一检测,转变MP传输新数据传输命令。
[0260] 在系统状态a中,控制器100向数据FMPK 144A发送新数据传输命令。作为结果,系统状态转变成系统状态A。
[0261] 图42示出了根据实施例1的、在系统状态A中的数据的布置。这一系统状态A在由控制器100完成新数据传输命令之后出现。新数据传输命令经由无故障的BEPK 140B向数据FMPK 144A发送在无故障的CMPK 130B的CM 131中存储的新用户数据。因而,BEPK 140B具有在其中存储的新用户数据。数据FMPK 144A具有在其中存储的旧用户数据和新用户数据。在数据FMPK 144A的目标条目1446中存储的新物理页面地址指示新用户数据。
[0262] 在系统状态A中,控制器100向数据FMPK 144A发送中间奇偶校验接收命令并且向奇偶校验FMPK 144P发送中间奇偶校验传输命令。作为结果,系统状态转变成状态B。
[0263] 图43示出了根据实施例1的、在系统状态B中的数据的布置。这一状态在由BEPK 140完成中间奇偶校验接收命令和中间奇偶校验传输命令之后出现。中间奇偶校验接收命令向BEPK 140B发送由数据FMPK 144A生成的中间奇偶校验。中间奇偶校验传输命令向奇偶校验FMPK 144P发送在BEPK 140B的缓冲器中存储的中间奇偶校验而未被存储在CM 131中,并且向奇偶校验FMPK 144P中写入由奇偶校验FMPK 144P生成的新奇偶校验。因而,BEPK 
140B具有在其中存储的新用户数据和中间奇偶校验。奇偶校验FMPK 144P具有在其中存储的旧奇偶校验和新奇偶校验。
[0264] 在系统状态B中,控制器100改变每个SM 132的过程阶段信息,由此系统状态转变成系统状态C。
[0265] 图44示出了根据实施例1的、在系统状态C中的数据的布置。这一状态在控制器100完成奇偶校验传输命令并且更新在每个SM132中存储的过程阶段信息之后出现。因此,CMPK 130B的SM 132指示奇偶校验生成后阶段。
[0266] 在系统状态C中,控制器100向数据FMPK 144A发送新数据提交命令。作为结果,系统状态转变成系统状态D。
[0267] 图45示出了根据实施例1的、在系统状态D中的数据的布置。这一系统状态D在由控制器100对新用户数据完成新数据提交命令之后出现。因此,在数据FMPK 144A的目标条目1446中存储的旧物理页面地址指示新用户数据,并且清空新物理页面地址。
[0268] 在系统状态D中,控制器100向奇偶校验FMPK 144P发送新数据提交命令,由此系统状态转变成系统状态E。
[0269] 图46示出了根据实施例1的、在系统状态E中的数据的布置。这一系统状态在由控制器100对新奇偶校验完成新数据提交命令之后出现。因此,在奇偶校验FMPK 144P的目标条目1446中存储的旧物理页面地址指示新奇偶校验,并且清空新物理页面地址。
[0270] 在系统状态E中,控制器100清空SM 132的过程阶段信息,由此系统状态转变成系统状态F。
[0271] 图47示出了根据实施例1的、在系统状态F中的数据的布置。在这一系统状态F中,清空在CMPK 130B的SM 132中存储的过程阶段信息项。这一系统状态F在完成与奇偶校验生成有关的写入过程之后出现。在系统状态转变成系统状态F时,确定完成写入过程而未引起数据丢失。
[0272] 作为在系统状态2中出现系统故障的结果,系统状态转变成系统状态b。
[0273] 图48示出了根据实施例1的、在系统状态b中的数据的布置。与系统状态a一样,这一系统状态b意味着故障在写入过程中在MPPK 144A、CMPK 130A、具有在其中存储的新用户数据的BEPK 140A和具有在其中存储的其它用户数据的FMPK 144C中出现的情形。转变MP检测到在CMPK 130B的SM 132中存储的过程阶段信息项指示奇偶校验生成前阶段。响应于这一检测,转变MP传输新数据传输命令。在这一系统状态b中,由于旧用户数据与新用户数据将被写入到的逻辑页面关联,所以传输新用户数据可以生成中间奇偶校验。
[0274] 在系统状态b中,控制器100向数据FMPK 144A发送新数据传输命令,其中系统状态转变成状态A。随后,系统状态可以按照系统状态B、系统状态C、系统状态D、系统状态E和系统状态F的顺序转变。
[0275] 作为在系统状态3中出现系统故障的结果,系统状态转变成系统状态c。
[0276] 图49示出了根据实施例1的、在系统状态c中的数据的布置。与状态a一样,这一状态意味着故障在写入过程中在MPPK 144A、CMPK 130A、具有在其中存储的新用户数据的BEPK 140A和具有在其中存储的其它用户数据的FMPK 144C中出现的情形。转变MP检测到在CMPK 130B的SM 132中存储的过程阶段信息指示奇偶校验生成前阶段。响应于这一检测,转变MP传输新数据传输命令。数据FMPK 144A具有在其中存储的旧用户数据和新用户数据。在数据FMPK 144A的目标条目1446中,旧物理页面地址指示旧用户数据,并且新物理页面地址指示新用户数据。奇偶校验FMPK 144P具有在其中存储的旧奇偶校验和新奇偶校验。在奇偶校验FMPK 144P的目标条目1446中,旧物理页面地址指示旧奇偶校验,并且新物理页面地址指示新奇偶校验。在系统状态c中的数据FMPK维持在旧用户数据与新用户数据将被写入到的逻辑页面之间的对应关系。因此,可以通过传输新数据来生成中间奇偶校验。
[0277] 在系统状态c中,控制器100向数据FMPK 144A发送新数据传输命令,由此系统状态转变成状态G。
[0278] 图50示出了根据实施例1的、在系统状态G中的数据的布置。这一系统状态G在由控制器100完成新数据传输命令之后出现。如在系统状态A中那样,新数据传输命令经由无故障的BEPK 140B向数据FMPK 144A发送在无故障的CMPK 130B的CM 131中存储的新用户数据。因而,BEPK 140B存储新用户数据。在系统状态G中的数据FMPK 144A维持在旧用户数据与新用户数据将被写入到的逻辑页面之间的对应关系。因此,可以通过传输新数据来生成中间奇偶校验。另外,在状态G中的奇偶校验FMPK 144P维持在旧奇偶校验与目标逻辑页面之间的对应关系。因此,可以通过传输中间奇偶校验来生成新奇偶校验。
[0279] 在系统状态G中,控制器100向数据FMPK 144A发送中间奇偶校验接收命令并且向奇偶校验FMPK 144P发送中间奇偶校验传输命令。作为结果,系统状态转变成系统状态B。随后,系统状态可以按照系统状态C、系统状态D、系统状态E和系统状态F的顺序转变。
[0280] 作为在状态4中出现系统故障的结果,系统状态转变成状态C。随后,系统状态可以按照系统状态D、系统状态E和系统状态F的顺序转变。
[0281] 作为在系统状态5中出现系统故障的结果,系统状态转变成系统状态e。
[0282] 图51示出了根据实施例1的、在系统状态e中的数据的布置。与系统状态a一样,这一系统状态e意味着故障在写入过程中在MPPK 144A、CMPK 130A、具有在其中存储的新用户数据的BEPK 140A和具有在其中存储的其它用户数据的FMPK 144C中出现的情形。转变MP检测到在CMPK 130B的SM 132中存储的过程阶段信息指示奇偶校验生成后阶段。换言之,这一状态在由控制器100完成奇偶校验传输命令之后和在更新在SM 132中存储的过程阶段信息之后出现。响应于该检测,转变MP向数据FMPK 144A传输新数据提交命令。数据FMPK 144A具有在其中存储的新用户数据。在数据FMPK 144A的目标条目1446中,旧物理页面地址指示新用户数据。奇偶校验FMPK 144P具有在其中存储的旧奇偶校验和新奇偶校验。在奇偶校验FMPK 144P的目标条目1446中,旧物理页面地址指示旧奇偶校验,并且新物理页面地址指示新奇偶校验。
[0283] 在系统状态e中,控制器100向数据FMPK 144A发送新数据提交命令,由此系统状态转变成状态D。随后,系统状态可以从系统状态E转变成系统状态F。
[0284] 作为在系统状态6中出现系统故障的结果,系统状态转变成系统状态f。
[0285] 图52示出了根据实施例1的、在系统状态f中的数据的布置。与系统状态a一样,这一状态意味着故障在写入过程中在MPPK 144A、CMPK 130A、具有在其中存储的新用户数据的BEPK 140A和具有在其中存储的其它用户数据的FMPK 144C中出现的情形。转变MP检测到在CMPK 130B的SM 132中存储的过程阶段信息项指示奇偶校验生成后阶段。换言之,这一状态在由控制器100完成奇偶校验传输命令之后和在更新在SM 132中存储的过程阶段信息项之后出现。因而,转变MP向数据FMPK 144A传输新数据提交命令。数据FMPK 144A存储新用户数据。在数据FMPK 144A的目标条目1446中,旧物理页面地址指示新用户数据。奇偶校验FMPK 144P存储新奇偶校验。在奇偶校验FMPK 144P的目标条目1446中,旧物理页面地址指示新奇偶校验。
[0286] 在系统状态f中,控制器100向数据FMPK 144A发送新数据提交命令,由此系统状态转变成状态I。
[0287] 图53示出了根据实施例1的、在系统状态I中的数据的布置。与系统状态a一样,这一系统状态f意味着故障在写入过程中在MPPK 144A、CMPK 130A、具有在其中存储的新用户数据的BEPK 140A和具有在其中存储的其它用户数据的FMPK 144C中出现的情形。这一状态在由控制器100对新用户数据完成新数据提交命令之后出现。响应于该检测,转变MP向奇偶校验FMPK 144P传输新数据提交命令。数据FMPK 144A具有在其中存储的新用户数据。在数据FMPK 144A的目标条目1446中,旧物理页面地址指示新用户数据。奇偶校验FMPK 144P具有在其中存储的新奇偶校验。在奇偶校验FMPK 144P的目标条目1446中,旧物理页面地址指示新奇偶校验。
[0288] 在系统状态I中,控制器100向奇偶校验FMPK 144P发送新数据提交命令,由此系统状态转变成状态E。随后,系统状态可以转变成系统状态F。
[0289] 作为在系统状态7中出现系统故障的结果,系统状态转变成系统状态F。在系统状态7中,确定在FMPK 144中存储的数据,并且清空过程阶段信息项。因此,即使在系统故障出现时仍然无需附加过程,并且系统状态因而转变成状态F。因此,即使在出现系统故障时,主机计算机30仍然可以读取在RAID的条中示出的无故障的oDi和oD1至oDy,只要系统状态可以转变成系统状态7或者状态F。因此,数据丢失未出现,因为主机计算机30也可以通过XOR在条内的oD1…nDi…oDy,nP来读取其中出现故障的oDx。
[0290] 在这一实施例中,MPPK 120、CMPK 130和BEPK 140的数目各自为二、但是可以是三或者更多。即使在MPPK 120、CMPK 130或者BEPK 140的数目是一时,仍然可以执行相同操作,只要无故障在其节段中出现。
[0291] 根据以上描述的状态转变,数据丢失即使在系统故障在系统状态1至7中的任何系统状态中出现仍然未出现。换言之,数据丢失即使在同时故障点在多个MPPK 120、多个CMPK 130、多个BEPK 140和多个FMPK 144中出现时仍然未出现。因此,可以改进存储系统10的可靠性。注意,本实施例可以耦合具有XOR函数的其它存储系统以取代FMPK 144并且使其它存储设备实施中间奇偶校验和/或奇偶校验计算过程。
[0292] 另外,由于不能在正常闪存中执行数据改写,所以在正常写入过程中向逻辑页面分配新物理页面。本实施例使用在作为分配新物理页面的结果被禁用的旧物理页面中存储的数据。因此,本实施例未增加执行写入过程的次数和擦除数据的次数。换言之,在本实施例中,未缩短闪存的操作寿命。
[0293] 实施例2
[0294] 这一实施例举例说明了FMPK 144支持基于关于SCSI命令的请求的XOR函数的情形。SCSI命令的示例包括XDWRITE、XDREAD和XPWRITE。存储系统10的配置中的其它配置与在实施例1中描述的配置相同。在本实施例中,只要支持这些SCI命令,存储介质就不限于闪存设备。
[0295] 根据实施例2的写入过程
[0296] 现在描述正常写入过程。
[0297] 图54示出了根据实施例2的写入过程。也在这一序列图中,数据FMPK 144A的DFa和DFb代表数据FMPK 144A的存储器1445和FM 1443(物理页面)。另外,奇偶校验FMPK 144P的DFa和DFb代表奇偶校验FMPK 144P的存储器1445和FM 1443(物理页面)。在序列图中的操作的其它关键组成与在图示了根据实施例1的写入过程的序列图中示出的关键组成相同。
[0298] 在本实施例中,在SM 132中存储的过程阶段信息项指示“奇偶校验生成前阶段”、“在数据介质更新过程中的阶段”、“在奇偶校验介质更新过程中的阶段”和“奇偶校验生成后阶段”。与实施例1比较,本实施例让过程阶段信息项中的更多过程信息项存储在SM 132中。首先,MP 121如在实施例的写入过程中那样执行过程S2110至S2350。MP 121因而将在与两个CM 131的具有在其中存储的新用户数据的区域对应的两个SM 132中存储的过程阶段信息项的值改变成与在数据介质更新过程中的阶段对应的值。
[0299] 接着,MP 121向数据FMPK 144A发送XDWRITE命令(S6210)。这一XDWRITE命令指明旧用户数据被存储在其中的逻辑页面并且伴随新用户数据。在这一时刻,响应于来自MP 121的指令,BEPK 140保护缓冲器143、从CM 121读取新用户数据并且向保护的缓冲器143中写入新用户数据。MP 121然后从缓冲器143读取新用户数据并且向数据FMPK 144A发送新用户数据。
[0300] 数据FMPK 144A然后从控制器100接收XDWRITE命令和新用户数据。数据FMPK 144A因而向FM 1443中写入新用户数据。随后,数据FMPK 144A读取在FM 1443中存储的旧用户数据和新用户数据、使用XOR电路1442来生成中间奇偶校验并且向存储器1445中写入中间奇偶校验。数据FMPK 144A然后向控制器100发送XDWRITE命令的正常结束。
[0301] 随后,MP 121从数据FMPK 144A接收XDWRITE命令的正常结束。MP 121因而向数据FMPK 144A发送XDREAD命令(S6220)。这一XDREAD命令指明具有在其中存储的中间奇偶校验的存储器1445的地址。注意,在存储器1445中存储具有在其中存储的中间奇偶校验的存储器1445的地址。
[0302] 数据FMPK 144A然后从控制器100接收XDREAD命令。数据FMPK 144A因而基于在存储器1445中的信息读取在存储器1445中存储的中间奇偶校验、向控制器100发送中间奇偶校验并且向控制器100发送XDREAD命令的正常结束。
[0303] 在这一时刻,BEPK 140从数据FMPK 144A接收中间奇偶校验并且向缓冲器143中写入中间奇偶校验。接着,MP 121从数据FMPK 144A接收XDREAD命令的正常结束。MP 121因而将过程阶段信息项的值改变成奇偶校验介质更新中阶段。
[0304] MP 121然后向奇偶校验FMPK 144P发送XPWRITE命令(S6410)。这一XPWRITE命令指明具有在其中存储的旧奇偶校验的逻辑页面并且伴随中间奇偶校验。在这一时刻,响应于来自MP 121的指令,BEPK 140从缓冲器143读取中间奇偶校验并且向奇偶校验FMPK 144P发送中间奇偶校验。
[0305] 接着,奇偶校验FMPK 144P从控制器100接收XPWRITE命令和中间奇偶校验。奇偶校验FMPK 144P因而接收中间奇偶校验并且向存储器1445中写入中间奇偶校验。作为对在PFb中存储的旧奇偶校验和在存储器1445中存储的中间奇偶校验的XOR运算的结果,奇偶校验FMPK 144P生成新奇偶校验并且向FM 1443中写入新奇偶校验。随后,奇偶校验FMPK 144P向控制器100发送XPWRITE命令的正常结束。
[0306] 随后,MP 121清空在SM 132中存储的过程阶段信息项。
[0307] 以上是写入过程。
[0308] 如以上描述的那样,控制器100从缓冲器143向奇偶校验FMPK 144P发送中间奇偶校验而未向CM 131中写入从数据FMPK 144A接收的中间奇偶校验。因而,在写入过程期间对CM 131的访问数目变成三,由此可以减少对CM 131的访问数目(见段落[0208](下一段落))。
[0309] 根据这一实施例,可以通过在两个CMPK 120中存储新用户数据和每个过程阶段信息来改进存储系统10的可靠性。
[0310] 此外,这一实施例可以增加存储系统10的速度,因为无需新数据提交命令(在S3230和S3320中)。
[0311] 根据这一实施例,为存储系统10而运用的存储介质可以是磁存储介质、光存储介质或者其它非易失性存储介质。
[0312] 根据实施例2的转变写入过程的具体示例
[0313] 现在描述在出现MP故障时执行的转变写入过程的若干具体示例。
[0314] 根据实施例2的转变写入过程的第一具体示例
[0315] 这里描述在奇偶校验生成前阶段中出现MP故障时执行的转变写入过程。
[0316] 图55示出了根据实施例2的、在奇偶校验生成前中出现MP故障时执行的转变写入过程。在这一序列图中示出的操作的操作目标与在与正常写入过程有关的序列图中示出的操作目标相同。
[0317] 一旦无故障的MP 121识别故障已经在其它MP 121中出现,MP 121就确认每个过程阶段信息指示奇偶校验生成前。MP 121因而将在与两个CM 131的具有存储于其中的新用户数据的区域对应的两个SM 132中存储的过程阶段信息项的值改变成数据介质更新。
[0318] 接着,MP 121如在正常写入过程中那样执行过程S6210至S6410。换言之,无故障的MP 121从XDWRITE命令被发送到数据FMPK 144A(S6210)的点接管写入过程。由于在CM 121中存储新用户数据,所以BEPK 140响应于来自MP 121的指令从CM 121读取新用户数据、向缓冲器143中写入新用户数据、从缓冲器143读取新用户数据并且向数据FMPK 144A发送新用户数据。以这一方式,无故障的MP 121可以接管写入过程以成功地执行写入过程。
[0319] 随后,MP 12清空在SM 132中存储的过程阶段信息项。
[0320] 以上是转变写入过程。
[0321] 如以上描述的那样,即使在MP故障在奇偶校验生成前阶段中出现时,无故障的另一MP 121仍然可以接管写入过程以基于在SM 132中存储的过程阶段信息项成功地执行写入过程。在出现MP故障时获得的过程阶段信息项指示奇偶校验生成前阶段时,MP 121从XDWRITE命令被发送到数据FMPK 144A(S6210)的点接管写入过程。
[0322] 根据实施例2的转变写入过程的第二具体示例
[0323] 这里描述在数据介质更新中阶段中出现MP故障时执行的转变写入过程。
[0324] 图56示出了根据实施例2的、在数据介质更新中出现MP故障时执行的转变写入过程。在这一序列图中示出的操作目标与在与正常写入过程有关的序列图中示出的操作目标相同。在该图和以下描述中,除了在由多个FMPK 144配置的RAID组中存储的除了旧用户数据之外的用户数据被称为“其它用户数据”。具有在其中存储的其它用户数据的FMPK 144被称为“其它数据FMPK 144E”。在该图和以下描述中,其它用户数据被称为“oD1,…,oDn”。
[0325] 一旦无故障的MP 121识别故障在另一MP 121中出现,MP 121就确认每个过程阶段信息项指示在数据介质更新过程中的状态。MP 12因而向其它数据FMPK 144E发送正常读取(READ)命令。换言之,无故障的MP 121从生成新奇偶校验的点接管写入过程。这一正常读取命令指明具有在其中存储的其它用户数据的逻辑页面。其它数据FMPK 144E因而读取其它用户数据并且向控制器100发送其它用户数据。因而,BEPK 140向缓冲器143中写入其它用户数据并且还向CM 121中写入其它用户数据。
[0326] 接着,MP 121对在CM 121中存储的新用户数据和其它用户数据执行XOR运算、生成新奇偶校验并且向两个CM 121中写入新奇偶校验(S6520)。MP 121然后向在与两个CM 121对应的两个SM 132中存储的过程阶段信息项中写入指示奇偶校验后生成的值。
[0327] 随后,MP 121向数据FMPK 144A发送正常写入(WRITE)命令(S6530)。这一正常写入命令伴随新用户数据。因而,BEPK 140向缓冲器143中写入在CM 121中存储的新用户数据并且向数据FMPK 144A发送新用户数据。数据FMPK 144A因而向FM 1443中写入新用户数据。
[0328] 随后,MP 121向奇偶校验FMPK 144P发送正常写入命令(S6540)。这一正常写入命令伴随新奇偶校验。因而,BEPK 140向缓冲器143中写入在CM 121中存储的新奇偶校验并且向奇偶校验FMPK 144P发送新奇偶校验。奇偶校验FMPK 144P因而向FM 1443中写入新奇偶校验。
[0329] MP 121然后清空在SM 132中存储的过程阶段信息。
[0330] 以上是转变写入过程。
[0331] 如以上描述的那样,即使在MP故障在数据介质更新中阶段中出现时,其它MP 121仍然可以接管写入过程以执行转变写入过程。在出现MP故障期间的过程阶段信息项是正在更新数据介质时,无故障的MP 121从其它数据从FMPK被传送到CM 131的阶段接管写入过程。
[0332] 根据实施例2的转变写入过程的第三具体示例
[0333] 这里描述在奇偶校验介质更新中阶段中出现MP故障时执行的转变写入过程。
[0334] 图57示出了根据实施例2的、在奇偶校验介质更新中阶段中出现MP故障时执行的转变写入过程。在这一序列图中示出的操作目标与在与正常写入过程有关的序列图中示出的操作目标相同。
[0335] 一旦无故障的MP 121识别故障已经在其它MP 121中出现,MP 121就确认每个过程阶段信息指示奇偶校验介质更新中阶段。MP121因而执行以上描述的S6510、S6520和S6540(见图56)。因而,向奇偶校验FMPK 144P写入在CM 121中存储的新奇偶校验。
[0336] 随后,MP 121清空在SM 132中存储的过程阶段信息项。
[0337] 以上是转变写入过程。
[0338] 如以上描述的那样,即使在MP故障在奇偶校验介质更新中阶段中出现时,其它MP 121仍然可以接管写入过程以执行转变写入过程。在出现MP故障期间的过程阶段信息项是正在更新奇偶校验介质时,从其它数据从FMPK 144E被传送到CM 131的阶段接管写入团。
[0339] 根据实施例2的转变写入过程的第四具体示例
[0340] 这里描述在奇偶校验生成后阶段中出现MP故障时执行的转变写入过程。
[0341] 图58示出了根据实施例2的、在奇偶校验生成后阶段中出现MP故障时执行的转变写入过程。在这一序列图中示出的操作目标与在与正常写入过程有关的序列图中示出的操作目标相同。
[0342] 一旦无故障的MP 121识别其中已经出现故障的MP 121,MP121就确认每个过程阶段信息指示奇偶校验生成后。MP 121因而执行以上描述的S6530和S6540。因而,向数据FMPK 144A写入在CM 121中存储的新用户数据。另外,向奇偶校验FMPK 144P写入在CM 121中存储的新奇偶校验。
[0343] 随后,MP 121清空在SM 132中存储的过程阶段信息项。
[0344] 以上是转变写入过程。
[0345] 如以上描述的那样,即使在MP故障在奇偶校验生成后阶段中出现时,无故障的其它MP 121仍然可以接管写入过程以执行转变写入过程。相似地。数据丢失即使在同时故障点在多个MPPK 120、多个CMPK 130和多个BEPK 140中出现时仍然未出现。因此,可以改进存储系统10的可靠性。在出现MP故障时获得的过程阶段信息指示奇偶校验生成后阶段的情况下,无故障的MP 121从向数据FMPK144A写入新用户数据并且向奇偶校验FMPK 144P写入新奇偶校验的点接管写入过程。
[0346] 根据实施例2的、FMPK 144的基于命令的操作
[0347] 下文描述FMPK 144的基于每个命令的操作。
[0348] 图59示出了根据实施例2的、基于正常读取命令执行的操作。在以下描述中,由从控制器100向FMPK 144发送的命令指明的逻辑页面被称为“目标逻辑页面”。在FMPK 144的存储器1445中所示的指针表的条目之中,与目标逻辑页面对应的条目被称为“目标条目1446”。目标条目1446具有用于逻辑页面地址(该逻辑页面地址是指明目标逻辑页面的逻辑地址)的字段和用于物理页面地址(该物理页面地址是指明与目标逻辑页面对应的物理页面的物理地址)的字段。在该图和以下描述中,在目标条目1446中,逻辑页面地址被称为“LA”,并且旧物理页面地址被称为“PA”。此外,逻辑页面地址的值被描述为“LBA xxxx”并且物理页面地址的值被描述为“p0”和“p1”。
[0349] 在实施例2中,接收正常读取命令的FMPK 144与其它数据FMPK 144E相同。首先,其它数据FMPK 144E从控制器100的BEPK 140接收正常读取命令(S7110)。这一正常读取命令指明具有在其中存储的旧数据的目标逻辑页面。其它数据FMPK 144E然后从由目标条目1446的物理页面地址指明的旧物理页面读取旧数据(S7120)。其它数据FMPK 144E然后向控制器100发送包括旧数据的数据响应(S7130)。
[0350] 图60示出了根据实施例2的、基于正常写入命令执行的操作。在实施例2中,接收正常写入命令的FMPK 144与数据FMPK 144A或者奇偶校验FMPK 144P相同。首先,FMPK 144或者144P从控制器100的BEPK 140接收正常写入命令(S7210)。这一正常写入命令指明具有在其中存储的旧数据的目标逻辑页面并且伴随新数据。FMPK 144或者144P然后向与旧物理页面不同的新物理页面中写入新数据(S7220)。FMPK 144或者144P然后通过指明用于目标条目1446的物理页面地址的新物理页面来对新数据执行指针连接(S7230)。随后,FMPK 144或者144P向控制器100发送正常结束响应(S7240)。
[0351] 图61示出了根据实施例2的、基于XDWRITE命令执行的操作。在实施例2中,接收XDWRITE命令的数据FMPK 144A与数据FMPK 144A相同。首先,数据FMPK 144A从控制器100的BEPK 140接收XDWRITE命令(S7310)。这一XDWRITE命令指明具有在其中存储的旧数据的目标逻辑页面并且伴随新数据。数据FMPK 144A然后向与旧物理页面不同的新物理页面中写入新数据(S7320)。接着,数据FMPK 144A读取在旧物理页面中存储的旧数据和在新物理页面中存储的新数据、使用XOR电路1442来生成中间奇偶校验并且向存储器1445中写入中间奇偶校验(S7330)。数据FMPK 144A然后通过指明用于目标条目1446的物理页面地址的新物理页面来对新数据执行指针连接(S7340)。随后,FMPK 144向控制器100发送正常结束响应(S7350)。利用这一XDWRITE命令,可以向存储器1445中写入中间奇偶校验并且可以确定新数据而减少对CM 131施加的负荷和对数据FMPK 144A的访问数目。在本实施例中,在实施例1中描述的新数据提交命令(S3230和S3320)不是确定在FMPK 144中存储的数据所所需要的。
[0352] 图62示出了根据实施例2的、基于XDREAD命令执行的操作。在实施例2中,接收XDREAD命令的FMPK 144与为存储器1445而在其中写入中间奇偶校验的数据FMPK 144A相同。首先,数据FMPK 144A从控制器100的BEPK 140接收XDREAD命令(S7410)。这一XDREAD命令指明在其中具有中间奇偶校验的地址。数据FMPK 144A然后读取在存储器1445中存储的中间奇偶校验(S7420)。数据FMPK 144A然后向控制器100发送包括中间奇偶校验的数据响应(S7430)。
[0353] 图63示出了根据实施例2的、基于XPWRITE命令执行的操作。在实施例2中,接收XPWRITE命令的FMPK 144与奇偶校验FMPK 144P相同。首先,奇偶校验FMPK 144P从控制器100的BEPK 140接收XPWRITE命令(S7510)。这一XPWRITE命令指明具有在其中存储的旧奇偶校验的目标逻辑页面并且伴随中间奇偶校验。奇偶校验FMPK 144P然后向存储器1445中写入中间奇偶校验(S7520)。接着,奇偶校验FMPK 144从由目标条目1446的物理页面地址指示的旧物理页面读取旧奇偶校验、从存储器1445读取中间奇偶校验、使用XOR电路1442来生成新奇偶校验并且向与旧物理页面不同的新物理页面中写入新奇偶校验(S7530)。奇偶校验FMPK 144P然后通过指明用于目标条目1446的物理页面地址的新物理页面来对新奇偶校验执行指针连接(S7540)。随后,奇偶校验FMPK 144P向控制器100发送结束响应(S7350)。这一XPWRITE过程可以生成和确定新奇偶校验而减少对CM 131施加的负荷核对数据FMPK 144A进行的访问数目。在本实施例中,在实施例1中描述的新数据提交命令(S3230和S3320)不是确定数据而需要的。
[0354] 实施例3
[0355] 与实施例2一样,这一实施例例示了FMPK 144支持标准SCSI命令的XOR函数的情形。存储系统10的配置中的其余配置与在实施例1中描述的配置相同。
[0356] 与实施例2一样,在本实施例中,在SM 132中存储的过程信息项指示“奇偶校验生成前阶段”、“在数据介质更新过程中的阶段”、“在奇偶校验介质更新过程中的阶段”和“奇偶校验生成后阶段”。
[0357] 根据实施例3的写入过程
[0358] 现在描述正常写入过程。
[0359] 图64示出了根据实施例3的写入过程。也在这一序列图中,数据FMPK 144A的DFa和DFb代表数据FMPK 144A的存储器1445和FM 1443(物理页面)。另外,奇偶校验FMPK 144P的DFa和DFb代表奇偶校验FMPK 144P的存储器1445和FM 1443(物理页面)。在这一序列图中的操作的关键组成与在图示了根据实施例2的写入过程的序列图中示出的关键组成相同。
[0360] 首先,MP 121如在根据实施例1和实施例2的写入过程中执行过程S2110至S2350。如在根据实施例2的写入过程中一样,MP 121因而将在与两个CM 131的具有在其中存储的新用户数据的区域对应的两个SM 132中存储的过程阶段信息项的值从与奇偶校验生成前阶段对应的值改变成与在数据介质更新过程中的阶段对应的值。本实施例可以应对在MP 
121或者CM 131中的同时故障点。
[0361] MP 121然后向数据FMPK 144A发送正常读取命令(S6110)。这一正常读取命令指明具有在其中存储的旧用户数据的逻辑页面。数据FMPK 144A因而读取旧用户数据并且向控制器100发送旧用户数据。因而,BEPK 140向缓冲器143中写入旧用户数据并且还向两个CM 121中写入旧用户数据。接着,MP 121向在与两个CM 121对应的两个SM 132中存储的过程阶段信息项中写入指示数据介质更新中阶段的值。
[0362] 随后,如在根据实施例2的写入过程中那样,MP 1212向数据FMPK 144A发送XDWRITE命令(S6210)。这一XPWRITE命令指明具有在其中存储的旧用户数据的逻辑页面并且伴随新用户数据。因而,在数据FMPK 144A中存储新用户数据,并且在存储器1445中存储中间奇偶校验。
[0363] 随后,如在根据实施例2的写入过程中那样,MP 121向数据FMPK 144A发送XDREAD命令(S6220)。这一XDREAD命令指明具有在其中存储的中间奇偶校验的逻辑页面。因而,在BEPK 140的缓冲器143中存储中间奇偶校验。
[0364] MP 121然后向奇偶校验FMPK 144P发送正常读取命令(S6310)。这一正常读取命令指明具有在其中存储的旧奇偶校验的逻辑页面。奇偶校验FMPK 144P因而读取旧奇偶校验并且向控制器100发送旧奇偶校验。因而,BEPK 140向缓冲器143中写入旧奇偶校验并且还向两个CM 121中写入旧奇偶校验。MP 121然后将过程阶段信息项的值改变成奇偶校验介质更新中阶段。
[0365] 随后,如在根据实施例2的写入过程中那样,MP 121向奇偶校验FMPK 144P发送XPWRITE命令(S6410)。这一XPWRITE命令指明具有在其中存储的旧奇偶校验的逻辑页面并且伴随中间奇偶校验。因而,在奇偶校验FMPK 144P中存储新奇偶校验。
[0366] MP 121然后清空在SM 132中存储的过程阶段信息项。
[0367] 以上是写入过程。
[0368] 如以上描述的那样,控制器100向CM 131中写入从数据FMPK 144A接收的旧用户数据和从奇偶校验FMPK 144P接收的旧奇偶校验,但是从缓冲器143向奇偶校验FMPK 144P发送中间奇偶校验而未向CM 131中写入从数据FMPK 144A接收的中间奇偶校验。因此,在写入过程期间对CM 131的访问数目变成七,由此可以减少对Cm131的访问数目。因而,可以减少在写入过程中对CM 131的访问数目,从而降低对CM 131的访问数目并且改进存储系统的写入过程性能。
[0369] 此外,根据本实施例,在两个CMPK 120中存储新用户数据、旧用户数据、旧奇偶校验和过程阶段信息项中的每个过程阶段信息项。因此,即使在丢失数据项之一时仍然可以使用其它数据从而改进存储系统10的可靠性。
[0370] 根据实施例3的转变写入过程
[0371] 现在描述转变写入过程的若干具体示例
[0372] 根据实施例3的转变写入过程的第一具体示例
[0373] 这里描述在奇偶校验生成前阶段中出现MP故障时执行的转变写入过程。
[0374] 图65示出了根据实施例3的、在奇偶校验生成前阶段中出现MP故障时执行的转变写入过程。在这一序列图中示出的操作目标与在与正常写入过程有关的序列图中示出的操作目标相同。
[0375] 一旦无故障的MP 121识别具有故障的MP 121,MP 121就确认每个过程来信息项指示奇偶校验生成前阶段。MP 121因而如在正常写入过程中那样执行过程S6110至S6410。换言之,无故障的MP 121从XDWRITE命令被发送到数据FMPK 144A(S6210)的点接管写入过程。由于在CM 121中存储新用户数据,所以BEPK 140响应于来自MP 121的指令从CM 121读取新用户数据、向缓冲器143中写入新用户数据、从缓冲器143读取新用户数据并且向数据FMPK 
144A发送新用户数据。作为结果,无故障的MP 121可以接管写入过程并且成功地执行写入过程。
[0376] MP 121然后清空在SM 132中存储的过程阶段信息项。
[0377] 以上已经描述转变写入过程。
[0378] 如以上描述的那样,即使在MP故障在奇偶校验生成前阶段中出现时,无故障的其它MP 121仍然可以接管写入过程以基于过程阶段信息执行转变写入过程。
[0379] 根据实施例3的转变写入过程的第二具体示例
[0380] 这里描述在数据介质更新中阶段中出现MP故障时执行的转变写入过程。
[0381] 图66示出了根据实施例3的、在数据介质更新中阶段中出现MP故障时执行的转变写入过程。在这一序列图中示出的操作目标与在与正常写入过程有关的序列图中示出的操作目标相同。
[0382] 一旦无故障的MP 121识别了MP故障,MP 121就确认每个过程阶段信息指示数据介质更新。MP 121因而向数据FMPK 144A发送正常写入命令(S6010)。这一正常写入命令伴随旧用户数据。在这一时刻,响应于来自MP 121的指令,BEPK 140从CM 121读取旧用户数据、向缓冲器143中写入旧用户数据、从缓冲器143读取旧用户数据并且向数据FMPK 144A发送旧用户数据。
[0383] MP 121然后如在正常写入过程中那样执行过程S6110至S6410。换言之,在过程阶段信息项指示在数据介质更新过程中的阶段时,无故障的MP 121从正常读取命令被发送到数据FMPK 144A(S6110)的阶段接管写入过程。
[0384] 随后,MP 121清空在SM 132中存储的过程阶段信息项。
[0385] 以上是转变写入过程。
[0386] 如以上描述的那样,即使在MP故障在数据介质更新中阶段中出现时,无故障的其它MP 121仍然可以接管写入过程以基于过程阶段信息执行转变写入过程。
[0387] 根据实施例3的转变写入过程的第三具体示例
[0388] 这里描述在奇偶校验介质更新中阶段中出现MP故障时执行的转变写入过程。
[0389] 图67示出了根据实施例3的在奇偶校验介质更新阶段中出现MP故障时执行的转变写入过程。在这一序列图中示出的操作目标与在与正常写入过程有关的序列图中示出的操作目标相同。
[0390] 一旦无故障的MP 121识别具有故障的MP,MP 121就确认每个过程阶段信息项指示在奇偶校验介质更新过程中的阶段。MP 121因而读取在CM 121中存储的旧用户数据、旧奇偶校验和新用户数据、借助XOR运算生成新奇偶校验并且向两个CM 121中写入新奇偶校验(S6020)。换言之,在每个过程阶段信息项指示在奇偶校验介质更新过程中的阶段时,无故障的MP 121从新奇偶校验从在CM 121中存储的旧用户数据、旧奇偶校验和新用户数据来生成的点接管写入过程。
[0391] MP 121然后如在正常写入过程中那样执行过程S6410。
[0392] 随后,MP 121清空在SM 132中存储的过程阶段信息项。
[0393] 以上是转变写入过程。
[0394] 如以上描述的那样,即使在MP故障在奇偶校验介质更新中阶段中出现时,无故障的其它MP 121仍然可以接管写入过程以基于过程阶段信息执行转变写入过程。
[0395] 在这一实施例中,存储单元200的存储设备不限于FM 1443。
[0396] 根据这一实施例,可以容许在倒盘过程中在配置RAID组的MPPK 120和FMPK 144中出现的同时故障点,从而防止出现数据丢失。倒盘这里意味着向FMPK 144的FM 1443中写入在CM 121中存储的数据。相似地,即使在同时故障点在多个MPPK 120、多个CMPK 130、多个BEPK 140和多个FMPK 144中出现时,数据丢失仍然未出现。因此,可以改进存储系统10的可靠性。因此,可以改进存储系统10的可靠性。
[0397] 实施例4
[0398] 存储系统10的配置中的其余配置与在实施例1中描述的配置相同。
[0399] 根据实施例4的写入过程
[0400] 现在描述正常写入过程。
[0401] 图68示出了根据实施例4的写入过程。在这一序列图中的操作目标与在图示了根据实施例1的写入过程的序列图中示出的操作目标相同。
[0402] 在本实施例中,旧数据传输命令、新数据传输命令和新数据提交命令被定义为从控制器100向FMPK 144发送的I/O命令。另外,在本实施例中,在SM 132中存储的过程阶段信息项指示奇偶校验生成前阶段和奇偶校验生成后阶段。
[0403] 出于例示的目的,奇偶校验FMPK 144P在写入过程中的状态被称为“FMPK状态”。下文定义FMPK 144的若干状态。
[0404] 首先,MP 121如在根据实施例1的写入过程中那样执行过程S2110至S2350。MP 121因而如在根据实施例1的写入过程中那样注册在两个SM 132中存储的过程阶段信息项的值作为奇偶校验生成前阶段。
[0405] MP 121然后向数据FMPK 144A发送正常读取命令(S8110)。这一正常读取命令指明具有在其中存储的旧用户数据的逻辑页面。因而,数据FMPK 144A从FM 1443读取旧用户数据、向控制器100发送旧用户数据并且向控制器100通知正常读取命令的正常结束。
[0406] 在这一时刻,BEPK 140从数据FMPK 144A接收旧用户数据,并且向缓冲器143中写入旧用户数据。
[0407] 随后,数据FMPK 144A向MP 121通知正常读取命令的正常结束。
[0408] 在这一时刻获得的奇偶校验FMPK 144P的状态被称为“FMPK状态1a”。图71示出了奇偶校验FMPK 144P的FMPK状态。
[0409] MP 121然后向奇偶校验FMPK 144P发送旧数据传输命令(S8120)。这一旧数据传输命令指明具有在其中存储的旧奇偶校验的逻辑页面并且伴随旧奇偶校验。在这一时刻,响应于来自MP 121的指令,BEPK 140从缓冲器143读取旧用户数据,并且向奇偶校验FMPK 144P发送旧用户数据。由于MPPK 120通过内部网络耦合到CMPK 130和BEPK 140,所以MPPK 
120可以控制在CMPK 130和BEPK 140中存储数据。因此,在被从数据FMPK 144读取并且在BEPK 140的缓冲器中存储之后,可以向奇偶校验FMPK 144P传送旧用户数据而未被存储于CM 131中,从而减少对CM 131施加的访问负荷。
[0410] 随后,奇偶校验FMPK 144P从控制器100接收旧数据传输命令和旧用户数据。奇偶校验FMPK 144P因而向FM 1443中写入旧用户数据,并且向控制器100通知旧数据传输命令的正常结束。
[0411] 随后,由奇偶校验FMPK 144P向MP 121通知旧数据传输命令的正常结束。
[0412] 在这一时刻获得的奇偶校验FMPK 144P的状态被称为“FMPK状态2a”。图72示出了奇偶校验FMPK 144P的FMPK状态。
[0413] 因而,MP 121向奇偶校验FMPK 144P发送新数据传输命令(S8130)。这一新数据传输命令指明具有在其中存储的旧用户数据和旧奇偶校验的逻辑页面并且伴随新用户数据。在这一时刻,响应于来自MP 121的指令,BEPK 140从CM 121读取新用户数据、向缓冲器143中写入新用户数据、从缓冲器143读取新用户数据并且向奇偶校验FMPK 144P发送新用户数据。
[0414] 接着,奇偶校验FMPK 144P从控制器100接收新数据传输命令和新用户数据。由FMPK 144在这一实施例中基于新数据传输命令执行的操作不同于在实施例1中描述的操作。因而,奇偶校验FMPK 144P向存储器1445中写入新用户数据、从FM 1443读取旧用户数据和旧奇偶校验、借助XOR电路1442生成新奇偶校验并且向FM 1443中写入新奇偶校验。奇偶校验FMPK 144P然后向控制器100通知新数据传输命令的正常结束。
[0415] 奇偶校验FMPK 144P然后向MP 121通知新数据传输命令的正常结束。因而,MP 121将每个过程阶段信息项的值改变成奇偶校验生成后阶段。
[0416] 在这一时刻获得的奇偶校验FMPK 144P的状态被称为“FMPK状态3a”。图73示出了奇偶校验FMPK 144P的FMPK状态。
[0417] 随后,MP 121向数据FMPK 144A发送正常写入命令(S8140)。这一正常写入命令伴随新用户数据。在这一时刻,响应于来自MP 121的指令,BEPK 140从缓冲器143读取新用户数据,并且向数据FMPK144A发送新用户数据。在这一时刻,BEPK 140向数据FMPK 144A传输在S8130中在缓冲器中存储的新用户数据。由于MPPK 120可以控制CMPK 130和BEPK 140,所以不必再次从CMPK 130读取新用户数据。因此,可以减少对CMPK 130施加的访问负荷。
[0418] 接着,数据FMPK 144A从控制器100接收正常写入命令和新用户数据。数据FMPK 144A因而向FM 1443中写入新用户数据,并且向控制器100通知正常写入命令的正常结束。
以与在图31中所示相同的方式处理正常写入命令。
[0419] 随后,数据FMPK 144A向MP 121通知正常写入命令的正常结束。因而,MP 121向奇偶校验FMPK 144P发送新数据提交命令(S8150)。这一新数据提交命令指明具有在其中存储的新奇偶校验的逻辑页面。
[0420] 接着,奇偶校验FMPK 144P从控制器100接收新数据提交命令。因而,奇偶校验FMPK 144P将新奇偶校验确定为在更新之后的奇偶校验,并且向控制器100通知新数据提交命令的正常结束。
[0421] 然后,奇偶校验FMPK 144P向MP 121通知新数据提交命令的正常结束。因而,MP 121清空每个过程阶段信息项的值。
[0422] 以上是写入过程。
[0423] 以这一方式,控制器100从缓冲器143向奇偶校验FMPK 144P发送旧用户数据而未向CM 131中写入从数据FMPK 144A接收的旧用户数据。作为结果,在写入过程期间对CM 131的访问数目变成三,由此可以减少对CM 131的访问数目。
[0424] 根据这一实施例,可以通过在两个CMPK 120中存储新用户数据和每个过程阶段信息项来改进存储系统10的可靠性。
[0425] 根据实施例4的转变写入过程的具体示例
[0426] 下文现在描述在出现MP故障时执行的转变写入过程的若干具体示例。通过在适当阶段在SM 132中存储过程阶段信息项,无故障的其它MP 121可以在故障在某个MP 121中出现时接管写入过程而未引起数据丢失。
[0427] 根据实施例4的转变写入过程的第一具体示例
[0428] 这里描述在奇偶校验生成前阶段中出现MP故障时执行的转变写入过程。
[0429] 图69示出了根据实施例4的、在奇偶校验生成前阶段中出现MP故障时执行的转变写入过程。在这一序列图中示出的操作目标与在与正常写入过程有关的序列图中示出的操作目标相同。
[0430] 一旦无故障的MP 121识别MP 121故障,MP 121就确认SM 132的每个过程阶段信息项指示奇偶校验生成前阶段。因而,MP 121如在正常写入过程中那样执行过程S8110至S8150。
[0431] MP 121然后清空在SM 132中存储的过程阶段信息项。
[0432] 以上是转变写入过程的第一具体示例。在本实施例中,确保只要过程阶段信息项指示奇偶校验生成前阶段就可以读取在数据FMPK 144A中存在的旧用户数据。因此,执行转变过程的MP 121可以从读取旧用户数据(S8110)的点接管写入过程并且完成写入过程。
[0433] 根据实施例4的转变写入过程的第二具体示例
[0434] 图70示出了根据实施例4的、在奇偶校验生成后阶段中出现MP错误时执行的转变写入过程。在这一序列图中示出的操作目标与在与正常写入过程有关的序列图中示出的操作目标相同。
[0435] 一旦无故障的MP 121识别在其它MP 121中的故障,MP 121就确认SM 132的每个过程阶段信息项指示奇偶校验生成后阶段。因而,MP 121如在正常写入过程中那样从CM 131向BEPK 140传送新用户数据并且执行过程S8140和S8150。
[0436] MP 121然后清空过程阶段信息项。
[0437] 以上是转变写入过程的第二具体示例。在本实施例中,保障只要过程阶段信息项指示奇偶校验生成后阶段就向奇偶校验FMPK 144P的物理页面中写入新奇偶校验。因此,执行转变过程的MP 121可以从写入新用户数据(S8140)的点接管写入过程,并且完成写入过程。
[0438] 根据这一实施例,其它MP 121即使在MP故障在奇偶校验生成前阶段或者奇偶校验生成后阶段中出现时仍然可以接管写入过程以执行转变写入过程。相似地,数据丢失即使在同时故障点在多个MPPK 120、多个CMPK 130、多个BEPK 140和多个FMPK 144中出现时仍然未出现。
[0439] 根据实施例4的向FMPK 144的写入过程
[0440] 下文现在描述在前述写入过程中的FMPK状态。
[0441] 这里的FMPK 144与奇偶校验FMPK 144P相同。
[0442] 图71示出了根据实施例4的在FMPK状态1a中的奇偶校验FMPK 144P的状态。在以下描述中,由从控制器100向奇偶校验FMPK 144P发送的命令指明的逻辑页面被称为“目标逻辑页面”。在FMPK 144的存储器1445中示出的指针表的条目之中,与目标逻辑页面对应的条目被称为“目标条目1446”。目标条目1446具有用于逻辑页面地址(该逻辑页面地址是指明目标逻辑页面的逻辑地址)的字段、用于旧物理页面地址(该旧物理页面地址是指明旧物理页面的物理地址)的字段、用于新物理页面地址(该新物理页面地址是指明新物理页面的物理地址)的字段和用于暂时物理页面地址(该暂时物理页面地址是指明暂时物理页面的物理地址)的字段。在该图和以下描述中,在目标条目1446中,逻辑页面地址被称为“LA”,旧物理页面地址被称为“oPA”,新物理页面地址被称为“nPA”,并且暂时物理页面地址被称为“tPA”。此外,逻辑页面地址的值被描述为“LBA xxxx”,并且旧物理页面地址、新物理页面地址和暂时物理页面地址的值被描述为“p0”、“p1”、“p2”、“p3”和“p4”。
[0443] 在FMPK状态1a之下的奇偶校验FMPK 144P中,在旧物理页面中存储旧奇偶校验。另外,逻辑页面地址和旧物理页面地址相互关联并且被存储于目标条目1446中。
[0444] 图72示出了根据实施例4的FMPK状态2a。在FMPK状态2a之下的奇偶校验FMPK 144P中,在旧物理页面中存储旧奇偶校验,并且在暂时物理页面中存储旧用户数据。在目标条目1446中存储在逻辑页面地址、旧物理页面地址和暂时物理页面地址之间的对应关系。
[0445] 图73示出了根据实施例4的FMPK状态3a。在FMPK状态3a之下的奇偶校验FMPK 144P中,在旧物理页面中存储旧数据,在暂时物理页面中存储旧用户数据,并且在新物理页面中存储新奇偶校验。在目标条目1446中存储在逻辑页面地址、旧物理页面地址、暂时物理页面地址和新物理页面地址之间的对应关系。
[0446] 根据实施例4的、FMPK 144的基于命令的操作
[0447] 接着描述由FMPK 144在实施例4中在FMPK状态之下并且基于在FMPK状态之下出现系统故障时的命令执行的描述。
[0448] 图74示出了根据实施例4的、在FMPK状态1a之下基于旧数据传输命令执行的操作。首先,奇偶校验FMPK 144P从控制器100的BEPK 140接收旧数据传输命令(S9110)。这一旧数据传输命令伴随旧用户数据。奇偶校验FMPK 144P然后向与旧物理页面不同的暂时物理页面中写入旧用户数据(S9120)。接着,奇偶校验FMPK 144P通过指明用于目标条目1446的暂时物理页面地址的暂时物理页面来对旧用户数据执行指针连接(S9130)。奇偶校验FMPK 
144P然后向控制器100发送正常结束响应(S9140)。利用旧数据传输命令,奇偶校验FMPK 
144P可以向与旧奇偶校验不同的物理页面中写入接收的数据而未向旧奇偶校验中改写数据。作为向在FMPK状态1a中的奇偶校验FMPK传输旧数据传输命令的结果,FMPK状态转变成FMPK状态2a。
[0449] 图75示出了根据实施例4的、由奇偶校验FMPK 144P在FMPK状态2a之下基于旧数据传输命令执行的操作。首先,奇偶校验FMPK 144P从控制器100的BEPK 140接收旧数据传输命令(S9210)。这一旧数据传输命令伴随旧用户数据。奇偶校验FMPK 144P然后保护附加暂时物理页面(该附加暂时物理页面是与暂时物理页面不同的物理页面),并且向附加暂时物理页面中写入旧用户数据(S9220)。随后,奇偶校验FMPK 144P通过指明用于目标条目1446的暂时物理页面地址的附加暂时物理页面来执行用于用附加暂时物理页面的第一暂时数据替换暂时物理页面的第一暂时数据的指针替换(S9230)。奇偶校验FMPK 144P然后向控制器100发送正常结束响应(S9240)。在转变写入过程期间在故障在奇偶校验生成前阶段中传输旧数据(S8120)之后出现时执行这一过程。换言之,即使在向在FMPK状态2a中的奇偶校验FMPK传输旧数据传输命令时,仍然可以获得与FMPK状态2a相同的状态。
[0450] 图76示出了根据实施例4的、在状态3a之下在奇偶校验FMPK 144P中基于旧数据传输命令执行的操作。首先,FMPK 144从控制器100的BEPK 140接收旧数据传输命令(S9310)。这一旧数据传输命令伴随第一暂时数据。奇偶校验FMPK 144P然后向附加暂时物理页面中写入第一暂时数据(S9320)。随后,奇偶校验FMPK 144P通过指明用于目标条目1446的暂时物理页面地址的附加暂时物理页面来执行用于用附加暂时物理页面的第一暂时数据替换暂时物理页面的第一暂时数据的指针替换(S9330)。然后,奇偶校验FMPK 144P向控制器100发送正常结束响应(S9340)。在转变写入过程期间在故障在奇偶校验生成前阶段中传输新数据(S8130)之后出现时执行这一过程。换言之,即使在向在FMPK状态3a中的奇偶校验FMPK传输旧数据传输命令时,仍然可以获得与FMPK状态3a相同的状态。
[0451] 图77示出了根据实施例4的、在FMPK状态1a之下基于新数据传输命令执行的操作。首先,奇偶校验FMPK 144P从控制器100的BEPK 140接收新数据传输命令(S9410)。这一新数据传输命令伴随第二暂时数据。第二暂时数据与在前述写入过程中获得的新用户数据相同。FMPK 144然后向控制器100发送异常结束响应(S9420)。
[0452] 图78示出了根据实施例4的、在FMPK状态2a之下基于新数据传输命令执行的操作。首先,奇偶校验FMPK 144P从控制器100的BEPK 140接收新数据传输命令(S9510)。这一新数据传输命令伴随新用户数据。FMPK 144然后向存储器1445中写入新用户数据(S9520)。接着,FMPK 144读取在旧物理页面中的旧奇偶校验和在暂时物理页面中的旧用户数据以及在存储器1445中存储的新用户数据、借助XOR电路1442生成新奇偶校验并且向新物理页面中写入新数据(S9530)。随后,FMPK 144通过指明用于目标条目1446的新物理页面地址的新物理页面来对新奇偶校验执行指针连接(S9540)。FMPK 144然后向控制器100发送正常结束响应(S9550)。作为向在FMPK状态2a中的奇偶校验FMPK传输新数据传输命令的结果,FMPK状态转变成FMPK状态3a。
[0453] 图79示出了根据实施例4的、在FMPK状态3a之下基于新数据传输命令执行的操作。首先,奇偶校验FMPK 144P从控制器100的BEPK 140接收新数据传输命令(S9610)。这一新数据传输命令伴随新用户数据。FMPK 144然后向存储器1445中写入新用户数据(S9620)。奇偶校验FMPK 144P然后读取在旧物理页面中存储的旧数据、在暂时存储物理页面中存储的旧用户数据和在存储器1445中存储的新用户数据、借助XOR电路1442生成新数据、保护附加物理页面(该附加物理页面是与新物理页面不同的物理页面)并且向附加物理页面中写入新数据(S9630)。随后,奇偶校验FMPK 144P通过指明用于目标条目1446的新物理页面地址的附加物理页面来执行用于用在附加物理页面中存储的新数据替换在新物理页面中存储的新数据的指针替换(S9640)。随后,奇偶校验FMPK 144P向控制器100发送正常结束响应(S9650)。在图76中所示的转变写入过程之后的转变写入过程期间在故障在奇偶校验生成前阶段中传输新数据(S8130)之后出现时执行这一过程。换言之,即使在向在FMPK状态3a中的奇偶校验FMPK传输旧数据传输命令时,仍然可以获得与FMPK状态3a相同的状态。
[0454] 以这一方式,无论系统故障存在/不存在,只要过程阶段信息项指示奇偶校验生成前阶段,MP 121就可以通过从旧数据读取过程发布命令来将FMPK状态改变成FMPK状态3a。
[0455] 图80示出了根据实施例4的、在状态1a之下基于新数据提交命令执行的操作。首先,奇偶校验FMPK 144P从控制器100的BEPK 140接收新数据提交命令(S9710)。新数据提交命令指明新数据被存储在其中的逻辑页面。奇偶校验FMPK 144P然后向控制器100发送正常结束响应(S9720)。在转变写入过程期间在故障在奇偶校验生成后阶段中传输新数据提交命令(S8150)之后出现时执行这一过程。
[0456] 图81示出了根据实施例4的、在状态2a之下基于新数据提交命令执行的操作。首先,奇偶校验FMPK 144P从控制器100的BEPK 140接收新数据提交命令(S9810)。这一新数据提交命令指明具有在其中存储的新数据的逻辑页面。奇偶校验FMPK 144P然后向控制器100发送异常结束响应(S9820)。
[0457] 图82示出了根据实施例4的、在状态3a之下基于新数据提交命令执行的操作。首先,奇偶校验FMPK 144P从控制器100的BEPK 140接收新数据提交命令(S9910)。这一新数据提交命令指明新数据被存储在其中的逻辑页面。奇偶校验FMPK 144P然后通过指明用于目标条目1446的旧物理页面地址的新物理页面来执行用于用在新物理页面中存储的新数据替换在旧物理页面中存储的旧数据的指针替换过程,并且通过清空暂时物理页面地址来对在暂时物理页面中存储的第一暂时数据执行指针删除(S9920)。接着,奇偶校验FMPK 144P向控制器100发送正常结束响应(S9930)。作为这一过程的结果,即使在奇偶校验生成后阶段中传输新数据提交命令之前出现故障时,状态仍然可以转变成如下状态,在该状态中在奇偶校验FMPK 144P中确定新奇偶校验。以这一方式,定义命令中的每个命令可以允许即使在出现系统故障时仍然接管过程并且防止出现数据丢失。此外,在本实施例中,在过程阶段信息项指示“奇偶校验生成前阶段”和“奇偶校验生成后阶段”这两个阶段时,在出现故障时接管过程,由此可以减少对SM 132的用于在其中记录过程阶段信息项的访问数目和访问负荷。
[0458] 实施例5
[0459] 这一实施例具有与在实施例2中描述的功能相同的功能,但是例示FMPK 144的XOR电路1442仅支持SCSI命令的XPWRITE功能的情形。另外,在本实施例中,在SM 132中存储的过程阶段信息项指示奇偶校验生成前阶段、在奇偶校验介质更新过程中的阶段和奇偶校验生成后阶段。
[0460] 根据实施例5的写入过程
[0461] 下文现在描述正常写入过程。
[0462] 图83示出了根据实施例5的写入过程。在这一序列图中,数据FMPK 144A的DFa和DFb代表数据FMPK 144A的存储器1445和FM 1443(物理页面)。奇偶校验FMPK 144P的DFa和DFb也代表奇偶校验FMPK 144P的存储器1445和FM 1443(物理页面)。在这一序列图中的操作的关键组成与在与根据实施例2的写入过程有关的序列图中示出的关键组成相同。
[0463] 首先,MP 121如在根据实施例1的写入过程中那样执行过程S2110至S2350。MP 121因而如在根据实施例1的写入过程中那样将与两个CM 131的具有在其中存储的新用户数据的区域对应的两个SM 132的过程阶段信息项的值改变成奇偶校验生成前。
[0464] MP 121然后如在根据实施例4的写入过程中那样执行过程S8110。因而,BEPK 140从数据FMPK 144A接收旧用户数据并且向缓冲器143中写入旧用户数据。MP 121因而将每个过程阶段信息的值改变成奇偶校验介质更新。
[0465] 随后,MP 121向奇偶校验FMPK 144P发送XPWRITE命令(S8320)。这一XPWRITE命令指明具有在其中存储的旧奇偶校验的逻辑页面并且伴随旧用户数据。在这一时刻,响应于来自MP 121的指令,BEPK 140从缓冲器143读取旧用户数据并且向奇偶校验FMPK 144P发送旧用户数据。
[0466] 随后,奇偶校验FMPK 144P从控制器100接收XPWRITE命令和旧用户数据。奇偶校验FMPK 144P因而向存储器1445中写入旧用户数据、从FM 1443读取旧奇偶校验、从存储器1445读取旧用户数据、使用XOR电路1442来生成中间奇偶校验并且向FM 1443的存储器1445中写入中间奇偶校验。奇偶校验FMPK 144P然后向控制器100通知XPWRITE命令的正常结束。
[0467] 随后,奇偶校验FMPK 144P向MP 121通知XPWRITE命令的正常结束。
[0468] 因而,MP 121向奇偶校验FMPK 144P发送XPWRITE命令(S8330),这一XPWRITE命令指明具有在其中存储的中间奇偶校验的存储器1445的物理地址并且伴随新用户数据。在这一时刻,响应于来自MP 121的指令,BEPK 140从CM 121读取新用户数据、向缓冲器143中写入新用户数据、从缓冲器143读取新用户数据并且向奇偶校验FMPK 144P发送新用户数据。
[0469] 接着,奇偶校验FMPK 144P从控制器100接收XPWRITE命令和新用户数据。奇偶校验FMPK 144P因而向存储器1445中写入新用户数据、从存储器1445读取中间奇偶校验、从存储器1445读取新用户数据、借助XOR电路1442根据中间奇偶校验和新用户数据生成新奇偶校验并且向FM 1443中写入新奇偶校验。奇偶校验FMPK 144P然后向控制器100通知XPWRITE命令的正常结束。
[0470] 随后,奇偶校验FMPK 144P向MP 121通知XPWRITE命令的正常结束。MP 121因而将每个过程阶段信息项的值改变成奇偶校验生成后阶段。
[0471] MP 121然后向数据FMPK 144A发送正常写入命令(S8340)。这一正常写入命令伴随新用户数据。
[0472] 数据FMPK 144A然后从控制器100接收正常写入命令和新用户数据。数据FMPK 144A因而向FM 1443中写入新用户数据并且向控制器100通知正常写入命令的正常结束。
[0473] 随后,数据FMPK 144A向MP 121通知正常写入命令的正常结束。MP 121因而清空每个过程阶段信息项的值。
[0474] 以上是写入过程。
[0475] 以这一方式,控制器100从缓冲器143向奇偶校验FMPK 144P发送旧用户数据而未向CM 131中写入从数据FMPK 144A接收的旧用户数据。作为结果,减少在写入过程期间对CM 131的访问数目,由此可以减少对CM 131的访问数目。
[0476] 另外,根据这一实施例,可以通过向两个CMPK 120中存储新用户数据和每个过程阶段信息项来改进存储系统10的可靠性。
[0477] 根据实施例5的转变写入过程的具体示例
[0478] 下文描述在出现MP故障时执行的转变写入过程的若干具体示例
[0479] 根据实施例5的转变写入过程的第一具体示例
[0480] 这里描述在奇偶校验生成前阶段中出现MP故障时执行的转变写入过程。
[0481] 图84示出了根据实施例5的、在奇偶校验生成前阶段中出现MP故障时执行的转变写入过程。在这一序列图中示出的操作目标与在与正常写入过程有关的序列图中示出的操作目标相同。
[0482] 一旦无故障的MP 121识别在另一MP 121中的故障,MP 121就确认过程阶段信息项指示奇偶校验生成前阶段。因而,MP 121如在正常写入过程中那样执行过程S8110至S8340。换言之,在过程阶段信息项指示奇偶校验生成前阶段时,MP 121从旧用户数据从数据FMPK 
144A被传输到BEPK 140的缓冲器143的点接管写入过程。
[0483] 随后,MP 121清空在SM 132中存储的过程阶段信息项。
[0484] 以上是转变写入过程。
[0485] 根据实施例5的转变写入过程的第二具体示例。
[0486] 这里描述在奇偶校验介质更新中阶段中出现MP故障时执行的转变写入过程。
[0487] 图85示出了根据实施例5的、在奇偶校验介质更新中阶段中出现MP故障时执行的转变写入过程。在这一序列图中图示的关键操作目标与在与正常写入过程有关的序列图中示出的关键操作目标相同。
[0488] 一旦无故障的MP 121识别故障在其它MP中出现,MP 121就确认过程阶段信息项指示奇偶校验介质更新中阶段。因而,MP 121如在根据实施例2的、在奇偶校验介质更新中阶段中出现MP故障时执行的转变写入过程(见图56)中那样执行过程S6510和S6520。换言之,无故障的MP 121从生成新奇偶校验的过程接管写入过程。
[0489] MP 121然后向奇偶校验FMPK 144P发送正常写入命令(S8360)。这一正常写入命令伴随新奇偶校验。因而,BEPK 140向缓冲器143中写入在CM 121中存储的新奇偶校验,并且向奇偶校验FMPK 144P发送新奇偶校验。奇偶校验FMPK 144P因而向FM1443中写入新奇偶校验。
[0490] 随后,奇偶校验FMPK 144P向MP 121通知正常写入命令的正常结束。MP 121因而将每个过程阶段信息项的值改变成在奇偶校验生成后。
[0491] MP 121然后向数据FMPK 144A发送正常写入命令(S8370)。正常写入命令伴随新用户数据。因而,BEPK 140向缓冲器143中写入在CM 121中存储的新用户数据,并且向数据FMPK 144A发送新用户数据。数据FMPK 144A因而向FM 1443中写入新用户数据。
[0492] 随后,MP 121清空在SM 132中存储的每个过程阶段信息项。
[0493] 以上是转变写入过程。
[0494] 根据实施例5的转变写入过程的第三具体示例。
[0495] 这里描述在奇偶校验生成后阶段中出现MP故障时执行的转变写入过程。
[0496] 图86示出了根据实施例5的、在奇偶校验生成后中出现MP故障时执行的转变写入过程。在这一序列图中图示的操作中的关键组成与在与正常写入过程有关的序列图中示出的关键组成相同。
[0497] 一旦无故障的MP 121识别MP故障,MP 121就确认过程阶段信息项指示奇偶校验生成后。因而,MP 121如在奇偶校验介质更新中出现MP故障时执行的前述转变写入过程中那样执行过程S8370。换言之,无故障的MP 121从向数据FMPK 144A发送正常写入命令的点接管写入过程(S8370)。
[0498] 随后,MP 121清空在SM 132中存储的过程阶段信息项。
[0499] 以上是转变写入过程。
[0500] 根据这些转变写入过程(第一具体示例至第三具体示例),即使在MP故障在由过程阶段信息项指示的奇偶校验生成前阶段、在奇偶校验更新过程中的阶段或者奇偶校验生成后阶段中出现时,在本实施例中,无故障的另一MP 121仍然可以接管写入过程以执行转变写入过程。相似地,数据丢失在本实施例中即使在同时故障点在多个MPPK 120、多个CMPK 130和多个BEPK 140中出现时仍然未出现。因此,可以改进存储系统10的可靠性。因此,可以改进存储系统10的可靠性。
[0501] 此外,这一实施例可以通过使用FMPK 144的XPWRITE功能来实现与在实施例2中描述的功能相同的功能。
[0502] 实施例6
[0503] 这一实施例具有与在实施例5中描述的配置相同的配置,并且例示了比实施例5更多地改进存储系统10的可靠性的情形。在这一实施例中,在SM 132中存储的过程阶段信息项指示奇偶校验生成前阶段、在奇偶校验介质更新过程中的阶段和奇偶校验生成后阶段。
[0504] 根据实施例6的写入过程
[0505] 下文描述正常写入过程。
[0506] 图87示出了根据实施例6的写入过程。在这一序列图中图示的操作目标与在与根据实施例2的写入过程有关的序列图中示出的操作目标相同。
[0507] 首先,MP 121如在根据实施例1的写入过程中那样执行过程S2110至S2350。MP 121因而将与具有在其中存储的新用户数据的两个CM 131对应的两个SM 132的过程阶段信息项的值改变成奇偶校验生成前。
[0508] MP 121然后如在根据实施例4的写入过程中那样执行过程S6310。因而,向缓冲器143写入在奇偶校验FMPK 144P中存储的旧奇偶校验。
[0509] 随后,MP 121如在根据实施例4和实施例5的写入过程中那样执行过程S8110。因而,向缓冲器143写入在数据FMPK 144A中存储的旧用户数据。MP 121因而将每个过程阶段信息项的值改变成奇偶校验介质更新。
[0510] MP 121然后如在根据实施例5的写入过程中那样执行过程S8320至S8340。因而,在奇偶校验FMPK 144P中生成并且向存储器1445写入中间奇偶校验。此外,向缓冲器143中写入在CM 121中存储的新用户数据。在奇偶校验FMPK 144P中生成并且向FM1443中写入新奇偶校验。
[0511] 因而,MP 121清空在SM 132中存储的每个过程阶段信息项。
[0512] 以上是写入过程。
[0513] 以这一方式,控制器100从缓冲器143向奇偶校验FMPK 144P发送旧用户数据而未向CM 131中写入从数据FMPK 144A接收的旧用户数据。作为结果,减少在写入过程期间对CM 131的访问数目。
[0514] 另外,根据这一实施例,可以通过在两个CMPK 120中存储新用户数据、每个过程阶段信息和旧奇偶校验来改进存储系统10的可靠性。
[0515] 根据实施例6的转变写入过程的具体示例
[0516] 下文现在描述在出现MP故障时执行的转变写入过程的若干具体示例。
[0517] 根据实施例6的转变写入过程的第一具体示例
[0518] 这里描述在奇偶校验生成前阶段中出现MP故障时执行的转变写入过程。
[0519] 图88示出了根据实施例6的、在奇偶校验生成前阶段中出现MP故障时执行的转变写入过程。在这一序列图中图示的操作目标与在与正常写入过程有关的序列图中示出的操作目标相同。
[0520] 一旦无故障的MP 121识别故障在另一MP 121中出现,MP 121就确认过程阶段信息项指示奇偶校验生成前阶段。因而,MP 121如在正常写入过程中那样执行过程S6310至S8340。换言之,无故障的MP 121从向缓冲器143写入在奇偶校验FMPK 144P中存储的旧奇偶校验的点接管写入过程。
[0521] MP 121因而清空在SM 132中存储的过程阶段信息项。
[0522] 以上是转变写入过程。
[0523] 根据实施例6的转变写入过程的第二具体示例
[0524] 这里描述在奇偶校验介质更新中阶段中出现MP故障时执行的转变写入过程。
[0525] 图89示出了根据实施例6的、在奇偶校验介质更新中阶段中出现MP故障时执行的转变写入过程。在这一序列图中图示的操作的关键组成与在与正常写入过程有关的序列图中示出的关键组成相同。
[0526] 一旦无故障的MP 121识别故障在另一MP 121中出现,MP 121就确认过程阶段信息项指示在奇偶校验介质更新的过程中的阶段。因而,MP 121向奇偶校验FMPK 144P发送正常写入(S8210)。换言之,无故障的MP 121从向奇偶校验FMPK 144P发送正常写入命令的点接管写入过程。这一正常写入命令伴随旧奇偶校验。因而,BEPK 140向缓冲器143中写入在CM 121中存储的旧奇偶校验,并且向奇偶校验FMPK 144P发送旧奇偶校验。因而,奇偶校验FMPK 
144P向FM 1443中写入旧奇偶校验。
[0527] 奇偶校验FMPK 144P然后向MP 121通知正常写入命令的正常结束。因而,MP 121向奇偶校验FMPK 144P发送XPWRITE命令(S8220)。这一正常写入命令伴随旧用户数据。因而,BEPK 140向缓冲器143中写入在CM 121中存储的旧用户数据,并且向数据FMPK 144A发送旧用户数据。奇偶校验FMPK 144P因而向存储器1445中写入旧用户数据、根据在FM 1443中存储的旧奇偶校验和在存储器1445中存储的旧用户数据生成中间奇偶校验并且向FM 1443中写入中间奇偶校验。
[0528] 随后,奇偶校验FMPK 144P向MP 121通知XPWRITE命令的正常结束。MP 121因而如在正常写入过程中那样执行S8330和S8340。
[0529] 因而,MP 121清空在SM 132中存储的每个过程阶段信息项。
[0530] 以上是转变写入过程。
[0531] 根据实施例6的转变写入过程的第三具体示例
[0532] 这里描述在奇偶校验生成后阶段中出现MP故障时执行的转变写入过程。
[0533] 图90示出了根据实施例6的、在奇偶校验生成后阶段中出现MP故障时执行的转变写入过程。在这一序列图中图示的操作目标与在与正常写入过程有关的序列图中示出的操作目标相同。
[0534] 一旦无故障的MP 121识别故障已在MP 121中出现,MP 121就确认过程阶段信息项指示奇偶校验生成后阶段。因而,MP 121然后向数据FMPK 144A发送正常写入命令(S8230)。无故障的MP 121从向数据FMPK 144A发送正常写入命令的点接管写入过程。这一正常写入命令伴随新用户数据。
[0535] 随后,数据FMPK 144A从控制器100接收正常写入命令和新用户数据。数据FMPK 144A因而向FM 1443中写入在CM 131中存储的新用户数据,并且向控制器100通知正常写入命令的正常结束。
[0536] 随后,数据FMPK 144A向MP 121通知正常写入命令的正常结束。MP 121因而清空在SM 132中存储的每个过程阶段信息项的值。
[0537] 以上是转变写入过程。
[0538] 根据这些转变写入过程(第一至第三具体示例),即使在MP故障在奇偶校验生成前阶段、奇偶校验介质更新中阶段或者奇偶校验生成后阶段中出现时,无故障的其它MP 121仍然可以接管写入过程以执行转变写入过程。相似地,数据丢失即使在同时故障点在多个MPPK 120、多个CMPK 130、多个BEPK 140和多个FMPK 144中出现时仍然未出现。因此,可以改进存储系统10的可靠性。因此,可以改进存储系统10的可靠性。
[0539] 这一实施例可以通过使用FMPK 144的XPWRITE功能来实现与在实施例2中描述的功能相同的功能。另外,这一实施例可以通过向两个CM 121中写入旧奇偶校验来比实施例5更好地改进存储系统10的可靠性。
[0540] 实施例7
[0541] 这一实施例例示了实施例1应用于RAID级6的情形。
[0542] 控制器100使用多个FMPK 144以构造RAID级6的RAID组。这一RAID组使用Reed-Solomon方法。通过使用用户数据D[0],D[1],...,D[n-1]和Q个奇偶校验生成系数A[0]、A[1]、A[n-1]、通过使用以下公式来获得P奇偶校验和Q奇偶校验:
[0543] P=D[0]+D[1]+...+D[n-1]...(Ep)
[0544] Q=A[0]*D[0]+A[1]*D[1]+...+A[n-1]*D[n-1](Eq)
[0545] FMPK 144的存储器1445具有在其中存储的A[i],其中i是在条内的数据行编号(i=0,1,...,n-1)。可以在XOR电路1442中存储A[i]。
[0546] 根据实施例7的写入过程
[0547] 下文现在描述正常写入过程。
[0548] 在各图中,将根据实施例7的写入过程划分成第一过程和第二过程。图91示出了根据实施例7的写入过程的第一过程。图92示出了根据实施例7的写入过程的第二过程。
[0549] 在以下描述中,将根据旧用户数据生成的P奇偶校验称为“旧奇偶校验”,将根据旧用户数据生成的Q奇偶校验称为“旧Q奇偶校验”,将根据新用户数据生成的P奇偶校验称为“新奇偶校验”,并且将根据新用户数据生成的Q奇偶校验称为“新Q奇偶校验”。
[0550] 在以下描述中,在配置RAID组的多个PMPK 144之中,具有在其中存储的旧奇偶校验的FMPK 144被称为“奇偶校验FMPK 144P”,并且具有在其中存储的旧Q奇偶校验的FMPK 144被称为“奇偶校验FMPK 144Q”。在存储系统10中的除了奇偶校验FMPK 144Q的配置之外的配置与在实施例1中描述的配置相同。控制器100向奇偶校验FMPK 144Q发送指示数据行编号的信息,从而使得奇偶校验FMPK 144Q指定A[i]。
[0551] 在这一实施例中,将Q奇偶校验中间奇偶校验传输命令新定义为从控制器100向FMPK 144发送的I/O命令。
[0552] 在第一过程的序列图中图示的操作目标中的每个操作目标与在与根据实施例1的写入过程有关的序列图中图示的操作目标中的每个操作目标相同。在第二过程的序列图中图示的操作目标除了在第一过程的序列图中图示的操作目标之外是在奇偶校验FMPK 144Q内的端口、在奇偶校验FMPK 144Q内的XOR电路1442以及在奇偶校验FMPK 144Q内的存储介质QFa和QFb。奇偶校验FMPK 144Q的存储介质QFa和QFb分别代表在FM 1443中存储的两个物理页面。
[0553] 下文描述写入过程的第一过程。
[0554] 首先,MP 121如在根据实施例1的写入过程中那样执行过程S2110至S3120。因而,BEPK 140的缓冲器143具有在其中存储的中间奇偶校验。另外,奇偶校验FMPK 144P的FM 1443具有在其中存储的旧奇偶校验和新奇偶校验。
[0555] 下文描述写入过程的第二过程。
[0556] 随后,MP 121向奇偶校验FMPK 144Q发送Q奇偶校验中间奇偶校验传输命令(S9110)。这一Q奇偶校验中间奇偶校验传输命令指明具有在其中存储的旧Q奇偶校验的逻辑页面并且伴随中间奇偶校验和数据行编号。在这一时刻,响应于来自MP 121的指令,BEPK 140从缓冲器143读取中间奇偶校验,并且向奇偶校验FMPK 144Q发送中间奇偶校验。
[0557] 奇偶校验FMPK 144Q然后从控制器100接收Q奇偶校验中间奇偶校验传输命令、中间奇偶校验和数据行编号。奇偶校验FMPK 144Q因而向存储器1445中写入中间奇偶校验、读取在FM 1443中存储的旧Q奇偶校验、读取在存储器1445中存储的中间奇偶校验、基于数据行编号读取在存储器1445中存储的Q奇偶校验生成系数、借助XOR电路1442生成新Q奇偶校验并且向FM 1443中写入新奇偶校验Q。奇偶校验FMPK 144Q然后向控制器100通知Q奇偶校验中间奇偶校验传输命令的正常结束。
[0558] 随后,奇偶校验FMPK 144Q向MP 121通知正常结束。MP 121因而将每个过程阶段信息项的值改变成奇偶校验生成后阶段。
[0559] MP 121然后向奇偶校验FMPK 144P发送新数据提交命令(S9120)。这一新数据提交命令指明具有在其中存储的新用户数据的逻辑页面。
[0560] 然后,数据FMPK 144A从控制器100接收新数据提交命令。因而,数据FMPK 144A将新用户数据确定为在更新之后的用户数据,并且向控制器100通知新数据提交命令的正常结束。
[0561] 随后,数据FMPK 144A向MP 121通知新数据提交命令的正常结束。因而,MP 121向奇偶校验FMPK 144P发送新数据提交命令(S9230)。这一新数据提交命令指明具有在其中存储的新奇偶校验的逻辑页面。
[0562] 奇偶校验FMPK 144P然后从控制器100接收新数据提交命令。因而,奇偶校验FMPK 144P将新奇偶校验确定为在更新之后的P奇偶校验,并且向控制器100通知新数据提交命令的正常结束。
[0563] 随后,奇偶校验FMPK 144P向MP 121通知新数据提交命令的正常结束。MP 121因而向奇偶校验FMPK 144Q发送新数据提交命令(S9240)。这一新数据提交命令指明具有在其中存储的新Q奇偶校验的逻辑页面。
[0564] 奇偶校验FMPK 144Q然后从控制器100接收新数据提交命令。因而,奇偶校验FMPK 144Q将新Q奇偶校验确定为在更新之后的Q奇偶校验,并且向控制器100通知新数据提交命令的正常结束。
[0565] 随后,奇偶校验FMPK 144Q向MP 121通知新数据提交命令的正常结束。因而,MP 121清空在SM 132中存储的每个过程阶段信息项的值。
[0566] 以上是写入过程。
[0567] 以这一方式,控制器100从缓冲器143向奇偶校验FMPK 144P和奇偶校验FMPK 144Q发送中间奇偶校验而未向CM 131中写入从数据FMPK 144A接收的中间奇偶校验。作为结果,减少在写入过程期间对CM 131的访问数目。
[0568] 此外,与实施例1一样,数据丢失即使在同时故障点在多个MPPK 120、多个CMPK 130、多个BEPK 140和多个FMPK 144中出现时仍然未出现。因此,可以改进存储系统10的可靠性。因此,可以改进存储系统10的可靠性。
[0569] 根据以上描述的实施例中的每个实施例,减少对CM 131的访问数目可以减少与CMPK 130的通信的通信开销和对CM 121的负荷,从而提高存储系统10的吞吐量。
[0570] 根据以上描述的实施例中的每个实施例,可以通过在两个CMPK 120中存储新用户数据和每个过程阶段信息项来改进存储系统10的可靠性。
[0571] 另外,根据以上描述的实施例中的每个实施例,即使在同时故障点在写入过程期间在多个MPPK 120、多个CMPK 130和多个BEPK 140中出现时仍然可以防止出现数据丢失。
[0572] 在以上描述的实施例中的每个实施例中,可以使用汉宁代码。冗余性代码等取代奇偶校验。
[0573] 另外,由控制器100执行的操作的步骤的顺序经常被改变。例如,可以交换S3230和S3320。此外,也可以交换S8120和S8310。
[0574] 每个逻辑区域组可以是以基于RAID组的条的形式。每个逻辑区域可以是配置条的单元或者可以被一对一提供给非易失性存储器。每个逻辑区域组可以是向写入请求被传输到的传输源设备(例如,主机计算机或者另一存储系统)提供的逻辑单元的部件,或者可以是向多个虚拟分段(虚拟存储区域)中的任何虚拟分段(虚拟存储区域)动态地分配的区域组(在写入在虚拟分段上出现时向写入目的地虚拟分段分配的区域组),这些虚拟分段(虚拟存储区域)配置向传输源设备提供的虚拟逻辑单元(例如,根据精简配置的逻辑单元)。在后一种情况下,存储区域池可以由多个逻辑分段配置。每个逻辑分段可以由一个或者多个逻辑区域组配置并且以逻辑分段为单位被分配给虚拟分段。存储区域池可以由多个逻辑单元配置,在该情况下,逻辑单元中的每个逻辑单元可以由两个或者更多逻辑分段配置。
[0575] 本说明书已经例如描述根据(描述1)至(描述4)的以下存储系统。
[0576] (描述1)
[0577] 一种存储系统,包括:
[0578] 多个存储设备,多个存储设备中的每个存储设备具有多个存储介质和用于控制多个存储介质的设备控制器并且具有由多个存储介质配置的RAID组;以及
[0579] 系统控制器,系统控制器具有处理器、通过预定通信网络耦合到多个存储设备和处理器的缓冲存储器以及通过预定通信网络耦合到处理器和缓冲存储器的高速缓存存储器,
[0580] 其中处理器在高速缓存存储器中存储与来自主机计算机的写入请求有关的第一数据、从多个存储设备指定用于存储在更新之前的数据的第一存储设备,在更新之前的数据是在更新第一数据之前获得的数据,并且向指定的第一存储设备传送第一数据,[0581] 第一存储设备的第一设备控制器从第一存储设备向系统控制器传输第一数据和基于在更新之前的数据的第二数据,并且
[0582] 处理器在缓冲存储器中存储第二数据、从多个存储设备指定第二存储设备、向指定的第二存储设备传送存储的第二数据并且管理指示对写入请求执行的过程的阶段的过程阶段信息项。
[0583] (描述2)
[0584] 根据描述1的存储系统,
[0585] 其中第二数据是中间奇偶校验,并且第二存储设备是在更新之前的奇偶校验数据被存储在其中的存储设备,
[0586] 第一设备控制器基于在第一存储设备中存储的第一数据和在更新之前的数据计算中间奇偶校验,并且向系统控制器传输计算的中间奇偶校验,
[0587] 处理器在缓冲存储器中存储中间奇偶校验并且向第二存储设备传送存储的中间奇偶校验,并且
[0588] 第二存储设备的第二设备控制器基于传送的中间奇偶校验和在更新之前的奇偶校验计算更新的奇偶校验,并且向第二存储设备中写入计算的更新的奇偶校验。
[0589] (描述3)
[0590] 根据描述2的存储系统,
[0591] 其中存储介质中的每个存储介质是闪存,
[0592] 在更新之前的数据被存储于闪存的第一物理区域中,并且
[0593] 第一设备控制器在与闪存的第一物理区域不同的第二物理区域中存储第一数据,并且保持在更新之前的数据与第一物理区域之间的对应关系和第一数据与第二物理区域之间的对应关系直至更新的奇偶校验被存储于第二存储设备的闪存中。
[0594] (描述4)
[0595] 根据描述4的存储控制装置,
[0596] 其中第一设备控制器向由写入请求指明的第一逻辑区域分配存储在更新之前的数据的第一物理区域,并且向第二物理区域中写入从第二存储器获得的第一数据,第二物理区域是第一存储设备中的、与第一物理区域不同的物理区域,并且
[0597] 在向第二存储设备写入更新的奇偶校验之后,第一设备控制器向第一逻辑区域分配第二物理区域。
[0598] 在这些描述中,系统控制器和附加系统控制器例如对应于MP121。每个设备控制器例如对应于FMPK 144的CPU 1444。每个存储设备例如对应于FMPK 144的FM 1443。第一存储器例如对应于SM132。第一数据例如对应于新用户数据。第二数据例如对应于中间奇偶校验或者旧用户数据。
[0599] 标号列表
[0600] 10   存储系统
[0601] 100   控制器
[0602] 112   传送电路
[0603] 113   缓冲器
[0604] 123   内部路径
[0605] 142   传送电路
[0606] 143   缓冲器
[0607] 150   通信网络
[0608] 200   存储单元
[0609] 1441  端口
[0610] 1442  逻辑运算电路
[0611] 1443  FM(闪存)
[0612] 1444  CPU(中央处理单元)
[0613] 1445  存储器
[0614] 1446  目标条目
QQ群二维码
意见反馈