IP Library Granted Patent US 10,838,914
Granted Patent B2
US 10,838,914 · App. 16/011,859 · Granted Nov 17, 2020

Chain file system

Inventors: Goutham Rao (Los Altos, CA); Vinod Jayaraman (San Francisco, CA)
Assignee: Portworx, Inc.
G06F16/13G06F16/128G06F16/188G06F21/53G06F21/6218
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,838,914
App. No.
16/011,859
Granted
Nov 17, 2020
Kind
B2
Abstract

Techniques and mechanisms described herein facilitate the execution of a software program container having a plurality of layers. Each layer may include a plurality of files. For instance, a base layer may include a version of an operating system, while an upper layer may include a software program configured to run within the operating system. Different layers may store, create, or modify the same file. However, the precedence of the version of the data for the file may be based on an ordering of the layers. For example, the version of the file in a higher layer should supersede the version of the file in a lower layer. In some implementations, a privileged storage container that runs atop a virtualization layer may manage storage resources for other containers. The privileged storage container may store each file in a software program container as a snapshotable object.

Claims (40)

1. A method comprising:

receiving a request to write data to a designated file included in a containerized application that is loaded into a memory module on a computing device and being executed by a processor at the computing device, the containerized application including instructions arranged in a plurality of layers, the layers being ordered from lowest to highest, each layer including a respective plurality of files, the designated file included in more than one of the layers;

identifying a file inode number providing a unique identifier for accessing the designated file;

identifying a file snapshot corresponding to the file inode number, the file snapshot including one or more file snapshot data blocks, each of the file snapshot data blocks including data that is additional to or different than any data associated with the designated file in a lower level layer;

writing the data to one or more designated data blocks on a storage volume in communication with the computing device; and

updating the identified file snapshot to include the one or more designated data blocks.

2. The method recited in claim 1 , the method further comprising:

loading each layer into memory.

3. The method recited in claim 2 , wherein loading a designated layer into memory includes creating a respective file snapshot and a respective file inode number for one or more files in the designated layer.

4. The method recited in claim 3 , wherein the one or more files for which a respective file snapshot and a respective file inode number are created include each file in the designated layer that is not present in a lower level layer.

5. The method recited in claim 3 , wherein the one or more files for which a respective file snapshot and a respective file inode number are created include each file in the designated layer that is present in a lower level layer but modified by the designated layer.

6. The method recited in claim 2 , wherein the layers are loaded into memory in order from lowest to highest.

7. The method recited in claim 1 , wherein the layers include a first layer and a second layer at the same level.

8. The method recited in claim 1 , wherein the lowest layer includes files that together implement an operating system.

9. The method recited in claim 1 , wherein the file snapshot is created by a privileged storage container, the privileged storage container having privileged access to the storage volume.

10. The method recited in claim 9 , wherein the privileged storage container is operable to facilitate communication among a plurality of storage container nodes, each storage container node implemented on a respective computing device, the storage container nodes operable to distribute data among the computing devices.

11. The method recited in claim 10 , wherein a request for data may be received at a first one of the storage container nodes and transmitted to a second one of the storage container nodes that includes data for responding to the request.

12. A system comprising:

a memory module operable to load a containerized application including instructions arranged in a plurality of layers, the layers being ordered from lowest to highest, each layer including a respective plurality of files;

a communications interface operable to receive a request to write data to a designated file included in the containerized application, the designated file included in more than one of the layers; and

a processor operable to:

execute the containerized application;

identify a file inode number providing a unique identifier for accessing the designated file;

identify a file snapshot corresponding to the file inode number, the file snapshot including one or more file snapshot data blocks, each of the file snapshot data blocks including data that is additional to or different than any data associated with the designated file in a lower level layer;

write the data to one or more designated data blocks on a storage volume in communication with the computing device; and

update the identified file snapshot to include the one or more designated data blocks.

13. The system recited in claim 12 , wherein loading a designated layer into memory includes creating a respective file snapshot and a respective file inode number for one or more files in the designated layer.

14. The system recited in claim 13 , wherein the one or more files for which a respective file snapshot and a respective file inode number are created include each file in the designated layer that is not present in a lower level layer or that is present in a lower level layer but modified by the designated layer.

15. The system recited in claim 13 , wherein the layers are loaded into memory in order from lowest to highest.

16. The system recited in claim 12 , wherein the file snapshot is created by a privileged storage container, the privileged storage container having privileged access to the storage volume.

17. The system recited in claim 16 , wherein the privileged storage container is operable to facilitate communication among a plurality of storage container nodes, each storage container node implemented on a respective computing device, the storage container nodes operable to distribute data among the computing devices.

18. The system recited in claim 17 , wherein a request for data may be received at a first one of the storage container nodes and transmitted to a second one of the storage container nodes that includes data for responding to the request.

19. One or more non-transitory computer readable media having instructions stored thereon for performing a method, the method comprising:

receiving a request to write data to a designated file included in a containerized application that is loaded into a memory module on a computing device and being executed by a processor at the computing device, the containerized application including instructions arranged in a plurality of layers, the layers being ordered from lowest to highest, each layer including a respective plurality of files, the designated file included in more than one of the layers;

identifying a file inode number providing a unique identifier for accessing the designated file;

identifying a file snapshot corresponding to the file inode number, the file snapshot including one or more file snapshot data blocks, each of the file snapshot data blocks including data that is additional to or different than any data associated with the designated file in a lower level layer;

writing the data to one or more designated data blocks on a storage volume in communication with the computing device; and

updating the identified file snapshot to include the one or more designated data blocks.

20. The one or more non-transitory computer readable media recited in claim 19 , the method further comprising:

loading each layer into memory, wherein loading a designated layer into memory includes creating a respective file snapshot and a respective file inode number for one or more files in the designated layer, and wherein the one or more files for which a respective file snapshot and a respective file inode number are created include each file in the designated layer that is not present in a lower level layer or that is present in a lower level layer but modified by the designated layer.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2022
From: PORTWORX, INC.
To: PURE STORAGE, INC., A DELAWARE CORPORATION
Reel/Frame 061033/0742 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 19, 2018
From: RAO, GOUTHAM; JAYARAMAN, VINOD
To: PORTWORX, INC.
Reel/Frame 046127/0685 →
Continuity (2)
Continuation 15173549 · Jun 3, 2016
Related Publication 20180300348A1 · Oct 18, 2018
Cited By (2)
US 12,216,615 US 12,367,178