背景技术
RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)技术已广泛应用于数据存储的各种场合,其中使用最为广泛的是RAID5。RAID5每个条带含有1个校验位,对条带中其他数据分块中的数据进行奇偶校验提供冗余保护。当一块磁盘损坏时,可以通过校验位与其他数据盘的奇偶运算来重建丢失的数据。
奇偶校验数据是由每个条带中的数据位使用XOR(异或)运算得出,这样在一个磁盘发生损坏时,可以通过条带中的数据位+奇偶校验位使用XOR运算来还原丢失的那部分数据。图1示出了一种由5个成员磁盘组成的RAID5阵列,缓存由一系列缓存单元所组成,缓存单元的大小和条带大小相同,当缓存单元写满后则将缓存单元中的数据刷入阵列磁盘,并计算条带校验和(图1中表示为P1,P2,P3,P4)。
目前的视频监控系统广泛使用RAID5进行数据存储。如图2所示,监控系统中的EC(视频编解码器)将数据写入RAID5阵列时,采用整条带写入的方法,目的是为了减少非整条带写时,对未修改条块的读操作,以提高写入效率。
但在现有监控环境中,经常会有关键业务数据需要进行复制。如图3所示,复制时首先需要将数据从磁盘中读出,再通过缓存将数据发送到已建立iSCSI(Internet Small Computer System Interface,小型计算机系统接口)连接的远程复制存储端的阵列中。因为磁盘的工作原理,磁头同一时间只能对一块磁道进行读取或写入操作。按现有的监控数据写入方式,则会导致整个条带的数据写入命令因为复制读取操作需要等待读取完成后才能继续写入,严重影响数据写入命令的响应,同时因为写与读的数据位于磁盘的不同位置,在读写命令相互切换过程中,磁头需要寻道来回移动,增加了磁盘相应命令的延时开销,从而会极大的减低数据写入的速率,导致EC端数据丢失。
如图4所示,阵列中有颜色填充的部分已写入需要复制的数据,而没有颜色填充的区域则为当前数据写入区域。当读写命令交互进行时,磁盘的磁头就会在这两个区域间来回滑动、定位,严重影响读写命令的相应时间。
例如,当阵列完成条带600的写入后,为了响应复制读取条带1中数据的命令,所有磁盘的磁头需要重新移动并定位到条带1上,然后进行读操作。待读操作完成后,接下来响应条带601的数据写入,磁头需要重新移动并定位到条带601上,才能完成写入操作。这样命令的交替响应将会使磁头不停的来回移动,严重影响读写效率。
由此可见,上述现有数据存取过程中,读取和写入操作需要交替进行,复制业务的读操作将较大程度影响写业务的性能,从而导致EC端丢包。整条带交替读写方式,将会使磁盘磁头不停的移动,从而使磁盘响应速度大大降低。
发明内容
本发明提供一种数据存取方法及其装置,用以实现在将读写业务相分离、不相互影响性能的情况下,又不使存储空间利用率减低,保证存储空间得到充分利用。
本发明提供的数据存取方法,应用于包含有数据存储设备的数据存储系统,所述数据存储设备的磁盘阵列中的每个条带被划分为第一分区和第二分区,且每个条带的第一分区包含相同数量的数据条块,每个条带的第二分区包含相同数量的数据条块,该方法包括:
在向磁盘阵列写入数据时,按照条带顺序在一个分区写入数据,并当所有条带的该分区写满之后,按照条带顺序在另一分区写入数据;
其中,当针对当前条带在第二分区写入数据的过程中,若该条带的第一分区已经写入数据,则读取该条带第一分区写入的数据,用读取的数据与写缓存中的数据生成校验和并更新该条带的校验和条块,并将读取的第一分区数据复制到远程存储设备进行备份,将写缓存中的数据写入该条带的第二分区。
本发明提供的数据存取装置,应用于数据存储设备,所述数据存储设备的磁盘阵列中的每个条带被划分为第一分区和第二分区,且每个条带的第一分区包含相同数量的数据条块,每个条带的第二分区包含相同数量的数据条块,该数据存取装置包括:写缓存读取模块、读写控制模块、校验和计算模块和发送模块,其中:
写缓存读取模块,用于从写缓存读取数据;
读写控制模块,用于控制磁盘阵列向相应磁盘的条带写入数据和从相应磁盘的条带读取数据;其中,在控制磁盘阵列写入数据时,按照条带顺序控制相应条带中的一个分区的成员磁盘在该分区写入数据,并当所有条带的该分区写满之后,按照条带顺序控制相应条带中的另一分区的成员磁盘在该分区写入数据;其中,当针对当前条带在第二分区写入数据的过程中,若该条带的第一分区已经写入数据,则控制相应成员磁盘读取该条带第一分区写入的数据,指示所述校验和计算模块用从该条带第一分区读取的数据与所述写缓存读取模块读取的数据生成校验和,并控制相应成员磁盘更新该条带的校验和条块,并指示发送模块将从该条带第一分区读取的数据发送给远程存储设备进行备份,控制相应成员磁盘将写缓存中的数据写入该条带的第二分区;
校验和计算模块,用于根据所述读写控制模块的指示,用从磁盘阵列成员磁盘读取的数据与所述写缓存读取模块读取的数据,计算校验和;
发送模块,用于根据所述读写控制模块的指示,将从所述磁盘阵列成员磁盘读取的数据发送到远端存储设备进行备份。
与现有技术相比,本发明具有以下有益技术效果:
通过将条带划分为两个分区并在一个分区写满后再向另一分区写入数据,一方面,使读写操作相互之间不再交替进行,并且磁头将以顺序方式进行移动,省却了寻道和定位操作,提高了磁盘响应速度,从而可以提高复制条件下监控业务存储的处理性能;另一方面,一个条带只有一个校验和,保证存储空间得到充分利用。
具体实施方式
本发明实施例通过将条带分区,以半条带的方式将数据写入RAID5。在向当前条带的一个分区写入数据时,读取另一分区中已写入的数据,并将读取出来的数据与新写入的数据进行校验和计算,用计算结果更新该条带的校验和,并且将读取出来的数据复制到远端存储设备上,完成数据的复制操作,从而在向一个条带的一个分区写入新数据的同时,实现对该条带的另一分区数据的复制备份。
下面结合附图对本发明实施例进行详细描述。
本发明实施例可适用于视频监控系统。图5示出了一种视频监控系统的网络架构,其中包括以下基本单元:模拟监控摄像输入(摄像机)、视频编码器(EC)、VM(Video Management,VM)、存储设备、数据管理服务器(MD)、视频客户端(Video Client,VC)以及相应的软件管理系统。其中,EC用于将模拟音视频信号转换为数字信号并使用实时音视频压缩算法处理后,将数据传输到网络,用于实时查看或存储。
存储设备采用RAID方式存储数据。本发明实施例对用于存储关键数据的存储设备基于RAID进行数据存取的机制进行了改进。即,将RAID的每个条带划分为2个分区(此处称为第一分区和第二分区),每个条带的第一分区和第二分区包含相连的条块(Block),所有条带的第一分区的大小相同,即每个条带第一分区所包含的条块数量相同,所有条带的第二分区的大小相同,校验和所在的条块不包括在第一分区和第二分区中。
优选的,在RAID阵列的成员磁盘数量为奇数时,一个条带中包含2N个数据条块和一个校验和条块,第一分区和第二分区可设置为大小相同,即包含相同数量的数据条块;在RAID阵列的成员磁盘数量为偶数时,一个条带中包含2N+1个数据条块和一个校验和条块,第一分区可设置为包含N个数据条块,第二分区可设置为包含N+1个数据条块,或相反。
图6示出了一种具有5个成员磁盘的RAID5阵列的条带分区示意。其中,条带1的Block 1、2,条带2的Block 3、4,条带3的Block 5、6,条带4的Block 7、8......属于第一分区;条带1的Block A、B,条带2的Block C、D,条带3的Block E、F,条带4的Block G、H......属于第二分区。P1、P2、P3、P4......为校验和条块。
基于以上条带分区,当向该存储设备存储数据时,遵循以下原则:
首先在一个分区内的各条带顺序写入数据,一个分区写满后,再向另一个分区的各条带写入数据;
在向第一分区写数据时,如果第二分区已经存储有数据,则一方面读取当前条带的第二分区中的数据,将读取出的数据与应写入该条带第一分区的数据进行校验运算,并用运算结果更新该条带的校验和条块数据内容;另一方面,将读取出的数据进行远程备份。反之亦然。
下面以一用于存储关键数据的存储设备,该存储设备采用RAID5,具有5个成员磁盘为例,对本发明实施例进行详细描述。
在阵列初始化阶段:将所有条带中的数据全部清零,然后将每个条带分为大小相等的两个分区:第一分区和第二分区,每个条带的第一分区和第二分区分别包含2个相连的数据条块,具体划分方式可如图6所示。进一步的,可将写缓存的缓存单元大小设置为与第一分区或第二分区大小相同,即一个缓存单元包含2个数据条块的数据。
在数据存取阶段:首先从条带1开始向第一分区写入数据,在条带1的第一分区写满之后,在条带2的第一分区写入数据,以此类推。向一个条带的第一分区写入数据的具体实现过程采用现有实现方式,例如,在向条带1的第一分区写入数据时,RAID控制器读取写缓存中的一个缓存单元的数据(包括两个条块大小的数据),控制磁盘1、2的磁头将读取的数据顺序写入条带1的Block 1、2,RAID控制器将从缓存单元读取的两个条块数据进行异或运算得到校验和,并控制磁盘5的磁头将该校验和写入条带1的P1。
当所有条带的第一分区写满之后,从条带1开始向第二分区写入数据,在条带1的第二分区写满之后,在条带2的第二分区写入数据,以此类推。向一个条带的第二分区写入数据的过程中还要完成该条带第一分区的数据备份操作以及更新该条带的校验和的操作。例如,如图7所示,在向条带1的第二分区写数据时,RAID控制器读取写缓存中的一个缓存单元的数据(包括两个条块大小的数据),控制磁盘1、2的磁头读取条带1的Block 1、2的数据,将读取到的数据与从写缓存读取的数据进行异或运算得到校验和,并控制磁盘5的磁头将运算得到的校验和写入条带1的P1,并将读取到的Block 1、2的数据通过复制模块发送到远端存储设备进行备份;RAID控制器控制磁盘3、4的磁头将RAID控制器从写缓存读取的数据写入条带1的Block A、B。
当第二分区写满之后,再有数据需要写入时,则从条带1开始复写第一分区的数据,即从条带1开始用新数据覆盖第一分区已有的数据,在条带1的第一分区写满之后,用新数据覆盖条带2的第二分区已有的数据,以此类推。在向一个条带的第一分区复写数据的过程中还要完成该条带第二分区的数据备份操作以及更新该条带的校验和的操作,具体实现过程如前所述,在此不再赘述。
同理,当第一分区写满之后,再有数据写入时,从条带1开始复写第一分区的数据,并在此过程中对条带1的第二分区的数据进行远程备份,并对条带1的校验和进行更新。如此往复。
可以看出,通过本发明将读写业务在条带的两个分区中进行,一方面,使其相互之间不再交替进行,由于本发明的数据存储结构特有的方式,磁头将以顺序方式由上到下进行顺序移动,省却了寻道和定位操作,大大提高了磁盘响应速度,从而可以有效的提高复制条件下监控业务存储的处理性能;另一方面,一个条带只有一个校验和不降低存储空间利用率,保证存储空间得到充分利用。
需要说明的是,上述实施例是以视频监控系统中的采用RAID5阵列的存储设备为例描述的,事实上本发明实施例可应用于其它有数据存储于备份需求的应用系统,并且可应用于其它阵列类型的存储设备。
基于相同的技术构思,本发明实施例还提供了一种可应用于上述实施例的数据存储装置。
参见图8,为本发明实施例提供的数据存取装置的结构示意图。该数据存取装置可以是磁盘阵列控制器。该装置应用于数据存储设备,所述数据存储设备的磁盘阵列(如RAID5)中的每个条带被划分为第一分区和第二分区,且每个条带的第一分区包含相同数量的数据条块,每个条带的第二分区包含相同数量的数据条块,该数据存取装置包括:写缓存读取模块801、读写控制模块802、校验和计算模块803和发送模块804,其中:
写缓存读取模块801,用于从写缓存读取数据;
读写控制模块802,用于控制磁盘阵列向相应磁盘的条带写入数据和从相应磁盘的条带读取数据;其中,在控制磁盘阵列写入数据时,按照条带顺序控制相应条带中的一个分区的成员磁盘在该分区写入数据,并当所有条带的该分区写满之后,按照条带顺序控制相应条带中的另一分区的成员磁盘在该分区写入数据;其中,当针对当前条带在第二分区写入数据的过程中,若该条带的第一分区已经写入数据,则控制相应成员磁盘读取该条带第一分区写入的数据,指示校验和计算模块803用从该条带第一分区读取的数据与写缓存读取模块801读取的数据生成校验和,并控制相应成员磁盘更新该条带的校验和条块,并指示发送模块804将从该条带第一分区读取的数据发送给远程存储设备进行备份,控制相应成员磁盘将写缓存中的数据写入该条带的第二分区;
校验和计算模块803,用于根据读写控制模块802的指示,用从磁盘阵列成员磁盘读取的数据与写缓存读取模块801读取的数据,计算校验和;
发送模块804,用于根据读写控制模块802的指示,将从所述磁盘阵列成员磁盘读取的数据发送到远端存储设备进行备份。
当一个条带中的数据条块数量为2N时,每个条带的第一分区和第二分区包含相同数量的数据条块;其中,N>1。当一个条带中的数据条块数量为2N+1时,每个条带的第一分区包含N个数据条块,每个条带的第一分区包含N+1个数据条块;或者,每个条带的第一分区包含N+1个数据条块,每个条带的第一分区包含N个数据条块;其中,N>1。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。