# US 2014/0156793 A1 · Generating prefetching profiles for prefetching data in a cloud based file system

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

- Number: US 2014/0156793 A1
- Document ID: US20140156793A1
- Status: Published application
- Kind: A1
- Application number: 14/171,679
- Filed: 2014-02-03
- Published: 2014-06-05
- Earliest claimed: 2012-10-02
- Assignees: Nextbit Systems Inc.
- Applicants: Nextbit Systems Inc.
- Inventors: Michael A. Chan; Justin Quan; Michael K. Fleming
- Web page: https://patentgrep.com/patent/US20140156793A1

## CPC

- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F 9/5038: {considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration (scheduling strategies G06F9/4881 and subgroups)}
- G06F 16/125: {characterised by the use of retention policies (retention policies for HSM systems G06F16/185)}
- G06F 16/174: Redundancy elimination performed by the file system (error detection or correction of the data by redundancy in operations G06F11/14)
- G06F 16/20: of structured data, e.g. relational data
- G06F 16/93: Document management systems
- H04B 7/26: at least one of which is mobile
- H04L 67/06: specially adapted for file transfer, e.g. file transfer protocol [FTP]
- 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]
- H04L 67/55: Push-based network services
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- H04M 1/72412: using two-way short-range wireless interfaces
- G06F 16/273: {Asynchronous replication or reconciliation}
- G06F 16/275: {Synchronous replication}
- G06F 16/278: {Data partitioning, e.g. horizontal or vertical partitioning}
- H04M 2250/10: including a GPS signal receiver
- H04M 2250/12: including a sensor for measuring a physical value, e.g. temperature or motion
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04B: TRANSMISSION
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04M: TELEPHONIC COMMUNICATION (circuits for controlling other apparatus via a telephone cable and not involving telephone switching apparatus G08)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

Technology is disclosed herein for a cloud based file system that facilitates storing data beyond a physical storage limit of a computing device. In some embodiments, the file system stores the metadata of the data in a local storage of the device and the data itself in a cloud storage. Upon accessing a data object on the device, the device obtains the data from the cloud storage and presents it to the user as if the content data is stored locally. The device identifies the data objects that are likely to be accessed by the user, pre-fetches the content of these data objects and stores them in a cache locally. Prefetching profiles are used to identify the data objects that are likely to be used based on a usage pattern of the data objects. Different prefetching profiles may be generated for multiple devices associated with the user.

## Claims

### Claim 1

A method for managing storage of multiple data objects in a file system of a computing device integrated with a storage server, the method comprising:
storing, in the file system, metadata of the data objects;
storing content data of the data objects in the storage server communicatively coupled with the computing device over a communication network;
monitoring a usage of the data objects by a user of the computing device to generate a usage profile for the user, the usage profile containing information regarding access of the data objects, the usage profile including at least (a) a time of access, (b) a duration of access, (c) a frequency of access, (d) a geographical location of the computing device during the access of the data objects accessed, or (e) a geographical location of another computing device associated with the user during the access of a particular data object on the computing device;
providing, by the computing device, the usage profile of the user to a prefetching server to determine a prefetching profile for the user and the computing device, the prefetching profile identifying a subset of the data objects that have a high probability of being accessed by the user at the computing device;
receiving, by the computing device, the prefetching profile containing identification of the subset of the data objects from the prefetching server, the prefetching server identifying the subset of the data objects based on a specified usage pattern; and
requesting, using the identification of the subset of the data objects from the prefetching profile, the prefetching server to cause the storage server to transmit content data of the subset of the data objects;
receiving, from the storage server, the content data of the subset of the data objects; and
caching, at the computing device, the content data of the subset of the data objects.

### Claim 2 (depends on 1)

The method of claim 1, wherein the user is associated with multiple computing devices and the computing devices generate corresponding usage profiles for the user.

### Claim 3 (depends on 2)

The method of claim 2, wherein the prefetching profile is generated for the user per computing device, the prefetching server generating multiple prefetching profiles, each of the prefetching profiles corresponding to one of the computing devices.

### Claim 4 (depends on 2)

The method of claim 2, wherein the usage pattern includes identifying the subset of the data objects based on a likelihood that the user accesses a particular data object at a particular time of the day, when the computing device is at a particular location, and when another computing device associated with the user is within a specified proximity to the computing device.

### Claim 5 (depends on 2)

The method of claim 2, wherein the usage pattern includes identifying the subset of the data objects based on an amount of time that has elapsed since the last access of a particular data object or an amount of time that has elapsed since the particular data object is created.

### Claim 6 (depends on 2)

The method of claim 2, wherein the usage pattern includes identifying the subset of the data objects based on a likelihood that the user accesses a particular data object after or before accessing another data object of the subset.

### Claim 7 (depends on 2)

The method of claim 2, wherein the usage pattern includes identifying the subset of the data objects based on a determination whether the user is likely to access a particular data object of a particular size on a particular computing device.

### Claim 8 (depends on 2)

The method of claim 2, wherein the usage pattern includes identifying the subset of the data objects based on a determination whether the user is likely to access a particular data object of a particular type on a particular computing device, the type including at least one of image, audio, video, and data.

### Claim 9 (depends on 1)

The method of claim 1, wherein the data object is at least one of an image file, audio file, or a video file.

### Claim 10 (depends on 1)

The method of claim 1, wherein the computing device receives the prefetching profile at specified intervals.

### Claim 11 (depends on 1)

The method of claim 1, wherein the computing device requests the prefetching server to send the prefetching profile together with a response to a next request from the computing device for obtaining the content data from the storage server.

### Claim 12 (depends on 1)

The method of claim 1, further comprising:
receiving a read request for a data object from an application on the computing device;
determining whether the content data of the data object is cached at the computing device;
if the content data of the data object is cached at the computing device, reading the content data of the data object from its cached location at the computing device; and
if the content data of the data object is not cached at the computing device, requesting the content data of the data object from the storage server.

### Claim 13 (depends on 1)

The method of claim 1, further comprising:
receiving a write request for a data object from an application on the computing device;
determining whether the content data of the data object is cached at the computing device;
if the content data of the data object is cached at the computing device, updating the data object based on the write request; and
if the content data of the data object is not cached at the computing device, recording a sequential list of changes to the data object based on the write request into a log data structure.

### Claim 14 (depends on 13)

The method of claim 13, further comprising:
sending the log data structure to the storage server so that the storage server applies the sequential list of changes to one or more data objects stored in the storage server based on the log data structure.

### Claim 15

A method for facilitating storage of multiple data objects in a file system of a computing device integrated with a storage server, the method comprising:
receiving, at a prefetching server and from the computing device, a usage profile of the user of the computing device, the usage profile containing information regarding access of the data objects, the usage profile including at least (a) a time of access, (b) a duration of access, (c) a frequency of access, (d) a geographical location of the computing device during the access of the data objects accessed, or (e) a geographical location of another computing device associated with the user during the access of a particular data object on the computing device, wherein the computing device is configured to
store metadata of the data objects in the file system of the computing device, and
store content data of the data objects in the storage server communicatively coupled with the computing device over a communication network;
analyzing, by the prefetching server, the usage profile to generate a prefetching profile for the user and the computing device, the prefetching profile identifying a subset of the data objects that have a high probability of being accessed by the user at the computing device, the prefetching server identifying the subset of the data objects based on a specified usage pattern;
transmitting, to the computing device, the prefetching profile containing identification of the subset of the data objects; and
receiving, from the computing device, a request to transmit content data of the subset of the data objects, the request having the identification of the subset of the data objects;
obtaining, from the storage server, the content data of the subset of the data objects; and
transmitting, to the computing device, the content data of the subset of the data objects, wherein the computing device stores the content data in a cache of the computing device.

### Claim 16 (depends on 15)

The method of claim 15, wherein the user is associated with multiple computing devices and the computing devices generate corresponding usage profiles for the user.

### Claim 17 (depends on 16)

The method of claim 16, wherein the prefetching profile is generated for the user per computing device, the prefetching server generating multiple prefetching profiles, each of the prefetching profiles corresponding to one of the computing devices.

### Claim 18 (depends on 15)

The method of claim 15, wherein the prefetching server generates the prefetching profile based on multiple usage patterns, wherein each of the usage patterns is associated with a weight.

### Claim 19 (depends on 18)

The method of claim 18, wherein the usage patterns include identifying the subset of the data objects based on (a) the subset of the data objects accessed most recently, (b) a type of the subset of the data objects accessed most frequently, (c) the subset of the data objects accessed most frequently at a current location of the computing device, (d) the subset of the data objects accessed on the computing device when another computing device associated with the user is at a specified proximity of the computing device, or (e) a size of the subset of the data objects accessed on the computing device.

### Claim 20

A computing device comprising:
a processor;
a memory to store instructions which, when executed by the processor, perform the method of:
storing, in the file system, metadata of the data objects;
storing content data of the data objects in the storage server communicatively coupled with the computing device over a communication network;
monitoring a usage of the data objects by a user of the computing device to generate a usage profile for the user, the usage profile containing information regarding access of the data objects, the usage profile including at least (a) a time of access, (b) a duration of access, (c) a frequency of access, (d) a geographical location of the computing device during the access of the data objects accessed, or (e) a geographical location of another computing device associated with the user during the access of a particular data object on the computing device;
providing the usage profile of the user to a prefetching server to determine a prefetching profile for the user and the computing device, the prefetching profile identifying a subset of the data objects that have a high probability of being accessed by the user at the computing device;
receiving the prefetching profile containing identification of the subset of the data objects from the prefetching server, the prefetching server identifying the subset of the data objects based on a specified prefetching policy and using the usage profile; and
requesting, using the identification of the subset of the data objects from the prefetching profile, the prefetching server to cause the storage server to transmit content data of the subset of the data objects;
receiving, from the storage server, the content data of the subset of the data objects; and
caching, at the computing device, the content data of the subset of the data objects.
