IP Library Granted Patent US 10,656,865
Granted Patent B1
US 10,656,865 · App. 15/377,912 · Granted May 19, 2020

Virtualized block device backing for virtualization containers

Inventors: Cornelle Christiaan Pretorius Janse van Rensburg (Seattle, WA); Samuel Benjamin Karp (Seattle, WA)
Assignee: Amazon Technologies, Inc.
G06F3/065G06F3/064G06F3/067G06F3/0619
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,656,865
App. No.
15/377,912
Granted
May 19, 2020
Kind
B1
Abstract

Technologies are provided for backing virtualization containers with layered storage volumes stored in remote storage devices. A virtualization container can present a virtual storage volume to a process running in the virtualization container and handle data access requests from the process using a layered storage volume based on one or more read-only snapshots stored in one or more remote storage devices. Changes can be recorded in a read-write layer in one or more of the remote storage devices and associated with the layered storage volume. A new read-only snapshot can be created based on the data in the read-write storage layer and associated with the one or more read-only snapshots on which the layered storage volume is based. A virtualization container can be associated with a new layered storage volume based on the created read-only snapshot and the one or more read-only snapshots on which it is based.

Claims (44)

1. A method, comprising:

instantiating a virtualization container from a virtualization container image on top of an operating system kernel of a host, wherein the virtualization container image comprises a plurality of read-only image layers;

receiving a command to create a storage volume for the virtualization container based on an image manifest comprising a list of the plurality of read-only image layers of the virtualization container image;

identifying a read-only image layer of the plurality of read-only image layers of the virtualization container image;

searching a remote storage device for a snapshot associated with the read-only image layer of the plurality of read-only image layers of the virtualization container image; and

if a snapshot associated with the read-only image layer of the plurality of read-only image layers of the virtualization container image is found, creating a remote storage volume in the remote storage device based on the snapshot and connecting the virtualization container to the remote storage volume;

otherwise, creating a new snapshot in the remote storage device using data for the read-only image layer of the plurality of read-only image layers of the virtualization container image and connecting the virtualization container to a remote storage volume in the remote storage device that is based on the new snapshot.

2. The method of claim 1 , further comprising:

presenting the new remote storage volume to a process running in the new virtualization container as a mounted volume; and

tunneling data access operations targeting the mounted volume to the remote storage volume.

3. The method of claim 1 , wherein creating the new snapshot in the remote storage device using data for the read-only image layer of the plurality of read-only image layers of the virtualization container image and connecting the virtualization container to a remote storage volume in the remote storage device that is based on the new snapshot comprises:

creating the remote storage volume in the remote storage device;

writing the data for the read-only image layer of the plurality of read-only image layers of the virtualization container image to a read-write storage layer of the remote storage volume;

creating the new snapshot using the data in the read-write storage layer of the remote storage volume; and

associating the new snapshot with the remote storage volume.

4. The method of claim 1 , further comprising:

receiving a command to create a new image for the virtualization container;

responsive to receiving the command, creating a new snapshot of the remote storage volume connected to the virtualization container, wherein creating the new snapshot of the remote storage volume comprises:

determining differences between the remote storage volume and another snapshot, wherein the another snapshot is a snapshot on which the remote storage volume is based,

storing the differences in the new snapshot, and

associating the new snapshot with the another snapshot with a relationship that indicates the new snapshot is based on the another snapshot;

storing the created snapshot in the remote storage device; and

registering the created snapshot as the new image with an image repository.

5. The method of claim 4 , further comprising:

receiving a data write request from a process running in the virtualization container;

creating a read-write storage layer in the remote storage volume;

writing data contained in the data write request to the read-write storage layer; and

wherein determining differences between the remote storage volume and the another snapshot comprises:

identifying the data written to the read-write storage layer, and

storing a read-only copy of the identified data in the new snapshot.

6. The method of claim 5 , further comprising:

determining that the data write request comprises a request to modify data stored in the another snapshot;

copying the data to be modified from the another snapshot to the read-write storage layer; and

modifying the copy of the data in the read-write storage layer.

7. The method of claim 4 , further comprising:

generating an image manifest that identifies the new snapshot, the another snapshot, and the relationship between the new snapshot and the another snapshot; and

transmitting the image manifest to the image repository.

8. The method of claim 4 , wherein:

the remote storage device is one of multiple storage devices in a distributed block storage; and

storing the new snapshot in the remote storage device comprises storing multiple data blocks associated with the new snapshot in the remote storage device.

9. The method of claim 8 , further comprising:

receiving a request for data from a process running in the virtualization container;

determining that the requested data comprises a data block associated with the new snapshot that is stored in the remote storage device; and

retrieving the data block from the remote storage device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 5, 2017
From: KARP, SAMUEL BENJAMIN; JANSE VAN RENSBURG, CORNELLE CHRISTIAAN PRETORIUS
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 042911/0567 →
Cited By (7)
US 12,236,103 US 12,282,468 US 12,287,825 US 12,321,449 US 12,386,556 US 12,487,887 US 12,547,471