IP Library › Granted Patent US 10,331,559
Granted Patent B2
US 10,331,559 · App. 14/838,200 · Granted Jun 25, 2019

Input/output filter configuration of linked storage

Inventors: Christoph Klee (Snoqualmie, WA); Adrian Drzewiecki (Mountain View, CA); Aman Nijhawan (Seattle, WA)
Assignee: VMware, Inc.
G06F12/0802G06F3/061G06F3/0659G06F3/0683G06F9/5077G06F2212/1016G06F2212/50
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,331,559
App. No.
14/838,200
Granted
Jun 25, 2019
Kind
B2
Abstract

Exemplary methods, apparatuses, and systems include a first input/output (I/O) filter receiving, from a first filter module within a virtualization stack of a host computer, an input/output (I/O) request originated by a virtual machine and directed to a first virtual disk. The first I/O filter determines to redirect the I/O request to a second virtual disk and, in response, forwards the I/O request to a second I/O filter associated with the second virtual disk. The first I/O filter is a part of a first instance of a filter framework within the host computer and the second I/O filter is part of a second, separate instance of the filter framework.

Claims (55)

1. A computer-implemented method, comprising:

intercepting an input/output (I/O) request at a first filter module within a virtualization stack of a host computer, wherein the I/O request is intercepted from a first virtual machine and directed to a first virtual disk of a plurality of virtual disks;

determining a first I/O filter, of a plurality of I/O filters, that is attached to the first virtual disk, wherein the determining that the first I/O filter is attached to the first virtual disk is based on metadata of the first virtual disk identifying one or more attached I/O filters;

in response to the determining, forwarding the I/O request to the first I/O filter;

determining, by the first I/O filter, and based on the type of I/O request, to redirect the I/O request from the first virtual disk to a second virtual disk; and

forwarding, by the first I/O filter module in response to the determination to redirect the I/O request based on the type of I/O request, the I/O request to a second I/O filter associated with the second virtual disk, wherein the first I/O filter is a part of a first instance of a filter framework within the host computer and the second I/O filter is part of a second, separate instance of the filter framework.

2. The computer-implemented method of claim 1 , wherein the second virtual disk is a base disk, the first virtual disk is a linked clone of the base disk, and the linked clone is linked to the base disk through attaching the first I/O filter to the first virtual disk.

3. The computer-implemented method of claim 2 , wherein the I/O request is redirected by the first I/O filter in response to the first I/O filter determining that the I/O request is a request to read data stored on the base disk, and wherein the first I/O filter module forwards write requests from the virtual machine to the first virtual disk.

4. The computer-implemented method of claim 3 , wherein the write requests from the virtual machine are forwarded to a third I/O filter prior to being forwarded to the first virtual disk, wherein the third I/O filter is a part of the first instance of a filter framework.

5. The computer-implemented method of claim 1 , wherein the first virtual disk includes metadata used by the virtualization stack to manage the first virtual disk, the method further comprising;

detecting, by the first filter module, an indication, within the metadata, of at least one I/O filter attached to the first virtual disk; and

forwarding, by the first filter module, the I/O request to the first I/O filter in response to detecting the indication of the at least one I/O filter in the metadata.

6. The computer-implemented method of claim 1 , further comprising:

determining, by the second I/O filter to redirect the I/O request to a resource external to the host computer; and

forwarding, by the second I/O filter, the I/O request to the external resource.

7. The computer-implemented method of claim 6 , further comprising:

receiving, by the second I/O filter, data from the external resource in response to the forwarded I/O request; and

caching, by a third I/O filter within the second instance of the filter framework, the data received from the external resource within the second virtual disk.

8. A non-transitory computer-readable medium storing instructions, which when executed by a processing device, cause the processing device to perform a method comprising:

intercepting an input/output (I/O) request at a first filter module within a virtualization stack of a host computer, wherein the I/O request is intercepted from a first virtual machine and directed to a first virtual disk of a plurality of virtual disks;

determining a first I/O filter, of a plurality of I/O filters, that is attached to the first virtual disk, wherein the determining that the first I/O filter is attached to the first virtual disk is based on metadata of the first virtual disk identifying one or more attached I/O filters;

in response to the determining, forwarding the I/O request to the first I/O filter;

determining, by the first I/O filter, and based on the type of I/O request, to redirect the I/O request from the first virtual disk to a second virtual disk; and

forwarding, by the first I/O filter module in response to the determination to redirect the I/O request based on the type of I/O request, the I/O request to a second I/O filter associated with the second virtual disk, wherein the first I/O filter is a part of a first instance of a filter framework within the host computer and the second I/O filter is part of a second, separate instance of the filter framework.

9. The non-transitory computer-readable medium of claim 8 , wherein the second virtual disk is a base disk, the first virtual disk is a linked clone of the base disk, and the linked clone is linked to the base disk through attaching the first I/O filter to the first virtual disk.

10. The non-transitory computer-readable medium of claim 9 , wherein the I/O request is redirected by the first I/O filter in response to the first I/O filter determining that the I/O request is a request to read data stored on the base disk, and wherein the first I/O filter module forwards write requests from the virtual machine to the first virtual disk.

11. The non-transitory computer-readable medium of claim 10 , wherein the write requests from the virtual machine are forwarded to a third I/O filter prior to being forwarded to the first virtual disk, wherein the third I/O filter is a part of the first instance of a filter framework.

12. The non-transitory computer-readable medium of claim 8 , the method further comprising:

intercepting, by the first filter module, the I/O request, wherein the first virtual disk includes metadata used by the virtualization stack to manage the first virtual disk;

detecting, by the first filter module, an indication, within the metadata, of at least one I/O filter attached to the first virtual disk; and

forwarding, by the first filter module, the I/O request to the first I/O filter in response to detecting the indication of the at least one I/O filter in the metadata.

13. The non-transitory computer-readable medium of claim 12 , the method further comprising:

determining, by the second I/O filter to redirect the I/O request to a resource external to the host computer; and

forwarding, by the second I/O filter, the I/O request to the external resource.

14. The non-transitory computer-readable medium of claim 13 , the method further comprising:

receiving, by the second I/O filter, data from the external resource in response to the forwarded I/O request; and

caching, by a third I/O filter within the second instance of the filter framework, the data received from the external resource within the second virtual disk.

15. A host computer comprising:

a processing device; and

a memory coupled to the processing device, the memory storing instructions which, when executed by the processing device, cause the host computer to:

intercept an input/output (I/O) request at a first filter module within a virtualization stack of the host computer, wherein the I/O request is intercepted from a first virtual machine and directed to a first virtual disk of a plurality of virtual disks;

determine a first I/O filter, of a plurality of I/O filters, that is attached to the first virtual disk, wherein the determining that the first I/O filter is attached to the first virtual disk is based on metadata of the first virtual disk identifying one or more attached I/O filters;

in response to the determining, forward the I/O request to the first I/O filter;

determine, by the first I/O filter, and based on the type of I/O request, to redirect the I/O request from the first virtual disk to a second virtual disk; and

forward, by the first I/O filter module in response to the determination to redirect the I/O request based on the type of I/O request, the I/O request to a second I/O filter associated with the second virtual disk, wherein the first I/O filter is a part of a first instance of a filter framework within the host computer and the second I/O filter is part of a second, separate instance of the filter framework.

16. The host computer of claim 15 , wherein the second virtual disk is a base disk, the first virtual disk is a linked clone of the base disk, and the linked clone is linked to the base disk through attaching the first I/O filter to the first virtual disk.

17. The host computer of claim 16 , wherein the I/O request is redirected by the first I/O filter in response to the first I/O filter determining that the I/O request is a request to read data stored on the base disk, and wherein the first I/O filter module forwards write requests from the virtual machine to the first virtual disk.

18. The host computer of claim 17 , wherein the write requests from the virtual machine are forwarded to a third I/O filter prior to being forwarded to the first virtual disk, wherein the third I/O filter is a part of the first instance of a filter framework.

19. The host computer of claim 15 , wherein the instructions further cause the host computer to:

intercept, by the first filter module, the I/O request, wherein the first virtual disk includes metadata used by the virtualization stack to manage the first virtual disk;

detect, by the first filter module, an indication, within the metadata, of at least one I/O filter attached to the first virtual disk; and

forward, by the first filter module, the I/O request to the first I/O filter in response to detecting the indication of the at least one I/O filter in the metadata.

20. The host computer of claim 19 , wherein the instructions further cause the host computer to:

determine, by the second I/O filter to redirect the I/O request to a resource external to the host computer; and

forward, by the second I/O filter, the I/O request to the external resource.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2015
From: KLEE, CHRISTOPH; DRZEWIECKI, ADRIAN; NIJHAWAN, AMAN
To: VMWARE, INC.
Reel/Frame 036443/0374 →
Continuity (1)
Related Publication 20170060483A1 · Mar 2, 2017