Running an enterprise storage subsystem as a virtual machine
AssigneeEMC IP Holding Company LLC
InventorsJonathan Krasner, Chakib Ouarraoui, Matt Fredette
Life of this patent
Estimating the term…
Abstract
A storage array is implemented as a virtual machine on a server. The virtual storage array includes a virtual engine with virtual directors and virtualized processor and memory resources. Embedded storage software converts Input/Output requests into Input/Output requests that can be serviced by the virtual machine. A virtual backend driver enables the virtual storage directors to access a set of virtual drives. A virtualized shared memory driver provides emulated input/output, XOR, direct memory access and copy services for send and receive threads.
Claims20
An apparatus comprising:
- a computing node comprising at least one processor and a non-transitory computer-readable memory on which is stored program code configured to be run by the at least one processor to generate a first virtual machine comprising:
- a virtual storage array that accesses host application data stored on one or more non-volatile drives responsive to commands from a host application, the virtual storage array comprising:
- a plurality of virtual storage engines, each virtual storage engine comprising:
- a pair of virtual storage directors interconnected in a failover relationship, each virtual storage director receiving the commands from the host application and configured to communicate with the host application via a virtual front end adapter, each virtual storage director comprising:
- a virtual processor;
- a virtualized shared memory;
- a virtual backend adapter configured to interface with some of the non-volatile drives;
- and
- a virtual channel adapter that interfaces with other virtual storage directors of other virtual storage engines,
- the pair of virtual storage directors being interconnected via a virtual switch, the virtual processor and the virtualized shared memory implemented as a second virtual machine nested within the first virtual machine;
- whereby host application data requested by a host application from a first virtual storage director of a first virtual storage engine and managed by a second virtual storage director of a second virtual storage engine is provided by the second virtual storage director copying the requested host application from the non-volatile drives to the virtualized shared memory and the first virtual storage director accessing the requested host application data from the virtualized shared memory to provide the requested host application data to the host application that generated the request.
A method comprising:
- using a computing node comprising at least one processor and a non-transitory computer-readable memory on which is stored program code configured to be run by the at least one processor:
- generating a first virtual machine comprising a virtual storage array that accesses host application data stored on one or more non-volatile drives responsive to commands from a host application, the virtual storage array comprising virtual storage engines, each virtual storage engine comprising a pair of virtual storage directors, interconnected in a failover relationship, that each receive the commands from the host application and is configured to communicate with the host application via a virtual front end adapter, each virtual storage director comprising a virtual processor, a virtualized shared memory, a virtual backend adapter configured to interface with some of the non-volatile drives, and a virtual channel adapter that interfaces with other virtual storage directors of other virtual storage engines, the virtual processor and the virtualized shared memory implemented as a second virtual machine nested within the first virtual machine;
- interconnecting the pair of virtual storage directors via a virtual switch;
- and
- providing host application data requested by a host application from a first virtual storage director of a first virtual storage engine and managed by a second virtual storage director of a second virtual storage engine by causing the second virtual storage director to copy the requested host application from the non-volatile drives to the virtualized shared memory and the first virtual storage director accessing the requested host application data from the virtualized shared memory for providing the requested host application data to the host application that generated the request.
Dependencies are inferred from the claim text.