A hyperconverged infrastructure may refer to an IT infrastructure system that is largely software defined with tightly integrated compute, storage, and networking resources. In a hyperconvergence environment storage, compute and network components may be optimized to work together on a single appliance.
For a better understanding of the solution, examples will now be described, purely by way of example, with reference to the accompanying drawings, in which:
Hyperconvergence may be considered as the next stage in the evolution of IT architectures that brings together the benefits of converged infrastructure, virtualization, and software-defined storage technologies. Various components of an IT infrastructure, for example, servers, storage, virtualization software, networking, and management may be integrated and packaged together into a single and highly available appliance. Hyperconvergence may provide a virtualization environment with highly efficient scalability.
A hyperconverged computing system or platform may include a plurality of nodes. These nodes may store volume data that may be distributed across multiples nodes. In an example, if a compute virtual machine (VM) that may be co-located with a storage virtual machine (for example, a virtual storage appliance (VSA)) on a node may frequently request for volume data. In the event the logical block address (LBA) associated with the requested data maps to another node, the requests may need to be forwarded to the other node since the data may not be available locally. This may not be a desirable scenario since it may lead to operational and performance bottlenecks.
To address this issue, the present disclosure describes a data locality solution for a hyperconverged computing system. In an example, a data request may be received at a Virtual Storage Appliance (VSA) node amongst a plurality of VSA nodes in a hyperconverged computing system. A determination may be made whether a remapped logical block address (LBA) associated with the data request is included on a first mapping layer on the VSA node. In response to the determination that the remapped LBA associated with the data request is present on the first mapping layer of the VSA node, the remapped LBA may be used to resolve the data request. On the other hand, in response to the determination that the remapped LBA associated with another data request is not present on the first mapping layer of the VSA node, a second mapping layer on the VSA node may be used to resolve the other data request.
In an example, nodes 102, 104, 106, 108, and 110 may each be a computing device such as a server, a desktop computer, a notebook computer, a tablet computer, a mobile phone, a personal digital assistant (PDA), and the like.
Nodes 102, 104, 106, 108, and 110, may be communicatively coupled, for example, via a computer network. Computer network may be a wireless or wired network. Computer network may include, for example, a Local Area Network (LAN), a Wireless Local Area Network (WAN), a Metropolitan Area Network (MAN), a Storage Area Network (SAN), a Campus Area Network (CAN), or the like. Further, computer network may be a public network (for example, the Internet) or a private network (for example, an intranet).
In an example, nodes 102, 104, 106, 108, and 110 may each include a hypervisor (for example, 102H, 104H, 106H, 108H, and 110H, respectively). A hypervisor is a hardware virtualization layer that abstracts processor, memory, storage and network resources of a hardware platform and allows one or multiple operating systems (termed guest operating systems) to run concurrently on a host device. Virtualization allows the guest operating systems to run on isolated virtual environments (termed as virtual machines (VMs)). A computer system on which a hypervisor is running a virtual machine may be defined as a host machine. For instance, nodes 102, 104, 106, 108, and 110 may each act as a host machine. Any number of virtual machines may be hosted on a hypervisor.
Referring to
A virtual storage appliance (VSA) may be defined as an appliance running on or as a virtual machine that may perform an operation related to a storage system. In an example, a virtual storage appliance may virtualize storage resources of a node (for example, 102). A node comprising a virtual storage appliance may be termed as a “VSA node” (for example, 102, 104, 106, 108, and 110). In an example, a virtual storage appliance may create a virtual shared storage using direct-attached storage in a node hosting a hypervisor. In the event there is a plurality of nodes, for example in a hyperconverged computing system (for example, 100), a virtual storage appliance may create a virtual shared storage using direct-attached storage of one or a plurality of nodes (for example, 102, 104, 106, 108, and 110) to create a virtual array within and across a plurality of nodes. The virtual shared storage may be shared across a plurality of nodes. A virtual storage application may use a host network (for example, an Ethernet network) as a storage backplane to present storage via a suitable protocol (for example, iSCSI) to a plurality of nodes and virtual machines hosted on such nodes. In an example, a virtual storage appliance may virtualize an external storage unit (for example, an external disk array) and make the resultant virtual storage available to one or multiple nodes (for example, 102, 104, 106, 108, and 110).
In an example, nodes 102, 104, 106, 108, and 110 may each include a storage device (for example, 102S, 104S, 106S, 108S, and 110S, respectively). Storage devices 102S, 104S, 106S, 108S, and 110S may each include a non-transitory machine-readable storage medium that may store, for example, machine executable instructions, data file, and metadata related to a data file. Some non-limiting examples of a non-transitory machine-readable storage medium may include a hard disk, a storage disc (for example, a CD-ROM, a DVD, etc.), a disk array, a storage tape, a solid state drive, a Serial Advanced Technology Attachment (SATA) disk drive, a Fibre Channel (FC) disk drive, a Serial Attached SCSI (SAS) disk drive, a magnetic tape drive, and the like.
Storage devices 102S, 104S, 106S, 108S, and 110S may each be a direct-attached storage i.e. storage that is directly attached to its respective node (i.e. nodes 102, 104, 106, 108, and 110). In an example, storage devices 102S, 104S, 106S, 108S, and 110S may each be an external storage (for example, a storage array) that may communicate with its respective node (i.e. nodes 102, 104, 106, 108, and 110) via a communication interface. Storage devices 102S, 104S, 106S, 108S, and 110S) may communicate with their respective nodes via a suitable protocol such as, but not limited to, Fibre Connection (FICON), Internet Small Computer System Interface (iSCSI), HyperSCSI, and ATA over Ethernet.
In an example, VSA nodes 102, 104, 106, 108, and 110 may each include a receipt engine 120, a determination engine 122, a generation engine 124, and an action engine 126. For the sake of simplicity, VSA 106V in node 106 in
The functionalities performed by receipt engine 120, determination engine 122, generation engine 124, and action engine 126 are described in reference to
In an example, system 200 may represent any type of computing device capable of reading machine-executable instructions. Examples of computing device may include, without limitation, a server, a desktop computer, a notebook computer, a tablet computer, a thin client, a mobile device, a personal digital assistant (PDA), a phablet, and the like. In an example, system 200 may be a VSA node in a hyperconverged computing system (for example 100) that may include a plurality of VSA nodes.
System 200 may include a Virtual Storage Appliance (VSA) 202. In an example, VSA 202 may be similar to a VSA of
In an example, VSA 202 may include a receipt engine 120, a determination engine 122, a generation engine 124, and an action engine 126. System 200 may be implemented by at least one computing device and may include at least engines 120, 122, 124, and 126, which may be any combination of hardware and programming to implement the functionalities of the engines described herein. In examples described herein, such combinations of hardware and programming may be implemented in a number of different ways. For example, the programming for the engines may be processor executable instructions stored on at least one non-transitory machine-readable storage medium and the hardware for the engines may include at least one processing resource to execute those instructions. In some examples, the hardware may also include other electronic circuitry to at least partially implement at least one engine of system 200. In some examples, the at least one machine-readable storage medium may store instructions that, when executed by the at least one processing resource, at least partially implement some or all engines of system 200. In such examples, system 200 may include the at least one machine-readable storage medium storing the instructions and the at least one processing resource to execute the instructions.
Receipt engine 120 may be used to receive a request for volume data. The data request may be provided by a component, which may be received at receipt engine 120. In an example, the data request may be provided by a virtual machine that may be co-located with VSA 202 on system 200. In another example, the data request may be received from another computer system. In an example, system 200 may be a node amongst a plurality of nodes, for example, in a hyperconverged computing system (for example, 100). In this case, the data request may be received from another VSA node in the hyperconverged computing system. The data request may include, for example, a read or write request and/or an input or output request.
Further to receipt of a data request by the receipt engine 120, determination engine 122 may proceed to determine a logical block address (LBA) associated with the data request. In this regard, determination engine 122 may first determine whether a first mapping layer exists on system 200. In an example, system 200 may include a first mapping layer and a second mapping layer. The first mapping layer, if present, may include a remapped logical block address (LBA) associated with the data request. The second mapping layer may be used to apply modulo arithmetic on an incoming LBA request to determine a VSA node that the LBA maps to and forwards the request to that node.
In the event a determination is made that a first mapping layer exists on system 200, the determination engine 122 may determine whether the first mapping layer includes a remapped logical block address (LBA) associated with the data request. In response to the determination that the remapped LBA associated with the data request is present in the first mapping layer of system 200, action engine 126 may use the remapped LBA to resolve the data request. In the event the LBA request maps to another VSA node, action engine 126 may forward the request to that node. On the other hand, in the event it is determined that the remapped LBA associated with the data request is not present in the first mapping layer of system, action engine 126 may use the second mapping layer on system 200 to resolve a data request. As mentioned earlier, the second mapping layer may apply modulo arithmetic on an incoming LBA request to determine a VSA node that the LBA maps to. Action engine 126 may then forward the request to that node.
Generation engine 124 may be used to generate the first mapping layer on system 200 that may include the remapped logical block address (LBA) associated with a data request. To that end, in an example, the generation engine 124 may determine whether an LBA associated with the data request maps to another VSA node, for example, in a hyperconverged computing platform that comprises a plurality of VSA nodes. In response to the determination that the LBA associated with the data request maps to another VSA node (for example, referred as “VSA2 node”), generation engine 124 may determine a recent page hit count of a page associated with the data request on system 200. In an example, the recent page hit count of a page associated with the data request may be based on a clock function wherein a daemon maybe used to update page statistics periodically to keep track of page usage patterns.
Once the recent page hit count of a page associated with the data request on system 200 is determined, system 200 may send the recent page hit count to VSA2 node. In an example, the recent page hit count may be sent to VSA2 node via a Remote Procedure Call (RPC).
Upon receiving the recent page hit count of the page associated with the data request from system 200, VSA2 node may compare the received value with a recent page hit count of the page associated with the data request (may be called “IbaPAGE”) on VSA2 node. Further to the comparison, if it is determined that the recent page hit count of the page associated with the data request on system 200 is greater than the recent page hit count of the page associated with the data request on VSA2 node, VSA2 node may migrate this page to system 200.
In an example, migration of the page associated with the data request on VSA2 node to system 200 may begin with VSA2 node sending a request (for example, via RPC) to system 200 for contents of a page on system 200. This latter page may be referred to as “victimPAGE”. The victimPAGE may be selected by system 200. Once system 200 receives the request from VSA2 node, system 200 may send the contents of victimPAGE to VSA2 node. Upon receiving contents of the victimPAGE, VSA2 node may read the contents of IbaPAGE into memory and write out the contents of victimPAGE into the location of IbaPAGE. VSA2 node may populate its own first mapping layer to reflect the new mapping for IbaPAGE and victimPAGE. Specifically, two entries may be updated—the entry for IbaPAGE may now point to system 200, and the entry for victim PAGE may now point to the page number for IbaPAGE. VSA2 node may send the contents of IbaPAGE to system 200.
Once system 200 receives the contents of IbaPAGE from VSA2 node, system 200 may copy the contents of IbaPAGE to the location of victimPAGE. System 200 may then update the first mapping layer to reflect the remapped address for IbaPAGE and victimPAGE. Thus, the remapped logical block address (LBA) associated with the data request may be stored in the first mapping layer on system 200, thereby completing the swap operation. Further to the update, if any new request for IbaPAGE is received, it may be resolved at system 200 since determination engine may determine whether a remapped logical block address (LBA) associated with the data request is included in the first mapping layer on system 200.
For the purpose of simplicity of explanation, the example method of
It should be noted that the above-described examples of the present solution is for the purpose of illustration. Although the solution has been described in conjunction with a specific example thereof, numerous modifications may be possible without materially departing from the teachings of the subject matter described herein. Other substitutions, modifications and changes may be made without departing from the spirit of the present solution.
Number | Date | Country | Kind |
---|---|---|---|
201641023554 | Jul 2016 | IN | national |