用于保护高速缓存数据完整性的方法和装置
与相关申请的交叉引用
本申请要求享有提交于2009年6月8日的序列号为61/268,055的题目为“METHOD TO EFFICIENTLY USE SSD AS WB CACHEELEMENT IN BOTH PRIVATE AND SHARED DASCONFIGURATIONS”的美国临时专利申请的提交日的优先权,通过引用将其完整结合在此。
技术领域
本发明一般地涉及数据存储系统,并且更具体地,涉及用于保护直接连接存储(DAS)系统中的高速缓存数据的完整性的方法和装置。
背景技术
存储阵列或盘阵列是包括多个磁硬盘驱动器(HDD)或类似的永久存储单元的数据存储设备。存储阵列可以允许以高效的方式存储大量数据。服务器或工作站可被直接连接到存储阵列,从而该存储阵列对于服务器或工作站来说是本地的。在服务器或工作站被直接连接到存储阵列的情况下,存储阵列通常被称为直接连接存储(DAS)系统。可替换地,服务器或工作站可被通过存储阵列网络(SAN)远程地连接到存储阵列。在SAN系统中,虽然存储阵列对于服务器或工作站不是本地的,该阵列中的盘驱动器对于服务器或工作站的操作系统(OS)来说看似是被连接在本地的。
DAS系统和SAN系统通常被配置为廉价(或独立)磁盘冗余阵列(RAID)系统。RAID系统使用存储冗余,以便改进存储可靠性和/或以便改进输入/输出(I/O)性能。一般地,RAID系统同时使用两个或多个磁HDD,通常被称为物理磁盘驱动器(PD),以便实现更高级别的性能、可靠性和/或更大的数据量大小。短语“RAID”一般用于描述在多个PD之间划分和复制数据的计算机数据存储方案。在RAID系统中,一个或多个PD被设立为RAID虚拟磁盘驱动器(VD)。在RAID VD中,数据可被分布在多个PD上,但是该VD被用户和服务器或工作站的OS看作单个磁盘。
在被配置为RAID系统的DAS系统内,DAS控制器作为RAID控制器。在该系统中,RAID控制器使用其本地存储器的一部分用作高速缓冲存储器。高速缓冲存储器被用于临时存储将被写到PD的数据。用于这种目的的一种类型的高速缓冲存储器配置被称为写回式(WB)高速缓冲存储器配置。在WB高速缓冲存储器配置中,通常一旦数据移入高速缓冲存储器,高速缓存命令就被完成。在这种配置中,由于一旦数据被高速缓存,该数据就被提交以便写入PD的事实,在发生失效备援(failover)和失效恢复(failback)事件的情况下,保持高速缓存数据的完整性可能是一个挑战。因此,应当采取措施,以便确保失效备援或失效恢复事件的发生不会导致高速缓存数据被破坏。换言之,DAS系统应当提供高速缓存一致性。为了提供高速缓存一致性,高速缓存的数据通常被复制到另一个存储器设备内,如现在将参考图1-3对其进行描述。
图1示出了实现RAID技术的典型DAS系统2的方框图。系统2包括服务器3、RAID控制器4和外设互连(PCI)总线5。RAID控制器4包括中央处理单元(CPU)6、存储器设备7和I/O接口设备8。存储器设备7的一部分存储空间被用作高速缓冲存储器。可替换地,RAID控制器4可以包括用作高速缓冲存储器的单独的存储器设备(未示出)。I/O接口设备8被配置为执行符合诸如串行连接SCSI(SAS)和/或串行高级技术附件(SATA)标准的已知数据传输协议标准的数据传输。I/O接口设备8控制去往和来自多个PD9的数据传输。RAID控制器4通过PCI总线5与服务器CPU11和服务器存储器设备12通信。服务器存储器设备12存储由服务器CPU11执行的软件程序和数据。
在典型的写动作中,服务器CPU11通过PCI总线5向RAID控制器4发送写请求指令。RAID控制器4的CPU6使得数据被临时存储在RAID控制器4的存储器设备7的高速缓冲存储器内。该数据随后被从存储器设备7通过I/O接口设备8传输到一个或多个PD9。存储器设备7包含用于在RAID VD的虚拟地址和PD9的物理地址之间执行映射的核心逻辑。RAID控制器4的CPU6根据系统2的RAID级别执行计算,诸如奇偶校验计算。在系统2的当前RAID级别使用奇偶校验的情况下,I/O接口设备8使得奇偶校验位被存储在一个或多个PD9内。
在典型的读操作过程中,服务器CPU11通过PCI总线5向RAID控制器4发送相应的读请求。RAID控制器CPU6使用保持在存储器设备7内的逻辑处理该请求,并且如果被请求的数据保持在存储器设备7的高速缓冲存储器内,从存储器设备7的高速缓冲存储器中检索所请求的数据。如果被请求的数据未被保持在存储器设备7的高速缓冲存储器内,RAID控制器CPU6使得从PD9检索所请求的数据。检索到的数据被在PCI总线5上传输到服务器CPU11,以便满足读请求。
图2示出了已知的共享DAS系统23的方框图,该系统包括图1所示的多个RAID控制器4和由RAID控制器4共享的图1所示的PD9的阵列。为了在共享DAS系统23中提供高速缓存一致性,高速缓存在其中一个RAID控制器4中的存储器设备7内的数据被复制,或镜像到其它RAID控制器4中的其中一个RAID控制器4的存储器设备7内,从而根据高速缓存镜像给RAID控制器4配对。在图2中以箭头24表示高速缓存数据的复制。虽然这种类型的高速缓存一致性技术一般是有效的,但如果在给定对的两个RAID控制器4中都发生失效备援或失效恢复事件,将危及该镜像对的高速缓存数据的完整性。
图3示出了图2所示的共享DAS系统23的方框图,其中通过将每个RAID控制器4的存储器设备7内高速缓存的数据复制到每个其它RAID控制器4的存储器设备7内,以提供高速缓存一致性。在图3中以箭头24和25表示高速缓存数据的复制。虽然这种类型的高速缓存一致性技术一般是有效的,但这种技术的物理实现极其复杂,并且利用大量带宽。另外,当扩大系统23的规模并且向系统23添加大量RAID控制器4时,系统23的复杂性和用于高速缓存镜像的带宽数量指数地增加。出于这些原因,这种高速缓存一致性解决方案在大部分情况下是不现实的。
DAS系统中的高速缓存一致性问题的另一种解决方案是使用WT高速缓存配置,而不是WB高速缓存配置。然而,取代WB高速缓存配置使用WT高速缓存配置一般会降低DAS系统的I/O性能,并且因此对于竞争市场内的许多存储应用是不适合的。虽然可以使用SAN控制器容易地处理高速缓存一致性问题,但这种解决方案相对昂贵,并且在许多情况下,其实现昂贵得惊人。
因此,存在对足以保护高速缓存数据的完整性,并且克服DAS系统中所使用的已知高速缓存一致性解决方案的上述限制的DAS系统的需求。
发明内容
本发明提供了一种用于保护高速缓存数据的完整性的DAS系统、方法和计算机可读介质。该DAS系统包括配置为PD的RAID阵列的多个磁HDD、配置为高速缓冲存储器的固态盘(SSD)阵列,以及连接到所述PD的RAID阵列以及连接到所述SSD阵列的至少第一和第二DAS控制器。每个DAS控制器具有CPU、本地存储器设备和I/O接口设备。每个CPU和每个本地存储器设备配置为执行与所述PD的RAID阵列的RAID配置一致的RAID级别的技术。每个CPU配置为执行高速缓存算法,该高速缓存算法使得在相应DAS控制器中接收的数据被临时存储在所述SSD阵列的高速缓冲存储器内,并且随后被存储在所述PD的RAID阵列的一个或多个PD内。
一种用于保护DAS系统内的高速缓存数据的完整性的方法包括如下步骤:在第一DAS控制器中,接收数据;在第一DAS控制器的CPU中,执行高速缓存算法,该高速缓存算法使得在所述第一DAS控制器中接收的数据被临时存储在SSD阵列的一个或多个SSD内,并且随后被存储在配置为PD的RAID阵列的一个或多个磁HDD内;在第二DAS控制器中,接收数据;并且在第二DAS控制器的CPU中,执行高速缓存算法,该高速缓存算法使得在所述第二DAS控制器中接收的数据被临时存储在所述SSD阵列的一个或多个SSD内,并且随后被存储在配置为PD的RAID阵列的一个或多个磁HDD内。
一种计算机可读介质包括用于由DAS控制器执行的第一指令集合和第二指令集合。第一指令集合在DAS控制器中接收数据。第二指令集合在第一DAS控制器中执行高速缓存算法,该高速缓存算法使得在所述第一DAS控制器中接收的数据被临时存储在SSD阵列的一个或多个SSD内,并且随后被存储在配置为PD的RAID阵列的一个或多个磁HDD内。
从下面的描述、附图和权利要求中,将明了本发明的这些和其它特征和优点。
附图说明
图1示出了实现RAID技术的已知DAS系统的方框图。
图2示出了共享DAS系统的方框图,其中图1所示的多个RAID控制器共享图1所示的PD阵列,并且其中通过在RAID控制器对的存储器设备内镜像高速缓存数据提供高速缓存一致性。
图3示出了图2所示的共享DAS系统的方框图,其中通过将每个RAID控制器的高速缓存数据镜像到所有其它RAID控制器的存储器设备内提供高速缓存一致性。
图4示出了根据一个实施例的共享DAS系统的方框图,其中该DAS系统的DAS控制器外部的至少一个共享的固态盘(SSD)被用作用于高速缓存将被写到DAS系统的PD的数据的WB高速缓冲存储器。
图5示出了图4所示的DAS控制器之一的方框图。
图6示出了一个流程图,其表示根据一个说明性实施例,由图4所示的DAS控制器之一的CPU执行的WB高速缓存算法。
图7示出了根据一个说明性实施例的图4所示的DAS系统的方框图,其中数据被高速缓存在SSD阵列内,而相关联的元数据被高速缓存到DAS控制器内的高速缓冲存储器内。
图8示出了根据一个说明性实施例的图4所示的DAS系统的方框图,其中数据和相关联的元数据被高速缓存在SSD阵列内。
图9示出了表示由图8所示的DAS控制器执行的WB高速缓存算法的流程图。
具体实施方式
根据本发明,提供了一种实现RAID技术的DAS系统,其中该DAS系统的DAS控制器外部的固态盘(SSD)阵列被DAS控制器用作用于执行WB高速缓存操作的WB高速缓冲存储器。使用外部SSD阵列作为WB高速缓冲存储器使得DAS系统是完全高速缓存一致的,而不会明显增加DAS系统的复杂性,并且不会增加用于执行高速缓存操作的带宽数量。另外,使用外部SSD阵列作为WB高速缓冲存储器避免了以上面参考图1-3所述的方式镜像DAS控制器的需要。
图4示出了根据说明性实施例的本发明的DAS系统100的方框图,其中DAS系统100的SSD阵列110作为WB高速缓冲存储器被DAS系统100的多个DAS控制器120共享。图5示出了图4所示的其中一个DAS控制器120的方框图。DAS系统100的DAS控制器120具有与图1所示的RAID控制器4相同或类似的配置。除了相对于高速缓存操作之外,每个DAS控制器120以与RAID控制器4相同的方式操作。因此,如同图1所示的RAID控制器4的情况,图4所示的每个DAS控制器120被配置为RAID控制器。DAS系统100采用RAID技术。本发明不受关于DAS系统100所采用的RAID级别的限制。
RAID具有相应于不同系统设计的7种基本级别,并且可以在DAS系统100中实现那些级别中的任意一种或多种。现在将提供对不同RAID级别的简要讨论,即使这些RAID级别是本领域公知的。通常被称为RAID级别0-6的这7种基本RAID级别如下。RAID级别0使用条带化(striping)实现改进的数据可靠性和增加的I/O性能。术语“条带化”的含义是逻辑上连续的数据,诸如单个数据文件,被分段并且被以循环方式分配给多个PD。因此,当写数据时数据被称为“被条带化”在多个PD上。条带化提高了性能,并且提供额外的存储容量。RAID级别1使用不带奇偶检验的镜像。术语“镜像”的含义是数据被实时地复制到不同的PD上,以便确保数据持续可用。这种类型的复制提供数据冗余。RAID级别2使用冗余和条带化。在RAID级别2中,通过使用汉明码实现冗余,对PD上的位计算汉明码,并且将其存储在多个PD上。如果PD失效,可以使用奇偶校验位重构数据。
RAID级别3系统结合交叉奇偶校验位和专用的奇偶校验PD使用字节级条带化。使用字节级条带化和冗余产生改进的性能并且给系统提供容错。RAID级别3系统可以持续操作而不使用奇偶校验,并且在奇偶校验PD失效的情况下不会受到性能损失。除了RAID级别4系统采用块级条带化而不是字节级或字级条带化之外,RAID级别4基本与RAID级别3相同。由于每个条带相对大,单个文件可被存储在块内。每个PD独立地操作,并且可以并行处理许多不同的I/O请求。通过使用块级奇偶校验位交叉实现错误检测。交叉的奇偶校验位被存储在单个单独的奇偶检验PD内。
RAID级别5结合分布式奇偶校验使用条带化。为了实现分布式奇偶校验,除了一个PD之外的所有PD必须向系统呈现以便操作。任何一个PD的失效必然导致该PD的更换。然而,单个PD的失效不会引起系统失效。RAID级别6结合双重分布式奇偶校验使用条带化。RAID级别6系统需要使用至少4个PD,2个PD用于存储分布式奇偶校验位。即使2个PD失效,该系统还可以继续操作。双重奇偶校验在每个VD由大量PD构成的系统中变得日益重要。使用单奇偶校验的RAID级别系统易遭受数据丢失损坏,直到重建失效设备为止。在RAID级别6的系统中,在第一个失效的PD的重建完成之前,其它VD之一的PD失效的情况下,使用双重奇偶校验允许重建具有失效PD的VD,不会具有丢失数据的风险。
再次参考图5,DAS控制器120包括CPU130、存储器设备140,以及I/O接口设备150。I/O接口设备150控制去往和来自PD129的数据传输。I/O接口设备150通常被配置为执行符合例如诸如SAS和/或SATA标准以及其变体的已知数据传输协议标准的数据传输,尽管也可以为这个目的使用其它已知的数据传输协议以及专有数据传输协议。
现在将参考图4和5描述DAS系统100的操作。在典型的写操作过程中,DAS控制器120的CPU130从外部服务器或工作站(未示出)接收将被写到一个或多个PD129的数据。DAS控制器CPU130使用SSD阵列110作为WB高速缓冲存储器,以便临时存储将被写到PD129的数据。下面参考图6更详细地描述在SSD110内WB高速缓存数据的处理。在数据已被WB高速缓存到SSD110之后的某个时间点,DAS控制器CPU130使得高速缓存的数据被从SSD110传输,并且被存储在一个或多个PD129内。存储器设备140包含用于执行RAID VD的虚拟地址和PD129的物理地址之间的映射的核心逻辑。DAS控制器120使得高速缓存的数据被存储在PD129中相应的物理地址处。DAS控制器CPU130还根据DAS系统100的RAID级别执行计算,诸如奇偶校验计算。例如,如果DAS系统100的RAID级别使用奇偶校验,DAS控制器CPU130计算奇偶检验位,并且I/O接口设备150使得该奇偶校验位被存储在一个或多个PD129内。
在典型的读操作过程中,DAS控制器CPU130从外部服务器或工作站(未示出)接收读请求,并且使用保持在存储器设备140内的逻辑,处理该读请求,以便确定将从其读取数据的一个或多个PD129的物理地址。DAS控制器CPU130然后使得从所述数据驻留在PD129内的地址检索请求的数据,并且将其发送到外部服务器或工作站(未示出)。存储器设备140的一部分或DAS控制器120内的某些其它存储器设备(未示出)可被用作读高速缓冲存储器,在该情况下,如果CPU130确定所请求的数据被保持在读高速缓冲存储器内,CPU130从读高速缓冲存储器而不是从PD129读取数据。
图6示出了表示根据说明性实施例,由DAS控制器120之一的CPU130执行的WB高速缓存算法的流程图。每个DAS控制器120的CPU130执行该WB高速缓存算法。然而,为了简短起见,将仅参考其中一个DAS控制器120描述该算法。当服务器或工作站(未示出)向DAS控制器120发送将被写到PD129的数据时,如方框201所指示的,DAS控制器120接收该数据。然后CPU130处理接收到的数据,以便确定发生了高速缓存“命中”还是高速缓存“缺失”,如方框203所指示的。高速缓存“命中”意味着CPU130确定该数据当前被保持在SSD110内的高速缓冲存储器中。高速缓存“缺失”意味着CPU130确定该数据当前未被保持在高速缓冲存储器内。
如果CPU130确定发生了高速缓存缺失,CPU130使得该数据被写到SSD阵列110的高速缓冲存储器,如方框205所指示的。在数据被写到SSD阵列110的高速缓冲存储器之后的某个时间点,CPU130使得该数据被存储在PD129内的物理地址内,如方框206所指示的。在方框203,如果CPU130确定发生了高速缓存命中,在由方框206表示的步骤中,CPU130使得保持在SSD阵列110的高速缓冲存储器内的相应数据被存储在SSD阵列110内的相应物理地址内。
与上面参考图1-3所述的已知高速缓存一致性方法相反,根据本发明,通过为SSD阵列110使用一定级别的RAID技术提供高速缓存一致性。具体地,当DAS控制器120在SSD阵列110的高速缓冲存储器内存储数据时,使用RAID技术以便确保在SSD阵列110中的高速缓存该数据的SSD失效的情况下,该数据可以被恢复。例如,可以使用RAID级别0,从而当每个DAS控制器120在SSD阵列110的高速缓冲存储器内存储数据时,数据被条带化在SSD阵列110的多个SSD上。例如,如果使用RAID级别1,那么当每个DAS控制器120在SSD阵列110的高速缓冲存储器内存储数据时,该数据被复制或镜像到SSD阵列110的多个SSD内。如果SSD阵列110的其中一个SSD失效,SSD阵列110实现的RAID级别的技术将允许恢复数据。以这种方式,DAS系统100是完全高速缓存一致的。本发明不受用于确保高速缓存在SSD阵列110的高速缓冲存储器内的数据的高速缓存一致性所使用的RAID级别的限制。
另外,SSD阵列110通常,但不必须,被划分为由相应DAS控制器120使用的相应部分。例如,假设总共有N个DAS控制器120,其中N是等于或大于1的正整数,SSD阵列110的存储容量将被划分为N个相等的部分,每个部分被相应的DAS控制器120使用。以这种方式划分SSD阵列110避免了DAS控制器120访问SSD阵列110时的访问冲突。然而,如果DAS控制器120中的其中一个失效,其它DAS控制器120中的其中一个可以访问存储在SSD阵列110内并且与失效的DAS控制器120相关联的数据。
如本领域已知的,数据具有与其相关联的元数据,元数据定义该数据的属性,诸如,例如,数据来源的标识(即,散列高速缓存标签)、数据流的长度、以及数据是否已被修改(即,状态指示)。在DAS系统中,元数据通常被存储在DAS控制器内的动态随机存取存储器(DRAM)内。根据本发明的一个说明性实施例,元数据存储在DAS控制器120的存储器设备140内,而相应的数据被以参考图4-6的上述方式存储在SSD阵列110的高速缓冲存储器内。现在将参考图7描述用于处理元数据的说明性实施例。
图7示出了根据说明性实施例的图4所示的DAS系统100的方框图,其中数据被高速缓存在SSD阵列110内,而相关联的元数据被高速缓存在DAS控制器120内的高速缓冲存储器内。根据这个实施例,当DAS控制器120之一的CPU130在SSD阵列110的高速缓冲存储器内存储数据时,相应的元数据被存储在该DAS控制器120的存储器设备140的高速缓冲存储器部分(未示出)内,或被存储在该DAS控制器120的某些其它存储器设备(未示出)内。另外,为了提供元数据的高速缓存一致性,如图7中穿过相邻DAS控制器120之间的箭头所示,存储在该DAS控制器120内的高速缓冲存储器内的元数据被镜像到一个或多个其它DAS控制器120内的高速缓冲存储器内。以这种方式,如果其中一个DAS控制器120失效,可以从其中已经镜像元数据的其它DAS控制器120的高速缓冲存储器中恢复相应的元数据。
图8示出了根据说明性实施例的图4所示的DAS系统100的方框图,其中数据和相关联的元数据被高速缓存在SSD阵列110内。在SSD中,数据通常被写到预定字节(B)数目的块内,例如,每个块520B。由信息技术标准国际委员会(INCITS)的标准T10管理块格式。标准T10规定每个数据块包括数据完整性字段(DIF),该字段包括保护信息,诸如循环冗余校验(CRC)位、应用标签位和参考标签位。标准T10定义的DIF由每个块末尾的8B构成。因此,每个块由512B的数据和8B的DIF构成。根据这个说明性实施例,每个数据块的8B DIF用于表示与该数据块相关联的元数据。因此,数据和其相关联的元数据一起存储在SSD阵列110的高速缓冲存储器内。
将数据和其相关联的元数据一起高速缓存确保在操作过程中在出现电源故障的情况下,更新数据而不更新其相关联的元数据,或反之亦然。例如,如果数据和元数据被彼此无关地高速缓存在不同的存储器设备内,一个存储器设备的电源故障将使得不更新存储在失效存储器设备内的数据或元数据,而更新存储在不受电源故障影响的其它存储器设备内的数据或元数据。将数据和元数据一起高速缓存在SSD阵列110的高速缓冲存储器内避免了这种问题。
根据这个示例实施例,由64KB构成SSD阵列110的高速缓冲存储器中的高速缓存行,其中k=1024。由于给定的高速缓存行的每个块由512B的数据构成,每个高速缓存行由128个块构成(即,(64B×1024)/512B=128)。给定高速缓存行的128个块中的每一个块的DIF由8B元数据构成。然而,对于每个高速缓存行仅需要大约64B的元数据。这些64B的元数据被划分为8B的部分。因此,元数据仅需要用于给定高速缓存行的8块的DIF。根据该说明性实施例,每个128块高速缓存行的前8个块被分配给与包含在该高速缓存行内的数据相关联的8B元数据。为了提供冗余,相同的8B元数据被复制到该高速缓存行的下8个块的8个DIF中的每一个内。该高速缓存行的最后8个块的8个DIF中包含64B元数据的散列。由于写到高速缓存行的第一个块和最后一个块被该散列彼此相关联,这种方法确保了原子性。
图9示出了表示由图8所示的DAS控制器120执行的WB高速缓存算法的流程图。将参考图5、8和9描述该算法。DAS控制器120中的每一个的CPU130执行该WB高速缓存算法。然而为了简短起见,仅参考其中一个DAS控制器120描述该算法。当服务器或工作站(未示出)向DAS控制器120发送将被写到PD129的数据时,DAS控制器120接收该数据和其相关联的元数据,如方框301所指示的。然后CPU130处理接收到的数据,以便确定发生了高速缓存“命中”还是高速缓存“缺失”,如方框303所指示的。
如果CPU130确定发生了高速缓存缺失,CPU130计算元数据散列,并且使得数据、元数据和元数据散列被写到SSD阵列110的高速缓冲存储器,如方框305所指示的。存在用于计算元数据散列的各种已知散列算法。可以为这个目的使用任意适合的已知散列算法。因此,为了简短起见,此处不对用于计算元数据散列的算法进行描述。
在数据被写到SSD阵列110的高速缓冲存储器之后的某个时间点,CPU130使得该数据和其相关联的元数据被存储到PD129中的物理地址内,如方框306所指示的。如果在方框303,CPU130确定发生了高速缓存命中,在由方框306表示的步骤中,CPU130使得保持在SSD阵列110的高速缓冲存储器内的相应数据和元数据被存储到SSD阵列110内的相应物理地址内。
应当注意,上述参考图6和9描述的WB高速缓存算法可被以各种方法实现。通常在CPU130中完全以硬件或以硬件和软件或固件的组合执行该WB算法。用于这个目的的软件或固件指令被存储在计算机可读介质内,例如,诸如存储在DAS控制器120的存储器设备140内。
本领域的技术人员应当理解,可以对上述实施例进行许多变型,并且所有这些变型都在本发明的范围内。例如,可以在市场上获得不使用DIF的SSD。这些SSD适用于本发明用以高速缓存数据、元数据和元数据散列。本发明不限于在SSD阵列110中使用任意特定类型或配置的SSD。本发明还不限于有关DAS控制器120的配置。图5所示的DAS控制器120的配置仅是适用于本发明的SSD控制器配置的一个例子。
应当注意,出于证明本发明的原理和概念的目的,上面参考说明性实施例描述了本发明。本领域的技术人员将会理解,可以对此处描述的实施例进行许多修改,并且所有这些修改都在本发明的范围内。