IP Library Granted Patent US 10,430,378
Granted Patent B1
US 10,430,378 · App. 15/269,395 · Granted Oct 1, 2019

Fast container distribution with storage acceleration

Inventors: Tyler Harter (La Crosse, WI); Rose F. Liu (San Jose, CA); Brandon W. Salmon (Menlo Park, CA)
Assignee: Tintri by DDN, Inc.
G06F16/128G06F11/1469G06F16/16G06F2201/84
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,430,378
App. No.
15/269,395
Granted
Oct 1, 2019
Kind
B1
Abstract

Storage system accelerated techniques to distribute and run containerized applications are disclosed. In various embodiments, an indication to run a container is received. A snapshot identifier comprising an image data associated with the container is used to create a clone based on a snapshot with which the snapshot identifier is associated. The clone is used to store data associated with at least a topmost layer of the container.

Claims (41)

1. A method, comprising:

receiving an indication to run a container;

extracting from image data associated with the container a snapshot identifier associated with the container;

using the snapshot identifier comprising the image data associated with the container to create a clone based on a snapshot with which the snapshot identifier is associated, including by sending the snapshot identifier to a storage device and requesting that the storage device create the clone;

using data comprising the cloned snapshot to build and run the container;

using the clone to store data associated with at least a topmost layer of the container;

using a modified loopback module to provide a page cache that is shared by a file associated with said clone and a parent file associated with said snapshot; and

using a bitmap to keep track of which offsets in said file associated with said clone have been modified from a corresponding value at a corresponding offset in said parent file.

2. The method of claim 1 , wherein the snapshot identifier is included in a layer data portion of the image data.

3. The method of claim 1 , wherein using the clone to store data associated with at least a topmost layer of the container includes representing the container data as a single file.

4. The method of claim 3 , wherein the single file comprises a Network File System (NFS) file formatted as an ext4 file system.

5. The method of claim 3 , wherein using the clone to store data associated with at least a topmost layer of the container further includes using a Linux loopback to treat the single file as a virtual block device.

6. The method of claim 1 , wherein the image data is created at least in part by taking said snapshot with which the snapshot identifier is associated.

7. The method of claim 1 , further comprising receiving said image data and determining based on a prescribed initial portion of said image data that said image data is of a type that includes said snapshot identifier.

8. The method of claim 7 , further comprising reverting to a conventional process to run the container in the event it is determined that said image data is not of the type that includes said snapshot identifier.

9. The method of claim 1 , wherein the image data includes for each of a plurality of layers a corresponding layer-specific snapshot identifier, and further comprising successively storing each snapshot identifier as local metadata; and wherein said clone is created lazily for only said topmost layer of the container, using said snapshot identifier as read from said local metadata.

10. The method of claim 1 , wherein said image data is created at least in part by obtaining said snapshot identifier from a snapshot cache, if available from the cache, or taking the snapshot and caching the identifier in the event the snapshot identifier is not already in the snapshot cache.

11. The method of claim 1 , further comprising using the bitmap to determine whether to use the shared page cache to respond to a request to read said file associated with said clone at a given offset or to instead read the requested data from the file associated with said clone as stored in a backend storage system or device.

12. A system, comprising:

a communication interface; and

a processor coupled to the communication interface and configured to:

receive via the communication interface an indication to run a container;

extract from image data associated with the container a snapshot identifier associated with the container;

use the snapshot identifier comprising the image data associated with the container to create a clone based on a snapshot with which the snapshot identifier is associated, including by sending the snapshot identifier to a storage device and requesting that the storage device create the clone;

use data comprising the cloned snapshot to build and run the container;

use the clone to store data associated with at least a topmost layer of the container;

use a modified loopback module to provide a page cache that is shared by a file associated with said clone and a parent file associated with said snapshot; and

use a bitmap to keep track of which offsets in said file associated with said clone have been modified from a corresponding value at a corresponding offset in said parent file.

13. The system of claim 12 , wherein the snapshot identifier is included in a layer data portion of the image data.

14. The system of claim 12 , wherein the processor is configured to use the clone to store data associated with at least a topmost layer of the container at least in part by representing the container data as a single file.

15. The system of claim 14 , wherein the single file comprises a Network File System (NFS) file formatted as an ext4 file system.

16. The system of claim 14 , wherein using the clone to store data associated with at least a topmost layer of the container further includes using a Linux loopback to treat the single file as a virtual block device.

17. The system of claim 12 , wherein the image data is created at least in part by taking said snapshot with which the snapshot identifier is associated.

18. A computer program product embodied in a non-transitory computer readable medium and comprising computer instructions for:

receiving an indication to run a container;

extracting from image data associated with the container a snapshot identifier associated with the container;

using the snapshot identifier comprising the image data associated with the container to create a clone based on a snapshot with which the snapshot identifier is associated, including by sending the snapshot identifier to a storage device and requesting that the storage device create the clone;

using data comprising the cloned snapshot to build and run the container;

using the clone to store data associated with at least a topmost layer of the container;

using a modified loopback module to provide a page cache that is shared by a file associated with said clone and a parent file associated with said snapshot; and

using a bitmap to keep track of which offsets in said file associated with said clone have been modified from a corresponding value at a corresponding offset in said parent file.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 31, 2019
From: TINTRI INC.
To: TI ACQUISITION CORP.
Reel/Frame 048201/0666 →
CHANGE OF NAME Recorded Jan 31, 2019
From: TI ACQUISITION CORP.
To: TINTRI BY DDN, INC.
Reel/Frame 048211/0685 →
SECURITY INTEREST Recorded Oct 13, 2018
From: TI ACQUISITION CORP.
To: TRIPLEPOINT CAPITAL LLC
Reel/Frame 047229/0463 →
SECOND AMENDMENT TO SECURITY AGREEMENT Recorded May 1, 2017
From: TINTRI, INC.
To: TRIPLEPOINT CAPITAL LLC
Reel/Frame 042380/0760 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 27, 2017
From: HARTER, TYLER; LIU, ROSE F.; SALMON, BRANDON W.
To: TINTRI INC.
Reel/Frame 041749/0326 →
Cited By (2)
US 12,443,401 US 12,664,123