Abstract:
A detaching method including: receiving an instruction to detach a virtual input/output device; detaching the virtual input/output device from a virtual control operating system; 
     transmitting to the control operating system an instruction to detach a physical input/output device related to the virtual input/output device; referring to a virtual input/output device information and a virtual operating system information so as to determine the physical input/output device related to the virtual input/output device, a different virtual input/output device related to the virtual input/output device, and a different virtual operating system that is using the different virtual input/output device; detaching the different virtual input/output device from the different virtual operating system; detaching the physical input/output device related to the virtual input/output device from the control operating system.

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
       [0001]    This application is a continuation of PCT application of PCT/JP2010/069703, which was filed on Nov. 5, 2010. 
     
    
     FIELD 
       [0002]    The present invention relates to detaching and mounting of an input/output device. 
       BACKGROUND 
       [0003]    In a system having a virtual system, a system having a virtualization service converts an I/O device such as a disk, a PCI (Peripheral Component Interconnect) card, etc. into a virtual I/O device so as to provide the conversion result to the virtual system. 
         [0004]    Virtualization services have a function of converting physical resources into logical resources for a virtual operating system (OS) as described above. 
         [0005]    When devices (I/O devices) such as disks, PCI cards, etc. are to be switched without turning off the computer (hot plug or hot swap), a system having a virtualization service (control OS) and a system using the virtual I/O (virtual OS) both detach the devices, and mount new devices after the switching. 
         [0006]    When, for example, a device has been detached from a control OS while the virtual device corresponding to the device has forgetfully not been detached, accesses to the virtual device in the virtual OS cause errors. 
         [0007]    As described above, complex steps have to be followed in order to detach a device from or mount a device on a control OS and a virtual OS that is using the virtual I/O, which has often led to problems of forgetting to detach or mount the device, causing problems. 
         [0008]    Patent Document 1: Japanese Laid-open Patent Publication No. 2006-331421 
         [0009]    Patent Document 2: Japanese Laid-open Patent Publication No. 2009-123217 
         [0010]    Patent Document 3: Japanese Laid-open Patent Publication No. 07-084810 
       SUMMARY 
       [0011]    According to an aspect of the embodiments, a non-transitory computer-readable recording medium having recorded therein a program to be operated on a control operating system for controlling a virtual operating system, for causing a computer to execute a process that detaches from or mounts on the control operating system a physical input/output device related to a virtual input/output device, with the computer having stored virtual input/output device information in which the physical input/output device and the virtual input/output device are associated and virtual operating system information in which the virtual input/output device and the virtual operating system are associated, the process including: receiving, from the virtual operating system that is using the virtual input/output device, an instruction to detach the physical input/output device related to the virtual input/output device; referring to the virtual input/output device information and the virtual operating system information so as to determine the physical input/output device related to the virtual input/output device, a different virtual input/output device related to the virtual input/output device, and a different virtual operating system that is using the different virtual input/output device; transmitting to the different virtual operating system an instruction to detach the different virtual input/output device; receiving from the different virtual operating system a fact that the different virtual input/output device has been detached; detaching the physical input/output device related to the virtual input/output device from the control operating system; and transmitting to the virtual operating system that is using the virtual input/output device a fact that the physical input/output device related to the virtual input/output device has been detached. 
         [0012]    The object and advantages of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the claims. 
         [0013]    It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the invention, as claimed. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0014]      FIG. 1  illustrates a configuration of a server according to an embodiment; 
           [0015]      FIG. 2  illustrates a configuration of software according to an embodiment; 
           [0016]      FIG. 3  illustrates an example of a virtual OS information table; 
           [0017]      FIG. 4  illustrates an example of a virtual I/O information table; 
           [0018]      FIG. 5  illustrates an example of a format of communication data transmitted and received between a communication mechanism of a control OS and a communication mechanism of a virtual OS; 
           [0019]      FIG. 6  is a flowchart for a virtual service unit according to an embodiment; 
           [0020]      FIG. 7  illustrates a flowchart of a communication mechanism of the control OS according to an embodiment; 
           [0021]      FIG. 8  illustrates a flowchart for a communication mechanism of the virtual OS according to an embodiment; 
           [0022]      FIG. 9  is a flowchart for a driver of the control OS according to an embodiment; 
           [0023]      FIG. 10  illustrates a flowchart for a driver of the virtual OS according to an embodiment; 
           [0024]      FIG. 11  is a sequence diagram for a case where an I/O is detached from the control OS; 
           [0025]      FIG. 12  is a sequence diagram for a case where an I/O is mounted from the control OS; 
           [0026]      FIG. 13  illustrates a sequence diagram for a case where an I/O not shared by a different virtual OS is detached from a virtual OS; 
           [0027]      FIG. 14  is a sequence diagram for a case where an I/O that is not shared by a different virtual OS is mounted from a virtual OS; 
           [0028]      FIG. 15  is a sequence diagram illustrating a case where an instruction has been issued to detach an I/O shared by a plurality of virtual OSs from a virtual OS; and 
           [0029]      FIG. 16  is a sequence diagram for a case where an instruction has been issued to detach an I/O shared by a plurality of virtual OSs from a virtual OS. 
       
    
    
     DESCRIPTION OF EMBODIMENTS 
       [0030]    Hereinafter, embodiments of the present invention will be explained by referring to the drawings. 
         [0031]      FIG. 1  illustrates a configuration of a server according to an embodiment. 
         [0032]    A server  101  includes Central Processing Units (CPUs)  102 - n  (n=1 through 4), memories  103 - n,  disks  104 - m  (m=1 or 2), and network cards  105 - m.    
         [0033]    The respective CPUs  104 - n  include cores  106 - n - m.    
         [0034]    The cores  106  execute various processes of programs or the like. 
         [0035]    The memories  103  store various types of data temporarily. Random Access Memories (RAMs) for example are used as the memories  103 . 
         [0036]    The disks  104  store various types of data. Magnetic disk devices may for example be used as the disks  104 . 
         [0037]    The network cards  105  are interfaces for implementing communications. 
         [0038]    In an embodiment, disk 0  and disk 1  are assigned to the disks, while net 0  and net 1  are assigned to the network cards as identifiers. 
         [0039]      FIG. 2  illustrates a configuration of software according to an embodiment. 
         [0040]    A control OS  201  and virtual OSs  301 - m  (m=1 or 2) have been installed and executed in the server  101  according to an embodiment. In an embodiment, two virtual OSs  301 - 1  and  301 - 2  are operating. Further, in an embodiment, the virtual OSs  301 - 1  and  301 - 2  are referred to as virtual OS 1  and virtual OS 2 , respectively. 
         [0041]    The control OS  201  controls the virtual OSs  301 . Also, the control OS  201  and the virtual OSs  301  have a hot-plug function (hot-swap function), which detaches an I/O (including a virtual I/O) from the control OS  201  or the virtual OSs  301  dynamically. 
         [0042]    The control OS  201  includes a communication mechanism  202 , a virtualization service unit  203 , a maintenance program  204 , and a driver  206 . 
         [0043]    The communication mechanism  202  communicates with the virtual OSs  301 . 
         [0044]    The virtualization service unit  203  provides a virtualization service, and converts an I/O (physical I/O device)  207 , which is a physical resource, into a virtual I/O (value I/O device)  307 . The I/O  207  corresponds to the disk  104  and the network card  105 . 
         [0045]    The maintenance program  204  gives instructions to detach or mount the I/O  207 . 
         [0046]    The driver  206  detaches and mounts the I/O  207 . Detaching of an I/O is an operation of electrically detaching an I/O from an OS, making the OS unable to recognize the I/O so that the I/O may be replaced by a different I/O. As specific operations, a driver that has received a detaching instruction halts a target I/O, and halts the driver itself too. Mounting of an I/O is a reverse operation, i.e., making an OS recognize an I/O that has been in an electrically detached state, putting the I/O in a usable state. As specific operations, the power of the I/O is turned ON, the driver is attached, and the I/O is activated. 
         [0047]    The virtual OSs  301 - m  include communication mechanisms  302 - m,  maintenance programs  304 - m,  and drivers  306 - m.    
         [0048]    The communication mechanisms  302  communicate with the control OS  201 . 
         [0049]    The maintenance programs  304  give instructions to detach or mount the virtual I/Os. 
         [0050]    The drivers  306  detach and mount the virtual I/Os. Detaching of a virtual I/O is an operation of detaching the virtual I/Os from the virtual OSs  301  electrically, making the virtual OSs  301  unable to recognize the virtual I/Os so that the virtual I/Os can be replaced with different I/Os. Mounting of a virtual I/O is a reverse operation, i.e., making the virtual OSs  301  recognize the virtual I/Os that have been in an electrically detached state, and putting the virtual I/Os in a usable state. 
         [0051]    Next, information tables used for a hot swap process according to an embodiment will be explained. 
         [0052]      FIG. 3  illustrates an example of a virtual OS information table. 
         [0053]    On the virtual information table, virtual OS names, the number of virtual CPUs, virtual memory sizes, and virtual I/Os are described in an associated manner. 
         [0054]    For virtual OS names, the identifiers of virtual OSs controlled by the control OS are described. 
         [0055]    For the number of virtual CPUs, the number of CPUs used by the virtual OSs are described. In this example, the number of virtual CPUs are the number of cores. 
         [0056]    For virtual memory sizes, the sizes of memories used by the virtual OSs are described. 
         [0057]    For virtual I/Os, the identifiers of virtual I/Os used by the virtual OSs are described. 
         [0058]    In an embodiment, virtual OS 1  uses two CPUs, a 2-gigabyte memory, and virtual I/Os vdisk 0  and vnet 0 . Also, virtual OS 2  uses six CPUs, a 3-gigabyte memory, and virtual I/Os vdisk 1 , vdisk 2 , vnet 1 , and vnet 2 . 
         [0059]      FIG. 4  illustrates an example of a virtual I/O information table. 
         [0060]    On the virtual I/O information table, I/Os and virtual I/Os are described in an associated manner. 
         [0061]    For I/Os, the identifiers of I/Os are described. 
         [0062]    For virtual I/Os, the identifiers of virtual I/Os used on virtual OSs are described. 
         [0063]    In an embodiment, disk 0  is used as vdisk 0  and vdisk 1  on a virtual OS, and disk 1  is used as vdisk 2  on a virtual OS. 
         [0064]    Also, net 0  is used as vnet 0  and vnet 1  on a virtual OS, and net 1  is used as vnet 2  on a virtual OS. 
         [0065]    The virtual OS information table and the virtual I/O information table are stored in, for example, the memory  103 . 
         [0066]      FIG. 5  illustrates an example of a format of communication data transmitted and received between the communication mechanism of the control OS and the communication mechanism of a virtual OS. 
         [0067]    Communication data includes issuance sources, issuance destinations, virtual I/O information, control content, and control results. 
         [0068]    An issuance source is an OS that issues communication data. Identifiers of, for example, control OSs and virtual OSs are described. 
         [0069]    An issuance destination is an OS that is a destination of communication data. Identifiers of, for example, control OSs and virtual OSs are described. 
         [0070]    Virtual I/O information is an identifier that represents an I/O as a target of detaching or mounting. For example, vdisk 1 , vnet 1 , or the like are described as virtual I/O information. 
         [0071]    Control contents are types of control that are to be or have been executed by the control OS or a virtual OS. Example of control contents is a detaching instruction, a mounting instruction, detaching recovery, or mounting recovery. 
         [0072]    A control result represents whether detaching or mounting has succeeded or failed (abnormal). Note that control results are used only in cases where the control content is detaching recovery or mounting recovery. 
         [0073]      FIG. 6  is a flowchart for a virtual service unit according to an embodiment. 
         [0074]    In step S 501 , the virtualization service unit  203  determines an issuance source of communication data that has been received. When the issuance source is the driver  206  of the control OS  201 , the control proceeds to step S 502 , and when the issuance source is the virtual OS  301 , the control proceeds to step S 508 . 
         [0075]    In step S 502 , the virtualization service unit  203  refers to the virtual I/O information table so as to determine which of the virtual I/Os has been specified. 
         [0076]    In step S 503 , the virtualization service unit  203  refers to the virtual OS information table so as to determine the virtual OSs  301  that are using the determined virtual I/O. 
         [0077]    In step S 504 , the virtualization service unit  203  requests the communication mechanism  202  of the control OS to give to all determined virtual OSs an instruction to perform a specified operation (detaching or mounting). 
         [0078]    In step S 505 , the virtualization service unit  203  determines whether or not all responses to the specified operations are “success”. When all responses are “success”, the control proceeds to step S 506 , and when at least one response is “failure”, the control proceeds to step S 507 . 
         [0079]    In step S 506 , the virtualization service unit  203  returns to a driver  506  with the result of “success” (response of success in mounting the virtual I/O). 
         [0080]    In step S 507 , the virtualization service unit  203  returns to the driver  506  with the result of “failure” (response of failure in mounting the virtual I/O). 
         [0081]    In step S 508 , the virtualization service unit  203  refers to the virtual I/O information table so as to determine an I/O and a virtual I/O related to the specified I/O. 
         [0082]    In step S 509 , the virtualization service unit  203  refers to the virtual OS information table so as to determine the virtual OS  301  that is using the determined virtual I/O. 
         [0083]    In step S 510 , the virtualization service unit  203  determines the control content. When the control content is mounting, the control proceeds to step S 511 , and when the control content is detaching, the control proceeds to step S 512 . 
         [0084]    In step S 511 , the virtualization service unit  203  instructs the driver  206  to mount the determined I/O. 
         [0085]    In step S 512 , the virtualization service unit  203  requests the communication mechanism  202  of the control OS to give to all determined virtual OSs an instruction to perform a specified operation on the determined virtual I/O (detaching or mounting). 
         [0086]    In step S 513 , the virtualization service unit  203  determines whether or not all responses to the specified operations are “success”. When all responses are “success”, the control proceeds to step S 514 , and when not all responses are “success”, the control proceeds to step S 517 . 
         [0087]    In step S 514 , the virtualization service unit  203  determines the control content. When the control content is mounting, the control proceeds to step S 515 , and when the control content is detaching, control proceeds to step S 516 . 
         [0088]    In step S 515 , the virtualization service unit  203  returns to the issuance-source virtual OS  301  with the result of “success”. 
         [0089]    In step S 516 , the virtualization service unit  203  instructs the driver  206  to detach the specified I/O. 
         [0090]    In step S 517 , the virtualization service unit  203  returns, with the result of failure, to the virtual OS as the issuance source of the communication data. 
         [0091]      FIG. 7  illustrates a flowchart of a communication mechanism of the control OS according to an embodiment. 
         [0092]    In step S 601 , the communication mechanism  202  waits for communication to be received. 
         [0093]    In step S 602 , the communication mechanism  202  receives a communication request from the virtualization service unit  203 . 
         [0094]    In step S 603 , the communication mechanism  202  transmits communication to the corresponding virtual OS  301 . 
         [0095]    Instep S 604 , the communication mechanism  202  receives communication from the virtual OS  301 . 
         [0096]    In step S 605 , the communication mechanism  202  reports the received content to the virtualization service unit  203 . 
         [0097]    Instep S 606 , the communication mechanism  202  receives a modification report of the virtual OS information table from the virtualization service unit  203 . The modification report includes information on a virtual OS that has been added (increased) or deleted (decreased). 
         [0098]    Instep S 607 , the communication mechanism  202  connects communication with the virtual OS  301  that has been added (increased) newly, or disconnects communication from the virtual OS  301  that has been deleted (decreased). 
         [0099]      FIG. 8  illustrates a flowchart for a communication mechanism of a virtual OS according to an embodiment. 
         [0100]    In step S 701 , the communication mechanism  302  waits for communications to be received. When a communication has come from the virtual OS side, the control proceeds to step S 702 , and when it has come from the control OS  201 , the control proceeds to step S 704 . 
         [0101]    Instep S 702 , the communication mechanism  302  receives a communication request from the virtual OS  301 . 
         [0102]    In step S 703 , the communication mechanism  302  transmits a communication to the communication mechanism  202  of the control OS  201 . 
         [0103]    Instep S 704 , the communication mechanism  302  receives a communication from the control OS  201 . 
         [0104]    In step S 705 , the communication mechanism  302  instructs, in accordance with the control content included in the communication, the driver  306  to detach or mount the I/O. 
         [0105]    In step S 706 , the communication mechanism  302  transmits the detaching result or the mounting result to the control OS  201 . 
         [0106]      FIG. 9  is a flowchart for a driver of the control OS according to an embodiment. 
         [0107]    In step S 801 , the driver  206  waits for a process to be received. When the process is a mounting instruction, the control proceeds to step S 802 , and when the process is a detaching instruction, the control proceeds to step S 806 . 
         [0108]    In step S 802 , the driver  206  receives a mounting instruction. 
         [0109]    In step S 803 , the driver  206  mounts the specified I/O. 
         [0110]    In step S 804 , the driver  206  reports amounting target to the virtualization service unit  203 . 
         [0111]    In step S 805 , the driver  206  waits for a response from the virtualization service unit  203 . 
         [0112]    In step S 806 , the driver  206  receives a detaching instruction. 
         [0113]    In step S 807 , the driver  206  reports a detaching target to the virtualization service unit  203 . 
         [0114]    In step S 808 , the driver  206  waits for a response from the virtualization service unit  203 . 
         [0115]    In step S 809 , the driver  206  receives a response from the virtualization service unit  203 , and detaches the I/O. 
         [0116]      FIG. 10  illustrates a flowchart for a driver of a virtual OS according to an embodiment. 
         [0117]    In step S 901 , the driver  306  waits for a process to be received. When the process is a mounting instruction, the control proceeds to step S 902 , and when the process is a detaching instruction, the control proceeds to step S 906 . 
         [0118]    In step S 902 , the driver  306  receives a mounting instruction. 
         [0119]    In step s 903 , the driver  306  reports to the communication mechanism  302  the mounting of the virtual I/O. 
         [0120]    In step S 904 , the driver  306  waits for a response from the virtualization service unit. 
         [0121]    In step S 905 , the driver  306  mounts the virtual I/O after receiving the response. 
         [0122]    In step S 906 , the driver  306  receives a detaching instruction. 
         [0123]    Instep S 907 , the driver  306  detaches the virtual I/O. 
         [0124]    In step S 908 , the driver  306  reports to the communication mechanism  302  the detaching of the virtual I/O. 
         [0125]    In step S 908 , a driver  306  waits for a response from the communication mechanism  302 . 
         [0126]    Next, explanations will be given for specific examples of detaching or mounting of an I/O (including a virtual I/O) according to an embodiment. 
         [0000]    (1) When an I/O is Detached from the Control OS 
         [0127]      FIG. 11  is a sequence diagram for a case where an I/O is detached from the control OS. 
         [0128]    In this example, explanations will be given for a case where disk 1  is detached from the control OS. 
         [0129]    In step S 1001 , the maintenance program  204  instructs the driver  206  to detach the I/O (disk 1 ). 
         [0130]    In step S 1002 , the driver  206  transmits to the virtualization service unit  203  an instruction to detach a virtual I/O related to disk 1 . 
         [0131]    In step S 1003 , the virtualization service unit  203  refers to the virtual OS information table and the virtual I/O information table so as to determine a virtual I/O related to disk 1  and a virtual OS that is using the virtual I/O. In this example, vdisk 2  and virtual OS 2  are determined to be the virtual 
         [0132]    I/O and the virtual OS, respectively. 
         [0133]    In step S 1004 , the virtualization service unit  203  requests that the communication mechanism instruct virtual OS 2  to detach vdisk 2 . 
         [0134]    In step S 1005 , the communication mechanism  202  transmits to a communication mechanism  302 - 2  of virtual OS 2  an instruction to detach the virtual I/O (vdisk 2 ). 
         [0135]    In step S 1006 , the communication mechanism  302 - 2  transmits to a driver  306 - 2  an instruction to detach the virtual I/O (vdisk 2 ). 
         [0136]    In step S 1007 , the driver  306 - 2  detaches the virtual I/O (vidsk 2 ). 
         [0137]    In step S 1008 , the driver  306 - 2  transmits to the communication mechanism  302 - 2  the fact that the virtual I/O (vdisk 2 ) has been detached. 
         [0138]    In step S 1009 , the communication mechanism  302 - 2  transmits the result of the detaching of the virtual I/O (vdisk 2 ) of virtual OS 2  to the communication mechanism  202  of the control OS. 
         [0139]    In step S 1010 , the communication mechanism  202  transmits to the virtualization service unit  203  the result of the detaching of virtual OS 2 . 
         [0140]    In step S 1011 , the virtualization service unit  203  transmits an instruction to detach the I/O (disk 1 ) to the driver  206 . 
         [0141]    In step S 1012 , the driver  206  detaches disk 1 . 
         [0142]    In step S 1013 , the driver  206  reports to the maintenance program  204  the completion of the I/O detaching. 
         [0000]    (2) When an I/O is Mounted from the Control OS 
         [0143]      FIG. 12  is a sequence diagram for a case where an I/O is mounted from the control OS. 
         [0144]    Explanations will be given for a case where disk 1  is mounted from the control OS. 
         [0145]    In step S 1101 , the maintenance program  204  instructs the driver to mount the I/O (disk 1 ). 
         [0146]    In step S 1102 , the driver  206  mounts disk 1 . 
         [0147]    In step S 1103 , the driver  206  transmits to the virtualization service unit  203  an instruction to mount a virtual I/O related to disk 1 . 
         [0148]    In step S 1104 , the virtualization service unit  203  refers to the virtual OS information table and the virtual I/O information table so as to determine a virtual I/O related to disk 1  and a virtual OS that is using the virtual I/O. In this example, vdisk 2  and virtual OS 2  are determined to be the virtual I/O and the virtual OS, respectively. 
         [0149]    In step S 1105 , the virtualization service unit  203  requests the communication mechanism  202  to instruct virtual OS 2  to mount vdisk 2 . 
         [0150]    In step S 1106 , the communication mechanism  202  transmits to the communication mechanism  302 - 2  of virtual OS 2  an instruction to mount the virtual I/O (vdisk 2 ). 
         [0151]    In step S 1107 , the communication mechanism  302 - 2  transmits to the driver  306 - 2  the mounting of the virtual I/O (vdisk 2 ). 
         [0152]    In step S 1108 , the driver  306 - 2  mounts the virtual I/O (vdisk 2 ). 
         [0153]    In step S 1109 , the driver  306 - 2  reports to the communication mechanism  302 - 2  the fact that the virtual I/O (vdisk 2 ) has been mounted. 
         [0154]    In step S 1110 , the communication mechanism  302 - 2  transmits to the communication mechanism  202  of the control OS the result of the mounting of the virtual I/O (vdisk 2 ) of virtual OS 2 . 
         [0155]    In step S 1111 , the communication mechanism  202  transmits to the virtualization service unit  203  the received result of the mounting of virtual OS 2 . 
         [0156]    In step S 1112 , the virtualization service unit  203  transmits to the driver  206  the result of the mounting of the virtual I/O (vdisk 2 ) related to disk 1 . 
         [0157]    In step S 1113 , the driver  206  reports the completion of the mounting of the I/O (disk 1 ) to the maintenance program  204 . 
         [0000]    (3) When an I/O that is not Shared with a Different Virtual OS is Detached from a Virtual OS 
         [0158]      FIG. 13  illustrates a sequence diagram for a case where an I/O not shared by a different virtual OS is to be detached from a virtual OS. 
         [0159]    In this example, a case will be explained where vdisk 2  is to be detached from virtual OS 2 . 
         [0160]    In step S 1201 , a maintenance program  304 - 2  instructs the driver  306 - 2  to detach the I/O (vdisk 2 ). 
         [0161]    In step S 1202 , the driver  306 - 2  detaches the virtual I/O (vdisk 2 ). 
         [0162]    In step S 1203 , the driver  306 - 2  transmits to the communication mechanism  302 - 2  an instruction for the control OS to detach an I/O related to vdisk 2 . 
         [0163]    In step S 1204 , the communication mechanism  302 - 2  transmits to the control OS an instruction to detach an I/O related to vdisk 2 . 
         [0164]    In step S 1205 , the communication mechanism  202  receives the detaching instruction, and transmits it to the virtualization service unit  203 . 
         [0165]    In step S 1206 , the virtualization service unit  203  refers to the virtual OS information table and the virtual I/O information table so as to determine an I/O related to vdisk 2  and a virtual OS that is using the I/O. In this example, disk 1  is determined to be an I/O related to vdisk 2 . 
         [0166]    In step S 1207 , the virtualization service unit  203  transmits to the driver  206  an instruction to detach the I/O (disk 1 ). 
         [0167]    In step S 1208 , the driver  206  detaches disk 1 . 
         [0168]    In step S 1209 , the driver  206  transmits to the virtualization service unit  203  the fact that I/O (disk 1 ) has been detached. 
         [0169]    In step S 1210 , the virtualization service unit  203  instructs the communication mechanism  202  to transmit to virtual OS 2  the completion of the detaching of the I/O (disk 1 ). 
         [0170]    In step S 1211 , the communication mechanism  202  transmits to virtual OS 2  the completion of the detaching of the I/O (disk 1 ). 
         [0171]    In step S 1212 , the communication mechanism  302 - 2  transmits to the driver  306  the fact that an I/O related to vdisk 2  has been detached. 
         [0172]    In step S 1213 , the driver  306 - 2  reports to the maintenance program  304 - 2  the completion of the detaching of the I/O (vdisk 2 ). 
         [0000]    (4) When an I/O not Shared by Different Virtual OSs is to be Mounted from a Virtual OS 
         [0173]      FIG. 14  is a sequence diagram for a case where an I/O that is not shared by a different virtual OS is to be mounted from a virtual OS. 
         [0174]    In this example, a case will be explained where vdisk 2  is to be mounted from virtual OS 2 . 
         [0175]    Instep S 1301 , the maintenance program  304 - 2  instructs the driver  306 - 2  to mount the I/O (vdisk 2 ). 
         [0176]    In step S 1302 , the driver  306 - 2  transmits to the communication mechanism  302 - 2  an instruction for the control OS to mount an I/O related to vdisk 2 . 
         [0177]    In step S 1303 , the communication mechanism  302 - 2  transmits to the control OS an instruction to mount an I/O related to vdisk 2 . 
         [0178]    In step S 1304 , the communication mechanism  202  receives the mounting instruction, and transmits it to the virtualization service unit  203 . 
         [0179]    In step S 1305 , the virtualization service unit  203  refers to the virtual OS information table and the virtual I/O information table so as to determine an I/O and virtual I/O related to vdisk 2 , and a virtual OS that is using the I/O. In this example, disk 1  is determined to be an I/O related to vdisk 2 . 
         [0180]    In step S 1306 , the virtualization service unit  203  transmits to the driver  206  an instruction to mount the I/O (disk 1 ). 
         [0181]    In step S 1307 , the driver  206  mounts disk 1 . 
         [0182]    In step S 1308 , the driver  206  transmits to the virtualization service unit the fact that the I/O (disk 1 ) has been mounted. 
         [0183]    In step S 1309 , the virtualization service unit  203  instructs the communication mechanism  202  to transmit to virtual OS 2  the completion of the mounting of the I/O (disk 1 ). 
         [0184]    In step S 1310 , the communication mechanism  202  transmits to virtual OS 2  the completion of the mounting of the I/O (disk 1 ). 
         [0185]    In step S 1311 , the communication mechanism  302 - 2  transmits to the driver  306 - 2  the fact that the I/O (disk 1 ) has been mounted. 
         [0186]    In step S 1312 , the driver  306 - 2  mounts the virtual I/O (vdisk 2 ). 
         [0187]    In step S 1313 , the driver  306 - 2  reports to the maintenance program the completion of the mounting of the I/O (vdisk 2 ). 
         [0000]    (5) When an Instruction to Detach an I/O Shared by a Plurality of Virtual OSs has Been Issued from a Virtual OS 
         [0188]      FIG. 15  is a sequence diagram illustrating a case where an instruction has been issued from a virtual OS to detach an I/O shared by a plurality of virtual OSs. 
         [0189]    Explanations will be given for a case where vdisk 0  is detached from the maintenance program of virtual  051 . 
         [0190]    In step S 1401 , a maintenance program  304 - 1  instructs a driver  306 - 1  to detach the I/O (vdisk 0 ). 
         [0191]    In step S 1402 , the driver  306 - 1  detaches the virtual I/O (vdisk 0 ). 
         [0192]    In step S 1403 , the driver  306 - 1  transmits to a communication mechanism  302 - 1  an instruction for the control OS  201  to detach an I/O related to vdisk 0 . 
         [0193]    In step S 1404 , the communication mechanism  302 - 1  transmits to the control OS  201  an instruction to detach an I/O related to vdisk 0 . 
         [0194]    In step S 1405 , the maintenance program  204  receives the detaching instruction, and transmits it to the virtualization service unit  203 . 
         [0195]    In step S 1406 , the virtualization service unit  203  refers to the virtual OS information table and the virtual I/O information table so as to determine an I/O and virtual I/O related to vdisk 0 , and a virtual OS that is using the virtual I/O. In this example, disk 0 , vdisk 1 , and virtual OS 2  are determined to be an I/O related to vdisk 0 , a virtual I/O related to vdisk 0 , and a virtual OS using vdisk 2 , respectively. 
         [0196]    In step S 1407 , the virtualization service unit  203  requests the maintenance program  204  to instruct virtual OS 2  to detach vdisk 1 . 
         [0197]    In step S 1408 , the maintenance program  204  transmits to the communication mechanism  302 - 2  of virtual OS 2  an instruction to detach the virtual I/O (vdisk 1 ). 
         [0198]    In step S 1409 , the communication mechanism  302 - 2  transmits to the driver  306 - 2  an instruction to detach the virtual I/O (vdisk 1 ). 
         [0199]    In step S 1410 , the driver  306 - 2  detaches the virtual I/O (vdisk 1 ). 
         [0200]    In step S 1411 , the driver  306 - 2  transmits to the communication mechanism  302 - 2  the fact that the virtual I/O (vdisk 1 ) has been detached. 
         [0201]    In step S 1412 , the communication mechanism  302 - 2  transmits to the communication mechanism  202  of the control OS the result of the detaching of the virtual I/O (vdisk 1 ) of virtual OS 2 . 
         [0202]    In step S 1413 , the communication mechanism  202  transmits to the virtualization service unit  203  the received result of virtual OS 2 . 
         [0203]    In step S 1414 , the virtualization service unit  203  transmits to the driver  206  an instruction to detach the I/O (disk 0 ). 
         [0204]    In step S 1415 , the driver  206  detaches disk 0 . 
         [0205]    In step S 1416 , the driver  206  transmits to the virtualization service unit  203  the fact that the I/O (disk 0 ) has been detached. 
         [0206]    In step S 1417 , the virtualization service unit  203  instructs the communication mechanism  202  to transmit to virtual OS 1  the completion of the detaching of an I/O related to vdisk 0 . 
         [0207]    In step S 1418 , the communication mechanism  202  transmits to virtual OS 1  the completion of the detaching of the I/O related to vdisk 0 . 
         [0208]    In step S 1419 , the communication mechanism  302 - 1  transmits to the driver  306 - 1  the fact that the I/O related to vdisk 0  has been detached. 
         [0209]    In step S 1420 , the driver  306 - 1  reports to the maintenance program the completion of the detaching of the I/O (vdisk 0 ). 
       (6) When an Instruction to Mount an I/O Shared by a Plurality of Virtual OSs is Issued by a Virtual OS 
       [0210]      FIG. 16  is a sequence diagram for a case where an instruction has been issued to detach an I/O shared by a plurality of virtual OSs from a virtual OS. 
         [0211]    In this example, explanations are given for a case where vdisk 0  is mounted from the maintenance program of virtual OS 1 . 
         [0212]    Instep S 1501 , the maintenance program  304 - 1  instructs the driver  306 - 1  to mount the I/O (vdisk 0 ). 
         [0213]    In step s 1502 , the driver  306 - 1  transmits to the communication mechanism  302 - 1  an instruction for the control OS to mount the I/O related to vdisk 0 . 
         [0214]    In step S 1503 , the communication mechanism  302 - 1  transmits to the control OS an instruction to mount the I/O related to vdisk 0 . 
         [0215]    In step S 1504 , the communication mechanism  202  receives the mounting instruction, and transmits it to the virtualization service unit  203 . 
         [0216]    In step S 1505 , the virtualization service unit  203  refers to the virtual OS information table and the virtual I/O information table so as to determine the I/O and the virtual I/O related to vdisk 0 , and the virtual OS that is using the virtual I/O. In this example, disk 0 , vdisk 1 , and virtual OS 2  are determined to be the I/O related to vdisk 0 , the virtual I/O related to vdisk 0 , and the virtual OS using vdisk 1 , respectively. 
         [0217]    In step S 1506 , the virtualization service unit  203  transmits to the driver  206  an instruction to mount the I/O (disk 0 ). 
         [0218]    In step S 1507 , the driver  206  mounts disk 0 . 
         [0219]    In step S 1508 , the driver  206  transmits to the virtualization service unit  203  the fact that the I/O (disk 0 ) has been mounted. 
         [0220]    In step S 1509 , the virtualization service unit  203  requests the communication mechanism  202  to give an instruction to mount vdisk 1  to virtual OS 2 . 
         [0221]    In step S 1510 , the communication mechanism  204  transmits to the communication mechanism  302 - 2  of virtual OS 2  an instruction to mount the I/O (vdisk 1 ). 
         [0222]    In step S 1511 , the communication mechanism  302 - 2  transmits to the driver  306 - 2  an instruction to mount the I/O (vdisk 1 ). 
         [0223]    In step S 1512 , the driver  306 - 2  mounts the virtual I/O (vdisk 1 ). 
         [0224]    In step S 1513 , the driver  306 - 2  transmits to the communication mechanism  302 - 2  the fact that the virtual I/O (vdisk 1 ) has been mounted. 
         [0225]    In step S 1514 , the driver  306 - 2  transmits to the communication mechanism  202  of the control OS the result of the mounting of the virtual I/O (vdisk 1 ). 
         [0226]    In step S 1515 , the communication mechanism  202  transmits to the virtualization service unit  203  the received result of the mounting of the virtual OS 2 . 
         [0227]    In step S 1516 , the virtualization service unit  203  instructs the communication mechanism  202  to transmit to the virtual OS 1  the completion of the mounting of the I/O related to vdisk 0 . 
         [0228]    In step S 1517 , the communication mechanism  202  transmits to virtual OS 1  the completion of the mounting of the I/O related to vdisk 0 . 
         [0229]    In step S 1518 , the communication mechanism  302 - 1  transmits to the driver  306 - 1  the fact that the I/O related to vdisk 0  has been mounted. 
         [0230]    In step S 1519 , the driver  306 - 1  mounts the virtual I/O (vdisk 0 ). 
         [0231]    In step S 1520 , the driver  306 - 1  reports the completion of the mounting of the I/O (vdisk 0 ) to the maintenance program  304 - 1 . 
         [0232]    According to an OS of an embodiment, an I/O related to an I/O as a target of detaching or mounting is also detached or mounted in conjunction, making it possible to reduce troubles caused by forgetting to detach or mount. 
         [0233]    All examples and conditional language recited herein are intended for pedagogical purposes to aid the reader in understanding the invention and the concepts contributed by the inventor to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions, nor does the organization of such examples in the specification relate to a showing of the superiority and inferiority of the invention. Although the embodiment (s) of the present invention has(have) been described in detail, it should be understood that the various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the invention.