# US 10,484,473 B2 · Systems and methods for efficient distribution of stored data objects

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

- Number: US 10,484,473 B2
- Document ID: US10484473B2
- Status: Granted
- Kind: B2
- Application number: 15/636,490
- Filed: 2017-06-28
- Published: 2017-12-28
- Granted: 2019-11-19
- Earliest claimed: 2016-06-28
- Assignees: Solano Labs, Inc.
- Applicants: Solano Labs, Inc.
- Inventors: Jay Moorthi; William Josephson; Steven R. Willis; Thomas E. Westberg; Christopher A. Thorpe
- Web page: https://patentgrep.com/patent/US10484473B2

## CPC

- 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]
- H04L 67/5681: Pre-fetching or pre-delivering data based on network characteristics
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A distributed data storage system is provided for offering shared data to one or more clients. In various embodiments, client systems operate on shared data while having a unique writeable copy of the shared data. According to one embodiment, the data storage system can be optimized for various use cases (e.g., read-mostly where writes to shared data are rare or infrequent (although writes to private data may be frequent. Some implementations of the storage system are configured to provide fault tolerance and scalability for the shared storage. For example, read-only data can be stored in (relatively) high latency, low cost, reliable storage (e.g. cloud), with multiple layers of cache supporting faster retrieval. In addition, some implementations of the data storage system offer a low-latency approach to data caching. Other embodiments improve efficiency with access modeling and conditional execution cache hints that can be distributed across the data storage system.

## Claims

### Claim 1

A distributed data storage system comprising:
an electronic memory storage unit that electronically stores common data;
a first electronic server including a first processor, wherein the first processor is configured to retrieve the common data from the electronic memory storage unit;
a second electronic server;
an electronic client device comprising: a computer application that is an executable program, a file system that stores data utilized by the computer application, the file system being accessed by the application, and a proxy unit;
wherein the proxy unit allows the electronic client device to access the common data in the electronic storage unit through the first server, the proxy unit having a layered architecture including a copy-on-write layer, a read cache, and a read overlay;
wherein the proxy unit executes remote requests received from the application on the common data and data in the copy-on-write layer;
wherein the application modifies the data in the file system;
wherein after the application has modified data in the file system, the modifications are stored in the copy-on-write layer and the application disconnects from the proxy unit;
wherein after the application disconnects from the proxy unit, the copy-on-write layer is saved in the read-overlay;
wherein the read-overlay including the modifications is uploaded to the first server and the second server to be made available to any other proxy unit in any other client device;
and
wherein the electronic storage unit is located external to the electronic client device.

### Claim 2 (depends on 1)

The system of claim 1, wherein the proxy unit includes at least an executable component configured to execute on a client device.

### Claim 3 (depends on 1)

The system of claim 1, wherein the proxy unit is further configured to manage a local cache for pre-fetching data responsive to cache hints.

### Claim 4 (depends on 3)

The system of claim 3, wherein the proxy unit is configured to retrieve and store data from the first server or the storage unit in the local cache responsive to data access patterns for respective client devices.

### Claim 5 (depends on 4)

The system of claim 4, wherein the proxy unit is configured to load the data read from the first server or the storage unit into the cache based on at least one predicted request.

### Claim 6 (depends on 1)

The system of claim 1, wherein the first server is configured to:
manage a data architecture including at least a portion of common data and a copy on write layer; and
store any data written by the client within the copy on write layer and associated with a respective client.

### Claim 7 (depends on 6)

The system of claim 6, wherein the second server is configured to access the copy on write layer of the first server.

### Claim 8 (depends on 1)

The system of claim 1, wherein the proxy unit is configured to:
interact with the copy on write layer; and
request data from the copy on write layer for respective clients.

### Claim 9 (depends on 8)

The system of claim 8, wherein at least one of the first server and the second server is configured to access the copy on write layer of the proxy unit.

### Claim 10 (depends on 1)

The system of claim 1, wherein the proxy unit is configured to:
host at least a portion of data managed in a copy on write layer; and
store any data written by a respective client associated with at least the portion within the copy on write layer.

### Claim 11 (depends on 1)

The system of claim 1, wherein the common data is configured to be available only in read-only form and the first server is configured to access the storage unit without checking a status of the common data.

### Claim 12 (depends on 1)

The system of claim 1, wherein the storage unit comprises at least one of: hard disk, a cloud based storage service, a storage array, or a server instance.

### Claim 13 (depends on 1)

The system of claim 1, wherein the elements of the system are configured to execute multiple roles, wherein a server can operate as a proxy unit or storage unit for different elements of the system.

### Claim 14

A computer implemented method for managing a distributed data storage comprising:
obtaining, by a first processor on a first electronic server, a remote request from a client device, the remote request requesting access to common data stored on an electronic memory storage unit;
providing a second electronic server;
providing an electronic client device comprising: a computer application that is an executable program, a file system that stores data utilized by the computer application, the file system being accessed by the application, and a proxy unit;
wherein the proxy unit allows the electronic client device to access the common data in the electronic storage unit through the first server, the proxy unit having a layered architecture including a copy-on-write layer, a read cache, and a read overlay;
wherein the proxy unit executes remote requests received from the application on the common data and data in the copy-on-write layer;
wherein the application modifies the data in the file system;
wherein after the application has modified data in the file system, the modifications are stored in the copy-on-write layer and the application disconnects from the proxy unit;
wherein after the application disconnects from the proxy unit, the copy-on-write layer is saved in the read-overlay;
wherein the read-overlay including the modifications is uploaded to the first server and the second server to be made available to any other proxy unit in any other client device; and wherein the electronic storage unit is located external to the electronic client device.

### Claim 15 (depends on 14)

The method of claim 14, further comprising authenticating the client device through a server.

### Claim 16 (depends on 14)

The method of claim 14, wherein the storage unit is located external to the client device method further comprises executing an executable component on the proxy device.

### Claim 17 (depends on 14)

The method of claim 14, wherein the copy-on-write layer is configured to store any data written to the storage unit by the client device.

### Claim 18 (depends on 14)

The method of claim 14, further comprising:
managing a data architecture including at least a portion of common data and the copy-on-write layer; and
storing any data written by the client within the copy write layer and associated with a respective client.

### Claim 19 (depends on 14)

The method of claim 14, wherein the first server is configured to access the copy-on-write layer of the proxy unit.

### Claim 20 (depends on 14)

The method of claim 14, wherein the common data is configured to be available only in read-only form and the first server is configured to access the storage unit without checking a status of the common data.

### Claim 21 (depends on 14)

The method of claim 14, further comprising storing, on a cache of the proxy unit, prefetching data from the storage unit in response to a cache hint.

### Claim 22 (depends on 21)

The method of claim 21, further comprising:
hosting at least a portion of data managed in a copy on write layer; and
storing any data written by a respective client associated with at least the portion within the copy on write layer.

### Claim 23 (depends on 22)

The method of claim 22, further comprising accessing a predicted request and accessing at least a portion of the common data based on the predicted request.
