IP Library Granted Patent US 10,025,790
Granted Patent B2
US 10,025,790 · App. 15/173,549 · Granted Jul 17, 2018

Chain file system

Inventors: Goutham Rao (Los Altos, CA); Vinod Jayaraman (San Francisco, CA)
Assignee: Portworx, Inc.
G06F17/30091G06F17/30088G06F21/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,025,790
App. No.
15/173,549
Granted
Jul 17, 2018
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 (29)

1. A method comprising:

retrieving from a storage device instructions for implementing a containerized application, the instructions being arranged in a plurality of layers, the layers being ordered from lowest to highest, each layer including a respective plurality of files, a designated file capable of being included in more than one of the layers;

loading each layer into memory, wherein loading a designated layer into memory includes creating a file snapshot and a file inode number for each file in the designated layer that is either not present in a lower level layer or that is present in a lower level layer but modified by the designated layer, the file snapshot including one or more data blocks, each of the data blocks in the file snapshot including data that is additional to or different than any data associated with the file in a lower level layer, the file inode number providing a unique identifier for accessing the file, the file inode number corresponding to the file snapshot; and

executing the containerized application when it is loaded into memory.

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

3. The method recited in claim 1 , wherein executing the containerized application comprises writing to a designated file within one of the layers.

4. The method recited in claim 1 , wherein writing to the designated file comprises identifying an inode associated with the designated file and identifying a snapshot associated with the inode.

5. The method recited in claim 4 , wherein writing to the designated file further comprises writing data to one or more designated data blocks and updating the identified snapshot to include the one or more designated data blocks.

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

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

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

9. The method recited in claim 8 , 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.

10. The method recited in claim 9 , 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.

11. A system comprising:

a storage device configured to store instructions for implementing a containerized application, the instructions being arranged in a plurality of layers, the layers being ordered from lowest to highest, each layer including a respective plurality of files, a designated file capable of being included in more than one of the layers;

memory configured to load each layer, wherein loading a designated layer into memory includes creating a file snapshot and a file inode number for each file in the designated layer that is either not present in a lower level layer or that is present in a lower level layer but modified by the designated layer, the file snapshot including one or more data blocks, each of the data blocks in the file snapshot including data that is additional to or different than any data associated with the file in a lower level layer, the file inode number providing a unique identifier for accessing the file, the file inode number corresponding to the file snapshot; and

a processor configured to execute the containerized application when it is loaded into memory.

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

13. The system recited in claim 1 , wherein executing the containerized application comprises writing to a designated file within one of the layers.

14. The system recited in claim 1 , wherein writing to the designated file comprises identifying an inode associated with the designated file and identifying a snapshot associated with the inode.

15. The system recited in claim 4 , wherein writing to the designated file further comprises writing data to one or more designated data blocks and updating the identified snapshot to include the one or more designated data blocks.

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

17. The system recited in claim 1 , wherein the lowest layer includes files for providing an operating system.

18. The system recited in claim 1 , wherein the file snapshot is created by a privileged storage container, the privileged storage having privileged access to the storage device.

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

retrieving from a storage device instructions for implementing a containerized application, the instructions being arranged in a plurality of layers, the layers being ordered from lowest to highest, each layer including a respective plurality of files, a designated file capable of being included in more than one of the layers; and

loading each layer into memory, wherein loading a designated layer into memory includes creating a file snapshot and a file inode number for each file in the designated layer that is either not present in a lower level layer or that is present in a lower level layer but modified by the designated layer, the file snapshot including one or more data blocks, each of the data blocks in the file snapshot including data that is additional to or different than any data associated with the file in a lower level layer, the file inode number providing a unique identifier for accessing the file, the file inode number corresponding to the file snapshot; and

executing the containerized application when it is loaded into memory.

20. The one or more computer readable media recited in claim 1 , wherein the layers are loaded into memory in order from lowest to highest.

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 Mar 20, 2017
From: RAO, GOUTHAM; JAYARAMAN, VINOD
To: PORTWORX, INC.
Reel/Frame 041641/0936 →
Continuity (1)
Related Publication 20170351695A1 · Dec 7, 2017
Cited By (2)
US 12,216,615 US 12,367,178