# US 11,442,898 B2 · File system hierarchies and functionality with 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 11,442,898 B2
- Document ID: US11442898B2
- Status: Granted
- Kind: B2
- Application number: 16/822,406
- Filed: 2020-03-18
- Published: 2020-07-09
- Granted: 2022-09-13
- Earliest claimed: 2017-01-06
- Assignees: Oracle International Corporation
- Applicants: Oracle International Corporation
- Inventors: James Kremer; Mark Maybee; Natalie Ross; Pascal Ledru; Victor Latushkin; Ankit Gureja; Kimberly Morneau; Jingfei Zhang; Gavin Gibson
- Web page: https://patentgrep.com/patent/US11442898B2

## 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:
receiving, via a block storage system, a first set of one or more requests to perform a first transaction with respect to a file;
storing, via the block storage system, data blocks and corresponding metadata in one or more storage devices of the block storage system, wherein:
the data blocks correspond to the file, and
the data blocks and the corresponding metadata are stored separately as logical blocks according to a tree hierarchy;
causing storage, in a cloud object store, of a set of cloud storage objects, where the set of cloud storage objects comprises data of the data blocks and the corresponding metadata of the tree hierarchy, and the causing storage comprises causing communication of a second set of one or more requests to the cloud object store to specify storage of the set of cloud storage objects in the cloud object store so that the set of cloud storage objects preserves the data of the data blocks, the corresponding metadata, and relationships of the data blocks and the corresponding metadata according to the tree hierarchy, wherein the set of cloud storage objects is stored in the cloud object store to correspond to a cloud-based instantiation of the tree hierarchy;
receiving, via the block storage system, a third set of one or more requests to perform a second transaction with respect to the file;
converting at least one I/O request, corresponding to the third set of one or more requests, into an object interface request; and
transferring the object interface request to cause communication with the cloud object store to perform at least one I/O operation with respect to at least a subset of the set of cloud storage objects.

### Claim 2 (depends on 1)

The method as recited in claim 1, wherein the causing the communication of the second set of one or more requests to the cloud object store comprises:
transferring a fourth set of one or more requests to a cloud daemon;
wherein, responsive to the fourth set of one or more requests, the cloud daemon communicates, via an object protocol over one or more networks, with the cloud object store to specify storage of the set of cloud storage objects.

### Claim 3 (depends on 1)

The method as recited in claim 1, further comprising:
converting a plurality of requests that are compliant with Portable Operating System Interface (POSIX) into a plurality of object interface requests to perform operations with respect to the cloud-based instantiation of the tree hierarchy stored in the cloud object store, where the plurality of requests comprises the at least one I/O request and the plurality of object interface requests comprises the object interface request.

### Claim 4 (depends on 1)

The method as recited in claim 1, further comprising:
translating the third set of one or more requests into the at least one I/O request to perform the at least one I/O operation, where the transferring the object interface request comprises communicating with the cloud object store to perform the at least one I/O operation with respect to at least the subset of the set of cloud storage objects.

### Claim 5 (depends on 4)

The method as recited in claim 4, wherein the I/O operation corresponds to a write operation and is performed according to a copy-on-write process with respect to at least the subset of the set of cloud storage objects in the cloud object store.

### Claim 6 (depends on 5)

The method as recited in claim 5, wherein the specifying the storage of the set of cloud storage objects in the cloud object store comprises:
specifying a first object size to store a first subset of the set of cloud storage objects that are identified as being of a first data type; and
specifying a second object size to store a second subset of the set of cloud storage objects that are identified as being of a second data type;
wherein the first object size is different from the second object size, and the first data type is different from the second data type.

### Claim 7

A system comprising:
one or more processors communicatively coupled to memory, the one or more processors to facilitate:
processing a first set of one or more requests to perform a first transaction with respect to a file;
storing data blocks and corresponding metadata in one or more storage devices of a block storage system, wherein:
the data blocks correspond to the file, and
the data blocks and the corresponding metadata are stored separately as logical blocks according to a tree hierarchy;
causing storage, in a cloud object store, of a set of cloud storage objects, where the set of cloud storage objects comprises data of the data blocks and the corresponding metadata of the tree hierarchy, and the causing storage comprises causing communication of a second set of one or more requests to the cloud object store to specify storage of the set of cloud storage objects in the cloud object store so that the set of cloud storage objects preserves the data of the data blocks, the corresponding metadata, and relationships of the data blocks and the corresponding metadata according to the tree hierarchy, wherein the set of cloud storage objects is stored in the cloud object store to correspond to a cloud-based instantiation of the tree hierarchy;
processing a third set of one or more requests to perform a second transaction with respect to the file;
converting at least one I/O request, corresponding to the third set of one or more requests, into an object interface request; and
transferring the object interface request to cause communication with the cloud object store to perform at least one I/O operation with respect to at least a subset of the set of cloud storage objects.

### Claim 8 (depends on 7)

The system as recited in claim 7, wherein the causing the communication of the second set of one or more requests to the cloud object store comprises:
transferring a fourth set of one or more requests to a cloud daemon;
wherein, responsive to the fourth set of one or more requests, the cloud daemon communicates, via an object protocol over one or more networks, with the cloud object store to specify storage of the set of cloud storage objects.

### Claim 9 (depends on 8)

The system as recited in claim 8, the one or more processors further to facilitate:
converting a plurality of requests that are compliant with Portable Operating System Interface (POSIX) into a plurality of object interface requests to perform operations with respect to the cloud-based instantiation of the tree hierarchy stored in the cloud object store, where the plurality of requests comprises the at least one I/O request and the plurality of object interface requests comprises the object interface request.

### Claim 10 (depends on 7)

The system as recited in claim 7, the one or more processors further to facilitate:
translating the third set of one or more requests into the at least one I/O request to perform the at least one I/O operation, where the transferring the object interface request comprises communicating with the cloud object store to perform the at least one I/O operation with respect to at least the subset of the set of cloud storage objects.

### Claim 11 (depends on 10)

The system as recited in claim 10, wherein the I/O operation corresponds to a write operation and is performed according to a copy-on-write process with respect to at least the subset of the set of cloud storage objects in the cloud object store.

### Claim 12 (depends on 11)

The system as recited in claim 11, wherein the specifying the storage of the set of cloud storage objects in the cloud object store comprises:
specifying a first object size to store a first subset of the set of cloud storage objects that are identified as being of a first data type; and
specifying a second object size to store a second subset of the set of cloud storage objects that are identified as being of a second data type;
wherein the first object size is different from the second object size, and the first data type is different from the second data type.

### Claim 13 (depends on 12)

The system as recited in claim 12, further comprising the block storage system.

### Claim 14

One or more non-transitory, machine-readable media having machine-readable instructions thereon which, when executed by one or more processors, cause the one or more processors to perform operations comprising:
processing a first set of one or more requests to perform a first transaction with respect to a file;
causing storing data blocks and corresponding metadata in one or more storage devices of a block storage system, wherein:
the data blocks correspond to the file, and
the data blocks and the corresponding metadata are stored separately as logical blocks according to a tree hierarchy;
causing storage, in a cloud object store, of a set of cloud storage objects, where the set of cloud storage objects comprises data of the data blocks and the corresponding metadata of the tree hierarchy, and the causing storage comprises causing communication of a second set of one or more requests to the cloud object store to specify storage of the set of cloud storage objects in the cloud object store so that the set of cloud storage objects preserves the data of the data blocks, the corresponding metadata, and relationships of the data blocks and the corresponding metadata according to the tree hierarchy, wherein the set of cloud storage objects is stored in the cloud object store to correspond to a cloud-based instantiation of the tree hierarchy;
processing a third set of one or more requests to perform a second transaction with respect to the file;
converting at least one I/O request, corresponding to the third set of one or more requests, into an object interface request; and
causing transferring the object interface request to cause communication with the cloud object store to perform at least one I/O operation with respect to at least a subset of the set of cloud storage objects.

### Claim 15 (depends on 14)

The one or more non-transitory, machine-readable media as recited in claim 14, wherein the causing the communication of the second set of one or more requests to the cloud object store comprises:
causing transferring a fourth set of one or more requests to a cloud daemon;
wherein, responsive to the fourth set of one or more requests, the cloud daemon communicates, via an object protocol over one or more networks, with the cloud object store to specify storage of the set of cloud storage objects.

### Claim 16 (depends on 14)

The one or more non-transitory, machine-readable media as recited in claim 14, wherein the operations further comprise:
converting a plurality of requests that are compliant with Portable Operating System Interface (POSIX) into a plurality of object interface requests to perform operations with respect to the cloud-based instantiation of the tree hierarchy stored in the cloud object store, where the plurality of requests comprises the at least one I/O request and the plurality of object interface requests comprises the object interface request.

### Claim 17 (depends on 14)

The one or more non-transitory, machine-readable media as recited in claim 14, wherein the operations further comprise:
translating the third set of one or more requests into the at least one I/O request to perform the at least one I/O operation, where the transferring the object interface request comprises communicating with the cloud object store to perform the at least one I/O operation with respect to at least the subset of the set of cloud storage objects.
