IP Library Granted Patent US 9,146,765
Granted Patent B2
US 9,146,765 · App. 13/046,617 · Granted Sep 29, 2015

Virtual disk storage techniques

Inventors: John A. Starks (Seattle, WA); Dustin L. Green (Redmond, WA); Todd William Harris (Sammamish, WA); Mathew John (Redmond, WA); Senthil Rajaram (Seattle, WA); Karan Mehra (Sammamish, WA); Neal R. Christiansen (Bellevue, WA); Chung Lang Dai (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F9/45558G06F3/061G06F3/0644G06F3/0664G06F3/0689G06F17/30233G06F2009/45579
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 9,146,765
App. No.
13/046,617
Granted
Sep 29, 2015
Kind
B2
Abstract

This document describes techniques for storing virtual disk payload data. In an exemplary configuration, each virtual disk extent can be associated with state information that indicates whether the virtual disk extent is described by a virtual disk file. Under certain conditions the space used to describe a virtual disk extent can be reclaimed and state information can be used to determine how read and/or write operations directed to the virtual disk extent are handled. In addition to the foregoing, other techniques are described in the claims, figures, and detailed description of this document.

Claims (59)

1. A storage device comprising computer executable instructions that upon execution by a processor cause the processor to:

instantiate a virtual disk including a virtual disk extent, the virtual disk extent being dissociated from a virtual disk file;

allocate, based on state information associated with the virtual disk, a section of the virtual disk file to describe the virtual disk extent without overwriting a preexisting bit pattern within the section of the virtual disk file; and

modify the state information associated with the virtual disk extent to indicate that the virtual disk extent is described by the virtual disk file.

2. The storage device of claim 1 , further comprising instructions that upon execution cause the processor to:

respond to an offset query command with information that identifies sectors of the virtual disk that are non-zero, sectors of the virtual disk that are in a non-transparent state, sectors of the virtual disk that are in a mapped state, and/or sectors of the virtual disk that are in an initialized state.

3. The storage device of claim 1 , further comprising instructions that upon execution cause the processor to:

send a request to a file system controlling the virtual disk file to issue at least one command selected from a group of commands including a trim command, an unmap command, a write same of zero command, and an offload write of a zero token command.

4. The storage device of claim 1 , further comprising instructions that upon execution cause the processor to:

determine a portion of the virtual disk file that corresponds to a portion of a second virtual disk extent in response to receipt of a request to trim a portion of the second virtual disk extent; and

send a trim command for the determined portion of the virtual disk file to a file system configured to store the virtual disk file on a storage device.

5. The storage device of claim 1 , further comprising instructions that upon execution cause the processor to:

dissociate the virtual disk extent from the section of the virtual disk file and modify the state information associated with the virtual disk extent to indicate that the virtual disk extent has no associated space in the virtual disk file in response to receipt of a request to trim a range of sectors that covers the virtual disk extent.

6. The storage device of claim 5 , further comprising instructions that upon execution cause the processor to:

receive a request to write data to the virtual disk extent;

zero an unused section of the virtual disk file based on the state information associated with the virtual disk extent, the state information indicating that the virtual disk extent was zeroed; and

allocate the unused section of the virtual disk file to describe the virtual disk extent.

7. The storage device of claim 5 , further comprising instructions that upon execution cause the processor to:

receive a request to write to the virtual disk extent; and

allocate an unused section of the virtual disk file to describe the virtual disk extent without modifying contents of the unused section of the virtual disk file based on the state information associated with the virtual disk extent, the state information indicating that the file system is securing access to the virtual disk extent.

8. The storage device of claim 5 , further comprising instructions that upon execution cause the processor to:

receive a request to write to the virtual disk extent;

overwrite an unused section of the virtual disk file with a non-information-disclosing bit pattern based on the state information associated with the virtual disk extent, the state information indicating that the file system is not securing access to the virtual disk extent; and

allocate the overwritten section of the virtual disk file to describe the virtual disk extent.

9. The storage device of claim 5 , further comprising instructions that upon execution cause the processor to:

send, based on state information indicating that the virtual disk extent was zeroed, a token representing zeros to a requestor in response to receipt of an offload read request associated with the virtual disk extent.

10. A computer system, comprising:

a processor;

a memory coupled to the processor when the processor and the memory are powered, the memory including instructions that upon execution by the processor cause the computer system to:

receive a signal indicating that a portion of a virtual disk extent is no longer in use, the virtual disk extent being part of a virtual disk, the virtual disk being stored in a virtual disk file;

identify a portion of the virtual disk file that describes the portion of the virtual disk extent; and

send a request to trim the identified portion of the virtual disk file to a file system configured to store the virtual disk file on a storage device.

11. The computer system of claim 10 , the memory further comprising instructions that upon execution cause the computer system to:

send, based on state information indicating that the virtual disk extent was zeroed, a token representing zeros to a requestor in response to receipt of an offload read request associated with the virtual disk extent.

12. The computer system of claim 10 , the virtual disk file being a member of a group of virtual disk files that together form a virtual disk that includes the virtual disk extent and the memory further comprising instructions that upon execution cause the computer system to:

select a sub-group from the group of virtual disk files; and

generate information that identifies sectors of the sub-group that include data and sectors of the sub-group that are transparent.

13. The computer system of claim 10 , the memory further comprising instructions that upon execution cause the computer system to:

dissociate the virtual disk extent from the virtual disk file and modify state information associated with the virtual disk extent to indicate that the virtual disk extent has been zeroed in response to determining that the virtual disk extent was zeroed.

14. The computer system of claim 10 , the memory further comprising instructions that upon execution cause the computer system to:

dissociate the virtual disk extent from the virtual disk file and modify state information associated with the virtual disk extent to indicate that the virtual disk extent is free space in response to a determination that the virtual disk extent is considered free space by a file system.

15. The computer system of claim 10 , the memory further comprising instructions that upon execution cause the computer system to:

dissociate the extent from the virtual disk file and modify state information associated with the virtual disk extent to indicate that the virtual disk extent includes a non-information-disclosing bit pattern in response to a determination that the virtual disk extent was trimmed.

16. The computer system of claim 10 , the memory further comprising instructions that upon execution cause the computer system to:

send a request to issue a trim command to a file system controlling the virtual disk.

17. A computer implemented method for storing data for a virtual machine, comprising:

executing a guest operating system including a file system within a virtual machine;

exposing a virtual storage device to the guest operating system, the virtual storage device including a virtual disk extent, the virtual disk extent being dissociated from a virtual disk file;

receiving a request to write data to the virtual disk extent;

determining that state information associated with the virtual disk extent indicates that the virtual disk extent is free space;

allocating a section of the virtual disk file to describe the virtual disk extent without overwriting a preexisting bit pattern within the section of the virtual disk file;

modifying the state information associated with the virtual disk extent to indicate that the virtual disk extent is mapped to the allocated section of the virtual disk file; and

storing the data to the allocated section of the virtual disk file.

18. The method of claim 17 , further comprising

dissociating the virtual disk extent from the virtual disk file and modifying the state information associated with the virtual disk extent to indicate that the virtual disk extent has been zeroed in response to determining that the virtual disk extent was zeroed.

19. The method of claim 17 , further comprising

dissociating the virtual disk extent from the virtual disk file and modifying the state information associated with the virtual disk extent to indicate that the virtual disk extent includes arbitrary data in response to receipt of a signal from a file system identifying the virtual disk extent as free space.

20. The method of claim 17 , further comprising

dissociating the virtual disk extent from the virtual disk file and modifying the state information associated with the virtual disk extent to indicate that the virtual disk extent includes a non-information disclosing bit pattern in response to receipt of a request to trim all the sectors of the virtual disk extent.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039025/0454 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2011
From: MUCELL EXTRUSION, LLC
To: TREXEL, INC.
Reel/Frame 026114/0943 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2011
From: STARKS, JOHN A.; GREEN, DUSTIN L.; HARRIS, TODD WILLIAM; JOHN, MATHEW; RAJARAM, SENTHIL; MEHRA, KARAN; CHRISTIANSEN, NEAL R.; DAI, CHUNG LANG
To: MICROSOFT CORPORATION
Reel/Frame 026041/0709 →
Continuity (1)
Related Publication 20120233434A1 · Sep 13, 2012