USPatentGranted
B2

Data copy method and device

Granted 1 Mar 2022 · 8 office actions

Current assignee: Alibaba Group Holding Limited · originally Alibaba Group

Law firm: Law firm · Log in to unlock

Attorney: Attorney · Log in to unlock

Inventors: Li Xu, Yuanyuan Dong, Weibin Yan, Puyuan Yang +1 · Examiner: Kristopher Andersen · AU 2159 · TC 2100

Life of the patent

17 dated events
⤢ drag to zoom20182020202220242026202820302032203420362038ProsecutionOwnershipTerm & fees
ProsecutionOwnershipTerm & feeshover for detail · click to open

Abstract

A data copy method comprises: acquiring, by a destination server, a data block identifier, version information and hole information; transmitting, by the destination server, the data block identifier, the version information and the hole information to a source terminal server so as to enable the source server to find corresponding data according to the data block identifier, the version information and the hole information; receiving, by the destination server, a response message carrying the data transmitted by the source server and copying the data to a hole corresponding to the data block identifier, the version information and the hole according to the response message.

Description

11 parts
›CROSS REFERENCE TO RELATED PATENT APPLICATIONS

This application claims priority to and is a continuation of PCT Patent Application No. PCT/CN2016/079552, filed on Apr. 18, 2016, which claims priority to Chinese Patent Application No. 201510236871.8, filed on May 11, 2015, entitled “Data Copy Method and Device,” which are hereby incorporated by reference in their entirety.

›TECHNICAL FIELD

The present disclosure relates to the field of communications, and, more particularly, to a data copy method and device applicable at a distributed storage system.

›BACKGROUND

In a distributed storage system, data block is stored with multiple copies. Each update of the data block needs consistency among the multiple copies. When there are fewer copies or some of the copies are short of the updated data for a certain version, data copy from other copies needs to be conducted.

Currently, the precondition of data copy under the conventional techniques is that: the source server or the destination server needs to be able to calculate the data increment or difference based on the version of the local data to be copied locally and the version of the data to be copied and maintained by the peer, and to obtain the data increment or difference from the peer.

With respect to the distributed storage system that supports random reading and writing, the conventional techniques push the data from the source server to the destination server. The source server needs to push the existing block data to the destination server, which increases the amount of copied data, especially when the data update speed is greater than the data copy speed, and may also cause that the data copy process cannot be completed during a preset data copy time.

The conventional techniques have the following problems:

With respect to the distributed storage system supporting random access, the conventional techniques have the following problems. The conventional techniques cannot directly calculate the data increment or difference based on the difference between version numbers, and can only conduct a full copy of the data, which increases the data volume to be copied and the copy time.

In addition, during the data copy, when data update is occurring at the source server, the source server sends the new data increment to the destination server or the destinations server requests the new data increment from the source server. When the copied data is updated again, such data needs to be copied again between the source server and destination server, thereby increasing the data volume for copying. In addition, when the data updating speed is faster than the copy speed between the source server and the destination server, the copy may not be completed in real time. To ensure the completion of data copy in real time, the updating speed needs to be reduced according to the copy speed, thereby reducing the data update performance.

›SUMMARY

This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify all key features or essential features of the claimed subject matter, nor is it intended to be used alone as an aid in determining the scope of the claimed subject matter. The term “technique(s) or technical solution(s)” for instance, may refer to apparatus(s), system(s), method(s) and/or computer-readable instructions as permitted by the context above and throughout the present disclosure.

The present disclosure provides a data copy method and device for realizing data copy in a distributed storage system supporting random access.

To achieve the above purpose, the present disclosure provides a data copy method, which includes at least the following steps:

The destination server obtains the data block identification, version information, and hole information.

The destination server sends the data block identification, version information, and hole information to the source server so that the source server may find the corresponding data according to the data block identification, version information, and hole information.

The destination server receives from the source server a response message that carries the data, and copies the data to the hole corresponding to the data block identification, version information, and the hole information according to the response message.

The present disclosure also provides a data update method, which is applicable to a distributed storage system supporting random access that includes source server and destination server.

The source server receives from the destination server the data block identification, version information, and hole information.

When determining that the current version number of the data block corresponding to the data block identification at the source server is larger than or equal to the version information, the source server determines the data corresponding to the data block identification, version information and hole information according to the data block identification, version information and hole information.

The source server sends to the destination server a response message that carries the data, so that the destination server copies the data to the hole corresponding to the data block identification, version information, and the hole information according to the response message.

The response message also includes the current version number of the data block corresponding to the data at the source server so that the destination server, when determining that the current version number of the data block at the destination server is larger than or equal to the current version number of the data block corresponding to the data at the source server, updates the current version number of the data block at the destination server as the latest version number of the data block.

For example, the hole information includes data offset position and data offset length.

Compared with the conventional techniques, the example embodiments of the present disclosure have the following advantageous technical effects:

In the example embodiment of the present disclosure, the destination server obtains the data block identification, version information, and hole information and sends the data block identification, version information, and hole information to the source server so that the source server searches for the corresponding data according to the data block identification, version information, and hole information, The destination server receives a response message, sent by the source server, that carries the data, and copies the data to the hole corresponding to the data block identification, version information, and the hole information according to the response message. Thus, the techniques of the present disclosure only copy data for the hole under the mode of random access, and there is no need to copy full data. The techniques of the present disclosure reduce the data copy volume and data copy time and improve the data copy efficiency.

›BRIEF DESCRIPTION OF THE DRAWINGS

In order to more clearly illustrate the technical solutions in the embodiments or the conventional techniques of the present disclosure, the drawings for illustrating the embodiments are briefly introduced as follows. It is apparent that the FIGs only describe some of the embodiments of the present disclosure. One of ordinary skill in the art may obtain other figures according to the FIGs without using creative efforts.

FIG. 1 is a flowchart of a data copy method according to an example embodiment of the present disclosure;

FIG. 2 is a diagram of integrating overlapping holes according to an example embodiment of the present disclosure;

FIG. 3 is a flowchart of another data copy method according to an example embodiment of the present disclosure;

FIG. 4 is a diagram of a destination server according to an example embodiment of the present disclosure; and

FIG. 5 is a diagram of a source server according to an example embodiment of the present disclosure.

›DETAILED DESCRIPTION · 1 of 6

The technical solutions of the present disclosure will be described by referenced to the FIGs of the example embodiments of the present disclosure. Apparently, the example embodiments described herein represent some of the example embodiments instead of all embodiments of the present disclosure. Any other embodiment obtained by one of ordinary skill in the art without creative efforts based on the example embodiments of the present disclosure shall belong to the protection scope of the present disclosure.

To achieve the above purpose, the present disclosure provides a data copy method, which includes at least the following steps:

The destination server obtains the data block identification, version information, and hole information.

The destination server sends the data block identification, version information, and hole information to the source server so that the source server may find the corresponding data according to the data block identification, version information, and hole information.

The destination server receives from the source server a response message that carries the data, and copies the data to the hole corresponding to the data block identification, version information, and the hole information according to the response message.

The destination server obtains the data block identification, version information, and hole information, which includes:

The destination server obtains a data copy request. The data copy request includes the data block identification, version information, and hole information.

The data copy request also includes a data copy starting version number.

The version information includes a data copy ending version number.

After the destination server obtains the data block identification, version information, and hole information, the method also includes the following operations:

The destination server, after determining that the data copy ending version number of the data block corresponding to the data block identification is larger (or more updated) than the data copy starting version number of the data block corresponding to the data block identification and determining that the data copy starting version number of the data block corresponding to the data block identification is the same as the current version number of the data block corresponding to the data block identification at the destination server, performs the step to send the data block identification, the version information, and the hole information to the source server.

Here, if a first version number is larger than a second version number, it means that the first version number is more updated than the second version number.

The response message includes the current version number of the data block corresponding to the data at the source server.

When the destination server determines that the current version number of the data block at the destination server is larger than or equal to the current version number of the data block corresponding to the data at the source server, updates the current version number of the data block at the destination server as the latest version number of the data block.

After the destination server obtains the data block identification, version information, and hole information, the method also includes the following operations:

The destination server determines the hole to which the data is to be copied according to the data block identification, version information, and hole information, and merges overlapping holes into a new hole after finding another hole corresponding to another data copy request that overlaps the hole.

After copying the data to the hole corresponding to the hole information according to the response message, the method further includes:

The destination server deletes the data block identification, version information, and hole information.

For example, the hole information includes data offset position and data offset length.

The present disclosure also provides a data update method, which is applicable to a distributed storage system supporting random access that includes source server and destination server.

The source server receives from the destination server the data block identification, version information, and hole information.

When determining that the current version number of the data block corresponding to the data block identification at the source server is larger than or equal to the version information, the source server determines the data corresponding to the data block identification, version information and hole information according to the data block identification, version information and hole information.

The source server sends to the destination server a response message that caries the data, so that the destination server copies the data to the hole corresponding to the data block identification, version information, and the hole information according to the response message.

The response message also includes the current version number of the data block corresponding to the data at the source server so that the destination server, when determining that the current version number of the data block at the destination server is larger than or equal to the current version number of the data block corresponding to the data at the source server, updates the current version number of the data block at the destination server as the latest version number of the data block.

For example, the hole information includes data offset position and data offset length.

The present disclosure also provides a destination server, which is applicable to a distributed storage system supporting random access that includes source server and destination server. The destination server includes:

an obtaining module that obtains the data block identification, version information, and hole information; a sending module that sends the data block identification, version information, and hole information to the source server so that the source server searches for the corresponding data according to the data block identification, version information, and hole information; and a copying module that receives from the source server a response message that carries the data, and copies the data to the data block corresponding to the data block identification according to the response message.

›DETAILED DESCRIPTION · 2 of 6

The obtaining module obtains a data copy request. The data copy request includes the data block identification, version information, and hole information.

The data copy request also includes a data copy starting version number.

The version information includes a data copy ending version number.

The sending module further, after determining that the data copy ending version number of the data block corresponding to the data block identification is larger than the data copy starting version number of the data block corresponding to the data block identification and determining that the data copy starting version number of the data block corresponding to the data block identification is the same as the current version number of the data block corresponding to the data block identification at the destination server, sends the data block identification, the version information, and the hole information to the source server.

The response message includes the current version number of the data block corresponding to the data at the source server.

The copying module, when determining that the current version number of the data block at the destination server is larger than or equal to the current version number of the data block corresponding to the data at the source server, updates the current version number of the data block at the destination server as the latest version number of the data block.

The destination server determines the hole to which the data is to be copied according to the data block identification, version information, and hole information, and merges overlapping holes into a new hole after finding another hole corresponding to another data copy request that overlaps the hole.

The destination server further deletes the data block identification, version information, and hole information.

For example, the hole information includes data offset position and data offset length.

The present disclosure also provides a source server, which is applicable to a distributed storage system supporting random access that includes source server and destination server. The source server includes:

a receiving module that receives from the destination server the data block identification, version information, and hole information; an obtaining module, when determining that the current version number of the data block corresponding to the data block identification at the source server is larger than or equal to the version information, obtains the data corresponding to the data block identification, version information and hole information according to the data block identification, version information and hole information; and a sending module that sends to the destination server a response message that carries the data, so that the destination server copies the data to the hole corresponding to the data block identification, version information, and the hole information according to the response message.

The response message also includes the current version number of the data block corresponding to the data at the source server so that the destination server, when determining that the current version number of the data block at the destination server is larger than or equal to the current version number of the data block corresponding to the data at the source server, updates the current version number of the data block at the destination server as the latest version number of the data block.

For example, the hole information includes data offset position and data offset length.

In an example embodiment of the present disclosure, the data difference of the data block to be copied between the destination server and the source server is regarded as hole at the destination server, and index information of the holes is established. The hole information includes a data block offset position and a data block length. The index information includes the hole information and the version information. The index information includes the hole information and the version information. The destination server, according to the hole index information of the hole, reads the corresponding data from the source server and writes the corresponding data into the corresponding hole position at the local data block, and then clear the hole index information corresponding to the copied data. The destination server reads the data to be copied corresponding to all holes from the source server and writes them into the local data blocks, thereby completing the data copy process. During the data copy process, the data update operation, if any, is sent to the source server and the destination server simultaneously Δt the destination server, the update data that is more updated covers the hole whose current data version is lower than the update data, thereby reducing hole data volume and the data needs to be copied.

The techniques of the present disclosure establish the index information of the holes and only copy data corresponding to the hole information. After the data copy is completed for the hole information, the next update to the data block corresponding to the hole needs not be copied from the source server. The destination server may receive the data update operation the same time as the source server. Thus, the data volume of the data to be copied is reduced.

In addition, during the data copy process, the new data update request is sent to the source server and the destination server simultaneously. The update data with more updated version is coped to the hole whose data is at lower version. Thus, the hole data volume is reduced and the data needs to be copied is also reduced.

Further, the techniques of the present disclosure support data increment copy in the distributed storage system supporting random access and only copy the data increment.

An example data copy process is as follows:

1. A data copy initiation terminal sends a data copy imitation request to a destination server. The data copy imitation request includes a data block identification, a data copy starting version number, a data block current version number, a hole list, a destination server address. The hole list corresponds to all data difference of a data block from the data copy starting version number to the data block current version number. If the whole data block needs to be copied, the hole list is a list of hole that includes whose data block offset position is 0 and the data block length is the whole block length. The source server address includes a server address of a server that stores the current effective data copy of the data block. 2. The destination server receives the data copy imitation request and verifies that the data copy initiation request is valid, and establishes the hole index for the data block to be copied. The destination server then responds to the data copy initiation request. An example verification is to determine that the version of the data block stored at the destination server is the same as the data copy starting version number, and the current version number in the data copy request is larger or more updated than the data copy starting version number. If the destination server does not have the information of the data block, the hole in the data copy request includes the whole data block. 3. The destination server, according to the hole index information, sends a data copy request corresponding to the hole to the source server. The data copy request includes the data block identification, the data block offset position and length of the hole, and the version of the hole. 4. The source server, after receiving the data copy request sent by the destination server, verifies that the current version of the data block at the source server is larger than or equal to (which means at least as latest as) the version number corresponding to the hole in the data copy request, and then reads the corresponding data and sends a successful response message to the data copy request. If the source server cannot verify that the current version of the data block at the source server is larger than or equal to (which means at least as latest as) the version number corresponding to the hole in the data copy request, sends a failure response message corresponding to the data copy request. The successful response message includes the data block identification, the data offset position and length of the hole, the version number of the hole, the corresponding data, and the current version of the data block stored at the source server. 5. The destination server, after receiving the successful response message, writes the data corresponding to the hole into the local data block, deletes the corresponding index information of the hole, and saves the current version of the data block at the source server. If the source server still has index information of the hole, the operations at the above 3 are repeated. If all index information of holes for the data block are retrieved, the next step is performed. 6. The destination server determines that the current version number of the data block is larger than or equal to the current latest version of the data block at the source server, and updates the version number of the data block at the destination server as the latest version number of the data block.

›DETAILED DESCRIPTION · 3 of 6

The present disclosure also provides a method for updating data during the data copy process. The data update request includes the data block identification, data offset position of the data update, length of the data update, version number of the data update. During the data copy process, the data update request is sent to both the source server and the destination server simultaneously. The present disclosure does not limit the data update operation at the source server. During the data copy process, the example processing of the data update request by the destination server is as follows:

If the version number in the data update request is larger than the version number in the hole index information and there is an overlapping between the data interval in the data update request and the interval of the hole index information, the hole space with lower version number will be covered. The covered hole interval is deleted from the hole index information. The data update is directly written into the interval corresponding to the local data block. In some other scenario, the data update is merged with the data retrieved by the ongoing overlapping data. copy request and is then written into the interval corresponding to the data block.

FIG. 1 is a flowchart of a data copy method according to a first example embodiment of the present disclosure, which is applicable to a distributed storage system supporting random access including both a source server and a destination server. The following describes the data copy method from the perspective of the destination server.

The method includes the following operations:

S 102 , the destination server obtains the data block identification, version information, and hole information.

When initiating the data copy, the destination server obtains a data copy request initiated by a terminal for data copy initiation. The data copy request includes the data block identification, version information, hole information, and data block copy initiation version number. The version information includes the data copy ending version number.

After obtains the data block identification, version information, and hole information, the destination server determines whether the data copy ending version number of the data. block corresponding to the data block identification is larger than the data copy starting version number of the data block corresponding to the data block identification and whether the data copy starting version number of the data block corresponding to the data block identification is the same as the current version number of the data block corresponding to the data block identification at the destination server. It should be noted that, if the destination server does not have the information corresponding to the data block identification, the destination server is determined not to have the data block corresponding to the data block identification and the data block is copied in its entirety.

If a result of the determination is positive, the data block identification, the version number, and the hole information are valid and the following steps continue to be performed.

If a result of the determination is negative, the data block identification, the version number, and the hole information are invalid and will not be processes, or will be deleted.

Further, the hole information includes the data offset position and the data offset length. The destination server determines the hole to which the data is to be copied according to the data block identification, version information, and hole information, and merges overlapping holes into a new hole after finding another hole corresponding to another data copy request that overlaps the hole.

After obtaining the data copy request, the destination server determines the hole to which the data is to be copied according to the data block identification, version information, and hole information included in the data copy request. The destination server inquires whether there is a data copy request overlapping with the hole. That is, the destination server inquires whether there is another data copy request whose data block identification is the same as that in the data copy request, whose version number is smaller than the version number in the data copy request, and whose hole information's data offset position and data offset length overlaps with those of the hoe information in the data copy request. If there exists, the overlapping holes are integrated into one hole. That is, the overlapping data blocks with data block identifications that are identical, version information, and hole information are merged into one hole with the same data block identification, version information, and hold information. It should be noted that the version information of the merged hole is the version number corresponding to the version information of the latest data copy request.

For example, as shown in FIG. 2 , the overlapping holes are merged into one hole, which includes: partial coverage 202 , intermediate coverage 204 , and full coverage 206 . The hole to which the data is to be copied may be determined according to the data offset position and data. offset length. When the destination server obtains a hole V 2 determined according to the data block identification 1 , version information 16 , and the corresponding hole information, and finds that there is a hole V 1 determined according to the data block identification 1 , version information, and corresponding hole information, and V 2 and V 1 overlap, V 2 and V 1 are integrated into one hole. The hole information corresponding to the merged hole is updated to the hole information corresponding to the hole V 2 . That is, the merged hole is updated to the hole requested in the newly received data copy request.

Specially, as shown in FIG. 2 , as the hole corresponding to version information 16 is newer than the hole corresponding to version information 13 , V 2 and V 1 are merged into one hole, i.e., V 2 intersects V 1 , which includes the three merger methods as shown in FIG. 2 .

›DETAILED DESCRIPTION · 4 of 6

S 104 , the destination server sends the data block identification, version information, and hole information to the source server so that the source server searches for the corresponding data according to the data block identification, version information, and hole information.

After the destination server sends to the source server the data block identification, version information, and hole information, the source server searches for data corresponding to the hole information under the version corresponding to the version information of the data block corresponding to the data black identification according to the data block identification, version information, and hole information.

S 106 , the destination server receives a response message, sent by a source server, that carries the data, and copies the data to the hole corresponding to the data block identification, version information, and the hole information according to the response message.

The destination server receives from the source server the response message that carries the data. The response message includes the data block identification, version information, hole information, and data. The destination server copies the data to the hole corresponding to the hole information according to the data block identification, version information, and hole information.

After the data is copied to the hole corresponding to the hole information according to the response message, the destination server deletes the data block identification, version information, and hole information.

The response message also includes the current version number of the data block corresponding to the data at the source server. The destination server, when determining that the current version number of the data block at the destination server is larger than or equal to the current version number of the data block corresponding to the data at the source server, updates the current version number of the data block at the destination server as the latest version number of the data block.

For example, the response message also includes the current version number of the data. block corresponding to the data at the source server. For example, if the current version number of the data block corresponding to the data at the source server is 17 and the current version number of the data block corresponding to the data at the destination server is 18, then the version number of the data block is 18 and this data copy process is completed. If the current version number of the data block corresponding to the data at the destination server is 16, after the data copy request is received and the request is determined to be valid, the data block identification, version information, and hole information included in the data copy request needs to be sent to the source server.

In the example embodiment of the present disclosure, the destination server obtains the data block identification, version information, and hole information and sends the data block identification, version information, and hole information to the source server so that the source server searches for the corresponding data according to the data block identification, version information, and hole information. The destination server receives a response message, sent by the source server, that carries the data, and copies the data to the hole corresponding to the data block identification, version information, and the hole information according to the response message. Thus, the techniques of the present disclosure only copy data for the hole under the mode of random access, and there is no need to copy full data. The techniques of the present disclosure reduce the data copy volume and data copy time and improve the data copy efficiency.

FIG. 3 is a flowchart of another data copy method according to a second example embodiment of the present disclosure, which is applicable to a distributed storage system supporting random access including both a source server and a destination server. The following describes the data copy method from the perspective of the source server.

The method includes the following steps:

S 302 , the source server receives the data block identifier, version information, and hole information that are sent by the destination server.

For example, the hole information includes data offset position and data offset length.

S 304 , when determining that the current version number of the data block corresponding to the data block identification at the source server is larger than or equal to the version information, the source server determines the data corresponding to the data block identification, version information and hole information according to the data block identification, version information and hole information.

The source server determines whether the current version number of the data block corresponding to the data block identification at the source server is larger than or equal to the version information. If a result of determination is positive, the source server searches for the data corresponding to the data block identification, version information, and hole information, and carries the data in the response message to be sent to the destination server. If a result of determination is negative, there is no data to be copied at the source server and a failure response message is sent to the destination server.

The response message also includes the current version number of the data block corresponding to the data at the source server. The destination server, when determining that the current version number of the data block at the destination server is larger than or equal to the current version number of the data block corresponding to the data at the source server, updates the current version number of the data block at the destination server as the latest version number of the data block.

In the example embodiment of the present disclosure, the destination server obtains the data block identification, version information, and hole information and sends the data block identification, version information, and hole information to the source server so that the source server searches for the corresponding data according to the data block identification, version information, and hole information. The destination server receives a response message, sent by the source server, that carries the data, and copies the data to the hole corresponding to the data block identification, version information, and the hole information according to the response message. Thus, the techniques of the present disclosure only copy data for the hole under the mode of random access, and there is no need to copy full data. The techniques of the present disclosure reduce the data copy volume and data copy time and improve the data copy efficiency.

›DETAILED DESCRIPTION · 5 of 6

Based on the same principles in the first example embodiment, the present disclosure also provides a destination server according to a third example embodiment of the present disclosure, which is applicable to a distributed storage system supporting random access that includes source server and destination server. As shown in FIG. 4 , a destination server 400 includes one or more processor(s) 402 or data processing unit(s) and memory 404 . The destination server 400 may further include one or more input/output interface(s) 406 and one or more network interface(s) 408 . The memory 404 is an example of computer readable media.

The computer readable media include non-volatile and volatile media as well as movable and non-movable media, and can implement information storage by means of any method or technology. Information may be a computer readable instruction, a data structure, and a module of a program or other data. A storage medium of a computer includes, for example, but is not limited to, a phase change memory (PRAM), a static random access memory (SRAM), a dynamic random access memory (DRAM), other types of RAMs, a ROM, an electrically erasable programmable read-only memory (EEPROM), a flash memory or other memory technologies, a compact disk read-only memory (CD-ROM), a digital versatile disc (DVD) or other optical storages, a cassette tape, a magnetic tape/magnetic disk storage or other magnetic storage devices, or any other non-transmission media, and can be used to store information accessible to the computing device. According to the definition herein, the computer readable media do not include transitory media, such as modulated data signals and carriers.

The memory 404 may store therein a plurality of modules or units including:

an obtaining module 410 that obtains the data block identification, version information, and hole information; a sending module 412 that sends the data block identification, version information, and hole information to the source server so that the source server searches for the corresponding data according to the data block identification, version information, and hole information; and a copying module 414 that receives from the source server a response message that carries the data, and copies the data to the data block corresponding to the data block identification according to the response message.

The obtaining module 410 obtains a data copy request. The data copy request includes the data block identification, version information

The data copy request also includes a data copy starting version number.

For example, the version information includes a data copy ending version number.

The sending module 412 further, after determining that the data copy ending version number of the data block corresponding to the data block identification is larger than the data. copy starting version number of the data block corresponding to the data block identification and determining that the data copy starling version number of the data block corresponding to the data block identification is the same as the current version number of the data block corresponding to the data block identification at the destination server, sends the data block identification, the version information, and the hole information to the source server.

The response message also includes the current version number of the data block corresponding to the data at the source server.

The copying module 414 , when determining that the current version number of the data block at the destination server is larger than or equal to the current version number of the data. block corresponding to the data at the source server, updates the current version number of the data block at the destination server as the latest version number of the data block.

The obtaining module 410 further determines the hole to which the data is to be copied according to the data block identification, version information, and hole information, and merges overlapping holes into a new hole after finding another hole corresponding to another data copy request that overlaps the hole.

The copying module 414 further deletes the data block identification, version information, and hole information.

For example, the hole information includes data offset position and data offset length.

In the example embodiment of the present disclosure, the destination server obtains the data block identification, version information, and hole information and sends the data block identification, version information, and hole information to the source server so that the source server searches for the corresponding data according to the data block identification, version information, and hole information. The destination server receives a response message, sent by the source server, that carries the data, and copies the data to the hole corresponding to the data block identification, version information, and the hole information according to the response message. Thus, the techniques of the present disclosure only copy data for the hole under the mode of random access, and there is no need to copy full data. The techniques of the present disclosure reduce the data copy volume and data copy time and improve the data copy efficiency.

Based on the same principles in the second example embodiment, the present disclosure also provides a destination server according to a third example embodiment of the present disclosure, which is applicable to a distributed storage system supporting random access that includes source server and destination server. As shown in FIG. 5 , a source server 500 includes one or more processor(s) 502 or data processing unit(s) and memory 504 . The source server 500 may further include one or more input/output interface(s) 506 and one or more network interface(s) 508 . The memory 504 is an example of computer readable media.

The memory 504 may store therein a plurality of modules or units including:

a receiving module 510 that receives from the destination server the data block identification, version information, and hole information; an obtaining module 512 , when determining that the current version number of the data block corresponding to the data block identification at the source server is larger than or equal to the version information, obtains the data corresponding to the data block identification, version information and hole information according to the data block identification, version information and hole information. a sending module 514 that sends to the destination server a response message that carries the data, so that the destination server copies the data to the hole corresponding to the data block identification, version information, and the hole information according to the response message.

›DETAILED DESCRIPTION · 6 of 6

The response message also includes the current version number of the data block corresponding to the data at the source server so that the source server, when determining that the current version number of the data block at the destination server is larger than or equal to the current version number of the data block corresponding to the data at the source server, updates the current version number of the data block at the destination server as the latest version number of the data block. For example, the hole information includes data offset position and data offset length.

In the example embodiment of the present disclosure, the destination server obtains the data block identification, version information, and hole information and sends the data block identification, version information, and hole information to the source server so that the source server searches for the corresponding data according to the data block identification, version information, and hole information. The destination server receives a response message, sent by the source server, that carries the data, and copies the data to the hole corresponding to the data block identification, version information, and the hole information according to the response message. Thus, the techniques of the present disclosure only copy data for the hole under the mode of random access, and there is no need to copy full data. The techniques of the present disclosure reduce the data copy volume and data copy time and improve the data copy efficiency.

Based on the description of the above embodiments, it will be apparent to one of ordinary skill in the art that the present disclosure may be implemented by hardware, or by means of software plus the necessary general hardware platform. Based on this understanding, the technical solution of the present disclosure may be embodied in the form of a software product which may be stored in a nonvolatile storage medium (which may be a CD-ROM, a U disk, a mobile hard disk, etc.) which store computer-readable instructions that enable a computing device (such as a personal computer, a server, or a network device) to perform the methods described in the various implementation scenarios of the present disclosure.

It will be understood by one of ordinary skill in the art that the drawings are merely schematic diagrams of example embodiments and that the modules or processes in the drawings are not necessary to implement the present disclosure.

One of ordinary skill in the art will appreciate that the modules in the apparatus in the implementation scenario may be located at the apparatus distributed in the implementation scenario in accordance with the implementation scenario description, or may be modified correspondingly in one or more apparatuses different from the present implementation. The modules of the above scenario may be merged into one module, or further split into multiple sub-modules.

The above-mentioned serial numbers of the present disclosure are for the sake of description only and do not represent the merits of the implementation scenario.

The above descriptions are merely some example embodiments of the present disclosure. However, the present disclosure is not limited by the embodiments described herein. Any other changes that occur to one of ordinary skill in the art falls within the scope of the present disclosure.

Claims

20 · 3 independent · depth 6
1234567891011121314151617181920
20 granted claims

Classifications

11 codes
IPC · International Patent Classification
Section G — Physics
  • G06F16/182
  • G06F3/06
  • G06F16/27
  • G06F16/951
  • G06F16/20
  • G06F16/23
  • G06F16/90
  • G06F16/10
Section H — Electricity
  • H04L67/1095
  • H04L65/40
  • H04L67/1097

Claim changes

Soon
Coming soonHow the claims changed between publication and grant

See which claims were amended, added or cancelled during examination, with every added and removed word marked.

AmendedAddedCancelledUnchanged

The published claims of this patent are not paired with the granted ones in what we hold.

File wrapper

⤢ drag to zoomJan 2018Jul 2018Jan 2019Jul 2019Jan 2020Jul 2020Jan 2021Jul 2021Jan 2022USPTOApplicantNon-final rejectionFinal rejectionNon-final rejectionFinal rejectionRequest for continued examination
USPTOApplicanthover for detail · click to open
Pendency
4.3 y
1,572 days filing → grant
Office actions
4
non-final + final
Responses
3
2 RCE
Interviews
2
examiner interview summaries
Examiner
Kristopher Andersen
art unit 2159 · TC 2100
Citations: 23 back · 0 forward

See the full prosecution history — every USPTO and applicant action on this file, in order.

Log in to unlock

Chain of title

⤢ drag to zoom2020202220242026202820302032203420362038Owner 1
Titlehover for detail · click to open

See the full assignment history — every owner this patent has passed through, with recordation dates and reel/frame numbers.

Log in to unlock

Term & fees

See the term timeline — pendency span, in-force span, the maintenance fees paid and both computed expiry dates.

Log in to unlock

Priority chain

1 priority documents
›Priority documents — 1
TypeDocumentDate
related publicationUS 20180089297 A129 Mar 2018

Worldwide family

10 members · 5 offices
US2EP3JP2CN2WO1
this patentIP5 & PCTother officessolid = grantedhover for detail · click to open
Members
10
DOCDB simple family 57247732
Offices
5
US · EP · JP · CN · WO
Granted
4 of 10
grant date present
Non-English titles
5
shown as filed, never translated
›IP5 & PCT — 10 members
OfficePublicationKindPublishedFiledStatusTitle
USUS-2018089297-A1A129 Mar 201810 Nov 2017publishedData Copy Method and Device
USthis patentUS-11263231-B2B21 Mar 202210 Nov 2017grantedData copy method and device
EPEP-3297250-A1A121 Mar 201818 Apr 2016publishedProcédé et dispositif de copie de donnéesfr
EPEP-3297250-A4A43 Oct 201818 Apr 2016publishedDatenkopierverfahren und -vorrichtungde
EPEP-3297250-B1B15 Aug 202018 Apr 2016grantedData copy method and device
JPJP-2018515850-AA14 Jun 201818 Apr 2016publishedデータ・コピー方法及びデバイスja
JPJP-6700308-B2B227 May 202018 Apr 2016grantedデータ・コピー方法及びデバイスja
CNCN-106302559-AA4 Jan 201711 May 2015publishedA kind of data copy method and equipment
CNCN-106302559-BB5 Jul 201911 May 2015grantedA kind of data copy method and equipment
WOWO-2016180168-A1A117 Nov 201618 Apr 2016publishedProcédé et dispositif de copie de donnéesfr

Validity challenges

See the validity challenges on record — reexaminations, IPRs and PGRs, with their institution decisions and outcomes.

Log in to unlock

Citations

See every patent this one cites and every patent that cites it back — publication, assignee, and how each one was found.

Log in to unlock