# US 2017/0285994 A1 · Maintenance of cloned computer data

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2017/0285994 A1
- Document ID: US20170285994A1
- Status: Published application
- Kind: A1
- Application number: 15/627,798
- Filed: 2017-06-20
- Published: 2017-10-05
- Earliest claimed: 2014-11-18
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Blaine H. Dolph; Dean Hildebrand; Sandeep R. Patil; Riyazahamad M. Shiraguppi
- Web page: https://patentgrep.com/patent/US20170285994A1

## CPC

- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/064: {Management of blocks}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0683: {Plurality of storage devices}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method and associated systems for efficient management of cloned data. One or more processors create a “child” clone of a “parent” software image. The child and parent contain identical information organized into identical sets of file blocks. To conserve storage, each child block initially points to a physical storage location already in use by a corresponding parent block, rather than requiring additional storage of its own. The first time a child block is updated, however, it will require additional physical storage. At the time of the child's creation, the processors reserve a number of physical blocks sufficient to store the contents of all child file blocks likely to be updated. A child file block is identified as likely to be updated by analyzing past volatility of a corresponding file block of the parent or of corresponding file blocks of other children of the same parent.

## Claims

### Claim 1

A method for maintenance of cloned computer data, the method comprising:
one or more processors of a computer system receiving a request to update a first data element of a first child clone,
where the first child clone is a cloned copy of a parent clone,
where the parent clone is a cloned copy of a source software image,
where information comprised by the first child clone is organized into a set of child file blocks and information comprised by the parent clone is organized into a set of parent file blocks,
where a first child file block of the set of child file blocks identifies the first data element and further identifies that the first data element is stored in a first block of physical storage of a set of physical blocks, and
where a first parent file block of the set of parent file blocks identifies a second data element that is not distinct from the first data element and that is stored in a second block of physical storage of the set of physical blocks that is not distinct from the first block of physical storage;
the one or more processors identifying a first preallocated block of physical storage of the set of physical blocks that is large enough to store the updated first data element;
the one or more processors storing the updated first data element in the first preallocated block of physical storage; and
the one or more processors updating the first child file block to identify that the updated first data element is stored in the first preallocated block of physical storage.

### Claim 2 (depends on 1)

The method of claim 1, where all information comprised by the parent clone is read-only data.

### Claim 3 (depends on 1)

The method of claim 1,
where a preallocated area of physical storage comprises a set of reserved blocks of the set of physical blocks,
where the set of reserved blocks comprises the first preallocated block of physical storage, and
where the set of reserved blocks was selected by the one or more processors at a time concurrent with a time of creation of the first child clone.

### Claim 4 (depends on 3)

The method of claim 3, where the one or more processors added the first preallocated block of physical storage to the set of reserved blocks in response to a determination that the first data element is likely to updated after the time of creation of the first child clone.

### Claim 5 (depends on 4)

The method of claim 4,
where the one or more processors determine that the first data element is likely to be updated by identifying that a frequency at which the first parent file block was updated in the past exceeds a predefined volatility threshold value.

### Claim 6 (depends on 4)

The method of claim 4,
where information comprised by the source software image is organized into a set of source file blocks, and
where each source file block of the set of source file blocks is identical to a corresponding parent file block of the set of parent file blocks.

### Claim 7 (depends on 6)

The method of claim 6,
where a first source file block of the set of source file blocks is identical to the first parent file block, and
where the one or more processors determine that the first data element is likely to be updated by identifying that a frequency at which the first source file block was updated prior to the time of creation of the first child clone exceeds a predefined volatility threshold value.

### Claim 8 (depends on 4)

The method of claim 4, further comprising
the one or more processors creating a set of additional child clones of the parent clone,
where each additional child of the set of additional child clones contains information that is identical to that of the parent clone,
where each additional child is organized into a set of additional child file blocks that is identical to the set of parent file blocks,
where each additional child comprises a distinct first additional child file block of the set of additional child file blocks that is identical to the first parent file block,
where each distinct first additional child file block identifies the second data element and further identifies that the second data element is stored in the second block of physical storage, and
where the one or more processors determine that the first data element is likely to be updated by identifying that a frequency at which one or more of the distinct first additional child file blocks was updated, prior to the time of creation of the first child clone, exceeds a predefined volatility threshold value.

### Claim 9 (depends on 1)

The method of claim 1, where the preallocated area of physical storage is a contiguous area of physical storage of a storage device.

### Claim 10 (depends on 1)

The method of claim 1, where the preallocated area of physical storage is entirely stored on a single volume of a storage device.

### Claim 11 (depends on 1)

The method of claim 1, further comprising providing at least one support service for at least one of creating, integrating, hosting, maintaining, and deploying computer-readable program code in the computer system, where the computer-readable program code in combination with the computer system is configured to implement the receiving, the identifying, the storing, and the updating.

### Claim 12

A computer program product, comprising a computer-readable hardware storage device having a computer-readable program code stored therein, said program code configured to be executed by one or more processors of a computer system to implement a method for allocating storage for cloned data, the method for maintenance of cloned computer data, the method comprising:
one or more processors of a computer system receiving a request to update a first data element of a first child clone,
where the first child clone is a cloned copy of a parent clone,
where the parent clone is a cloned copy of a source software image,
where information comprised by the first child clone is organized into a set of child file blocks and information comprised by the parent clone is organized into a set of parent file blocks,
where a first child file block of the set of child file blocks identifies the first data element and further identifies that the first data element is stored in a first block of physical storage of a set of physical blocks, and
where a first parent file block of the set of parent file blocks identifies a second data element that is not distinct from the first data element and that is stored in a second block of physical storage of the set of physical blocks that is not distinct from the first block of physical storage;
the one or more processors identifying a first preallocated block of physical storage of the set of physical blocks that is large enough to store the updated first data element;
the one or more processors storing the updated first data element in the first preallocated block of physical storage; and
the one or more processors updating the first child file block to identify that the updated first data element is stored in the first preallocated block of physical storage.

### Claim 13 (depends on 12)

The computer program product of claim 12,
where a preallocated area of physical storage comprises a set of reserved blocks of the set of physical blocks,
where the set of reserved blocks comprises the first preallocated block of physical storage, and
where the set of reserved blocks was selected by the one or more processors at a time concurrent with a time of creation of the first child clone.

### Claim 14 (depends on 13)

The computer program product of claim 13, where the one or more processors added the first preallocated block of physical storage to the set of reserved blocks in response to a determination that the first data element is likely to updated after the time of creation of the first child clone.

### Claim 15 (depends on 14)

The computer program product of claim 14,
where the one or more processors determine that the first data element is likely to be updated by identifying that a frequency at which the first parent file block was updated in the past exceeds a predefined volatility threshold value.

### Claim 16 (depends on 14)

The computer program product of claim 14,
where information comprised by the source software image is organized into a set of source file blocks,
where each source file block of the set of source file blocks is identical to a corresponding parent file block of the set of parent file blocks,
where a first source file block of the set of source file blocks is identical to the first parent file block, and
where the one or more processors determine that the first data element is likely to be updated by identifying that a frequency at which the first source file block was updated prior to the time of creation of the first child clone exceeds a predefined volatility threshold value.

### Claim 17

A computer system comprising a processor, a memory coupled to said processor, and a computer-readable hardware storage device coupled to said processor, said storage device containing program code configured to be run by said processor via the memory to implement a method for allocating storage for cloned data, the method for maintenance of cloned computer data, the method comprising:
one or more processors of a computer system receiving a request to update a first data element of a first child clone,
where the first child clone is a cloned copy of a parent clone,
where the parent clone is a cloned copy of a source software image,
where information comprised by the first child clone is organized into a set of child file blocks and information comprised by the parent clone is organized into a set of parent file blocks,
where a first child file block of the set of child file blocks identifies the first data element and further identifies that the first data element is stored in a first block of physical storage of a set of physical blocks, and
where a first parent file block of the set of parent file blocks identifies a second data element that is not distinct from the first data element and that is stored in a second block of physical storage of the set of physical blocks that is not distinct from the first block of physical storage;
the one or more processors identifying a first preallocated block of physical storage of the set of physical blocks that is large enough to store the updated first data element;
the one or more processors storing the updated first data element in the first preallocated block of physical storage; and
the one or more processors updating the first child file block to identify that the updated first data element is stored in the first preallocated block of physical storage.

### Claim 18 (depends on 17)

The computer system of claim 17,
where a preallocated area of physical storage comprises a set of reserved blocks of the set of physical blocks,
where the set of reserved blocks comprises the first preallocated block of physical storage, and
where the set of reserved blocks was selected by the one or more processors at a time concurrent with a time of creation of the first child clone.

### Claim 19 (depends on 18)

The computer system of claim 18, where the one or more processors added the first preallocated block of physical storage to the set of reserved blocks in response to a determination that the first data element is likely to updated after the time of creation of the first child clone.

### Claim 20 (depends on 19)

The computer system of claim 19,
where the one or more processors determine that the first data element is likely to be updated by identifying that a frequency at which the first parent file block was updated in the past exceeds a predefined volatility threshold value,
where information comprised by the source software image is organized into a set of source file blocks,
where each source file block of the set of source file blocks is identical to a corresponding parent file block of the set of parent file blocks,
where a first source file block of the set of source file blocks is identical to the first parent file block, and
where the one or more processors determine that the first data element is likely to be updated by identifying that a frequency at which the first source file block was updated prior to the time of creation of the first child clone exceeds a predefined volatility threshold value.
