IP Library Granted Patent US 11,500,814
Granted Patent B1
US 11,500,814 · App. 17/089,689 · Granted Nov 15, 2022

Chain file system

Inventors: Goutham Rao (Los Altos, CA); Vinod Jayaraman (San Francisco, CA)
Assignee: Pure Storage, 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 11,500,814
App. No.
17/089,689
Granted
Nov 15, 2022
Kind
B1
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 (34)

1. A method comprising:

receiving a request to modify 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 snapshot corresponding to the designated file, 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; and

modifying the file snapshot instead of copying the entire designated file.

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. A system comprising:

a processor; and

memory, the memory storing instructions to execute a method, the method comprising:

receiving a request to modify 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 snapshot corresponding to the designated file, 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; and

modifying the file snapshot instead of copying the entire designated file.

9. The system recited in claim 8 , the method further comprising:

loading each layer into memory.

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

11. The system recited in claim 10 , 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.

12. The system recited in claim 10 , 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.

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

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

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

receiving a request to modify 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 snapshot corresponding to the designated file, 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; and

modifying the file snapshot instead of copying the entire designated file.

16. The one or more non-transitory computer readable media recited in claim 15 , wherein the method further comprises:

loading each layer into memory.

17. The one or more non-transitory computer readable media recited in claim 16 , 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.

18. The one or more non-transitory computer readable media recited in claim 17 , 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.

19. The one or more non-transitory computer readable media recited in claim 17 , 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.

20. The one or more non-transitory computer readable media recited in claim 16 , 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 Nov 6, 2020
From: RAO, GOUTHAM; JAYARAMAN, VINOD
To: PORTWORX, INC.
Reel/Frame 054293/0950 →
Continuity (2)
Continuation 16011859 · Jun 19, 2018
Continuation 15173549 · Jun 3, 2016