English:
[0001] This application claims priority from Singapore Patent Application No. 10201406331V filed on October 3, 2014.
[0002] The present invention relates to a storage system and, more specifically, relates to data reconstruction within such a storage system.
[0003] Ideally data reconstruction of data in a failed data storage device in a data storage system occurs as offline reconstruction in which the storage system stops replying to any client/application server in order to allow the data reconstruction process to run at full speed. However, this scenario is not practical in most production environments as most storage systems are required to provide uninterrupted data services even when they are recovering from disk failures.
[0005] In one aspect of the invention, a method for data reconstruction in a data storage system comprising a plurality of storage devices is provided. The method includes receiving one of a read request and a write request from a server to access data from a failed one of the plurality of storage devices and reconstructing the requested data stored in the failed one of the plurality of storage devices from portions of data stored in one or more available ones of the plurality of storage devices. The method further includes sending the requested data from the reconstructed data back to the server and sending the reconstructed data to a replacement one of the plurality of storage devices. Finally, the method includes updating a reconstruction list to indicate the replacement one of the plurality of storage devices and completion of data reconstruction.
[0006] In an additional aspect of the invention, a method for data reconstruction in a cluster of Hybrid Object Storage Devices (HOSDs) when one HOSD has failed wherein the cluster of HOSDs includes a primary HOSD is provided. The method includes identifying data in the failed HOSD which is available in non-volatile memory of the primary HOSD, copying the identified data available in the non-volatile memory of the primary HOSD to a replacement HOSD, and updating a reconstruction list in the primary HOSD to indicate the replacement HOSD and completion of data reconstruction.
[0007] In yet an additional aspect of the invention, a method for data reconstruction in a cluster of Hybrid Object Storage Devices (HOSDs) when one HOSD has failed is provided. The method includes computing data in the failed HOSD based on data available in a nonvolatile memory of a primary HOSD, writing the computed data to a replacement HOSD, and updating a reconstruction list to indicate the replacement HOSD and completion of data reconstruction
[0008] In a further aspect of the present invention, a data storage system including an Erasure Code Group (ECG) cluster of Hybrid Object Storage Devices (HOSDs) is disclosed. One of the ECG cluster of HOSDs is assigned as a primary HOSD. The primary HOSD includes a non-volatile (NV) cache, a reconstruction list, a reconstruction processor and one or more communication interfaces. The NV cache includes a local cache which stores object data from the primary HOSD. The reconstruction list indicates a status of failed HOSD reconstruction. The reconstruction processor is coupled to the NV cache and the reconstruction list, the reconstruction processor reconstructing failed HOSD data and updating the status of the failed HOSD reconstruction in the reconstruction list. The one or more communication interfaces is coupled to the reconstruction processor for communicating with a client/application server and for communicating with other HOSDs in the cluster of HOSDs
[0009] The accompanying figures, where like reference numerals refer to identical or functionally similar elements throughout the separate views and which together with the detailed description below are incorporated in and form part of the specification and serve to illustrate various embodiments and to explain various principles and advantages in accordance with a present invention, by way of non-limiting example only.
[0010] FIG. 1 illustrates a diagram of a data storage system in accordance with a present embodiment where the data storage system includes a plurality of Hybrid Object Storage Devices (HOSD), one HOSD being assigned as a HOSD primary storage device and another HOSD having failed.
[0011] FIG. 2 illustrates a diagram of the data storage system of FIG. 1 including an Erasure Code Group (ECG) in accordance with the present embodiment.
[0012] FIG. 3 illustrates a diagram of the ECG of FIG. 2 wherein the HOSD store at least a representation of their object data in the HOSD primary storage device of the ECG in accordance with the present embodiment.
[0014] FIG. 5 illustrates a flow chart of the HOSD primary storage device of FIG. 2 in accordance with the present embodiment.
[0016] The following detailed description is merely exemplary in nature and is not intended to limit the invention or the application and uses of the invention. Furthermore, there is no intention to be bound by any theory presented in the preceding background of the invention or the following detailed description. It is the intent of this invention to present a system and methods for data reconstruction which provides uninterrupted data services while recovering from disk failures.
[0017] Referring to FIG. 1, a diagram 100 of a data storage system in accordance with a present embodiment is disclosed. The data storage system 102 includes a plurality of Hybrid Object Storage Devices (HOSD) 104, one HOSD being assigned as a HOSD primary storage device 106. The data storage system 102 is coupled to a server 108 (either a client server or an application server). Reconstruction optimization in accordance with the present embodiment occurs when one HOSD 110 fails.
[0018] Once a HOSD failure is identified, the primary HOSD 106 begins the reconstruction process. If there is a read request or a write request from the client/application server 108 to access data from the failed HOSD 110 during reconstruction, the data will be reconstructed by the primary HOSD 106 by computing data read out from other available HOSDs 104. The reconstructed data is then sent back to the client/application server 108 from the primary HOSD 106. The primary HOSD 106 can also send the data to a replacement HOSD 112 and update a reconstruction list maintained by the primary HOSD 106 to indicate that the data has been reconstructed.
[0019] Referring to FIG. 2, a diagram 200 depicts an active drive cluster of the data storage system 102 (FIG. 1) which includes multiple Erasure Code Hybrid Object Storage Device (HOSD) Groups (ECG) 202 in accordance with the present embodiment. Each ECG 202 contains multiple normal HOSDs 204 and one primary HOSD 206. When there is a request from the client/application server 108, the request will be directed to the primary HOSD 206. The primary HOSD 206 retrieves the requested data from the other HOSDs 204, and then forwards the requested data back to the server 108. When there is a HOSD failure, the primary HOSD 206 will be the one which starts the reconstruction process, keeps an object list, track the reconstruction process, compute the reconstructed data, send the reconstructed data to a replacement HOSD, and maintain a reconstruction list.
[0020] Referring to FIG. 3, a diagram 300 depicts the HOSD 204 storing at least a representation of their object data in the HOSD primary storage device 206 of the ECG in accordance with the present embodiment. Each HOSD 204, including the primary HOSD 206, includes a local cache 302 for storing at least a representation of locally stored object data. A Non- Volatile (NV) cache in the primary HOSD 206 has two portions of data. One portion of the NV cache is the local cache 302 which stores the object data from the primary HOSD 206. The other portion of the NV cache is an ECG cache 304 which caches at least a representation of the object data from the local caches 302 of the other HOSDs 204 within the same ECG. Both the ECG cache 304 and the local cache 302 provide improved system performance. In addition, the reconstruction process can be optimized based on data in the ECG cache 304.
[0021] In accordance with a first optimized reconstruction process, data in the ECG cache 304 is reconstructed when one of the HOSDs 204 in the ECG fails. The primary HOSD 206 reconstructs the data of the failed HOSD 204 in the ECG cache 304 with a high priority. The data reconstruction can be done either by directly copying the data available in the ECG cache 304 to a replacement HOSD or compute the data based on available data in the ECG cache 304 and then writing the computed data to the replacement HOSD. The primary HOSD 206 can then update the reconstruction list.
[0022] In accordance with a second optimized reconstruction process, data requested by the client/application server 108 includes data from a failed HOSD 204 in the ECG. If the read/write request from client/application server 108 to access the data from the failed HOSD is received during reconstruction, the data being accessed will be reconstructed on the fly with a high priority by computing data read out from other available HOSDs 204, and then sending the computed data back to the client/application server 108. In the meantime, the primary HOSD 206 will also send the data to a replacement HOSD and update the reconstruction list in the primary HOSD 206 to indicate that the object data has been reconstructed.
[0023] In accordance with a normal reconstruction process, the primary HOSD 206 reconstructs the data by reading data from other available HOSDs 204 and recomputing the read data to recover the data. Once completed, the primary HOSD 206 will write the recomputed data to a replacement HOSD and update the reconstruction list.
[0024] Referring to FIG. 4, a block diagram 400 depicts the HOSD primary storage device 206 of the ECG 202 (FIG. 2) of the data storage system 102 (FIG. 1) in accordance with the present embodiment. The primary HOSD 206 includes a non-volatile (NV) cache 402 which includes the local cache 302 for storing object data from the primary HOSD 206 and the ECG cache 304 for storing object data from the other HOSDs 204 in the ECG 202.
[0025] A reconstruction list 404 indicates a status of failed HOSD reconstruction. A reconstruction processor 406 is coupled to the NV cache 402 and the reconstruction list and reconstructs failed HOSD data as well as updates the status of the failed HOSD reconstruction in the reconstruction list 404. A first communication interface 408 couples the reconstruction processor 406 to client/application server 108 for communication therewith and a second communication interface 408 couples the reconstruction processor 406 to the other HOSDs 204 in the ECG 202 for writing data to or reading data from the HOSDs 204 and for retrieving local cache data from the HOSDs 204 for storing into the ECG cache 304. The reconstruction processor 406 also communicates with the HOSDs 204 via the second communication interface to detect when one of the HOSDs 204 fails and to assign an available HOSD 204 as a replacement HOSD.
[0026] Referring to FIG. 5, a flow chart 500 depicts the optimized reconstruction process 502 of the reconstruction processor 406 in accordance with the present embodiment. If a read request or a write request is received 504 from the client/application server 108 during reconstruction, the reconstruction processor 406 determines 506 whether the read/write requests is requesting failed data. If the reconstruction processor 406 determines 506 that the read/write request is not requesting failed data, normal reconstruction processing continues until another read/write request is received 504.
[0027] When the reconstruction processor 406 determines 506 that the read/write request is requesting failed data, reconstruction of the requested data is prioritized so that the requested data is immediately reconstructed 508 and, once reconstructed 508, is sent 510 to the client/application server 108. In this manner, uninterrupted data services with the client/application server 108 can be conducted by the primary HOSD 206 even while the
[0028] After the requested data is sent 510 to the client/application server 108, it is then sent 512 to a replacement storage device, the replacement storage device being one of the HOSDs 204 assigned as a replacement storage device by the reconstruction processor 406. The reconstruction processor 406 then updates 514 the reconstruction list 404 to indicate the replacement one of the HOSDs 204. Normal reconstruction processing continues until either another read/write request is received 504 or processing is completed. When all reconstruction is complete, the reconstruction processor 406 updates the reconstruction list 404 to indicate the completion of data reconstruction.
[0029] Thus, it can be seen that the present embodiment can provide optimized uninterrupted data services even while recovering from disk failures. In addition, it provides advantageous methods for reconstruction of failed disks from either an Erasure Code Group (ECG) cache in a primary Hybrid Object Storage Device (HOSD) within the ECG or from one or more other HOSD in the ECG. While exemplary embodiments have been presented in the foregoing detailed description of the invention, it should be appreciated that a vast number of variations exist.
[0030] It should further be appreciated that the exemplary embodiments are only examples, and are not intended to limit the scope, applicability, operation, or configuration of the invention in any way. Rather, the foregoing detailed description will provide those skilled in the art with a convenient road map for implementing an exemplary embodiment of the invention, it being understood that various changes may be made in the function and arrangement of elements and method of operation described in an exemplary embodiment without departing from the scope of the invention as set forth in the appended claims.

中文:
[0001]本申请要求了2014年10月3日提交的新加坡专利申请No.10201406331V的优先权。
[0002]本发明涉及一种存储系统,更具体地说,涉及在这种存储系统内的数据重建。
[0003]理想地,数据存储系统中的失效数据存储装置的数据的数据重建,是离线重建,其中存储系统不再对任何客户端/应用服务器做出反应,以使数据重建过程能够全速运行。然而,这种情况在大多数产品环境下是不实用的,因为大多数存储系统都需要提供不间断的数据服务,即使是在他们从磁盘故障恢复的时候。
[0005]本发明的一方面,提供了一种在包括多个存储装置的数据存储系统中进行数据重建的方法。该方法包括:接收来自服务器的读取请求和写入请求中的一个,以访问多个存储装置中的失效存储装置的数据,并根据存储在多个存储装置的一个或多个可用存储装置中的部分数据重建存储在多个存储装置的失效存储装置中的请求数据。该方法进一步包括将请求数据从重建数据发送回服务器,并将重建数据发送到多个存储装置中的替代存储装置。最后,该方法包括更新重建列表,以指示多个存储装置中的替代存储装置和数据重建的完成。
[0006]本发明的另一方面,提供了一种在混合对象存储装置(HOSD)集群中当一个HOSD失效时进行数据重建的方法,其中HOSD集群包括主HOSD。该方法包括识别失效HOSD中的数据,其中该数据在主HOSD的非易失性存储器中是可用的,将在主HOSD的非易失性存储器中的可用识别数据复制到替代HOSD,并更新主HOSD中的重建列表以指示替代HOSD和数据重建的完成。
[0007]本发明的另一方面,提供了一种在混合对象存储装置(HOSD)集群中当一个HOSD失效时进行数据重建的方法。该方法包括根据主HOSD的非易失性存储器中的可用数据计算失效HOSD中的数据,将计算的数据写入替代HOSD,并更新重建列表以指示替代HOSD和数据重建的完成。
[0008]本发明的另一方面,公开了一种包括混合对象存储装置(HOSD)的纠删码组(ECG)集群的数据存储系统。HOSD的ECG集群中的一个HOSD被指定为主HOSD。该主HOSD包括非易失性(NV)缓存、重建列表、重建处理器和一个或多个通信接口。该NV缓存包括存储主HOSD的对象数据的本地缓存。重建列表指示了失效HOSD重建的状态。重建处理器被联接到NV缓存和重建列表,重建处理器重建失效HOSD数据并在重建列表中更新失效HOSD重建的状态。一个或多个通信接口被联接到重建处理器,以与客户端/应用服务器进行通信和与HOSD的集群中的其他HOSD进行通信。
[0009]附图中,相同的附图标记指出了所有分开视图中的相同或功能相似的元件,附图连同下面的具体描述一起被纳入说明书中并形成说明书的一部分,附图仅通过非限制性例子例示各种本发明的实施例和解释本发明的各种原理和优势。
[0010]图1例示了根据本实施例的数据存储系统的图,其中该数据存储系统包括多个混合对象存储装置(HOSD),一个HOSD被指定为HOSD主存储装置,另一个HOSD已失效。
[0011]图2例示了根据本实施例的包括纠删码组(ECG)的图1的数据存储系统的图。
[0012]图3例示了根据本实施例的图2的ECG图,其中HOSD至少存储ECG的HOSD主存储装置中的对象数据表示。
[0014]图5例示了根据本实施例的图2的HOSD主存储装置的流程图。
[0016]下面的详细说明实际上仅是例示性的,并且不意指限制本发明或本发明的应用和用途。此外,不意指限制于本发明前述背景或以下详细描述中所提出的任何理论。本发明的目的是提出一种用于数据重建的系统和方法,其在磁盘故障恢复时提供不间断的数据服务。
[0017]参考图1,公开了根据本实施例的数据存储系统的图100。数据存储系统102包括多个混合对象存储装置(HOSD)104,一个HOSD被指定为HOSD主存储装置106。数据存储系统102联接到服务器108(或是客户端服务器或是应用服务器)。当一个HOSD 110失效时,就会发生根据本实施例的重建优化。
[0018]一旦识别出HOSD失效,主HOSD 106就会开始重建过程。如果在重建期间有来自客户端/应用服务器108的读取请求或写入请求来访问失效HOSD 110的数据,则通过计算从其他可用的HOSD 104读出的数据使该数据被主HOSD 106重建。然后将重建的数据从主HOSD106发送回客户端/应用服务器108。主HOSD 106也可将数据发送到替代HOSD 112并更新由主HOSD 106维护的重建列表,以指示数据已经重建。
[0019]参考图2,图200描绘了根据本实施例的数据存储系统102(图1)的有源驱动集群,其包括多个纠删码混合对象存储装置(HOSD)组(ECG)202。每个ECG 202都包含多个正常HOSD 204和一个主HOSD 206。当有来自客户端/应用服务器108的请求时,则该请求将被指向主HOSD 206。主HOSD 206从其他HOSD 204获取请求数据,并将请求数据返回到服务器108。当有HOSD失效时,则主HOSD 206将开始重建过程,维护对象列表,追踪重建过程,计算重建数据,将重建数据发送到替代HOSD,并维护重建列表。
[0020]参考图3,图300描绘了根据本实施例的HOSD 204,该HOSD 204至少存储ECG的HOSD主存储装置206中的对象数据表示(representation)。每个HOSD 204,包括主HOSD 206,都包括用于至少存储本地存储的对象数据表示的本地缓存302。主HOSD 206中的非易失性(NV)缓存有两部分数据。一部分NV缓存是存储主HOSD 206的对象数据的本地缓存302。另一部分NV缓存是一种ECG缓存304,其至少缓存在相同ECG内的其他HOSD 204的本地缓存302的对象数据表示。ECG缓存304和本地缓存302提供了改进的系统性能。此外,重建过程能根据ECG缓存304中的数据来优化。
[0021]根据第一优化重建过程,当ECG中的一个HOSD 204失效时,将重建ECG缓存304中的数据。主HOSD 206用高优先级重建ECG缓存304中的失效HOSD 204的数据。数据重建或者可通过将ECG缓存304中的可用数据直接复制到替代HOSD来完成,或者基于ECG缓存304中的可用数据计算数据然后将计算的数据写入替代HOSD来完成。然后主HOSD 206可以更新重建列表。
[0022]根据第二优化重建过程,客户端/应用服务器108所请求的数据包括来自ECG中的失效HOSD 204的数据。如果在重建过程中接收到来自客户端/应用服务器108的、访问失效HOSD数据的读取/写入请求时,则将通过计算从其他可用的HOSD 204读出的数据然后将计算的数据返回到客户端/服务器应用程序108,来使被访问的数据采用不停机的方式以高优先级重建。在此期间,主HOSD 206还将数据发送到替代HOSD并更新主HOSD 206中的重建列表,以指示对象数据已经重建。
[0023]根据正常的重建过程,主HOSD 206通过从其他可用的HOSD 204读出数据并重新计算读出的数据以恢复该数据来重建数据。一旦完成,主HOSD 206就会将重新计算的数据写入替代HOSD并更新重建列表。
[0024]参考图4,框图400描绘了根据本实施例的数据存储系统102(图1)的ECG 202的HOSD主存储装置206(图2)。主HOSD 206包括非易失性(NV)缓存402,该非易失性(NV)缓存402包括用于存储主HOSD 206的对象数据的本地缓存302和用于存储ECG 202中的其他HOSD204的对象数据的ECG缓存304。
[0025]重建列表404指示了失效HOSD重建的状态。重建处理器406被联接到了NV缓存402和重建列表,并且重建失效HOSD数据以及在重建列表404中更新失效HOSD的重建状态。第一通信接口408将重建处理器406联接到了客户端/应用服务器108以与之通信,第二通信接口410将重建处理器406联接到ECG 202中的其他HOSD 204,以将数据写入HOSD 204或从HOSD204读出数据,和从HOSD 204获取用于存储到ECG缓存304中的本地缓存数据。重建处理器406还经由第二通信接口与HOSD 204进行通信,以检测HOSD 204中的一个何时失效并分配可用的HOSD 204作为替代HOSD。
[0026]参考图5,流程图500描绘了根据本实施例的重建处理器406的优化重建过程502。如果在重建期间接收到504来自客户端/应用服务器108的读取请求或写入请求,则重建处理器406会识别506该读/写请求是否是请求失效的数据。如果重建处理器406识别506该读/写请求不是请求失效的数据,则正常重建处理继续进行直到接收到另一个读/写请求为止504。
[0027]当重建处理器406识别506该读/写请求是请求失效的数据时,优先处理请求数据的重建,以使请求数据被立即重建508,一旦重建508,就将其发送510到客户端/应用服务器108。以这种方式,可通过主HOSD 206进行与客户端/应用服务器108有关的不间断数据服务,即使在ECG 202正在从磁盘故障恢复的时候也如此。如上所述,请求数据可根据ECG缓存304中的对象数据或根据HOSD 204中的数据重建。
[0028]在将请求数据发送510到客户端/应用服务器108之后,然后将它发送512到替代存储装置,该替代存储装置是被重建处理器406指定为替代存储装置的一个HOSD 204。然后,重建处理器406更新514重建列表404以指示替代一个HOSD 204。正常重建处理继续进行直到接收到504另一个读/写请求或处理被完成。当所有重建完成时,重建处理器406会更新重建列表404,以指示数据重建的完成。
[0029]因此,可以看出,即使在从磁盘故障恢复的时候,本实施例也能提供优化的不间断数据服务。此外,它提供了或者根据在ECG内的主混合对象存储装置(HOSD)中的纠删码组(ECG)缓存或者根据ECG中的一个或多个其他HOSD重建故障磁盘的有利方法。虽然在本发明的上述详细描述中已经给出了例示性实施例,但应该意识到会存在大量的变型。
[0030]应该进一步意识到,例示性实施例仅是示例,并且不意指以任何方式限制发明的范围、适用性、操作或配置。相反,上述详细描述将给本领域的技术人员提供用于实施本发明的例示性实施例的方便路线图,应该理解,在不偏离附属权利要求所阐述的本发明的范围的情况下,可以在例示性实施例所描述的元件的功能和配置及操作方法方面制造各种变更。