CN103942012B - 一种读取数据的方法、装置及设备 - Google Patents
一种读取数据的方法、装置及设备 Download PDFInfo
- Publication number
- CN103942012B CN103942012B CN201410116198.XA CN201410116198A CN103942012B CN 103942012 B CN103942012 B CN 103942012B CN 201410116198 A CN201410116198 A CN 201410116198A CN 103942012 B CN103942012 B CN 103942012B
- Authority
- CN
- China
- Prior art keywords
- data
- hard disk
- data fragmentation
- fragmentation
- stored
- 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
Landscapes
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明公开了一种读取数据的方法、装置及设备,属于计算机领域。所述方法包括:根据需要读取的数据块的标识,分别获取每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息;根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,得到所述数据块。所述装置包括:获取模块和第一合并模块。本发明根据每个硬盘存储的数据块中的每个数据分片的可用信息,对每个硬盘中存储的数据块包括的数据分片进行合并,如此可以得到数据块。
Description
技术领域
本发明涉及计算机领域,特别涉及一种读取数据的方法、装置及设备。
背景技术
当前,越来越多的用户用硬盘存储数据,但由于硬盘的使用寿命有限,且通常在用户无法预知的情况下出现坏道,导致硬盘中的数据丢失,给用户带来极大的损失,因此,如何从硬盘中读取数据是一个急需解决的技术问题。
目前,现有技术提供了一种读取数据的方法,该方法所应用的存储系统包括多个硬盘,每个硬盘中存储的数据都相同。当需要读取数据块时,根据该数据块的标识,在一硬盘中寻找到存储该数据块的存储区域。如果该存储区域没有故障,则从该存储区域中读取该数据块;如果该存储区域的整个或部分存储介质故障,则无法从该存储区域中读取该数据块。按上述相同方式从其他每个硬盘中读取该数据块,判断读取的数据块的个数与第一个数之和是否大于该存储系统包括的硬盘的个数,第一个数为在向该存储系统中的每个硬盘中存储该数据块时成功存储的次数,如果是,则将读取的数据块中的任一数据块作为需要读取的数据块。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
对于某个数据块,假设该数据块在每个硬盘中对应的存储区域都包括部分存储介质出现故障以及在每个硬盘中故障的存储介质并不重叠。但在这种情况下,从每个硬盘中都无法成功读取到该数据块,给用户带来极大损失。
发明内容
为了成功读取到数据块,本发明提供了一种读取数据的方法、装置及设备。所述技术方案如下:
第一方面,一种读取数据的方法,所述方法包括:
根据需要读取的数据块的标识,分别获取每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息;
根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,得到所述数据块。
结合第一方面,在第一方面的第一种可能的实现方式中,所述根据需要读取的数据块的标识,获取所述每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,包括:
根据需要读取的数据块的标识,从所述每个硬盘中获取存储所述数据块的存储区域;
分别在所述存储区域中的所述数据块包括的每个数据分片对应的存储单元中进行读取,读取到数据分片并同时获取所述每个数据分片对应的可用信息。
结合第一方面,在第一方面的第二种可能的实现方式中,所述分别在所述存储区域中的所述数据块包括的每个数据分片对应的存储单元中进行读取,读取到数据分片并同时获取所述每个数据分片对应的可用信息,包括:
在所述存储区域中的第一数据分片对应的存储单元中进行读取,所述第一数据分片为所述数据块中的任一数据分片;
如果成功读取到所述第一数据分片,则获取所述第一数据分片的可用信息为可用,根据所述第一数据分片的偏移位置,将所述第一数据分片存储在所述硬盘对应的预分配存储空间中以及将所述第一数据分片的可用信息存储在所述硬盘对应的位图表中;
如果没有成功读取到所述第一数据分片,则获取所述第一数据分片的可用信息为不可用,根据所述第一数据分片的偏移位置,将所述第一数据分片的可用信息存储在所述硬盘对应的位图表中。
结合第一方面,在第一方面的第三种可能的实现方式中,所述分别在所述存储区域中的所述数据块包括的每个数据分片对应的存储单元中进行读取之前,还包括:
根据所述存储区域的大小,分配所述硬盘对应的预分配存储空间和位图表。
结合第一方面,在第一方面的第四种可能的实现方式中,所述根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,包括:
发送每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,以使服务器根据每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并。
结合第一方面,在第一方面的第五种可能的实现方式中,所述根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,包括:
获取所述每个硬盘中存储的第二数据分片的可用信息,所述第二数据分片为所述数据块中的任一个数据分片;
根据所述每个硬盘中存储的第二数据分片的可用信息,从所述每个硬盘存储的第二数据分片中确定出可用的第二数据分片;
对确定出的第二数据分片进行合并,得到一个数据分片。
结合第一方面,在第一方面的第六种可能的实现方式中,所述获取所述每个硬盘中存储的第二数据分片的可用信息,包括:
根据第二数据分片的偏移位置,从所述每个硬盘对应的位图表中分别获取所述每个硬盘中存储的第二数据分片的可用信息。
结合第一方面,在第一方面的第七种可能的实现方式中,所述根据所述每个硬盘中存储的第二数据分片的可用信息,从所述每个硬盘存储的第二数据分片中确定出可用的第二数据分片,包括:
根据所述第二数据分片的偏移位置,从所述每个硬盘对应的预分配存储空间中分别获取所述每个硬盘存储的第二数据分片;
从所述每个硬盘存储的第二数据分片中,获取可用信息为可用的第二数据分片。
第二方面,一种读取数据的方法,所述方法包括:
接收每个硬盘中存储的数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息;
根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,得到所述数据块。
结合第二方面,在第二方面的第一种可能的实现方式中,所述接收每个硬盘中存储的数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,包括:
接收所述每个硬盘对应的位图表和数据链,所述每个硬盘对应的数据链为所述每个硬盘对应的预分配存储空间中存储的数据分片,所述每个硬盘的位图表记录了所述每个硬盘对应的预分配存储空间中存储的每个数据分片的可用信息。
结合第二方面,在第二方面的第二种可能的实现方式中,所述根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,包括:
获取所述每个硬盘中存储的第二数据分片的可用信息,所述第二数据分片为所述数据块中的任一个数据分片;
根据所述每个硬盘中存储的第二数据分片的可用信息,从所述每个硬盘存储的第二数据分片中确定出可用的第二数据分片;
对确定出的第二数据分片进行合并,得到一个数据分片。
结合第二方面,在第二方面的第三种可能的实现方式中,所述获取所述每个硬盘中存储的第二数据分片的可用信息,包括:
根据第二数据分片的偏移位置,从所述每个硬盘对应的位图表中分别获取所述每个硬盘中存储的第二数据分片的可用信息。
结合第二方面,在第二方面的第四种可能的实现方式中,所述根据所述每个硬盘中存储的第二数据分片的可用信息,从所述每个硬盘存储的第二数据分片中确定出可用的第二数据分片,包括:
根据所述第二数据分片的偏移位置,从所述每个硬盘对应的预分配存储空间中分别获取所述每个硬盘存储的第二数据分片;
从所述每个硬盘存储的第二数据分片中,获取可用信息为可用的第二数据分片。
第三方面,一种读取数据的装置,所述装置包括:
获取模块,用于根据需要读取的数据块的标识,分别获取每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息;
第一合并模块,用于根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,得到所述数据块。
结合第三方面,在第三方面的第一种可能的实现方式中,所述获取模块包括:
第一获取单元,用于根据需要读取的数据块的标识,从所述每个硬盘中获取存储所述数据块的存储区域;
读取单元,用于分别在所述存储区域中的所述数据块包括的每个数据分片对应的存储单元中进行读取,读取到数据分片并同时获取所述每个数据分片对应的可用信息。
结合第三方面,在第三方面的第二种可能的实现方式中,所述读取单元包括:
读取子单元,用于在所述存储区域中的第一数据分片对应的存储单元中进行读取,所述第一数据分片为所述数据块中的任一数据分片;
第一获取子单元,用于如果成功读取到所述第一数据分片,则获取所述第一数据分片的可用信息为可用,根据所述第一数据分片的偏移位置,将所述第一数据分片存储在所述硬盘对应的预分配存储空间中以及将所述第一数据分片的可用信息存储在所述硬盘对应的位图表中;
第二获取子单元,用于如果没有成功读取到所述第一数据分片,则获取所述第一数据分片的可用信息为不可用,根据所述第一数据分片的偏移位置,将所述第一数据分片的可用信息存储在所述硬盘对应的位图表中。
结合第三方面,在第三方面的第三种可能的实现方式中,所述获取模块还包括:
分配单元,用于根据所述存储区域的大小,分配所述硬盘对应的预分配存储空间和位图表。
结合第三方面,在第三方面的第四种可能的实现方式中,所述第一合并模块具体用于发送每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,以使服务器根据每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并。
结合第三方面,在第三方面的第五种可能的实现方式中,所述第一合并模块包括:
第二获取单元,用于获取所述每个硬盘中存储的第二数据分片的可用信息,所述第二数据分片为所述数据块中的任一个数据分片;
第一确定单元,用于根据所述每个硬盘中存储的第二数据分片的可用信息,从所述每个硬盘存储的第二数据分片中确定出可用的第二数据分片;
第一合并单元,用于对确定出的第二数据分片进行合并,得到一个数据分片。
结合第三方面,在第三方面的第六种可能的实现方式中,所述第二获取单元具体用于根据第二数据分片的偏移位置,从所述每个硬盘对应的位图表中分别获取所述每个硬盘中存储的第二数据分片的可用信息。
结合第三方面,在第三方面的第七种可能的实现方式中,所述第一确定单元包括:
第三获取子单元,用于根据所述第二数据分片的偏移位置,从所述每个硬盘对应的预分配存储空间中分别获取所述每个硬盘存储的第二数据分片;
第四获取子单元,用于从所述每个硬盘存储的第二数据分片中,获取可用信息为可用的第二数据分片。
第四方面,一种读取数据的装置,所述装置包括:
接收模块,用于接收每个硬盘中存储的数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息;
第二合并模块,用于根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,得到所述数据块。
结合第四方面,在第四方面的第一种可能的实现方式中,所述接收模块具体用于接收所述每个硬盘对应的位图表和数据链,所述每个硬盘对应的数据链为所述每个硬盘对应的预分配存储空间中存储的数据分片,所述每个硬盘的位图表记录了所述每个硬盘对应的预分配存储空间中存储的每个数据分片的可用信息。
结合第四方面,在第四方面的第二种可能的实现方式中,所述第二合并模块包括:
第三获取单元,用于获取所述每个硬盘中存储的第二数据分片的可用信息,所述第二数据分片为所述数据块中的任一个数据分片;
第二确定单元,用于根据所述每个硬盘中存储的第二数据分片的可用信息,从所述每个硬盘存储的第二数据分片中确定出可用的第二数据分片;
第二合并单元,用于对确定出的第二数据分片进行合并,得到一个数据分片。
结合第四方面,在第四方面的第三种可能的实现方式中,所述第三获取单元具体用于根据第二数据分片的偏移位置,从所述每个硬盘对应的位图表中分别获取所述每个硬盘中存储的第二数据分片的可用信息。
结合第四方面,在第四方面的第四种可能的实现方式中,所述第二确定单元包括:
第五获取子单元,用于根据所述第二数据分片的偏移位置,从所述每个硬盘对应的预分配存储空间中分别获取所述每个硬盘存储的第二数据分片;
第六获取子单元,用于从所述每个硬盘存储的第二数据分片中,获取可用信息为可用的第二数据分片。
第五方面,一种设备,所述设备包括:
第一存储器和第一处理器,用于执行所述一种读取数据的方法。
第六方面,一种设备,所述设备包括:
第二存储器和第二处理器,用于执行所述一种读取数据的方法。
在本发明实施例中,当需要读取的数据块在每个硬盘中对应的存储区域都包括部分存储单元出现故障以及在每个硬盘中出现故障的存储单元并不重叠时,根据该数据块的标识,分别获取每个硬盘中该数据块包括的每个数据分片和每个硬盘中该数据块包括的每个数据分片的可用信息;根据每个硬盘中该数据块包括的每个数据分片的可用信息,对每个硬盘中存储的数据块包括的每个数据分片进行合并,如此可以得到数据块。
附图说明
图1是本发明实施例提供的一种存储系统;
图2是本发明实施例1提供的一种读取数据的方法流程图;
图3是本发明实施例2提供的一种读取数据的方法流程图;
图4是本发明实施例3提供的一种存储系统;
图5是本发明实施例3提供的一种读取数据的方法流程图;
图6是本发明实施例3提供的一种预分配存储空间和位图表示意图;
图7是本发明实施例3提供的一种预分配存储空间和位图表示意图;
图8是本发明实施例4提供的一种读取数据的方法流程图;
图9是本发明实施例4提供的一种数据链和位图表示意图;
图10是本发明实施例5提供的一种读取数据的装置结构示意图;
图11是本发明实施例6提供的一种读取数据的装置结构示意图;
图12是本发明实施例7提供的一种读取数据的设备结构示意图;
图13是本发明实施例8提供的一种读取数据的设备结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
参见图1,本发明实施例提供了一种存储系统,该存储系统包括一个终端和多个硬盘,多个硬盘中的每个硬盘用于存储数据块,终端可以从多个硬盘中的每个硬盘中读取数据块包括的每个数据分片和每个数据分片的可用信息,并根据每个数据分片的可用信息对每个数据分片进行合并。
进一步地,该存储系统还可以包括应用服务器,终端可以发送每个数据分片和每个数据分片的可用信息给应用服务器;应用服务器可以根据每个数据分片的可用信息对每个数据分片进行合并。
其中,硬盘可以为IP(Internet Protocol,网际协议)硬盘或SCSI(SmallComputer System Interface,小型计算机系统接口硬盘)等。
实施例1
参见图2,本发明实施例提供了一种读取数据的方法,包括:
步骤101:根据需要读取的数据块的标识,分别获取每个硬盘中存储的数据块包括的每个数据分片和每个硬盘中存储的数据块包括的每个数据分片的可用信息;
步骤102:根据每个硬盘中存储的数据块包括的每个数据分片的可用信息,对每个硬盘中存储的数据块包括的每个数据分片进行合并,得到数据块。
在本发明实施例中,当需要读取的数据块在每个硬盘中对应的存储区域都包括部分存储单元出现故障以及在每个硬盘中出现故障的存储单元并不重叠时,根据该数据块的标识,分别获取每个硬盘中该数据块包括的每个数据分片和每个硬盘中该数据块包括的每个数据分片的可用信息;根据每个硬盘中该数据块包括的每个数据分片的可用信息,对每个硬盘中存储的数据块包括的每个数据分片进行合并,如此可以得到数据块。
实施例2
参见图3,本发明实施例提供了一种读取数据的方法,包括:
步骤201:接收每个硬盘中存储的数据块包括的每个数据分片和每个硬盘中存储的数据块包括的每个数据分片的可用信息;
步骤202:根据每个硬盘中存储的数据块包括的每个数据分片的可用信息,对每个硬盘中存储的数据块包括的每个数据分片进行合并,得到数据块。
在本发明实施例中,当需要读取的数据块在每个硬盘中对应的存储区域都包括部分存储单元出现故障以及在每个硬盘中出现故障的存储单元并不重叠时,根据该数据块的标识,分别获取每个硬盘中该数据块包括的每个数据分片和每个硬盘中该数据块包括的每个数据分片的可用信息;根据每个硬盘中该数据块包括的每个数据分片的可用信息,对每个硬盘中存储的数据块包括的每个数据分片进行合并,如此可以得到数据块。
实施例3
本发明实施例提供了一种读取数据的方法,
该方法用于当数据块在每个硬盘中对应的存储区域都包括部分存储单元出现故障以及在每个硬盘中出现故障的存储单元并不重叠时,根据存储单元读取数据块包括的每个可用数据分片,并将读取的可用数据分片进行组合得到完整的数据块。
例如,参见图4,在硬盘1、硬盘2和硬盘3中均存储同一数据块,该数据块包括4个数据分片,分别为数据分片1、数据分片2、数据分片3和数据分片4。假设在硬盘1中存储的该数据块包括的数据分片1对应的存储单元出现故障,在硬盘2中存储的该数据块包括的数据分片2对应的存储单元出现故障,以及在硬盘3中存储的该数据块包括的数据分片3对应的存储单元出现故障,因此在硬盘1、硬盘2和硬盘3中出现故障的存储单元并不重叠,可以根据存储单元读取该数据块包括的每个可用数据分片,并将读取的每个可用数据分片进行组合得到完整的数据块。
参见图5,该方法流程包括:
步骤301:获取需要读取的数据块的标识;
其中,需要读取的数据块的标识可以为接收的其他终端或服务器发送的数据块的标识或获取的用户选择的数据块的标识。数据块的标识可以为数据块的名称或编号等。
步骤302:根据需要读取的数据块的标识,在每个硬盘中获取存储该数据块的存储区域;
其中,事先在存储系统中的任一硬盘中存储数据块时,获取该硬盘中存储该数据块的存储区域的偏移量,将该数据块存储在获取的偏移量对应的存储区域中,并将该数据块的标识、硬盘的标识与获取的偏移量存储在数据块的标识、硬盘的标识与存储区域的偏移量的对应关系中。
对于其他硬盘,均可以按照上述步骤存储该数据块。
进一步地,将需要存储该数据块的硬盘的个数记为第三个数,将成功存储该数据块的硬盘的个数记为第一个数。
例如,假设第一个数为2,第三个数为3。
本步骤具体可以为:根据需要读取的数据块的标识,在已存储的数据块的标识、硬盘的标识与存储区域的偏移量的对应关系中查找对应的硬盘标识和该硬盘标识对应的存储区域的偏移量;在查找到的每个硬盘标识对应的硬盘中,获取该硬盘标识对应的存储区域的偏移量对应的存储区域。
其中,一个存储区域可以包括一个或多个存储单元,每个存储单元可以包括一个或多个扇区,每个存储单元中存储一个数据块包括的数据分片。
步骤303:根据每个硬盘中的存储区域的大小,分别分配每个硬盘对应的预分配存储空间和位图表;
具体地,获取存储区域包括的存储单元的个数,根据存储区域包括的存储单元的个数分别分配每个硬盘对应的预分配存储空间和位图表。
例如,硬盘1、硬盘2和硬盘3分别对应的预分配存储空间和位图表如图6所示。
步骤304:对于每个硬盘中的存储区域,在该存储区域中的数据块包括的每个数据分片对应的存储单元中进行读取,读取到数据分片并同时获取每个数据分片对应的可用信息,读取到的数据分片为该硬盘存储的数据块包括的数据分片;
具体地,对于每个存储区域中的每个存储单元,在该存储单元中进行读取,如果成功读取到数据分片,则获取该数据分片的可用信息为可用,根据该数据分片的偏移位置,将该数据分片存储在硬盘对应的预分配存储空间中以及将该数据分片的可用信息存储在硬盘对应的位图表中;如果没有成功读取到数据分片,则获取该存储单元中存储的数据分片的可用信息为不可用,根据该数据分片的偏移位置,将该数据分片的可用信息存储在硬盘对应的位图表中;继续按照上述方法在该存储区域中的其他每个存储单元和其他每个存储区域的每个存储单元中进行读取,直至读取完毕。
例如,存储了数据分片的硬盘1、硬盘2和硬盘3分别对应的预分配存储空间和存储了可用信息的硬盘1、硬盘2和硬盘3分别对应的位图表如图7所示。
步骤305:根据每个硬盘存储的数据块包括的每个数据分片的可用信息,对每个硬盘中存储的数据块包括的数据分片进行合并;
具体地,可以通过如下3051至3053的流程实现,包括:
3051:获取每个硬盘中存储的第二数据分片的可用信息,第二数据分片为数据块中的任一个数据分片;
具体地,获取第二数据分片的偏移位置,第二数据分片为数据块中的任一个数据分片,根据第二数据分片的偏移位置,从每个硬盘对应的位图表中分别获取每个硬盘中存储的第二数据分片的可用信息。
例如,对于数据分片1,获取数据分片1的偏移位置1,根据数据分片1的偏移位置1,在如图7所示的硬盘1对应的位图表中获取数据分片1的可用信息为0,硬盘2对应的位图表中获取数据分片1的可用信息为1,硬盘3对应的位图表中获取数据分片1的可用信息为1。
其中1代表可用信息为可用,0代表可用信息为不可用。
对于数据分片2,增加数据分片1的偏移位置1得到数据分片2的偏移位置2,根据数据分片2的偏移位置2,在如图7所示的硬盘1对应的位图表中获取数据分片2的可用信息为1,硬盘2对应的位图表中获取数据分片2的可用信息为0,硬盘3对应的位图表中获取数据分片2的可用信息为1。
对于数据分片3,增加数据分片2的偏移位置2得到数据分片3的偏移位置3,根据数据分片3的偏移位置3,在如图7所示的硬盘1对应的位图表中获取数据分片3的可用信息为1,硬盘2对应的位图表中获取数据分片3的可用信息为1,硬盘3对应的位图表中获取数据分片3的可用信息为0。
对于数据分片4,增加数据分片3的偏移位置3得到数据分片4的偏移位置4,根据数据分片4的偏移位置4,在如图7所示的硬盘1对应的位图表中获取数据分片4的可用信息为1,硬盘2对应的位图表中获取数据分片4的可用信息为1,硬盘3对应的位图表中获取数据分片4的可用信息为1。
3052:根据每个硬盘中存储的第二数据分片的可用信息,从每个硬盘存储的第二数据分片中确定出可用的第二数据分片;
具体地,根据第二数据分片的偏移位置,从每个硬盘对应的预分配存储空间中分别获取每个硬盘存储的第二数据分片;从获取的每个硬盘存储的第二数据分片中获取可用信息为可用的第二数据分片。
例如,对于数据分片1,在如图7所示的硬盘2对应的预分配存储空间中获取数据分片1和硬盘3对应的预分配存储空间中获取数据分片1。
对于数据分片2,在如图7所示的硬盘1对应的预分配存储空间中获取数据分片2和硬盘3对应的预分配存储空间中获取数据分片2。
对于数据分片3,在如图7所示的硬盘1对应的预分配存储空间中获取数据分片3和硬盘2对应的预分配存储空间中获取数据分片3。
对于数据分片4,在如图7所示的硬盘1对应的预分配存储空间中获取数据分片4、硬盘2对应的预分配存储空间中获取数据分片4和硬盘3对应的预分配存储空间中获取数据分片4。
3053:对确定出的第二数据分片进行合并,得到一个数据分片。
具体地,在第二数据分片中,将相同的数据分片归为一类并统计每类数据分片的个数,将最大的个数确定为第二个数;如果第一个数与第二个数之和大于第三个数,则从第二个数对应的一类数据分片中的任一选择一个数据分片。
例如,假设硬盘2对应的预分配存储空间中的数据分片1和硬盘3对应的预分配存储空间中获取数据分片1相同,则第二个数为2,第一个数2与第二个数2之和为4且大于第三个数3,因此从硬盘2对应的预分配存储空间中的数据分片1和硬盘3对应的预分配存储空间中的数据分片1中选择任一个数据分片1。
假设硬盘1对应的预分配存储空间中的数据分片2和硬盘3对应的预分配存储空间中的数据分片2相同,则第二个数为2,第一个数2与第二个数2之和为4且大于第三个数3,因此从硬盘1对应的预分配存储空间中的数据分片2和硬盘3对应的预分配存储空间中的数据分片2中选择任一个数据分片2。
假设硬盘1对应的预分配存储空间中的数据分片3和硬盘2对应的预分配存储空间中的数据分片3相同,则第二个数为2,第一个数2与第二个数2之和为4且大于第三个数3,因此从硬盘1对应的预分配存储空间中的数据分片3和硬盘2对应的预分配存储空间中的数据分片3中选择任一个数据分片3。
假设硬盘1对应的预分配存储空间中的数据分片4,硬盘2对应的预分配存储空间中的数据分片4和硬盘3对应的预分配存储空间中的数据分片4相同,则第二个数为3,第一个数2与第二个数3之和为5且大于第三个数3,因此从硬盘1对应的预分配存储空间中的数据分片4、硬盘2对应的预分配存储空间中的数据分片4和硬盘3对应的预分配存储空间中的数据分片4中选择任一个数据分片4。
步骤306:将合并后的数据分片组成完整的数据块。
具体地,根据存储区域包括的存储单元的个数创建一个与存储区域结构相同的存储空间,根据确定出的每个第二数据分片的偏移量,分别将每个合并后数据分片存储在存储空间中,如此得到完整的数据块。
例如,将选择的数据分片1、数据分片2、数据分片3和数据分片4组成完整的数据块。
在本发明实施例中,当需要读取的数据块在每个硬盘中对应的存储区域都包括部分存储单元出现故障以及在每个硬盘中出现故障的存储单元并不重叠时,根据该数据块的标识,分别获取每个硬盘中该数据块包括的每个数据分片和每个硬盘中该数据块包括的每个数据分片的可用信息;根据每个硬盘中该数据块包括的每个数据分片的可用信息,对每个硬盘中存储的数据块包括的每个数据分片进行合并,如此可以得到数据块。
实施例4
本发明实施例提供了一种读取数据的方法,
该方法用于当数据块在每个硬盘中对应的存储区域都包括部分存储单元出现故障以及在每个硬盘中出现故障的存储单元并不重叠时,根据存储单元读取数据块包括的每个可用数据分片,并将读取的可用数据分片进行组合得到完整的数据块。
例如,参见图4,在硬盘1、硬盘2和硬盘3中均存储同一数据块,该数据块包括4个数据分片,分别为数据分片1、数据分片2、数据分片3和数据分片4。假设在硬盘1中存储的该数据块包括的数据分片1对应的存储单元出现故障,在硬盘2中存储的该数据块包括的数据分片2对应的存储单元出现故障,以及在硬盘3中存储的该数据块包括的数据分片3对应的存储单元出现故障,因此在硬盘1、硬盘2和硬盘3中出现故障的存储单元并不重叠,可以根据存储单元读取该数据块包括的每个可用数据分片,并将读取的每个可用数据分片进行组合得到完整的数据块。
参见图8,该方法流程包括:
步骤401:终端获取需要读取的数据块的标识;
其中,需要读取的数据块的标识可以为接收的其他终端或服务器发送的数据块的标识或获取的用户选择的数据块的标识。数据块的标识可以为数据块的名称或编号等。
步骤402:终端根据需要读取的数据块的标识,在每个硬盘中获取存储该数据块的存储区域;
其中,事先在存储系统中的任一硬盘中存储数据块时,终端获取该硬盘中存储该数据块的存储区域的偏移量,将该数据块存储在获取的偏移量对应的存储区域中,并将该数据块的标识、硬盘的标识与获取的偏移量存储在数据块的标识、硬盘的标识与存储区域的偏移量的对应关系中。
对于其他硬盘,均可以按照上述步骤存储该数据块。
进一步地,终端将需要存储该数据块的硬盘的个数记为第三个数,将成功存储该数据块的硬盘的个数记为第一个数。
例如,假设第一个数为2,第三个数为3。
本步骤具体可以为:终端根据需要读取的数据块的标识,在已存储的数据块的标识、硬盘的标识与存储区域的偏移量的对应关系中查找对应的硬盘标识和该硬盘标识对应的存储区域的偏移量;在查找到的每个硬盘标识对应的硬盘中,获取该硬盘标识对应的存储区域的偏移量对应的存储区域。
其中,一个存储区域可以包括一个或多个存储单元,每个存储单元可以包括一个或多个扇区,每个存储单元中存储一个数据块包括的数据分片。
步骤403:终端根据每个硬盘中的存储区域的大小,分别分配每个硬盘对应的预分配存储空间和位图表;
具体地,终端获取存储区域包括的存储单元的个数,根据存储区域包括的存储单元的个数分别分配每个硬盘对应的预分配存储空间和位图表。
例如,硬盘1、硬盘2和硬盘3分别对应的预分配存储空间和位图表如图6所示。
步骤404:对于每个硬盘中的存储区域,终端在该存储区域中的数据块包括的每个数据分片对应的存储单元中进行读取,读取到数据分片并同时获取每个数据分片对应的可用信息,读取到的数据分片为该硬盘存储的数据块包括的数据分片;
具体地,对于每个存储区域中的每个存储单元,终端在该存储单元中进行读取,如果成功读取到数据分片,则获取该数据分片的可用信息为可用,根据该数据分片的偏移位置,将该数据分片存储在硬盘对应的预分配存储空间中以及将该数据分片的可用信息存储在硬盘对应的位图表中;如果没有成功读取到数据分片,则获取该存储单元中存储的数据分片的可用信息为不可用,根据该数据分片的偏移位置,将该数据分片的可用信息存储在硬盘对应的位图表中;继续按照上述方法在该存储区域中的其他每个存储单元和其他每个存储区域的每个存储单元中进行读取,直至读取完毕。
例如,存储了数据分片的硬盘1、硬盘2和硬盘3分别对应的预分配存储空间和存储了可用信息的硬盘1、硬盘2和硬盘3分别对应的位图表如图7所示。
步骤405:终端将从每个硬盘中读取到的数据分片和每个数据分片对应的可用信息发送给应用服务器;
具体地,终端将每个硬盘对应的预分配存储空间中的数据分片组成数据链,并发送每个硬盘对应的数据链和位图表给应用服务器;
例如,存储了数据分片的硬盘1、硬盘2和硬盘3分别对应的数据链和存储了可用信息的硬盘1、硬盘2和硬盘3分别对应的位图表如图9所示。
步骤406:应用服务器接收终端发送的从每个硬盘中读取到的数据分片和每个数据分片对应的可用信息;
步骤407:应用服务器根据每个硬盘存储的数据块包括的每个数据分片的可用信息,对每个硬盘中存储的数据块包括的数据分片进行合并;
具体地,可以通过如下4071至4073的流程实现,包括:
4071:应用服务器获取每个硬盘中存储的第二数据分片的可用信息,第二数据分片为数据块中的任一个数据分片;
具体地,应用服务器获取第二数据分片的偏移位置,第二数据分片为数据块中的任一个数据分片,根据第二数据分片的偏移位置,从每个硬盘对应的位图表中分别获取每个硬盘中存储的第二数据分片的可用信息。
例如,对于数据分片1,获取数据分片1的偏移位置1,根据数据分片1的偏移位置1,在如图9所示的硬盘1对应的位图表中获取数据分片1的可用信息为0,硬盘2对应的位图表中获取数据分片1的可用信息为1,硬盘3对应的位图表中获取数据分片1的可用信息为1。
其中1代表可用信息为可用,0代表可用信息为不可用。
对于数据分片2,增加数据分片1的偏移位置1得到数据分片2的偏移位置2,根据数据分片2的偏移位置2,在如图9所示的硬盘1对应的位图表中获取数据分片2的可用信息为1,硬盘2对应的位图表中获取数据分片2的可用信息为0,硬盘3对应的位图表中获取数据分片2的可用信息为1。
对于数据分片3,增加数据分片2的偏移位置2得到数据分片3的偏移位置3,根据数据分片3的偏移位置3,在如图9所示的硬盘1对应的位图表中获取数据分片3的可用信息为1,硬盘2对应的位图表中获取数据分片3的可用信息为1,硬盘3对应的位图表中获取数据分片3的可用信息为0。
对于数据分片4,增加数据分片3的偏移位置3得到数据分片4的偏移位置4,根据数据分片4的偏移位置4,在如图9所示的硬盘1对应的位图表中获取数据分片4的可用信息为1,硬盘2对应的位图表中获取数据分片4的可用信息为1,硬盘3对应的位图表中获取数据分片4的可用信息为1。
4072:应用服务器根据每个硬盘中存储的第二数据分片的可用信息,从每个硬盘存储的第二数据分片中确定出可用的第二数据分片;
具体地,应用服务器根据第二数据分片的偏移位置,从每个硬盘对应的预分配存储空间中分别获取每个硬盘存储的第二数据分片;从获取的每个硬盘存储的第二数据分片中获取可用信息为可用的第二数据分片。
例如,对于数据分片1,在如图9所示的硬盘2对应的预分配存储空间中获取数据分片1和硬盘3对应的预分配存储空间中获取数据分片1。
对于数据分片2,在如图9所示的硬盘1对应的预分配存储空间中获取数据分片2和硬盘3对应的预分配存储空间中获取数据分片2。
对于数据分片3,在如图9所示的硬盘1对应的预分配存储空间中获取数据分片3和硬盘2对应的预分配存储空间中获取数据分片3。
对于数据分片4,在如图9所示的硬盘1对应的预分配存储空间中获取数据分片4、硬盘2对应的预分配存储空间中获取数据分片4和硬盘3对应的预分配存储空间中获取数据分片4。
4073:应用服务器对确定出的第二数据分片进行合并,得到一个数据分片。
具体地,应用服务器在第二数据分片中,将相同的数据分片归为一类并统计每类数据分片的个数,将最大的个数确定为第二个数;如果第一个数与第二个数之和大于第三个数,则从第二个数对应的一类数据分片中的任一选择一个数据分片。
例如,假设硬盘2对应的预分配存储空间中的数据分片1和硬盘3对应的预分配存储空间中获取数据分片1相同,则第二个数为2,第一个数2与第二个数2之和为4且大于第三个数3,因此从硬盘2对应的预分配存储空间中的数据分片1和硬盘3对应的预分配存储空间中的数据分片1中选择任一个数据分片1。
假设硬盘1对应的预分配存储空间中的数据分片2和硬盘3对应的预分配存储空间中的数据分片2相同,则第二个数为2,第一个数2与第二个数2之和为4且大于第三个数3,因此从硬盘1对应的预分配存储空间中的数据分片2和硬盘3对应的预分配存储空间中的数据分片2中选择任一个数据分片2。
假设硬盘1对应的预分配存储空间中的数据分片3和硬盘2对应的预分配存储空间中的数据分片3相同,则第二个数为2,第一个数2与第二个数2之和为4且大于第三个数3,因此从硬盘1对应的预分配存储空间中的数据分片3和硬盘2对应的预分配存储空间中的数据分片3中选择任一个数据分片3。
假设硬盘1对应的预分配存储空间中的数据分片4,硬盘2对应的预分配存储空间中的数据分片4和硬盘3对应的预分配存储空间中的数据分片4相同,则第二个数为3,第一个数2与第二个数3之和为5且大于第三个数3,因此从硬盘1对应的预分配存储空间中的数据分片4、硬盘2对应的预分配存储空间中的数据分片4和硬盘3对应的预分配存储空间中的数据分片4中选择任一个数据分片4。
步骤408:应用服务器将合并后的数据分片组成完整的数据块。
具体地,应用服务器根据存储区域包括的存储单元的个数创建一个与存储区域结构相同的存储空间,根据确定出的每个第二数据分片的偏移量,分别将每个合并后数据分片存储在存储空间中,如此得到完整的数据块。
例如,将选择的数据分片1、数据分片2、数据分片3和数据分片4组成完整的数据块。
在本发明实施例中,当需要读取的数据块在每个硬盘中对应的存储区域都包括部分存储单元出现故障以及在每个硬盘中出现故障的存储单元并不重叠时,根据该数据块的标识,分别获取每个硬盘中该数据块包括的每个数据分片和每个硬盘中该数据块包括的每个数据分片的可用信息;根据每个硬盘中该数据块包括的每个数据分片的可用信息,对每个硬盘中存储的数据块包括的每个数据分片进行合并,如此可以得到数据块。
实施例5
参见图10,本发明实施例提供了一种读取数据的装置,该装置包括:
获取模块501,用于根据需要读取的数据块的标识,分别获取每个硬盘中存储的数据块包括的每个数据分片和每个硬盘中存储的数据块包括的每个数据分片的可用信息;
第一合并模块502,用于根据每个硬盘中存储的数据块包括的每个数据分片的可用信息,对每个硬盘中存储的数据块包括的每个数据分片进行合并,得到数据块。
优选地,获取模块501包括:
第一获取单元,用于根据需要读取的数据块的标识,从每个硬盘中获取存储数据块的存储区域;
读取单元,用于分别在存储区域中的数据块包括的每个数据分片对应的存储单元中进行读取,读取到数据分片并同时获取每个数据分片对应的可用信息。
优选地,读取单元包括:
读取子单元,用于在存储区域中的第一数据分片对应的存储单元中进行读取,第一数据分片为数据块中的任一数据分片;
第一获取子单元,用于如果成功读取到第一数据分片,则获取第一数据分片的可用信息为可用,根据第一数据分片的偏移位置,将第一数据分片存储在硬盘对应的预分配存储空间中以及将第一数据分片的可用信息存储在硬盘对应的位图表中;
第二获取子单元,用于如果没有成功读取到第一数据分片,则获取第一数据分片的可用信息为不可用,根据第一数据分片的偏移位置,将第一数据分片的可用信息存储在硬盘对应的位图表中。
进一步地,获取模块还包括:
分配单元,用于根据存储区域的大小,分配硬盘对应的预分配存储空间和位图表。
优选地,第一合并模块502具体用于发送每个硬盘中存储的数据块包括的每个数据分片和每个硬盘中存储的数据块包括的每个数据分片的可用信息,以使服务器根据每个硬盘中存储的数据块包括的每个数据分片和每个硬盘中存储的数据块包括的每个数据分片的可用信息,对每个硬盘中存储的数据块包括的每个数据分片进行合并。
优选地,第一合并模块502包括:
第二获取单元,用于获取每个硬盘中存储的第二数据分片的可用信息,第二数据分片为数据块中的任一个数据分片;
第一确定单元,用于根据每个硬盘中存储的第二数据分片的可用信息,从每个硬盘存储的第二数据分片中确定出可用的第二数据分片;
第一合并单元,用于对确定出的第二数据分片进行合并,得到一个数据分片。
优选地,第二获取单元具体用于根据第二数据分片的偏移位置,从每个硬盘对应的位图表中分别获取每个硬盘中存储的第二数据分片的可用信息。
优选地,第一确定单元包括:
第三获取子单元,用于根据第二数据分片的偏移位置,从每个硬盘对应的预分配存储空间中分别获取每个硬盘存储的第二数据分片;
第四获取子单元,用于从每个硬盘存储的第二数据分片中,获取可用信息为可用的第二数据分片。
在本发明实施例中,当需要读取的数据块在每个硬盘中对应的存储区域都包括部分存储单元出现故障以及在每个硬盘中出现故障的存储单元并不重叠时,根据该数据块的标识,分别获取每个硬盘中该数据块包括的每个数据分片和每个硬盘中该数据块包括的每个数据分片的可用信息;根据每个硬盘中该数据块包括的每个数据分片的可用信息,对每个硬盘中存储的数据块包括的每个数据分片进行合并,如此可以得到数据块。
实施例6
参见图11,本发明实施例提供了一种读取数据的装置,该装置包括:
接收模块601,用于接收每个硬盘中存储的数据块包括的每个数据分片和每个硬盘中存储的数据块包括的每个数据分片的可用信息;
第二合并模块602,用于根据每个硬盘中存储的数据块包括的每个数据分片的可用信息,对每个硬盘中存储的数据块包括的每个数据分片进行合并,得到数据块。
优选地,接收模块601具体用于接收每个硬盘对应的位图表和数据链,每个硬盘对应的数据链为每个硬盘对应的预分配存储空间中存储的数据分片,每个硬盘的位图表记录了每个硬盘对应的预分配存储空间中存储的每个数据分片的可用信息。
优选地,第二合并模块602包括:
第三获取单元,用于获取每个硬盘中存储的第二数据分片的可用信息,第二数据分片为数据块中的任一个数据分片;
第二确定单元,用于根据每个硬盘中存储的第二数据分片的可用信息,从每个硬盘存储的第二数据分片中确定出可用的第二数据分片;
第二合并单元,用于对确定出的第二数据分片进行合并,得到一个数据分片。
优选地,第三获取单元具体用于根据第二数据分片的偏移位置,从每个硬盘对应的位图表中分别获取每个硬盘中存储的第二数据分片的可用信息。
优选地,第二确定单元包括:
第五获取子单元,用于根据第二数据分片的偏移位置,从每个硬盘对应的预分配存储空间中分别获取每个硬盘存储的第二数据分片;
第六获取子单元,用于从每个硬盘存储的第二数据分片中,获取可用信息为可用的第二数据分片。
在本发明实施例中,当需要读取的数据块在每个硬盘中对应的存储区域都包括部分存储单元出现故障以及在每个硬盘中出现故障的存储单元并不重叠时,根据该数据块的标识,分别获取每个硬盘中该数据块包括的每个数据分片和每个硬盘中该数据块包括的每个数据分片的可用信息;根据每个硬盘中该数据块包括的每个数据分片的可用信息,对每个硬盘中存储的数据块包括的每个数据分片进行合并,如此可以得到数据块。
实施例7
参见图12,本发明实施例提供了一种设备,该设备包括第一存储器701和第一处理器702,用于执行如下一种读取数据的方法:
根据需要读取的数据块的标识,分别获取每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息;
根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,得到所述数据块。
优选地,所述根据需要读取的数据块的标识,获取所述每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,包括:
根据需要读取的数据块的标识,从所述每个硬盘中获取存储所述数据块的存储区域;
分别在所述存储区域中的所述数据块包括的每个数据分片对应的存储单元中进行读取,读取到数据分片并同时获取所述每个数据分片对应的可用信息。
优选地,所述分别在所述存储区域中的所述数据块包括的每个数据分片对应的存储单元中进行读取,读取到数据分片并同时获取所述每个数据分片对应的可用信息,包括:
在所述存储区域中的第一数据分片对应的存储单元中进行读取,所述第一数据分片为所述数据块中的任一数据分片;
如果成功读取到所述第一数据分片,则获取所述第一数据分片的可用信息为可用,根据所述第一数据分片的偏移位置,将所述第一数据分片存储在所述硬盘对应的预分配存储空间中以及将所述第一数据分片的可用信息存储在所述硬盘对应的位图表中;
如果没有成功读取到所述第一数据分片,则获取所述第一数据分片的可用信息为不可用,根据所述第一数据分片的偏移位置,将所述第一数据分片的可用信息存储在所述硬盘对应的位图表中。
进一步地,所述分别在所述存储区域中的所述数据块包括的每个数据分片对应的存储单元中进行读取之前,还包括:
根据所述存储区域的大小,分配所述硬盘对应的预分配存储空间和位图表。
优选地,所述根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,包括:
发送每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,以使服务器根据每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并。
优选地,所述根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,包括:
获取所述每个硬盘中存储的第二数据分片的可用信息,所述第二数据分片为所述数据块中的任一个数据分片;
根据所述每个硬盘中存储的第二数据分片的可用信息,从所述每个硬盘存储的第二数据分片中确定出可用的第二数据分片;
对确定出的第二数据分片进行合并,得到一个数据分片。
优选地,所述获取所述每个硬盘中存储的第二数据分片的可用信息,包括:
根据第二数据分片的偏移位置,从所述每个硬盘对应的位图表中分别获取所述每个硬盘中存储的第二数据分片的可用信息。
优选地,所述根据所述每个硬盘中存储的第二数据分片的可用信息,从所述每个硬盘存储的第二数据分片中确定出可用的第二数据分片,包括:
根据所述第二数据分片的偏移位置,从所述每个硬盘对应的预分配存储空间中分别获取所述每个硬盘存储的第二数据分片;
从所述每个硬盘存储的第二数据分片中,获取可用信息为可用的第二数据分片。
在本发明实施例中,当需要读取的数据块在每个硬盘中对应的存储区域都包括部分存储单元出现故障以及在每个硬盘中出现故障的存储单元并不重叠时,根据该数据块的标识,分别获取每个硬盘中该数据块包括的每个数据分片和每个硬盘中该数据块包括的每个数据分片的可用信息;根据每个硬盘中该数据块包括的每个数据分片的可用信息,对每个硬盘中存储的数据块包括的每个数据分片进行合并,如此可以得到数据块。
实施例8
参见图13,本发明实施例提供了一种设备,该设备包括第二存储器801和第二处理器802,用于执行如下一种读取数据的方法:
接收每个硬盘中存储的数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息;
根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,得到所述数据块。
优选地,所述接收每个硬盘中存储的数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,包括:
接收所述每个硬盘对应的位图表和数据链,所述每个硬盘对应的数据链为所述每个硬盘对应的预分配存储空间中存储的数据分片,所述每个硬盘的位图表记录了所述每个硬盘对应的预分配存储空间中存储的每个数据分片的可用信息。
优选地,所述根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,包括:
获取所述每个硬盘中存储的第二数据分片的可用信息,所述第二数据分片为所述数据块中的任一个数据分片;
根据所述每个硬盘中存储的第二数据分片的可用信息,从所述每个硬盘存储的第二数据分片中确定出可用的第二数据分片;
对确定出的第二数据分片进行合并,得到一个数据分片。
优选地,所述获取所述每个硬盘中存储的第二数据分片的可用信息,包括:
根据第二数据分片的偏移位置,从所述每个硬盘对应的位图表中分别获取所述每个硬盘中存储的第二数据分片的可用信息。
优选地,所述根据所述每个硬盘中存储的第二数据分片的可用信息,从所述每个硬盘存储的第二数据分片中确定出可用的第二数据分片,包括:
根据所述第二数据分片的偏移位置,从所述每个硬盘对应的预分配存储空间中分别获取所述每个硬盘存储的第二数据分片;
从所述每个硬盘存储的第二数据分片中,获取可用信息为可用的第二数据分片。
在本发明实施例中,当需要读取的数据块在每个硬盘中对应的存储区域都包括部分存储单元出现故障以及在每个硬盘中出现故障的存储单元并不重叠时,根据该数据块的标识,分别获取每个硬盘中该数据块包括的每个数据分片和每个硬盘中该数据块包括的每个数据分片的可用信息;根据每个硬盘中该数据块包括的每个数据分片的可用信息,对每个硬盘中存储的数据块包括的每个数据分片进行合并,如此可以得到数据块。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储单元中,上述提到的存储单元可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (28)
1.一种读取数据的方法,其特征在于,所述方法包括:
根据需要读取的数据块的标识,分别获取每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,每个可用信息用于指示所述每个可用信息对应的数据分片是否可用;
根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,得到所述数据块。
2.如权利要求1所述的方法,其特征在于,所述根据需要读取的数据块的标识,获取所述每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,包括:
根据需要读取的数据块的标识,从所述每个硬盘中获取存储所述数据块的存储区域;
分别在所述存储区域中的所述数据块包括的每个数据分片对应的存储单元中进行读取,读取到数据分片并同时获取所述每个数据分片对应的可用信息。
3.如权利要求2所述的方法,其特征在于,所述分别在所述存储区域中的所述数据块包括的每个数据分片对应的存储单元中进行读取,读取到数据分片并同时获取所述每个数据分片对应的可用信息,包括:
在所述存储区域中的第一数据分片对应的存储单元中进行读取,所述第一数据分片为所述数据块中的任一数据分片;
如果成功读取到所述第一数据分片,则获取所述第一数据分片的可用信息为可用,根据所述第一数据分片的偏移位置,将所述第一数据分片存储在所述硬盘对应的预分配存储空间中以及将所述第一数据分片的可用信息存储在所述硬盘对应的位图表中;
如果没有成功读取到所述第一数据分片,则获取所述第一数据分片的可用信息为不可用,根据所述第一数据分片的偏移位置,将所述第一数据分片的可用信息存储在所述硬盘对应的位图表中。
4.如权利要求2所述的方法,其特征在于,所述分别在所述存储区域中的所述数据块包括的每个数据分片对应的存储单元中进行读取之前,还包括:
根据所述存储区域的大小,分配所述硬盘对应的预分配存储空间和位图表。
5.如权利要求1所述的方法,其特征在于,所述根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,包括:
发送每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,以使服务器根据每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并。
6.如权利要求1所述的方法,其特征在于,所述根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,包括:
获取所述每个硬盘中存储的第二数据分片的可用信息,所述第二数据分片为所述数据块中的任一个数据分片;
根据所述每个硬盘中存储的第二数据分片的可用信息,从所述每个硬盘存储的第二数据分片中确定出可用的第二数据分片;
对确定出的第二数据分片进行合并,得到一个数据分片。
7.如权利要求6所述的方法,其特征在于,所述获取所述每个硬盘中存储的第二数据分片的可用信息,包括:
根据第二数据分片的偏移位置,从所述每个硬盘对应的位图表中分别获取所述每个硬盘中存储的第二数据分片的可用信息。
8.如权利要求6所述的方法,其特征在于,所述根据所述每个硬盘中存储的第二数据分片的可用信息,从所述每个硬盘存储的第二数据分片中确定出可用的第二数据分片,包括:
根据所述第二数据分片的偏移位置,从所述每个硬盘对应的预分配存储空间中分别获取所述每个硬盘存储的第二数据分片;
从所述每个硬盘存储的第二数据分片中,获取可用信息为可用的第二数据分片。
9.一种读取数据的方法,其特征在于,所述方法包括:
接收每个硬盘中存储的数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,每个可用信息用于指示所述每个可用信息对应的数据分片是否可用;
根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,得到所述数据块。
10.如权利要求9所述的方法,其特征在于,所述接收每个硬盘中存储的数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,包括:
接收所述每个硬盘对应的位图表和数据链,所述每个硬盘对应的数据链为所述每个硬盘对应的预分配存储空间中存储的数据分片,所述每个硬盘的位图表记录了所述每个硬盘对应的预分配存储空间中存储的每个数据分片的可用信息。
11.如权利要求9所述的方法,其特征在于,所述根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,包括:
获取所述每个硬盘中存储的第二数据分片的可用信息,所述第二数据分片为所述数据块中的任一个数据分片;
根据所述每个硬盘中存储的第二数据分片的可用信息,从所述每个硬盘存储的第二数据分片中确定出可用的第二数据分片;
对确定出的第二数据分片进行合并,得到一个数据分片。
12.如权利要求11所述的方法,其特征在于,所述获取所述每个硬盘中存储的第二数据分片的可用信息,包括:
根据第二数据分片的偏移位置,从所述每个硬盘对应的位图表中分别获取所述每个硬盘中存储的第二数据分片的可用信息。
13.如权利要求11所述的方法,其特征在于,所述根据所述每个硬盘中存储的第二数据分片的可用信息,从所述每个硬盘存储的第二数据分片中确定出可用的第二数据分片,包括:
根据所述第二数据分片的偏移位置,从所述每个硬盘对应的预分配存储空间中分别获取所述每个硬盘存储的第二数据分片;
从所述每个硬盘存储的第二数据分片中,获取可用信息为可用的第二数据分片。
14.一种读取数据的装置,其特征在于,所述装置包括:
获取模块,用于根据需要读取的数据块的标识,分别获取每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,每个可用信息用于指示所述每个可用信息对应的数据分片是否可用;
第一合并模块,用于根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,得到所述数据块。
15.如权利要求14所述的装置,其特征在于,所述获取模块包括:
第一获取单元,用于根据需要读取的数据块的标识,从所述每个硬盘中获取存储所述数据块的存储区域;
读取单元,用于分别在所述存储区域中的所述数据块包括的每个数据分片对应的存储单元中进行读取,读取到数据分片并同时获取所述每个数据分片对应的可用信息。
16.如权利要求15所述的装置,其特征在于,所述读取单元包括:
读取子单元,用于在所述存储区域中的第一数据分片对应的存储单元中进行读取,所述第一数据分片为所述数据块中的任一数据分片;
第一获取子单元,用于如果成功读取到所述第一数据分片,则获取所述第一数据分片的可用信息为可用,根据所述第一数据分片的偏移位置,将所述第一数据分片存储在所述硬盘对应的预分配存储空间中以及将所述第一数据分片的可用信息存储在所述硬盘对应的位图表中;
第二获取子单元,用于如果没有成功读取到所述第一数据分片,则获取所述第一数据分片的可用信息为不可用,根据所述第一数据分片的偏移位置,将所述第一数据分片的可用信息存储在所述硬盘对应的位图表中。
17.如权利要求15所述的装置,其特征在于,所述获取模块还包括:
分配单元,用于根据所述存储区域的大小,分配所述硬盘对应的预分配存储空间和位图表。
18.如权利要求14所述的装置,其特征在于,所述第一合并模块具体用于发送每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,以使服务器根据每个硬盘中存储的所述数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并。
19.如权利要求14所述的装置,其特征在于,所述第一合并模块包括:
第二获取单元,用于获取所述每个硬盘中存储的第二数据分片的可用信息,所述第二数据分片为所述数据块中的任一个数据分片;
第一确定单元,用于根据所述每个硬盘中存储的第二数据分片的可用信息,从所述每个硬盘存储的第二数据分片中确定出可用的第二数据分片;
第一合并单元,用于对确定出的第二数据分片进行合并,得到一个数据分片。
20.如权利要求19所述的装置,其特征在于,
所述第二获取单元具体用于根据第二数据分片的偏移位置,从所述每个硬盘对应的位图表中分别获取所述每个硬盘中存储的第二数据分片的可用信息。
21.如权利要求19所述的装置,其特征在于,所述第一确定单元包括:
第三获取子单元,用于根据所述第二数据分片的偏移位置,从所述每个硬盘对应的预分配存储空间中分别获取所述每个硬盘存储的第二数据分片;
第四获取子单元,用于从所述每个硬盘存储的第二数据分片中,获取可用信息为可用的第二数据分片。
22.一种读取数据的装置,其特征在于,所述装置包括:
接收模块,用于接收每个硬盘中存储的数据块包括的每个数据分片和所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,每个可用信息用于指示所述每个可用信息对应的数据分片是否可用;
第二合并模块,用于根据所述每个硬盘中存储的所述数据块包括的每个数据分片的可用信息,对所述每个硬盘中存储的所述数据块包括的每个数据分片进行合并,得到所述数据块。
23.如权利要求22所述的装置,其特征在于,
所述接收模块具体用于接收所述每个硬盘对应的位图表和数据链,所述每个硬盘对应的数据链为所述每个硬盘对应的预分配存储空间中存储的数据分片,所述每个硬盘的位图表记录了所述每个硬盘对应的预分配存储空间中存储的每个数据分片的可用信息。
24.如权利要求22所述的装置,其特征在于,所述第二合并模块包括:
第三获取单元,用于获取所述每个硬盘中存储的第二数据分片的可用信息,所述第二数据分片为所述数据块中的任一个数据分片;
第二确定单元,用于根据所述每个硬盘中存储的第二数据分片的可用信息,从所述每个硬盘存储的第二数据分片中确定出可用的第二数据分片;
第二合并单元,用于对确定出的第二数据分片进行合并,得到一个数据分片。
25.如权利要求24所述的装置,其特征在于,
所述第三获取单元具体用于根据第二数据分片的偏移位置,从所述每个硬盘对应的位图表中分别获取所述每个硬盘中存储的第二数据分片的可用信息。
26.如权利要求24所述的装置,其特征在于,所述第二确定单元包括:
第五获取子单元,用于根据所述第二数据分片的偏移位置,从所述每个硬盘对应的预分配存储空间中分别获取所述每个硬盘存储的第二数据分片;
第六获取子单元,用于从所述每个硬盘存储的第二数据分片中,获取可用信息为可用的第二数据分片。
27.一种读取数据的设备,其特征在于,所述设备包括第一存储器和第一处理器,用于执行如权利要求1至8任一项权利要求所述的一种读取数据的方法。
28.一种读取数据的设备,其特征在于,所述设备包括第二存储器和第二处理器,用于执行如权利要求9至13任一项权利要求所述的一种读取数据的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410116198.XA CN103942012B (zh) | 2014-03-26 | 2014-03-26 | 一种读取数据的方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410116198.XA CN103942012B (zh) | 2014-03-26 | 2014-03-26 | 一种读取数据的方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103942012A CN103942012A (zh) | 2014-07-23 |
CN103942012B true CN103942012B (zh) | 2017-10-10 |
Family
ID=51189693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410116198.XA Active CN103942012B (zh) | 2014-03-26 | 2014-03-26 | 一种读取数据的方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103942012B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461378B (zh) * | 2014-10-30 | 2017-09-26 | 华为技术有限公司 | 将数据对象写入ip硬盘的方法、装置及系统 |
CN105760108B (zh) * | 2014-12-16 | 2018-12-07 | 华为数字技术(苏州)有限公司 | 一种数据存储的方法和装置 |
CN110427156B (zh) * | 2019-07-16 | 2020-09-08 | 华中科技大学 | 一种基于分片的mbr的并行读方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103370692A (zh) * | 2012-11-21 | 2013-10-23 | 华为技术有限公司 | 一种修复数据的方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101446976A (zh) * | 2008-12-26 | 2009-06-03 | 中兴通讯股份有限公司 | 一种分布式文件系统中的文件存储方法 |
CN101673288A (zh) * | 2009-10-13 | 2010-03-17 | 中兴通讯股份有限公司 | 一种iptv系统中的读、写文件的方法和系统 |
CN102024059B (zh) * | 2010-12-31 | 2012-07-18 | 成都市华为赛门铁克科技有限公司 | 一种文件系统内实现独立磁盘冗余阵列保护的方法及装置 |
-
2014
- 2014-03-26 CN CN201410116198.XA patent/CN103942012B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103370692A (zh) * | 2012-11-21 | 2013-10-23 | 华为技术有限公司 | 一种修复数据的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103942012A (zh) | 2014-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10817469B2 (en) | Method and apparatus for repairing file system directory tree | |
CN104461390B (zh) | 将数据写入叠瓦状磁记录smr硬盘的方法及装置 | |
CN103729352B (zh) | 分布式文件系统对多个副本数据进行处理的方法及该系统 | |
CN107436725A (zh) | 一种数据写、读方法、装置及分布式对象存储集群 | |
US7577808B1 (en) | Efficient backup data retrieval | |
CN103502957A (zh) | 数据处理方法及装置 | |
CN103942012B (zh) | 一种读取数据的方法、装置及设备 | |
CN102256169B (zh) | 向用户推荐相关视频的方法和装置 | |
JP2012526320A5 (zh) | ||
US10572335B2 (en) | Metadata recovery method and apparatus | |
CN108900554A (zh) | Http协议资产检测方法、系统、设备及计算机介质 | |
CN106528830B (zh) | 一种恢复文件索引目录的方法和装置 | |
CN106933927B (zh) | 数据表的连接方法和装置 | |
CN107633096A (zh) | 数据实时写入去重处理方法 | |
CN109144754A (zh) | 一种可靠性测试方法及装置 | |
CN106776891A (zh) | 一种文件存储的方法和装置 | |
CN103455491B (zh) | 对查询词分类的方法及装置 | |
CN110516124B (zh) | 一种文件解析方法、装置和计算机可读存储介质 | |
CN108241612B (zh) | 标点符号处理方法和装置 | |
CN104636218B (zh) | 数据恢复方法及装置 | |
CN109669621A (zh) | 一种文件管理方法、文件管理系统、电子设备及存储介质 | |
CN101401163B (zh) | 用于在数据中嵌入信息的方法和装置 | |
CN104090924B (zh) | 一种隐私数据的清理方法和装置 | |
CN104317675B (zh) | 应用的容灾处理方法和装置 | |
CN104683288B (zh) | 消息续传方法和装置 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220906 Address after: No.1899 Xiyuan Avenue, high tech Zone (West District), Chengdu, Sichuan, 611730 Patentee after: Chengdu Huawei Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |