Information Processing Apparatus, Information Processing Method, and Program
The information processing apparatus addresses the limitation of controlling unsupported physical devices in virtual servers by using a physical device driver with virtual communication and control units, enabling high-performance access and management of these devices.
Patent Information
- Application Number
- JP2024033464
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2024-03-06
- Publication Date
- 2025-07-15
- Estimated Expiration
- 2044-03-06
AI Technical Summary
Existing server virtualization technologies, such as those described in Patent Document 1, do not allow direct control of physical devices not supported by the hypervisor from a virtual server.
An information processing apparatus with a physical device driver that includes a virtual communication memory, a communication memory control unit, and a physical device control unit, enabling control information to be transmitted and received between the virtual server and the physical device through a virtual disk file and internal virtual memory.
Enables direct control of physical devices not supported by the hypervisor from a virtual server, allowing high-performance use of special physical devices and streamlining development and management of control systems.
Smart Images

Figure 0007708459000001_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to an information processing apparatus, an information processing method, and a program.
Background Art
[0002] There is server virtualization technology as a technology for dividing one information processing apparatus into a plurality of virtual servers for use. In server virtualization technology, a hypervisor, which is software that provides a function for constructing a virtual server, is installed in the information processing apparatus, and a host OS for managing the virtual server is installed in the parent partition of the information processing apparatus, thereby configuring a virtual server construction environment. Then, a child partition for the virtual server is created on the virtual server construction environment of the information processing apparatus, and a guest OS is installed in the child partition, so that the child partition operates as a virtual server.
[0003] Only standard virtual devices are supported by the virtual server by these hypervisors. Therefore, it is not possible to install a device driver that is not supported by the hypervisor in the virtual server and directly control a physical device from the virtual server.
[0004] For example, Patent Document 1 discloses a virtual server system. In Cited Document 1, as a virtual server system, providing a partition machine in a server device that processes access requests from a plurality of virtual servers, the partition machine acquiring target data from a storage device for access requests from a plurality of virtual servers, storing a common portion shared by the plurality of virtual servers in the target data in a common data area, and storing a portion unique to the virtual server that made the access request in the target data in a unique data area are shown.
Prior Art Documents
Patent Documents
[0005]
Patent Document 1
Summary of the Invention
Problems to be Solved by the Invention
[0006] The virtual server system described in Patent Document 1 is a partition machine that is implemented as an I / O processing system for accessing a virtualized storage device from a virtual server, and discloses a technology for improving the processing in the partition machine and enhancing the efficiency of using resources to be I / O targets. Therefore, the technology described in Cited Document 1 does not make it possible to control a physical device not supported by the hypervisor from a virtual server.
[0007] An object of the present disclosure is to provide an information processing apparatus, an information processing method, and a program that solve the above-described problems.
Means for Solving the Problems
[0008] An information processing apparatus according to an aspect of the present disclosure includes a physical device driver that controls a physical device connected under the information processing apparatus. The physical device driver includes a virtual communication memory, a communication memory control unit, and a physical device control unit that controls the physical device with control information. The virtual communication memory includes a virtual memory that stores a virtual disk file for a virtual server constructed in the information processing apparatus, and an internal virtual memory that is a communication memory area of the physical device driver. The communication memory control unit transmits and receives control information related to the physical device driver to and from the virtual server via the virtual disk file for the virtual server, and transmits and receives control information related to the physical device driver to and from the physical device control unit via the internal virtual memory.
[0009] One aspect of the present disclosure is an information processing method applied to an information processing apparatus including a physical device driver that controls a physical device connected under the information processing apparatus, the physical device driver including a virtual communication memory, a communication memory control unit, and a physical device control unit that controls the physical device with control information, the virtual communication memory including a virtual memory that stores a virtual disk file for a virtual server constructed in the information processing apparatus and an internal virtual memory that is a communication memory area of the physical device driver. The information processing method includes the communication memory control unit transmitting and receiving control information related to the physical device driver to and from the virtual server via the virtual disk file for the virtual server, and transmitting and receiving control information related to the physical device driver to and from the physical device control unit via the internal virtual memory.
[0010] One aspect of the present disclosure is a program applied to a computer of an information processing apparatus including a physical device driver that controls a physical device connected under the information processing apparatus, the physical device driver including a virtual communication memory, a communication memory control unit, and a physical device control unit that controls the physical device with control information, the virtual communication memory including a virtual memory that stores a virtual disk file for a virtual server constructed in the information processing apparatus and an internal virtual memory that is a communication memory area of the physical device driver. The program causes the computer of the information processing apparatus to function such that the communication memory control unit transmits and receives control information related to the physical device driver to and from the virtual server via the virtual disk file for the virtual server, and transmits and receives control information related to the physical device driver to and from the physical device control unit via the internal virtual memory.
Effect of the Invention
[0011] According to the above aspect, even a physical device not supported by the hypervisor can be controlled from a virtual server.
Brief Description of the Drawings
[0012]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13
Figure 14
Figure 15
Mode for Carrying Out the Invention
[0013] Hereinafter, embodiments of the present disclosure will be described with reference to the drawings. In all the drawings, the same or corresponding components are denoted by the same reference numerals, and common descriptions will be omitted.
[0014] FIG. 1 is a diagram showing the configuration of an information processing apparatus 10 according to an aspect of the present disclosure. As shown in FIG. 1, the information processing apparatus 10 includes a host server 40, a hypervisor 30, and a first virtual server 500 serving as a guest server. The hypervisor 30 is software that provides a function for constructing a virtual server. The host server 40 serves as a host for the first virtual server 500. The host server 40 is configured by installing the hypervisor 30 in the information processing apparatus 10 and installing a host operating system (OS) for managing virtual servers in the parent partition of the storage area of the information processing apparatus 10. The first virtual server 500 creates a child partition for the virtual server on the virtual server construction environment of the information processing apparatus 10 and installs a guest OS in the child partition, thereby operating the child partition as a virtual server. The physical device 20 is a device connected to and used by the information processing apparatus 10. For example, in addition to standard devices such as hard disks and solid state drives (SSDs), special physical devices not supported by the hypervisor 30 may be connected.
[0015] The host server 40 includes a physical device driver 50 installed in the host OS to control the physical device 20 connected to the information processing apparatus 10. The first virtual server 500 includes first application software 510 and a first communication memory 520. The physical device driver 50 of the host server 40 includes an inter-virtual server communication control unit 120 and a physical device control unit 130. The inter-virtual server communication control unit 120 realizes a function of executing communication with the first application software 510 on the first virtual server 500 via the communication virtual disk indicated by the first communication memory 520. The inter-virtual server communication control unit 120 also realizes a function of exchanging communication data with the first application software 510 with the physical device control unit 130.
[0016] The first communication memory 520 of the first virtual server 500 is a communication virtual disk virtually provided to the first virtual server 500. The first communication memory 520 is configured by creating a virtual disk file using the standard functions of the host OS and the hypervisor 30 in the RAM disk configured by the inter-virtual server communication control unit 120 and mounting it to the first virtual server 500. When the first virtual server 500 transmits and receives driver commands, data, etc. for the physical device driver 50, the first application software 510 notifies the inter-virtual server communication control unit 120 of transmission and reception commands through the first communication memory 520.
[0017] The physical device control unit 130 provided in the physical device driver 50 within the host server 40 has a function of controlling the physical device 20 connected to the information processing apparatus 10. The physical device control unit 130 receives a command for the physical device driver 50 transmitted from the first application software 510 to the physical device driver 50 via the virtual server intercommunication control unit 120 or the like. Further, the physical device control unit 130 generates a command for the physical device 20 from the received command for the physical device driver 50 and issues it to the physical device 20. Furthermore, after receiving the execution result of the command from the physical device 20, the physical device control unit 130 reports the execution result to the first application software 510 via the virtual server intercommunication control unit 120 or the like. In addition, the physical device control unit 130 also performs transmission and reception of data to be read from and written to the physical device 20 with the first application software 510 via the virtual server intercommunication control unit 120 or the like.
[0018] With the above configuration, it becomes possible to directly access the physical device 20 that is not supported by the hypervisor from the first application software 510 on the first virtual server 500. More specifically, it will be described below.
[0019] In the present disclosure, for the sake of simplicity of explanation, a configuration is shown in the case of directly communicating between the first virtual server 500, which is one virtual server, and the physical device driver 50 installed in the host OS to access the physical device 20. However, by adding a definition of a virtual server, it is also possible to directly communicate between a plurality of virtual servers and the physical device driver 50 to share one physical device 20.
[0020] FIG. 2 shows a functional block in the virtual server intercommunication control unit 120 for the physical device driver 50 to directly communicate with the application software on the virtual server. In FIG. 2, a more detailed physical and logical configuration of the physical device driver 50 shown in FIG. 1, and connections with the physical device 20 and the first virtual server 500 are shown.
[0021] In addition to the virtual server - to - server communication control unit 120 and the physical device control unit 130, the physical device driver 50 also includes a driver control unit 100. The virtual server - to - server communication control unit 120 includes a communication system memory 200, a communication memory control unit 300, and a virtual communication memory 400.
[0022] The driver control unit 100 of the physical device driver 50 mediates and controls the communication between the virtual server - to - server communication control unit 120 and the physical device control unit 130, and transmits and receives commands, data, statuses of command execution results, and data for the physical device driver 50 to and from the physical device control unit 130. The communication system memory 200 includes a communication memory storage unit 210, a communication data storage unit 220, and a data block management unit 230.
[0023] The communication memory storage unit 210 pre - stores data tables shown in FIGS. 3 to 5 described later. Also, the communication memory storage unit 210 stores commands for various processes (hereinafter referred to as "instruction data") and information such as identification IDs and communication IDs (hereinafter referred to as "identification data") in the data table of FIG. 6 described later. The communication data storage unit 220 stores actual data communicated between the first virtual server 500 and the physical device driver 50, more specifically, between the first virtual server 500 and the physical device control unit 130 of the physical device driver 50. The data block management unit 230 stores the data block management table of FIG. 8 described later.
[0024] The communication memory control unit 300 controls the communication system memory 200 and the virtual communication memory 400, and processes the writing to the transmission file and the reading of the reception file executed on the first communication memory 520 as a communication operation from the first virtual server 500. Also, the communication memory control unit 300 controls the communication system memory 200 and the virtual communication memory 400, and processes the control of the physical device driver 50 by the first virtual server 500 as a virtual communication operation to the physical device driver 50. Also, the communication memory control unit 300 generates the virtual communication memory 400.
[0025] The virtual communication memory 400 is a memory configured as a RAM disk that stores virtual disk files for virtual servers. By using the standard functions of the host OS and the hypervisor to create a virtual disk file in the virtual communication memory 400 and mount it to the virtual server, it is configured as a communication memory, which is a virtual disk directly accessible from the application software on the virtual server, and is used as a memory for communicating with the application software on the virtual server. This virtual communication memory 400 includes a first virtual memory 410 and an internal virtual memory 420.
[0026] The first virtual memory 410 indicates a virtual disk file for the first communication memory 520 created in the virtual communication memory 400, that is, a memory area for communicating with the first virtual server 500. The dashed lines connecting the functional blocks in the figure indicate the correspondence of the memory areas, and the solid lines indicate the actual data paths.
[0027] The internal virtual memory 420 is a memory area for communication in the same way as the first virtual memory 410, but is used as a communication memory area for the physical device driver 50 instead of a memory area for the virtual server. Note that the internal virtual memory 420 is excluded from the memory area for creating the virtual disk file by managing the memory area where the internal virtual memory 420 is located as a memory area that cannot be used as a RAM disk by the host OS.
[0028] The format of the first virtual memory 410 may use any file format as long as it is a file format that can be used as a virtual disk file such as VHD or VHDX. Since the internal virtual memory 420 is created in an area excluded from the memory area for creating the virtual disk file, the format can be freely determined. The first virtual memory 410 is associated with the first communication memory 520. The internal virtual memory 420 is used as a communication memory for the physical device driver 50.
[0029] As described above, the first virtual server 500 includes first application software 510 and first communication memory 520. When the first application software 510 transmits and receives driver commands, data, etc. for the physical device driver 50, it notifies the communication memory control unit 300 of commands for transmitting and receiving driver commands, data, etc. through the first communication memory 520.
[0030] The first communication memory 520 notifies the communication memory control unit 300 of commands for transmitting and receiving to and from the physical device driver 50 notified from the first application software 510 to perform communication. The first communication memory 520 has its address associated with the first virtual memory 410.
[0031] FIG. 3 is a data table showing an example of commands and destination information according to an embodiment of the present invention. The communication memory storage unit 210 stores in advance instruction data for performing initial setting of writing, instruction data for performing initial setting of reading, and instruction data for performing transmission. Further, the communication memory storage unit 210 similarly stores destination information indicating the destination and source of communication. In the data table of FIG. 3, as an example, "INIT_W", "INIT_R", and "TX" are stored as items of instruction data, and "AP1" and "PDD" (Physical Device Driver) are stored as items of destination information. Note that the data table of FIG. 3 is an example of the data format of the present embodiment and may be appropriately changed according to the communication method used in the information processing apparatus 10. Here, "AP1" indicates the first virtual server 500, and "PDD" indicates the physical device driver 50.
[0032] FIG. 4 is a data table showing an example of addresses of a communication memory according to an embodiment of the present invention. The transmission address and the reception address shown in the data table of FIG. 4 are addresses used when an application (first application software 510 of the first virtual server 500) on the virtual server issues an input / output (IO) instruction to the communication memory (first communication memory 520) and writes the initial setting commands (INIT_W and INIT_R) shown in FIG. 3 to perform initial communication settings. The application on the virtual server stores in advance the addresses used when performing initial communication settings by itself.
[0033] In the data table of FIG. 4, as an example of addresses when each application or physical device driver 50 on the virtual server performs initial communication settings, a transmission address "0xXXXXXXX1" and a reception address "0xYYYYYYY1" are set for the first communication memory 520, and a transmission address "0xXXXXXXX2" and a reception address "0xYYYYYYY2" for the physical device driver 50 are set.
[0034] These transmission addresses and reception addresses are logical block addresses (LBAs) when accessing data in the first communication memory 520 and the internal virtual memory 420. Since the first communication memory 520 enables the first virtual memory 410 to be accessible from the first virtual server 510, the data block in the first communication memory 520 indicated by the LBA for the first communication memory 520 becomes the data block in the first virtual memory 410 indicated by the same LBA value. Note that the logical block address (LBA) is a method of designating an address indicating the position of data in a storage device. The logical block address (LBA) represents a block offset from the head of a block address space including logical blocks.
[0035] FIG. 5 is a data table showing an example of logical block addresses (LBAs) of a virtual communication memory 400 used by a communication memory control unit 300 for communication control according to an embodiment of the present invention.
[0036] The association between the virtual communication memory 400 and the communication memory of the virtual server is realized by setting the first virtual memory 410 in the virtual communication memory 400 as the virtual disk volume of the first virtual server 500 and using the virtual disk volume as the first communication memory 520. Also, the internal virtual memory 420 in the virtual communication memory 400 is used as the communication memory area for the physical device driver 50. Thus, by the standard functions of the operating system (OS) operating on the virtual server and the mechanism (such as the hypervisor program) providing the operating environment of the virtual server, the logical block address used for input / output (I / O) in the first communication memory 520 is converted into the logical block address of the virtual communication memory 400 where the first virtual memory 410 is located. That is, when the first application software 510 executes writing to or reading from a file created in the first communication memory 520, the logical block address received by the communication memory control unit 300 in the input / output request packet (IRP) becomes the logical block address of the virtual communication memory 400 after the above conversion.
[0037] In the data table of FIG. 5, as an example of the values when the transmission address and the reception address of the communication memory (the communication memory area between the first communication memory 520 and the physical device driver 50) shown in the data table of FIG. 4 are converted and the logical block address (LBA) of the virtual communication memory 400 is generated, "LBA_AP1_W", "LBA_AP1_R", "LBA_PDD_W", and "LBA_PDD_R" are shown. The values of "LBA_AP1_W" and "LBA_AP1_R" are the values of the LBA used when processing the I / O from the application software 510 to the first communication memory 520 as communication with the physical device driver 50, and are written and stored in the data table of FIG. 6 described later when the application on the virtual server executes the initial setting process for communication.
[0038] The values of "LBA_PDD_W" and "LBA_PDD_R" are the LBAs of the virtual communication memory 400 that the physical device driver 50 accesses when communicating with the first communication memory 520 via the first virtual memory 410. Specifically, they are the LBAs to which the internal virtual memory 420 is allocated. Since the virtual communication memory 400 is a memory that the communication memory control unit 300 can directly access, the values of these LBAs are set in the initial setting process of the physical device driver 50.
[0039] FIG. 6 is a data table showing an example of identification data managed by the communication memory storage unit 210 according to an embodiment of the present invention. In this embodiment, in the data table of the identification data managed by the communication memory storage unit 210 (hereinafter referred to as the "communication management table"), five data items consisting of an identification ID, a communication ID, status information, a saved data flag, and a data save address are described.
[0040] In the communication management table, as the identification ID, the logical block address (LBA) managed by the communication memory control unit 300 is registered. That is, the identification ID of the communication management table in FIG. 6 is registered in association with the transmission address and the reception address of the communication memory described in the data table of FIG. 5. As the communication ID, destination information is registered. That is, the communication ID is registered in association with the destination information (AP1, PDD) in the data table of FIG. 3.
[0041] As the status in the communication management table, in this embodiment, any one of the six status information items of "initial setting", "idle", "transmission request", "waiting for transmission completion", "reception request", and "waiting for reception completion" is registered. The status information is registered by the communication memory control unit 300 according to the processing of the communication memory control unit 300. Note that before the initial setting, since there is no management information by the identification ID, the status of the communication management table is shown as "initial status".
[0042] In the communication management table, a storage data flag is registered according to whether there is actual data stored by the communication memory control unit 300. As types of the storage data flag, there are "valid" and "invalid". When there is storage data, "valid" is registered as the storage data flag, and when there is no storage data, "invalid" is registered as the storage data flag.
[0043] In the communication management table, as the storage data address, at the initial setting, the head address of the storage area for temporarily storing communication data is registered by the communication memory control unit 300. Note that the storage data flag and the data storage address are stored in the entry of the reception identification ID of the communication management table. In this embodiment, among the four lines of information described in the communication management table of FIG. 6, the even-numbered entry is used as the entry for storing the reception identification ID.
[0044] FIG. 7 shows an example of communication packet data when communicating between a virtual server and a physical device driver 50 that writes to the virtual communication memory 400 when an application or a physical device driver 50 operating on the virtual server issues a transmission / reception request for communication data in the communication between virtual servers according to an embodiment of the present invention. In FIG. 7, as an example, the communication packet data between the virtual server and the physical device driver 50 when the first application software 510 operating on the first virtual server 500 requests to transmit a command or data to the physical device driver 50 is shown. In this case, the transmission address in FIG. 7 is the transmission address "0xXXXXXXX1" of the first communication memory 520 shown in FIG. 4. Communication data is set in the data part of the virtual server-to-virtual server communication packet, and in the header part, the transmission command "TX", the destination ID "PDD", and the source ID "AP1" shown in FIG. 3 are set, and the data length of the communication data written in the data part is set as the valid data length.
[0045] FIG. 8 shows an example of a data block management table regarding the actual memory allocation state of the virtual communication memory 400 of the virtual server according to an embodiment of the present invention. The data block management table in FIG. 8 is implemented in the data block management unit 230 of the communication system memory 200 in FIG. 1, and the data block management data is updated by the communication memory control unit 300. Note that four items, namely, "cluster number", "actual memory allocation flag", "data pattern", and "actual memory address", are registered in the data block management table.
[0046] In the data block management table, the cluster number indicates the number assigned in order to each cluster when the entire virtual memory area assigned to the virtual communication memory 400 is divided in units of the cluster capacity. Note that the cluster capacity is defined as a multiple of the logical block capacity. In this embodiment, the logical block capacity is 512 bytes, and the cluster capacity is 64 kilobytes (= 65536 bytes = 512 bytes × 128).
[0047] In the data block management table, the actual memory allocation flag indicates the validity / invalidity of the address value stored at the actual memory address described later. In this embodiment, 1 byte is allocated as the actual memory allocation flag, valid = 0x01, invalid = 0x00, and the initial value is invalid (0x00).
[0048] In the data block management table, the data pattern indicates the data pattern considered to be written in each cluster corresponding to the cluster number. The value of the data pattern is used when a read request from the cluster of the corresponding cluster number is executed when the actual memory allocation flag is invalid. In this embodiment, 1 byte is allocated as the data pattern, and the initial value is "0x00".
[0049] In the data block management table, the physical memory address indicates the address of the physical memory assigned to each cluster corresponding to the cluster number. As the physical memory address, the address value of the memory buffer secured for storing the data of the corresponding cluster number is set, and the physical memory allocation flag is set to be valid.
[0050] Next, with reference to FIGS. 9 to 11, the input / output (I / O) processing for the virtual communication memory 400 in the information processing apparatus 10 according to an embodiment of the present invention will be described in detail. When an input / output (I / O) instruction is issued from the first application software 510 of the first virtual server 500 to the virtual communication memory 400, an input / output (I / O) processing request by an input / output request packet (IRP) comes to the communication memory control unit 300. This input / output request packet stores information such as a logical block address (LBA) associated with the virtual communication memory 400 and a data buffer address for input / output (I / O) processing, as exemplified in the data table of FIG. 5. The data buffer address is the memory buffer address in which the write data is stored when the input / output request is a write instruction, and is the memory buffer address in which the read data is stored when the input / output request is a read instruction.
[0051] FIG. 9 is a flowchart showing an overview of input / output processing for the virtual communication memory 400 of the information processing apparatus 10 according to an embodiment of the present invention (steps S100 to S300). First, the communication memory control unit 300 receives information of an input / output request packet (IRP) and determines whether the input / output request is a processing request for a communication command (S100). Specifically, when the processing request command indicated by the input / output request is a read instruction, it is determined as a communication command when the logical block address matches the read identification ID stored in the communication management table of FIG. 6. On the other hand, when the processing request command is a write request, in addition to when the logical block address matches the write identification ID stored in the communication management table of FIG. 6, it is also determined as a communication command when the content of the write data is the write initial setting command "INIT_W" or the read initial setting command "INIT_R" shown in FIG. 3.
[0052] In step S100, when the communication memory control unit 300 determines that it is a communication command, the communication command processing operates (S300). When it is determined that it is not a communication command, the normal file access input / output (I / O) processing for the virtual communication memory 400 operates (S200). The communication command processing (S300) is the same as in the prior art. For example, it consists of initial setting processing, transmission processing, and reception processing in communication between virtual servers, and is the same as the processing process shown in FIGS. 8 to 10 of the aforementioned Patent Document 1. Therefore, the detailed description of its content is omitted.
[0053] Next, the operation of the normal file access input / output (I / O) processing (S200) for the virtual communication memory 400 will be described in detail with reference to FIGS. 10 to 11. FIG. 10 is a flowchart showing the normal file access input / output processing for the virtual communication memory 400 of the information processing apparatus 10 according to an embodiment of the present invention (steps S201 to S211). This shows the processing process executed by the communication memory control unit 300 when it is determined that it is not a communication command.
[0054] The communication memory control unit 300 checks the logical block address (LBA), data count, and the address of the input / output memory buffer indicated by the input / output (I / O) processing request of the input / output request packet (IRP), stores the processing request data count, start LBA, and start buffer address, and calculates and stores the cluster number corresponding to the start LBA (S201).
[0055] The cluster number is a number for referring to a data block management table (Figure 8) that manages data blocks of the virtual communication memory 400. In this embodiment, since the logical block capacity is 512 bytes and the cluster capacity is 64 kilobytes (= 65536 bytes = 512 bytes × 128), the value obtained by dividing the start LBA by 128 and truncating the decimal part is the cluster number.
[0056] Next, the communication memory control unit 300 checks the physical memory allocation flag in the data block management table (Figure 8) using the cluster number (S202). In step S202, if it is determined that the cluster number indicates a physically memory-allocated cluster, the communication memory control unit 300 executes processing for the physically memory-allocated address shown in Figure 11 described later. In step S202, if it is determined that the cluster number does not indicate a physically memory-allocated cluster, the communication memory control unit 300 determines whether the I / O processing request is a read command (S203).
[0057] If it is determined in step S203 that it is a read command, the communication memory control unit 300 transfers data to the I / O source, assuming that the data pattern described in the data block management table (Figure 8) is written in the cluster (S207). Specifically, the relative logical block address and read processing data count for starting reading within the cluster are calculated using the cluster number, start LBA, and processing request data count, and the data pattern of the cluster for the read processing data count is written to the start buffer address. Then, step S209 described later is executed.
[0058] If it is determined in step S203 that the command is not a read command (i.e., it is a write command), the communication memory control unit 300 prepares a temporary cluster buffer and writes the write data indicated by the input / output request to the temporary cluster buffer (S204). Specifically, when the valid flag of the temporary cluster buffer is reset, actual memory is allocated in the size of the cluster capacity to create a temporary cluster buffer and the flag is made valid. Then, using the cluster number, the start LBA, and the number of data for the processing request, the relative logical block address at which writing starts within the cluster and the number of data for the write process are calculated. The write data is read from the start buffer address for the number of data for the process, and writing is performed from the relative block address of the temporary cluster buffer.
[0059] The communication memory control unit 300 checks the data written to the temporary cluster buffer in step S204 and checks whether all the write data is of the same data pattern (S205). If it is determined in step S205 that all the write data is of the same data pattern, it is regarded that the data of the same data pattern has also been written to the unwritten area in the temporary cluster buffer, and the data pattern is set in the data block management table of the cluster. Then, step S209 described later is executed.
[0060] If it is determined in step S205 that the write data is not all of the same data pattern, the address of the temporary cluster buffer is stored in the data block management table, and the actual memory allocation flag (or the actual memory reservation flag) is activated (S206). Specifically, after writing data in the data pattern described in the data block management table (FIG. 8) to the unwritten area in the temporary cluster buffer to finalize all the data in the temporary cluster buffer, the address of the temporary cluster buffer is stored as the actual memory address, the actual memory allocation flag is set to valid, and the valid flag of the temporary cluster buffer is reset.
[0061] When the processing for one cluster is completed, the communication memory control unit 300 calculates and stores the remaining number of processing request data, the starting LBA to be processed next, the starting buffer address, and the cluster number (S209). Specifically, the communication memory control unit 300 calculates the remaining number of processing request data using the number of processing data and updates the number of processing request data. If the updated number of processing request data is not zero, in order to continue the processing of the next cluster, the starting LBA and the starting buffer address are updated using the number of processing data, and the cluster address is updated by adding 1 (S209).
[0062] If the number of processing data updated in step S209 is not zero, it branches to step S202 via step S210 and executes the input / output processing in the next cluster. On the other hand, if it is determined in step S210 that the number of processing data is zero, the communication memory control unit 300 sends an end report to the I / O request source (S211) and ends the normal file access input / output processing (Figure 10).
[0063] Figure 11 is a flowchart showing the processing for the actually memory-allocated address in the normal file access input / output processing for the virtual communication memory 400 shown in Figure 10 (steps S220 to S222). In step S202 of Figure 10, if it is determined that the cluster number calculated in step S201 indicates an actually memory-allocated cluster, the communication memory control unit 300 determines whether the input / output request is a read command (S220). If it is determined in step S220 that it is a read command, the communication memory control unit 300 reads data from the memory buffer indicated by the actually memory address stored in the data block management table (Figure 8) and transfers it to the I / O issuing source (S222).
[0064] Specifically, the relative logical block address and the read processing data number for starting the read within the cluster are calculated using the cluster number, the starting LBA, and the number of processing request data. Next, data for the number of processing data is read from the relative logical address of the memory buffer indicated by the actually memory address stored in the data block management table and written to the starting buffer address.
[0065] When it is determined in step S220 that the command is not a read command (write command), the communication memory control unit 300 writes the data from the I / O source to the memory buffer indicated by the actual memory address stored in the data block management table (S221). Specifically, the relative logical address at which writing starts within the cluster and the number of data for write processing are calculated using the cluster number, the start LBA, and the number of data for the processing request. Next, the data for the number of processing data is read from the start buffer address and written from the relative logical block address of the memory buffer indicated by the actual memory address stored in the data block management table.
[0066] Next, the data structure 1200 of the communication system memory 200 of the information processing apparatus 10 according to an embodiment of the present invention will be described with reference to FIG. 12. The data structure 1200 is composed of three areas 1210, 1220, and 1230, and corresponds to the communication memory storage unit 210, the communication data storage unit 220, and the data block management unit 230 shown in FIG. The first area 1210 stores the association between commands (such as INIT_W and INIT_R) as shown in FIG. 3 and the communication destination / source ID (the application AP1 of the first virtual server, the physical device driver PDD). The second area 1220 stores the actual data communicated between the virtual servers. The third area 1230 stores a data block management table as shown in FIG. 8, which is composed of a cluster number, an actual memory allocation flag (valid / invalid), a data pattern, and an actual memory address.
[0067] Next, with reference to FIG. 13, the operation from when a command is executed from the first application software 510 on the first virtual server 500 to the physical device 20 until the execution result is received will be described.
[0068] The first application software 510 causes the physical device 20 to execute a command. This is done by the first application software 510 writing driver commands and data for the physical device driver 50 to a transmission file stored in the first communication memory 520 and then transmitting it to the virtual server - to - virtual server communication control unit 120 (step S10). After the first application software 510 writes to the transmission file stored in the first communication memory 520, it starts reading the reception file stored in the first communication memory 520 and waits for the execution result of the command in the physical device driver 50 to be returned from the virtual server - to - virtual server communication control unit 120.
[0069] The communication memory control unit 300 of the virtual server - to - virtual server communication control unit 120 receives control information for controlling the physical device driver 50 when commands and data, which are control information for controlling the physical device driver 50, are written to the aforementioned transmission file. Further, the communication memory control unit 300 writes the received control information for the physical device driver 50 to the internal virtual memory 420, thereby transmitting the control information to the physical device control unit 130 (step S20).
[0070] The physical device control unit 130 of the physical device driver 50 receives the control information written to the internal virtual memory 420 via the communication memory control unit 300 of the virtual server - to - virtual server communication control unit 120 and the driver control unit 100. Also, the physical device control unit 130 generates a command for the physical device 20 from the commands and data for the physical device driver 50 and issues it to the physical device 20 (step S30).
[0071] When the command execution is completed, the physical device 20 transmits the command execution result and data in the physical device 20 to the physical device control unit 130 of the physical device driver 50 (step S40).
[0072] The physical device control unit 130 sends the received command execution results and data at the physical device 20 to the virtual server - to - virtual server communication control unit 120 via the driver control unit 100. At this time, the communication memory control unit 300 of the virtual server - to - virtual server communication control unit 120 processes the control information, which is the command execution results and data from the physical device control unit 130, as virtual communication within the physical device driver 50, and writes the command execution results and data to the internal virtual memory 420. Also, the communication memory control unit 300 writes the received control information from the physical device control unit 130 to the reception file of the first virtual memory 410 and makes the reception file readable, so as to transmit the control information from the physical device driver 50 to the first virtual server 500 (step S50). Note that making the reception file of the first virtual memory 410 readable is equivalent to making the reception file on the first communication memory 520, which is a virtual memory driver, readable.
[0073] When the reception file on the first communication memory 520 becomes readable, the first application software 510, which has been waiting for the reading of the reception file, completes the reading of the data in the reception file and receives the status and data of the execution results of the driver commands sent to the physical device driver 50 (step S60). Thereby, the first application software 510 realizes the reception of the command execution results and data at the physical device 20.
[0074] As described above, the information processing apparatus 10 of the present disclosure provides a physical device access means in a virtual machine such as the described virtual server, enabling direct control of physical devices not supported by the hypervisor, which was previously impossible for application software on the virtual machine, to be realized with a simple interface such as writing and reading files to / from a communication virtual disk.
[0075] Also, when using a physical device not supported by the hypervisor from application software on a virtual machine such as the virtual server described above, there is no need to go through a complex control process using standard network communication functions. Therefore, it becomes possible to use a physical device from application software operating outside the virtual environment on an information processing device such as a host server with the same high performance as when using it from application software on a virtual machine.
[0076] As described above, the present disclosure enables the construction of a highly functional and high-performance control system using special physical devices, which could not be achieved with virtual servers using currently widely spread hypervisors. Thus, it becomes possible to streamline the development work of control systems and the like by taking advantage of the features of virtual servers, such as easy system replication, resource expansion, version management, and backup. Also, the operation and management of the developed system can be streamlined by using the operation functions of virtual servers.
[0077] FIG. 14 is a diagram showing a configuration example of an information processing apparatus 10 according to an embodiment of the present disclosure. The information processing apparatus 10 includes a physical device driver 50 that controls physical devices connected under the information processing apparatus 10. The physical device driver 50 includes a virtual communication memory 400, a communication memory control unit 300, and a physical device control unit 130 that controls a physical device with control information. The virtual communication memory 400 includes a virtual memory 410 that stores a virtual disk file for a virtual server constructed in the information processing apparatus 10, and an internal virtual memory 420 that is a communication memory area of the physical device driver 50. The communication memory control unit 300 transmits and receives control information related to the physical device driver 50 to and from the virtual server via a virtual disk file for the virtual server, and transmits and receives control information related to the physical device driver 50 to and from the physical device control unit 130 via the internal virtual memory 420.
[0078] FIG. 15 is a block diagram showing an example of the hardware configuration in the information processing apparatus 10. Here, the information processing apparatus 10 is composed of a CPU 61, a RAM (Random Access Memory) 62, a non-volatile memory 63 such as a ROM (Read Only Memory), a recording device 64, and the like. Programs for realizing the functions of the hypervisor 30, the host OS, the guest OS, and the physical device driver 50 of the information processing apparatus 10 are recorded in the non-volatile memory 63 and the recording device 64. The RAM 62 is used as a work area or the like for temporarily storing data and the like used during the operation of the CPU 61 and the like. Further, the information processing apparatus 10 includes a connection port 65 for connecting the physical device 20. Note that input / output devices such as a keyboard, a mouse, and a display device may be connected to the connection port 65. Also, these devices are connected by a bus or the like. Note that the non-volatile memory 63 is composed of an EEPROM (Electrically Erasable Programmable Read-Only Memory) or the like, and the recording device 64 is composed of a hard disk, an SSD, or the like, and a computer program for realizing the functions of the information processing apparatus 10 may be updated by these devices.
[0079] As described above, the present disclosure has been described with reference to the embodiments, but the present disclosure is not limited to the above-described embodiments. Various changes that can be understood by those skilled in the art can be made to the configuration and details of the present disclosure within the scope of the present disclosure. And each embodiment can be combined with other embodiments as appropriate.
[0080] Some or all of the above-described embodiments can be described as follows in the appended claims, but are not limited thereto.
[0081] (Appended Claim 1) A physical device driver for controlling a physical device connected under an information processing apparatus is provided, The physical device driver, a virtual communication memory, a communication memory control unit, a physical device control unit that controls the physical device with control information, comprising The virtual communication memory is a virtual memory for storing a virtual disk file for a virtual server constructed in the information processing apparatus, and an internal virtual memory which is a communication memory area of the physical device driver, comprising The communication memory control unit transmits and receives control information related to the physical device driver to and from the virtual server via the virtual disk file for the virtual server, and transmits and receives control information related to the physical device driver to and from the physical device control unit via the internal virtual memory. An information processing apparatus.
[0082] (Appendix 2) The virtual disk file includes a transmission file, The communication memory control unit receives control information for the physical device driver by writing the control information for the physical device driver to the transmission file, and transmits control information for the physical device control unit by writing the received control information for the physical device driver to the internal virtual memory. The information processing apparatus according to Appendix 1.
[0083] (Appendix 3) The virtual disk file includes a reception file, The communication memory control unit receives control information from the physical device control unit by writing the control information from the physical device control unit to the internal virtual memory, and transmits control information from the physical device driver to the virtual server by writing the received control information from the physical device control unit to the reception file and making the reception file readable. The information processing apparatus according to Appendix 1 or Appendix 2.
[0084] (Appendix 4) The internal virtual memory is managed as a memory area that cannot be used as a disk by the host OS, and is excluded from the memory area for creating the virtual disk file. The information processing apparatus according to any one of Appendices 1 to 3.
[0085] (Appendix 5) The information processing apparatus includes the virtual server, The virtual memory is a communication memory that is logically mounted on the virtual server, The virtual disk file is logically provided in the communication memory, The information processing apparatus according to any one of Appendices 1 to 4.
[0086] (Appendix 6) The virtual server includes application software, The application software controls the physical device driver by reading and writing control information regarding the physical device driver to the virtual disk file provided in the communication memory. The information processing apparatus according to Appendix 5.
[0087] (Appendix 7) The control information to the physical device driver is commands and data for the physical device driver, The control information from the physical device driver is the status and data of the execution result of the command from the physical device driver. The information processing apparatus according to any one of Appendices 1 to 6.
[0088] (Appendix 8) The physical device is a device not supported by the hypervisor. The information processing apparatus according to any one of Appendices 1 to 7.
[0089] (Appendix 11) An information processing method applied to an information processing apparatus including a physical device driver that controls a physical device connected to a subordinate of the information processing apparatus, the physical device driver including a virtual communication memory, a communication memory control unit, and a physical device control unit that controls the physical device with control information, the virtual communication memory including a virtual memory that stores a virtual disk file for a virtual server constructed in the information processing apparatus and an internal virtual memory that is a communication memory area of the physical device driver, the communication memory control unit transmits and receives control information related to the physical device driver to and from the virtual server via the virtual disk file for the virtual server, and transmits and receives control information related to the physical device driver to and from the physical device control unit via the internal virtual memory. Information processing method.
[0090] (Appendix 12) The virtual disk file includes a transmission file, and the communication memory control unit receives control information for the physical device driver by writing the control information for the physical device driver to the transmission file, and transmits the received control information for the physical device driver to the physical device control unit by writing the received control information for the physical device driver to the internal virtual memory. The information processing method according to Appendix 11.
[0091] (Appendix 13) The virtual disk file includes a reception file, and the communication memory control unit receives control information from the physical device control unit by writing the control information from the physical device control unit to the internal virtual memory, and transmits the received control information from the physical device control unit to the virtual server by writing the received control information from the physical device control unit to the reception file and making the reception file readable. The information processing method described in Supplementary Note 11 or Supplementary Note 12.
[0092] (Supplementary Note 14) The information processing method according to any one of Supplementary Notes 11 to 13, wherein the internal virtual memory is excluded from the memory area for creating the virtual disk file by being managed as a memory area that cannot be used as a disk from the host OS.
[0093] (Supplementary Note 15) The information processing apparatus includes the virtual server, The virtual memory is a communication memory that is logically mounted on the virtual server, The virtual disk file is logically provided in the communication memory, The information processing method according to any one of Supplementary Notes 11 to 14.
[0094] (Supplementary Note 16) The virtual server includes application software, The application software controls the physical device driver by reading and writing control information regarding the physical device driver to the virtual disk file provided in the communication memory. The information processing method described in Supplementary Note 15.
[0095] (Supplementary Note 17) The control information to the physical device driver is a command or data for the physical device driver, The control information from the physical device driver is the status or data of the execution result of the command from the physical device driver. The information processing method according to any one of Supplementary Notes 11 to 16.
[0096] (Supplementary Note 18) The physical device is a device not supported by the hypervisor. The information processing method according to any one of Supplementary Notes 11 to 17.
[0097] (Appendix 21) A program applied to a computer of an information processing apparatus, comprising a physical device driver for controlling a physical device connected to the subordinate of the information processing apparatus, the physical device driver comprising a virtual communication memory, a communication memory control unit, and a physical device control unit for controlling the physical device with control information, the virtual communication memory comprising a virtual memory for storing a virtual disk file for a virtual server constructed in the information processing apparatus and an internal virtual memory which is a communication memory area of the physical device driver, wherein the communication memory control unit: transmits and receives control information related to the physical device driver to and from the virtual server via the virtual disk file for the virtual server; transmits and receives control information related to the physical device driver to and from the physical device control unit via the internal virtual memory. Program.
[0098] (Appendix 22) The virtual disk file includes a transmission file, wherein the communication memory control unit: receives control information for the physical device driver by writing the control information for the physical device driver to the transmission file; transmits control information for the physical device control unit by writing the received control information for the physical device driver to the internal virtual memory. The program according to Appendix 21.
[0099] (Appendix 23) The virtual disk file includes a reception file, wherein the communication memory control unit: receives control information from the physical device control unit by writing the control information from the physical device control unit to the internal virtual memory; Writing the received control information from the physical device control unit to the reception file and making the reception file readable, thereby transmitting the control information from the physical device driver to the virtual server The program according to Appendix 21 or Appendix 22
[0100] (Appendix 24) The internal virtual memory is excluded from the memory area for creating the virtual disk file by being managed as a memory area that cannot be used as a disk by the host OS. The program according to any one of Appendices 21 to 23
[0101] (Appendix 25) The information processing apparatus includes the virtual server The virtual memory is a communication memory logically mounted on the virtual server The virtual disk file is logically provided in the communication memory The program according to any one of Appendices 21 to 24
[0102] (Appendix 26) The virtual server includes application software The application software controls the physical device driver by reading and writing control information regarding the physical device driver to the virtual disk file provided in the communication memory The program according to Appendix 25
[0103] (Appendix 27) The control information to the physical device driver is commands and data for the physical device driver The control information from the physical device driver is the status and data of the execution result of the command from the physical device driver The program according to any one of Appendices 21 to 26
[0104] (Appendix 28) The physical device is a device not supported by a hypervisor. The emotion program according to any one of Appendices 21 to 27.
Explanation of Signs
[0105] 10 Information processing device 20 Physical device 30 Hypervisor 40 Host server 50 Physical device driver 100 Driver control unit 120 Virtual server - to - virtual server communication control unit 130 Physical device control unit 200 Communication system memory 210 Communication memory storage unit 220 Communication data storage unit 230 Data block management unit 300 Communication memory control unit 400 Virtual communication memory 410 First virtual memory 420 Internal virtual memory 500 First virtual server 510 First application software 520 First communication memory
Claims
1. A physical device driver for controlling a physical device connected under an information processing apparatus, wherein the physical device driver comprises a virtual communication memory, a communication memory control unit, and a physical device control unit for controlling the physical device with control information, and wherein the virtual communication memory comprises a virtual memory for storing a virtual disk file for a virtual server constructed in the information processing apparatus, and an internal virtual memory which is a communication memory area of the physical device driver, and wherein the communication memory control unit transmits and receives control information related to the physical device driver to and from the virtual server via the virtual disk file for the virtual server, and transmits and receives control information related to the physical device driver to and from the physical device control unit via the internal virtual memory. An information processing apparatus.
2. The virtual disk file includes a transmission file, and wherein the communication memory control unit receives control information for the physical device driver by writing the control information for the physical device driver to the transmission file, and transmits the control information for the physical device driver to the physical device control unit by writing the received control information for the physical device driver to the internal virtual memory. The information processing apparatus according to claim 1.
3. The virtual disk file includes a reception file, and wherein the communication memory control unit receives control information from the physical device control unit by writing the control information from the physical device control unit to the internal virtual memory, and transmits the control information from the physical device driver to the virtual server by writing the received control information from the physical device control unit to the reception file and making the reception file readable. The information processing apparatus according to claim 2.
4. The information processing apparatus according to claim 1, wherein the internal virtual memory is excluded from a memory area for creating the virtual disk file by being managed as a memory area that cannot be used as a disk from a host OS.
5. The information processing apparatus includes the virtual server, wherein the virtual memory is a communication memory logically mounted on the virtual server, and the virtual disk file is logically provided in the communication memory. The information processing apparatus according to claim 1.
6. The virtual server includes application software. The application software controls the physical device driver by reading and writing control information regarding the physical device driver to the virtual disk file provided in the communication memory. The information processing apparatus according to claim 5.
7. The control information for the physical device driver is a command or data for the physical device driver, The control information from the physical device driver is the status or data of the execution result of the command from the physical device driver. The information processing apparatus according to claim 1.
8. The physical device is a device not supported by the hypervisor. The information processing apparatus according to any one of claims 1 to 7.
9. An information processing method applied to an information processing apparatus including a physical device driver that controls a physical device connected under the information processing apparatus, the physical device driver including a virtual communication memory, a communication memory control unit, and a physical device control unit that controls the physical device with control information, the virtual communication memory including a virtual memory that stores a virtual disk file for a virtual server constructed in the information processing apparatus and an internal virtual memory that is a communication memory area of the physical device driver, wherein the communication memory control unit transmits and receives control information related to the physical device driver to and from the virtual server via the virtual disk file for the virtual server, transmits and receives control information related to the physical device driver to and from the physical device control unit via the internal virtual memory. Information processing method.
10. A program applied to a computer of an information processing apparatus including a physical device driver that controls a physical device connected under the information processing apparatus, the physical device driver including a virtual communication memory, a communication memory control unit, and a physical device control unit that controls the physical device with control information, the virtual communication memory including a virtual memory that stores a virtual disk file for a virtual server constructed in the information processing apparatus and an internal virtual memory that is a communication memory area of the physical device driver, wherein the communication memory control unit transmits and receives control information related to the physical device driver to and from the virtual server via the virtual disk file for the virtual server, A program that transmits and receives control information related to the physical device driver to and from the physical device control unit via the internal virtual memory. Program.
Citation Information
Patent Citations
Provision of direct access from virtual environment to hardware
JP2005322242A
Virtualization device, communication method, and program
JP2014149698A
Information processing device, information processing method and program
JP2019164661A
Input / output execution device, device virtualization system, input / output execution method, and recording medium
WO2019124450A1
Virtual server system and control method thereof
JP2012123556A