用多个虚拟通道进行RAID条带化 本发明涉及RAID设备。更具体来说,本发明涉及用多个虚拟通道条带化(striping)RAID设备上的数据。
冗余廉价磁盘阵列或冗余独立磁盘阵列(RAID)设备是一种日益流行的存储大量计算机数据的手段。RAID设备通常由一个RAID控制器和多个汇集在一起构成一个单个高容量驱动器的低容量的个人电脑型磁盘驱动器组成。RAID一般比常规的高容量驱动器便宜,因为个人电脑型驱动器由于产量高而比较廉价。
因为RAID设备包含多个磁盘驱动器,任何给定时刻有一个驱动器发生故障的可能性是比较高的。关于RAID设备的一个问题是如何在一个或多个驱动器发生故障时避免数据的丢失。对该问题的解决方案是在RAID设备中多个磁盘驱动器上“条带化”单个数据。给数据块条带化的方法是把数据块分解成多个片断或部分,并把各个部分存储在不同的磁盘驱动器上。经常把整个数据块的奇偶校验信息存储在驱动器的其中之一上。如果个别驱动器发生故障,可以根据其它驱动器上存储的数据块的其余部分和奇偶校验信息,重新装配存储在故障驱动器上的数据块地该片断。美国专利4,761,785号披露一例进行条带化的RAID设备。
在多数RAID设备中,主计算机把整个一个数据块以一个片断为单位发送到RAID控制器。RAID控制器然后必须把该数据块划分成多个子块,计算一个奇偶校验块,然后把这些子块和奇偶校验块写到各磁盘驱动器。因为每存储一个数据块,就需要RAID控制器执行所有这些步骤,在RAID设备上存储数据时,RAID控制器产生一些延迟。这种延迟可能严重降低给RAID设备上的数据条带化的过程的速度。
根据以上叙述,需要有更高效地在RAID设备上给数据条带化的方法和装置。
本发明的一个实施例是一个在N个磁盘驱动器上“条带化”数据的RAID设备。RAID设备从主计算机接收一个数据块存储请求,创建N个虚拟接口(“VI”)队列对。这些队列对构成N个通往主计算机的虚拟通道。此外,RAID设备还向每一个队列对发送一个描述符,每个描述符表示数据块的N分之一。此外,RAID设备接收经过每个虚拟通道的N分之一的数据块并把所接收的每个N分之一的数据块写到N个磁盘驱动器的一个不同的磁盘驱动器。
图1是按照本发明的一个实施例的计算机系统的框图。
图2是本发明一个实施例中当从主计算机接收一个要求在RAID设备中存储一个数据时由RAID设备执行的步骤的流程图。
本发明的一个实施例是一个用虚拟接口经过多个虚拟通道传输一个数据块的RAID设备。这多个虚拟通道各传输数据块的一部分,各部分在多个磁盘驱动器上被条带化。
图1是按照本发明的一个实施例的计算机系统的框图。计算机系统100包含与RAID设备40相连的主计算机10。主计算机10在图1中是通过一个直接连接30(诸如一个导线或多个导线)与RAID设备40相连的。不过在其它实施例中,主计算机10可以用任何用于传输数据的手段(包括开关、计算机网络和无线技术)与RAID设备40相连。此外可以将另外的计算机和设备连接到RAID设备40。
主计算机10包含处理器12。处理器12执行包括驱动程序14的软件应用程序。主计算机10进一步包括包含存储器16和传送装置20。主计算机10进一步包含连接主计算机10与RAID设备的网络接口卡(“NIC”)25。
主计算机10利用虚拟接口(“VI”)结构与与之相连的设备-如RAID设备40-通信。VI结构同时向多个应用程序和过程提供一个专用网络接口的假象,由此“虚拟化”接口。此外,VI结构还在VI用户(consumer)与一个或多个网络之间定义一个标准接口。在本发明中,驱动程序14起VI用户的作用。
在一个实施例中,用来实现本发明的VI结构,是在由康柏公司、因特尔公司和微软公司1997年12月19日发布的虚拟接口结构规范(VI规范)1.0版中披露的。VI规范可以在因特网http://www.viarch.org网址处得到。VI规范定义用于在互连的节点与互连的存储设备之间的低延迟、高带宽讯息传送的机制。低延迟和持续的高带宽是通过在发送和接收讯息时避免数据的中间副本和绕过操作系统而实现的。也可以用其它的执行像VI规范中所披露的VI结构的类似功能的结构来实现本发明,所以本发明并不限于唯一的VI结构。
传送装置20包含多个VI21-24。每个VI21-24包含一个队列对(“QP”)。按照VI规范,一个QP包含一个发送队列和一个接收队列。
RAID设备40包含多个磁盘驱动器60-63。磁盘驱动器60-63与RAID控制器70相连。RAID控制器70执行与向磁盘驱动器60-63存储数据和从磁盘驱动器60-63检索数据有关的步骤。RAID控制器70包含一个存储器存储区45,后者包括多个存储区存储单元46-49。
RAID设备40进一步包含一个与NIC42相连的传送装置50。NIC42连接RAID设备40与主计算机10。传送装置50包含多个QP51-54。RAID设备40中的一个QP和主计算机10中的一个相应的VI构成RAID设备40与主计算机10之间的一个虚拟通道的端点。在一个实施例中,当在RID设备上存储一个数据时,磁盘驱动器60-63的数量(称为“N”)等于存储单元46-49的数量、QP51-54的数量和VI21-24的数量。因此,如果正在在N个磁盘驱动器上给数据块条带化,RAID控制器将有N个存储单元,传送装置50将有N个QP,传送装置20将有N个相应的VI。这N个QP和N个VI构成N个虚拟通道的端点。
在计算机系统100内,驱动器14被称作“启动器”,因为它启动存储数据或检索数据的请求。而RAID设备40被称作“目标”,因为它响应计算机系统100内启动器发出的请求。RAID设备40例如通过在驱动器60-63上存储数据或从驱动器60-63检索数据而响应这些请求。
图2是本发明一个实施例中当从主计算机10接收一个要求在RAID设40备中存储一个数据的I/0请求时由RAID设备执行的步骤的流程图。假设RAID设备40在“N”个磁盘驱动器上给数据块条带化。
在步骤110接收请求,请求中包含在主计算机10的存储器16中存储数据块的单元。驱动器14在本地存储器16存储请求。按照VI规范,驱动器14向传送装置20中的一个发送队列发送一个表示该I/0请求的描述符(即在存储器16中存储数据块的单元)。驱动器14然后在NIC25中敲响门铃。门铃告诉NIC25在该发送队列中查找该描述符。NIC25然后提取描述符并执行任务。该任务将一个待传送的I/0请求讯息放置在连接30上。该I/O请求的接收设备(即RAID设备40)也有一个NIC(即NIC42)从连接30接收该I/0请求讯息。
该I/O请求讯息含有确定主存储器16中要从其转移数据的单元,并指定要把数据存储在RAID设备40中的位置。主存储器16中的单元是用一个符合VI规范的虚拟地址存储器处理对(memory handle pair)确定的。RAID设备40用该I/0请求讯息含有的信息建立用于完成数据从主计算机10向RAID设备40的实际转移的描述符。例如,在一个实施例中,RAID设备40从主计算机10接收到请求后,就启动从主计算机10的一个数据传送。该数据传送是用VI远程直接存储器存取(“RDMA”)传送装置启动的。
在一个实施例中,RAID设备40在步骤120生成N个经过直接连接30的虚拟通道。生成这些虚拟通道的方法是在传送装置50中创建N个QP51-54并请求主计算机10在传送装置20中创建N个VI21-24。在另一个实施例中,在请求在步骤110被接收之前就生成N虚拟通道。
在步骤130,RAID设备40向每个QP51-54发送描述符。这些描述符规定每个QP51-54都应在与每个QP51-54相关联的虚拟通道上移动在存储器16中存储的数据的N分之一。然后按照VI规范将数据移过这些虚拟通道。
在步骤140,将由每个QP51-54移动的N分之一数据存储在存储器45的存储单元46-49中。将每个N分之一数据存储在单独的存储单元46-49中。
最后在步骤150,RAID控制器70将在存储器45中存储的每个N分之一数据写到不同的磁盘驱动器60-63。所以,原始数据块在磁盘驱动器60-63上被条带化,因为数据块的各部分被写入每个驱动器60-63。
奇偶校验数据也可以被生成并存储在磁盘驱动器60-63中。奇偶校验数据可以由RAID控制器70生成,或者由主计算机10生成。
如上所述,按照本发明的RAID设备利用VI传送装置的服务,在将数据块从主计算机向RAID设备传送的同时,把一个数据块划分成N个子块。因此,RAID设备中的RAID不必为在N个磁盘驱动器上给数据块条带化而划分数据块。
本发明提供RAID的好处(即低成本磁盘、高性能和高可靠性),却不需要复杂的RAID控制器,或者根本不需要RAID控制器(因为RAID控制器的责任只是把数据从“N”个存储单元写到“N”个设备)。此外,由RAID控制器引起的延迟得到降低,并且RAID控制器的整个功能能以软件方式实现。
本发明在由主计算机10从RAID设备40读取数据时也提供好处。例如,当读取数据时,RAID控制器70在开始把N分之一数据块写入主存储器16之前,不必等到完成从所有磁盘60-63读取数据。所以,一旦任何一个磁盘60-63已经完成将其N分之一返回到存储器45中的N个存储单元的其中之一,RAID控制器70就能开始把数据块的该部分转移到主存储器45。
本文具体地解释和/或说明了本发明的几个实施例。然而要知道,本发明的修改和更改是由上述原理包含的,在后附的权利要求的范围内,不偏离本发明的精神和预定范围。
例如,尽管存储器45位于RAID控制器70内,它可以位于能与RAID控制器70相连的任何位置。