Patent Publication Number: US-9841984-B2

Title: System and method for creating virtual disk images for use with remote computer

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application claims priority to U.S. Provisional Application No. 61/709,468, filed Oct. 4, 2012. The entire disclosure of the above application is incorporated herein by reference. 
    
    
     FIELD 
     The present disclosure relates to systems and methods for creating virtual disk images, and more particularly a system and method for creating virtual disk images of selected data that can be used by a remotely located host server, during a KVM session, just as if a physical device with the selected data had been directly connected to the host server. 
     BACKGROUND 
     The statements in this section merely provide background information related to the present disclosure and may not constitute prior art. 
     Present day keyboard, video and mouse (KVM) appliances and baseboard management controllers (BMCs) allow a user to access remote servers and other devices by passing the keyboard, video and mouse signals between the user&#39;s device (typically a laptop, PC, tablet, smartphone, etc.) and the KVM appliance or BMC. For the purpose of discussion, the following examples will make reference only to a KVM appliance, but it will be appreciated that they are equally applicable to communication with a BMC. The keyboard and mouse signals received by the KVM appliance are typically received in some network protocol, for example Ethernet protocol packets, and then converted to a format (e.g., USB) that the remote device can accept. 
     With the recent development of the HTML5 technology, an HTML5 KVM/virtual media client is now able to run in the Web browser of a user&#39;s device when a KVM session is established by the user. Currently HTML5 is supported by several web browsers including Apple Corporation&#39;s SAFARI® Web browser, Mozilla&#39;s FIREFOX® Web browser, the Google CHROME® Web browser, and the INTERNET EXPLORER® version 10 Web Browser from Microsoft Corp. The ability to run the HTML5 KVM/virtual media client in the user&#39;s Web browser is a significant advantage because the user typically is highly familiar with using a Web browser. As such, this implementation provides the user with a comfortable, easy to use means for conducting a KVM session with a remote KVM device (e.g., KVM appliance or BMC). 
     The running of an HTML5 KVM/virtual media client in the user&#39;s Web browser does, however, present some significant limitations. For one, the Web browser does not allow the KVM/virtual media client access to the physical disks of the client device on which the Web browser is running (e.g., PC workstation, laptop, computing tablet, smartphone, etc.). This limitation did not exist with a KVM/virtual media client that did not run in the user&#39;s Web browser. The technology previously used, such as Java or ActiveX, allowed access to the physical media devices such as disk drives, and thus a disk image was not required to access the data files on the user device. When using a Web browser, however, the Web browser provides a “sandbox” into which the JavaScript engine that runs in the Web browser can bring files into the sandbox. But the JavaScript engine still is not allowed to write out the files, nor is it allowed direct access to the physical media devices on the user&#39;s device, such as disk drives, typically used in virtual media implementations. As a result, a new system and method is needed for accessing the data files stored on the user&#39;s device or physically connected to the user&#39;s device, when using an HTML5 KVM/virtual media client running in the Web browser of the user&#39;s device. 
     SUMMARY 
     In one aspect the present disclosure relates to a method for creating and exposing virtual disk images to a host server, during a KVM session, using an HTML5 KVM/virtual media client running in the Web browser of a user&#39;s device. The method may comprise sending a selection to the host server of a specific virtual media device to be mapped on the host server. The HTML5 KVM/virtual media client may be used to package selected content using a selected format to create a disk image of the selected content in a sandbox of the Web browser. The host server may be notified of an available virtual disk image and exposing the virtual disk image for use to the host server. The host server may be used to obtain the virtual disk image and then to send a request to the HTML5 KVM/virtual media client for a portion of the data of the virtual disk image to retrieve. The HTML5 KVM virtual media client may be used to translate the request into at least one specific file that makes up the virtual disk image, and to send bytes of data corresponding to the at least one specific file to the host server. The host server may receive the bytes of data corresponding to the at least one specific file. 
     In another aspect the present disclosure relates to a method for creating and exposing virtual disk images to a host server during a KVM session. The method involves using an HTML5 KVM/virtual media client running in the Web browser of a user&#39;s device. The method may comprise sending a selection to the host server of a specific virtual media device to be mapped on the host server. The HTML5 KVM/virtual media client may then be used to package selected content using a selected format to create a disk image of the selected content in a sandbox of the Web browser. The host server may be notified of an available virtual disk image and the virtual disk image may be exposed for use to the host server. The host server may then be used to obtain the virtual disk image. The host server may be used to send a request to the HTML5 KVM/virtual media client with a starting block number and number of blocks of data of the virtual disk image to retrieve. The HTML5 KVM virtual media client may be used to implement a reverse lookup operation to translate the request into at least one specific file that makes up the virtual disk image, and to send bytes of data corresponding to the at least one specific file to the host server. 
     In still another aspect the present disclosure relates to a system for creating and exposing virtual disk images to a host server during a KVM session, while using an HTML5 KVM/virtual media client running in the Web browser of a user&#39;s device. The system may comprise a user device having a Web browser running thereon, with the Web browser having a sandbox for temporary storage of data. An HTML5 KVM virtual media client may be included which runs in the Web browser. The HTML5 KVM virtual media client may be configured to perform a plurality of operations including: packaging selected content using a selected format to create a disk image of the selected content in a sandbox of the Web browser; notify the host server of an available virtual disk image and exposing the virtual disk image for use to the host server; responding to a request from the host server for data corresponding to a portion of the virtual disk image; and using the HTML5 virtual media client to implement a reverse lookup operation to translate the request for data into at least a portion of at least one specific file makes up the virtual disk image. The HTML5 KVM virtual media client may then send bytes of data corresponding to the at least a portion of one specific file to the host server for use. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The drawings described herein are for illustration purposes only and are not intended to limit the scope of the present disclosure in any way. 
         FIG. 1  is a high level block diagram of a system in accordance with an example of the present disclosure for creating virtual disk images of content on the user&#39;s device, that may be used by a remote host server during a KVM session when an HTML5 KVM/virtual media client is running in the Web browser of the user&#39;s device; and 
         FIGS. 2A and 2B  represent a flowchart illustrating one example of a sequence of communications between an HTML5 KVM/virtual media client and a remote Host server by which a virtual disk image is created for use by the Host server, and the contents of the virtual disk image is supplied to the Host server. 
     
    
    
     DETAILED DESCRIPTION 
     The following description is merely exemplary in nature and is not intended to limit the present disclosure, application or uses. It should be understood that throughout the drawings, corresponding reference numerals indicate like or corresponding parts and features. 
     Referring to  FIG. 1 , a system  10  is shown in which a user device, in this example a workstation computer  12  having a Web browser  14  running thereon, is used to conduct a KVM session with a remotely located Host server  16  at a Data Center  17 . A KVM device, in this example a KVM appliance  18 , connects the user workstation  12  with the Host server  16 . However, it will be appreciated that a BMC could just as readily be implemented in place of a KVM appliance. For the purpose of discussion, however, reference will be made to the KVM device as being a KVM appliance. 
     The Web browser  14  may have an HTML5 KVM/virtual media client  20  running in it. The Web browser  14  also provides a “sandbox”  22 , which is dedicated memory space into which a JavaScript engine running in the Web browser  14  can bring files or portions of files. However, as noted above, the JavaScript engine is not able to write the files out, nor is it permitted direct access to any of the physical devices (disk drive, flash drive) that are contained within the workstation  12  or physically connected to the workstation. 
     The HTML5 KVM/virtual media client  20  communicates with the Host server  16  via the KVM appliance  18 , a virtual media connection device  24  inside the KVM appliance  18 , a USB port  26  of the Host server  16 , and a wide area network connection (e.g., the Internet). Messages, for example and without limitation AVMP messages, are communicated between the HTML5 KVM/virtual media client  20  and the Host server  16  when virtual disk images are created on the workstation  12  and exposed to the Host server  16 , and when status updates (e.g., number of bytes transferred) are sent from the HTML5 KVM/virtual media client to the Host server  16 . Creating virtual disk images of files and/or directories on the disk drives of the workstation  12 , and exposing the virtual disk images to the Host server  16 , provides a means for allowing the Host server  16  to access the contents on any of the disks of the workstation  12 , as well as any virtual media device (e.g., flash drive, portable memory device, etc.) that may be physically connected to the workstation  12 . 
     Referring now to  FIGS. 2A and 2B , a flowchart  100  illustrating an example of a sequence of operations between the HTML5 KVM/virtual media client  20  and the Host server  16  will be presented. Initially at operation  102  ( FIG. 2A ) the user establishes a KVM session with the Host server  16  via the HTML5 KVM/virtual media client  20  running in the user&#39;s Web browser  14 . At operation  104  the KVM appliance  18  sends the HTML5 KVM/virtual media client  20  a list of virtual media devices available for mapping on the Host server  16 . At operation  106  the user selects the Host server device to be mapped, and then selects specific content to be mapped via a virtual disk image. The content to be mapped may be a specific file or possibly a directory or subdirectory. 
     At operation  108  the HTML5 KVM/virtual media client  20  packages the selected content using a selected format (e.g., FAT32 or ISO9660) to create a virtual disk image of the selected content in the browser&#39;s sandbox  22 . At operation  110  the HTML5 KVM/virtual media client  20  sends a message to the Host server  16  notifying the Host server of the available virtual disk image, and exposes the virtual disk image to the Host server  16  for use. Regarding the message that may be sent, it will be appreciated that any messaging protocol may be employed, but in one preferred form AVMP (Avocent Virtual Message Protocol) messages may be used. The Avocent Virtual Messaging Protocol is a proprietary protocol of Avocent, Inc., an Emerson Network Power company. 
     At operation  112  the Host server  16  obtains the virtual disk image and then sends a message (e.g., AVMP message) back to the HTML5 KVM/virtual media client  20  with the starting block number and number of blocks of data to retrieve. At operation  114  the HTML5 KVM/virtual media client  20  translates the request into the specific files that make up the virtual disk image and the specific content from those files (i.e., offset into the file and number of bytes to read from the file). It will also be appreciated that creating the virtual disk image involves creating the structural elements of a disk image such as the boot sector and FAT tables. The data of a disk image typically stored in files within the disk image is not part of the virtual disk image. Instead, the present system and method keeps references to the files so that when a request for a certain data block (or set of blocks) is received, a reverse lookup may be performed. The reverse lookup determines which files contain the requested data, and then an operation may be performed to go and retrieve that data from the client workstation. The data is retrieved by copying those portions of the required files into the sandbox  22  and then transmitting the data to the Host server  16 . The files which make up the disk image are not brought into the sandbox  22  until their data is needed, and then only those portions of the files that are needed are brought into the sandbox. Accordingly, this methodology forms a type of “on-demand” system. 
     At operation  116  the HTML5 KVM/virtual media client  20  sends the data represented by the selected bytes to the Host server  16 . At operation  118  the Host server  16  receives the transmitted bytes. It will be appreciated that the bytes received by the Host server  16  are from certain blocks on the virtual disk image. However, the Host server  16  does not know that the bytes are from a disk image. To the Host server  16  it appears that it is obtaining the bytes of data from a physical device connected to its USB port  26 . 
     Referring to  FIG. 2B , at operation  120  the Host server  16  determines if additional bytes are needed. If so, the Host server  16  requests the additional bytes, as indicated at operation  122 . A check is then made if the additional bytes can be sent by the USB device to the HTML5 KVM/virtual media client  20 , as indicated at operation  124 , and if so, the requested additional bytes are sent to the Host server  16 , as indicated at operation  126 . If the check at operation  124  indicates that the USB device cannot send any additional bytes, then the USB device responds with a message to the Host server  16  that additional bytes cannot be read, as indicated at operation  128 . The Host server  16  treats this condition as an error, as indicated at operation  130 . 
     If the check at operation  120  indicates that no additional bytes are needed, then the user may end the KVM session by unmapping the virtual disk from the HTML5 KVM/virtual media client  20 , or alternatively by “ejecting” it from the Host server  16 , as indicated at operation  132 . By “ejecting” it will be understood that the Host server  16  “sees” the virtual disk image as a physical connection to a physical device, for example a disk drive on the workstation  12 . As such, the Host server  16  can disconnect from the virtual disk image, for example by selecting an “Eject” command, just as if it was disconnecting from a physical virtual media device coupled to its USB port  26 . At operation  134  the KVM appliance  18  firmware receives the ejection notice and sends a message (e.g., AVMP message) to the HTML5 KVM/virtual media client  20 , which then unmaps the virtual disk image. 
     By using the HTML5 KVM/virtual media client  20  to create virtual disk images, and to expose the virtual disk images to the Host server  16 , the inability of the Web browser to directly access the physical disks on the workstation  12  is at least partially overcome. However, the ability of the Host server  16  to boot off of the physical disks on the client workstation is lost because the sandbox  22  will not allow the HTML5 KVM/virtual media client  20  to read the boot section of the physical device. Essentially any data content stored on the disks of the workstation  12  as files, as well as any virtual media device accessible to the workstation  12  through a physical connection with the workstation, is accessible to the Host server  16 . Being able to run the HTML5 KVM/virtual media client  20  in the Web browser  14  also significantly adds to the ease of use for the user because of the user&#39;s familiarity with using the Web browser. 
     While various embodiments have been described, those skilled in the art will recognize modifications or variations which might be made without departing from the present disclosure. The examples illustrate the various embodiments and are not intended to limit the present disclosure. Therefore, the description and claims should be interpreted liberally with only such limitation as is necessary in view of the pertinent prior art.