Trim support for a solid-state drive in a virtualized environment
10642529 ยท 2020-05-05
Assignee
Inventors
Cpc classification
G06F3/0604
PHYSICS
G06F3/0664
PHYSICS
G06F2212/7205
PHYSICS
G06F3/0679
PHYSICS
G06F3/0652
PHYSICS
G06F2009/45579
PHYSICS
International classification
G06F9/455
PHYSICS
Abstract
A computer system that employs a solid-state memory device as a physical storage resource includes a hypervisor that is capable of supporting TRIM commands issued by virtual machines running in the computer system. When a virtual machine issues a TRIM command to its corresponding virtual storage device to invalidate data stored therein, the TRIM command is received at an interface layer in the hypervisor that translates the TRIM command to a SCSI command known as UMMAP. A SCSI virtualization layer converts the UNMAP command to a file system command to delete portions of the virtual storage device that is maintained as a file in the hypervisor's file system. Upon receiving the delete commands, the hypervisor's file system driver generates a TRIM command to invalidate the data stored in the solid-state memory device at locations corresponding to the portions of the file that are to be deleted.
Claims
1. A method of issuing commands to invalidate physical data blocks stored in a physical serial advanced technology attachment (SATA) memory device, the method comprising: receiving a first trim command to invalidate a virtual data block of a virtual SATA memory device, the virtual SATA memory device mapped to a portion of the physical SATA memory device; translating the received first trim command into a small computer system interface (SCSI) command to release the virtual data block; translating the SCSI command to a file system command to delete portions of a file that corresponds to the virtual SATA memory device; translating the file system command into a block operation to invalidate a physical data block of the physical SATA memory device, the physical data block of the physical SATA memory device corresponding to the virtual data block of the virtual SATA memory device; and issuing a second trim command to invalidate the physical data block to the physical SATA memory device based on the block operation.
2. The method of claim 1, wherein the physical SATA memory device is a physical solid-state memory device, and wherein the virtual SATA memory device is a virtual solid-state memory device.
3. The method of claim 1, wherein the SCSI command is an unmap command.
4. The method of claim 1, wherein deleted portions of the file are mapped to the physical data block.
5. The method of claim 1, wherein the first trim command to invalidate the virtual data block is received from a virtual machine.
6. The method of claim 5, further comprising receiving an inquiry from the virtual machine regarding a characteristic of the virtual SATA memory device.
7. The method of claim 6, wherein the characteristic is a rotational rate of a recording medium of the virtual SATA memory device.
8. The method of claim 1, wherein translating the file system command to a block operation to invalidate a physical data block of the physical SATA memory device includes: translating the block operation obtained from translating the file system command to a block operation to invalidate a logical block in a logical volume; and translating the block operation to invalidate the logical block to the block operation to invalidate the physical data block of the physical SATA memory device.
9. A computer system comprising: a memory; a physical SATA memory device; and a processor coupled to the memory and configured to: receive a first trim command to invalidate a virtual data block of a virtual SATA memory device, the virtual SATA memory device mapped to a portion of the physical SATA memory device; translate the received first trim command into a small computer system interface (SCSI) command to release the virtual data block; translate the SCSI command to a file system command to delete portions of a file that corresponds to the virtual SATA memory device; translate the file system command into a block operation to invalidate a physical data block of the physical SATA memory device, the physical data block of the physical SATA memory device corresponding to the virtual data block of the virtual SATA memory device; and issue a second trim command to invalidate the physical data block to the first physical SATA memory device based on the block operation.
10. The computer system of claim 9, wherein the physical SATA memory device is a physical solid-state memory device, and wherein the virtual SATA memory device is a virtual solid-state memory device.
11. The computer system of claim 9, wherein the SCSI command is an unmap command.
12. The computer system of claim 9, wherein the deleted portions of the file are mapped to physical data block.
13. The computer system of claim 9, wherein the first trim command to invalidate the virtual data block is received from a virtual machine.
14. The computer system of claim 13, wherein the processor is further configured to receive an inquiry from the virtual machine regarding a characteristic of the virtual SATA memory device.
15. The computer system of claim 14, wherein the characteristic is a rotational rate of a recording medium of the virtual SATA memory device.
16. The computer system of claim 9, wherein the processor being configured to translate the file system command to a block operation to invalidate a physical data block of the physical SATA memory device includes being configured to: translate the block operation to invalidate a logical block in a logical volume; and translate the block operation to invalidate the logical block to a block operation to invalidate the physical data block of the physical SATA memory device.
17. A non-transitory computer readable storage medium comprising instructions executable by a computer system to carry out a method of issuing commands to invalidate physical data blocks stored in a physical serial advanced technology attachment (SATA) memory device, the method comprising: receiving a first trim command to invalidate a virtual data block of a virtual SATA memory device, the virtual SATA memory device mapped to a portion of the physical SATA memory device; translating the received first trim command into a small computer system interface (SCSI) command to release the virtual data block; translating the SCSI command to a file system command to delete portions of a file that corresponds to the virtual SATA memory device; translating the file system command into a block operation to invalidate a physical data block of the physical SATA memory device, the physical data block of the physical SATA memory device corresponding to the virtual data block of the virtual SATA memory device; and issuing a second trim command to invalidate the physical data block to the physical SATA memory device based on the block operation.
18. The non-transitory computer readable storage medium of claim 17, wherein the physical SATA memory device is a physical solid-state memory device, and wherein the virtual SATA memory device is a virtual solid-state memory device.
19. The non-transitory computer readable storage medium of claim 17, wherein the SCSI command comprises an unmap command.
20. The non-transitory computer readable storage medium of claim 17, wherein translating the file system command to a block operation to invalidate a physical data block of the physical SATA memory device includes: translating the block operation obtained from translating the file system command to a block operation to invalidate a logical block in a logical volume; and translating the block operation to invalidate the logical block to the block operation to invalidate the physical data block of the physical SATA memory device.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1)
(2)
(3)
(4)
DETAILED DESCRIPTION
(5)
(6) Each VM (e.g., VM 160.sub.1) in server 100 is an abstraction of a physical computer system having virtual hardware resources and a guest operating system (e.g., guest OS 164) that provides guest applications running in the VM (e.g., applications 166) an interface to the virtual hardware resources. Examples of a guest OS 164 include any of the well-known commodity operating systems, such as Microsoft Windows, Linux, and the like. In each instance of VM in server 100, the guest operating system of the VM includes a native file system layer (not shown), for example, either an NTFS or an ext3 type file system layer, that interfaces with one or more of the virtual hardware resources included in the VM's virtual hardware platform 174. Virtual hardware resources of VMs 160.sub.1-160.sub.N include a virtual storage device, which may be one or more virtual disks 162 or one or more virtual solid-state memory devices 163.
(7) After being instantiated, each of VMs 160.sub.1-160.sub.N encapsulates a physical computing machine platform that is executed under the control of hypervisor 120. The native file system layer of each VM interfaces the respective virtual hardware platform 174 to access, from the perspective of guest OS 164, a data storage host bus adapter (HBA). This HBA is, in reality, a virtual HBA 171 implemented by virtual hardware platform 174 that provides the appearance of storage device support in the form of one or more virtual disks 162 or one or more virtual solid-state memory devices 163 to guest OS 164. In this way, virtual HBA 171 allows guest OS 164 of each VM to execute seamlessy with the virtualized system hardware of the VM. In certain embodiments, virtual disks 162 may appear to support, from the perspective of guest OS 164, the SCSI standard for connecting to the VM, and virtual solid-state memory devices 163 may appear to support the SATA standard for connecting to the VM.
(8) Hardware platform 110 is comprised of conventional, though typically server-class, computer hardware components, such as one or more central processing units, random access memory, various types of input/output devices, and persistent storage. In the embodiment illustrated in
(9) Hypervisor 120 is a virtualization software layer that is installed on top of hardware platform 110 and supports virtual machine execution space 109 within which multiple VMs 1601-160N may be concurrently instantiated and executed. One example of hypervisor 120 that may be used is included as a component of the VMware vSphere product, which is commercially available from VMware, Inc. of Palo Alto, Calif. Hypervisor 120 includes an IO stack 170, a kernel that manages hardware resources of hardware platform 110 through various drivers, and virtual machine monitors (VMMs) 172A-172N, each emulating hardware resources for a corresponding one of VMs. For example, in
(10) IO stack 170 receives commands from a virtual machine and passes such commands through the various layers of IO stack 170 to physical HBAs 114 that connect to a storage system, e.g., disk array 191 or SSD array 192. IO stack 170 includes a virtual advanced host controller interface (VAHCI) adapter 173 (where an AHCI adapter provides an interface to SATA-compliant devices just as a host bus adapter provides an interface to SCSI-compliant devices), a SCSI virtualization layer 175, a file system (FS) driver 178, a logical volume manager 176, and a device access layer 180.
(11) VAHCI adapter 173 is a virtual AHCI adapter, and provides a mechanism that allows guest OS 164 to communicate with virtual SATA devices, such as virtual solid-state memory devices 163. To that end, VAHCI 173 is configured to support standard inquiries from guest OS 164 and, in response to such standard inquiries, inform guest OS 164 that virtual solid-state memory devices 163 are SATA-compliant devices capable of receiving TRIM commands from guest OS 164. In one embodiment, in response to an inquiry from a virtual machine about the characteristic of its virtual storage device, VAHCI 173 returns a value of 0 as the rotational rate of the recording medium in the virtual storage device. The value of 0 indicates to the guest OS 164 that the virtual storage device is a virtual solid-state memory device rather than a virtual disk. In addition, VAHCI 173 receives TRIM and other SATA commands from guest OS 164 and translates these commands into corresponding SCSI commands.
(12) SCSI virtualization layer 175 receives data transfer and control operation in the form of SCSI commands from VMM layers 1601-160N. SCSI virtualization layer 175 translates SCSI commands into file system commands and issues the file system commands to FS driver 178.
(13) FS driver 178 manages the files of the file system implemented by hypervisor 120 (such as .vmdk files representing virtual disks or virtual solid-state memory devices) stored on LUNs. One example of a file system driver that can serve as FS driver 178 is described in U.S. Pat. No. 7,849,098, entitled Multiple Concurrent Access to a File System, filed Feb. 4, 2004 and issued on Dec. 7, 2010, the entire contents of which are incorporated by reference herein. FS driver 178 converts file system commands to block operations, and provides the block operations to logical volume manager 176.
(14) Logical volume manager (LVM) 176 supports volume-oriented virtualization and management of the LUNs accessible through the physical HBAs. For example, LVM 176 may combine multiple LUNs and expose the combined address space of the LUNs as a single contiguous address space to FS driver 178. LVM 176 translates the addresses specified in the block operations received from FS driver 178 and passes on the block operations with translated addresses to device access layer 180.
(15) Device access layer 180 applies command queuing and scheduling policies to the block operations from LVM 176. For each connected storage system, e.g., disk array 191 or SSD array 192, a device driver (not shown), which understands the input/output interface of physical HBAs 114, sends the operations from device access layer 180 to physical HBAs 114 to be forwarded to the appropriate storage system. In the case where the connected storage system is disk array 191, SCSI commands are issued to the storage system. In the case where the connected storage system is SSD array 192, SATA commands are issued to the storage system.
(16) It should be recognized that the various terms, layers and categorizations used to describe the virtualization components in
(17)
(18) In the case VM 160 fails to recognize that it is connected to a virtual solid-state memory device, IO from VM 160 issued to a virtual disk will flow through VHBA 171 and then directly to SCSI virtualization layer 175 without passing through VAHCI 173. For an UNMAP block operation issued by VM 160, VHBA 171 will generate a SCSI UNMAP command from the UNMAP block operation and issue it directly to SCSI virtualization layer 175, which converts the SCSI UNMAP command to a file system command to delete file blocks of a file corresponding to the virtual disk. Then, FS driver 178 generates an UNMAP block operation from the delete file block command and passes down the UNMAP block operation to LVM 176 and device access layer 180. Device access layer 180 issues this UNMAP block operation to a SCSI compliant HBA. The SCSI compliant HBA generates a SCSI UNMAP command from the UNMAP block operation and issues the SCSI UNMAP command to the connected disk array.
(19)
(20)
(21) At step 402, guest OS 164 receives a reply to its inquiry sent at step 401. The received reply is checked at step 403 for a zero value for the rotational rate, which indicates that the virtual storage device provisioned for the virtual machine is a virtual solid-state memory device capable of receiving SATA commands such as TRIM commands. Accordingly, if a zero value is received, step 404 is executed where guest OS 164 notes that the virtual machine is provisioned with a virtual solid-state memory device capable of receiving SATA commands such as TRIM commands. If a non-zero value is received, step 405 is executed where guest OS 164 notes that the virtual machine is provisioned with a virtual disk capable of receiving SCSI commands but not capable of receiving SATA commands, and so not capable of receiving TRIM commands.
(22) Although one or more embodiments have been described herein in some detail for clarity of understanding, it should be recognized that certain changes and modifications may be made without departing from the spirit of the invention.
(23) The various embodiments described herein may employ various computer-implemented operations involving data stored in computer systems. For example, these operations may require physical manipulation of physical quantitiesusually, though not necessarily, these quantities may take the form of electrical or magnetic signals, where they or representations of them are capable of being stored, transferred, combined, compared, or otherwise manipulated. Further, such manipulations are often referred to in terms, such as producing, identifying, determining, or comparing. Any operations described herein that form part of one or more embodiments of the invention may be useful machine operations. In addition, one or more embodiments of the invention also relate to a device or an apparatus for performing these operations. The apparatus may be specially constructed for specific required purposes, or it may be a general purpose computer selectively activated or configured by a computer program stored in the computer. In particular, various general purpose machines may be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations.
(24) The various embodiments described herein may be practiced with other computer system configurations including hand-held devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like.
(25) One or more embodiments of the present invention may be implemented as one or more computer programs or as one or more computer program modules embodied in one or more computer readable media. The term computer readable medium refers to any data storage device that can store data which can thereafter be input to a computer systemcomputer readable media may be based on any existing or subsequently developed technology for embodying computer programs in a manner that enables them to be read by a computer. Examples of a computer readable medium include a hard drive, network attached storage (NAS), read-only memory, random-access memory (e.g., a flash memory device), a CD (Compact Discs)CD-ROM, a CD-R, or a CD-RW, a DVD (Digital Versatile Disc), a magnetic tape, and other optical and non-optical data storage devices. The computer readable medium can also be distributed over a network coupled computer system so that the computer readable code is stored and executed in a distributed fashion.
(26) Although one or more embodiments of the present invention have been described in some detail for clarity of understanding, it will be apparent that certain changes and modifications may be made within the scope of the claims. Accordingly, the described embodiments are to be considered as illustrative and not restrictive, and the scope of the claims is not to be limited to details given herein, but may be modified within the scope and equivalents of the claims. In the claims, elements and/or steps do not imply any particular order of operation, unless explicitly stated in the claims.
(27) Virtualization systems in accordance with the various embodiments, may be implemented as hosted embodiments, non-hosted embodiments or as embodiments that tend to blur distinctions between the two, are all envisioned. Furthermore, various virtualization operations may be wholly or partially implemented in hardware. For example, a hardware implementation may employ a look-up table for modification of storage access requests to secure non-disk data.
(28) Many variations, modifications, additions, and improvements are possible, regardless the degree of virtualization. The virtualization software can therefore include components of a host, console, or guest operating system that performs virtualization functions. Plural instances may be provided for components, operations or structures described herein as a single instance. Finally, boundaries between various components, operations and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the invention(s). In general, structures and functionality presented as separate components in exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements may fall within the scope of the appended claim(s).