# US 11,308,033 B2 · File system hierarchy mirroring across cloud data stores

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

- Number: US 11,308,033 B2
- Document ID: US11308033B2
- Status: Granted
- Kind: B2
- Application number: 16/748,420
- Filed: 2020-01-21
- Published: 2020-05-21
- Granted: 2022-04-19
- Earliest claimed: 2017-01-06
- Assignees: Oracle International Corporation
- Applicants: Oracle International Corporation
- Inventors: Mark Maybee; James Kremer; Pascal Ledru; Gavin Gibson
- Web page: https://patentgrep.com/patent/US11308033B2

## CPC

- G06F 16/172: Caching, prefetching or hoarding of files
- G06F 1/28: Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
- G06F 3/0605: {by facilitating the interaction with a user or administrator}
- G06F 3/0607: {by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device}
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0617: {in relation to availability}
- G06F 3/0623: {in relation to content}
- G06F 3/064: {Management of blocks}
- G06F 3/0641: {De-duplication techniques}
- G06F 3/0643: {Management of files}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/0667: {at data level, e.g. file, record or object virtualisation}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/5077: {Logical partitioning of resources; Management or configuration of virtualized resources (specific details on emulation or internal functioning of virtual machines G06F9/455)}
- G06F 11/07: Responding to the occurrence of a fault, e.g. fault tolerance
- G06F 11/1004: {to protect a block of data words, e.g. CRC or checksum (G06F11/1076 takes precedence; security arrangements for protecting computers or computer systems against unauthorized activity G06F21/00)}
- 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 11/1446: Point-in-time backing up or restoration of persistent data
- G06F 11/1464: {for networked environments}
- G06F 11/3006: {where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems (multiprogramming arrangements G06F9/46; allocation of resources G06F9/50)}
- G06F 11/3034: {where the computing system component is a storage system, e.g. DASD based or network based (digital input from or digital output to record carriers G06F3/06; digital recording or reproducing G11B20/18; 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], H04L67/1097)}
- G06F 11/3037: {where the computing system component is a memory, e.g. virtual memory, cache (accessing, addressing or allocating within memory systems or architectures G06F12/00; checking stores for correct operation G11C29/00)}
- G06F 11/328: {Computer systems status display (G06F11/327 takes precedence)}
- G06F 11/3495: {for systems}
- G06F 12/0804: with main memory updating (G06F12/0806 takes precedence)
- G06F 12/0813: with a network or matrix configuration
- G06F 12/0868: Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
- G06F 12/0897: with two or more cache hierarchy levels (with multilevel cache hierarchies G06F12/0811)
- G06F 12/123: with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
- G06F 12/128: adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
- G06F 16/128: {Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion (error detection or correction of the data by redundancy in operations or in hardware G06F11/14, G06F11/16)}
- G06F 16/1748: {De-duplication implemented within the file system, e.g. based on file segments (de-duplication techniques in storage systems for the management of data blocks G06F3/0641)}
- G06F 16/182: Distributed file systems
- G06F 16/184: {implemented as replicated file system}
- G06F 16/1844: {Management specifically adapted to replicated file systems}
- G06F 16/185: Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof (details of archiving G06F16/11)
- G06F 16/2365: {Ensuring data consistency and integrity}
- G06F 16/434: {using image data, e.g. images, photos, pictures taken by a user}
- G06F 16/9027: {Trees}
- G06F 21/602: {Providing cryptographic facilities or services}
- H04L 9/0637: {Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]}
- H04L 9/0822: {using key encryption key}
- H04L 9/14: using a plurality of keys or algorithms
- H04L 63/0428: {wherein the data content is protected, e.g. by encrypting or encapsulating the payload}
- H04L 67/1095: Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
- 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 12/1408: {by using cryptography (for digital transmission H04L9/00)}
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F 2009/45583: {Memory management, e.g. access or allocation}
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- G06F 2201/80: Database-specific techniques
- G06F 2201/81: Threshold
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- G06F 2212/154: Networked environment
- G06F 2212/225: Hybrid cache memory, e.g. having both volatile and non-volatile portions
- G06F 2212/262: configured as RAID
- G06F 2212/284: being distributed
- G06F 2212/313: In storage device
- G06F 2212/401: Compressed data
- G06F 2212/502: using adaptive policy
- H03M 7/30: Compression (speech analysis-synthesis for redundancy reduction G10L19/00; for image communication H04N); Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M 7/3086: {employing a sliding window, e.g. LZ77}
- H03M 7/40: Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- 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)
- H03M: CODING; DECODING; CODE CONVERSION IN GENERAL (using fluidic means F15C4/00; optical analogue/digital converters G02F7/00; coding, decoding or code conversion, specially adapted for particular applications, see the relevant subclasses, e.g. G01D, G01R, G06F, G06T, G09G, G10L, G11B, G11C, H04B, H04L, H04M, H04N; ciphering or deciphering for cryptography or other purposes involving the need for secrecy G09C)

## Abstract

Techniques described herein relate to systems and methods of data storage, and more particularly to providing layering of file system functionality on an object interface. In certain embodiments, file system functionality may be layered on cloud object interfaces to provide cloud-based storage while allowing for functionality expected from a legacy applications. For instance, POSIX interfaces and semantics may be layered on cloud-based storage, while providing access to data in a manner consistent with file-based access with data organization in name hierarchies. Various embodiments also may provide for memory mapping of data so that memory map changes are reflected in persistent storage while ensuring consistency between memory map changes and writes. For example, by transforming a ZFS file system disk-based storage into ZFS cloud-based storage, the ZFS file system gains the elastic nature of cloud storage.

## Claims

### Claim 1

A method comprising:
identifying, at a mirror device operating at a virtual device layer of an object-based file system, a first cloud object store of a first cloud interface device and a second cloud object store of a second cloud interface device within the virtual device layer of the object-based file system, wherein the first cloud object store supports a first native set of attributes of data objects stored therein, and the second cloud object store supports a different second native set of attributes of data objects stored therein;
retrieving, by the mirror device and via the first cloud interface device, a first set of cloud storage objects stored in the first cloud object store, the first cloud interface device storing a first instance of a tree hierarchy, wherein the tree hierarchy includes a mapping of logical data blocks corresponding to the first set of cloud storage objects;
storing, by the mirror device and via the second cloud interface device, a second instance of the tree hierarchy in the second cloud object store, wherein the first instance and the second instance of the tree hierarchy are identical;
using, by the mirror device and via the second cloud interface device, the second instance of the tree hierarchy to create a second set of cloud storage objects to be stored in the second cloud object store; and
causing at least one read operation to be performed with respect to the tree hierarchy, wherein the at least one read operation comprises receiving at least one cloud storage object from either the first cloud object store or the second cloud object store.

### Claim 2 (depends on 1)

The method of claim 1, wherein the logical data blocks corresponding to the first set of cloud storage objects include metadata corresponding to each cloud storage object of the first set of cloud storage objects.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
retrieving performance data corresponding to the first cloud object store and the second cloud object store; and
causing, based on the performance data, the at least one read operation to be performed on the first cloud object store instead of the second cloud object store.

### Claim 4 (depends on 3)

The method of claim 3, wherein the performance data includes a number of previous read operations executed by each of the first cloud object store and the second cloud object store.

### Claim 5 (depends on 1)

The method of claim 1, further comprising performing a checksum operation on the first and second instances of the tree hierarchy to validate that the first and second instances of the tree hierarchy are identical.

### Claim 6 (depends on 1)

The method of claim 1, wherein causing at least one read operation to be performed with respect to the tree hierarchy further comprises bypassing the mirror device when the at least one read operation is performed to receive the at least one cloud storage object from either the first cloud object store or the second cloud object store.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
detecting, by the mirror device, a write operation performed on at least one cloud storage object of the first set of cloud storage objects;
updating, by the mirror device, the first and second instances of the tree hierarchy in accordance with the write operation; and
causing, by the mirror device, another write operation to be performed on at least one cloud storage object of the second set of cloud storage objects based on the updated second instance of the tree hierarchy.

### Claim 8

A mirror device configured to operate at an object-based file system, the mirror device comprising:
a processing unit comprising one or more processors; and
memory coupled with and readable by the processing unit and storing therein a set of instructions which, when executed by the processing unit, causes the mirror device to:
identify a first cloud object store of a first cloud interface device and a second cloud object store of a second cloud interface device within a virtual device layer of the object-based file system, wherein the first cloud object store supports a first native set of attributes of data objects stored therein, and the second cloud object store supports a different second native set of attributes of data objects stored therein;
retrieve a first set of cloud storage objects stored in the first cloud object store, the first cloud interface device storing a first instance of a tree hierarchy, wherein the tree hierarchy includes a mapping of logical data blocks corresponding to the first set of cloud storage objects;
store a second instance of the tree hierarchy in the second cloud object store, wherein the first instance and the second instance of the tree hierarchy are identical;
use the second instance of the tree hierarchy to create a second set of cloud storage objects to be stored in the second cloud object store; and
cause at least one read operation to be performed with respect to the tree hierarchy, wherein the at least one read operation comprises receiving at least one cloud storage object from either the first cloud object store or the second cloud object store.

### Claim 9 (depends on 8)

The mirror device of claim 8, wherein the logical data blocks corresponding to the first set of cloud storage objects include metadata corresponding to each cloud storage object of the first set of cloud storage objects.

### Claim 10 (depends on 8)

The mirror device of claim 8, the memory storing therein additional instructions which, when executed by the processing unit, causes the mirror device to:
retrieve performance data corresponding to the first cloud object store and the second cloud object store; and
cause, based on the performance data, the at least one read operation to be performed on the first cloud object store instead of the second cloud object store.

### Claim 11 (depends on 10)

The mirror device of claim 10, wherein the performance data includes a number of previously read operations executed by each of the first cloud object store and the second cloud object store.

### Claim 12 (depends on 8)

The mirror device of claim 8, the memory storing therein additional instructions which, when executed by the processing unit, causes the mirror device to perform a checksum operation on the first and second instances of the tree hierarchy to validate that the first and second instances of the tree hierarchy are identical.

### Claim 13 (depends on 8)

The mirror device of claim 8, wherein causing at least one read operation to be performed with respect to the tree hierarchy further comprises bypassing the mirror device when the at least one read operation is performed to receive the at least one cloud storage object from either the first cloud object store or the second cloud object store.

### Claim 14 (depends on 8)

The mirror device of claim 8, the memory storing therein additional instructions which, when executed by the processing unit, causes the mirror device to:
detect a write operation performed on at least one cloud storage object of the first set of cloud storage objects;
update the first and second instances of the tree hierarchy in accordance with the write operation; and
cause another write operation to be performed on at least one cloud storage object of the second set of cloud storage objects based on the updated second instance of the tree hierarchy.

### Claim 15

A computer-program product tangibly embodied in a non-transitory machine-readable storage medium, including instructions configured to cause one or more data processors to perform actions including comprising:
identifying a first cloud object store of a first cloud interface device and a second cloud object store of a second cloud interface device within a virtual device layer of an object-based file system, wherein the first cloud object store supports a first native set of attributes of data objects stored therein, and the second cloud object store supports a different second native set of attributes of data objects stored therein;
retrieving a first set of cloud storage objects stored in the first cloud object store, the first cloud interface device storing a first instance of a tree hierarchy, wherein the tree hierarchy includes a mapping of logical data blocks corresponding to the first set of cloud storage objects;
storing, by a mirror device and via the second cloud interface device, a second instance of the tree hierarchy in the second cloud object store, wherein the first instance and the second instance of the tree hierarchy are identical;
using the second instance of the tree hierarchy to create a second set of cloud storage objects to be stored in the second cloud object store; and
causing at least one read operation to be performed with respect to the tree hierarchy, wherein the at least one read operation comprises receiving at least one cloud storage object from either the first cloud object store or the second cloud object store.

### Claim 16 (depends on 15)

The computer-program product of claim 15, wherein the logical data blocks corresponding to the first set of cloud storage objects include metadata corresponding to each cloud storage object of the first set of cloud storage objects.

### Claim 17 (depends on 15)

The computer-program product of claim 15, including further instructions configured to cause the one or more data processors to perform:
retrieving performance data corresponding to the first cloud object store and the second cloud object store; and
causing, based on the performance data, the at least one read operation to be performed on the first cloud object store instead of the second cloud object store.

### Claim 18 (depends on 15)

The computer-program product of claim 15, including further instructions configured to cause the one or more data processors to perform a checksum operation on the first and second instances of the tree hierarchy to validate that the first and second instances of the tree hierarchy are identical.

### Claim 19 (depends on 15)

The computer-program product of claim 15, wherein causing at least one read operation to be performed with respect to the tree hierarchy further comprises bypassing the mirror device when the at least one read operation is performed to receive the at least one cloud storage object from either the first cloud object store or the second cloud object store.

### Claim 20 (depends on 15)

The computer-program product of claim 15, including further instructions configured to cause the one or more data processors to perform:
detecting, by the mirror device, a write operation performed on at least one cloud storage object of the first set of cloud storage objects;
updating, by the mirror device, the first and second instances of the tree hierarchy in accordance with the write operation; and
causing, by the mirror device, another write operation to be performed on at least one cloud storage object of the second set of cloud storage objects based on the updated second instance of the tree hierarchy.
