# US 10,503,444 B2 · Object format and upload process for archiving data in cloud/object storage

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

- Number: US 10,503,444 B2
- Document ID: US10503444B2
- Status: Granted
- Kind: B2
- Application number: 15/870,711
- Filed: 2018-01-12
- Published: 2019-07-18
- Granted: 2019-12-10
- Earliest claimed: 2018-01-12
- Assignees: VMware, Inc.
- Applicants: VMware, Inc.
- Inventors: Satish Kumar Kashi Visvanathan; Pooja Sarda; Ilya Langouev; Arun Kandambakkam
- Web page: https://patentgrep.com/patent/US10503444B2

## CPC

- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/0638: {Organizing or formatting or addressing of data}
- G06F 3/064: {Management of blocks}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0656: {Data buffering arrangements}
- G06F 11/14: Error detection or correction of the data by redundancy in operations (error detection or correction of the data by redundancy in hardware G06F11/16)
- G06F 16/184: {implemented as replicated file system}
- G06F 16/907: Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F 11/1451: {by selection of backup contents}
- G06F 11/1469: {Backup restoration techniques}
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Techniques for archiving a data set in cloud/object storage are provided. In one set of embodiments, a computer system can receive an incremental snapshot of the data set and package the incremental snapshot into one or more data objects and one or more metadata objects. The one or more data objects can include data blocks of the incremental snapshot, and the one or more metadata objects can include a metadata entry for each data block, the metadata entry comprising an identifier of the incremental snapshot, an identifier of the data block, and an identifier of a data object in which the data block is stored. The computer system can then write the one or more data objects and the one or more metadata objects to the cloud/object storage.

## Claims

### Claim 1

A method for archiving a data set in cloud storage, the method comprising:
receiving, by a computer system, an incremental snapshot of the data set;
packaging, by the computer system, the incremental snapshot into one or more data objects and one or more metadata objects, wherein the one or more data objects include data blocks of the incremental snapshot, and wherein the one or more metadata objects include a metadata entry for each data block, the metadata entry comprising an identifier of the incremental snapshot, an identifier of the data block, and an identifier of a data object in which the data block is stored; and
writing, by the computer system, the one or more data objects and the one or more metadata objects to the cloud storage,
wherein the packaging and writing comprises, as each data block of the incremental snapshot is received by the computer system:
adding the data block to a fixed-size data memory buffer;
adding a metadata entry for the data block to a metadata memory buffer;
determining whether the data memory buffer is full upon adding the data block; and
if the data memory buffer is determined to be full, writing contents of the data memory buffer to the cloud storage as a new data object, and
wherein once all data blocks of the incremental snapshot are processed via the data memory buffer, the computer system writes contents of the metadata memory buffer to the cloud storage as a new metadata object.

### Claim 2 (depends on 1)

The method of claim 1 wherein the one or more data objects and the one or more metadata objects are new objects that do not exist on the cloud storage prior to the writing.

### Claim 3 (depends on 1)

The method of claim 1 wherein if the data memory buffer is not determined to be full, the computer system processes additional data blocks in the incremental snapshot until the data memory buffer becomes full.

### Claim 4 (depends on 1)

The method of claim 1 further comprising repeating the packaging and writing for additional incremental snapshots of the data set that are received by the computer system.

### Claim 5 (depends on 1)

The method of claim 1 wherein each of the one or more metadata objects include metadata entries for data blocks corresponding to a fixed sub-range of an address space of the data set.

### Claim 6 (depends on 1)

The method of claim 1 wherein the fixed size of the data memory buffer is based on a predefined size for the one or more data objects.

### Claim 7

A non-transitory computer readable storage medium having stored thereon program code executable by a computer system, the program code embodying a method for archiving a data set in cloud storage, the method comprising:
receiving an incremental snapshot of the data set;
packaging the incremental snapshot into one or more data objects and one or more metadata objects, wherein the one or more data objects include data blocks of the incremental snapshot, and wherein the one or more metadata objects include a metadata entry for each data block, the metadata entry comprising an identifier of the incremental snapshot, an identifier of the data block, and an identifier of a data object in which the data block is stored; and
writing the one or more data objects and the one or more metadata objects to the cloud storage,
wherein the packaging and writing comprises, as each data block of the incremental snapshot is received by the computer system:
adding the data block to a fixed-size data memory buffer;
adding a metadata entry for the data block to a metadata memory buffer;
determining whether the data memory buffer is full upon adding the data block; and
if the data memory buffer is determined to be full, writing contents of the data memory buffer to the cloud storage as a new data object, and
wherein once all data blocks of the incremental snapshot are processed via the data memory buffer, the computer system writes contents of the metadata memory buffer to the cloud storage as a new metadata object.

### Claim 8 (depends on 7)

The non-transitory computer readable storage medium of claim 7 wherein the one or more data objects and the one or more metadata objects are new objects that do not exist on the cloud storage prior to the writing.

### Claim 9 (depends on 7)

The non-transitory computer readable storage medium of claim 7 wherein if the data memory buffer is not determined to be full, the computer system processes additional data blocks in the incremental snapshot until the data memory buffer becomes full.

### Claim 10 (depends on 7)

The non-transitory computer readable storage medium of claim 7 wherein the method further comprises repeating the packaging and writing for additional incremental snapshots of the data set that are received by the computer system.

### Claim 11 (depends on 7)

The non-transitory computer readable storage medium of claim 7 wherein each of the one or more metadata objects include metadata entries for data blocks corresponding to a fixed sub-range of an address space of the data set.

### Claim 12 (depends on 7)

The non-transitory computer readable storage medium of claim 7 wherein the fixed size of the data memory buffer is based on a predefined size for the one or more data objects.

### Claim 13

A computer system comprising:
a processor; and
a non-transitory computer readable medium having stored thereon program code for archiving a data set in cloud storage, the program code causing the processor to:
receive an incremental snapshot of the data set;
package the incremental snapshot into one or more data objects and one or more metadata objects, wherein the one or more data objects include data blocks of the incremental snapshot, and wherein the one or more metadata objects include a metadata entry for each data block, the metadata entry comprising an identifier of the incremental snapshot, an identifier of the data block, and an identifier of a data object in which the data block is stored; and
write the one or more data objects and the one or more metadata objects to the cloud storage,
wherein the program code that causes the processor to package incremental snapshot and write the one or more data objects comprises program code that causes the processor to, as each data block of the incremental snapshot is received:
add the data block to a fixed-size data memory buffer;
add a metadata entry for the data block to a metadata memory buffer;
determine whether the data memory buffer is full upon adding the data block; and
if the data memory buffer is determined to be full, write contents of the data memory buffer to the cloud storage as a new data object, and
wherein once all data blocks of the incremental snapshot are processed via the data memory buffer, the processor writes contents of the metadata memory buffer to the cloud storage as a new metadata object.

### Claim 14 (depends on 13)

The computer system of claim 13 wherein the one or more data objects and the one or more metadata objects are new objects that do not exist on the cloud storage prior to the writing.

### Claim 15 (depends on 13)

The computer system of claim 13 wherein if the data memory buffer is not determined to be full, the processor processes additional data blocks in the incremental snapshot until the data memory buffer becomes full.

### Claim 16 (depends on 13)

The computer system of claim 13 wherein the program code further causes the processor to repeat the packaging and writing for additional incremental snapshots of the data set that are received.

### Claim 17 (depends on 13)

The computer system of claim 13 wherein each of the one or more metadata objects include metadata entries for data blocks corresponding to a fixed sub-range of an address space of the data set.

### Claim 18 (depends on 13)

The computer system of claim 13 wherein the fixed size of the data memory buffer is based on a predefined size for the one or more data objects.
