CN104246707B - 存储系统和存储装置 - Google Patents
存储系统和存储装置 Download PDFInfo
- Publication number
- CN104246707B CN104246707B CN201280072490.5A CN201280072490A CN104246707B CN 104246707 B CN104246707 B CN 104246707B CN 201280072490 A CN201280072490 A CN 201280072490A CN 104246707 B CN104246707 B CN 104246707B
- Authority
- CN
- China
- Prior art keywords
- data
- odd check
- storage device
- fmpk
- controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1059—Parity-single bit-RAID5, i.e. RAID 5 implementations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种存储系统包括第一控制器和多个存储设备。多个存储设备配置RAID,这些多个存储设备中的每个存储设备包括一个或者多个非易失性存储器芯片和耦合到非易失性存储器芯片的第二控制器,这些非易失性存储器芯片提供其中存储来自主机计算机的数据的存储空间。在第一控制器从主机计算机接收用于将第一数据更新成第二数据的更新请求的情况下,存储设备中的第一存储设备中的第二控制器被配置为在第一存储设备的存储空间中的、与其中已经存储有第一数据的区域不同的区域中存储第二数据;生成将第一数据和第二数据关联的信息;并且基于第一数据和第二数据生成中间奇偶校验。存储设备中的、存储与第一数据对应的第一奇偶校验的第二存储设备中的第二控制器被配置为接收中间奇偶校验、基于第一奇偶校验和中间奇偶校验生成第二奇偶校验、并且在第二存储设备的存储空间中的区域中存储第二奇偶校验。第一存储设备中的第二控制器被配置为在第二奇偶校验被存储于第二存储设备的存储空间中的区域中之后删除信息,并且设置其中已经存储有第一数据的区域作为擦除目标区域。
Description
技术领域
本发明涉及一种用于操作在存储装置中存储的冗余码的技术。
背景技术
已知一种用于根据控制多个存储设备的存储系统控制器配置RAID(独立盘冗余阵列)并且防止数据丢失的技术。例如在使用RAID 5的存储系统中,与相对于存储设备的较高级装置等效的存储系统控制器从多个数据块创建奇偶校验(parity)。
有如下存储系统,在该存储系统中,与较低级装置等效的相应存储设备配置RAID以便减少存储系统控制器在创建以上提到的奇偶校验之后的处理。每个存储设备例如是HDD(硬盘驱动),并且每个HDD的控制器(下文为HDD控制器)创建奇偶校验。
例如在专利文献1中,在存在关于更新前数据(旧数据)的数据更新请求时,HDD控制器在创建用于从更新的数据(新数据)和更新前的数据(旧数据)创建奇偶校验的中间值(中间奇偶校验)之后将旧数据更新成新数据。HDD控制器向其中正在存储与旧数据对应的旧奇偶校验的HDD传送所创建的中间奇偶校验。在接收中间奇偶校验的HDD中,HDD控制器从中间奇偶校验和旧奇偶校验创建新奇偶校验并且用创建的新奇偶校验更新旧数据。
随着闪存价格近年来下降,已经越来越多地使用闪存SSD(闪存固态驱动)取代HDD作为存储设备。在HDD中,在存在关于某个逻辑地址范围标识的数据的更新请求时,向其中存储相关数据(旧数据)的物理数据重写更新的数据(新数据)。然而在闪存SSD中,由于数据的重写是不可能的,所以在存在对于逻辑地址标识的数据的更新请求时,在与其中存储相关数据的物理区域不同的物理区域中存储更新的数据,并且将新物理区域映射到标识的逻辑地址。根据这一点,使在闪存SSD中的其中存储旧数据的物理区域无效。
引用列表
专利文献
PTL 1:US 5,191,584
发明内容
技术问题
在专利文献1中,由于在已经创建中间奇偶校验之后用新数据重写旧数据,所以旧数据在创建中间奇偶校验之后中止存在。出于这一原因,在故障在正在更新奇偶校验之前(例如在向其中正在存储旧奇偶校验的HDD传送中间奇偶校验之前)出现并且中间奇偶校验丢失的情况下,旧数据不再存在,并且这样不能再次创建中间奇偶校验。
备选地,在已经用闪存SSD替换存储设备的情况下,由于未在闪存中重写数据,所以有旧数据将在已经创建中间奇偶校验之后保留这样的可能性。然而在闪存SSD中,在写入新数据时使存储旧数据的物理区域无效,并且在规定的时间删除旧数据。也就是说,在闪存SSD中,存在旧数据将在故障出现时不再存在这样的可能性,在该情况下,将不能够与在引用的文献1中同样地创建中间奇偶校验。
对问题的解决方案
作为本发明的一个方面的一种存储系统包括第一控制器和多个存储设备。多个存储设备配置RAID,这些多个存储设备中的每个存储设备包括一个或者多个非易失性存储器芯片和耦合到非易失性存储器芯片的第二控制器,这些非易失性存储器芯片提供其中存储有来自主机计算机的数据的存储空间。在第一控制器接收对于将第一数据更新成第二数据的更新请求的情况下,存储设备中的第一存储设备中的第二控制器被配置为在第一存储设备的存储空间中的、与其中已经存储有第一数据的区域不同的区域中存储第二数据;生成将第一数据和第二数据关联的信息;并且基于第一数据和第二数据生成中间奇偶校验。存储设备中的、存储与第一数据对应的第一奇偶校验的第二存储设备中的第二控制器被配置为接收中间奇偶校验、基于第一奇偶校验和中间奇偶校验生成第二奇偶校验、并且在第二存储设备的存储空间中的区域中存储第二奇偶校验。第一存储设备中的第二控制器被配置为在第二奇偶校验被存储于第二存储设备的存储空间中的区域中之后删除信息,并且设置其中已经存储有第一数据的区域作为擦除目标区域。
附图说明
[图1]图1示出存储系统的配置的示例。
[图2]图2示出系统控制器20的配置的示例,
[图3]图3示出与示例1有关的计算机系统的配置的示例。
[图4]图4示出RG和Lu的配置的示例。
[图5]图5示出RG管理表600的示例。
[图6]图6示出LU管理表700的示例。
[图7]图7示出FMPK管理表800的示例。
[图8]图8示出在RG上的地址空间的示例。
[图9]图9示出在属于RG的FMPK 50上的地址空间的示例。
[图10]图10示出在FMPK 50中的页面映射的示例。
[图11]图11示出页面映射管理表1100的示例。
[图12]图12示出奇偶校验运算功能注册过程的示例。
[图13]图13示出用于判决奇偶校验运算实现装置的方法1300的示例。
[图14]图14示出系统控制器20写入过程的示例。
[图15]图15示出第一奇偶校验运算选择过程的示例。
[图16]图16示出第二奇偶校验运算选择过程的示例。
[图17]图17示出第三奇偶校验运算选择过程的示例。
[图18]图18示出第四奇偶校验运算选择过程的示例。
[图19]图19示出写入方法选择过程1403的示例。
[图20]图20示出第一读取-修改-写入过程的示例。
[图21]图21示出存储控制器20在第一读取-修改-写入过程中的操作的示例。
[图22]图22示出第二读取-修改-写入过程的示例。
[图23]图23示出存储控制器20在第二读取-修改-写入过程中的操作的示例。
[图24]图24示出第三读取-修改-写入过程的示例。
[图25]图25示出存储控制器20在第三读取-修改-写入过程中的操作的示例。
[图26]图26示出第一全条带写入过程的示例。
[图27]图27示出存储控制器20在第一全条带写入过程中的操作的示例。
[图28]图28示出第二全条带写入过程的示例。
[图29]图29示出存储控制器20在第二全条带写入过程中的操作的示例。
[图30]图30示出第一数据恢复过程的示例。
[图31]图31示出存储控制器20在第一数据恢复过程中的操作的示例。
[图32]图32示出第二数据恢复过程的示例。
[图33]图33示出存储控制器20在第二数据恢复过程中的操作的示例。
[图34]图34示出设备控制器60的根据正常写入命令的处理的示例。
[图35]图35示出设备控制器60的根据旧数据存储写入命令的处理的示例。
[图36]图36示出设备控制器60的根据中间奇偶校验读取命令的处理的示例。
[图37]图37示出设备控制器60的根据奇偶校验更新写入命令的处理的示例。
[图38]图38示出设备控制器60的根据奇偶校验创建写入命令的处理的示例。
[图39]图39示出设备控制器60的旧数据去映射过程的示例。
[图40]图40示出Q奇偶校验创建方法的示例。
[图41]图41示出D0、D1恢复方法的示例。
[图42]图42示出第四读取-修改-写入过程的示例。
[图43]图43示出存储控制器20在第四读取-修改-写入过程中的操作的示例。
[图44]图44示出与示例3有关的计算机系统的配置的示例。
[图45]图45示出与示例4有关的计算机系统的配置的示例。
具体实施方式
将说明多个示例。本发明的技术范围不限于示例。
在以下说明中,可以使用表达“***表”来说明各种类型的信息,但是也可以使用除了表之外的数据结构来表达各种信息。为了示出各种信息不依赖于数据结构,“***表”可以称为“***信息”。
在以下描述中,可以有以“程序”作为动作的执行者来说明处理的情况。根据需要,在使用存储资源(例如存储器)和通信控制设备(例如通信端口)之时根据正在由处理器(例如CPU(中央处理单元))执行的程序执行规定的处理,并且这样,处理器也可以是处理的执行者。以程序作为动作的执行者而说明的过程可以是管理系统执行的过程。可以使用专用硬件来实现程序的全部或者部分。出于这一原因,以程序作为动作的执行者而说明的过程可以是控制器执行的过程。控制器可以包括处理器和用于存储将由处理器执行的计算机程序的存储资源或者可以包括以上提到的专用硬件。计算机程序可以从程序源安装于相应计算机中。程序源例如可以是程序递送服务器或者存储介质。
在以下说明中,管理系统是一个或者多个计算机、例如管理计算机或者管理计算机和显示计算机的组合。具体而言,例如在管理计算机对显示信息进行显示的情况下,管理计算机是管理系统。可以使用多个计算机来实现与管理计算机相同的功能以增加处理速度和可靠性,并且根据这一点,相关多个计算机(可以在显示计算机上执行显示时包括显示计算机)是管理系统。
示例1
首先将说明存储系统的配置,该存储系统是本发明的应用的示例。
图1示出存储系统30的配置的示例。这一存储系统30包括用于存储数据的多个存储装置50和耦合到这些多个存储资源的系统控制器20。存储装置例如是FMPK(闪存封装)50。
FMPK 50包括用于存储数据的非易失性存储器以及耦合到非易失性存储器和系统控制器20。非易失性存储器例如是NAND型FM(闪存)55。非易失性存储器不限于闪存并且可以是可记录存储器(例如相变存储器)。设备控制器60包括通信接口设备、存储设备和耦合到它们的控制设备。通信接口设备例如是系统接口53和FM接口54。在以下说明中,可以将接口表示为I/F。系统I/F 53耦合到系统控制器20。FM I/F 54耦合到FM 55。
存储设备例如是存储器52和缓冲器66。控制设备例如是CPU51。控制设备除了处理器、比如CPU 51之外还可以包括用于执行指定的处理(例如压缩、解压、编码或者解码)的专用硬件电路。专用硬件电路例如是用于计算奇偶校验或者中间奇偶校验的奇偶校验电路65。存储器52存储用于控制FM 55的程序和各种类型的信息。CPU 51根据执行在存储器52中存储的程序来实现各种类型的功能。缓冲器66例如是易失性存储器、比如DRAM(动态随机存取存储器)。缓冲器66暂时存储将向FM 55写入的数据、从FM 55读取的数据和在奇偶校验运算期间的数据。
FMPK 50可以包括多个FM 55。多个FM 55可以包括不同类型的存储介质或者可以是相同类型的存储介质。例如FM 55可以包括多个物理块。物理块可以包括多个物理页面。在FM 55以内的每个单元可以是SLC(单级单元)或者MLC(多级单元)。非易失性存储器可以是另一非易失性存储器或者可以是可记录存储器、比如相变存储器。
图2示出系统控制器20的配置。系统控制器20包括通信接口设备、存储设备和耦合到它们的控制设备。通信接口设备例如是用于耦合到通信网络的通信I/F 18和用于耦合到FMPK 50的盘I/F 19。存储设备例如是存储器12和缓冲器26。控制设备例如是CPU 11。控制设备除了处理器、比如CPU 51之外可以包括用于执行指定的处理(例如压缩、解压、编码或者解码)的专用硬件电路。专用硬件电路例如是用于计算奇偶校验或者中间奇偶校验的奇偶校验电路25。存储器12存储用于控制FMPK 50的程序和各种类型的信息。CPU 51根据基于在存储器12中存储的信息执行程序来实现各种类型的功能。缓冲器26例如是易失性存储器,诸如DRAM。缓冲器26暂时存储将向FMPK 50写入的数据、从FMPK 50读取的数据和在奇偶校验运算期间的数据。在连接到系统控制器20的每个FMPK50具有奇偶校验电路65时,系统控制器20并非必须包括奇偶校验电路25。
与系统控制器20等效的现有技术系统提供的功能包括奇偶校验运算、快照、数据压缩和重复消除,但是这些功能可以由FMPK 50或者其它这样的存储介质实现。在这一示例中,将说明奇偶校验运算功能。
由于系统控制器20和设备控制器60形成分级,所以可以定义系统控制器20为较高级控制器而可以定义设备控制器60为较低级控制器。
接着将说明计算机系统,该计算机系统是存储系统30在系统控制器20是支持RAID(独立盘冗余阵列)功能的控制器的情况下的应用的示例。
图3示出与示例1有关的计算机系统的配置的示例。这一计算机系统包括主机计算机10和存储系统30。经由通信网络、例如SAN(存储区域网络1)耦合主机计算机30和存储系统30。计算机系统可以包括多个主机计算机10。在这一情况下,存储系统30经由SAN1耦合到多个主机计算机10。
存储系统30包括多个FMPK 50和用于控制这些FMPK 50的系统控制器20。存储装置例如是FMPK 50。在这一示例中,系统控制器20例如是RAID控制器。此外,在这一示例中,存储系统30包括多个系统控制器20。每个系统控制器20经由SAN 1耦合到主机计算机10。多个FMPK 50中的每个FMPK耦合到多个系统控制器20。存储系统30可以包括仅一个系统控制器20。
系统控制器20的配置与图2中所示配置相同。存储器12也存储用于RAID功能的程序和各种类型的信息,该RAID功能使用多个FMPK 50。在这一示例中,系统控制器20包括了奇偶校验电路25、但是不必须包括奇偶校验电路25。
主机计算机10可以是管理系统。
下文将说明系统控制器20执行RAID 5控制的情况。
系统控制器20与RG(RAID组)、LU(逻辑单元,也可以称为逻辑卷)和FMPK 50关联。图4示出RG和LU的配置的示例。系统控制器20向RG分配多个FMPK 50并且向LU分配RG存储区域的全部或者部分。另外,逻辑卷可以是虚拟卷,在该虚拟卷中已经根据精简配置技术虚拟化该卷的容量。未向虚拟卷预先分配用于存储数据的物理存储区域。根据向相关虚拟卷的写入请求而在指定的单元中向相关虚拟卷分配物理存储区域。
图5示出RG管理表600的示例。图6示出LU管理表700的示例。图7示出FMPK管理表800的示例。系统控制器20向在存储器12中的RG管理表600、LU管理表700和FMPK管理表800写入RG(RAID组)、LG(逻辑单元)和FPMK 50的关系。
RG管理表600包括用于每个RG的记录。一个RG记录示出表示RG的RG编号601、表示向RG分配的FMPK 50的FMPK编号602和RG的RAID级别603。
LU管理表700包括用于每个LU的记录。一个LU记录示出表示LU的LU编号701、表示向LU分配的RG的RG编号702、条带(stripe)大小703——该条带大小是向LU分配的条带块的大小、LU开始地址704——该LU开始地址是这一LU的逻辑开始地址、LU大小705——该LU大小是LU的大小——和LU的IO特性706。IO特性706是关于LU执行的IO模式的趋势并且表示哪个更强、顺序趋势或者随机趋势。
IO特性706可以由用户预先指定或者可以由系统控制器20确定。或者其组合,其中IO特性706的初始值可以由用户预先指定,并且在经过指定的时间之后,系统控制器20可以根据确定来优化初始值。作为一种用于确定IO特性706的方法,例如系统控制器20可以在每个时间单位收集用于某个LU的命令统计值并且可以确定随机IO模式和顺序IO模式中的更高IO模式作为相关LU的IO特性706。命令类型包括随机写入和顺序写入。随机写入的比例与顺序写入的比例的比较可以通过比较这些命令的频率来完成。也可以比较根据这些命令写入的数据量。此外,系统控制器20可以根据以上提到的确定方法按照固定周期监视IO/特性706并且可以在改变为必需的情况下更新LU管理表700。
FMPK管理表800包括用于每个FMPK 50的记录。一个FMPK 50记录包括表示FMPK 50的FMPK编号801、表示FMPK 50属于的RG的对应RG编号802和表示这一FMPK 50的奇偶校验运算功能的奇偶校验运算功能支持信息803。奇偶校验运算功能支持信息803例如是表示这一FMPK 50是否包括奇偶校验运算功能、比如奇偶校验电路65的标志。
图8示出在RG上的地址空间的示例。图9示出在属于RG的FMPK 50上的地址空间的示例。在这一示例中,系统控制器20向RAID 5RG#0分配FMPK#0至FMPK#3这四个FMPK 50。此外,系统控制器20从在RG#0上的地址空间向LU#0分配连续区域并且向LU#1分配不同连续区域。系统控制器20分配跨越在FMPK#0至FMPK#3上的地址空间的条带行并且按照条带行和FMPK编号的顺序分配条带块和奇偶校验。在这一点,系统控制器20移位用于每个条带行的分配条带块和奇偶校验的FMPK编号。这时,系统控制器20向RG管理表600、LU管理表700和FMPK管理表800写入与RG#0、LU#0和LU#1有关的信息。
图10示出在FMPK 50中的页面映射的示例。将在FMPK 50上的逻辑地址空间分割成多个逻辑页面。备选地,将在FMPK 50上的物理地址空间分割成多个物理块,并且此外,每个物理块包括规定的块大小并且被分配给多个物理页面。每个逻辑页面和每个物理页面包括指定的页面大小。
可以使用物理块或者某个其它物理区域取代物理页面。此外,还可以使用逻辑单元或者某个其它逻辑区域取代逻辑页面。
图11示出页面映射管理表1100的示例。设备控制器60关联逻辑页面与物理页面并且向在存储器52中的页面映射管理表1100写入这一关系。页面映射管理表1100包括用于每个逻辑页面的记录。一个逻辑页面记录表示逻辑页面编号1101——该逻辑页面编号表示逻辑页面、物理页面编号1102——该物理页面编号表示当前物理页面,该当前物理页面是向逻辑页面当前分配的物理页面——和旧物理页面编号1103,该旧物理页面编号表示旧物理页面,该旧物理页面是向在当前物理页面先前的逻辑页面分配的物理页面。也就是说,与某个逻辑页面关联的旧物理页面表示先前已经与在前一代中的逻辑页面关联的当前物理页面。与逻辑页面关联的旧物理页面视为有效页面,并且维持这一关联直至取消与逻辑页面的关联。由于关联已经被取消的旧物理页面转变成无效页面,所以根据回收过程等在指定的定时擦除在旧物理页面以内的数据。在其中存储器特性使得不能重写数据的闪存中,回收过程是指擦除无效数据(在无效页面中存储的数据)并且再次设置其中存储这一无效数据的页面为可写入状态的过程。由于在闪存中以块为单位擦除数据,所以在目标块以内存在有效页面和无效页面二者的情况下,FM控制器1447在向另一个块移动在有效页面以内的数据之后擦除在目标块中存储的无效数据。在这一示例中,FM控制器1447确定与逻辑页面关联的物理页面1102和旧物理页面1103是有效页面并且执行回收处理。
将说明用于旧物理页面的管理方法的具体示例。设备控制器60确定在页面映射管理表1100中示出的旧物理页面不再必需并且在确定不再需要某个旧物理页面的情况下可以取消在这一旧物理页面与逻辑页面之间的关联。例如预先配置用于由设备控制器60管理的旧物理页面的数目的上线,并且设备控制器60按照从最旧起的顺序从页面映射管理表1100删除旧物理页面。设备控制器60也可以根据来自系统控制器20的指令从页面映射管理表1100删除旧物理页面。确定判据的示例是关于是否已经完成从数据更新产生的奇偶校验更新的确定。此外,系统控制器20可以确定是否需要旧物理页面,并且在确定不需要旧物理页面的情况下可以指令与旧物理页面对应的设备控制器60从页面映射管理表1100删除旧物理页面。系统控制器20或者设备控制器60可以在FM 55所使用的容量已经变成等于或者大于固定值的情况下从页面映射管理表1100删除旧物理页面。在已经发出对于从旧物理页面读取数据的请求并且此外旧物理页面保留在页面映射管理表1100中的情况下,设备控制器60可以从旧物理页面读取数据。
接着将说明系统控制器20的操作。
首先将说明在数据更新时间的写入方法。
写入方法例如是读取-修改-写入和全条带写入。这一示例的读取-修改-写入是用于更新在单个条带行内指定的一个条带块的数据的过程。备选地,这一示例的全条带写入是用于更新在单个条带行中的所有数据的过程。读取-修改-写入根据在指定的条带块中的旧数据和新数据来计算中间奇偶校验,并且根据中间奇偶校验和旧奇偶校验来计算新奇偶校验。全条带写入基于所有新数据来计算新奇偶校验。如这里所用,旧数据是指更新前数据,新数据是指更新后数据,旧奇偶校验是指更新前奇偶校验,并且新奇偶校验是指更新后奇偶校验。中间奇偶校验是在奇偶校验运算中途的奇偶校验,并且表示在旧奇偶校验与新奇偶校验之间的差异。
接着将说明奇偶校验运算功能。
奇偶校验运算功能例如是奇偶校验电路25和奇偶校验电路65并且计算在单个条带行中的两个条带块的数据之间的异或。奇偶校验运算功能也计算在旧数据与新数据之间的异或作为中间奇偶校验。此外,奇偶校验运算功能还计算在旧奇偶校验与中间奇偶校验之间的异或作为新奇偶校验。假设旧数据是Di,新数据是Di_new,并且旧奇偶校验是P,使用以下等式来表达新奇偶校验P_new。
P_new=P+(Di+Di_new)
算符“+”这里代表异或,并且(Di+Di_new)代表中间奇偶校验。中间奇偶校验与在除了Di之外的所有数据之间的异或等效。
可以使用另一冗余码(redundancy code)、比如海明码取代奇偶校验。
接着将说明用于系统控制器20在FMPK管理表800中注册奇偶校验运算功能支持信息803的奇偶校验运算功能注册过程。
图12示出奇偶校验运算功能注册过程的示例。系统控制器20在安装新FMPK 50时和在系统控制器20自举(ramp up)时执行奇偶校验运算功能注册过程。
首先,系统控制器20向FMPK 50设备控制器60发出奇偶校验运算功能支持确认命令并且接收对该命令的响应(1201)。这时接收奇偶校验运算功能支持确认命令的设备控制器60向系统控制器20发送响应,该响应表示设备控制器60本身是否包括奇偶校验运算功能。接着,系统控制器20基于响应在FMPK管理表800的奇偶校验运算功能支持信息803中注册表示设备控制器60是否包括奇偶校验运算功能的信息(1202)并且结束这一处理流程。
用户可以预先注册奇偶校验运算功能支持信息803取代执行奇偶校验运算功能注册过程。
接着将说明用于判决用于执行奇偶校验运算的奇偶校验运算实现装置的方法。
图13示出奇偶校验运算实现装置判决方法1300的示例。系统控制器20根据判决方法1300确定系统控制器20或者设备控制器60作为奇偶校验运算实现装置。系统控制器20基于表示系统控制器20是否包括奇偶校验运算功能、比如奇偶校验电路25的信息和FMPK管理表800的奇偶校验运算功能支持信息803确定系统控制器20或者设备控制器60作为奇偶校验运算实现装置。定义用于判决奇偶校验运算实现装置的四种情况。定义用于判决奇偶校验运算实现装置的四种情况。每种情况示出情况编号1301、表示系统控制器20是否包括奇偶校验运算功能的系统功能信息1302、表示设备控制器60是否包括奇偶校验运算功能的设备功能信息1303、表示奇偶校验运算实现装置的奇偶校验运算实现信息1304和选项1305。
情况#1是系统控制器20包括奇偶校验运算功能并且此外设备控制器60也包括奇偶校验运算功能的情况。根据奇偶校验运算实现信息1304,在这一情况下,系统控制器20可以选择系统控制器20或者设备控制器60作为奇偶校验运算实现装置。在这一情况下,系统控制器20基于选项1305执行写入过程,该写入过程将在以下进一步说明。
情况#2是系统控制器20包括奇偶校验运算功能、但是设备控制器60不包括奇偶校验运算功能的情况。根据奇偶校验运算实现信息1304,在这一情况下,系统控制器20选择系统控制器20作为奇偶校验运算实现装置。
情况#3是系统控制器20不包括奇偶校验运算功能、但是设备控制器60包括奇偶校验运算功能的情况。根据奇偶校验运算实现信息1304,在这一情况下,系统控制器20选择设备控制器60作为奇偶校验运算实现装置。
情况#4是系统控制器20不包括奇偶校验运算功能并且此外设备控制器60不包括奇偶校验运算功能的情况。根据奇偶校验运算实现信息1304,在这一情况下,系统控制器20不能选择系统控制器20或者设备控制器60作为奇偶校验运算实现装置。
可以省略奇偶校验运算功能注册过程和奇偶校验运算实现装置判决。例如在系统控制器20和所有设备控制器60包括奇偶校验运算功能的情况下,系统控制器20可以省略奇偶校验运算功能注册过程和奇偶校验运算实现装置判决并且在下文将说明的情况#1下执行写入过程。也可以在奇偶校验运算实现装置已经由管理员等预先安装的情况下省略这些过程。
接着将说明系统控制器20在情况#1至#3下的写入过程。
图14示出系统控制器20的写入过程的示例。首先,系统控制器20从外部主机接收写入请求作为IO请求(1401)。外部主机例如是经由SAN 1耦合到系统控制器20的主机计算机10。接着,系统控制器20执行用于选择系统控制器20或者设备控制器60之一作为用于执行奇偶校验运算的奇偶校验运算实现装置的奇偶校验运算选择过程(1402)。在情况#2和#3的情况下,由于已经选择奇偶校验运算实现装置,所以省略在步骤1402中的过程。接着,系统控制器20基于接收的命令执行用于选择写入方法的写入方法选择过程(1403)。写入方法是读取-修改-写入或者全条带写入之一。接着,系统控制器20根据选择的写入方法执行用于更新在设备控制器60中的数据和奇偶校验的数据更新过程(1404)。
接着将说明奇偶校验运算选择过程1402的多个具体示例。
首先将说明第一奇偶校验运算选择过程,该第一奇偶校验运算选择过程是如下过程的具体示例,在该示例中,系统控制器20基于每个LU的IO特性706选择奇偶校验运算实现装置。
图15示出第一奇偶校验运算选择过程的示例。首先,系统控制器20基于LU管理表700确定作为相关写入的目标的LU的IO特性706是否随机(1501)。在相关LU IO特性706表示随机(1501:是)的情况下,系统控制器20根据选择设备控制器60作为奇偶校验运算实现装置来判决指令设备控制器60执行奇偶校验运算(1502),并且结束这一处理流程。备选地,在相关LU IO特性706未示出随机()(1501:否)的情况下,更具体而言,在稍后将描述的顺序写入的情况下,系统控制器20根据选择系统控制器20作为奇偶校验运算实现装置来判决系统控制器20将实现奇偶校验运算(1503),并且结束这一处理流程。
也就是说,在IO的场合时,系统控制器20参考LU管理表700的IO特性706并且在IO特性706示出随机写入数目大于关于向相关LU的写入的顺序写入数目的情况下指令设备控制器60创建奇偶校验。备选地,在IO特性706示出随机写入少于关于向相关LU的写入的顺序写入的情况下,系统控制器20实现奇偶校验创建。
接着将说明第二奇偶校验运算选择过程,该第二奇偶校验运算选择过程是如下过程的具体示例,在该过程中,系统控制器20检测系统控制器20的硬件负载并且基于这一负载选择奇偶校验运算实现装置。
图16示出第二奇偶校验运算选择过程的示例。硬件例如是CPU11、存储器12和奇偶校验电路25。首先,系统控制器20确定它的自有硬件负载是否高于参考(1601)。在确定硬件负载高于参考(1601:是)的情况下,系统控制器20选择设备控制器60作为奇偶校验运算实现装置、指令设备控制器60执行奇偶校验运算(1602)并且结束处理流程。备选地,在确定硬件负载不高于参考(1601:否)的情况下,系统控制器20选择系统控制器20作为奇偶校验运算实现装置(1603)并且结束处理流程。
系统控制器20例如这里测量在系统控制器20硬件上的负载,并且在测量结果超过规定的门限的情况下确定硬件负载为高。测量结果例如是CPU 11利用率、使用的存储器12的数量和向奇偶校验电路25输入的数据量。
接着将说明第三奇偶校验运算选择过程,该第三奇偶校验运算选择过程是如下过程的具体示例,在该过程中,系统控制器20基于相关写入的IO模式选择奇偶校验运算实现装置。
图17示出第三奇偶校验运算选择过程的示例。首先,系统控制器20确定相关IO请求的IO模式是否为随机写入(1701)。在确定IO模式是随机写入(1701:是)的情况下,系统控制器20选择设备控制器60作为奇偶校验运算实现装置、指令设备控制器60执行奇偶校验运算(1702)并且结束这一处理流程。备选地,在确定IO模式不是随机写入的情况下,也就是说,在已经确定IO模式是顺序写入(1701:否)的情况下,系统控制器20选择系统控制器20作为奇偶校验运算实现装置(1703)并且结束处理流程。
接着将说明第四奇偶校验选择过程,该第四奇偶校验选择过程是如下过程的具体示例,在该过程中,系统控制器20基于相关写入的IO模式和系统控制器20的硬件负载选择奇偶校验运算实现装置。
图18示出第四奇偶校验运算选择过程的示例。首先,系统控制器20确定相关写入的IO模式是否为随机写入(1801)。在确定IO模式是随机写入(1801:是)的情况下,系统控制器20选择设备控制器60作为奇偶校验运算实现装置、指令设备控制器60执行奇偶校验运算(1802)并且结束处理流程。备选地,在确定IO模式不是随机写入(1801:否)的情况下,系统控制器20确定硬件负载是否为高(1803)。在确定硬件负载为高(1803:是)的情况下,系统控制器20使处理流程移向1802。备选地,在确定硬件负载不高(1803:否)的情况下,系统控制器20选择系统控制器20作为奇偶校验运算实现装置(1804),并且结束处理流程。
系统控制器20也可以根据以上描述的多个类型的奇偶校验运算选择过程1402选择奇偶校验运算实现装置。
根据系统控制器20在顺序写入和全条带写入时执行奇偶校验运算,有可能防止从系统控制器20向设备控制器60传送的数据量的增加。这使得有可能防止写入速度的降低。
接着将说明写入方法选择过程1403的具体示例。
图19示出写入方法选择过程1403的示例。写入方法选择例如是读取-修改-写入和全条带写入。首先,系统控制器20确定写入——该写入是相关IO请求——的IO模式是是否为随机写入(1901)。在确定IO模式是随机写入(1901:是)的情况下,系统控制器20选择读取-修改-写入作为写入方法(1902)并且结束处理流程。备选地,在确定IO模式不是随机写入(1901:否)的情况下,也就是说,在确定IO模式是顺序写入的情况下,系统控制器20选择全条带写入作为写入方法(1903)并且结束处理流程。
接着将说明与奇偶校验运算实现装置的选择结果和写入方法的选择结果对应的数据更新过程1404的多个具体示例。
首先将说明第一读取-修改-写入过程,该第一读取-修改-写入过程是数据更新过程1404在已经选择设备控制器60作为奇偶校验运算实现装置并且已经选择读取-修改-写入作为写入方法的情况下的具体示例。
图20示出第一读取-修改-写入过程的示例。图21示出系统控制器20在第一读取-修改-写入过程中的操作的示例。在这一示例中,四个FMPK 50、即FMPK#0、#1、#2和#3分别在一个条带行中存储数据D0、D1、D2和奇偶校验P。这里假设初始状态是如下状态,在该状态中,系统控制器20已经接收用于根据写入命令更新D0的旧数据的新数据。在以下说明中,在FMPK#0、#1、#2和#3之中,存储待更新的数据的FMPK#0可以称为数据FMPK。此外,在FMPK#0、#1、#2和#3之中,存储奇偶校验的FMPK#3可以称为奇偶校验FMPK。
首先,系统控制器20从FMPK#0、#1、#2和#3之中选择与D0对应的FMPK#0(数据FMPK)并且根据向FMPK#0发出旧数据存储写入命令来向FMPK#0传送新数据,该旧数据存储写入命令指令存储旧数据并且写入新数据(2101)。接收这一命令的FMPK#0的设备控制器60从系统控制器20向在FMPK#0中的与旧数据的物理页面不同的物理页面写入新数据。利用正常写入命令,旧物理页面在向逻辑页面分配新物理页面时变成无效,并且在旧物理页面中存储的旧数据变成擦除的目标。因而,系统控制器20使用旧数据存储写入命令取代正常写入命令以保证保持旧数据直至奇偶校验更新完成。在后续说明中,写入命令意味着正常写入命令。
接着,系统控制器20根据向FMPK#0发出请求中间奇偶校验的中间奇偶校验读取命令来从FMPK#0获取中间奇偶校验(2102)。运算中奇偶校验是用于根据在对旧奇偶校验的奇偶校验运算产生新奇偶校验的中间运算结果。接收这一命令的FMPK#0的设备控制器60基于在FMPK#0中存储的旧数据和在FMPK#0中存储的新数据计算中间奇偶校验并且向系统控制器20发送中间奇偶校验作为响应。FMPK#0设备控制器60这里可以向缓冲器66写入计算的中间奇偶校验或者可以向在FMPK#0的FM 55中的与旧数据物理页面或者新数据物理页面不同的物理页面写入计算的中间奇偶校验。
接着,系统控制器20从FMPK#0、#1、#2和#3选择与P对应的FMPK#3(奇偶校验FMPK)并且根据向FMPK#3发出指令更新奇偶校验的奇偶校验更新写入命令来向FMPK#3传送从FMPK#0接收到的中间奇偶校验(2103)。接收这一命令的FMPK#3基于在FMPK#3中的旧奇偶校验和来自系统控制器20的中间奇偶校验计算新奇偶校验,并且向FMPK#3写入新奇偶校验。FMPK#3设备控制器60向FMPK#3写入新奇偶校验并且向系统控制器20通知用于奇偶校验更新写入的完成响应。在这一点,FMPK#3设备控制器60可以从系统控制器20向缓冲器66写入中间奇偶校验,或者可以向在FMPK#3以内的FM 55中的与旧奇偶校验物理页面和新奇偶校验物理页面二者不同的物理页面写入中间奇偶校验。
接着,系统控制器20在从FMPK#3接收完成响应时向FMPK#0发出指令使旧数据无效的去映射旧数据命令(2104)并且结束这一流程。接收这一命令的FMPK#0的设备控制器60从映射管理表1100删除向去映射旧数据命令标识的逻辑页面映射的物理页面以便使存储的旧数据无效。
另外,系统控制器20在发出奇偶校验更新写入命令之后的规定的时间段内尚未从FMPK#3接收完成响应的情况下可以确定奇偶校验更新已经失败、从FMPK#0重新获取中间奇偶校验并且通过向FMPK#3重新传送这一中间奇偶校验来重新执行奇偶校验更新过程。
具体而言,系统控制器20在发出奇偶校验更新写入命令之后的指定的时间段内尚未从FMPK#3接收完成响应的情况下向FMPK#0重新发出中间奇偶校验读取命令并且接收根据这一命令重新计算的中间奇偶校验。然后,系统控制器20根据向FMPK#3重新发出奇偶校验更新写入命令来向FMPK#3写入重新计算的中间奇偶校验。
根据这一处理,在更新在单个条带块中的数据时在系统控制器20与设备控制器60之间的数据传送如下。
(1)从系统控制器20向数据FMPK的设备控制器60传送更新后数据。
(2)从数据FMPK的设备控制器60向系统控制器20传送中间奇偶校验。
(3)从系统控制器20向奇偶校验FMPK的设备控制器60传送中间奇偶校验。
这使得有可能抑制在系统控制器20与设备控制器60之间的数据传送。备选地,在系统控制器20这里执行奇偶校验运算的情况下,在系统控制器20与设备控制器60之间的数据传送如下。
(1)从数据FMPK的设备控制器60向系统控制器20传送更新前数据。
(2)从奇偶校验FMPK的设备控制器60向系统控制器20传送更新前奇偶校验。
(3)从系统控制器20向数据FMPK的设备控制器60传送更新后数据。
(4)从系统控制器20向奇偶校验FMPK的设备控制器60传送更新后奇偶校验。
在第一读取-修改-写入过程中比在系统控制器20执行这一种奇偶校验运算的情况下传送更少数据。
也可以根据数据FMPK在FM 55中存储更新前数据和更新后数据来削减数据FMPK设备控制器60用来对运算中奇偶校验执行运算的缓冲器66。
此外,即使在已经写入新数据之后仍然存储旧数据直至更新奇偶校验也使数据恢复在故障已经在更新奇偶校验之前出现的情况下成为可能。另外,在更新奇偶校验之后使旧数据无效并且以旧数据作为擦除目标使得有可能减少旧数据正在使用的存储区域数量。
接着将说明第二读取-修改-写入过程,该第二读取-修改-写入过程是不同数据更新过程1404在已经选择设备控制器60作为奇偶校验运算实现正在并且已经选择读取-修重写入作为写入方法的情况下的另一具体示例。
图22示出第二读取-修改-写入过程的示例。图23示出系统控制器20在第二读取-修改-写入过程中的操作的示例。在这一示例中的初始状态与第一读取-修改-写入过程的初始状态相同。首先,系统控制器20根据向与D0对应的FMPK#0(数据FMPK)发出读取命令来从FMPK#0获取旧数据(2301)。接收这一命令的FMPK#0的设备控制器60读取在FMPK#0中的旧数据并且向系统控制器20发送旧数据作为响应。
接着,系统控制器20根据向与P对应的FMPK#3(奇偶校验FMPK)发出奇偶校验更新写入命令来向FMPK#3传送旧数据和新数据(2303)。接收这一命令的FMPK#3的设备控制器60基于来自系统控制器20的新数据、来自系统控制器20的旧数据和在FMPK#3中的旧奇偶校验计算新奇偶校验并且向FMPK#3写入新奇偶校验。
接着,系统控制器20根据向FMPK#0发出写入命令来向FMPK#0传送新数据(2303)。接收这一命令的FMPK#0的设备控制器60向FMPK#0写入新数据。
根据这一处理,在更新在单个条带块中的数据时在系统控制器20与设备控制器60之间的数据传送如下。
(1)从数据FMPK设备控制器60向系统控制器20传送更新前数据,并且从系统控制器20向数据FMPK的设备控制器60传送更新后数据。
(2)从系统控制器20向奇偶校验FMPK设备控制器60传送更新前数据和更新后数据。
这使得有可能抑制在系统控制器20与设备控制器60之间的数据传送。
在2302中,系统控制器20使用单个奇偶校验更新写入命令来向奇偶校验FMPK传送新数据和旧数据。这时的传送数据量是在第一读取-修改-写入过程的情况下在从系统控制器20向奇偶校验FMPK传送中间奇偶校验时传送的数据量的两倍。然而由于仅有一个传送,所以有可能防止数据传送开销的增加。在根据高速接口、比如6GB SAS(串行附着小型计算机接口)执行数据传送的情况下,传送数目小的优点超过传送的数据量增加的缺点。
此外,即使在已经写入新数据之后仍然存储旧数据直至更新奇偶校验也使数据恢复在故障已经在更新奇偶校验之前出现的情况下有可能。另外,在更新奇偶校验之后使旧数据无效并且以旧数据作为擦除目标使得有可能减少旧数据正在使用的存储区域数量。
在已经选择设备控制器60作为奇偶校验运算实现装置并且已经选择读取-修改-写入作为写入方法的情况下,可以执行第一读取-修改-写入过程或者第二读取-修改-写入过程。
接着将说明第三读取-修改-写入过程,该第三读取-修改-写入过程是数据更新过程1404在已经选择系统控制器20作为奇偶校验运算实现装置并且选择读取-修改-写入作为写入方法的情况下的具体示例。
图24示出第三读取-修改-写入过程的示例。图25示出系统控制器20在第三读取-修改-写入过程中的操作的示例。在这一i中的初始状态与第一读取-修改-写入过程的初始状态相同。首先,系统控制器20根据向与D0对应的FMPK#0发出请求D0的读取命令来从FMPK#0获取旧数据,并且根据向与P对应的FMPK#3发出读取命令来从FMPK#3获取旧FMPK#3(2501)。接收这一读取命令的FMPK#0读取FMPK#0的旧数据并且向系统控制器20发送这一旧数据作为响应。同样,接收这一读取命令的FMPK#3的设备控制器60读取FMPK#3的旧奇偶校验并且向系统控制器20发送这一旧FMPK#作为响应。
接着,系统控制器20基于旧数据、旧奇偶校验和新数据计算新FMPK#(2502)。接着,系统控制器20根据向FMPK#0发出写入命令来向FMPK#0发送新数据、根据向与P对应的FMPK#3发出写入命令来向FMPK#3发送新FMPK#(2503)并且结束这一处理流程。接收这一写入命令的FMPK#0的设备控制器60向FMPK#0写入新数据。此外,接收这一写入命令的FMPK#3向FMPK#3写入新奇偶校验。
根据这一处理,在更新在单个条带块中的数据时在系统控制器20与设备控制器60之间的数据传送如下。
(1)从数据FMPK的设备控制器60向系统控制器20传送更新前数据,并且从系统控制器20向数据FMPK的设备控制器60传送更新后数据。
(2)从奇偶校验FMPK的设备控制器60向系统控制器20传送更新前奇偶校验。
(3)从系统控制器20向奇偶校验FMPK的设备控制器60传送更新后奇偶校验。
这使得有可能抑制在系统控制器20与设备控制器60之间的数据传送。
接着将说明全条带写入的多个具体示例。
首先将说明第一全条带写入过程,该第一全条带写入过程是另一数据更新过程1404在已经选择设备控制器60作为奇偶校验运算实现装置并且已经选择全条带写入作为写入方法的情况下的具体示例。
图26示出第一全条带写入过程的示例。图27示出系统控制器20在第一全条带写入过程中的操作的示例。在这一示例中,FMPK#0、#1、#2和#3分别存储D0、D1、D2和P。这里假设初始状态是如下状态,在该状态中,系统控制器20已经接收用于根据写入命令更新旧数据D0、D1和D2的新数据。在以下说明中,在FMPK#0、#1、#2和#3之中,正在存储待更新的数据的FMPK#0、#1和#2可以称为数据FMPK。
首先,系统控制器20将接收到的数据分割成用于D0、D1和D2的新数据并且根据向分别与D0、D1和D2对应的FMPK#0、#1和#2(数据FMPK)发出写入命令来分别向FMPK#0、#1和#2传送D0、D1和D2的新数据(2701)。接收这一写入命令的FMPK#0、#1和#2的设备控制器60从系统控制器20分别向FMPK#0、#1和#2写入新数据。
接着,系统控制器20根据向与P对应的FMPK#3(奇偶校验FMPK)发出指令创建和写入奇偶校验的奇偶校验创建写入命令来向FMPK#3传送D0、D1和D2的新数据(2702),并且结束处理流程。接收这一写入命令的FMPK#3的设备控制器60基于D0、D1和D2的新数据计算新奇偶校验并且向FMPK#3写入这一新奇偶校验。
根据这一处理,在更新在单个条带行中的数据时在系统控制器20与设备控制器60之间的数据传送如下。
(1)从系统控制器20向数据FMPK设备控制器60传送更新后数据。
(2)从系统控制器20向奇偶校验FMPK设备控制器60传送更新后奇偶校验数据。
这使得有可能抑制在系统控制器20与设备控制器60之间的数据传送。
首先将说明第二全条带写入过程,该第二全条带写入过程是另一数据更新过程1404在已经选择系统控制器20作为奇偶校验运算实现装置并且已经选择全条带写入作为写入过程的情况下的具体示例。
图28示出第二全条带写入过程的示例。图29示出系统控制器20在第二全条带写入过程中的操作的示例。在这一示例中的初始状态与第一全条带写入过程的初始状态相同。首先,系统控制器20根据D0、D1和D2的新数据计算新奇偶校验(2901)。接着,系统控制器20根据向与D0、D1和D2对应的FMPK#0、#1和#2发出写入命令来分别向FMPK#0、#1和#2传送D0、D1和D2的新数据、根据向与P对应的FMPK#3发出写入命令来向FMPK#3传送计算的新奇偶校验(2902),并且结束这一处理流程。接收这一写入命令的FMPK#0、#1和#2的设备控制器60从系统控制器20分别向FMPK#0、#1和#2写入新数据。此外,接收写入命令的FMPK#3的设备控制器60还从系统控制器20向FMPK#3写入新奇偶校验。
根据这一处理,在更新在单个条带行中的数据时在系统控制器20与设备控制器60之间的数据传送如下。
(1)从系统控制器20向数据FMPK设备控制器60传送更新后数据。
(2)从系统控制器20向奇偶校验FMPK设备控制器60传送更新后奇偶校验。
这使得有可能抑制在系统控制器20与设备控制器60之间的数据传送。
接着将说明根据奇偶校验运算实现装置选择结果的数据恢复过程的多个具体示例。
首先将说明第一数据恢复过程,该第一数据恢复过程是数据恢复过程在已经选择设备控制器60作为奇偶校验运算实现装置的情况下的具体示例。
图30示出第一数据恢复过程的示例。图31示出系统控制器20在第一数据恢复过程中的操作的示例。在这一示例中,FMPK#0、#1、#2和#3分别存储D0、D1、D2和P。这里假设初始状态是如下状态,在该状态中,故障已经在FMPK#1以内的FM 55中出现,并且已经用新FM 55替换这一FM 55。在以下说明中,在FMPK#0、#1、#2和#3之中,正在存储待恢复的数据的FMPK#1可以称为恢复进行中FMPK。
首先,系统控制器20根据向在FMPK#0、#1、#2和#3属于的RG中存在的FMPK#0、#2和#3发出读取命令来获取分别在FMPK#0、#2和#3中存储的D0、D2和P(3101)。接收这一读取命令的FMPK#0、#2和#3的设备控制器60分别读取D0、D2和P并且向系统控制器20传送读取的D0、D2和P。这里可以读取数据和奇偶校验。
接着,系统控制器20根据向正在进行恢复的FMPK#1(恢复进行中FMPK)发出表示创建奇偶校验的写入命令来向FMPK#1传送已经读取的D0、D2和P(3102),并且结束这一处理流程。接收这一写入命令的FMPK#1的设备控制器60根据基于D0、D2和P计算D1来创建D1恢复的数据并且向FMPK#1写入D1恢复的数据。
根据这一处理,在恢复在单个条带块时在系统控制器20与设备控制器60之间的数据传送如下。
(1)从对应设备控制器60向系统控制器20传送除了恢复进行中FMPK之外的FMPK50的数据。
(2)从系统控制器20向恢复进行中FMPK设备控制器60传送所传送的数据。
这使得有可能抑制在系统控制器20与设备控制器60之间的数据传送。
接着将说明第二数据恢复过程,该第二数据恢复过程是数据恢复过程在已经选择系统控制器20作为奇偶校验运算实现装置的情况下的示例。
图32示出第二数据恢复过程的示例。图33示出系统控制器20在第二数据恢复过程中的操作的示例。在这一示例中的初始状态与第一具体示例的初始状态相同。首先,系统控制器20根据向在FMPK#0、#1、#2和#3属于的RG中存在的FMPK#0、#2和#3发出读取命令来从FMPK#0、#2和#3读取D0、D2和P(3301)。接收这一读取命令的FMPK#0、#2和#3的设备控制器60分别读取D0、D2和P,并且向系统控制器20传送读取的D0、D2和P。这里可以读取数据和奇偶校验。
接着,系统控制器20根据基于D0、D2和P计算D1来创建D1恢复的数据(3302)。接着,系统控制器20根据向FMPK#1发出写入命令来向FMPK#1写入恢复的D1(3303),并且结束这一处理流程。接收这一写入命令的FMPK#1的设备控制器60向FMPK#1写入接收的D1。
根据这一处理,在恢复在单个条带块时在系统控制器20与设备控制器60之间的数据传送如下。
(1)从对应设备控制器60向系统控制器20传送除了恢复进行中FMPK之外的FMPK50的数据。
(2)从系统控制器20向恢复进行中FMPK设备控制器60传送所传送的数据。
这使得有可能抑制在系统控制器20与设备控制器60之间的数据传送。
接着将说明设备控制器60的操作。
首先将说明正常写入过程,该正常写入过程是设备控制器60在已经接收正常写入命令的情况下的过程的具体示例。
在这一正常写入过程中,设备控制器60无需存储旧数据。
图34示出正常写入过程的示例。首先,设备控制器60接收正常写入命令(3401)。接着,设备控制器60从在这一写入命令中指定的逻辑地址确定逻辑页面编号并且使这一逻辑页面编号的逻辑页面成为写入目的地逻辑页面(3402)。接着,设备控制器60获取新空闲页面,并且分配获取的物理页面作为写入目的地页面(3403)。接着,设备控制器60向写入目的地物理页面写入根据写入命令接收的写入数据(3404)。
接着,设备控制器60在页面映射管理表1100中关联写入目的地物理页面与写入目的地逻辑页面,并且注册写入目的地物理页面的编号作为物理页面编号(3405)。接着,设备控制器60向系统控制器20发送表示已经完成命令的响应(3406)并且结束这一处理流程。
在3403中,设备控制器60可以通过执行处理、比如保证未使用的物理页面并且擦除物理块而且在这一物理块以内保证物理页面来获取空闲物理页面。为了这时擦除物理块,设备控制器60可以在页面映射管理表1100中取消旧物理页面与另一逻辑页面的关联。
接着将说明旧数据存储写入命令过程,该旧数据存储写入命令过程是设备控制器60在已经接收旧数据存储写入命令的情况下的过程的具体示例。
例如在上文描述的第一读取-修改-写入过程中使用这一旧数据存储写入过程。
图35示出旧数据存储写入过程的示例。首先,设备控制器60接收旧数据存储写入命令(3501)。接着,设备控制器60基于在这一写入命令中指定的逻辑地址确定逻辑页面编号,并且将这一逻辑页面编号的逻辑页面视为写入目的地逻辑页面(3502)。接着,设备控制器60通过参考页面映射管理表1100来确定物理页面是否被分配给写入目的地逻辑页面(3503)。
在物理页面被分配给写入目的地逻辑页面(3503:是)的情况下,设备控制器60在页面映射管理表1100中注册与写入目的地逻辑页面关联的物理页面编号作为旧物理页面编号(3504)。
在物理页面未被分配给写入目的地逻辑页面(3503:否)的情况下,或在3504之后,设备控制器60获取新空闲页面并且分配获取的物理页面作为写入目的地物理页面(3505)。接着,设备控制器60向写入目的地物理页面写入根据写入命令接收的写入数据(3506)。
接着,设备控制器60在页面映射管理表1100中关联写入目的地物理页面与写入目的地逻辑页面,并且注册写入目的地物理页面的编号作为物理页面编号(3507)。接着,设备控制器60向系统控制器20发送表示已经完成命令的响应(3508)并且结束这一处理流程。
根据这一处理,数据FMPK能够在数据更新时间存储更新前数据。此外,数据FMPK设备控制器60能够关联更新的逻辑页面、用于存储旧数据的旧物理页面和用于存储新数据的物理页面。这使得数据FMPK有可能在数据更新时间在非易失性存储器中存储更新前数据和更新后数据二者。数据FMPK设备控制器60也能够读取更新前数据和更新后数据二者而未使用易失性存储器。此外,系统控制器20能够让数据FMPK设备控制器60存储更新前数据和更新后数据二者。
接着将说明中间奇偶校验过程,该中间奇偶校验过程是设备控制器60在已经接收中间奇偶校验命令的情况下的过程的具体示例。
这一中间奇偶校验过程根据对新数据和指定的地址的旧数据执行奇偶校验运算来创建和返回中间奇偶校验。例如在上文描述的第一读取-修改-写入过程中使用这一中间奇偶校验过程。
图36示出中间奇偶校验过程的示例。首先,设备控制器60接收中间奇偶校验命令(3601)。接着,设备控制器60基于这一读取命令指定的逻辑地址确定逻辑页面编号并且将这一逻辑页面编号的逻辑页面视为读取目的地逻辑页面(3602)。接着,设备控制器60通过参考页面映射管理表1100来确定与读取目的地逻辑页面对应的旧物理页面是否被注册(3603)。
在与读取目的地逻辑页面对应的旧物理页面被注册(3603:是)的情况下,设备控制器60读取与读取目的地逻辑页面对应的旧物理页面的数据和当前物理页面的数据,并且从读取的数据计算中间奇偶校验(3604)。接着,设备控制器60向系统控制器20传送中间奇偶校验(3606)并且结束这一处理流程。
在3603中,在与读取目的地逻辑页面对应的旧物理页面未被注册(3603:否)的情况下,设备控制器60用表示在读取目的地逻辑页面中无旧数据的命令结果向系统控制器20报告(3605)并且结束这一处理流程。
在3605中接收表示在读取目的地逻辑页面中无旧数据的结果的系统控制器20例如可以读取在与新数据相同的条带行中的所有数据、基于读取的数据计算新奇偶校验并且向与奇偶校验对应的设备控制器60发出用于写入新奇偶校验的写入命令。或者根据这一点,系统控制器20例如可以读取在与新数据相同的条带行中的所有数据并且向与奇偶校验对应的设备控制器60发出用于基于读取的数据计算新奇偶校验的奇偶校验创建写入命令。
根据这一处理,数据FMPK设备控制器60在从系统控制器20接收用于中间奇偶校验运算的指令时可以读取更新前数据和更新后数据并且基于读取的数据创建中间奇偶校验。此外,系统控制器20可以让数据FMPK设备控制器60创建中间奇偶校验并且可以从设备控制器60获取中间奇偶校验。
假定而言,假设数据FMPK设备控制器60已经与系统控制器20的操作异步地创建中间奇偶校验。在这一情况下,这一设备控制器60的性能由于中间奇偶校验的运算对设备控制器60的缓冲器66施加负担而下降。在功率在中间奇偶校验运算中需要的数据存储于缓冲器66中的状态中关断的情况下,这一数据可能被丢失并且数据恢复可能变得不可能。备选地,根据这一示例,数据FMPK设备控制器60可以在接收中间奇偶校验读取命令时创建中间奇偶校验来防止在存储系统30中的性能下降。也有可能防止丢失在中间奇偶校验中需要的数据并且增强存储系统30的可靠性。
接着将说明奇偶校验更新过程,该奇偶校验更新过程是设备控制器60在已经接收奇偶校验更新写入命令的情况下的过程的具体示例。
这一奇偶校验更新写入过程根据对传送的中间奇偶校验和指定的旧奇偶校验执行奇偶校验运算来创建新奇偶校验,并且向FM 55写入这一新奇偶校验。例如在上文描述的第一读取-修改-写入过程中使用这一奇偶校验更新写入命令。
图37示出奇偶校验更新写入过程的示例。首先,设备控制器60接收奇偶校验更新写入命令(3701)。接着,设备控制器60基于根据这一写入命令指定的逻辑地址确定逻辑页面编号并且将这一逻辑页面编号的逻辑页面视为读取目的地逻辑页面(3702)。接着,设备控制器60根据参考页面映射管理表1100确定与读取目的地逻辑页面对应的物理页面编号并且从这一物理页面编号表示的物理页面读取数据(3703)。读取数据例如是旧奇偶校验。接着,设备控制器60获取新空闲页面并且分配获取的物理页面作为结果存储目的地物理页面(3704)。接着,设备控制器60使用读取的数据和接收的数据来执行奇偶校验运算,并且向结果存储目的地物理页面写入运算结果(3705)。
接着,设备控制器60在页面映射管理表1100中关联结果存储目的地物理页面与写入目的地逻辑页面,并且注册结果存储目的地物理页面的编号作为物理页面编号(3706)。接着,设备控制器60向系统控制器20发送表示已经完成命令的响应(3707)并且结束这一处理流程。
根据这一处理,奇偶校验FMPK设备控制器60可以基于来自系统控制器20的更新后数据和在奇偶校验FMPK中存储的更新前奇偶校验计算更新后奇偶校验,并且向奇偶校验FMPK发送更新后奇偶校验。此外,系统控制器20可以让奇偶校验FMPK设备控制器60创建和存储更新后奇偶校验。
接着将说明奇偶校验创建写入过程,该奇偶校验创建写入过程是设备控制器60在已经接收奇偶校验创建写入命令的情况下的过程的具体示例。
这一奇偶校验创建写入过程是用于使用已经从多个条带块传送的数据来创建奇偶校验并且向指定的地址写入这一奇偶校验的命令。例如在上文描述的第一全条带写入过程和数据恢复过程中使用这一奇偶校验创建写入过程。
图38示出设备控制器60的根据奇偶校验创建写入命令的处理的示例。首先,设备控制器60接收奇偶校验创建写入命令(3801)。接着,设备控制器60基于这一写入命令指定的逻辑地址确定逻辑页面编号并且将这一逻辑页面编号的逻辑页面视为写入目的地逻辑页面(3802)。接着,设备控制器60获取新空闲页面并且分配获取的物理页面作为写入目的地物理页面(3803)。接着,设备控制器60向写入目的地物理页面写入根据写入命令接收的写入数据(3804)。
接着,设备控制器60在页面映射管理表1100中关联写入目的地物理页面与写入目的地逻辑页面,并且注册写入目的地物理页面的编号作为物理页面编号(3805)。接着,设备控制器60向系统控制器20发送表示已经完成命令的响应(3806)并且结束这一处理流程。
根据这一处理,奇偶校验FMPK设备控制器60能够基于来自系统控制器20的更新后数据计算更新后奇偶校验,并且向奇偶校验FMPK写入更新后奇偶校验。此外,系统控制器20可以让奇偶校验FMPK设备控制器60创建和存储更新后奇偶校验。
图39示出根据设备控制器60的去映射就数据过程的示例。首先,设备控制器60从系统控制器20接收去映射旧数据命令(3901)。接着,设备控制器60从在这一去映射旧数据命令中指定的逻辑地址确定逻辑页面编号并且从页面映射管理表1100删除与这一逻辑页面编号对应的旧物理页面编号(3902)。设备控制器60直至已经接收到去映射旧数据命令才使旧数据无效。也就是说,设备控制器60即使在已经写入新数据之后仍然能够存储旧数据而无失败,直至已经更新奇偶校验(已经接收去映射旧数据命令)。因此,保持旧数据直至更新奇偶校验使数据恢复即使在故障已经在奇偶校验更新之前出现的情况下仍然有可能。此外,在更新奇偶校验之后使旧数据无效并且成为擦除的目标也使得有可能减少旧数据正在使用的存储器区域数量。
示例2
在这一示例中,将说明系统控制器20执行RAID 6控制的情况。
在这一示例中的计算机系统的配置与在示例1中的计算机系统的配置相同。因而以下将说明与示例1的不同。
系统控制器20执行RAID 6控制。因而将首先说明在RAID 5与RAID 6之间的不同。
为了将上文说明的RAID 5扩展至RAID 6,奇偶校验电路25或者奇偶校验电路65用系数执行附加奇偶校验运算。这里假设五个FMPK 50分别正在存储数据D0、D1、D2以及奇偶校验P和Q。在使用A0、A1和A2作为用于创建Q的系数的情况下,根据以下方程创建P和Q。
P=D0+D1+D2
Q=A0*D0+A1*D1+A2*D2
图40示出用于创建Q奇偶校验的方法的示例。奇偶校验运算实现装置在存储器中预先存储A0、A1和A2。基于D0、D1、D2、A0、A1和A2计算Q。在附图中示出为黑色菱形形状的计算单元将附着到它的系数相乘。
求解P创建方程和Q创建方程作为方程系统使得有可能在数据丢失时恢复任意数据和奇偶校验。例如在恢复D0和P时,可以使用以下方程来创建D0和P。
D0=A1/A0*D1+A2/A0D2+1/A0*Q
P=D0+D1+D2
例如在恢复D0和D1时,有可能使用以下方程来创建D0和D1。
D0=(A1+A2)/(A0+A1)*D2+A1/(A0+A1)*P+1/(A0+A1)*Q
D1=(A0+A2)/(A0+A1)*D2+A0/(A0+A1)*P+1/(A0+A1)*Q
图41示出用于恢复D0和D1的方法的示例。如在[0165]中所示,D0和D1可以各自被表达为D2、P和Q的线性方程aaD2+bbP+rrQ。系数aa、bb和rr是基于A0、A1和A2的值。奇偶校验运算实现装置可以在存储器中预先存储基于A0、A1和A2的aa、bb和rr。基于以D2、P、Q以及A0、A1和A2为基础的aa、bb和rr计算D0。这一示例严格用于提出概念并且被实际设计用于增加处理速度和减少使用的存储器数量。
接着将说明第四读取-修改-写入过程,该第四读取-修改-写入过程是数据更新过程1404在已经选择设备控制器60作为奇偶校验运算实现装置并且已经选择读取-修改-写入作为写入方法的情况下的具体示例。
图42示出第四读取-修改-写入过程的示例。图42示出系统控制器20在第四读取-修改-写入过程中的操作的示例。在这一示例中,FMPK#0、#1、#2、#3和#4分别存储D0、D1、D2、P和Q。这里假设初始状态是如下状态,在该状态中,系统控制器20接收用于根据写入命令更新旧数据D0的新数据。在以下说明中,存储D0——D0是待更新的数据——FMPK#0可以称为FMPK#0、#1、#2、#3和#4的数据FMPK。正在存储P的FMPK#3也可以称为FMPK#0、#1、#2、#3和#4的奇偶校验FMPK。此外,正在存储Q的FMPK#4还可以称为FMPK#0、#1、#2、#3和#4的Q奇偶校验FMPK。
首先,系统控制器20根据向与D0对应的FMPK#0(数据FMPK)发出旧数据存储写入命令来向FMPK#0写入新数据(4101)。接收这一命令的FMPK#0的设备控制器60从系统控制器20向在FMPK#0中的与旧数据物理页面不同的物理页面写入新数据。
接着,系统控制器20根据向FMPK#0发出中间奇偶校验读取命令来从FMPK#0获取中间奇偶校验(4102)。接收这一命令的FMPK#0的设备控制器60基于在FMPK#0中存储的旧数据和新数据计算中间奇偶校验,并且向系统控制器20发送中间奇偶校验作为响应。
接着,系统控制器20根据向与P对应的FMPK#3(P奇偶校验FMPK)发出与在RAID 5的情况下相同的奇偶校验更新写入命令来向FMPK#3发送中间FMPK#(4103)。接收这一命令的FMPK#3的设备控制器60基于在FMPK#3中的旧FMPK#和来自系统控制器20的中间奇偶校验计算新FMPK#并且向FMPK#3写入新奇偶校验。
将说明新奇偶校验P_new在i是0、1或者2中的任一个并且将在相关RG中的数据Di更新成Di_new的情况下的计算。与在RAID5中相同,接收奇偶校验更新写入命令的设备控制器60使用以下方程来基于中间奇偶校验(Di+Di_new)和旧奇偶校验P计算P_new。
P_new=P+(Di+Di_new)
数据FMPK设备控制器60根据中间奇偶校验读取命令计算(Di+Di_new)。P奇偶校验FMPK设备控制器60根据奇偶校验更新写入命令计算P+(Di+Di_new)。
接着,系统控制器20根据向与Q对应的FMPK#4发出Q奇偶校验更新写入命令——该Q奇偶校验更新写入命令是用于更新Q的奇偶校验更新命令——来向FMPK#4(Q奇偶校验FMPK)传送中间奇偶校验,并且结束这一处理流程。接收这一命令的FMPK#4的设备控制器60基于在FMPK#4中的旧奇偶校验、来自系统控制器20的中间奇偶校验和系数计算新奇偶校验并且向FMPK#3写入新奇偶校验。
根据这一处理,在更新在单个条带块中的数据时在系统控制器20与设备控制器60之间的数据传送如下。
(1)从系统控制器20向数据FMPK设备控制器60传送更新后数据。
(2)从数据FMPK设备控制器60向系统控制器20传送中间奇偶校验。
(3)从系统控制器20向P奇偶校验FMPK设备控制器60和Q奇偶校验FMPK设备控制器60传送中间奇偶校验。
这使得有可能抑制在系统控制器20与设备控制器60之间的数据传送。
接收Q奇偶校验更新写入命令的设备控制器60的处理与在奇偶校验更新写入命令的情况下的处理不同在于使用在设备控制器60中预先配置的系数Ai。在将在相关RG中的数据Di更新成Di_new的情况下,接收Q奇偶校验更新写入命令的设备控制器60使用以下方程来基于中间奇偶校验(Di+Di_new)、旧奇偶校验Q和Ai计算新奇偶校验Q_new。
Q_new=Q+Ai*(Di+Di_new)
数据FMPK设备控制器60根据中间奇偶校验读取命令计算(Di+Di_new)。Q奇偶校验FMPK设备控制器60根据Q奇偶校验更新写入命令计算Q+Ai*(Di+Di_new)。
根据奇偶校验更新写入命令,P奇偶校验FMPK设备控制器60可以基于来自系统控制器20的更新后数据和在P奇偶校验FMPK中存储的更新前P奇偶校验计算更新后P奇偶校验,并且向P奇偶校验FMPK写入更新后P奇偶校验。此外,系统控制器20可以让P奇偶校验FMPK设备控制器60创建和存储更新后P奇偶校验。
根据Q奇偶校验更新写入命令,Q奇偶校验FMPK设备控制器60可以基于来自系统控制器20的更新后数据、在Q奇偶校验FMPK中存储的更新前Q奇偶校验和规定的系数计算更新后奇偶校验,并且向Q奇偶校验FMPK写入更新后Q奇偶校验。此外,系统控制器20可以让Q奇偶校验FMPK设备控制器60创建和存储更新后Q奇偶校验。
示例3
在这一示例中,将说明计算机系统,该计算机系统是存储系统30在系统控制器20不包括奇偶校验运算功能的情况下的应用的示例。
图44示出与示例3有关的计算机系统的配置的示例。在这一示例的计算机系统中,已经被指派与存储系统30的单元相同的标号的单元表示与存储系统30的单元相同或者等效的单元。这一示例的计算机系统包括主机计算机41a、主机计算机41b和耦合到主机计算机41b的多个FMPK 50。例如经由LAN(局域网)2耦合主机计算机41a和主机计算机41b。
主机计算机41a包括主机控制器42a和耦合到主机控制器42a的多个FMPK 50。主机控制器42a包括用于耦合到通信网络、比如LAN 2的NIC(网络接口卡)13、存储器12、CPU 11和缓冲器26。
主机计算机41b包括用于耦合到通信网络、比如LAN 2的NIC13、用于耦合到FMPK50的HBA(主机总线适配器)15、存储器12、CPU 11和缓冲器26。
在主机控制器42a和主机计算机41b中,存储器12存储用于控制FMPK 50的程序和各种类型的信息。CPU 11根据基于在存储器12中存储的信息执行程序来实现各种类型的功能。主机控制器42a和主机计算机41b中的每个部件可以使用耦合到它本身的多个FMPK 50来执行RAID控制。
主机控制器42a或者主机计算机41b之一可以经由LAN 2执行向另一个部件的IO请求或者可以执行向它的自有FMPK 50的IO请求。
在这一示例中,系统控制器20可以是主机控制器42a或者主机计算机41b的方面。
主机控制器42a和主机计算机41b中的每个对应于用于判决奇偶校验运算实现装置的方法1300的情况#3或者情况#4。
示例4
接着将说明第三计算机系统,该第三计算机系统是存储系统30在系统控制器20包括奇偶校验运算功能的情况下的应用的示例。
图45示出与示例4有关的计算机系统的配置的示例。在这一示例的计算机系统中,已经被指派与示例3的计算机系统的单元相同的标号的单元表示与示例3的计算机系统的单元相同或者等效的单元。这一示例的计算机系统包括主机计算机41c、主机计算机41d和耦合到主机计算机41d的多个FMPK 50。例如经由通信网络、例如LAN 2耦合主机计算机41c和主机计算机41d。
主机计算机41c包括主机控制器42c和耦合到主机控制器42c的多个FMPK 50。主机控制器42c除了主机控制器42a的单元之外还包括奇偶校验电路25。
主机计算机41d除了主机计算机41b的单元之外还包括奇偶校验电路25。
在主机计算机42c和主机计算机41d中,存储器12存储用于控制FMPK 50的程序和各种类型的信息。CPU 11根据基于在存储器12中存储的信息执行程序来实现各种类型的功能。主机控制器42c和主机计算机41d中的每个可以使用耦合到它本身的多个FMPK 50来执行RAID控制。
主机控制器42c或者主机计算机41d之一可以经由LAN 2执行向彼此的IO请求或者可以执行向它的自有FMPK 50的设备控制器60的IO请求。
主机控制器42a和主机计算机41b中的每个与用于判决奇偶校验运算实现装置的方法1300的情况#1或者情况#2对应。
在这一示例中,系统控制器20可以是主机控制器42c或者主机计算机41d的方面。
计算机系统可以是上文描述的示例中的任何示例的单元的组合。包括奇偶校验运算功能的系统控制器20和不包括奇偶校验运算功能的系统控制器20可以在单个计算机系统中共存。
根据上文描述的相应示例,可以制止在系统控制器20与设备控制器60之间的数据传送。这使得有可能增强存储系统30的速度。例如表达数据传送为数据传送数目或者为传送的数据量。
根据上文描述的相应示例,除了抑制在系统控制器20与设备控制器60之间的数据传送之外,本发明也可以减少在设备控制器60中使用的易失性存储器数量。
可以切换在系统控制器20的操作中的相应过程的序列。例如可以切换1402和1403。也可以切换在设备控制器60的操作中的相应过程的序列。例如可以切换3703和3704。
标号列表
10 主机计算机
20 系统控制器
25 奇偶校验电路
26 缓冲器
30 存储系统
41a、41b、41c、41d 主机计算机
42a、42c 主机控制器
50FMPK (闪存封装)
55FM (闪存)
60:设备控制器
65:奇偶校验电路
66:缓冲器
Claims (15)
1.一种存储系统,包括:
多个存储设备,所述多个存储设备中的每个存储设备包括一个或多个闪存芯片和耦合到所述闪存芯片的设备控制器,并且所述多个存储设备包括第一存储设备和第二存储设备,所述第一存储设备存储旧数据,所述第二存储设备存储与所述旧数据对应的旧奇偶校验;以及
耦合到所述存储设备的处理器,其中:
所述第一存储设备中的第一设备控制器被配置为基于所述旧数据和新数据生成中间奇偶校验,同时所述第一设备控制器维持所述新数据和所述旧数据的有效状态,
所述处理器被配置为根据发出奇偶校验更新写入命令来向所述第二存储设备发送所述中间奇偶校验,
所述第二存储设备中的第二设备控制器被配置为接收所述中间奇偶校验,并且基于所述旧数据和所述中间奇偶校验生成新奇偶校验,
所述处理器被配置为当从所述第二存储设备接收到关于所述奇偶校验更新写入命令的完成响应时,向所述第一存储设备发出用于使所述旧数据无效的去映射旧数据命令,并且
所述第一存储设备中的所述第一设备控制器被配置为当从所述处理器接收到所述去映射旧数据命令时,使所述旧数据无效。
2.根据权利要求1的存储系统,其中所述第一设备控制器被配置为在接收到所述去映射旧数据命令之后删除所述旧数据。
3.根据权利要求1的存储系统,其中,当所述处理器未在发出所述奇偶校验更新写入命令之后的指定的时间段内从所述第二存储设备接收到所述完成响应时,所述处理器被配置为从所述第一存储设备获取所述中间奇偶校验并且向所述第二存储设备重新发送所述中间奇偶校验。
4.根据权利要求1的存储系统,其中所述处理器被配置为将所述多个存储设备控制作为RAID组。
5.根据权利要求1的存储系统,其中所述第一设备控制器包括被连接到相应存储器的相应处理器,所述相应存储器存储指令,所述指令当在所述相应处理器上被执行时,使得所述相应处理器:
基于所述旧数据和新数据生成所述中间奇偶校验,同时保持所述新数据和所述旧数据的所述有效状态,以及
当接收到所述去映射旧数据命令时,使所述旧数据无效。
6.根据权利要求1的存储系统,其中所述第二设备控制器包括被连接到相应存储器的相应处理器,所述相应存储器存储指令,所述指令当在所述相应处理器上被执行时,使得所述相应处理器:
接收所述中间奇偶校验,
基于所述旧奇偶校验和所述中间奇偶校验生成所述新奇偶校验,以及
发送所述完成响应。
7.根据权利要求1的存储系统,其中所述处理器被连接到存储器,所述存储器存储指令,所述指令当在所述处理器上被执行时,使得所述处理器:
根据发出所述奇偶校验更新写入命令来向所述第二存储设备发送所述中间奇偶校验,以及
当从所述第二存储设备接收到关于所述奇偶校验更新写入命令的所述完成响应时,发出用于使所述旧数据无效的所述去映射旧数据命令。
8.根据权利要求1的存储系统,其中所述处理器接收包括所述新数据的写入命令,所述第一设备控制器接收包括所述新数据的旧数据存储命令,并且所述旧数据被维持为所述有效状态直到所述处理器接收关于所述奇偶校验更新写入命令的所述完成响应之后。
9.一种存储系统,包括:
多个存储设备,所述多个存储设备中的每个存储设备包括一个或多个闪存芯片和耦合到所述闪存芯片的设备控制器,并且所述多个存储设备包括第一存储设备和第二存储设备,所述第一存储设备存储旧数据,所述第二存储设备存储与所述旧数据对应的旧奇偶校验;以及
耦合到所述存储设备的处理器,其中:
所述第一存储设备中的第一设备控制器被配置为基于所述旧数据和新数据生成中间奇偶校验,同时所述第一设备控制器维持所述新数据和所述旧数据的有效状态,
所述处理器被配置为向所述第二存储设备发送所述中间奇偶校验,
所述第二存储设备中的第二设备控制器被配置为接收所述中间奇偶校验,并且基于所述旧数据和所述中间奇偶校验生成新奇偶校验,
所述处理器被配置为当从所述第二存储设备接收到关于所述新奇偶校验的完成响应时,发出用于使所述旧数据无效的去映射旧数据命令,并且
所述第一存储设备中的所述第一设备控制器被配置为在识别到所述新奇偶校验被生成之后,当从所述处理器接收到所述去映射旧数据命令时,使所述旧数据无效。
10.根据权利要求9的存储系统,其中所述第一设备控制器被配置为在接收到所述去映射旧数据命令之后删除所述旧数据。
11.根据权利要求9的存储系统,其中,当所述处理器未在跟随所述中间奇偶校验的传送的指定的时间段内从所述第二存储设备接收到所述完成响应时,所述处理器被配置为从所述第一存储设备获取所述中间奇偶校验并且向所述第二存储设备重新发送所述中间奇偶校验。
12.根据权利要求9的存储系统,其中所述处理器被配置为将所述多个存储设备控制作为RAID组。
13.根据权利要求9的存储系统,其中所述第一设备控制器包括被连接到相应存储器的相应处理器,所述相应存储器存储指令,所述指令当在所述相应处理器上被执行时,使得所述相应处理器:
基于所述旧数据和新数据生成中间奇偶校验,同时保持所述新数据和所述旧数据的所述有效状态,以及
在识别到所述新奇偶校验被生成之后,当从所述处理器接收到所述去映射旧数据命令时,使所述旧数据无效。
14.根据权利要求9的存储系统,其中所述第二设备控制器包括被连接到相应存储器的相应处理器,所述相应存储器存储指令,所述指令当在所述相应处理器上被执行时,使得所述相应处理器:
接收所述中间奇偶校验,
基于所述旧奇偶校验和所述中间奇偶校验生成所述新奇偶校验,以及
发送所述完成响应。
15.根据权利要求9的存储系统,其中所述处理器被连接到存储器,所述存储器存储指令,所述指令当在所述处理器上被执行时,使得所述处理器:
向所述第二存储设备发送所述中间奇偶校验,以及
当从所述第二存储设备接收到关于所述新奇偶校验的所述完成响应时,发出用于使所述旧数据无效的所述去映射旧数据命令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2012/002937 WO2013160972A1 (en) | 2012-04-27 | 2012-04-27 | Storage system and storage apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104246707A CN104246707A (zh) | 2014-12-24 |
CN104246707B true CN104246707B (zh) | 2018-03-27 |
Family
ID=49478391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280072490.5A Active CN104246707B (zh) | 2012-04-27 | 2012-04-27 | 存储系统和存储装置 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9684591B2 (zh) |
EP (2) | EP2942713B1 (zh) |
JP (1) | JP5937697B2 (zh) |
CN (1) | CN104246707B (zh) |
IN (1) | IN2014DN08596A (zh) |
WO (1) | WO2013160972A1 (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104205059B (zh) * | 2012-04-27 | 2017-07-14 | 株式会社日立制作所 | 存储系统和存储控制装置 |
US9003270B2 (en) * | 2012-06-04 | 2015-04-07 | Marvell World Trade Ltd. | Methods and apparatus for temporarily storing parity information for data stored in a storage device |
US9772787B2 (en) * | 2014-03-31 | 2017-09-26 | Amazon Technologies, Inc. | File storage using variable stripe sizes |
US10067833B2 (en) * | 2014-07-31 | 2018-09-04 | Hitachi, Ltd. | Storage system |
US20160103478A1 (en) * | 2014-10-08 | 2016-04-14 | Kabushiki Kaisha Toshiba | Memory system and memory controller |
TWI556254B (zh) * | 2014-10-14 | 2016-11-01 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料存取方法 |
KR20160051367A (ko) * | 2014-11-03 | 2016-05-11 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
JP6464768B2 (ja) * | 2015-01-21 | 2019-02-06 | 富士ゼロックス株式会社 | 応答装置及びプログラム |
US10063263B2 (en) * | 2015-05-20 | 2018-08-28 | International Business Machines Corporation | Extended error correction coding data storage |
CN104994135B (zh) * | 2015-05-25 | 2018-09-21 | 华为技术有限公司 | 存储系统中融合san及nas存储架构的方法及装置 |
JP6328335B2 (ja) * | 2015-06-01 | 2018-05-23 | 株式会社日立製作所 | ストレージ装置及びその制御方法 |
TWI553477B (zh) * | 2015-06-12 | 2016-10-11 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 |
KR20170004693A (ko) * | 2015-07-03 | 2017-01-11 | 에스케이하이닉스 주식회사 | 메모리 장치의 컨트롤러 및 그 동작 방법 |
WO2017212514A1 (ja) * | 2016-06-06 | 2017-12-14 | 株式会社日立製作所 | ストレージシステム及び記憶制御方法 |
CN109313593B (zh) * | 2016-09-16 | 2022-03-01 | 株式会社日立制作所 | 存储系统 |
KR20180040767A (ko) * | 2016-10-12 | 2018-04-23 | 삼성전자주식회사 | Raid 방식으로 데이터를 저장하는 스토리지 장치 |
US10884630B2 (en) * | 2017-04-13 | 2021-01-05 | Hitachi, Ltd. | Storage system |
WO2018226227A1 (en) * | 2017-06-08 | 2018-12-13 | Hitachi Data Systems Corporation | Fast recall for geographically distributed object data |
JP6807457B2 (ja) * | 2017-06-15 | 2021-01-06 | 株式会社日立製作所 | ストレージシステム及びストレージシステムの制御方法 |
CN110008145B (zh) * | 2018-01-05 | 2022-10-21 | 群联电子股份有限公司 | 数据保护方法、存储器控制电路单元与存储器存储装置 |
US20200117362A1 (en) * | 2018-10-15 | 2020-04-16 | Netapp, Inc. | Erasure coding content driven distribution of data blocks |
CN109634771A (zh) * | 2018-10-31 | 2019-04-16 | 华为技术有限公司 | 一种数据保护方法、装置及系统 |
JP6940536B2 (ja) * | 2019-02-04 | 2021-09-29 | Necプラットフォームズ株式会社 | ストレージ装置、ストレージシステム、ストレージ制御方法、及び、ストレージ制御プログラム |
KR20200108650A (ko) * | 2019-03-11 | 2020-09-21 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
KR20210034711A (ko) * | 2019-09-20 | 2021-03-31 | 삼성전자주식회사 | 메모리 셀의 신뢰성에 따라 패리티 비트들을 선택적으로 생성하는 저장 장치 및 그것의 동작 방법 |
US10915400B1 (en) * | 2019-11-08 | 2021-02-09 | Micron Technology, Inc. | Dynamic over provisioning allocation for purposed blocks |
US20230229556A1 (en) * | 2022-01-19 | 2023-07-20 | Micron Technology, Inc. | Parity cache for raid reliability, accessibility, and serviceability of a memory device |
US11822429B2 (en) * | 2022-04-08 | 2023-11-21 | Dell Products L.P. | Storage device raid data write intermediate parity system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5191584A (en) * | 1991-02-20 | 1993-03-02 | Micropolis Corporation | Mass storage array with efficient parity calculation |
US5583876A (en) * | 1993-10-05 | 1996-12-10 | Hitachi, Ltd. | Disk array device and method of updating error correction codes by collectively writing new error correction code at sequentially accessible locations |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2913917B2 (ja) * | 1991-08-20 | 1999-06-28 | 株式会社日立製作所 | 記憶装置および記憶装置システム |
JP2857288B2 (ja) * | 1992-10-08 | 1999-02-17 | 富士通株式会社 | ディスクアレイ装置 |
JPH07261946A (ja) * | 1994-03-22 | 1995-10-13 | Hitachi Ltd | アレイ型記憶装置 |
JP3661205B2 (ja) | 1994-09-09 | 2005-06-15 | 株式会社日立製作所 | ディスクアレイシステムおよびディスクアレイシステムのパリティデータの生成方法 |
JP3713788B2 (ja) | 1996-02-28 | 2005-11-09 | 株式会社日立製作所 | 記憶装置および記憶装置システム |
JP3618529B2 (ja) | 1997-11-04 | 2005-02-09 | 富士通株式会社 | ディスクアレイ装置 |
US6665773B1 (en) | 2000-12-26 | 2003-12-16 | Lsi Logic Corporation | Simple and scalable RAID XOR assist logic with overlapped operations |
JP4054182B2 (ja) * | 2001-09-25 | 2008-02-27 | 株式会社東芝 | 仮想的なraid装置を有するクラスタシステム及び同システム用のコンピュータ |
JP4308780B2 (ja) * | 2004-01-30 | 2009-08-05 | パナソニック株式会社 | 半導体メモリ装置、メモリコントローラ及びデータ記録方法 |
US7441146B2 (en) | 2005-06-10 | 2008-10-21 | Intel Corporation | RAID write completion apparatus, systems, and methods |
US7831768B2 (en) | 2006-11-03 | 2010-11-09 | Hewlett-Packard Development Company, L.P. | Method and apparatus for writing data to a disk array |
US8151060B2 (en) | 2006-11-28 | 2012-04-03 | Hitachi, Ltd. | Semiconductor memory system having a snapshot function |
JP2008204041A (ja) * | 2007-02-19 | 2008-09-04 | Hitachi Ltd | ストレージ装置及びデータ配置制御方法 |
WO2010137178A1 (en) * | 2009-05-25 | 2010-12-02 | Hitachi,Ltd. | Storage subsystem |
US8103903B2 (en) * | 2010-02-22 | 2012-01-24 | International Business Machines Corporation | Read-modify-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system |
JP5388976B2 (ja) * | 2010-09-22 | 2014-01-15 | 株式会社東芝 | 半導体記憶制御装置 |
JP5534024B2 (ja) | 2010-10-21 | 2014-06-25 | 富士通株式会社 | ストレージ制御装置およびストレージ制御方法 |
CN104205059B (zh) | 2012-04-27 | 2017-07-14 | 株式会社日立制作所 | 存储系统和存储控制装置 |
-
2012
- 2012-04-27 EP EP15167393.6A patent/EP2942713B1/en active Active
- 2012-04-27 WO PCT/JP2012/002937 patent/WO2013160972A1/en active Application Filing
- 2012-04-27 CN CN201280072490.5A patent/CN104246707B/zh active Active
- 2012-04-27 IN IN8596DEN2014 patent/IN2014DN08596A/en unknown
- 2012-04-27 EP EP12723940.8A patent/EP2831735A1/en not_active Withdrawn
- 2012-04-27 US US13/519,721 patent/US9684591B2/en active Active
- 2012-04-27 JP JP2014550959A patent/JP5937697B2/ja not_active Expired - Fee Related
-
2013
- 2013-04-22 US US13/867,375 patent/US8819338B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5191584A (en) * | 1991-02-20 | 1993-03-02 | Micropolis Corporation | Mass storage array with efficient parity calculation |
US5583876A (en) * | 1993-10-05 | 1996-12-10 | Hitachi, Ltd. | Disk array device and method of updating error correction codes by collectively writing new error correction code at sequentially accessible locations |
Also Published As
Publication number | Publication date |
---|---|
CN104246707A (zh) | 2014-12-24 |
JP5937697B2 (ja) | 2016-06-22 |
IN2014DN08596A (zh) | 2015-05-22 |
US9684591B2 (en) | 2017-06-20 |
EP2942713A1 (en) | 2015-11-11 |
WO2013160972A1 (en) | 2013-10-31 |
EP2831735A1 (en) | 2015-02-04 |
US20130290613A1 (en) | 2013-10-31 |
EP2942713B1 (en) | 2018-11-28 |
JP2015515033A (ja) | 2015-05-21 |
US8819338B2 (en) | 2014-08-26 |
US20130290629A1 (en) | 2013-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104246707B (zh) | 存储系统和存储装置 | |
CN1965298B (zh) | 用于管理奇偶raid数据重建的方法、系统和设备 | |
CN103793182B (zh) | 用于可扩展存储保护的系统和方法 | |
JP4440803B2 (ja) | 記憶装置、その制御方法及びプログラム | |
CN105339905B (zh) | 具有对大容量固态存储器资源的独立直接访问的多处理器系统 | |
CN103597461B (zh) | 闪存组件 | |
US20150254016A1 (en) | Storage system and data management method | |
CN103226519B (zh) | 冗余缓存数据的弹性缓存 | |
US8356292B2 (en) | Method for updating control program of physical storage device in storage virtualization system and storage virtualization controller and system thereof | |
US9465561B2 (en) | Storage system and storage control method | |
US9251059B2 (en) | Storage system employing MRAM and redundant array of solid state disk | |
US20130346829A1 (en) | Flash memory device and storage control method | |
US10678470B2 (en) | Computer system,control method for physical storage device,and recording medium | |
CN101609420A (zh) | 实现磁盘冗余阵列重建的方法和磁盘冗余阵列及其控制器 | |
US10372538B2 (en) | Computer system | |
CN106168920A (zh) | 控制包括只读闪速数据存储设备的独立磁盘冗余阵列(raid) | |
CN111124262A (zh) | 独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质 | |
CN111857540A (zh) | 数据存取方法、装置和计算机程序产品 | |
CN113687977A (zh) | 基于raid控制器以实现计算性能提升的数据处理装置 | |
US8418029B2 (en) | Storage control device and storage control method | |
CN113687978A (zh) | 用于存储阵列控制器的数据处理方法 | |
KR102133316B1 (ko) | 메모리 시스템 관리 | |
JP2007524932A (ja) | パリティデータを生成するための方法、システム、及びプログラム | |
US11379327B2 (en) | Storage system and rebuilding method for storage system | |
CN116401063A (zh) | 一种raid的资源分配方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |