IP Library Granted Patent US 11,687,416
Granted Patent B2
US 11,687,416 · App. 17/486,885 · Granted Jun 27, 2023

Data backup optimization

Inventors: Ramesh Kumble (Ashburn, VA); Pramod Belsare (Pune, IN); Satish Lodam (Pune, IN)
Assignee: Kyndryl, Inc.
G06F11/1464G06F11/1435G06F11/1451G06F11/1453G06F11/1469
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,687,416
App. No.
17/486,885
Granted
Jun 27, 2023
Kind
B2
Abstract

At least one data file for backup can be received. The data file can be divided into a plurality of data blocks. A first portion of the plurality of data blocks can be allocated to a first data processing system for backup by the first data processing system. A second portion of the plurality of data blocks can be allocated to a second data processing system for backup by the second data processing system.

Claims (79)

1. A method, comprising:

receiving at least one data file for backup;

dividing, using a processor, the data file into a plurality of data blocks;

allocating a first portion of the plurality of data blocks to a first data processing system for backup by the first data processing system;

allocating a second portion of the plurality of data blocks to a second data processing system for backup by the second data processing system;

computing, by the first data processing system, a first hash value for a first data block of the plurality of data blocks;

determining whether the first hash value for the first data block matches a first hash value for a second data block stored in a data repository; and

responsive to determining that the first hash value for the first data block matches the first hash value for the second data block:

computing, by a third data processing system, a second hash value for the first data block;

determining whether the second hash value for the first data block matches a second hash value for the second data block; and

responsive to determining that the second hash value for the first data block matches the second hash value for the second data block, linking the data file to the second data block.

2. The method of claim 1 , wherein:

the computing the first hash value for the first data block comprises computing the first hash value using a first hash algorithm; and

the computing the second hash value for the first data block comprises computing the second hash value using a second hash algorithm that is different than the first hash algorithm.

3. A system, comprising:

a processor programmed to initiate executable operations comprising:

receiving at least one data file for backup;

dividing the data file into a plurality of data blocks;

allocating a first portion of the plurality of data blocks to a first data processing system for backup by the first data processing system;

allocating a second portion of the plurality of data blocks to a second data processing system for backup by the second data processing system;

computing, by the first data processing system, a first hash value for a first data block of the plurality of data blocks;

determining whether the first hash value for the first data block matches a first hash value for a second data block stored in a data repository; and

responsive to determining that the first hash value for the first data block matches the first hash value for the second data block:

computing, by a third data processing system, a second hash value for the first data block;

determining whether the second hash value for the first data block matches a second hash value for the second data block; and

responsive to determining that the second hash value for the first data block matches the second hash value for the second data block, linking the data file to the second data block.

4. The system of claim 3 , wherein:

the computing the first hash value for the first data block comprises computing the first hash value using a first hash algorithm; and

the computing the second hash value for the first data block comprises computing the second hash value using a second hash algorithm that is different than the first hash algorithm.

5. A computer program product, comprising:

one or more computer readable storage mediums having program code stored thereon, the program code stored on the one or more computer readable storage mediums collectively executable by a data processing system to initiate operations including:

receiving at least one data file for backup;

dividing the data file into a plurality of data blocks;

allocating a first portion of the plurality of data blocks to a first data processing system for backup by the first data processing system;

allocating a second portion of the plurality of data blocks to a second data processing system for backup by the second data processing system

computing, by the first data processing system, a first hash value for a first data block of the plurality of data blocks;

determining whether the first hash value for the first data block matches a first hash value for a second data block stored in a data repository; and

responsive to determining that the first hash value for the first data block matches the first hash value for the second data block:

computing, by a third data processing system, a second hash value for the first data block;

determining whether the second hash value for the first data block matches a second hash value for the second data block; and

responsive to determining that the second hash value for the first data block matches the second hash value for the second data block, linking the data file to the second data block.

6. The computer program product of claim 5 , wherein:

the computing the first hash value for the first data block comprises computing the first hash value using a first hash algorithm; and

the computing the second hash value for the first data block comprises computing the second hash value using a second hash algorithm that is different than the first hash algorithm.

7. A method comprising:

receiving at least one data file for backup;

dividing, using a processor, the data file into a plurality of data blocks;

computing a first hash value for a first data block of the plurality of data blocks; and

based on the first hash value for the first data block, mapping the first data block to a respective storage location using a nested directory structure, mapping the first data block to the respective storage location using the nested directory structure comprising:

for a first of a plurality of segments of the first hash value, creating, in a storage location, a parent directory for the nested directory structure; and

recursively, for each successive segment of the plurality of segments of the first hash value, creating a respective directory within a directory created for an immediately preceding segment of the plurality of segments.

8. The method of claim 7 , further comprising:

wherein the parent directory through a penultimate directory, in the nested directory structure, that is assigned to a segment of the first hash value each are assigned a respective name that is a value of a grand total determined for a respective sequence of characters contained in the respective segment for which the directory is created.

9. The method of claim 7 , further comprising:

responsive to determining a collision between the first data block and another preexisting data block, adding to the nested directory structure a collision directory as a penultimate directory in the nested directory structure.

10. A system comprising:

a processor programmed to initiate executable operations comprising:

receiving at least one data file for backup;

dividing, using a processor, the data file into a plurality of data blocks;

computing a first hash value for a first data block of the plurality of data blocks; and

based on the first hash value for the first data block, mapping the first data block to a respective storage location using a nested directory structure, mapping the first data block to the respective storage location using the nested directory structure comprising:

for a first of a plurality of segments of the first hash value, creating, in a storage location, a parent directory for the nested directory structure; and

recursively, for each successive segment of the plurality of segments of the first hash value, creating a respective directory within a directory created for an immediately preceding segment of the plurality of segments.

11. The system of claim 10 , the executable operations further comprising:

wherein the parent directory through a penultimate directory, in the nested directory structure, that is assigned to a segment of the first hash value each are assigned a respective name that is a value of a grand total determined for a respective sequence of characters contained in the respective segment for which the directory is created.

12. The system of claim 10 , the executable operations further comprising:

responsive to determining a collision between the first data block and another preexisting data block, adding to the nested directory structure a collision directory as a penultimate directory in the nested directory structure.

13. A computer program product comprising:

one or more computer readable storage mediums having program code stored thereon, the program code stored on the one or more computer readable storage mediums collectively executable by a data processing system to initiate operations including:

receiving at least one data file for backup;

dividing, using a processor, the data file into a plurality of data blocks;

computing a first hash value for a first data block of the plurality of data blocks; and

based on the first hash value for the first data block, mapping the first data block to a respective storage location using a nested directory structure, mapping the first data block to the respective storage location using the nested directory structure comprising:

for a first of a plurality of segments of the first hash value, creating, in a storage location, a parent directory for the nested directory structure; and

recursively, for each successive segment of the plurality of segments of the first hash value, creating a respective directory within a directory created for an immediately preceding segment of the plurality of segments.

14. The computer program product of claim 13 , wherein the program code is executable by the data processing system to initiate operations further comprising:

wherein the parent directory through a penultimate directory, in the nested directory structure, that is assigned to a segment of the first hash value each are assigned a respective name that is a value of a grand total determined for a respective sequence of characters contained in the respective segment for which the directory is created.

15. The computer program product of claim 13 , wherein the program code is executable by the data processing system to initiate operations further comprising:

responsive to determining a collision between the first data block and another preexisting data block, adding to the nested directory structure a collision directory as a penultimate directory in the nested directory structure.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 18, 2021
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: KYNDRYL, INC.
Reel/Frame 058213/0912 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 27, 2021
From: KUMBLE, RAMESH; BELSARE, PRAMOD; LODAM, SATISH
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 057615/0939 →