# US 11,113,312 B2 · Reliable hierarchical storage management with data synchronization

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

- Number: US 11,113,312 B2
- Document ID: US11113312B2
- Status: Granted
- Kind: B2
- Application number: 15/637,769
- Filed: 2017-06-29
- Published: 2019-01-03
- Granted: 2021-09-07
- Earliest claimed: 2017-06-29
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Ran Kalach; Spencer Alan Bishop; Fenghua Yuan; Kashif Hasan; Jason Daniel Shay
- Web page: https://patentgrep.com/patent/US11113312B2

## CPC

- G06F 16/275: {Synchronous replication}
- G06F 11/1451: {by selection of backup contents}
- G06F 11/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- G06F 11/2097: {maintaining the standby controller/processing unit updated (initialisation or re-synchronisation thereof G06F11/1658 and subgroups)}
- 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/178: Techniques for file synchronisation in file systems
- G06F 16/182: Distributed file systems
- G06F 16/185: Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof (details of archiving G06F16/11)
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- 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/565: Conversion or adaptation of application format or content (adding application control or application functional data H04L67/561)
- 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

A system hosts a file system representing a replica of file systems hosted on a plurality of nodes, each node storing data on a first storage medium. The system stores data on a second storage medium that is slower than the first storage medium. The system stores on the second storage medium a file received from one of the nodes when the file remains un-accessed by the nodes for a predetermined period of time. The first storage medium on the plurality of nodes stores a pointer to the file and not the data content of the file stored on the second storage medium. The system provides the file from the second storage medium to the first storage medium on one of the nodes while providing the plurality of nodes read and write access to the file stored on the second storage medium using the pointer on the first storage medium.

## Claims

### Claim 1

A system comprising:
a processor; and
machine readable instructions, stored on a tangible machine readable medium, when executed by the processor, configure the processor to:
host a file system, the file system representing a replica of file systems hosted on a plurality of nodes, each of the plurality of nodes storing data on a first storage medium;
store data associated with the file system on a second storage medium, the second storage medium being remote from the plurality of nodes and slower to process data stored thereon than the first storage medium used by each node of the plurality of nodes to store data;
store on the second storage medium a file received from one of the plurality of nodes when the file remains un-accessed by the plurality of nodes for a predetermined period of time, the first storage medium on the plurality of nodes storing a pointer to the file and not the data content of the file stored on the second storage medium;
provide the file from the second storage medium to the first storage medium on one of the plurality of nodes using the pointer on the first storage medium of the one of the plurality of nodes while providing the plurality of nodes read and write access to the file stored on the second storage medium; and
allow concurrent opens of the file across the plurality of nodes without providing the data content of the file to the first storage medium of each node of the plurality of nodes, wherein the machine readable instructions further configure the processor to synchronize metadata of the file to the file systems on the plurality of nodes prior to completion of opening the file on a node requesting an open of the file.

### Claim 2 (depends on 1)

The system of claim 1 wherein the machine readable instructions further configure the processor to:
create a snapshot of content of a particular version of the file on the second storage medium,
wherein the particular version is immutable, and
wherein the snapshot is a recallable instance of data backing the file on the second storage medium while the file is being used on one of the plurality of nodes.

### Claim 3 (depends on 1)

The system of claim 1 wherein the machine readable instructions further configure the processor to create a recallable instance of data backing the file on the second storage medium:
when the file is received from one of the plurality of nodes and stored on the second storage medium;
when the file is opened on the one of the plurality of nodes; or
before the file on the first storage medium is converted to the pointer.

### Claim 4 (depends on 3)

The system of claim 3 wherein the machine readable instructions further configure the processor to identify and locate the recallable instance of data backing the file using:
a namespace location of the recallable instance and information to determine that the recallable instance contains correct data for the file; or
a unique and namespace-location-independent identifier for the recallable instance and a desired version of the recallable instance in the plurality of nodes.

### Claim 5 (depends on 1)

The system of claim 1 wherein the machine readable instructions further configure the processor to maintain synchronization between the file stored on the second storage medium and the file systems on the plurality of nodes.

### Claim 6 (depends on 1)

The system of claim 1 wherein the machine readable instructions further configure the processor to detect a change to the file on the second storage medium prior to synchronizing the file to the one of the plurality of nodes.

### Claim 7 (depends on 6)

The system of claim 6 wherein the machine readable instructions further configure the processor to synchronize, when the change is detected, a latest version of metadata of the file to the one of the plurality of nodes before the completion of opening the file on the one of the plurality of nodes.

### Claim 8 (depends on 7)

The system of claim 7 wherein the machine readable instructions further configure the processor to block modification of the file stored on the second storage medium while the file is being used on the one of the plurality of nodes.

### Claim 9 (depends on 7)

The system of claim 7 wherein the machine readable instructions further configure the processor to create a recallable instance of data backing the file on the second storage medium when the file is opened on the one of the plurality of nodes.

### Claim 10

A method comprising:
hosting a file system representing a replica of file systems hosted on a plurality of nodes, each of the plurality of nodes storing data on a first storage medium;
storing data associated with the file system on a second storage medium, the second storage medium being remote from the plurality of nodes and slower to process data stored thereon than the first storage medium;
receiving a file from one of the plurality of nodes when the file remains un-accessed by the plurality of nodes for a predetermined period of time;
storing the file on the second storage medium, the plurality of nodes storing a pointer to the file and not the data content of the file on the first storage medium;
providing the plurality of nodes read and write access to the file stored on the second storage medium using the pointer on the first storage medium;
allowing concurrent opens of the file across the plurality of nodes without providing the data content of the file to the first storage medium of each node of the plurality of nodes, wherein allowing concurrent opens of the file comprises synchronizing the file to the file systems on the plurality of nodes prior to completion of opening the file on one of the plurality of nodes.

### Claim 11 (depends on 10)

The method of claim 10 further comprising creating a snapshot of content of a particular version of the file on the second storage medium, the particular version being immutable, and the snapshot being a recallable instance of data backing the file on the second storage medium while the file is being used on one of the plurality of nodes.

### Claim 12 (depends on 10)

The method of claim 10 further comprising creating a recallable instance of data backing the file on the second storage medium:
when the file is received from one of the plurality of nodes and stored on the second storage medium;
when the file is opened on the one of the plurality of nodes; or
before the file on the first storage medium is converted to the pointer.

### Claim 13 (depends on 12)

The method of claim 12 further comprising identifying and locating the recallable instance of data backing the file using:
a namespace location of the recallable instance and information to determine that the recallable instance contains correct data for the file; or
a unique and namespace-location-independent identifier for the recallable instance and a desired version of the recallable instance in the plurality of nodes.

### Claim 14 (depends on 10)

The method of claim 10 further comprising:
detecting a change to the file on the second storage medium prior to synchronizing the file to the one of the plurality of nodes; and
synchronizing, when the change is detected, a latest version of metadata of the file to the one of the plurality of nodes before the completion of opening the file on the one of the plurality of nodes.

### Claim 15 (depends on 10)

The method of claim 10 further comprising blocking modification of the file stored on the second storage medium while the file is being used on the one of the plurality of nodes.

### Claim 16

A hierarchical storage management system comprising:
a processor; and
machine readable instructions, stored on a tangible machine readable medium, when executed by the processor, configure the processor to:
host a file system representing a replica of file systems hosted on a plurality of nodes, each of the plurality of nodes storing data on a first storage medium;
store data associated with the file system on a second storage medium that is remote from the plurality of nodes and slower to process data stored thereon than the first storage medium;
receive a file from one of the plurality of nodes when the file remains un-accessed by the plurality of nodes for a predetermined period of time;
store the file on the second storage medium, a pointer to the file and not the data content of the file being stored on the first storage medium on the plurality of nodes;
provide the plurality of nodes read and write access to the file stored on the second storage medium using the pointer on the first storage medium;
allow concurrent opens of the file across the plurality of nodes without providing the data content of the file to the first storage medium of each node of the plurality of nodes, wherein the instructions further configure the processor to, upon a node requesting an open of the file, synchronize metadata of the file to the file systems on the plurality of nodes prior to completion of opening the file on the node requesting the open of the file.

### Claim 17 (depends on 16)

The system of claim 16 wherein the machine readable instructions further configure the processor to:
create a snapshot of content of a particular version of the file on the second storage medium, wherein the particular version is immutable, and wherein the snapshot is a recallable instance of data backing the file on the second storage medium while the file is being used on one of the plurality of nodes; and
identify and locate the recallable instance of data backing the file.

### Claim 18 (depends on 16)

The system of claim 16 wherein the machine readable instructions further configure the processor to synchronize the file to the file systems on the plurality of nodes prior to completion of opening the file on one of the plurality of nodes.
