WO2018020630A1 - 計算機システム、処理方法、およびドライバプログラム - Google Patents

計算機システム、処理方法、およびドライバプログラム Download PDF

Info

Publication number
WO2018020630A1
WO2018020630A1 PCT/JP2016/072111 JP2016072111W WO2018020630A1 WO 2018020630 A1 WO2018020630 A1 WO 2018020630A1 JP 2016072111 W JP2016072111 W JP 2016072111W WO 2018020630 A1 WO2018020630 A1 WO 2018020630A1
Authority
WO
WIPO (PCT)
Prior art keywords
server
request
data
memory
storage
Prior art date
Application number
PCT/JP2016/072111
Other languages
English (en)
French (fr)
Inventor
昇 森下
匡邦 揚妻
亮彦 荒木
友輝 関山
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to US16/083,059 priority Critical patent/US11061851B2/en
Priority to JP2018530276A priority patent/JP6725662B2/ja
Priority to PCT/JP2016/072111 priority patent/WO2018020630A1/ja
Publication of WO2018020630A1 publication Critical patent/WO2018020630A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/24Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using dedicated network management hardware
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Definitions

  • the present invention relates to a computer system having a storage function.
  • a storage controller is configured by inexpensive general-purpose hardware for servers and a storage apparatus is configured by a plurality of storage controllers without using a dedicated LSI as storage device hardware.
  • Each of the plurality of controllers needs to read information on the memory of the other controller. For example, the reading of data on the memory of the other controller from the own controller can be realized by writing the data on the memory of the own controller by the other controller.
  • Patent Document 1 discloses a technique for suppressing a decrease in response performance of I / O processing.
  • priority is set for processing requests exchanged between controllers, and the controller requested to perform processing is executed from processing with high priority. Thereby, the fall of the response performance of I / O processing with high priority can be controlled.
  • general-purpose OS operating system
  • new functions with high convenience are considered to be incorporated sequentially. Therefore, when a storage function is realized as a processing process on the general-purpose OS, it is desired to improve the storage processing process so that a highly convenient function newly incorporated in the general-purpose OS can be utilized. It is also desirable to keep the development cost low while utilizing highly convenient functions by improving the processing process. In order to make them compatible, it is important to follow the program structure of the general-purpose OS when the processing process is improved and to limit the correction range to a narrow range.
  • a server that realizes a storage function by a general-purpose OS processing process usually realizes processing requested from other servers by a series of processing (1) to (3) shown below.
  • the request destination server receives the request from the request source server as an interrupt request by the kernel of the general-purpose OS.
  • the request destination server notifies the request from the request source server to the processing process that realizes the storage function on the general-purpose OS, and activates the processing process.
  • the processing process of the request destination server processes the request from the request source server.
  • An object of the present invention is to provide a technique for improving the storage processing performance using general-purpose hardware.
  • a computer system is configured by hardware including a memory and a processor, an OS program and a storage program are stored in the memory, and the OS program and the storage program are stored in the processor.
  • one of the plurality of servers is a request source server and the other is a request destination server.
  • the request source server reads the data of the request destination server
  • the processor of the request source server sends a request to read data to the request destination server by executing the storage program
  • the request destination server The processor reads out the requested data from its own memory by executing a storage memory driver incorporated in the OS program, and sends the requested data to the requesting server.
  • the requesting server executes the storage program.
  • the data is acquired.
  • the request destination server Since the processing in the request destination server is realized by the OS program, the request destination server does not need to start a processing process when receiving a request from the request source server, and can execute the processing quickly.
  • FIG. 5 is a diagram illustrating an example of a request storage area 60.
  • FIG. 6 is a diagram illustrating an example of request source request information 600.
  • FIG. It is a figure which shows an example of the response storage area.
  • FIG. 5 is a diagram illustrating an example of a storage memory map 62.
  • FIG. 5 is a diagram illustrating an example of a memory map 63.
  • FIG. It is a figure which shows an example of the interrupt handler registration table. It is a flowchart of a read process accompanied by a request from the own server to another server.
  • FIG. 1 is a block diagram of a computer system according to an embodiment of the present invention.
  • the computer system has servers 1a and 1b.
  • Each of the servers 1a and 1b is composed of general-purpose hardware including a memory and a processor.
  • the server 1a has a communication unit 12a
  • the server 1b has a communication unit 12b.
  • the servers 1a and 1b are connected to each other through a communication unit 12a and a communication unit 12b, respectively.
  • the server 1a has a configuration in which a CPU 10a, a memory 11a, and a communication unit 12a are connected.
  • the communication unit 12a may be, for example, an NTB (Non-Transparent Bridge) connected by PCI Express.
  • NTB Non-Transparent Bridge
  • the server 1a is referred to as a local server, and the server 1b other than the server 1a is referred to as another server.
  • summary in the case of acquiring the data on the memory which the server 1b has from the server 1a is demonstrated.
  • the server 1a when it is detected that the read target data exists in the request data reading source 70b of the server 1b, the server 1a becomes a requesting server that requests data reading, and the server 1b requests It becomes the destination server.
  • Server 1a and server 1b share a memory map with each other.
  • the server 1a refers to (1) the storage memory map 62a, and (2) the address and length of the read target data in the server 1b in the request storage area 60b of the other server, the storage destination address of the read target data in the server 1a, Information of the response storage area 61b is set.
  • the server 1a sets an interrupt in (3) the interrupt register 150a, the interrupt is notified to the interrupt register 150b of the communication unit 12b connected to the communication unit 12a, and an interrupt occurs in the server 1b.
  • the server 1b (4) activates the storage memory driver 52b of the OS kernel 50b corresponding to the interrupt of the communication unit 12b, and the storage memory driver 52b performs the following operation without notifying the storage process 51b.
  • the storage memory driver 52b refers to the request storage area 60b
  • (6) refers to the storage memory map 62b
  • (7) reads the read target data from the request data reading source 70b and transfers it to the server 1a. (Write to request data write destination 70a). Further, the server 1b writes (8) the processing result in the response storage area 61a.
  • the storage process 51a that has detected the response indicating the processing result stored in the response storage area 61a reads the read target data of the request data write destination 70a and continues the processing.
  • the server 1b detects the response of the processing result by, for example, polling.
  • the (5x) storage memory driver 52b does not transmit the processing request from the storage process 51a to the storage process 51b, and the storage memory driver 52b itself does not receive the request from the storage process 51a.
  • the overhead caused by the process in which the OS kernel 50b restarts the storage process 51b is reduced, and the deterioration of the I / O processing performance is avoided. That is, when the request source server 1a reads the data of the request destination server 1b, the processor of the request source server 1a executes the storage program, and the storage process 51a thereby sends a request for reading the data to the request destination server 1b.
  • the processor of the request destination server 1b executes the storage memory driver 52b incorporated in the OS program (OS kernel) 50a, thereby reading the requested data from its own memory and sending it to the request source server 1a.
  • the request source server 1a acquires the data by executing the storage program. Since the processing in the request destination server 1b is realized by the OS program, the request destination server 1b does not need to start a processing process when receiving a request from the request source server 1a, and can execute the processing quickly.
  • FIG. 2 is a block diagram showing the hardware configuration of the computer system according to this embodiment.
  • the server 1 has a CPU (processor) 10, a memory 11, a communication unit 12, and an external I / F 13, which are connected to each other. There are a plurality of sets of the CPU 10, the memory 11, the communication unit 12, and the external I / F 13, and the sets are coupled to each other.
  • the CPU 10 has a plurality of cores 100.
  • the memory 11 includes an OS memory area 110 managed by the OS and a storage memory area 120 not managed by the OS.
  • the OS memory area 110 includes an OS program 50 that operates as an OS kernel, a storage program 51 that operates as a storage process on the OS kernel, and a storage memory driver 52 that operates as an interrupt driver on the OS kernel.
  • the storage memory area 120 is divided into an area for storing various management information 130 and an area for storing user data 140.
  • the communication unit 12 realizes information transmission and interruption between servers.
  • the server 1 is connected to the network 4 via the external I / F 13, a client 2 that requests the server 1 to perform I / O processing such as read / write by file or block, and a storage device in which the server 1 stores user data. 3 is connected. Also, connected to the network 4 are a management terminal 5 for managing the settings and status of the server 1 and a maintenance terminal 6 for performing maintenance of the faulty part of the server 1.
  • FIG. 3 is a diagram illustrating an example of the request storage area 60.
  • the request storage area 60 is stored as management information 130 in the storage memory area 120.
  • the request storage area 60 is an area provided for each server.
  • the server 1 is provided with an area for storing a plurality of request source request information 600 corresponding to a plurality of storage processes of a plurality of servers, which is a request source for data reading and the like.
  • FIG. 3 shows a request storage area 60 in which requests requested from a plurality of storage processes # 0 to # (p ⁇ 1) of a plurality of servers other than the server # 1 are stored in the server # 1. .
  • FIG. 4 is a diagram illustrating an example of the request source request information 600.
  • the request source request information 600 is stored as management information 130 in the storage memory area 120.
  • the request source request information 600 has entries of only multiplicity r for receiving requests simultaneously from a storage process of a server.
  • the contents of the entry of the request source request information include a valid flag indicating validity / invalidity of the entry, an access type (read / atomic update) indicating processing contents at the request destination, and a request indicating the type of information accessed at the request destination.
  • request information address indicating the start address of information accessed at the request destination
  • request information access length indicating the length of information accessed at the request destination
  • information used when the access type is read information read at the request source Request result storage destination address that is the first address for storing, update data that is used when the access type is atomic update, update data that is the content to be atomically updated at the request destination, and update mask and request that specify the range of atomic update at the request destination
  • Response result storage destination address which is the start address for storing the response result of the processed
  • a response result storage length indicating the length of the region for storing.
  • FIG. 5 is a diagram illustrating an example of the response storage area 61.
  • the response storage area 61 is stored as management information 130 in the storage memory area 120.
  • the response storage area 61 is an area provided for each server. There is an area for storing a plurality of response result information 610 corresponding to a plurality of storage processes of a plurality of servers as a request destination.
  • FIG. 5 shows a response storage area 61 capable of storing responses from a plurality of storage processes # 0 to # (p ⁇ 1) of a plurality of servers other than the server # 0 in the server # 0. Yes.
  • FIG. 6 is a diagram illustrating an example of the response result information 610.
  • the response result information 610 is stored as management information 130 in the storage memory area 120.
  • the response result information 610 has entries of only the multiplicity r that make it possible to simultaneously receive requests from a certain storage process of a certain server. As the contents of the response result information entry, there are a response result indicating normality / error and error information for storing a factor when the response result is an error.
  • FIG. 7 is a diagram showing an example of the storage memory map 62.
  • the storage memory map 62 is stored as management information 130 in the storage memory area 120. All the servers 1 hold the storage memory map 62 for all servers including the memory maps of the own server and other servers.
  • the storage memory map 62 of each server has a memory map 63 for each information type.
  • FIG. 8 is a diagram illustrating an example of the memory map 63.
  • the memory map 63 is stored as management information 130 in the storage memory area 120.
  • the memory map 63 has a plurality of entries in order to correspond to a state in which information to be stored is distributed and stored in discrete memory areas.
  • the memory map 63 includes the number of valid entries for storing the number of valid entries, the start address at which information of the information type is stored for each entry, and the length that is the length thereof.
  • FIG. 9 is a diagram illustrating an example of the interrupt handler registration table 64.
  • the interrupt handler registration table 64 is stored in the OS memory area 110.
  • the interrupt handler registration table 64 has a management structure of the OS program 50, and an interrupt handler is registered at a position corresponding to the interrupt type number of the interrupt that has occurred.
  • the storage memory driver 52 is registered as an interrupt handler at a position corresponding to the interrupt type number of the communication unit 12 (interrupt type number #t in FIG. 9) at the time of system start-up or maintenance recovery after occurrence of a failure or the like. .
  • another driver 53 may be registered as an interrupt handler for the same interrupt type number.
  • FIG. 10 is a flowchart of a read process involving a request from the own server to another server.
  • the request source is the storage process 51a of the request source server 1a
  • the request destination is the OS kernel 50b of the request destination server 1b.
  • the operation subject is described as the storage process 51a here, it may be the CPU 10a or the request source server 1a.
  • the requesting storage process 51a refers to the storage memory map 62a (step 1000), registers a request for another server in the request storage area 60b (step 1001), and issues an interrupt to the other server in the interrupt register 150a. Set (step 1002).
  • the storage process 51a continues to operate, waits for reception of a response result (step 1003), detects the response result in the response storage area 61a (step 1004), and then reads the request data from the request data write destination 70a (step 1004). 1005).
  • the requested OS kernel 50b detects an interrupt (step 1010) and then prohibits further interrupts during interrupt processing (step 1011).
  • the OS kernel 50b clears the interrupt register 150b (step 1012), and detects a request stored in the request storage area 60b (step 1013).
  • the OS kernel 50b refers to the storage memory map 62b (step 1014), reads the request data from the request data read source 70b (step 1015), and writes the request data to the request data write destination 70a (step 1016). .
  • the response result is written in the response storage area 61a (step 1017), and the interrupt inhibition is canceled (step 1018).
  • the request source server 1a refers to the memory map of the request destination server 1b, specifies the address (first address) on the memory of the request destination server 1b of the data to be read, and sends it to the request destination server 1b. Send a data read request specifying the first address.
  • the request destination server 1b Upon receiving the request, the request destination server 1b reads the data from the first address and sends it to the request source server 1a. Since the request source server 1a knows the memory map of the request destination server 1b, the request source server 1a can request the data read by specifying the address of the request destination server 1b, and easily obtain the desired data. can do.
  • the request destination server 1b refers to the memory map of the request source server 1a, specifies the address (second address) on the memory of the request source server 1a to which the data requested by the request source server 1a is written, The read data is written to the second address of the requesting server 1a, and the requesting server 1a reads the data from the second address on its own memory. Since the request-destination server 1b knows the memory map of the request-source server 1a in advance, the request-destination server 1b can specify the address of the request-source server 1a, write data, and easily pass desired data. it can.
  • the request source server 1a has a response storage area for each request destination server 1b.
  • the request destination server 1b writes data to the second address of the request source server 1a
  • the request destination server 1b stores a response to the request in the response storage area corresponding to itself in the request source server 1a.
  • the request source server 1a detects a response stored in the response storage area
  • the request source server 1a reads data from the second address. Since the request source server 1a has a response storage area for each request destination server 1b, the request source server 1a can make requests to a plurality of request destination servers 1b in parallel.
  • FIG. 11 is a flowchart showing data access processing that operates in the requesting storage process 51a.
  • the operation subject is described as the storage process 51a here, it may be the CPU 10a or the request source server 1a.
  • the data access process is executed when it is necessary to access data such as management information stored in the memory 11a in the course of the storage process 51a performing various processes.
  • the storage process 51a first determines whether or not the generated data access request is a read request that requires a request to another server (step 1100). If the data access request is a read request that requires a request to another server (Y in step 1100), the storage process 51a proceeds to step 1107. If the data access request is not a read request that requires a request to another server (N in Step 1100), the storage process 51a determines that the request is a write request, and the write execution destination is the local server. Whether or not (step 1101).
  • the storage process 51a refers to the range of the local server in the storage memory map 62a (Step 1102).
  • the storage process 51a refers to the range of other servers corresponding to the write execution destination in the storage memory map 62a (Step 1103).
  • the storage process 51a determines whether or not the write execution destination access range is valid in the storage memory map 62a referred to in step 1102 or step 1103 (step 1104). Specifically, the storage process 51a determines whether or not the area indicated by the start address of the write execution destination and the area length is included in the range indicated by the entry start address and length in the memory map 63. to decide.
  • Step 1104 If the access range of the write execution destination is valid (Y in Step 1104), the storage process 51a executes the write (Step 1105) and ends the process.
  • the storage process 51a determines that the write has failed and executes failure processing of the storage process (Step 1106).
  • the storage process failure processing records detailed information related to the access failure as a log, counts the number of times the access failure has occurred, and performs processing without executing an I / O request being executed due to an error. End and reset the storage process 51a itself.
  • the storage process 51a requests the other server to read data from the other server in step 1107. Request processing is executed (step 1107). Details of the other server request process will be described later with reference to FIG.
  • the storage process 51a determines whether or not the other server request processing has been normally completed (step 1108). When the other server request process ends normally (Y in Step 1108), the storage process 51a ends the process. On the other hand, if the other server request processing has not ended normally (N in Step 1108), the storage process 51a executes the storage process failure processing similar to Step 1106 (Step 1109).
  • FIG. 12 is a flowchart showing another server request process that operates in the requesting storage process 51a.
  • the operation subject is described as the storage process 51a here, it may be the CPU 10a or the request source server 1a.
  • the storage process 51a refers to the range of other servers corresponding to the execution destination of the request in the storage memory map 62a (step 1200).
  • the storage process 51a creates request source request information 600 to be sent to the request destination server 1b (step 1201). At this time, the storage process 51a stores, as request source request information 600, a request access type, a request information address, a request information access length, a response result storage destination address, and a response result storage length in the free area of the storage memory area 120a of the server Set. Further, the storage process 51a sets a request result storage destination address when the request is a read request, and sets update data and an update mask when the request is an atomic update request.
  • the storage process 51a writes the request source request information 600 created in the free area of the storage memory area 120a of its own server to the request storage area 60b of the storage memory area 120b of the other server. Subsequently, the storage process 51a sets the valid flag to valid (step 1202). When the multiplicity of requests requested to the request destination server 1b is r or more, the storage process 51a waits for the running request to finish before validating the valid flag. Also good.
  • the storage process 51a sets an interrupt in the interrupt register 150a (step 1203).
  • an interrupt is set in the interrupt register 150a, this is notified to the request-destination interrupt register 150b, and an interrupt occurs in the request-destination server 1b.
  • the storage process 51a initializes the response result waiting time measured while waiting for the response result from the requested server 1b to zero (step 1204).
  • the storage process 51a determines whether or not the response result waiting time from the request destination server 1b exceeds the threshold (step 1205).
  • the storage process 51a sets an error end (step 1212) and ends the process.
  • the storage process 51a polls the response storage area 61a to determine whether or not the response result is stored ( Step 1206).
  • Step 1206 If no response result is stored in the response storage area 61a (N in Step 1206), the storage process 51a adds a response result waiting time (Step 1207), and returns to Step 1205.
  • the storage process 51a confirms the response result (Step 1208). Subsequently, the storage process 51a has a normal response result. Whether or not (step 1209).
  • the storage process 51a reads the requested data if the request is a read request, and reads the execution result if necessary if the request is an atomic update request. Etc. are executed (step 1210). Next, a normal end is set (1211), and the process ends.
  • Step 1212 the storage process 51a sets information indicating an error end (Step 1212) and ends the process.
  • FIG. 13 is a flowchart showing interrupt activation processing that operates in the requested OS kernel 50b.
  • the interrupt activation process is a process implemented as a normal function by the OS kernel.
  • the operating subject is described as the OS kernel 50b, but it may be the CPU 10b or the requested server 1b.
  • the OS kernel 50b determines whether or not an interrupt is detected (step 1300). If no interrupt has been detected (N in Step 1300), the OS kernel 50b ends the process. If an interrupt has been detected (Y in step 1300), the OS kernel 50b sets an interrupt prohibition that prohibits further interrupts from occurring in order to avoid conflict of interrupt processing (step 1301).
  • the OS kernel 50b determines the type of interrupt (step 1302).
  • the OS kernel 50b specifies an interrupt handler to be executed by referring to the interrupt handler registration table 64 illustrated in FIG. 9 based on the determined interrupt type. There may be multiple interrupt handlers to execute.
  • the OS kernel 50b determines whether or not all interrupt handlers corresponding to the interrupt type have been executed (step 1303). If not all interrupt handlers corresponding to the interrupt type are executed (N in Step 1303), the OS kernel 50b selects and executes the remaining interrupt handlers corresponding to the interrupt type (Step 1304). When all the interrupt handlers corresponding to the interrupt type have been executed (Y in Step 1303), the OS kernel 50b cancels the interrupt prohibition setting (Step 1305) and ends the processing.
  • FIG. 14 is a flowchart showing storage memory driver processing that operates in the requested OS kernel 50b.
  • the storage memory driver process is a process activated by an interrupt that operates in the OS kernel 50b, and is executed in step 1304 as one of interrupt handlers.
  • the operating subject is described as the OS kernel 50b, but it may be the CPU 10b or the requested server 1b.
  • the OS kernel 50b When the storage memory driver process is activated by an interrupt, the OS kernel 50b first clears the interrupt register 150b to make it ready for the next interrupt notification. However, since the OS kernel 50b sets the interrupt prohibition in step 1301, even if the next interrupt notification is received, no interrupt is generated until the interrupt prohibition setting is canceled in step 1305.
  • the OS kernel 50b refers to the range of its own server in the storage memory map 62b (step 1401).
  • the OS kernel 50b refers to the request storage area 60b of its own server (step 1402).
  • the OS kernel 50b determines whether or not the request source request information 600 in which the validity flag is set valid is present in the request storage area 60b (step 1403).
  • the OS kernel 50b ends the process.
  • the OS kernel 50b next determines whether or not the access range of the request source request information 600 is appropriate (Ste 1404). Specifically, the range indicated by the request information address and the request information address length is included in the range indicated by the entry start address and the entry length in the memory map 63 of the storage memory map 62b corresponding to the request information type. It can be judged by whether or not
  • the OS kernel 50b sets an error in the response result in the response storage area 61a (Step 1409) and invalidates the validity flag of the request source request information. (Step 1410), and the process returns to step 1404.
  • the OS kernel 50b determines whether the request access type of the request source request information 600 is read (step 1405).
  • the OS kernel 50b executes a read process (Step 1406).
  • the read process in step 1406 is a process of reading data, and details thereof will be described later.
  • the OS kernel 50b executes an atomic update process (Step 1407).
  • the atomic update process in step 1407 is a process of updating data without going through an intermediate state, and details thereof will be described later.
  • the OS kernel 50b sets that the response result in the response storage area 61a is normal (step 1408), sets the valid flag of the request source request information 600 to invalid (step 1410), and goes to step 1404. Return.
  • the storage location of the response result in the response storage area 61a may be assigned the same number as the request source request information entry numbers 0 to (r-1) corresponding to the multiplicity r of the request source request information 600. .
  • the OS kernel b executed by the CPU 10b of the request destination server 1b is an area where the access destination address (first address) in the request destination server 1b designated by the request source server 1a is valid. If it is not valid, an error response is sent to the requesting server 1a. Therefore, if the address specified by the request source server 1a is not a valid area in the request destination server 1b, error processing is performed. Therefore, sharing of the memory map between the request source server 1a and the request destination server 1b is disrupted, and the address is not valid. It can be an error before access occurs.
  • FIG. 15 is a flowchart showing a read process in the storage memory driver process that operates in the requested OS kernel 50b.
  • data transfer is executed while judging the following (a) and (b).
  • (A) Refer to the range of both the local server and the other server in the storage memory map 62b, and from the start address and length of the memory map 63, continuous addresses at both the transfer source (request destination) and the transfer destination (request source) The amount of data that can be transferred at one time is determined so as to be within the range.
  • the memory map 63 is updated with the address of the transfer source or transfer destination boundary as the start address of the next entry in the memory map 63.
  • the OS kernel 50b refers to the range of another server corresponding to the requester of the read request for the storage memory map 62b (step 1500).
  • the OS kernel 50b refers to the request source request information 600 illustrated in FIG. 4, sets the request information address as the transfer source address, sets the request result storage destination address as the transfer destination address, and sets the total transfer amount. Is initialized (step 1501).
  • the OS kernel 50b determines whether or not the total transfer amount is equal to or greater than the request information access length (step 1502). If the total transfer amount is equal to or greater than the request information access length (Y in step 1502), the OS kernel 50b ends the process. On the other hand, when the total transfer amount is less than the request information access length (N in Step 1502), the OS kernel 50b determines the next transfer amount (Step 1503). At this time, the OS kernel 50b determines that the address obtained by adding the transfer amount to the transfer source address does not cross the entry boundary and the address obtained by adding the transfer amount to the transfer destination address is also entered from the memory map 63 of the storage memory map 62b. A fixed amount that does not cross the boundary is determined as the transfer amount.
  • the OS kernel 50b transfers a certain amount of data determined as the transfer amount from the transfer source address to the transfer destination address (step 1504).
  • the OS kernel 50b updates the transfer source address, the transfer destination address, and the total transfer amount so as to increase by a certain amount of data (step 1505).
  • the OS kernel 50b determines whether or not the transfer source address has reached the entry boundary of the memory map 63 in the storage memory map 62b corresponding to its own server (step 1506).
  • the OS kernel 50b proceeds to Step 1508.
  • the OS kernel 50b uses the transfer source address as the next entry information of the memory map 63 of the storage memory map 62b corresponding to the own server. Is set (step 1507).
  • the OS kernel 50b determines whether or not the transfer destination address has reached the entry boundary of the memory map 63 in the storage memory map 62b corresponding to the other server (step 1508). If the transfer destination address has not reached the entry boundary of the memory map 63 (N in Step 1508), the OS kernel 50b proceeds to Step 1502. On the other hand, when the transfer destination address has reached the entry boundary of the memory map 63 (Y in Step 1508), the OS kernel 50b sets the transfer destination address next to the memory map 63 of the storage memory map 62b corresponding to the other server. Entry information is set (step 1509).
  • the OS kernel 50b executed by the CPU 10b of the request destination server 1b refers to the memory map of the request destination server 1b itself and the memory map of the request source server 1a, and stores the memory of the request destination server 1b. Determine the transfer amount that can be read from the continuous area and can be written to the continuous area of the memory of the request source server 1a, and send the requested data to the request source server 1a. Repeat until finished sending. As a result, the amount of data that can be processed in a continuous area in the memory of both the request destination server 1b that is the data transfer source and the request source server 1a that is the data transfer destination is sent at a time, so that the data is transferred efficiently, Processing can be completed quickly.
  • FIG. 16 is a flowchart showing an atomic update process in the storage memory driver process operating on the requested OS kernel 50b.
  • the hardware executes a series of single processes.
  • the processes described in steps 1600 to 1602 in FIG. 16 are processes executed by hardware.
  • the hardware first reads data from the request information address by the request information access length (step 1600), then sets an update mask for the read result data, and updates the read result with the update data (step 1601). Finally, the updated read result data is written to the request information address (step 1602).
  • the data read in step 1600 may be stored as an execution result in the response result storage destination address of the response storage area 61b.
  • the CPU 10a of the request source server 1a executes the storage program to update the data atomically. Is sent to the request destination server 1b.
  • the CPU 10b of the requested server 1b starts a process in which the requested storage memory driver incorporated in the OS program updates the requested data atomically.
  • the atomic update process is executed by hardware.
  • the CPU 10b notifies the request source server 1a of an update completion response.
  • the CPU 10a of the request source server 1a confirms the completion of the data update by executing the storage program. Since the atomic update process in the request destination server 1b is realized by the OS program, the request destination server 1b does not need to start a process when receiving a request from the request source server 1a, and quickly executes the atomic update process. can do.
  • FIG. 17 is a flowchart showing the initial setting process of the entire server. This initial setting process is executed at the time of system startup and at the time of maintenance recovery after the occurrence of a failure or the like.
  • the CPU 10 of the server 1 executes the boot loader after the BIOS initial setting (step 1700) (step 1701). Thereby, the initial setting of the OS kernel is started.
  • the boot loader initializes memory management information as a general initial setting item (step 1702), initializes an interrupt state (step 1703), and initializes process management information (step 1704), file management information is initialized (step 1705), multiprocessor management information is initialized (step 1706), drivers and the like are initialized (step 1707), and the root file system is initialized (step 1708).
  • the process of registering the storage memory driver 52 in the interrupt handler registration table 64 illustrated in FIG. 9 may be executed during the initialization of the driver in step 1707.
  • the boot loader determines the memory map in the server (step 1709), and shares the memory map with each other (step 1710).
  • the storage memory map 62 of the local server and other servers can be referred to.
  • boot loader sequentially starts the storage process (steps 1711 to 1712).
  • FIG. 18 is a diagram showing another configuration example of the computer system. Also in this configuration example, the request source server 1a and the request destination server 1b have the same configuration.
  • the hypervisor 2030 operates, and one or a plurality of virtual machines 2010 and 2020 are constructed and operated on the hypervisor 2030.
  • the virtual computer 2010 has a storage function, and the virtual computer 2020 performs a host function.
  • the OS kernel 50a and the storage process 51a described above operate on the virtual computer 2010a.
  • the OS kernel 50a and the storage process 51a operating on the virtual machine 2010a in the request source server 2001a correspond to the OS kernel 50a and the storage process 51a of the request source server 1a shown in FIG.
  • the OS kernel 50b and the storage process 51b operating on the virtual machine 2010b in the request destination server 2001b correspond to the OS kernel 50b and the storage process 51b of the request destination server 1b shown in FIG.
  • the operations of the OS kernel 50a, the storage process 51a, the OS kernel 50b, and the storage process 51b are the same as those described with reference to FIGS.
  • the OS program 50, the storage program 51, and the storage memory driver 52 may operate on the hardware of the physical computer as shown in FIG. 2 or as shown in FIG. As described above, the virtual machine 2010 may be operated.
  • the host 55 may be a physical host computer, or may be a host program that operates on the virtual computer 2020 as shown in FIG.
  • the virtual machine 2010 that performs the storage function and the virtual machine 2020 that performs the host function may be the same server 2001 or on different servers connected via the network. Also good.
  • Response storage area 610 ... Response result information, 62 ... Storage memory map, 62a ... Storage memory map, 62b ... Storage memory map, 63 ... Memory map, 64 ... Handler registration table, 70a ... request data writing destination, 70b ... request data read from

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)
  • Information Transfer Systems (AREA)

Abstract

計算機システムは、メモリとプロセッサを備えたハードウェアで構成されメモリにOSプログラムとストレージプログラムが格納されプロセッサで前記OSプログラムとストレージプログラムを実行する、通信回線で相互に接続された複数のサーバを有し、複数のサーバのいずれかが依頼元サーバとなり他のいずれかが依頼先サーバとなる。依頼元サーバが依頼先サーバのデータを読み出すとき、依頼元サーバのプロセッサは、ストレージプログラムを実行することにより、データを読出す要求を依頼先サーバに送り、依頼先サーバのプロセッサは、OSプログラムに組み込まれたストレージメモリドライバを実行することにより、要求されたデータを自身のメモリから読み出して依頼元サーバに送り、依頼元サーバは、ストレージプログラムを実行することにより、前記データを取得する。

Description

計算機システム、処理方法、およびドライバプログラム
 本発明はストレージ機能を持った計算機システムに関する。
 システムコスト低減を目的に、ストレージ装置のハードウェアとして専用LSIを用いず、廉価なサーバ向け汎用ハードウェアによりストレージコントローラを構成し、複数のストレージコントローラによりストレージ装置を構成する技術がある。複数のコントローラはそれぞれが他のコントローラのメモリ上の情報を読み込む必要がある。例えば、自コントローラからの他コントローラのメモリ上のデータの読み込みは、他コントローラによる自コントローラのメモリ上へのデータの書き込みにより実現することができる。
 その場合にI/O処理の応答性能の低下を抑止する技術が特許文献1に開示されている。特許文献1の技術は、コントローラ間でやりとりされる処理要求に優先度を設定し、処理を要求されたコントローラは優先度の高い処理から実行する。これにより、優先度の高いI/O処理の応答性能の低下を抑制することができる。
米国特許US9003081B2
 一般に汎用OS(オペレーティング・システム)は日々改良が重ねられ、利便性の高い新規な機能が順次、組み込まれていくと考えられる。そのため、汎用OS上の処理プロセスとしてストレージの機能を実現する場合、汎用OSに新規に組み込まれる利便性の高い機能を活用できるようにストレージの処理プロセスを改良していくことが望まれる。また、処理プロセスの改良により利便性の高い機能を活用しながらも開発コストを継続的に低く維持することも望まれる。それらを両立させるために、処理プロセスを改良する際に汎用OSのプログラム構造を踏襲し、修正範囲を狭い範囲に限定することが重要となる。
 汎用OSの処理プロセスでストレージ機能を実現するサーバは、通常、他サーバから要求された処理を以下に示す(1)~(3)の一連の処理で実現する。(1)依頼先サーバは依頼元サーバからの要求を汎用OSのカーネルが割込み要求として受領する。(2)依頼先サーバは依頼元サーバからの当該要求を汎用OS上のストレージ機能を実現する処理プロセスへ通知し、当該処理プロセスを起動する。(3)依頼先サーバの当該処理プロセスが依頼元サーバからの要求を処理する。
 しかしながら、そのような動作においては、上記(2)において、依頼先サーバで処理プロセスを起動する処理によるオーバヘッドが大きく、I/O処理の性能が低下してしまう。これは特許文献1に開示された技術では解決されない。
 本発明の目的は、汎用ハードウェアによるストレージ処理性能を向上する技術を提供することである。
 上記目的を達成するために、本発明の一態様による計算機システムは、メモリとプロセッサを備えたハードウェアで構成され前記メモリにOSプログラムとストレージプログラムが格納され前記プロセッサで前記OSプログラムと前記ストレージプログラムを実行する、通信回線で相互に接続された複数のサーバを有し、前記複数のサーバのいずれかが依頼元サーバとなり他のいずれかが依頼先サーバとなる。前記依頼元サーバが前記依頼先サーバのデータを読み出すとき、前記依頼元サーバのプロセッサは、前記ストレージプログラムを実行することにより、データを読出す要求を前記依頼先サーバに送り、前記依頼先サーバのプロセッサは、前記OSプログラムに組み込まれたストレージメモリドライバを実行することにより、要求された前記データを自身のメモリから読み出して前記依頼元サーバに送り、前記依頼元サーバは、前記ストレージプログラムを実行することにより、前記データを取得する。
 依頼先サーバにおける処理がOSプログラムにより実現されるので、依頼先サーバは依頼元サーバから要求を受けたときに処理プロセスを起動する必要がなく、迅速に処理を実行することができる。
本発明の実施形態による計算機システムのブロック図である。 本実施形態による計算機システムのハードウェア構成を示すブロック図である。 要求格納領域60の一例を示す図である。 依頼元要求情報600の一例を示す図である。 応答格納領域61の一例を示す図である。 応答結果情報610の一例を示す図である。 ストレージメモリマップ62の一例を示す図である。 メモリマップ63の一例を示す図である。 割込みハンドラ登録テーブル64の一例を示す図である。 自サーバから他サーバへの依頼を伴うリード処理のフローチャートである。 依頼元のストレージプロセス51aで動作するデータアクセス処理を示すフローチャートである。 依頼元のストレージプロセス51aで動作する他サーバ依頼処理を示すフローチャートである。 依頼先のOSカーネル50bで動作する割込み起動処理を示すフローチャートである。 依頼先のOSカーネル50bで動作するストレージメモリドライバ処理を示すフローチャートである。 依頼先のOSカーネル50bで動作する、ストレージメモリドライバ処理におけるリード処理を示すフローチャートである。 依頼先のOSカーネル50bで動作するストレージメモリドライバ処理におけるアトミック更新処理を示すフローチャートである。 サーバ全体の初期設定処理を示すフローチャートである。 計算機システムの他の構成例を示す図である。
 図1に、本発明の実施形態による計算機システムのブロック図である。計算機システムはサーバ1a、1bを有している。サーバ1a、1bはいずれも、メモリおよびプロセッサを備えた汎用ハードウェアで構成されている。サーバ1aは通信部12aを有し、サーバ1bは通信部12bを有している。サーバ1a、1bは、それぞれが持つ通信部12a、通信部12bで互いに接続されている。
 2つのサーバ1a、1bは同じの構成であるため、ここではサーバ1aについて説明する。サーバ1a内は、CPU10aとメモリ11aと通信部12aが接続された構成である。通信部12aは、例えば、PCI Expressで接続されたNTB(Non-Transparent Bridge)等であっても良い。尚、サーバ1aから見た場合、サーバ1aを自サーバ、サーバ1a以外のサーバ1b等を他サーバと呼ぶ。以下では、サーバ1aからサーバ1bが持つメモリ上のデータを取得する場合の動作概要を説明する。
 まず、サーバ1aのストレージプロセス51aにおいて、リード対象データがサーバ1bの要求データ読み込み元70bに存在することが検出された場合、サーバ1aがデータの読み出しを依頼する依頼元サーバとなり、サーバ1bが依頼先サーバとなる。サーバ1aとサーバ1bはメモリマップを相互に共有している。
 サーバ1aは、(1)ストレージメモリマップ62aを参照し、(2)他サーバの要求格納領域60bにリード対象データのサーバ1bでのアドレス、長さ、サーバ1aにおけるリード対象データの格納先アドレス、応答格納領域61bの情報等を設定する。次にサーバ1aが、(3)割込レジスタ150aに割り込みを設定すると、通信部12aと接続された通信部12bの割込レジスタ150bに割り込みが通知され、サーバ1bに割込みが発生する。
 サーバ1bは、(4)当該通信部12bの割込みに対応したOSカーネル50bのストレージメモリドライバ52bが起動され、ストレージメモリドライバ52bは、ストレージプロセス51bに通知することなく、以下の動作を行う。(5)ストレージメモリドライバ52bは、要求格納領域60bを参照し、また、(6)ストレージメモリマップ62bを参照し、(7)要求データ読込み元70bからリード対象データを読み出してサーバ1aに転送する(要求データ書込み先70aへ書き込む)。更に、サーバ1bは、(8)処理結果を応答格納領域61aに書き込む。
 サーバ1aでは、(9)応答格納領域61aに格納されている処理結果を示す応答を検出したストレージプロセス51aが、要求データ書込み先70aのリード対象データを読み込み、処理を継続する。なお、サーバ1bは、処理結果の応答を、例えば、ポーリングにより検出する。
 上述した動作(4)において、サーバ1bでは、(5x)ストレージメモリドライバ52bが、ストレージプロセス51bにストレージプロセス51aからの処理の依頼を伝達せず、ストレージメモリドライバ52b自体が当該ストレージプロセス51aからの処理の依頼を処理することで、OSカーネル50bがストレージプロセス51bを再起動する処理によるオーバヘッドを削減し、I/O処理性能の低下を回避している。すなわち、依頼元サーバ1aが依頼先サーバ1bのデータを読み出すとき、依頼元サーバ1aのプロセッサは、ストレージプログラムを実行し、それによるストレージプロセス51aがデータを読出す要求を依頼先サーバ1bに送る。依頼先サーバ1bのプロセッサは、OSプログラム(OSカーネル)50aに組み込まれたストレージメモリドライバ52bを実行することにより、要求されたデータを自身のメモリから読み出して依頼元サーバ1aに送る。依頼元サーバ1aは、ストレージプログラムを実行することにより、そのデータを取得する。依頼先サーバ1bにおける処理がOSプログラムにより実現されるので、依頼先サーバ1bは依頼元サーバ1aから要求を受けたときに処理プロセスを起動する必要がなく、迅速に処理を実行することができる。
 図2は、本実施形態による計算機システムのハードウェア構成を示すブロック図である。
 サーバ1は、CPU(プロセッサ)10、メモリ11、通信部12、および外部I/F13を有し、それらが互いに接続された構成である。CPU10、メモリ11、通信部12、および外部I/F13の組は複数存在し、また、組同士が相互に結合されている。
 CPU10は複数のコア100を持つ。メモリ11には、OSが管理するOSメモリ領域110と、OSが管理しないストレージメモリ領域120がある。OSメモリ領域110には、OSカーネルとして動作するOSプログラム50、OSカーネル上でストレージプロセスとして動作するストレージプログラム51、OSカーネル上で割込みドライバとして動作するストレージメモリドライバ52が存在する。ストレージメモリ領域120は、各種の管理情報130を格納する領域と、ユーザデータ140を格納する領域に分けられる。通信部12はサーバ間の情報伝達や割り込みを実現する。
 サーバ1は外部I/F13を介しネットワーク4と接続されおり、サーバ1に、ファイルやブロックによるリード/ライト等のI/O処理を依頼するクライアント2と、サーバ1がユーザデータを格納する記憶装置3が接続されている。また、ネットワーク4には、サーバ1の設定および状態を管理する管理端末5と、サーバ1の障害部位の保守を行うための保守端末6が接続されている。
 図3は、要求格納領域60の一例を示す図である。要求格納領域60は、ストレージメモリ領域120に管理情報130として格納される。要求格納領域60は、サーバ単位に設けられる領域である。サーバ1には、データ読み出しなどの依頼元となる、複数のサーバの複数のストレージプロセスに応じた複数の依頼元要求情報600を格納する領域が設けられる。図3には、サーバ#1における、サーバ#1以外の複数のサーバの複数のストレージプロセス#0~#(p-1)から依頼される要求が格納される要求格納領域60が示されている。
 図4は、依頼元要求情報600の一例を示す図である。依頼元要求情報600はストレージメモリ領域120に管理情報130として格納される。依頼元要求情報600は、あるサーバのあるストレージプロセスからの同時に依頼を受領する多重度rだけのエントリを持つ。依頼元要求情報のエントリの内容としては、当該エントリの有効/無効を示す有効フラグ、依頼先での処理内容を示すアクセス種別(リード/アトミック更新)、依頼先でアクセスする情報の種別を示す要求情報種別、依頼先でアクセスする情報の先頭アドレスを示す要求情報アドレス、依頼先でアクセスする情報の長さを示す要求情報アクセス長、アクセス種別がリードの場合に使用し、依頼元においてリードした情報を格納する先頭アドレスである要求結果格納先アドレス、アクセス種別がアトミック更新の場合に使用し、依頼先においてアトミック更新する内容である更新データ、依頼先においてアトミック更新する範囲を指定する更新マスク、依頼した処理の応答結果を格納する先頭アドレスである応答結果格納先アドレス、応答結果を格納する領域の長さを示す応答結果格納長がある。なお、ここでは、要求アクセス種別として、リードとアトミック更新のみを記載したが、他のアクセス形態があっても良い。
 図5は、応答格納領域61の一例を示す図である。応答格納領域61は、ストレージメモリ領域120に管理情報130として格納される。応答格納領域61はサーバ単位に設けられる領域である。依頼先となる、複数のサーバの複数のストレージプロセスに応じた複数の応答結果情報610を格納する領域がある。図5には、サーバ#0における、サーバ#0以外の複数のサーバの複数のストレージプロセス#0~#(p-1)からの応答を格納することが可能な応答格納領域61が示されている。
 図6は、応答結果情報610の一例を示す図である。応答結果情報610はストレージメモリ領域120に管理情報130として格納される。応答結果情報610は、あるサーバのあるストレージプロセスから同時に依頼を受領することを可能にする多重度rだけのエントリを持つ。応答結果情報のエントリの内容として、正常/エラーを示す応答結果と、応答結果がエラーの場合の要因等を格納するエラー情報がある。
 図7は、ストレージメモリマップ62の一例を示す図である。ストレージメモリマップ62はストレージメモリ領域120に管理情報130として格納される。全てのサーバ1は、自サーバと他サーバのメモリマップを含めた全サーバ分のストレージメモリマップ62を保持する。各サーバのストレージメモリマップ62は情報種別毎のメモリマップ63を持つ。
 図8は、メモリマップ63の一例を示す図である。メモリマップ63はストレージメモリ領域120に管理情報130として格納される。メモリマップ63は、格納する情報が離散的なメモリ領域に分散して格納されている状態に対応するため、複数のエントリを持つ。メモリマップ63には、有効なエントリ数を格納する有効エントリ数と、各エントリに対する、当該情報種別の情報が格納されている先頭アドレスとその長さである長さとが含まれる。
 図9は、割込みハンドラ登録テーブル64の一例を示す図である。割込みハンドラ登録テーブル64は、OSメモリ領域110に格納される。割込みハンドラ登録テーブル64は、OSプログラム50の管理構造を有し、発生した割込みの割込み種別番号に対応した位置に割込みハンドラが登録される。システム起動時あるいは障害等発生後の保守回復時等に、通信部12の割込み種別番号に対応した位置(図9では割込み種別番号#t)に、割り込みハンドラとして、ストレージメモリドライバ52が登録される。尚、同じ割込み種別番号に、割り込みハンドラとして、他のドライバ53が登録されることもある。
 図10は、自サーバから他サーバへの依頼を伴うリード処理のフローチャートである。ここでは、依頼元が、依頼元サーバ1aのストレージプロセス51aであり、依頼先が、依頼先サーバ1bのOSカーネル50bである。なお、ここでは動作主体をストレージプロセス51aとして説明するが、CPU10aとしてもよいし、依頼元サーバ1aとしてもよい。
 依頼元となるストレージプロセス51aは、ストレージメモリマップ62aを参照し(ステップ1000)、要求格納領域60bに他サーバへの依頼を登録し(ステップ1001)、割込レジスタ150aに他サーバへの割込みを設定する(ステップ1002)。
 その後、ストレージプロセス51aは動作を継続し、応答結果受領を待ち(ステップ1003)、応答格納領域61aに応答結果を検出した後(ステップ1004)、要求データ書き込み先70aから要求データを読込む(ステップ1005)。
 依頼先となるOSカーネル50bは、割込みを検出した後(ステップ1010)、割込み処理中の更なる割込みを禁止する(ステップ1011)。次に、OSカーネル50bは、割込レジスタ150bをクリアし(ステップ1012)、要求格納領域60bに格納された要求を検出する(ステップ1013)。OSカーネル50bは、次に、ストレージメモリマップ62bを参照し(ステップ1014)、要求データ読み込み元70bから要求データを読み込み(ステップ1015)、要求データ書き込み先70aに要求データを書込む(ステップ1016)。更に、応答格納領域61aに応答結果を書き込み(ステップ1017)、割り込み禁止を解除する(ステップ1018)。
 その際、依頼元サーバ1aは、依頼先サーバ1bのメモリマップを参照して、読みだすデータの依頼先サーバ1bのメモリ上のアドレス(第1のアドレス)を特定し、依頼先サーバ1bへ、第1のアドレスを指定したデータ読出しの要求を送る。依頼先サーバ1bは、その要求を受けると、第1のアドレスからデータを読み出して依頼元サーバ1aに送る。依頼元サーバ1aが依頼先サーバ1bのメモリマップを知っているので、依頼元サーバ1aは依頼先サーバ1bのアドレスを指定してデータの読み出しを要求することができ、所望のデータを容易に取得することができる。
 また、依頼先サーバ1bは、依頼元サーバ1aのメモリマップを参照して、依頼元サーバ1aから要求されたデータを書き込む依頼元サーバ1aのメモリ上のアドレス(第2のアドレス)を特定し、読み出したデータを依頼元サーバ1aの第2のアドレスに書き込み、依頼元サーバ1aは、自身のメモリ上の第2のアドレスからデータを読み出す。依頼先サーバ1bが依頼元サーバ1aのメモリマップを予め知っているので、依頼先サーバ1bは依頼元サーバ1aのアドレスを特定してデータを書き込むことができ、所望のデータを容易に渡すことができる。
 また、依頼元サーバ1aは依頼先サーバ1b毎に応答格納領域を備えている。依頼先サーバ1bは、依頼元サーバ1aの第2のアドレスにデータを書き込むと、依頼元サーバ1aにおける自身に対応する応答格納領域に要求に対する応答を格納する。依頼元サーバ1aは、その応答格納領域に格納された応答を検出すると、第2のアドレスからデータを読み出す。依頼元サーバ1aには依頼先サーバ1b毎に応答格納領域があるので、依頼元サーバ1aは複数の依頼先サーバ1bへの要求を並行して行うことができる。
 以下、図10に示した動作の詳細について説明する。
 図11は、依頼元のストレージプロセス51aで動作するデータアクセス処理を示すフローチャートである。ここでは動作主体をストレージプロセス51aとして説明するが、CPU10aとしてもよいし、依頼元サーバ1aとしてもよい。
 データアクセス処理は、ストレージプロセス51aが様々な処理をする過程で、メモリ11aに格納された管理情報等のデータにアクセスする必要が生じた場合に実行される。
 ストレージプロセス51aは、まず、発生したデータアクセス要求が他サーバへの依頼を必要とするリード系の要求であるか否か判断する(ステップ1100)。データアクセス要求が他サーバへの依頼を必要とするリード系の要求である場合(ステップ1100のY)、ストレージプロセス51aはステップ1107へ進む。データアクセス要求が他サーバへの依頼を必要とするリード系の要求でない場合(ステップ1100のN)、ストレージプロセス51aは当該要求がライト要求であると判断し、ライトの実行先が自サーバであるか否か判断する(ステップ1101)。
 ライトの実行先が自サーバである場合(ステップ1101のY)、ストレージプロセス51aは、ストレージメモリマップ62aの自サーバの範囲を参照する(ステップ1102)。ライトの実行先が自サーバでない場合(ステップ1101のN)、ストレージプロセス51aは、ストレージメモリマップ62aのライト実行先に相当する他サーバの範囲を参照する(ステップ1103)。
 次に、ストレージプロセス51aは、ステップ1102またはステップ1103で参照したストレージメモリマップ62aにおいて、ライト実行先のアクセス範囲が妥当であるか否か判断する(ステップ1104)。具体的には、ストレージプロセス51aは、ライト実行先の先頭アドレスおよび領域の長さで示される領域が、メモリマップ63において、エントリの開始アドレスおよび長さで示される範囲に含まれているか否か判断する。
 ライト実行先のアクセス範囲が妥当である場合(ステップ1104のY)、ストレージプロセス51aは、ライトを実行し(ステップ1105)、処理を終了する。
 一方、ライト実行先のアクセス範囲が妥当でない場合(ステップ1104のN)、ストレージプロセス51aは、ライト失敗と判断し、ストレージプロセスの障害処理を実行する(ステップ1106)。ストレージプロセスの障害処理は、例えば、当該アクセス障害に関連する詳細な情報をログとして記録し、当該アクセス障害の発生回数をカウントし、実行中のI/O要求をエラーにより実行せずに処理を終了し、ストレージプロセス51a自身をリセットする。
 また一方、データアクセス要求が他サーバへの依頼を必要とするリード系の要求である場合(ステップ1100のY)、ストレージプロセス51aは、ステップ1107において、他サーバへデータの読み出しを依頼する他サーバ依頼処理を実行する(ステップ1107)。他サーバ依頼処理の詳細は図12を用いて後述する。
 次に、ストレージプロセス51aは、他サーバ依頼処理が正常終了したか否か判断する(ステップ1108)。他サーバ依頼処理が正常終了した場合(ステップ1108のY)、ストレージプロセス51aは処理を終了する。一方、他サーバ依頼処理が正常終了しなかった場合(ステップ1108のN)、ストレージプロセス51aは、ステップ1106と同様のストレージプロセスの障害処理を実行する(ステップ1109)。
 図12は、依頼元のストレージプロセス51aで動作する他サーバ依頼処理を示すフローチャートである。ここでは動作主体をストレージプロセス51aとして説明するが、CPU10aとしてもよいし、依頼元サーバ1aとしてもよい。
 まず、ストレージプロセス51aは、ストレージメモリマップ62aにおける、要求の実行先に相当する他サーバの範囲を参照する(ステップ1200)。
 次に、ストレージプロセス51aは、依頼先サーバ1bへ送る依頼元要求情報600を作成する(ステップ1201)。このとき、ストレージプロセス51aは、自サーバのストレージメモリ領域120aの空き領域に、依頼元要求情報600として、要求アクセス種別、要求情報アドレス、要求情報アクセス長、応答結果格納先アドレス、応答結果格納長を設定する。更に、ストレージプロセス51aは、要求がリード要求の場合は、要求結果格納先アドレスを設定し、要求がアトミック更新要求の場合は、更新データおよび更新マスクを設定する。
 次に、ストレージプロセス51aは、自サーバのストレージメモリ領域120aの空き領域に作成した依頼元要求情報600を他サーバのストレージメモリ領域120bの要求格納領域60bに書込む。続いて、ストレージプロセス51aは、有効フラグを有効に設定する(ステップ1202)。尚、依頼先サーバ1bへ依頼している要求の多重度がr以上となっている場合、ストレージプロセス51aは、実行中の要求が終了するのを待ってから有効フラグを有効にすることにしても良い。
 次に、ストレージプロセス51aは、割込レジスタ150aに割り込みを設定する(ステップ1203)。割込レジスタ150aに割り込みが設定されると、それが依頼先の割込レジスタ150bに通知され、依頼先サーバ1bに割込みが発生する。
 次に、ストレージプロセス51aは、依頼先サーバ1bからの応答結果を待っている間に計測する応答結果待ち時間をゼロに初期化する(ステップ1204)。次に、ストレージプロセス51aは、依頼先サーバ1bからの応答結果待ち時間が閾値を超過したか否か判断する(ステップ1205)。応答結果待ち時間が閾値を超過した場合(ステップ1205Y)、ストレージプロセス51aは、エラー終了を設定し(ステップ1212)、処理を終了する。一方、依頼先サーバ1bからの応答結果待ち時間が閾値を超過していない場合(ステップ1205N)、ストレージプロセス51aは、応答格納領域61aをポーリングし、応答結果が格納されているか否か判断する(ステップ1206)。
 応答格納領域61aに応答結果が格納されていない場合(ステップ1206のN)、ストレージプロセス51aは、応答結果待ち時間を加算し(ステップ1207)、ステップ1205へ戻る。応答格納領域61aに応答結果が格納されている場合(ステップ1206のY)、ストレージプロセス51aは、その応答結果を確認する(ステップ1208)、続いて、ストレージプロセス51aは、応答結果が正常であるか否か判断する(ステップ1209)。
 応答結果が正常であれば(ステップ1209のY)、ストレージプロセス51aは、要求がリード要求の場合、要求したデータを読み込み、また、要求がアトミック更新要求の場合、必要であれば実行結果の読み込み等を実行する(ステップ1210)。次に、正常終了を設定し(1211)、処理を終了する。
 一方、応答結果が正常でない場合(ステップ1209のN)、ストレージプロセス51aは、エラー終了という情報を設定し(ステップ1212)、処理を終了する。
 図13は、依頼先のOSカーネル50bで動作する割込み起動処理を示すフローチャートである。当該割込み起動処理は、OSカーネルが通常機能として実装している処理である。ここでは動作主体をOSカーネル50bとして説明するが、CPU10bとしてもよいし、依頼先サーバ1bとしてもよい。
 まず、OSカーネル50bは、割り込みが検出されいるか否か判断する(ステップ1300)。割り込みが検出されていない場合(ステップ1300のN)、OSカーネル50bは、処理を終了する。割り込みが検出されている場合(ステップ1300のY)、OSカーネル50bは、割り込み処理の競合を避けるため、更なる割り込みが発生するのを禁止する割り込み禁止を設定する(ステップ1301)。
 次に、OSカーネル50bは、割り込みの種別を判定する(ステップ1302)。次に、OSカーネル50bは、判定した割り込みの種別を基に、図9に例示した割り込みハンドラ登録テーブル64を参照し、実行すべき割り込みハンドラを特定する。実行すべき割り込みハンドラは複数の場合もある。
 次に、OSカーネル50bは、当該割り込み種別に対応する全ての割込みハンドラを実行したか否か判断する(ステップ1303)。当該割込み種別に対応する全ての割込みハンドラを実行していない場合(ステップ1303のN)、OSカーネル50bは、当該割り込み種別に対応する残りの割込みハンドラを選択し、実行する(ステップ1304)。当該割込み種別に対応する全ての割込みハンドラを実行した場合(ステップ1303のY)、OSカーネル50bは、割り込み禁止の設定を解除し(ステップ1305)、処理を終了する。
 図14は、依頼先のOSカーネル50bで動作するストレージメモリドライバ処理を示すフローチャートである。ストレージメモリドライバ処理は、OSカーネル50bで動作する、割り込みにより起動される処理であり、割込みハンドラの1つとしてステップ1304で実行される。ここでは動作主体をOSカーネル50bとして説明するが、CPU10bとしてもよいし、依頼先サーバ1bとしてもよい。
 割り込みによりストレージメモリドライバ処理が起動されると、OSカーネル50bは、まず、割込レジスタ150bをクリアすることにより、次の割り込み通知を受領できる状態とする。ただし、OSカーネル50bは、ステップ1301にて割り込み禁止を設定しているため、次の割り込み通知を受領しても、ステップ1305にて割り込み禁止の設定を解除するまで、割り込みは発生しない。
 次に、OSカーネル50bは、ストレージメモリマップ62bの自サーバの範囲を参照する(ステップ1401)。次に、OSカーネル50bは、自サーバの要求格納領域60bを参照する(ステップ1402)。続いて、OSカーネル50bは、要求格納領域60bに、有効フラグが有効に設定されている依頼元要求情報600があるか否か判断する(ステップ1403)。
 有効フラグが有効に設定されている依頼元要求情報600が無い場合(ステップ1403のN)、OSカーネル50bは、処理を終了する。一方、有効フラグが有効に設定されている依頼元要求情報600が有る場合(ステップ1403のY)、OSカーネル50bは、次に、依頼元要求情報600のアクセス範囲が妥当か否か判断する(ステップ1404)。具体的には、要求情報アドレスと要求情報アドレス長で示される範囲が、要求情報種別に該当するストレージメモリマップ62bのメモリマップ63において、エントリの開始アドレスとエントリの長さで示される範囲に含まれているかか否かで判断することができる。
 依頼元要求情報600のアクセス範囲が妥当でない場合(ステップ1404のN)、OSカーネル50bは、応答格納領域61aの応答結果にエラーを設定し(ステップ1409)、依頼元要求情報の有効フラグを無効に設定し(ステップ1410)、ステップ1404へ戻る。一方、依頼元要求情報600のアクセス範囲が妥当である場合(ステップ1404のY)、OSカーネル50bは、依頼元要求情報600の要求アクセス種別がリードであるか否か判断する(ステップ1405)。
 要求アクセス種別がリードである場合(ステップ1405のY)、OSカーネル50bは、リード処理を実行する(ステップ1406)。ステップ1406のリード処理は、データを読み出す処理であるが、その詳細については後述する。一方、要求アクセス種別がリードでない場合(ステップ1405のN)、OSカーネル50bは、アトミック更新処理を実行する(ステップ1407)。ステップ1407のアトミック更新処理は、中間的な状態を経ずにデータを更新する処理であるが、その詳細については後述する。
 次に、OSカーネル50bは、応答格納領域61aの応答結果に正常であるということを設定し(ステップ1408)、依頼元要求情報600の有効フラグを無効に設定し(ステップ1410)、ステップ1404へ戻る。
 尚、応答格納領域61aの応答結果の格納先は、依頼元要求情報600の多重度rに対応する、依頼元要求情報エントリの番号0~(r-1)と同じ番号を付与してもよい。
 ここに示したように、依頼先サーバ1bのCPU10bにより実行されるOSカーネルbは、依頼元サーバ1aから指定された依頼先サーバ1bでのアクセス先のアドレス(第1のアドレス)が妥当な領域にあるか否か判定し、妥当でなければ依頼元サーバ1aにエラーの応答を送る。そのため、依頼元サーバ1aが指定したアドレスが依頼先サーバ1bにおいて妥当な領域でなければエラー処理するので、依頼元サーバ1aと依頼先サーバ1bのメモリマップの共有が崩れて、妥当でない領域へのアクセスが生じる前に、それをエラーとすることができる。
 図15は、依頼先のOSカーネル50bで動作する、ストレージメモリドライバ処理におけるリード処理を示すフローチャートである。当該リード処理では、以下の(a)、(b)を判断しながらデータ転送を実行する。(a)ストレージメモリマップ62bの自サーバと他サーバの両方の範囲を参照し、メモリマップ63の開始アドレスと長さから、転送元(依頼先)と転送先(依頼元)の両方で連続アドレス範囲となるように、一度に転送できるデータ量を決定する。(b)転送元または転送先がアドレス境界に達した場合には、その転送元または転送先の境界のアドレスをメモリマップ63の次のエントリの開始アドレスにしてメモリマップ63を更新する。
 まず、OSカーネル50bは、ストレージメモリマップ62bのリード要求の依頼元に相当する他サーバの範囲を参照する(ステップ1500)。次に、OSカーネル50bは、図4に例示した依頼元要求情報600を参照して、転送元アドレスに要求情報アドレスを設定し、転送先アドレスに要求結果格納先アドレスを設定し、総転送量を初期化する(ステップ1501)。
 次に、OSカーネル50bは、総転送量は要求情報アクセス長以上か否か判断する(ステップ1502)。総転送量が要求情報アクセス長以上の場合(ステップ1502のY)、OSカーネル50bは処理を終了する。一方、総転送量が要求情報アクセス長未満の場合(ステップ1502のN)、OSカーネル50bは、次の転送量を決定する(ステップ1503)。そのとき、OSカーネル50bは、ストレージメモリマップ62bのメモリマップ63より、転送元アドレスに転送量を加算したアドレスがエントリ境界を跨がず、かつ、転送先アドレスに転送量を加算したアドレスもエントリ境界を跨がない一定量を転送量として決定する。
 次に、OSカーネル50bは、転送元アドレスから転送先アドレスに、転送量として決定した一定量のデータを転送する(ステップ1504)。次に、OSカーネル50bは、転送元アドレス、転送先アドレス、総転送量を一定量のデータ分だけ増やすように更新する(ステップ1505)。
 次に、OSカーネル50bは、転送元アドレスが自サーバに対応するストレージメモリマップ62bにおけるメモリマップ63のエントリ境界に到達したか否か判断する(ステップ1506)。転送元アドレスがメモリマップ63のエントリ境界に到達していない場合(ステップ1506のN)、OSカーネル50bは、ステップ1508へ進む。一方、転送元アドレスがメモリマップ63のエントリ境界に到達した場合(ステップ1506のY)、OSカーネル50bは、転送元アドレスに自サーバに対応するストレージメモリマップ62bのメモリマップ63の次のエントリ情報を設定する(ステップ1507)。
 次に、OSカーネル50bは、転送先アドレスが他サーバに対応するストレージメモリマップ62bにおけるメモリマップ63のエントリ境界に到達したか否か判断する(ステップ1508)。転送先アドレスがメモリマップ63のエントリ境界に到達していない場合(ステップ1508のN)、OSカーネル50bは、ステップ1502へ進む。一方、転送先アドレスがメモリマップ63のエントリ境界に到達している場合(ステップ1508のY)、OSカーネル50bは、転送先アドレスに、他サーバに対応するストレージメモリマップ62bのメモリマップ63の次のエントリ情報を設定する(ステップ1509)。
 ここに説明したように、依頼先サーバ1bののCPU10bで実行されるOSカーネル50bは、依頼先サーバ1b自身のメモリマップと依頼元サーバ1aのメモリマップを参照し、依頼先サーバ1bのメモリの連続領域から読み出すことができ、かつ、依頼元サーバ1aのメモリの連続領域に書き込むことができる転送量を決定し、その転送量のデータを依頼元サーバ1aに送ることを、要求されたデータを送り終えるまで繰り返す。これにより、データ転送元である依頼先サーバ1bとデータ転送先である依頼元サーバ1aの両方のメモリにおいて連続領域で処理できるような量のデータを一度に送るので、データを効率よく転送し、迅速に処理を終えることができる。
 図16は、依頼先のOSカーネル50bで動作するストレージメモリドライバ処理におけるアトミック更新処理を示すフローチャートである。アトミック更新処理は、依頼先サーバ1bにおいてOSカーネル50bにより起動されると、ハードウェアが一連の単一処理を実行する。図16のステップ1600~ステップ1602の複数ステップに記載されている処理がハードウェアで実行される処理である。
 ハードウェアは、まず、要求情報アドレスから要求情報アクセス長だけデータを読み込み(ステップ1600)、次に、読み込み結果のデータに更新マスクを設定し、更新データにより読み込み結果を更新し(ステップ1601)、最後に、更新した読み込み結果のデータを要求情報アドレスに書き込む(ステップ1602)。ステップ1600で読み込んだデータを応答格納領域61bの応答結果格納先アドレスに実行結果として格納することにしてもよい。
 図14および図16を用いて説明したように、依頼元サーバ1aが依頼先サーバ1bのデータをアトミック更新するとき、依頼元サーバ1aのCPU10aは、ストレージプログラムを実行することにより、データのアトミック更新の要求を依頼先サーバ1bに送る。依頼先サーバ1bのCPU10bは、要求を受けた、OSプログラムに組み込まれたストレージメモリドライバが、要求されたデータをアトミック更新する処理を起動する。アトミック更新処理はハードウェアにより実行される。アトミック更新処理が完了すると、CPU10bは、更新完了の応答を依頼元サーバ1aに通知する。依頼元サーバ1aのCPU10aは、ストレージプログラムを実行することにより、データの更新完了を確認する。依頼先サーバ1bにおけるアトミック更新の処理がOSプログラムにより実現されるので、依頼先サーバ1bは依頼元サーバ1aから要求を受けたときに処理プロセスを起動する必要がなく、迅速にアトミック更新処理を実行することができる。
 図17は、サーバ全体の初期設定処理を示すフローチャートである。この初期設定処理は、システム起動時と、障害等発生後の保守回復時とに実行される。
 まず、サーバ1のCPU10は、BIOS初期設定(ステップ1700)の後、ブートローダを実行する(ステップ1701)。これにより、OSカーネルの初期設定が開始される。
 OSカーネルの初期設定では、ブートローダは、一般的な初期設定項目として、メモリ管理の情報を初期化し(ステップ1702)、割り込みの状態を初期化し(ステップ1703)、プロセス管理の情報を初期化し(ステップ1704)、ファイル管理の情報を初期化し(ステップ1705)、マルチプロセッサ管理の情報を初期化し(ステップ1706)、ドライバ等を初期化し(ステップ1707)、ルートファイルシステムを初期化(ステップ1708)する。図9に例示した割込みハンドラ登録テーブル64にストレージメモリドライバ52を登録する処理は、上記ステップ1707のドライバ等の初期化の中で実行しても良い。
 次に、ブートローダは、サーバ内メモリマップを確定し(ステップ1709)、サーバ間で相互にメモリマップを共有する(ステップ1710)。これにより、自サーバと他サーバのストレージメモリマップ62が参照できるようになる。
 最後に、ブートローダは、ストレージプロセスを順次起動する(ステップ1711~1712)。
 図18は、計算機システムの他の構成例を示す図である。本構成例でも、依頼元サーバ1aと依頼先サーバ1bは同じ構成である。
 依頼元サーバ1aを例にして共通する構成について説明する。依頼元サーバ1aではハイパーバイザ2030が動作し、ハイパーバイザ2030上に1または複数の仮想計算機2010、2020が構築され、稼働している。ここでは仮想計算機2010がストレージ機能を有し、仮想計算機2020がホスト機能を果たす。仮想計算機2010a上で、上述したOSカーネル50aとストレージプロセス51aが動作する。
 依頼元サーバ2001aにおいて仮想計算機2010a上で稼働するOSカーネル50aおよびストレージプロセス51aが、図1に示した依頼元サーバ1aのOSカーネル50aおよびストレージプロセス51aにそれぞれ対応する。依頼先サーバ2001bにおいて仮想計算機2010b上で稼働するOSカーネル50bおよびストレージプロセス51bが、図1に示した依頼先サーバ1bのOSカーネル50bおよびストレージプロセス51bにそれぞれ対応する。OSカーネル50a、ストレージプロセス51a、OSカーネル50b、およびストレージプロセス51bの動作は図1~図17を用いて説明したものと同様である。
 以上のように、OSプログラム50、ストレージプログラム51、およびストレージメモリドライバ52の各プログラムは、図2に示したように、物理計算機のハードウェア上で動作してもよいし、図18に示したように、仮想計算機2010上で動作してもよい。
 また、ホスト55は、物理的なホスト計算機であっても良いし、図18に示したように、仮想計算機2020上で動作するホストプログラムであってもよい。
 また、ストレージ機能を果たす仮想計算機2010とホスト機能を果たす仮想計算機2020とが、図18に示したように、同一サーバ2001であってもよいし、ネットワークを介して接続する異なるサーバ上であってもよい。
 以上、本発明の実施形態について述べてきたが、本発明は、これらの実施形態だけに限定されるものではなく、本発明の技術思想の範囲内において、これらの実施形態を組み合わせて使用したり、一部の構成を変更したりしてもよい。
1…サーバ、1a…依頼元サーバ、1b…依頼先サーバ、10…CPU、100…コア、10a…CPU、10b…CPU、11…メモリ、110…OSメモリ領域、11a…メモリ、11b…メモリ、12…通信部、120…ストレージメモリ領域、120a…ストレージメモリ領域、120b…ストレージメモリ領域、12a…通信部、12b…通信部、130…管理情報、150a…割込レジスタ、150b…割込レジスタ、2…クライアント、2001a…依頼元サーバ、2001b…依頼先サーバ、2010…仮想計算機、2010a…仮想計算機、2010b…仮想計算機、2020…仮想計算機、2030…ハイパーバイザ、3…記憶装置、4…ネットワーク、5…管理端末、50…OSプログラム(OSカーネル)、50a…OSプログラム(OSカーネル)、50b…OSプログラム(OSカーネル)、51…ストレージプログラム(ストレージプロセス)、51a…ストレージプログラム(ストレージプロセス)、51b…ストレージプログラム(ストレージプロセス)、52…ストレージメモリドライバ、52a…ストレージメモリドライバ、52b…ストレージメモリドライバ、53…ドライバ、55…ホスト、6…保守端末、60…要求格納領域、60a…要求格納領域、60b…要求格納領域、600…依頼元要求情報、61…応答格納領域、61a…応答格納領域、61b…応答格納領域、610…応答結果情報、62…ストレージメモリマップ、62a…ストレージメモリマップ、62b…ストレージメモリマップ、63…メモリマップ、64…ハンドラ登録テーブル、70a…要求データ書き込み先、70b…要求データ読み込み元

Claims (10)

  1.  メモリとプロセッサを備えたハードウェアで構成され前記メモリにOSプログラムとストレージプログラムが格納され前記プロセッサで前記OSプログラムと前記ストレージプログラムを実行する、通信回線で相互に接続された複数のサーバを有し、
     前記複数のサーバのいずれかが依頼元サーバとなり他のいずれかが依頼先サーバとなり、
     前記依頼元サーバが前記依頼先サーバのデータを読み出すとき、
     前記依頼元サーバのプロセッサは、前記ストレージプログラムを実行することにより、データを読出す要求を前記依頼先サーバに送り、
     前記依頼先サーバのプロセッサは、前記OSプログラムに組み込まれたストレージメモリドライバを実行することにより、要求された前記データを自身のメモリから読み出して前記依頼元サーバに送り、
     前記依頼元サーバは、前記ストレージプログラムを実行することにより、前記データを取得する、
    計算機システム。
  2.  前記依頼元サーバと前記依頼先サーバを含む前記複数のサーバが予め相互にメモリマップを共有し、
     前記依頼元サーバのプロセッサは、前記依頼先サーバのメモリマップを参照して、読みだすデータの前記依頼先サーバのメモリ上の第1のアドレスを特定し、前記依頼先サーバへ、前記第1のアドレスを指定したデータ読出しの要求を送り、
     前記依頼先サーバのプロセッサは、前記要求を受けると、前記第1のアドレスからデータを読み出して前記依頼元サーバに送る、
    請求項1に記載の計算機システム。
  3.  前記依頼元サーバと前記依頼先サーバを含む前記複数のサーバが予め相互にメモリマップを共有し、
     前記依頼先サーバのプロセッサは、前記依頼元サーバのメモリマップを参照して、前記依頼元サーバから要求されたデータを書き込む前記依頼元サーバのメモリ上の第2のアドレスを特定し、読み出した前記データを前記依頼元サーバの前記第2のアドレスに書き込み、
     前記依頼元サーバは、自身のメモリ上の前記第2のアドレスから前記データを読み出す、
    請求項1に記載の計算機システム。
  4.  前記依頼元サーバは前記依頼先サーバ毎に応答格納領域を備え、
     前記依頼先サーバは、前記依頼元サーバの前記第2のアドレスに前記データを書き込むと、前記依頼元サーバにおける自身に対応する応答格納領域に前記要求に対する応答を格納し、
     前記依頼元サーバは、前記応答格納領域に格納された前記応答を検出すると、前記第2のアドレスから前記データを読み出す、
    請求項3に記載の計算機システム。
  5.  前記依頼元サーバと前記依頼先サーバを含む前記複数のサーバが予め相互にメモリマップを共有し、
     前記依頼先サーバのプロセッサは、依頼先サーバ自身のメモリマップと前記依頼元サーバのメモリマップを参照し、前記依頼先サーバのメモリの連続領域から読み出すことができ、かつ、前記依頼元サーバのメモリの連続領域に書き込むことができる転送量を決定し、前記転送量のデータを前記依頼元サーバに送ることを、要求された前記データを送り終えるまで繰り返す、
    請求項1に記載の計算機システム。
  6.  前記依頼先サーバのプロセッサは、前記依頼元サーバから指定された前記第1のアドレスが妥当な領域にあるか否か判定し、妥当でなければ前記依頼元サーバにエラーの応答を送る、請求項2に記載の計算機システム。
  7.  前記依頼元サーバが前記依頼先サーバのデータをアトミック更新するとき、
     前記依頼元サーバのプロセッサは、前記ストレージプログラムを実行することにより、データのアトミック更新の要求を前記依頼先サーバに送り、
     前記依頼先サーバのプロセッサは、前記要求を受けた、前記OSプログラムに組み込まれたストレージメモリドライバが、要求された前記データをアトミック更新する処理を起動し、更新完了の応答を前記依頼元サーバに通知し、
     前記依頼元サーバのプロセッサは、前記ストレージプログラムを実行することにより、前記データの更新完了を確認する、
    請求項1に記載の計算機システム。
  8.  請求項1に記載の計算機システムにおいて、
     前記依頼元サーバは前記依頼先サーバ毎に応答格納領域を備え、
     (a)前記依頼元サーバおよび前記依頼先サーバを含む前記複数のサーバが相互にメモリマップを共有し、
     前記依頼元サーバが前記依頼先サーバのデータを読み出すとき、
     前記依頼元サーバのプロセッサは、前記ストレージプログラムの実行で生成されるストレージプロセスにより、
     (b)前記依頼先サーバのメモリマップを参照して、読みだすデータの前記依頼先サーバのメモリ上の第1のアドレスを特定し、
     (c)前記依頼先サーバへ、前記第1のアドレスを指定したデータ読出しの要求の割り込みを送り、
     前記依頼先サーバのプロセッサは、前記依頼元サーバからの前記割り込みを受けると、前記OSプログラムに組み込まれたストレージメモリドライバにより、
     (d)前記依頼元サーバのメモリマップを参照して、前記依頼元サーバから要求されたデータを書き込む前記依頼元サーバのメモリ上の第2のアドレスを特定し、
     (e)前記第1のアドレスからデータを読みだして前記依頼元サーバの前記第2のアドレスに書き込み、
     (f)前記依頼元サーバにおける自身に対応する応答格納領域に前記要求に対する応答を格納し、
     前記依頼元サーバは、前記ストレージプロセスにより、
     (g)前記応答格納領域に格納された前記応答をポーリングにより検出し、
     (h)前記依頼元サーバ自身のメモリ上の前記第2のアドレスから前記データを読み出す、
    請求項1に記載の計算機システム。
  9.  メモリとプロセッサを備えたハードウェアで構成され前記メモリにOSプログラムとストレージプログラムが格納され前記プロセッサで前記OSプログラムと前記ストレージプログラムを実行する、通信回線で相互に接続された複数のサーバを有する計算機システムによる処理方法であって、
     前記複数のサーバのいずれかが依頼元サーバとなり他のいずれかが依頼先サーバとなり、
     前記依頼元サーバが前記依頼先サーバのデータを読み出すとき、
     前記依頼元サーバのプロセッサは、前記ストレージプログラムを実行することにより、データを読出す要求を前記依頼先サーバに送り、
     前記依頼先サーバのプロセッサは、前記OSプログラムに組み込まれたストレージメモリドライバを実行することにより、要求された前記データを自身のメモリから読み出して前記依頼元サーバに送り、
     前記依頼元サーバは、前記ストレージプログラムを実行することにより、前記データを取得する、
    処理方法。
  10.  メモリとプロセッサを備えたハードウェアで構成され、通信回線で相互に接続された複数のサーバを有する計算機システムの前記サーバに実行させるためのドライバプログラムであって、
     前記複数のサーバのいずれかである依頼元サーバが依頼先サーバのデータを読み出すとき、前記依頼先サーバとして、前記依頼元サーバから、データを読出す要求を受けると、
     処理手段が、要求された前記データを自サーバのメモリから読み出す手順と、
     前記処理手段が、前記データを前記依頼元サーバに送る手順とを、前記プロセッサに実行させるためのドライバプログラム。
PCT/JP2016/072111 2016-07-28 2016-07-28 計算機システム、処理方法、およびドライバプログラム WO2018020630A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US16/083,059 US11061851B2 (en) 2016-07-28 2016-07-28 Computer system, processing method, and driver program
JP2018530276A JP6725662B2 (ja) 2016-07-28 2016-07-28 計算機システムおよび処理方法
PCT/JP2016/072111 WO2018020630A1 (ja) 2016-07-28 2016-07-28 計算機システム、処理方法、およびドライバプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/072111 WO2018020630A1 (ja) 2016-07-28 2016-07-28 計算機システム、処理方法、およびドライバプログラム

Publications (1)

Publication Number Publication Date
WO2018020630A1 true WO2018020630A1 (ja) 2018-02-01

Family

ID=61016582

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/072111 WO2018020630A1 (ja) 2016-07-28 2016-07-28 計算機システム、処理方法、およびドライバプログラム

Country Status (3)

Country Link
US (1) US11061851B2 (ja)
JP (1) JP6725662B2 (ja)
WO (1) WO2018020630A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020119325A (ja) * 2019-01-24 2020-08-06 富士通株式会社 ストレージシステム、及びストレージ制御装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200042750A1 (en) * 2018-08-02 2020-02-06 Qualcomm Incorporated Secure access for system power management interface (spmi) during boot

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000020490A (ja) * 1998-07-01 2000-01-21 Fujitsu Ltd 遠隔手続き呼出し機構またはオブジェクトリクエストブローカ機構を有する計算機、データ転送方法、および転送方法記憶媒体
JP2000029850A (ja) * 1998-07-09 2000-01-28 Nec Data Terminal Ltd オペレーティングシステムのプロセッサ間通信を使用したタスク制御方法
JP2005157830A (ja) * 2003-11-27 2005-06-16 Hitachi Ltd 複数のプロセッサを用いて情報処理を行う装置及び方法
US8935506B1 (en) * 2011-03-31 2015-01-13 The Research Foundation For The State University Of New York MemX: virtualization of cluster-wide memory
JP2016053946A (ja) * 2014-09-02 2016-04-14 インテル コーポレイション アクティブメッセージによるrmaapiのサポート

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799592B2 (en) * 2011-04-20 2014-08-05 International Business Machines Corporation Direct memory access-like data transfer between guest operating systems
JP5909566B2 (ja) * 2012-05-18 2016-04-26 株式会社日立製作所 計算機システム及びその制御方法
US10303644B2 (en) * 2014-11-21 2019-05-28 International Business Machines Corporation Providing remote, reliant and high performance PCI express device in cloud computing environments

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000020490A (ja) * 1998-07-01 2000-01-21 Fujitsu Ltd 遠隔手続き呼出し機構またはオブジェクトリクエストブローカ機構を有する計算機、データ転送方法、および転送方法記憶媒体
JP2000029850A (ja) * 1998-07-09 2000-01-28 Nec Data Terminal Ltd オペレーティングシステムのプロセッサ間通信を使用したタスク制御方法
JP2005157830A (ja) * 2003-11-27 2005-06-16 Hitachi Ltd 複数のプロセッサを用いて情報処理を行う装置及び方法
US8935506B1 (en) * 2011-03-31 2015-01-13 The Research Foundation For The State University Of New York MemX: virtualization of cluster-wide memory
JP2016053946A (ja) * 2014-09-02 2016-04-14 インテル コーポレイション アクティブメッセージによるrmaapiのサポート

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020119325A (ja) * 2019-01-24 2020-08-06 富士通株式会社 ストレージシステム、及びストレージ制御装置
JP7147589B2 (ja) 2019-01-24 2022-10-05 富士通株式会社 ストレージシステム、及びストレージ制御装置

Also Published As

Publication number Publication date
JPWO2018020630A1 (ja) 2018-11-22
JP6725662B2 (ja) 2020-07-22
US20190095382A1 (en) 2019-03-28
US11061851B2 (en) 2021-07-13

Similar Documents

Publication Publication Date Title
JP4604543B2 (ja) 計算機、計算機起動方法、管理サーバ装置およびプログラム
CN109388340B (zh) 数据存储装置及管理数据存储装置中的flr的方法
US20190026143A1 (en) Guest controlled virtual device packet filtering
US10956189B2 (en) Methods for managing virtualized remote direct memory access devices
US10394586B2 (en) Using capability indicators to indicate support for guest driven surprise removal of virtual PCI devices
WO2015118865A1 (ja) 情報処理装置、情報処理システム及びデータアクセス方法
US9262289B2 (en) Storage apparatus and failover method
JP4052265B2 (ja) 情報処理装置とデバイスドライバのロード方法並びにプログラム
WO2018020630A1 (ja) 計算機システム、処理方法、およびドライバプログラム
WO2006060648A2 (en) Interrupt notification block
US10620856B2 (en) Input/output (I/O) fencing with persistent reservation information in shared virtual storage environments
US10649950B2 (en) Disk access operation recovery techniques
JP5673396B2 (ja) 情報処理システム、情報処理プログラム、情報処理方法
US10120594B1 (en) Remote access latency in a reliable distributed computing system
US10983818B2 (en) Method and system for preventing execution of a dirty virtual machine on an undesirable host server in a virtualization cluster environment
US10474394B2 (en) Persistent reservation emulation in shared virtual storage environments
CN108062224B (zh) 基于文件句柄的数据读写方法、装置及计算设备
JP5557612B2 (ja) 計算機及び転送プログラム
WO2022194021A1 (zh) 并发控制方法、网卡、计算机设备、存储介质
WO2016017219A1 (ja) データ処理システム及びデータ処理方法及びプログラム
US10656867B2 (en) Computer system, data management method, and data management program
US20130031547A1 (en) Facilitating compatible interaction, at least in part
US9838254B2 (en) Information processing equipment, information processing method and storage medium
JP2012221101A (ja) 障害によるリブートを考慮した処理部間の不整合検出方法並びに共有装置及びクラスタシステム
US11972245B2 (en) Proactive prevention of data unavailability and data loss

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 2018530276

Country of ref document: JP

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16910533

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16910533

Country of ref document: EP

Kind code of ref document: A1