CN103733175B - 一种文件处理方法、装置及存储设备 - Google Patents

一种文件处理方法、装置及存储设备 Download PDF

Info

Publication number
CN103733175B
CN103733175B CN201380001800.9A CN201380001800A CN103733175B CN 103733175 B CN103733175 B CN 103733175B CN 201380001800 A CN201380001800 A CN 201380001800A CN 103733175 B CN103733175 B CN 103733175B
Authority
CN
China
Prior art keywords
matrix
data block
row
raid
block
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
Application number
CN201380001800.9A
Other languages
English (en)
Other versions
CN103733175A (zh
Inventor
孔晗
王静
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XFusion Digital Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN103733175A publication Critical patent/CN103733175A/zh
Application granted granted Critical
Publication of CN103733175B publication Critical patent/CN103733175B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Storage Device Security (AREA)

Abstract

本发明实施例提供了一种文件处理方法、装置和存储设备。在该方法中,存储设备通过将接收的F个文件划分为多个数据块,并根据所述多个数据块获得T行的第一矩阵。属于同一个文件的数据块位于所述第一矩阵的同一行中。存储设备再将所述第一矩阵中每一列的数据块和根据该列数据块计算获得的校验块组成分条,写入独立磁盘冗余阵列(Redundant Array of Independent Disks,RAID)中。通过该文件处理方法,存储设备能够确保文件存储的安全性的基础上将同一个文件写入RAID的一个存储器中,并能在读取文件时,达到了较好的节能效果。

Description

一种文件处理方法、装置及存储设备
技术领域
本发明涉及通信技术领域,尤其涉及一种文件处理方法、装置及存储设备。
背景技术
独立磁盘冗余阵列(Redundant Array of Independent Disks,RAID),又称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks,RAID),简称硬盘阵列。RAID的原理是通过将多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘,并且配合数据分散排列的设计,提升数据的安全性。根据选择的版本不同,RAID与单颗硬盘相比,不仅能够增大存储容量,还能够增强数据集成度以及数据的容错能力。另外,磁盘阵列对于电脑来说,看起来就像一个单独的硬盘或逻辑存储单元。
在归档的场景下,由于需要归档的文件很多。现有技术中通常采用RAID来存储归档的文件,且为了提升数据的安全性,通常采用带校验功能的RAID来存储归档的文件,例如:RAID3、RAID4、RAID5或RAID6等形式。现有技术中为了提升数据访问速度,通常将一个文件分割成若干数据块,将属于同一个文件的多个数据块与校验块一起组成RAID的一个分条(stripe)写入构建RAID的多个磁盘中。由于归档的文件被访问的频率较低,因此,为了达到节能的目的,将文件归档后,通常会将存储系统中的磁盘处于休眠或下电状态,在需要访问某个归档的文件时,才对存储该文件的数据块的多个磁盘进行唤醒或上电操作,以读取文件。
发明内容
本发明实施例中提供的一种文件处理方法、装置及存储设备,能够在确保文件存储的安全性的同时将同一个文件存储于RAID的一个存储器中,并能够达到节能效果。
第一方面,本发明实施例提供一种文件处理方法,包括:
接收待存储于独立磁盘冗余阵列(Redundant Array of Independent Disks,RAID)中的F个文件,所述RAID由T个存储器组成,F为不小于2的自然数,T为不小于3的自然数;
将所述F个文件按照RAID的条带大小划分成至少两个数据块;
根据所述至少两个数据块获得T行的第一矩阵,其中,属于同一个文件的数据块位于所述第一矩阵的同一行中;
将所述第一矩阵中每一列的数据块和根据该列数据块计算获得的校验块组成分条,写入构建所述RAID的T个存储器中。。
在第一方面的第一种可能的实现方式中,所述根据所述至少两个数据块获得T行的第一矩阵包括:
将切分后获得的至少两个数据块排列为D行的第二矩阵,其中,属于同一个文件的数据块位于所述第二矩阵的同一行中,所述D为所述RAID中的数据存储器的数量;
分别在所述第二矩阵的每一列中插入校验块,获得所述T行的第一矩阵,其中,所述插入的校验块是根据所述第一矩阵中校验块所在列的数据块计算获得的。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,当所述RAID中包括独立校验存储器时,所述分别在所述第二矩阵的每一列中插入校验块,获得所述T行的第一矩阵包括:
根据所述RAID中独立校验存储器的位置确定在所述第二矩阵中插入校验块的位置;
根据所述RAID的校验算法分别对所述第二矩阵中每一列的数据块进行校验计算,获得每一列数据块的校验块;
根据确定的校验块的位置在第二矩阵的每一列中插入根据该列数据块计算的校验块,获得所述T行的第一矩阵。
结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述RAID中不包括独立校验存储器时,所述分别在所述第二矩阵的每一列中插入校验块,获得T行的第一矩阵包括:
确定在所述第二矩阵的各列中插入校验块的位置A[x,y],其中,所述第二矩阵具有N列,x和y均为整数,x的取值由O递增到D-1,y的取值由0递增到N-1;
将所述第二矩阵的x行中y列至(N-1)列的数据块顺序移动到x行中(y+1)列至N列的位置;
根据所述RAID的校验算法对所述y列中的数据块进行校验计算,获得所述y列数据块的校验块;
在所述第二矩阵的y列中的A[x,y]的位置插入所述y列数据块的校验块,获得所述T行的第一矩阵。
结合第一方面或者第一方面的第一种至第三种任意一种可能的实现方式,在第四种可能的实现方式中,所述将所述第一矩阵中每一列的数据块和根据该列数据块计算获得的校验块组成分条,写入构建所述RAID的T个存储器中包括:
当所述第一矩阵的y列中的数据块和根据所述y列的数据块计算获得的校验块组成的分条中写满数据时,将所述y列的数据块和所述校验块写入构建所述RAID的T个存储器中,其中,所述y列为所述第一矩阵中的其中一列。
结合第一方面或者第一方面的第一种至第三种任意一种可能的实现方式,在第五种可能的实现方式中,所述第一矩阵具有M列,所述将所述第一矩阵中每一列的数据块和根据该列数据块计算获得的校验块组成分条,写入构建所述RAID的T个存储器中包括:
当所述第一矩阵的y列中的数据块和根据所述y列数据块计算获得的校验块组成的分条中未写满数据时,则确定所述y列中缺少的数据块的数量,其中,所述y列为所述第一矩阵中的其中一列;
从所述第一矩阵的第M-1列至第y+1列中选择所述数量的数据块填充到所述y列中没有数据块的位置;
根据填充后的y列中的数据块更新所述y列的校验块;
将所述y列的数据块和所述更新后的y列的校验块组成分条写入构建所述RAID的T个存储器中。
结合第一方面或者第一方面的第一种至第三种任意一种可能的实现方式,在第六种可能的实现方式中,所述将所述第一矩阵中每一列的数据块和根据该列数据块计算获得的校验块组成分条,写入构建所述RAID的T个存储器中包括:
当所述第一矩阵的y列中的数据块和根据所述y列的数据块计算获得的校验块组成的分条中未写满数据时,将所述y列中没有数据块的位置填充为0,并将填充后的y列的数据块和所述校验块组成分条写入构建所述RAID的存储器中,其中,所述y列为所述第一矩阵中的其中一列。
结合第一方面或者第一方面的第一种至第六种任意一种可能的实现方式,在第七种可能的实现方式中,还包括:
接收主机的访问请求,所述访问请求用于读取存储于所述RAID中的文件,所述访问请求中携带有要访问的文件的逻辑地址;
根据所述逻辑地址查询存放所述文件的数据块的物理地址;
根据所述物理地址确定存储所述文件的一个存储器;
将存储于所述存储器中的所述文件的数据块返回给所述主机。
第二方面,本发明实施例提供一种文件处理方法,包括:
接收待存储于独立磁盘冗余阵列(Redundant Array of Independent Disks,RAID)中的F个文件;
将所述F个文件按照所述RAID的条带大小划分成至少两个数据块;
将切分后获得的至少两个数据块排列成一个数组,在所述数组中,属于同一文件的相邻两个数据块之间间隔D-1个位置,其中,所述D的值为所述RAID中的数据存储器的数量;
顺序将所述数组中的D个数据块以及根据所述D个数据块计算获得的P个校验块组成分条,写入构建所述RAID的存储器中,其中,所述P的值为所述RAID中独立校验存储器的数量。
在第二方面的第一种可能的实现方式中,还包括:
接收主机的访问请求,所述访问请求用于读取存储于所述RAID中的文件,所述访问请求中携带有要访问的文件的逻辑地址;
根据所述逻辑地址查询存放所述文件的数据块的物理地址;
根据所述物理地址确定存储所述文件的一个存储器;
将存储于所述存储器中的所述文件的数据块返回给所述主机。
第三方面,本发明实施例提供一种文件处理装置,包括:
接收模块,用于接收待存储于独立磁盘冗余阵列(Redundant Array ofIndependent Disks,RAID)中的F个文件,所述RAID由T个存储器组成,F为不小于2的自然数,T为不小于3的自然数;
划分模块,用于将所述F个文件按照所述RAID的条带大小划分成至少两个数据块;
处理模块,用于根据所述至少两个数据块获得T行的第一矩阵,其中,属于同一个文件的数据块位于所述第一矩阵的同一行中;
写入模块,用于将所述第一矩阵中的每一列的数据块和根据该列数据块计算获得的校验块组成分条,写入构建所述RAID的T个存储器中。
在第三方面的第一种可能的实现方式中,所述处理模块具体用于:
将切分后获得的至少两个数据块排列为D行的第二矩阵,其中,属于同一个文件的数据块位于所述第二矩阵的同一行中,所述D为所述RAID中的数据存储器的数量;
分别在所述第二矩阵的每一列中插入校验块,获得所述T行的第一矩阵,其中,所述插入的校验块是根据所述第一矩阵中校验块所在列的数据块计算获得的。
结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,当所述RAID中包括独立校验存储器时,所述处理模块具体用于:
根据所述RAID中独立校验存储器的位置确定在所述第二矩阵中插入校验块的位置;
根据所述RAID的校验算法分别对所述第二矩阵中每一列的数据块进行校验计算,获得每一列数据块的校验块;
根据确定的校验块的位置在第二矩阵的每一列中插入根据该列数据块计算的校验块,获得所述T行的第一矩阵。
结合第三方面的第一种可能的实现方式,在第三种可能的实现方式中,当所述RAID中不包括独立校验存储器时,所述处理模块具体用于:
确定在所述第二矩阵的各列中插入校验块的位置A[x,y],其中,所述第二矩阵具有N列,x和y均为整数,x的取值由O递增到D-1,y的取值由0递增到N-1;
将所述第二矩阵的x行中y列至(N-1)列的数据块顺序移动到x行中(y+1)列至N列的位置;
根据所述RAID的校验算法对所述y列中的数据块进行校验计算,获得所述y列数据块的校验块;
在所述第二矩阵的y列中的A[x,y]的位置插入所述y列数据块的校验块,获得所述T行的第一矩阵。
结合第三方面或者第三方面的第一种至第三种任意一种可能的实现方式,在第四种可能的实现方式中,所述写入模块具体用于:
当所述第一矩阵的y列中的数据块和根据所述y列的数据块计算获得的校验块组成的分条中写满数据时,将所述y列的数据块和所述校验块写入构建所述RAID的T个存储器中,其中,所述y列为所述第一矩阵中的其中一列。
结合第三方面或者第三方面的第一种至第三种任意一种可能的实现方式,在第五种可能的实现方式中,所述第一矩阵具有M列,所述写入模块具体用于:
当所述第一矩阵的y列中的数据块和根据所述y列数据块计算获得的校验块组成的分条中未写满数据时,则确定所述y列中缺少的数据块的数量,其中,所述y列为所述第一矩阵中的其中一列;
从所述第一矩阵的第M-1列至第y+1列中选择所述数量的数据块填充到所述y列中没有数据块的位置;
根据填充后的y列中的数据块更新所述y列的校验块;
将所述y列的数据块和所述更新后的y列的校验块组成分条写入构建所述RAID的T个存储器中。
结合第三方面或者第三方面的第一种至第三种任意一种可能的实现方式,在第六种可能的实现方式中,所述写入模块具体用于:
当所述第一矩阵的y列中的数据块和根据所述y列的数据块计算获得的校验块组成的分条中未写满数据时,将所述y列中没有数据块的位置填充为0,并将填充后的y列的数据块和所述校验块组成分条写入构建所述RAID的存储器中,其中,所述y列为所述第一矩阵中的其中一列。
结合第三方面或者第三方面的第一种至第六种任意一种可能的实现方式,在第七种可能的实现方式中,所述接收模块,还用于接收主机的访问请求,所述访问请求用于读取存储于所述RAID中的文件,所述访问请求中携带有要访问的文件的逻辑地址;
所述文件处理装置还包括:
读取模块,用于根据所述逻辑地址查询存放所述文件的数据块的物理地址,根据所述物理地址确定存储所述文件的一个存储器,并将存储于所述RAID的一个存储器中的所述文件的数据块返回给所述主机。
第四方面,本发明实施例提供了一种存储设备,包括控制器和独立磁盘冗余阵列(Redundant Array of Independent Disks,RAID),
所述RAID,用于存储文件;
所述控制器包括:
处理器、存储器、通信总线和通信接口,所述处理器、所述存储器和所述通信接口通过所述通信总线连接并完成相互间的通信;
所述通信接口,用于与主机及所述独立磁盘冗余阵列(Redundant Array ofIndependent Disks,RAID)通信;
所述存储器,用于存储计算机执行指令;
所述处理器,用于运行所述计算机执行指令,执行如第一方面或第二方面所述的文件处理方法。
第五方面,本发明实施例提供了一种计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行如第一方面或第二方面所述的文件处理方法。
在本发明实施例中提供的文件处理方法中,存储设备通过将接收的F个文件划分为多个数据块,并根据所述多个数据块获得T行的第一矩阵。属于同一个文件的数据块位于所述第一矩阵的同一行中。存储设备再将所述第一矩阵中每一列的数据块和根据该列数据块计算获得的校验块组成分条存储在RAID中,从而可以使得属于同一个文件的数据块能够存储于所述RAID的一个磁盘中。并且,当一个文件损坏时,存储设备可以根据其他文件以及校验块对损坏的文件进行恢复,保证了文件存储的安全性。进一步的,在归档的场景下,当需要访问RAID中的文件时,存储设备只需要对存储该文件的一个存储器进行唤醒及操作,节能效果显著。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
图1-A为本发明实施例的一种文件处理方法的应用场景图;
图1-B为本发明实施例提供的一种存储设备110的结构示意图;
图2-A为本发明实施例提供的一种文件处理方法的流程图;
图2-B为本发明实施例提供的又一种文件处理方法的流程图;
图3为本发明实施例提供的一种文件处理方法中的校验块插入方法的流程图;
图4-A、图4-B以及图4-C为本发明实施例提供的一种待存储文件数据块的排列示意图;
图4-D为本发明实施例提供的一种文件存储结构示意图;
图5-A为本发明实施例提供的文件处理方法中的又一种校验块插入方法的流程图;
图6-A、图6-B及图6-D为本发明实施例提供的又一种待存储文件数据块的排列示意图;
图6-C为本发明实施例提供的又一种文件存储结构示意图;
图7为本发明实施例提供的一种文件处理方法中的将数据写入构建RAID的磁盘中的方法流程图;
图8为本发明实施例提供的再一种文件处理方法的流程图;
图9为本发明实施例提供的再一种待存储文件数据块的排列示意图;
图10为本发明实施例提供的一种文件读取方法流程示意图;
图11为本发明实施例提供的一种文件处理装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。
如图1-A所示,图1-A为本发明实施例的一种应用场景图,在图1-A所述的一种应用场景中,该存储系统包括主机100、连接设备105和存储设备110。
主机100可以包括当前技术已知的任何计算设备,如应用服务器、台式计算机等等,在主机100中安装有操作系统以及其他应用程序,主机100可以有多个。
连接设备105可以包括当前技术已知的存储设备和主机之间的任何接口,如光纤交换机,或者其他现有的交换机。
存储设备110可以包括当前技术已知的存储设备,如存储阵列、磁盘簇(Just a Bunch Of Disks,JBOD)、直接存取存储器(Direct Access StorageDevice,DASD)的一个或多个互连的磁盘驱动器,其中,直接存取存储器可以包括诸如磁带库、一个或多个存储单元的磁带存储设备。
图1-B为本发明实施例提供的一种存储设备110的结构示意图,图1-B所示的存储设备为一种存储阵列。如图1-B所示,存储设备110可以包括控制器115以及磁盘阵列125,其中,这里的磁盘阵列指的是独立磁盘冗余阵列(Redundant Arrays of Independent Disks,RAID),磁盘阵列125可以有多个,磁盘阵列125由多个磁盘130构成。
控制器115是存储设备110的“大脑”,主要包括处理器(processor)118、缓存(cache)120、存储器(memory)122、通信总线(简称总线)126以及通信接口(Communication Interface)128。处理器118、缓存120、存储器122以及通信接口128通过通信总线126完成相互间的通信。
通信接口128,用于与主机100及磁盘阵列125通信。
存储器122,用于存放程序124,存储器124可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可以理解的是,存储器124可以为随机存储器(Random-Access Memory,RAM)、磁碟、硬盘、U盘、移动硬盘、光盘、固态硬盘(Solid State Disk,SSD)或者非易失性存储器等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
程序124可以包括程序代码,所述程序代码包括计算机操作指令。
缓存120(Cache)用于缓存从主机100接收的数据以及缓存从磁盘阵列125读取的数据,以提高阵列的性能和可靠性。缓存120可以是RAM、ROM、闪存(Flash memory)或固态硬盘(Solid State Disk,SSD)等各种可以存储数据的非短暂性的(non-transitory)机器可读介质,在此不做限定。
处理器118可能是一个中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。在处理器118中安装有操作系统和其他软件程序,不同的软件程序可以视作一个处理模块,具有不同的功能。例如,处理对磁盘130的输入/输出(Input/output,I/O)请求,对磁盘中的数据进行其他处理,或者修改存储设备中保存的元数据等等。从而使控制器115可以实现IO操作、RAID管理功能,还能够提供如快照、镜像、复制等各种的数据管理功能。在本发明实施例中,处理器118用于执行程序124,具体可以执行下述方法实施例中的相关步骤。
结合图1-A,任意一个存储设备110均可以通过连接设备105接收一个或多个主机100发送的多个文件,并将接收的多个文件分成多个数据块并存储在构成磁盘阵列125的多个磁盘130中。任意一个存储设备110也可以接收任意一个主机100发送的文件读取请求,根据文件读取请求将磁盘130中存储的所述文件的数据块返回给主机。
需要说明的是,磁盘130仅仅是构建磁盘阵列125的存储器的一种示例,实际应用中,还可以在包含多个磁盘的机柜之间构建磁盘阵列等实施方式。因此,本发明实施例中的存储器可以包括磁盘、固态硬盘(Solid State Drives,SSD)、由多个磁盘构成的机柜或服务器等装置,在此不做限定。
图2-A为本发明实施例所示的一种文件处理方法的流程图,该方法可以由图1-B所示的存储设备110的控制器115来执行,该方法可以应用于文件归档的场景中,如图2-A所示,该方法包括:
在步骤200中,存储设备110接收待存储在RAID中的F个文件,其中,F为不小于2的自然数。在本发明实施例中,存储设备110的控制器115可以接收一个或多个主机100发送的文件存储请求,该文件存储请求用于请求将文件存储于存储设备110的第一RAID中,第一访问请求中可以包含有待存储的F个文件。所述第一RAID中包含有T个存储器,且所述T的值为不小于3的自然数。
结合图1-B所示,在存储设备110中可以包括多个RAID。本实施例中所述的第一RAID或第二RAID是存储设备110中包含的多个RAID中的任意一个,本发明实施例中的第一RAID和第二RAID仅仅只是对不同RAID的一个区分。同一个存储设备110中包含的多个RAID的组织形式可以相同,例如,第一RAID和第二RAID都是RAID5的组织形式。当然,同一个存储设备110中包含的多个RAID的组织形式也可以不同,例如,第一RAID为RAID3,第二RAID为RAID5。在此并不限定。可以理解的是,实际操作中,可以先将接收的F个文件缓存在缓存120中,对该F个文件进行处理后再写入磁盘阵列125中。
在步骤205中,存储设备110将所述F个文件按照第一RAID的条带大小(strip size)切分成至少两个数据块。条带(strip)是一个盘区上的连续地址块。在磁盘阵列中,控制器通常采用条带将虚拟磁盘的块地址(blockaddresses)映射到成员盘的块地址。条带也被称为分条元素(stripe element)。条带大小(strip size),有时也被叫做block size,chunk size或者granularity,指的是写在每块磁盘上的条带数据块的大小。通常,RAID的条带大小一般在2KB到512KB之间(或者更大),其数值是2的n次方,即2KB,4KB,8KB,16KB等。
当将接收的文件按照第一RAID的条带大小进行切分时,如果有个文件小于第一RAID的条带大小的值,可以将该文件作为一个数据块。如果某个文件切分后剩下的数据块小于条带大小的值,则将该文件剩下的数据作为一个数据块。例如,如图4-A所示,控制器115接收到5个待存储的文件F1-F5。按照第一RAID的条带大小进行切分后,将文件F1切分为5个数据块:F1-1、F1-2、F1-3、F1-4和F1-5。将文件F2切分为3个数据块:F2-1、F2-2和F2-3。将文件F3切分为一个数据块:F3-1。将文件F4切分为5个数据块:F4-1、F4-2、F4-3、F4-4和F4-5。将文件F5切分为4个数据块:F5-1、F5-2、F5-3和F5-4。
在步骤210中,存储设备110根据所述至少两个数据块获得T行的第一矩阵。其中,属于同一个文件的数据块位于所述第一矩阵的同一行中。并且,在所述第一矩阵的每一列中包含有根据该列的数据块进行计算获得的校验块,所述T的值等于构建所述第一RAID中的磁盘的数量。
例如,如果所述第一RAID中共有4块磁盘,则可以根据上述切分后的F1-F5的文件的数据块获得4行的第一矩阵,且属于同一个文件的数据块位于所述第一矩阵的同一行中。如图4-C所示,文件F1的数据块F1-1、F1-2、F1-3、F1-4和F1-5均位于第一矩阵的第0行中,文件F2的数据块F2-1、F2-2、和F2-3均位于第二矩阵的第1行中。
具体在获得第一矩阵的过程中,可以将第一个文件的第一个数据块确定为第一矩阵的A[0,0]位置的数据块,并判断第二数据块是否属于第一文件,如果第二数据块属于第一个文件,则将第二个数据块与所述第一个数据块排列在同一行,如果第二数据块不属于第一个文件,则将第二数据块排列在第一个找到的空行,或将第二数据块排列在第二矩阵最短的行中。依次类推,直到将切分获得的所有数据块排列完毕。当然可以理解的是,还可以采用其他的方法将切分获得的数据块排列为第一矩阵,只要保证属于同一个文件的数据块位于矩阵的同一行中即可,在此不做限定。排列后的T行的第一矩阵具体可以如图4-C或图6-B所示。
在排列的T行的第一矩阵中的每一列中包含有根据该列的数据块进行计算获得的校验块,例如,在如图4-C所示的第一矩阵中,在第0列中包含有根据第0列的数据块:F1-1、F2-1和F3-1获得的校验块P1,在第1列中包含有根据第1列的数据块:F1-2、F2-2和F3-2获得的校验块P2。
在本发明实施例中,并不对文件在所述第一矩阵中的具体位置做限定,也不对属于同一个文件的数据块之间的排列顺序做任何限定,只要保证同一个文件的数据块位于所述第一矩阵的同一行中即可。实际应用中,可以将属于同一个文件的数据块顺序排列在所述第一矩阵的同一行中。
在步骤215中,存储设备110将所述第一矩阵中每一列的数据块和根据该列数据块计算获得的校验块组成分条(stripe),写入构建所述第一RAID的T个存储器中。
在获得第一矩阵后,可以分别将第一矩阵中的每一列的数据块和根据该列的数据块计算获得的校验块组成RAID中的一个分条写入构建第一RAID的磁盘中。例如,在一种情况下,分别将图4-C所示的第一矩阵中的每一列数据块和根据该列的数据块计算获得的校验块组成分条写入磁盘中后,形成如图4-D所示的存储结构。其中,F1-1、F2-1、F3-1和P1构成所述第一RAID的一个分条,F1-2、F2-2、F3-2和P2构成所述第一RAID的另一个分条,依次类推。在另一种情况下,分别将图6-B所示的第一矩阵中的每一列数据块和根据该列的数据块计算获得的校验块组成分条写入磁盘中后,可以形成如图6-C所示的存储结构。需要说明的是,本发明实施例中描述的分条(stripe)是指并行写入构建RAID的各个存储器上的数据块的集合,其中,分条中的各个数据块的大小相同,且同一个分条上的数据块位于各个存储器中的偏移位置相同。
可以理解的是,在实际应用中,可以将图4-C或图6-B中所示的第一矩阵中某一列数据块计算获得该列的校验块,并在该列中插入校验块后,将该列数据块和校验块组成一个分条存储在构建所述第一RAID的磁盘中。也可以等到该第一矩阵中每一列的校验块均计算完成后,再分别将第一矩阵中的每一列数据块和根据该列数据块计算获得的校验块组成一个分条,存储在构建所述第一RAID的磁盘中。例如,可以先根据图4-C所示的第一阵列中的第0列数据F1-1、F2-1和F3-1计算获得校验块P1后,即将图4-C中的第0列数据F1-1、F2-1、F3-1和P1组成一个分条存储在构建第一RAID的磁盘D1-D4中。也可以分别计算获得所有校验块P1-P7后,再分别将第一矩阵中的各列数据块和校验块组成分条存储在磁盘D1-D4中。在此不做限定。
由上述描述可知,本发明实施例所述的文件处理方法,通过将待存储的文件进行切分、排列之后,再将属于不同文件的数据块组成分条存储在构建第一RAID的磁盘中,不仅保证了文件的写入效率,并且可以使得属于同一个文件的数据块能够存储一个磁盘中。例如,属于文件F1的所有数据块均被存储于磁盘D1中,属于文件F2的所有数据块也均被存储于磁盘D2中。采用本发明实施例的方法将多个文件存储在RAID中后。当需要访问存储阵列中的某一个文件时,存储设备110可以不用将整个RAID中的磁盘均唤醒,只需要唤醒存储有该文件的一个磁盘,并将该磁盘中的文件返回给主机,从而能够起到了较好节能效果。并且,在本发明实施例的技术方案中,如果某个数据块被损坏,可以通过同一个分条中的校验块以及其他文件的数据块对损坏的数据块进行恢复,保证了文件存储的安全性。
需要说明的是,本发明实施例中描述的数据块是指由多个数据组成的数据单元。本发明实施例中描述的校验块是指由校验数据组成的数据单元。本发明实施例中描述的矩阵可以为包含多个由数据块组成的队列,还可以为包含多个由数据块和校验块组成的队列。本发明实施例中的行是指包含有属于同一个文件的所有数据块的一个队列。本发明实施例中的列是指与所述行处于垂直方向的队列。换句话说,本发明实施例中定义的行并没有限定为只能是如通常矩阵中定义的横向的队列。当普通矩阵中横向的队列中包含有属于同一个文件的数据块时,可以将该横向队列(例如如图4-C中的横向队列)称为本发明实施例中的行。当普通矩阵中纵向的队列中包含有属于同一个文件的数据块时,则将该纵向队列称为本发明实施例中的行。在此不做限定。
图2-B为本发明实施例提供的又一种文件处理方法的流程图,该方法可以由图1-B所示的存储设备110的控制器115来执行,该方法可以应用于文件归档的场景中,如图2-B所示,该方法与图2-A所示的方法类似,其中,步骤207和步骤209是对图2-A所示方法中的步骤210的详细描述。如图2-B所示,该方法包括:
在步骤200中,存储设备110接收待存储于第一RAID中的F个文件。其中,F为不小于2的自然数。所述第一RAID中包含有T个存储器,所述T的值为不小于3的自然数。
在步骤205中,存储设备110将F个文件按照第一RAID的条带大小切分为至少两个数据块。
在步骤207中,存储设备110将所述至少2个数据块排列为D行的第二矩阵,其中,属于同一个文件的数据块位于所述第二矩阵的同一行中,所述D为所述第一RAID中的数据盘的数量;
在将文件进行切分得到多个数据块后,可以将获得的多个数据块排列为D行*N列的第二矩阵,其中,D用于表示第二矩阵的行数,D的值由构建第一RAID的数据盘的数量来确定,N为正整数。可以理解的是,第一RAID的数据盘的数量需要根据第一RAID的组织形式来确定。例如,RAID3中会包括数据盘和1个独立校验盘,RAID4中会包括数据盘和2个独立校验盘。而RAID5中只有数据盘,没有独立校验盘。D的值只需要根据第一RAID中的数据盘的数量来确定。例如,如果所述第一RAID的组织形式为RAID3,且该第一RAID总共有4个磁盘,则数据盘的个数为3个,校验盘的个数为1个,因此该第二矩阵的行数为3行,可以排列成如图4-B所示的第二矩阵。如果所述第一RAID的组织形式为RAID5,且该第一RAID总共有4个磁盘,则数据盘的个数为4个,校验盘的个数为0个,则该第二矩阵的行数为4行,可以排列成如图6-A所示的第二矩阵。
N用于表示第二矩阵的列数,N为正整数,N的值可以不用限定,具体可以根据数据块的多少来确定。可以理解的是,在将接收的多个待存储的文件缓存在缓存120中的情况下,N的大小可以根据缓存120的大小来确定,N与所述条带大小的乘积不大于缓存120的容量。具体在排列第二矩阵的过程与上述图2-A的步骤210中描述的排列第一矩阵的方法类似,在此不再赘述。
需要说明的是,本发明实施例中的数据盘只是存放数据块的数据存储器的一种示例,本发明实施例中的独立校验盘也只是专门用于存储校验数据的独立校验存储器的一种示例。本发明实施例中的数据存储器是指用于存储数据块的存储器,独立校验存储器是指专门用于存储校验块的存储器,其中,存储器包括但不限于磁盘、包含磁盘的机柜或服务器等装置。
在本发明实施例中,在具体排列数据块时,必须保证属于同一个文件的数据块位于所述第二矩阵的同一行中,例如,如图4-B所示,如果第一RAID为RAID3的组织形式,第一RAID中有3块数据盘,则可以把文件F1至F5切分后获得的数据块排成3行*7列的第二矩阵,文件F1的数据块F1-1、F1-2、F1-3、F1-4和F1-5均位于第二矩阵的第0行中,文件F2的数据块F2-1、F2-2、和F2-3均位于第二矩阵的第1行中,文件F5的数据块F5-1、F5-2、F5-3和F5-4也都位于第二矩阵的第1行中。
在步骤209中,存储设备110分别在所述第二矩阵的各列中插入校验块,获得T行的第一矩阵。
其中,所述第二矩阵的各列中插入的校验块是根据所述第一RAID的组织形式确定的校验算法对该列数据块进行计算获得的,所述T的值与所述D的值的差值为所述第一RAID中独立校验盘的数量。例如,所述T行的第一矩阵可以为(D+P)行*M列的第一矩阵,其中,所述P为所述第一RAID中的校验盘的数量,M为不小于N的正整数,且M与所述条带大小的乘积不大于所述RAID组中单块磁盘的容量。
存储设备110的控制器115可以根据第一RAID的组织形式确定校验算法(即校验块的计算方法),并根据确定的校验算法计算第二矩阵的各列数据块的校验块,并在第二矩阵中分别插入各列数据块的校验块,获得(D+P)行*M列的第一矩阵。其中P为第一RAID中的独立校验盘的数量,M的取值应该不小于N,且M与所述条带大小的乘积不大于所述RAID组中单块磁盘的容量。可以理解的是,在将接收的多个待存储的文件缓存在缓存120中的情况下,则M与所述条带大小的乘积也不会大于缓存120的容量。
可以理解的是,实际操作中,如果先将接收的多个文件缓存在临时存储区(即缓存120)中,由于考虑到校验块还需要占用临时存储区的容量,因此,可以设定在第二矩阵中插入校验块的条件。例如,可以设定当临时存储区的数据量超过设定的阈值时,在所述第二矩阵的各列中插入校验块。当然,还可以设定当达到设定的存储时限时,则在所述第二矩阵的各列中插入校验块。其中,存储时限是预先设定的需要将文件写入构建第一RAID的磁盘的时限。例如,可以规定1小时存储一次,则存储时限为1小时。存储时限可以根据需要写入磁盘的数据量等实际情况来确定,可以1天存储一次也可以10分钟存储一次,在此不做限定。
在步骤209中,当在第二矩阵中插入校验块时,可以根据第一RAID的组织方式分别进行不同的处理。具体可以参见如图3和图5的相关描述。
在一种情形下,当第一RAID为带独立校验盘的RAID组织形式时,例如,当第一RAID为RAID3或RAID4时,控制器115可以按照图3所示的方法流程插入校验块。如图3所示,该方法包括:
在步骤305中,存储设备110根据所述第一RAID中独立校验盘的位置确定在所述第二矩阵中插入校验块的位置。
例如,如果第一RAID为RAID3,则所述第一RAID中有一个独立校验盘。如图4-D所示,如果所述第一RAID中有4块磁盘,则可以将D1、D2、D3和D4中任意一块磁盘作为独立校验盘。例如在如图4-D所示的第一RAID中将D4作为独立校验盘。根据确定的独立校验盘的位置可以确定第二矩阵中插入校验块的位置。例如,根据在如图4-D所示的独立校验盘D4的位置,可以确定在图4-B所示的第二矩阵中最后一行的后面增加一行校验块。根据这种方式,如图4-B所示的第二矩阵有3行,则在第二矩阵中增加第4行来插入校验块。
当然,可以理解的是,如果将D2作为独立校验盘,则在图4-B所示的第二矩阵中第一行数据与第二行数据之间插入一行作为校验块的位置,使3行*7列的第二矩阵变为4行*7列的第一矩阵。上述对独立校验盘的位置的举例并不用于对独立校验盘的位置的任何限定。
在步骤310中,存储设备110根据所述第一RAID的校验算法分别对所示第二矩阵中每一列的数据块进行校验计算,获得每一列数据块的校验块。
例如,若所述第一RAID的校验算法为奇偶校验算法,则可以分别根据奇偶校验算法对如图4-B中所示的第二矩阵中的每一列数据进行校验计算,获得每一列数据块的校验块。例如,根据图4-B中第0列数据F1-1、F2-1和F3-1进行校验计算,获得校验块P1。对第1列数据F1-2、F2-2和F4-1进行校验计算获得校验块P2。需要说明的是,在这个实施例中,奇偶校验算法只是一种举例,并不对校验算法进行限制。步骤305和步骤310的顺序并不做限定。
在步骤315中,存储设备110根据确定的校验块的位置在第二矩阵的每一列中插入根据该列数据块计算的校验块,获得所述T行的第一矩阵。
例如,在对如图4-B所示的第二矩阵中插入校验块后可以获得如图4-C所示的4行*7列的第一矩阵,其中,P1是根据第二矩阵中第0列数据F1-1、F2-1和F3-1计算获得的校验块,P2是根据第二矩阵中第1列数据F1-2、F2-2和F4-1计算获得的校验块,依次类推。
在具有独立校验盘的情况下,可以根据独立校验盘的数量确定在第二矩阵的每一列中插入校验块的数量。因此,插入校验块之后,会使第二矩阵的行数发生变化,而第二矩阵的列数不会变化。换句话说,如果第一RAID为具有独立校验盘的RAID的组织方式,则第一矩阵中M的值等于第二矩阵中N的值。
在另一种情形下,当第一RAID为不带独立校验盘的RAID组织形式而是带分布式校验块的RAID组织形式时,例如,当第一RAID为RAID5或RAID6时,控制器115可以按照图5所示的方法流程插入校验块。如图5所示,该方法包括:
在步骤505中,存储设备110确定在所述第二矩阵的各列中插入校验块的位置A[x,y]。
实际应用中,可以根据所述第一RAID的组织形式以及设置的所述第一RAID中校验块的分布方式确定在所述第二矩阵的各列中插入校验块的位置A[x,y]。本领域人员可以知道,RAID5中校验块在磁盘上的分布方式可以为向左对称(backward parity或Left Synchronous)、向左非对称(backward dynamic或Left Asynchronous)、向右对称(forward parity或Right Synchronous)或向右非对称(forward dynamic或Right Asynchronous)。其中,“左”或“右”是指校验信息如何分布,而“对称”或“非对称”是指数据如何分布。在“左”的算法中,校验块从最后一个磁盘开始,每一个分条将校验块向靠近第一个磁盘的方向移动一个磁盘的位置(必要时重复循环分布)。而“右”算法中,校验块从第一个磁盘开始,每一个分条将校验块向靠近最后一个磁盘的方向移动一个磁盘的位置(必要时重复循环分布)。RAID6在RAID5的基础上又增加了一组校验块。
在不具有独立校验盘的RAID组织方式中,具体校验块在磁盘中如何分布,可以按照所述第一RAID的组织方式和设置的校验块分布方式来确定。例如,如果所述第一RAID为RAID5的组织方式,且设置的校验块的分布方式为向左对称分布,则可以知道校验块在磁盘中是从最后一个磁盘开始,每一个分条将校验块向靠近第一个磁盘的方向移动一个磁盘的位置进行分布。
在本发明实施例中,可以根据设置的所述第一RAID中校验块的分布方式确定在所述第二矩阵中插入校验块的位置A[x,y]。其中,x为不小于0且不大于(D-1)的整数,y为不小于0且不大于(N-1)的整数,即0≤x≤(D-1),0≤y≤(N-1),且x,y的取值随着校验块在所述第二矩阵的位置不同而变化,x的取值由O递增到(D-1),y的取值由0递增到(N-1)。例如,如果所述第一RAID为RAID5的组织方式,且设置的校验块的分布方式为向左对称分布,则在如图6-A所示的第二矩阵中第0列插入的校验块的位置为A[3,0],在第1列插入校验块的位置为A[2,1],在第2列插入校验块的位置为A[1,2],在第3列插入校验块的位置为A[0,3]。并从第4列开始下一个循环,即在第4列插入校验块的位置为A[3,4],在第5列插入校验块的位置为A[2,5],依此类推。具体可以如图6-B中所示的P1-P7所示的位置。
在步骤510中,存储设备110将所述第二矩阵的x行中y列至(N-1)列的数据顺序移动到x行中(y+1)列至N列的位置。
确定了在所述第二矩阵的各列中插入校验块的位置A[x,y]后,需要将第二矩阵的x行中y列至(N-1)列的数据块顺序移动到x行中(y+1)列至N列的位置,即需要将第二矩阵中x行中原A[x,y]至A[x,N-1]位置的所有数据块均向右移动一位,顺序移动到A[x,y+1]至A[x,N]的位置。例如,当确定在如图6-A所示的第二矩阵中第0列插入的校验块的位置为A[3,0]时,需要将第二矩阵中第3行A[3,0]至A[3,4]位置的所有数据块均向后移动一位,顺序移动到A[3,1]至A[3,5]的位置。根据这种方式可以将原A[3,0]位置的数据块F4-1移动到A[3,1],将原A[3,1]位置的数据块F4-2移动到A[3,2],依此类推。其中,x,y的取值随着校验块在所述第二矩阵的位置不同而变化,每确定一个校验块的位置A[x,y],均需要将x行中原A[x,y]至A[x,N-1]位置的所有数据块均向后移动一位。本发明实施例并不对每一列数据块的校验块的个数进行限定。
在步骤515中,存储设备110根据所述第一RAID的校验算法对所述y列中的数据块进行校验计算,获得所述y列数据块的校验块。
当确定校验块的位置为A[x,y],且将所述第二矩阵的x行中y列至(N-1)列的数据块顺序移动到x行中(y+1)列至N列的位置后,可以根据所述第一RAID的校验算法对y列的数据块进行校验计算,获得y列数据块的校验块。该校验块即为需要插入A[x,y]位置的校验块。例如,如图6-B所示,当确定第0列的校验块的位置为A[3,0],并将第二矩阵中原A[3,0]位置的数据块F4-1移动A[3,1]位置之后,可以根据新的第0列的数据块:F1-1,F2-1和F3-1计算获得第0列的校验块P1。
在步骤520中,存储设备110在所述第二矩阵的y列中的A[x,y]的位置插入所述y列数据块的校验块,获得所述T行的第一矩阵。
当计算获得校验块后,可以在确定的校验块的位置A[x,y]处插入校验块,从而能够获得T行的第一矩阵。例如可以获得(D+P)行*M列的第一矩阵。由于在不具有独立校验盘的RAID组织方式中,需要在第二矩阵中的每一列中插入校验块,并且需要将插入校验块的位置的原数据块按行顺序向后移动,因此,获得的第一矩阵中M的值会大于第二矩阵中N的值。例如,如果第一RAID的组织方式为RAID5,且校验块为向左对称分布,则当在图6-A所示的4*5的第二矩阵的每一列中插入校验块后会得到一个如图6-B所示的4*7列的第一矩阵。
在步骤215中,存储设备110分别将所述第一矩阵中每一列的数据块和根据该列数据块计算获得的校验块组成分条,写入构建所述第一RAID的磁盘中。在实际应用中,在步骤215中,将第一矩阵中的各列数据块按分条写入构建第一RAID的磁盘中时,会出现下面几种情况,可以分别进行处理。
在一种情形下,当所述第一矩阵的y列中的数据块和校验块组成的分条中写满数据时,可以直接将所述y列的数据块和校验块写入构建所述第一RAID的磁盘中,其中y列为所述第一矩阵的M列中的其中一列。例如,当如图6-B中第0列写满数据时,即第0列的数据块和校验块组成的分条中写满数据时,将第0列的数据块和校验块组成一个分条写入磁盘中。
在另一种情形下,如果所述第一矩阵中第y列中的数据块和校验块组成的分条中未写满数据时,可以将y列中没有数据块的位置填充为0,并将填充后的y列的数据块和校验块组成一个分条写入构建所述第一RAID的磁盘中。其中,y列为所述第一矩阵中的某一列。例如,当如图6-B所示的第一矩阵中第4列中未写满数据时,即A[1,4]的位置没有写数据,则可以将A[1,4]的位置填充为0,然后将第4列中的数据块和校验块组成一个分条写入磁盘中,即将数据块F1-4、0、F5-3和校验块P5组成一个分条写入磁盘中。
在又一种情形下,如果所述第一矩阵的y列中的数据块和校验块组成的分条中未写满数据时,如果已达到存储时限,且没有再接收到其他文件,则可以通过图7所述的方法进行处理。如图7所示,该方法包括:
在步骤700中,存储设备110确定所述y列中缺少的数据块的数量。
例如,在如图4-C所示的第一矩阵的第5列中的数据块和校验块组成的分条中未写满数据。例如,即在第5列中存在没有写数据的位置A[0,5],又如,在如图6-B所示的第一矩阵的第y列(y=4)中也存在没有写数据的位置A[1,4]。如果此时到达存储时限,则可以确定如图4-C所示的第一矩阵中第5列中缺少的数据块的数量为1,在如图6-B所示的第一矩阵中第4列缺少的数据块的数量也为1。
在步骤705中,存储设备110顺序从所述第一矩阵的第M-1列至第y+1列中选择所述数量的数据块填充到所述y列中没有数据块的位置。
如果y列中存在没有写数据的位置,且已到达存储时限,存储设备110又没有从主机接收到其他待存储文件,则为了节省磁盘的存储空间,存储设备110可以顺序从第一矩阵中第M-1列至第y+1列中选择相应数量的数据块填充到y列中没有数据块的位置。换句话说,当确定第一矩阵中第y列中存在没有数据的位置时,存储设备110可以从第一矩阵的最后一列开始按照从最后一列到第0列的方向选择相应数量的数据块填充到第y列中缺少数据的位置。
例如,存储设备110可以从图4-C所示的第一矩阵中第6列中选择数据块F5-4填充到第5列中缺少数据块的位置,即将第一矩阵中A[1,6]位置的数据F5-4填充到A[0,5]的位置。存储设备110可以从如图6-B所示的第一矩阵中第6列的数据(即数据F5-4和F4-5)中任意选择一个数据填充到第4列A[1,4]的位置。
在步骤710中,存储设备110根据填充后的y列中的数据块更新所述y列的校验块。
由于将y列中没有数据的位置填充了新的数据,因此存储设备110需要根据确定的校验算法以及第一矩阵中填充后的y列中的所有数据块计算并更新y列的校验块。其中,y的取值随着第一矩阵中缺少数据块的位置的不同而变化。例如,如图6-B所示,如果将图6-B所示的M-1列的数据F4-5填充到第y列中后,填充后的y列数据可以如图6-D所示的第y列中的数据块所示,需要根据填充后的第y列中的数据:F1-4、F4-5和F5-3重新计算并更新校验块P5。可以理解的是,由于如图6-B所示的第一矩阵中第y+1列也存在1个没有数据的位置,因此存储设备110也可以从第M-1列中选择1个数据填充到第y+1列中没有数据的位置,并根据更新后的y+1列的数据F1-5、F5-4和F4-4重新计算并更新校验块P6。
在步骤715中,存储设备110将所述y列的数据块和校验块组成分条,写入构建所述第一RAID的T个磁盘中。
当第一矩阵的y列中缺少数据块的位置被填充上新的数据块,并更新y列的校验块后,存储设备110可以将更新后的y列的数据块和校验块组成一个分条写入所述T个磁盘中。
可以理解的是,当采用图7所示的方法后第一矩阵中依然存在没有数据的位置时,如果已到达存储时限,可以将没有数据的数据块填充为0后再写入磁盘,具体可参见前面的描述,在此不再赘述。本领域人员可以知道,将没有数据的数据块填充为0用于表示该数据块没有使用。
由上述描述可知,在将第一矩阵中的数据块写入磁盘中时,采用如图7所示的方法在保证同一个文件被存储在尽量少的磁盘中的同时,可以节省磁盘空间。
在又一种情形下,文件通过采用图2-A或图2-B所述的方法进行存储时,如果达到存储时限且第一RAID已经被存满时,可以将第一矩阵中未写入第一RAID的数据写入第二RAID中。可以理解的是,在将第一RAID未写完的数据写入第二RAID时,如果第二RAID与第一RAID的组织方式相同,且第二RAID与第一RAID中的成员盘数相同,例如,第一RAID和第二RAID均为RAID5,且第二RAID与第一RAID中的磁盘数量相同。可以将所述第一矩阵未写入所述第一RAID中的数据按照步骤215的方法写入构建第二RAID的磁盘中。如果第二RAID与第一RAID的组织方式不同,或第二RAID与第一RAID中的成员盘数不同,例如第一RAID为RAID3,第二RAID为RAID5。则需要重新根据上述文件处理方法将剩余的数据块写入第二RAID中。
图8为本发明实施例描述的又一种文件处理方法的流程图。该方法只能应用于具有独立校验盘的RAID的组织方式中。该方法也可以由图1-A中所示的存储设备110来执行。如图8所示,该方法包括:
在步骤800中,存储设备110接收待存储于第一RAID中的F个文件。
在步骤805中,存储设备110将所述F个文件按照所述第一RAID的条带大小切分成至少两个数据块。
步骤800与步骤805的相关描述可以参见图2-A中步骤200和步骤205的相关描述。
在步骤810中,存储设备110将切分后获得的至少两个数据块排列成一个数组。在所述数组中,属于同一文件的相邻两个数据块之间间隔(D-1)个位置,其中,D的值为所述第一RAID中的数据盘的数量。
具体的,在排列时,需要根据第一RAID的组织方式以及第一RAID中的数据盘的数量进行确定。如果第一RAID为带独立校验盘RAID组织方式,例如RAID3或RAID4。则在排列的数组中,属于同一文件的相邻两个数据块之间需要间隔(D-1)个位置。其中,D的值为所述第一RAID中的数据盘的数量。例如,结合图4-D所示,第一RAID为RAID3的组织方式。其中,第一RAID中有4块磁盘,D1、D2和D3为数据盘,D4为独立校验盘。可以将切分获得的数据块排列为如图9所示的数组。其中,文件F1的数据块F1-1和F1-2之间间隔有2个位置,文件F2的数据块F2-1和F2-2之间也间隔有2个位置,依此类推。
在步骤815中,存储设备110顺序将所述数组中的D个数据块以及根据所述D个数据块计算获得的P个校验块组成分条,写入构建所述第一RAID的磁盘中。其中所述P的值为所述第一RAID中独立校验盘的数量。
具体的,在将数据块存储在构建第一RAID的磁盘的过程中,需要根据第一RAID的校验算法对从数组中顺序选取的D个数据进行校验计算,获得P个校验块。顺序将D个数据以及计算获得的P个校验块组成分条,写入构建第一RAID的磁盘中。本领域人员可以知道,在将校验块写入磁盘时时,需要将校验块写入第一RAID中独立校验盘中。例如,将图9所述的第一数组中的数据写入磁盘后可以得到如图4-D所述的存储结构。
采用图8所述的文件处理方法,能够使文件并行写入RAID,保证了文件写入的效率,并且能保证同一个文件被存储在一个磁盘中。并且不同的文件的数据块构成一个分条,当一个文件被损坏时,可以根据其他文件对损坏的文件进行修复,保证了文件存储的安全性。
在本发明实施例中,通过上述图2-A、图2-B或图8所示的文件处理方法将文件存储于构建RAID的磁盘中后。由于在归档的场景下,存储的文件被访问的频率较低,因此,为了达到节能目的,通常会将磁盘进行休眠或下电。在需要读取文件时,可以按照图10所述的方法进行读取。下面结合图1-A、图1-B对图10进行描述。该方法包括:
在步骤225中,存储设备110接收主机100的访问请求,所述访问请求用于读取存储于所述RAID中的文件。其中,所述访问请求中携带有要读取的文件的逻辑地址。可以理解的是,访问请求中还可以携带要访问的文件的文件名。
在步骤230中,存储设备110根据所述逻辑地址查询存放所述文件的数据块的物理地址。通常,存储设备110存储数据之后,会构建一个数据存储的物理地址与逻辑地址对应关系的映射表。当接收到读取文件的访问请求后,存储设备110可以根据访问请求中携带的逻辑地址查映射表,以查询所述数据在磁盘上的物理地址。可以理解的是,在RAID中,对缓存120以及磁盘130上的数据都会建立映射表。查询物理地址时,通常会先查询缓存120的映射表,再查询磁盘130的映射表。如果数据在缓存中,则会直接将缓存中的数据返回给主机。
在步骤235中,存储设备110根据所述物理地址确定存储所述文件的一个磁盘。由于在本发明实施例中,通过上述实施例中所述的文件处理方法将文件存储于构建RAID的磁盘中后,能够使一个文件被存储于一个磁盘中,因此在本步骤中,存储设备110能够根据物理地址确定存储文件的一个磁盘。
在步骤240中,存储设备110将存储于所述磁盘中的所述文件的数据块返回给所述主机100。具体的,存储设备110可以根据所述物理地址唤醒所述文件所在的一个磁盘130,将并根据获得的物理地址读取磁盘130中的数据,将数据返回给主机100。
在本发明实施例中,由于文件是按照图2-A、图2-B或图8所示的方法存储的,因此属于同一个文件的数据都被存储在尽可能少的磁盘中。因此,在读取文件时,只需要唤醒存储该文件的一个磁盘,并从唤醒的一个磁盘中读取该文件的数据返回给主机。从而无需唤醒构建整个RAID的所有磁盘,节能效果显著。
本领域人员可以理解的是,在本发明实施例中,存放元数据的磁盘以及缓存120始终是保持上电状态的,以便于能对主机的访问请求做出及时的响应。其中,本领域人员可以知道,元数据是描述RAID中存储的数据及其环境的数据,例如元数据中可以包含逻辑地址与物理地址的映射关系。
由于磁盘频繁的上电或下电会影响存储系统的节能效果,同时会影响磁盘寿命。为了避免磁盘被频繁的上电或下电,在实际应用中,可以将磁盘进行分级。将少量高性能磁盘始终保持上电状态,大量的高容量磁盘进入节能状态。其中,这里的高性能磁盘指访问时延较低或每秒进行读写(I/O)操作的次数(Input/Output Operations Per Second,IOPS)较高的磁盘,例如,固态硬盘(Solid State Disk,SSD)。高容量磁盘是指容量比较大的磁盘。存储后,可以根据文件访问情况,将访问频率较高的文件迁移到预留的少量始终上电的磁盘中。以有效减少磁盘被上电或唤醒的次数,提升响应速度。
进一步的,为了避免磁盘的频繁上电和下电,在本发明实施例的存储系统中还可以提供预警机制和保护机制。通过统计RAID中各磁盘累计上电和下电的次数,当预定时间内某个磁盘的上电和下电次数超过预设的阈值时,系统进行提示或告警,并可以采取一些保护措施。其中,设置的阈值例如可以为10次/天或100次/月。保护措施可以设置为在设定的时间内不再对该磁盘进行上电或下电操作等等,在此不做限定。
图11为本发明实施例一种文件处理装置的结构示意图,如图11所示,文件处理装置1100包括:
接收模块1102,用于接收待存储于RAID中的F个文件,所述RAID由T个存储器组成,F为不小于2的自然数,T为不小于3的自然数;
划分模块1104,用于将所述F个文件按照所述RAID的条带大小划分成至少两个数据块;
处理模块1106,用于根据所述至少两个数据块获得T行的第一矩阵,其中,属于同一个文件的数据块位于所述第一矩阵的同一行中;
写入模块1108,用于将所述第一矩阵中的每一列的数据块和根据该列数据块计算获得的校验块组成分条,写入构建所述RAID的T个存储器中。
具体的,所述处理模块1106用于:
将切分后获得的至少两个数据块排列为D行的第二矩阵,其中,属于同一个文件的数据块位于所述第二矩阵的同一行中,所述D为所述RAID中的数据存储器的数量;
分别在所述第二矩阵的每一列中插入校验块,获得所述T行的第一矩阵,其中,所述插入的校验块是根据所述第一矩阵中校验块所在列的数据块计算获得的。
在一种情形下,当所述RAID中包括独立校验存储器时,所述处理模块具体用于:
根据所述RAID中独立校验存储器的位置确定在所述第二矩阵中插入校验块的位置;
根据所述RAID的校验算法分别对所述第二矩阵中每一列的数据块进行计算,获得每一列数据块的校验块;
根据确定的校验块的位置在第二矩阵的每一列中插入根据该列数据块计算的校验块,获得所述T行的第一矩阵。
在另一种情形下,当所述RAID中不包括独立校验存储器时,所述处理模块具体用于:
确定在所述第二矩阵的各列中插入校验块的位置A[x,y],其中,所述第二矩阵具有N列,x和y均为整数,x的取值由O递增到D-1,y的取值由0递增到N-1;
将所述第二矩阵的x行中y列至(N-1)列的数据块顺序移动到x行中(y+1)列至N列的位置;
根据所述RAID的校验算法对所述y列中的数据块进行校验计算,获得所述y列数据块的校验块;
在所述第二矩阵的y列中的A[x,y]的位置插入所述y列数据块的校验块,获得所述T行的第一矩阵。
在一种情形下,所述写入模块1108具体用于:
当所述第一矩阵的y列中的数据块和根据所述y列的数据块计算获得的校验块组成的分条中写满数据时,将所述y列的数据块和所述校验块写入构建所述RAID的T个存储器中,其中,所述y列为所述第一矩阵中的其中一列。
在另一种情形下,所述写入模块1108具体用于:
当所述第一矩阵的y列中的数据块和根据所述y列数据块计算获得的校验块组成的分条中未写满数据时,则确定所述y列中缺少的数据块的数量,其中,所述y列为所述第一矩阵中的其中一列;
从所述第一矩阵的第M-1列至第y+1列中选择所述数量的数据块填充到所述y列中没有数据块的位置;
根据填充后的y列中的数据块更新所述y列的校验块;
将所述y列的数据块和所述更新后的y列的校验块组成分条写入构建所述RAID的T个存储器中。
在又一种情形下,所述写入模块1108具体用于:
当所述第一矩阵的y列中的数据块和根据所述y列的数据块计算获得的校验块组成的分条中未写满数据时,将所述y列中没有数据块的位置填充为0,并将填充后的y列的数据块和所述校验块组成分条写入构建所述第一RAID的存储器中,其中,所述y列为所述第一矩阵中的其中一列。
进一步的,在又一种情形下,所述接收模块1102,还可以用于:接收主机的访问请求,所述访问请求用于读取存储于所述RAID中的文件,所述访问请求中携带有要访问的文件的逻辑地址;
所述文件处理装置还包括:
读取模块1110,用于根据所述逻辑地址查询存放所述文件的数据块的物理地址,根据所述物理地址确定存储所述文件的一个存储器,并将存储于所述存储器中的所述文件的数据块返回给所述主机。
本发明实施例所提供的文件处理装置,可以设置于前面实施例所描述的控制器中,用于执行前面实施例所描述的文件处理方法,各个单元功能的详细描述可参见方法实施例中的描述,在此不再赘述。
本发明实施例描述的文件处理装置,能够将属于同一个文件的数据能够被存储于一个磁盘中。并且,本发明实施例描述的文件处理装置能够将不同文件的数据块构成一个分条写入磁盘。当某个数据块被损坏时,文件处理装置可以通过同一个分条中的校验块和其他文件的数据块对损坏的数据块进行恢复,提高了文件存储的安全性。进一步的,本发明实施例描述的文件处理装置在读取文件时,只需要将存储该文件的一个磁盘唤醒或上电,并从该磁盘中读取该文件的数据返回给主机,而无需对RAID中的所有磁盘进行唤醒或上电,因此达到了较好的节能效果。
本发明实施例还提供一种数据处理的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。本领域普通技术人员可以理解,前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory,RAM)、固态硬盘(Solid State Disk,SSD)或者非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个设备中,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部,模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (19)

1.一种文件处理方法,其特征在于,包括:
接收待存储于独立磁盘冗余阵列RAID中的F个文件,所述RAID由T个存储器组成,F为不小于2的自然数,T为不小于3的自然数;
将所述F个文件按照RAID的条带大小划分成至少两个数据块;
根据所述至少两个数据块获得T行的第一矩阵,其中,属于同一个文件的数据块位于所述第一矩阵的同一行中;
将所述第一矩阵中每一列的数据块和根据该列数据块计算获得的校验块组成分条,写入构建所述RAID的T个存储器中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述至少两个数据块获得T行的第一矩阵包括:
将切分后获得的至少两个数据块排列为D行的第二矩阵,其中,属于同一个文件的数据块位于所述第二矩阵的同一行中,所述D为所述RAID中的数据存储器的数量;
分别在所述第二矩阵的每一列中插入校验块,获得所述T行的第一矩阵,其中,所述插入的校验块是根据所述第一矩阵中校验块所在列的数据块计算获得的。
3.根据权利要求2所述的文件处理方法,其特征在于,当所述RAID中包括独立校验存储器时,所述分别在所述第二矩阵的每一列中插入校验块,获得所述T行的第一矩阵包括:
根据所述RAID中独立校验存储器的位置确定在所述第二矩阵中插入校验块的位置;
根据所述RAID的校验算法分别对所述第二矩阵中每一列的数据块进行校验计算,获得每一列数据块的校验块;
根据确定的校验块的位置在第二矩阵的每一列中插入根据该列数据块计算的校验块,获得所述T行的第一矩阵。
4.根据权利要求2所述的文件处理方法,其特征在于,当所述RAID中不包括独立校验存储器时,所述分别在所述第二矩阵的每一列中插入校验块,获得T行的第一矩阵包括:
确定在所述第二矩阵的各列中插入校验块的位置A[x,y],其中,所述第二矩阵具有N列,x和y均为整数,x的取值由O递增到D-1,y的取值由0递增到N-1;
将所述第二矩阵的x行中y列至(N-1)列的数据块顺序移动到x行中(y+1)列至N列的位置;
根据所述RAID的校验算法对所述y列中的数据块进行校验计算,获得所述y列数据块的校验块;
在所述第二矩阵的y列中的A[x,y]的位置插入所述y列数据块的校验块,获得所述T行的第一矩阵。
5.根据权利要求1-4任意一项所述的文件处理方法,其特征在于,所述将所述第一矩阵中每一列的数据块和根据该列数据块计算获得的校验块组成分条,写入构建所述RAID的T个存储器中包括:
当所述第一矩阵的y列中的数据块和根据所述y列的数据块计算获得的校验块组成的分条中写满数据时,将所述y列的数据块和所述校验块写入构建所述RAID的T个存储器中,其中,所述y列为所述第一矩阵中的其中一列。
6.根据权利要求1-4任意一项所述的文件处理方法,其特征在于,所述第一矩阵具有M列,所述将所述第一矩阵中每一列的数据块和根据该列数据块计算获得的校验块组成分条,写入构建所述RAID的T个存储器中包括:
当所述第一矩阵的y列中的数据块和根据所述y列数据块计算获得的校验块组成的分条中未写满数据时,则确定所述y列中缺少的数据块的数量,其中,所述y列为所述第一矩阵中的其中一列;
从所述第一矩阵的第M-1列至第y+1列中选择所述数量的数据块填充到所述y列中没有数据块的位置;
根据填充后的y列中的数据块更新所述y列的校验块;
将所述y列的数据块和所述更新后的y列的校验块组成分条写入构建所述RAID的T个存储器中。
7.根据权利要求1-4任意一项所述的文件处理方法,其特征在于,所述将所述第一矩阵中每一列的数据块和根据该列数据块计算获得的校验块组成分条,写入构建所述RAID的T个存储器中包括:
当所述第一矩阵的y列中的数据块和根据所述y列的数据块计算获得的校验块组成的分条中未写满数据时,将所述y列中没有数据块的位置填充为0,并将填充后的y列的数据块和所述校验块组成分条写入构建所述RAID的存储器中,其中,所述y列为所述第一矩阵中的其中一列。
8.根据权利要求1-4任意一项所述的文件处理方法,其特征在于,还包括:
接收主机的访问请求,所述访问请求用于读取存储于所述RAID中的文件,所述访问请求中携带有要访问的文件的逻辑地址;
根据所述逻辑地址查询存放所述文件的数据块的物理地址;
根据所述物理地址确定存储所述文件的一个存储器;
将存储于所述存储器中的所述文件的数据块返回给所述主机。
9.一种文件处理方法,其特征在于,包括:
接收待存储于独立磁盘冗余阵列RAID中的F个文件;
将所述F个文件按照所述RAID的条带大小划分成至少两个数据块;
将切分后获得的至少两个数据块排列成一个数组,在所述数组中,属于同一文件的相邻两个数据块之间间隔D-1个位置,其中,所述D的值为所述RAID中的数据存储器的数量;
顺序将所述数组中的D个数据块以及根据所述D个数据块计算获得的P个校验块组成分条,写入构建所述RAID的存储器中,其中,所述P的值为所述RAID中独立校验存储器的数量。
10.根据权9所述的方法,其特征在于,还包括:
接收主机的访问请求,所述访问请求用于读取存储于所述RAID中的文件,所述访问请求中携带有要访问的文件的逻辑地址;
根据所述逻辑地址查询存放所述文件的数据块的物理地址;
根据所述物理地址确定存储所述文件的一个存储器;
将存储于所述存储器中的所述文件的数据块返回给所述主机。
11.一种文件处理装置,其特征在于,包括:
接收模块,用于接收待存储于独立磁盘冗余阵列RAID中的F个文件,所述RAID由T个存储器组成,F为不小于2的自然数,T为不小于3的自然数;
划分模块,用于将所述F个文件按照所述RAID的条带大小划分成至少两个数据块;
处理模块,用于根据所述至少两个数据块获得T行的第一矩阵,其中,属于同一个文件的数据块位于所述第一矩阵的同一行中;
写入模块,用于将所述第一矩阵中的每一列的数据块和根据该列数据块计算获得的校验块组成分条,写入构建所述RAID的T个存储器中。
12.根据权利要求11所述的文件处理装置,其特在于,所述处理模块具体用于:
将切分后获得的至少两个数据块排列为D行的第二矩阵,其中,属于同一个文件的数据块位于所述第二矩阵的同一行中,所述D为所述RAID中的数据存储器的数量;
分别在所述第二矩阵的每一列中插入校验块,获得所述T行的第一矩阵,其中,所述插入的校验块是根据所述第一矩阵中校验块所在列的数据块计算获得的。
13.根据权利要求12所述的文件处理装置,其特征在于,当所述RAID中包括独立校验存储器时,所述处理模块具体用于:
根据所述RAID中独立校验存储器的位置确定在所述第二矩阵中插入校验块的位置;
根据所述RAID的校验算法分别对所述第二矩阵中每一列的数据块进行校验计算,获得每一列数据块的校验块;
根据确定的校验块的位置在第二矩阵的每一列中插入根据该列数据块计算的校验块,获得所述T行的第一矩阵。
14.根据权利要求12所述的文件处理装置,其特征在于,当所述RAID中不包括独立校验存储器时,所述处理模块具体用于:
确定在所述第二矩阵的各列中插入校验块的位置A[x,y],其中,所述第二矩阵具有N列,x和y均为整数,x的取值由O递增到D-1,y的取值由0递增到N-1;
将所述第二矩阵的x行中y列至(N-1)列的数据块顺序移动到x行中(y+1)列至N列的位置;
根据所述RAID的校验算法对所述y列中的数据块进行校验计算,获得所述y列数据块的校验块;
在所述第二矩阵的y列中的A[x,y]的位置插入所述y列数据块的校验块,获得所述T行的第一矩阵。
15.根据权利要求11-14任意一项所述的文件处理装置,其特征在于,所述写入模块具体用于:
当所述第一矩阵的y列中的数据块和根据所述y列的数据块计算获得的校验块组成的分条中写满数据时,将所述y列的数据块和所述校验块写入构建所述RAID的T个存储器中,其中,所述y列为所述第一矩阵中的其中一列。
16.根据权利要求11-14任意一项所述的文件处理装置,其特征在于,所述第一矩阵具有M列,所述写入模块具体用于:
当所述第一矩阵的y列中的数据块和根据所述y列数据块计算获得的校验块组成的分条中未写满数据时,则确定所述y列中缺少的数据块的数量,其中,所述y列为所述第一矩阵中的其中一列;
从所述第一矩阵的第M-1列至第y+1列中选择所述数量的数据块填充到所述y列中没有数据块的位置;
根据填充后的y列中的数据块更新所述y列的校验块;
将所述y列的数据块和所述更新后的y列的校验块组成分条写入构建所述RAID的T个存储器中。
17.根据权利要求11-14任意一项所述的文件处理装置,其特征在于,所述写入模块具体用于:
当所述第一矩阵的y列中的数据块和根据所述y列的数据块计算获得的校验块组成的分条中未写满数据时,将所述y列中没有数据块的位置填充为0,并将填充后的y列的数据块和所述校验块组成分条写入构建所述RAID的存储器中,其中,所述y列为所述第一矩阵中的其中一列。
18.根据权利要求11-14任意一项所述的文件处理装置,其特征在于:
所述接收模块,还用于接收主机的访问请求,所述访问请求用于读取存储于所述RAID中的文件,所述访问请求中携带有要访问的文件的逻辑地址;
所述文件处理装置还包括:
读取模块,用于根据所述逻辑地址查询存放所述文件的数据块的物理地址,根据所述物理地址确定存储所述文件的一个存储器,并将存储于所述RAID的一个存储器中的所述文件的数据块返回给所述主机。
19.一种存储设备,包括控制器和独立磁盘冗余阵列RAID,其特征在于:
所述RAID,用于存储文件;
所述控制器包括:
处理器、存储器、通信总线和通信接口,所述处理器、所述存储器和所述通信接口通过所述通信总线连接并完成相互间的通信;
所述通信接口,用于与主机及所述独立磁盘冗余阵列(Redundant Array ofI ndependent Di sks,RAI D)通信;
所述存储器,用于存储计算机执行指令;
所述处理器,用于运行所述计算机执行指令,执行如权利要求1-8任意一项所述的方法。
CN201380001800.9A 2013-08-09 2013-08-09 一种文件处理方法、装置及存储设备 Active CN103733175B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/081182 WO2015018065A1 (zh) 2013-08-09 2013-08-09 一种文件处理方法、装置及存储设备

Publications (2)

Publication Number Publication Date
CN103733175A CN103733175A (zh) 2014-04-16
CN103733175B true CN103733175B (zh) 2015-05-27

Family

ID=50455934

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380001800.9A Active CN103733175B (zh) 2013-08-09 2013-08-09 一种文件处理方法、装置及存储设备

Country Status (8)

Country Link
US (2) US9483194B2 (zh)
EP (1) EP3026546A4 (zh)
JP (1) JP6069742B2 (zh)
KR (1) KR101677473B1 (zh)
CN (1) CN103733175B (zh)
AU (1) AU2013392019B2 (zh)
CA (1) CA2881618C (zh)
WO (1) WO2015018065A1 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160328184A1 (en) * 2015-05-07 2016-11-10 Dell Products L.P. Performance of storage controllers for applications with varying access patterns in information handling systems
JP6690829B2 (ja) * 2015-08-28 2020-04-28 国立大学法人 東京大学 計算機システム、省電力化方法及び計算機
CN105516548B (zh) * 2015-11-27 2019-01-11 中央电视台 一种文件预读方法及装置
CN108701005B (zh) * 2016-02-18 2021-02-23 华为技术有限公司 数据更新技术
CN107168817B (zh) * 2016-03-07 2020-05-08 华为技术有限公司 应用于存储阵列的数据修复方法与装置及存储设备
CN107203559B (zh) * 2016-03-17 2021-01-01 华为技术有限公司 一种划分数据条带的方法和装置
CN111679787B (zh) * 2016-04-27 2023-07-18 慧荣科技股份有限公司 闪存装置、闪存控制器及闪存存储管理方法
US10019314B2 (en) 2016-04-27 2018-07-10 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
US10152378B2 (en) * 2016-10-04 2018-12-11 Futurewei Technologies, Inc. Data protection for a cold storage system
CN107368391A (zh) * 2017-07-21 2017-11-21 长沙曙通信息科技有限公司 一种基于快照新型容灾备份异步远程镜像实现方法
CN107357687A (zh) * 2017-07-21 2017-11-17 长沙曙通信息科技有限公司 一种容灾备份新型重复数据删除实现方法
CN107360191B (zh) * 2017-08-28 2021-02-02 腾讯科技(深圳)有限公司 一种文件获取方法、装置及存储设备
US10684915B2 (en) * 2018-07-25 2020-06-16 EMC IP Holding Company LLC Efficient packing of compressed data in storage system implementing data striping
CN111338559B (zh) * 2018-12-19 2023-11-10 深圳市茁壮网络股份有限公司 数据处理方法、用户模块、信息管理模块及系统
CN110471623B (zh) * 2019-07-31 2023-12-29 深圳市博实结科技股份有限公司 硬盘文件写入方法、装置、计算机设备和存储介质
CN111142788B (zh) * 2019-11-29 2021-10-15 浪潮电子信息产业股份有限公司 一种数据迁移方法、装置和计算机可读存储介质
CN113782025B (zh) * 2021-09-27 2024-01-09 北京声智科技有限公司 语音识别方法、装置、终端及存储介质
CN114333917B (zh) * 2021-12-30 2023-11-03 山东云海国创云计算装备产业创新中心有限公司 基于rdp纠删算法的数据纠错方法、装置、设备及介质
CN114168087B (zh) * 2022-02-11 2022-04-22 苏州浪潮智能科技有限公司 校验数据生成方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101055509A (zh) * 2006-04-14 2007-10-17 中兴通讯股份有限公司 高效流媒体数据读写系统
CN101976175A (zh) * 2010-08-19 2011-02-16 北京同有飞骥科技有限公司 一种水平型分组并行集中校验的磁盘阵列的构建方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69431186T2 (de) 1993-06-03 2003-05-08 Network Appliance Inc Verfahren und Dateisystem zur Zuordnung von Datei-Blöcken zu Speicherplatz in einem RAID-Plattensystem
US5878280A (en) * 1993-09-23 1999-03-02 Philips Electronics North America Corp. Data buffering system for plural data memory arrays
JPH07152498A (ja) * 1993-12-01 1995-06-16 Hitachi Ltd 情報処理システム
US5860090A (en) * 1995-10-20 1999-01-12 Informix Software, Inc. Append-only storage in a disk array using striping and parity caching
JPH11288359A (ja) * 1998-04-02 1999-10-19 Matsushita Electric Ind Co Ltd ファイル管理システムおよび方法
US6311251B1 (en) * 1998-11-23 2001-10-30 Storage Technology Corporation System for optimizing data storage in a RAID system
JPH11288387A (ja) * 1998-12-11 1999-10-19 Fujitsu Ltd ディスクキャッシュ装置
US7055058B2 (en) * 2001-12-26 2006-05-30 Boon Storage Technologies, Inc. Self-healing log-structured RAID
US7200715B2 (en) * 2002-03-21 2007-04-03 Network Appliance, Inc. Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes
JP2004145409A (ja) * 2002-10-22 2004-05-20 Hitachi Ltd 記憶装置および記憶装置サブシステム
US7237062B2 (en) 2004-04-02 2007-06-26 Seagate Technology Llc Storage media data structure system and method
US8521955B2 (en) * 2005-09-13 2013-08-27 Lsi Corporation Aligned data storage for network attached media streaming systems
US8006111B1 (en) * 2007-09-21 2011-08-23 Emc Corporation Intelligent file system based power management for shared storage that migrates groups of files based on inactivity threshold
US20090204758A1 (en) 2008-02-13 2009-08-13 Dell Products, Lp Systems and methods for asymmetric raid devices
US8615681B2 (en) * 2010-12-14 2013-12-24 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
US8463992B2 (en) * 2010-12-18 2013-06-11 Lsi Corporation System and method for handling IO to drives in a raid system based on strip size
US8327185B1 (en) 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
CN102880428B (zh) * 2012-08-20 2015-09-09 华为技术有限公司 分布式独立磁盘冗余阵列的创建方法及装置
US8554997B1 (en) * 2013-01-18 2013-10-08 DSSD, Inc. Method and system for mirrored multi-dimensional raid

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101055509A (zh) * 2006-04-14 2007-10-17 中兴通讯股份有限公司 高效流媒体数据读写系统
CN101976175A (zh) * 2010-08-19 2011-02-16 北京同有飞骥科技有限公司 一种水平型分组并行集中校验的磁盘阵列的构建方法

Also Published As

Publication number Publication date
JP6069742B2 (ja) 2017-02-01
AU2013392019A1 (en) 2015-02-26
KR20150034139A (ko) 2015-04-02
US9483194B2 (en) 2016-11-01
JP2015528973A (ja) 2015-10-01
US20150100729A1 (en) 2015-04-09
US9417806B2 (en) 2016-08-16
EP3026546A4 (en) 2016-08-17
US20150234614A1 (en) 2015-08-20
CA2881618C (en) 2017-04-18
EP3026546A1 (en) 2016-06-01
CA2881618A1 (en) 2015-02-12
KR101677473B1 (ko) 2016-11-18
AU2013392019B2 (en) 2016-09-22
CN103733175A (zh) 2014-04-16
WO2015018065A1 (zh) 2015-02-12

Similar Documents

Publication Publication Date Title
CN103733175B (zh) 一种文件处理方法、装置及存储设备
CN103718151B (zh) 一种文件处理方法及存储设备
CN111158587B (zh) 基于存储池虚拟化管理的分布式存储系统及数据读写方法
US8856477B1 (en) Networked raid in a virtualized cluster
US8914578B2 (en) Capacity-expansion of a logical volume
US20110191537A1 (en) Storage controller and virtual volume control method
EP3992769A1 (en) Data storage method and apparatus, computing device, storage system, and storage medium
CN103761059A (zh) 一种用于海量数据管理的多盘位存储方法及系统
CN103914401A (zh) 具有多处理器的存储设备
AU2015255198B2 (en) File processing method and storage device
CN103914409A (zh) 用于具有多处理器的存储设备的方法
CN203102262U (zh) 具有多处理器的存储设备
CN103677733A (zh) Raid属性变更方法和装置
CN115857830A (zh) 一种基于ceph存储数据的方法、装置及电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211223

Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province

Patentee after: xFusion Digital Technologies Co., Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right