WO2016194162A1 - 計算機システム - Google Patents

計算機システム Download PDF

Info

Publication number
WO2016194162A1
WO2016194162A1 PCT/JP2015/066019 JP2015066019W WO2016194162A1 WO 2016194162 A1 WO2016194162 A1 WO 2016194162A1 JP 2015066019 W JP2015066019 W JP 2015066019W WO 2016194162 A1 WO2016194162 A1 WO 2016194162A1
Authority
WO
WIPO (PCT)
Prior art keywords
storage
write
write data
data
interface device
Prior art date
Application number
PCT/JP2015/066019
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 PCT/JP2015/066019 priority Critical patent/WO2016194162A1/ja
Publication of WO2016194162A1 publication Critical patent/WO2016194162A1/ja

Links

Images

Classifications

    • 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
    • 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/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor

Definitions

  • the present invention relates to a computer system data transfer technique.
  • Patent Document 1 discloses a technology for transferring (reading or writing) data between a storage appliance having a plurality of storage modules and a client.
  • the control module stores the access target data in the host memory in the DMA engine based on the written command, and the storage area of the storage module.
  • a technique for transferring data to the network is disclosed.
  • data is stored in a plurality of storage devices in order to prevent data loss when a device failure occurs.
  • a switch that receives a data transfer instruction from the DMA engine or DMA transfers data to the two storage devices. Need to do. That is, in the technique disclosed in Patent Document 1, in order to store one unit of data, a data transfer unit such as a DMA engine has to perform data transfer processing for two units, which places a heavy burden on the data transfer unit.
  • the computer system which is one embodiment of the present invention includes a storage apparatus having a plurality of storage devices, and a server having a processor and an interface device.
  • the interface device receives a write command from the processor, it directs storage of write data directly to a plurality of storage devices to be written by this write command.
  • the plurality of storage devices Upon receiving the instruction, the plurality of storage devices read out the write data from the memory of the server and store them in the storage device.
  • the interface device receives responses from the plurality of storage devices, it notifies the processor of the completion of the write process.
  • 1 is a configuration example of a computer system according to a first embodiment. It is a structural example of a storage module. It is a structural example of an I / F device. It is an example of a logical volume management table. It is explanatory drawing of the whole flow of a Direct I / O process. It is an example of a Direct I / O volume table. It is an example of a module address table. It is a flowchart of the write starting process implemented with an I / F apparatus. It is an example of a command and response format. 4 is a configuration example of a write data storage area and management information in a storage module. It is an example of a transaction management table.
  • FIG. 10 is a configuration example of a write data storage area and management information in a storage module in Modification 2.
  • 12 is an explanatory diagram of the overall flow of Direct I / O processing in Modification 6.
  • FIG. It is explanatory drawing (2) of the whole flow of the Direct I / O process in the modification 6.
  • 6 is a configuration example of a computer system according to a second embodiment. It is explanatory drawing of the program run with a server.
  • program is used as the subject, but in practice, the program is executed by the processor to perform a predetermined process. However, to prevent the explanation from becoming redundant, the program may be described as the subject. Further, part or all of the program may be realized by dedicated hardware.
  • Various programs may be installed in each apparatus by a program distribution server or a computer-readable storage medium.
  • the storage medium for example, an IC card, an SD card, a DVD, or the like may be used.
  • FIG. 1 shows a configuration of a computer system 1 according to the first embodiment.
  • the computer system 1 includes a server 3, a storage device 2, and a management device 4.
  • the server 3 is a device that executes an application program (AP) used by a user for business or the like.
  • the storage device 2 is a device that provides a volume (logical volume) for storing data used by the server 3.
  • FIG. 1 shows a configuration in which two servers 3 are connected to the storage apparatus 2, the number of servers 3 may be one. Alternatively, there may be three or more servers 3.
  • the server 3 includes at least a processor 31, a memory 32, and an interface device (I / F device) 33.
  • the server 3 may have an NIC (Network Interface Controller) for connecting the server 3 to a LAN (Local Area Network), an input / output device such as a keyboard and a display, etc.
  • NIC Network Interface Controller
  • the processor 31 executes an AP or an operating system (OS) used by the user for business. Although only one processor 31 is shown in the figure, a plurality of processors 31 may exist.
  • the processor 31 may be a multi-core processor.
  • the memory 32 is used as the main memory of the processor 31.
  • the processor 31 executes the program, the program and data are loaded into the memory 32, and the processor 31 reads the program from the memory 32 and executes it.
  • the I / F device 33 is a component for controlling data transfer between the server 3 and the storage device 2.
  • the processor 31 of the server 3 accesses the volume of the storage device 2, it issues a command to the I / F device 33.
  • PCI Express hereinafter abbreviated as PCIe
  • PCIe PCI Express
  • the processor 31 and the I / F device 33 are connected by a PCI Express link, and communication according to the PCIe standard is performed between the processor 31 and the I / F device 33.
  • other peripheral devices such as a NIC (not shown) are also connected to the processor 31 by a PCI Express link.
  • the I / F device 33 and the storage device 2 are also connected by a PCI Express link.
  • the storage device 2 includes one or more storage controllers (hereinafter also referred to as “controllers” or “CTLs”) 21, a plurality of drives 22, and a plurality of storage modules 23.
  • the CTL 21 is control hardware of the storage apparatus 2 and processes data access requests (read command, write command, etc.) coming from the server 3.
  • the storage apparatus 2 includes two controllers 21 (21-0 and 21-1) will be described.
  • the storage apparatus 2 may have more than two controllers 21.
  • the CTL 21 includes a processor 211, a memory 212, a switch 214, and a back end interface (BEIF) 215.
  • the processor 211 processes an I / O request from the server 3.
  • the processor 211 executes a program for processing an I / O request from the server 3, so that the processor 211 stores the data requested to be read from the server 3.
  • a process of reading from the drive 22 and returning it to the server 3 or a process of writing data requested to be written from the server 3 to the drive 22 is performed.
  • the memory 212 is a storage medium for storing programs and control information used by the processor 211. Generally, a memory element having high access performance, such as a DRAM, is used for the memory 212. However, a storage element other than DRAM may be used.
  • the memory 212 is also used as a cache memory that temporarily stores write data from the server 3 or data read from the drive 22. Hereinafter, an area used as a cache memory among areas of the memory 212 is referred to as a “cache area”.
  • the switch 214 is a component for connecting the processor 211 to components such as the I / F device 33 of the server 3 and the storage module 23 described later.
  • the switch 214 is a PCIe switch, and communication conforming to the PCIe standard is performed between the processor 211 and the I / F apparatus 33 or the BEIF 215.
  • the processor 211 of the CTL 21-0 and the processor 211 of the CTL 21-1 are also connected to each other via the switch 214. As a result, the processor 211 of the CTL 21-0 and the processor 211 of the CTL 21-1 can communicate with each other.
  • the BEIF 215 is an interface for connecting the CTL 21 and the drive 22.
  • the drive 22 is a storage device that conforms to the SAS (Serial Attached SCSI) standard.
  • the BEIF 215 includes a SAS interface controller, and the BEIF 215 performs protocol conversion between PCIe and SAS.
  • the drive 22 is a non-volatile storage device for storing write data from the server 3, and for example, a conventional HDD (Hard Disk Drive) or SSD (Solid State Drive) is used.
  • Each drive 22 is connected to the BEIF 215 via a SAS link.
  • Each drive 22 has two interfaces. One interface is connected to the BEIF 215 of the controller 21-0, and the other interface is connected to the BEIF 215 of the controller 21-1. As a result, both the CTL 21-0 and the CTL 21-1 can access (read or write) each drive 22.
  • Each drive 22 provides one storage space for the CTL 21.
  • the CTL 21 can read / write data from / to the drive 22 by issuing a command (read command, write command, etc.) specifying an address (LBA) in the storage space to the drive 22.
  • a command read command, write command, etc.
  • LBA address
  • the storage module 23 is also a storage device used for storing write data from the server 3, similar to the drive 22.
  • the drive 22 and the storage module 23 are collectively referred to as a “storage device”.
  • Each storage module 23 is connected to two CTLs 21. However, the storage module 23 is connected to the switch 214 of each CTL 21 not via the BEIF 215 but via a PCI Express link. Therefore, a command can be issued from the CTL 21 to the storage module 23, but a command can also be issued from the I / F device 33 of the server 3.
  • the management device 4 is a computer for setting the storage device 2 and is connected to the controller 21 by a PCI Express link. However, the controller 21 may be provided with a NIC, and the management device 4 and the controller 21 may be connected by Ethernet.
  • a program for setting the storage device 2 is executed, and a GUI (CLI) is provided to the user (administrator) of the storage device 2. The administrator uses the GUI to define a logical volume, which will be described later.
  • the storage module 23 includes a processor 231, a data transfer device 232, a primary storage device 233, a secondary storage device 234, and a battery 235.
  • the processor 231 is a component that executes a program for controlling the storage module 23.
  • the processor 231 mainly performs storage area management of the primary storage device 233 and the secondary storage device 234.
  • the data transfer device 232 is a component that performs data transfer with an external device (server 3 or the like).
  • Data transfer device 232 includes a trigger register for receiving a data transfer instruction from an external device.
  • the storage module 23 may be mounted in a form other than that described above.
  • an ASIC may be used instead of the processor 231.
  • the processor 231 and the data transfer device 232 may be implemented as the same hardware.
  • the primary storage device 233 and the secondary storage device 234 are mainly used for storing write data from the server 3 or the like.
  • a volatile storage medium such as a DRAM is used for the storage area of the primary storage device 233
  • a nonvolatile storage medium such as a flash memory is used for the storage area of the secondary storage device 234.
  • Write data from the server 3 or the like is temporarily stored in the primary storage device 233.
  • the write data stored in the primary storage device 233 is moved to the secondary storage device 234 at an arbitrary timing.
  • a partial area of the primary storage device 233 is used as a command queue that stores commands received from external devices.
  • the battery 235 is provided to hold the contents stored in the storage area of the primary storage device 233 when the power supply to the storage device 2 is stopped.
  • An external power supply (not shown) is connected to the storage device 2, and the storage device 2 and the storage module 23 operate using power supplied from the external power supply during normal times.
  • the storage module 23 switches the power supply source from the external power supply to the battery 235 so that the contents stored in the storage area of the primary storage device 233 are not lost. .
  • the storage module 23 provides one storage space for the initiator device (in this embodiment, the CTL 21 or the I / F device 33 is the initiator device). This storage space is referred to herein as a “PDEV space”.
  • the initiator device can read or write data to the storage module 23 by issuing a command designating the address (LBA) in the PDEV space to the storage module 23.
  • LBA command designating the address
  • the storage module 23 maps the area of the secondary storage device 234 to each area on the PDEV space. Information on the correspondence between the area in the PDEV space and the area of the secondary storage device 234 mapped to this area is called mapping information.
  • the storage module 23 stores and manages this mapping information in the primary storage device 233 or the like.
  • the processor 231 reads / writes data from / to the secondary storage device 234, it refers to the mapping information to identify the area on the secondary storage device 234 that is the read / write destination.
  • This mapping may be a static mapping or a dynamic mapping.
  • a non-rewritable storage medium such as a flash memory is used as the storage medium of the secondary storage device 234, dynamic mapping is used.
  • dynamic mapping the processor 231 maps an unused storage area of the secondary storage device 234 to an area in the PDEV space to be written, for example, when a write command is received from the initiator device.
  • the initiator device is connected to the storage module 23 via a PCIe link, and the command queue and trigger register in the storage module 23 are mapped to the PCIe space. Therefore, the initiator device can transmit a command and a data transfer instruction to the storage module 23 by using an access request (Write) according to the PCIe standard.
  • the storage module 23 can also read information (such as a command) from an initiator device such as the I / F device 33 by transmitting an access request (Read) according to the PCIe standard.
  • the I / F device 33 has a function of receiving a command (read command, write command, etc.) issued to the storage device 2 by the processor 31 of the server 3 and transmitting it to the controller 21.
  • the I / F device 33 also has a function of transmitting write data from the server 3 to the storage device 2 or transferring data in the storage device 2 to the memory 32 of the server 3. Further, the I / F device 33 can cause the storage module 23 (more precisely, the data transfer device 232) to perform data transfer.
  • the I / F device 33 includes a processor 341, a memory 342, and a data transfer device 343.
  • the processor 341 is a component that executes a control program for controlling the I / F device 33. Specifically, the control program interprets a command from the server 3 and performs an appropriate process according to the content of the command.
  • the memory 342 is a storage area for storing a control program executed by the processor 341.
  • the memory 342 also includes a command queue for storing commands from the server 3, a trigger register used by the server 3 to instruct the I / F device 33 to start writing (write activation), and the storage device 2 (or storage device).
  • a response queue for storing responses from the module 23) and a doorbell register are included. Note that a command queue and a doorbell register for storing commands may be used for the write processing.
  • the data transfer device 343 is a component that manages data transfer between the server 3 and the storage device 2. Specifically, data on the memory 32 of the server 3 is transferred to the controller 21 or a command is transmitted to the controller 21.
  • At least a part (for example, a command queue or a doorbell register) or all of the memory 342 is mapped to an address in the PCIe space.
  • the processor 31 (or the root complex built in the processor 31) can directly store the command in the memory 342 by issuing an input / output request designating an address in the PCIe space.
  • the processor 211 and the storage module 23 of the controller 21 can directly access the area of the memory 342 mapped in the PCIe space.
  • the I / F device 33 can directly transmit a data transfer processing start instruction or the like to the storage module 23.
  • the storage module 23 can acquire data from the memory 32 by transmitting an access request according to the PCIe standard.
  • the data transfer device 232 of the storage module 23 reads the write data stored in the memory 32 of the server 3 from the memory 32 without using the processor 31 and stores it in the storage module 23. can do. Details will be described later.
  • the mounting form of the I / F device 33 may be other than that described above.
  • the processor 341 and the data transfer device 343 may be implemented as the same hardware. Moreover, it may replace with the processor 341 and may be mounted using ASIC.
  • the storage device 2 forms one or more logical volumes and provides them to the server 3. Some logical volumes are composed of storage areas of one or more drives 22, and some logical volumes are composed of storage areas of one or more storage modules 23.
  • the storage apparatus 2 defines (forms) one logical storage area from a plurality of drives 22 using RAID technology. One logical storage area defined here is treated as a logical volume. Similarly, the storage apparatus 2 defines one logical storage area from a plurality of storage modules 23 using RAID technology. One logical storage area defined by a plurality of storage modules 23 is also handled as a logical volume.
  • a unique identifier within the storage device 2 is assigned to each logical volume.
  • a non-negative integer value is used for this identifier, and this identifier is called a logical device number (also called LDEV # or sometimes called a logical volume number).
  • a command including a logical unit number also referred to as LUN
  • LUN is also assigned to the logical volume.
  • the storage apparatus 2 assigns a unique identifier to each drive 22 and each storage module 23 for management.
  • This identifier is called a physical device number (PDEV #).
  • PDEV # physical device number
  • a non-negative integer value is also used for PDEV #.
  • the controller 21 has information for managing the mapping between the logical volume and the drive 22 (or the storage module 23). This information is called a logical volume management table.
  • FIG. 4 shows an example of the logical volume management table 200.
  • the logical volume management table 200 includes LDEV # 201, LUN202, PDEV type203, PDEV # 204, RAID Level205, Capacity206, Owner MP # 207, Direct I / O Flag208, LBA Range209 for each logical volume formed in the storage apparatus 2. It is a table for storing the information.
  • the logical device number assigned to the logical volume is stored in LDEV # 201, and the LUN assigned to the logical volume is stored in LUN202.
  • the same value may be stored in LDEV # 201 and LUN202, or different values may be stored.
  • the PDEV # 203 stores the PDEV # of the drive 22 (or the storage module 23) constituting the logical volume. Since one logical volume is composed of a plurality of drives (or storage modules 23), a plurality of values (PDEV #) are stored in PDEV # 203.
  • the PDEV type 203 information for identifying whether the storage device constituting the logical volume is the drive 22 or the storage module 23 is stored.
  • “1” is stored in the PDEV type 203, it indicates that the storage device constituting the logical volume is the drive 22.
  • “2” is stored in the PDEV type 203, it means that the storage device constituting the logical volume is the storage module 23.
  • RAID level 205 stores information on RAID levels applied to a plurality of storage devices that constitute a logical volume.
  • the RAID level represents a data redundancy method in RAID technology, and generally has RAID levels of RAID1 to RAID6.
  • a method combining a plurality of data redundancy methods such as RAID 1 + 0 can also be defined.
  • the capacity 206 stores the capacity of the logical volume.
  • the Owner MP # 207 stores information on the controller 21 in charge of processing for the logical volume.
  • the storage apparatus 2 includes two controllers 21, the controller 21 that performs processing for one logical volume, specifically, processing related to a command received from the server 3, is one of the controllers 21.
  • the controller 21 in charge of processing for the logical volume is called “owner”.
  • the owner is determined for each logical volume.
  • the processing for the logical volume is performed by the controller 21-0.
  • the processing for the logical volume is performed by the controller 21-1.
  • the controller 21-0 receives a command for the logical volume in which “1” is stored in the Owner MP # 207, the controller 21-0 transfers the received command to the controller 21-1, and the controller 21 ⁇ 1 is processed.
  • one controller 21 for example, controller 21-0
  • the remaining controller 21-1 takes charge of processing for all logical volumes.
  • the Direct I / O Flag 208 is information indicating whether or not the write processing for the logical volume is performed without using the controller 21. This will be described later.
  • the controller 21 of the storage apparatus 2 forms a logical volume.
  • the controller 21 stores various information described above in the logical volume management table 200.
  • the server 3 may execute a program for executing a logical volume formation instruction, and the server 3 may issue a logical volume formation instruction to the storage apparatus 2.
  • the logical volume management table 200 is stored in both the memory 212 of the controller 21-0 and the memory 212 of the controller 21-0. In principle, the contents of the information stored in both memories 212 are kept the same.
  • the processor 211 of the owner controller that has received the write command secures an area for storing write data in the cache area (on the memory 212) of the owner controller.
  • the address information of the secured area is notified to the data transfer device 343 of the I / F device 33.
  • Various methods can be adopted as the notification method.
  • the processor 211 of the owner controller also allows the non-owner controller to secure an area for storing the write data in the cache area of the non-owner controller.
  • the address of the area secured in the cache area of the non-owner controller need not be notified to the data transfer device 343.
  • the data transfer device 343 of the I / F device 33 transfers the write data to the notified address (the address on the memory 212 of the owner controller). After the write data is stored in the memory 212 of the owner controller, the owner controller stores a copy of the write data in the memory 212 of the non-owner controller. When the storage of the copy of the write data is completed, the data transfer device 343 returns a response to the effect that the write process is completed to the server 3.
  • the data stored in the cache area is reflected on the storage device (drive 22 or storage module 23) constituting the logical volume by the owner controller after a while. The process of reflecting the data in the cache area on the drive 22 is called “destage”.
  • the process flow described above is an example when the controller 21 performs a write process in response to the controller 21 receiving a write command from the server 3. In this embodiment, this process is called “normal write process”.
  • the write processing for the logical volume formed by the plurality of storage modules 23 can be performed without the intervention of the controller 21. This write processing is called Direct I / O in this specification.
  • Direct I / O and related management information will be described.
  • Direct I / O Flag 208 and LBA Range 209 of the logical volume management table 200 are management information related to Direct I / O.
  • a logical volume in which “1” is stored in the Direct I / O Flag 208 of the logical volume management table 200 means that the logical volume is capable of Direct I / O.
  • a logical volume in which “0” is stored in the Direct I / O Flag 208 of other logical volumes means that the Direct I / O is not permitted.
  • the LBA Range 209 stores area information (a set of start LBA and end LBA) on the logical volume that permits write processing by Direct I / O.
  • the storage apparatus 2 according to the present embodiment permits the write processing by Direct I / O only for the area set in the LBA Range 209 among the areas in the logical volume whose Direct I / O Flag 208 is “1”. Can do. However, write processing by Direct I / O may be permitted for all areas in the logical volume. In this case, an invalid value (such as “ ⁇ 1” or a value that is not used for the LBA Range 209) is set in the LBA Range 209.
  • the administrator of the storage apparatus 2 uses the management apparatus 4 to issue an instruction to set the logical volume to be written by Direct I / O and the area information in the logical volume to the storage apparatus 2, thereby Values are set in the Direct I / O Flag 208 and LBA Range 209 of the volume.
  • a logical volume capable of direct I / O is a logical volume that meets at least all of the following conditions: 1) A logical volume is formed using only the storage module 23. (PDEV type 203 of the logical volume management table 200 is “2”) 2) The RAID Level (RAID Level 205 of the logical volume management table 200) is a logical volume of RAID1 or RAID1 + 0.
  • RAID 1 an example in which the RAID level of the logical volume on which the write processing by Direct I / O is performed is RAID 1 will be mainly described. In other words, the write data is written twice to the two storage modules 23 constituting the logical volume by Direct I / O.
  • the controller 21 determines whether the logical volume to be set matches the above conditions.
  • the controller 21 sets “1” in the Direct I / O Flag 208 only when the condition is met.
  • the information setting for LBA Range 209 is the same. That is, the controller 21 permits setting of information in the LBA Range 209 only for logical volumes that meet the above conditions.
  • the processor 231, the data transfer device 232, the primary storage device 233, and the secondary storage device 234 in the storage module 23-1 are the processor 231-1, the data transfer device 232-1, and the primary storage device 233-1, respectively. , Expressed as a secondary storage device 234-1.
  • the processor 231, the data transfer device 232, the primary storage device 233, and the secondary storage device 234 in the storage module 23-2 are respectively the processor 231-2, the data transfer device 232-2, the primary storage device 233-2, It is expressed as a secondary storage device 234-3.
  • the processor 31 generates data to be written to the logical volume (by executing an application program or the like), and stores the data in the memory 32 (S1). At this time, the processor 31 also creates a command (write command) for writing the data generated in S ⁇ b> 1 to the logical volume, and stores the command in the memory 32. However, the command may be stored directly in the command queue in the memory 342 without storing the command in the memory 32.
  • the processor 31 stores the address where the command is stored in the trigger register of the I / F device 33, thereby giving a write activation instruction to the I / F device 33 (S2).
  • the processing up to this point is the same for normal write processing (write processing that is not Direct I / O).
  • the processor 341 of the I / F device 33 reads the command and starts writing to the storage modules 23-1 and 23-2 based on the command content.
  • An instruction is given (S3-1, S3-2). Details of this processing will be described later.
  • the data transfer device 232-1 of the storage module 23-1 reads the write target data from the memory 32 of the server 3 and stores it in the reserved area (S4-1).
  • the storage module 23-2 also performs the same process as S4-1 (S4-2). Details of this processing will be described later.
  • the storage module 23-1 After the completion of S4-1, the storage module 23-1 notifies the I / F device 33 of response information (referred to as a response) indicating that the processing is completed (S5-1).
  • the response is stored in the response queue of the I / F device 33 by the storage module 23-1.
  • the storage module 23-2 also notifies the response to the I / F device 33 after the completion of S4-2 (S5-2). After confirming that the responses have been received from both the storage module 23-1 and the storage module 23-2, the I / F device 33 informs the processor 31 that the processing related to the write command received in S2 has been completed. A response is notified (S6).
  • the information about the logical volume that can be written by Direct I / O is set in the controller 21, but the server 3 (the I / F device 33) also recognizes this information. Need to be.
  • the I / F device 33 manages information on logical volumes that can be subjected to write processing by Direct I / O in a Direct I / O volume table. The contents of the Direct I / O volume table will be described with reference to FIG.
  • the direct I / O volume table 400 is stored in the memory 342 of the I / F device 33. Each row of this table stores information about logical volumes that can be subjected to write processing by Direct I / O.
  • the Direct I / O volume table 400 includes columns of LUN 401, Address Range 402, Module # 1 (403), and Module # 2 (404).
  • the LUN 401 stores the LUN of the logical volume that permits write processing by Direct I / O.
  • the Address Range 402 stores the address range (start LBA, end LBA) of the area of the logical volume area specified by the LUN 401 that is permitted for write processing by Direct I / O. That is, the LUN 401 and Address Range 402 store the same values as the LUN 202 and LBA Range 209 of the logical volume management table 200.
  • Module # 1 (403) and Module # 2 (404) information on the identifiers of the storage modules 23 constituting the logical volume specified by the LUN 401 is stored.
  • a logical volume on which a write process using Direct I / O is performed includes two storage modules 23. This is because the RAID level of the logical volume to which the write processing by Direct I / O is performed is RAID1. Therefore, the Direct I / O volume table 400 has Module # 1 (403) and Module # 2 (404) in order to store identifiers for the two storage modules 23.
  • the storage apparatus 2 uses PDEV # as information to be stored in Module # 1 (403) and Module # 2 (404).
  • the values stored in PDEV # 204 of the logical volume management table 200 are stored in Module # 1 (403) and Module # 2 (404).
  • information other than PDEV # may be stored in Module # 1 (403) and Module # 2 (404).
  • the administrator can use the management apparatus 4 to set one or a plurality of logical volumes so as to enable direct I / O according to an instruction from the administrator of the storage apparatus 2.
  • the controller 21 receives from the management device the information of the logical volume for which direct I / O is to be enabled and the area in the logical volume, the controller 21 sets “1” in the direct I / O flag 208 of the logical volume management table 200.
  • the information of the area specified in the LBA Range 209 is set.
  • the controller 21 notifies the I / F device 33 of information on the LUN 202, LBA Range 209, and PDEV # 204 of the logical volume in which “1” is set in the Direct I / O Flag 208.
  • the I / F device 33 stores the received information in the Direct I / O volume table 400.
  • the administrator simply sets the logical volume for the storage apparatus 2, and information necessary for Direct I / O is also set for the server 3.
  • the storage device 2 sets “1” in the Direct I / O Flag 208 for the I / F devices 33 of all the connected servers 3.
  • the logical volume LUN 202, LBA Range 209, and PDEV # 204 are notified.
  • all the servers 3 connected to the storage apparatus 2 can perform write processing by direct I / O on the logical volume.
  • the storage apparatus 2 may notify the specific server only of these pieces of information so that only the specific server can perform the write processing by Direct I / O.
  • a PCI Express link is used as the information communication path from the controller 21 to the I / F device 33.
  • an area in which the Direct I / O volume table 400 is stored may be mapped to the PCIe space so that it can be accessed from the processor 211 of the controller 21. In that case, the processor 211 can directly write information into the Direct I / O volume table 400.
  • a method for storing information in the Direct I / O volume table 400 a method other than contacting the I / F device 33 from the storage device 2 may be employed.
  • the processor 31 of the server 3 executes a program for setting information in the I / F device 33, and the program sets information to be set in the Direct I / O volume table 400 from the storage device 2 or the management device 4. It may be acquired and stored in the I / F device 33.
  • a program that can set information in the Direct I / O volume table 400 may be executed on the server 3 using an input / output device of the server 3. In that case, the user of the server 3 manually sets information in the Direct I / O volume table 400 via the input / output device.
  • the module address table 450 includes columns of Module # (451), Module Address (452), and Alternative Module Address (453).
  • the module address table 450 is stored in the memory 342 of the I / F device 33.
  • Module # (451) is an identifier of the storage module 23, for example, PDEV #.
  • Module Address (452) information necessary for the I / F device 33 to issue a write activation instruction to the storage module 23 is stored. Specifically, an address such as a trigger register on the data transfer device 232 is stored.
  • the alternative Module Address (453) stores information necessary for the I / F device 33 to issue a write activation instruction to the storage module 23 (address such as a trigger register).
  • the address stored in the module address (452) is the address of the PCIe domain to which the controller 21-0 belongs
  • the address stored in the alternative module address (453) is the address of the PCIe domain to which the controller 21-1 belongs. .
  • the I / F device 33 issues an instruction to the storage module 23 using a route (hereinafter referred to as “route A”) via the switch 214 of the controller 21-0, it is stored in the Module Address (452).
  • the storage module 23 is instructed using the address to store (information is stored in the trigger register).
  • the I / F device 33 cannot issue an instruction to the storage module 23 using the path A (for example, a case where the controller 21-0 is down due to a failure) corresponds to the switch 214 of the controller 21-1.
  • the storage module 23 is accessed using a route (hereinafter referred to as “route B”). In this case, the I / F device 33 issues an instruction to the storage module 23 using the address stored in the alternative module address (453).
  • the storage module 23 When the storage module 23 receives an instruction from the I / F device 33 via the path A, the storage module 23 acquires write data and commands from the I / F device 33 using the path A. Conversely, when the storage module 23 receives an instruction from the I / F device 33 via the path B, the write data or command is acquired from the I / F device 33 using the path B.
  • the information set in the module address table 450 is notified from the storage apparatus 2 to the I / F apparatus 33 when the storage apparatus 2 is activated or when the storage module 23 is installed in the storage apparatus 2.
  • information may be set in the module address table 450 by other methods.
  • a means (program) that allows the user to manually set information in the module address table 450 may be mounted on the server 3 so that the user can set information in the module address table 450.
  • the command 50 includes an operation code (Opcode) 51, a CMD ID 52, a LUN 53, a start LBA 54, a data length (Length) 55, and a transfer source address (Source Addr.) 56. Information other than this may be included.
  • the operation code (Opcode) 51 stores information indicating the type of command. Examples of command types include a read command and a write command.
  • the server 3 wishes to instruct data writing to the logical volume, the server 3 creates a command 50 in which information indicating that it is a write command is stored in an opcode 51.
  • the CMD ID 52 is a unique identifier that the server 3 attaches to each command.
  • the controller 21 or the storage module 23
  • the controller 21 indicates to the server 3 as shown in FIG. Response 60 is returned.
  • the controller 21 completes the processing related to the command in which x is specified in the CMD ID 52
  • the controller 21 creates a response 60 in which x is specified in the CMD ID 61 and returns it to the server 3.
  • the server 3 can determine to which command the received response is a response.
  • LUN 53 is the logical unit number of the access target logical volume.
  • the start LBA 53 is the address of the area to be accessed. For example, in the case of a write command, an address (LBA) on the logical volume where the write target data is to be stored is designated.
  • the data length (Length) 55 stores the length of data to be written.
  • Source Addr. Reference numeral 56 denotes a head address on the memory 32 in which write target data is stored.
  • the command 50 is a plurality of Source Addr. 56 may be included.
  • Source Addr. 56 is a plurality of Source Addr. 56 and each Source Addr. It may be an address indicating an SGL (Scatter Gather List) including the length of the write target data from 56.
  • the format of the response sent back to the server 3 will be described with reference to FIG.
  • the controller 21 (or the storage module 23) returns the response 60 to the server 3 (I / F device 33) when the processing related to the received command 50 is completed.
  • the response 60 includes CMD ID 61 and Status 62. Since the CMD ID 61 has already been explained, the explanation is omitted.
  • the status 62 includes information indicating the success or failure of processing related to the command. For example, 0 is included in Status 62 when the process is successful, and non-zero information is included when the process is unsuccessful.
  • the I / F device 33 acquires a write command from the memory 32 of the server 3 (S1001).
  • the address where the write command is stored is stored in the trigger register of the I / F device 33.
  • the address where the write command is stored may be obtained from the base address register and the doorbell register.
  • the I / F device 33 determines whether the write destination area specified by the command 50 is an area registered in the Direct I / O volume table 400 (S1002).
  • the write command includes LUN 53 and information for specifying the write range (start LBA 54 and Length 55).
  • the processor 341 of the I / F device 33 determines whether there is a line in which the LUN 401 included in the write command matches the LUN 401 among the lines of the Direct I / O volume table 400. If there is a matching line, this line is called a “target line”. When the target row exists, the processor 341 further determines whether the write range specified by the write command is included in the area included in the Address Range 402 of the target row. This makes it possible to determine whether the write destination area specified by the write command is an area registered in the Direct I / O volume table 400.
  • the I / F device 33 When the write destination area specified by the write command is within the range of the area registered in the Direct I / O volume table 400 (S1002: Y), the I / F device 33 writes using Direct I / O. Decide that you want to process. Specifically, the processor 341 determines to directly send a write command to the storage module 23 specified by Module # 1 (403) and Module # 2 (404) of the target row (S1003).
  • the processor 341 refers to the module address table 450 and specifies the address of the trigger register of the storage module 23 to which the write command is transmitted.
  • the processor 341 then writes the address where the command is stored (the address on the memory 342 of the I / F device 33) to the trigger register, thereby instructing the storage module 23 to start the write process (S1004).
  • the processor 341 registers the CMD ID 52 of the write command in the CMD ID 801 of the transaction management table (described later).
  • the format of the write command transmitted from the I / F device 33 to the storage module 23 may be the same as or different from that of FIG.
  • the processor 341 may newly create a command from which the LUN 53 is removed from the command 50 and notify the storage module 23 of the address where the newly created command is stored.
  • the processor 341 instructs the two storage modules 23 to start a write process.
  • the same command 50 is transmitted to the two storage modules 23. Since the same command is transmitted, the same data is written in the same area of the two storage modules 23.
  • the storage module 23 reads the contents of the write command from the I / F device 33.
  • the I / F device 33 (the processor 341 or the data transfer device 343) transfers to the storage module 23.
  • a write command may be transmitted.
  • the transaction management table 800 will be described with reference to FIG.
  • the transaction management table 800 is a table having columns of CMD ID 801 and completion number 802 and is stored in the memory 342.
  • the CMD ID 801 stores the CMD ID 52 of the command 50 transmitted to the storage module 23.
  • the completion number 802 stores the number of responses received from the storage module 23.
  • the initial value of the completion number 802 is 0.
  • the processor 341 adds a line in which the CMD ID 52 of the write command is stored in the CMD ID 801 to the transaction management table 800. At this time, 0 is stored in the completion number 802 of this row.
  • the I / F device 33 sends a write command to the controller 21. Then, the controller 21 is caused to perform normal write processing (S1005).
  • the data transfer device 232 reads the command from the address stored in the trigger register, and stores the command in the command queue of the storage module 23. Then, the data transfer device 232 causes the processor 231 to reserve an area for storing the write data. This area is provided in the primary storage device 233. The size of the area to be secured can be determined by referring to the Length 55 included in the command 50.
  • the processor 231 reads the command 50 stored in the command queue, specifies the size of the area to be secured, and secures the area. After securing the area, the processor 231 notifies the data transfer apparatus 232 of the address of the secured area.
  • the data transfer device 232 When the data transfer device 232 receives the notification from the processor 231, the data transfer device 232 reads the write target data from the memory 32 of the server 3, and stores the write target data at the address notified from the processor 231. The address on the memory 32 where the write target data is stored is included in the command 50 (Source Addr. 56). Therefore, the data transfer device 232 is connected to the Source Addr. Read data from the address stored in 56. When the storage of the write target data is completed, the data transfer device 232 reports the end of processing to the processor 231. The processor 231 creates a response 60 and notifies the response 60 to the I / F device 33.
  • the storage module 23 includes a data buffer 500, a management information queue 510, a next_ptr 515, and a tail_ptr 516 in the primary storage device 233.
  • the data buffer 500 is an area for storing write data
  • the management information queue 510 is an area for storing management information of an area in which the write data is stored.
  • Next_ptr 515 stores the start address of the free area of the area in the data buffer 500
  • tail_ptr 516 stores the end address of the free area.
  • the processor 231 secures the area, the area is selected from the areas whose addresses are next_ptr 515 or more or tail_ptr 516 or less.
  • the processor 231 of the storage module 23 secures an area, it first secures a continuous area from the top of the data buffer 500.
  • the length of the area to be secured is the same as the length of the data length (Length 55) specified by the write command 50.
  • the processor 231 stores (end address of the secured area + 1) in next_ptr 515. Thereafter, when the processor 231 reserves an area, a continuous area starting from next_ptr 515 is secured.
  • next_ptr 515 reaches the end address of data buffer 500, the value of next_ptr 515 is changed to the start address of data buffer 500.
  • the data buffer 500 is used as a ring buffer.
  • the method of using the data buffer 500 as a ring buffer is an example, and an area may be secured from the data buffer 500 by other methods.
  • the processor 231 creates management information for the area where the write data is stored, and stores it at the end of the management information queue 510.
  • Management information 520 in FIG. 10 is management information stored in the management information queue 510. This management information 520 is used when the write data on the data buffer 500 is stored in the secondary storage device 234.
  • Management information 520 includes a data pointer 521, a start LBA 522, and a length 523 which are the top addresses on the data buffer 500 in which write data is stored.
  • the data pointer 521 stores the start address of the area secured by the processor 231.
  • the processor 231 After the management information 520 is stored in the management information queue 510, the processor 231 notifies the data transfer device 232 of the address of the reserved area. Then, the data transfer device 232 reads the write data from the server 3 and stores it in the reserved area.
  • the processor 231 stores (moves) the write data stored in the primary storage device 233 in the secondary storage device 234.
  • the processor 231 extracts the management information 520 stored at the head of the management information queue 510 and stores the data (write data) stored in the continuous area starting from the address specified by the data pointer 521 in the secondary storage device 234. Store.
  • the processor 231 converts the start LBA 522 into the address of the write destination area on the secondary storage device 234 by referring to the mapping information described above. Write data is stored at the address derived by this address conversion.
  • the processor 231 deletes the management information 520 from the management information queue 510. Further, the processor 231 adds the value of the Length 523 included in the deleted management information 520 to the tail_ptr 516. As a result, tail_ptr 516 points to the end address of the free area.
  • the trigger for storing (moving) the write data stored in the primary storage device 233 in the secondary storage device 234 is arbitrary.
  • the write data may be stored (moved) in the secondary storage device 234 at a timing independent of the timing at which the storage module 23 returns the response to the I / F device 33.
  • the write data may be stored (moved) in the secondary storage device 234 at the time (or immediately before) when the storage module 23 returns the response to the I / F device 33.
  • the processor 231 may periodically perform a task of moving the write data stored in the primary storage device 233 to the secondary storage device 234. Alternatively, the processor 231 may immediately move the write data stored in the primary storage device 233 to the secondary storage device 234 when the end of processing is reported from the data transfer device 232 to the processor 231.
  • the processor 231 may perform a task of moving the write data to the secondary storage device 234 when a predetermined amount or more of the write data is accumulated in the primary storage device 233.
  • a predetermined amount or more of the write data is accumulated in the primary storage device 233.
  • the primary storage device 233 has N times (N)
  • the write data may be moved to the secondary storage device 234 when an amount of write data corresponding to an integer value equal to or greater than 1 is accumulated.
  • the storage module 23 preferably uses the power of the battery 235 to move all write data in the primary storage device 233 to the secondary storage device 234.
  • the I / F device 33 receives response information from the storage module 23 (S1501).
  • the storage module 23 stores the response information (response 60) in the response queue of the I / F device 33, and further stores the information in the doorbell register of the I / F device 33.
  • the I / F device 33 recognizes that the response 60 is stored in the response queue in response to the information stored in the doorbell register.
  • the response 60 includes a CMD ID 61.
  • CMD ID 61 n (n is an integer value)
  • the I / F device 33 identifies a line in which the value of the CMD ID 801 is equal to the CMD ID 61 (n) of the received response 60 among the lines in the transaction management table 800, and adds 1 to the completion number 802 of the line. (S1503).
  • step S ⁇ b> 1505 the I / F device 33 determines whether the number of completions 802 in the row where the value of the CMD ID 801 is n is two.
  • the completion number 802 is 2, it means that the response 60 with the CMD ID 61 of n has been received twice, that is, the response 60 has been received from the two storage modules 23.
  • the I / F device 33 notifies the processor 31 of the server that the write processing has been completed, and deletes the row in which the value of the CMD ID 801 is n from the transaction management table 800 ( S1506), the process is terminated.
  • the I / F device 33 waits for the response 60 from another storage module 23 (S1507). Then, when the response 60 is received from another storage module 23, the processing is executed again from S1501.
  • the I / F device 33 notifies the processor 31 of the server 3 that the write processing has been completed only when response information from the two storage modules 23 constituting the logical volume is received. . Therefore, when the processor 31 receives the write completion response information, it is guaranteed that the data is securely stored in the two storage modules 23.
  • the server 3 at the time of write processing to the volume, the server 3 simply sends a write command to the plurality of storage modules 23 constituting the volume (or simply gives a write activation instruction), and the storage module 23 can perform data storage processing. Therefore, a process with a heavy load can be offloaded to the storage module 23, and the processing load on the server 3 can be kept low. Further, since the controller 21 does not need to intervene in the write processing of the storage module 23, the load on the controller can be reduced. Write data is stored in the two storage modules 23, and the data transfer device 232 of each storage module 23 performs data transfer from the server 3 to the storage module 23. Therefore, the load is not concentrated only on the specific storage module 23.
  • the processor 31 of the server 3 may transmit a command different from a normal write command to the I / F device 33.
  • the format of this command is the same as that described in the first embodiment, but a command in which a value that is not used in a normal write command or read command is stored in Opcode 51 (hereinafter referred to as “Direct I / O command”). Is used).
  • the processor 31 wants to perform a write process using Direct I / O
  • the processor 31 creates a Direct I / O command and instructs the I / F device 33 to start writing.
  • the I / F device 33 receives a Direct I / O command, a write process using Direct I / O is performed.
  • the I / F device 33 may determine whether or not the write destination area specified by the Direct I / O command is within the range of the area registered in the Direct I / O volume table 400. You don't have to.
  • the server 3 when it is desired to perform a write process using Direct I / O, the server 3 creates a Direct I / O command as in the first modification.
  • the format of the Direct I / O command is the same as that described in FIG. 9 except that the start LBA 54 is not included in the command.
  • the storage module 23 includes the data buffer 500, next_ptr 515, and tail_ptr 516 in the primary storage device 233, which is the same as that described in the first embodiment. However, in the case of the modification 2, the management information queue 510 and the management information 520 do not exist. In the second modification, the storage module 23 has a terminal LBA 517.
  • the processing when the storage module 23 stores the write data from the I / F device 33 in the primary storage device 233 is the same as that described in the first embodiment except that the management information 520 is not created. That is, write data is stored sequentially from the top of the data buffer 500.
  • the storage module 23 When the storage module 23 stores the write data stored in the data buffer 500 in the secondary storage device 234, the storage module 23 sequentially stores the write data from the top area of the PDEV space (area where the LBA is 0). After the write data is stored, the address (LBA on the PDEV space) where the write data was written last is recorded in the terminal LBA 517. Thereafter, when the process of storing the write data in the secondary storage device 234 is performed, the write data is sequentially stored from the area whose address is (1 + terminal LBA 517).
  • the storage module 23 When storing the data in the data buffer 500 in the secondary storage device 234, the storage module 23 stores data of a predetermined size (assuming this size is m) from the address specified by tail_ptr 516 in the secondary storage device 234. To do. After storing the data, m is added to tail_ptr 516. The value of m does not have to be the same as the Length 55 included in the command 50 transmitted from the I / F device 33, and the storage module 23 may determine it independently.
  • the storage module 23 does not need to have management information 520 for each write data, the processing overhead at the time of data storage can be reduced, and as a result, the access latency to the logical volume is shortened.
  • the I / O tendency to the logical volume is centered on sequential write.
  • the shorter the response time required to store the Redo Log the better. Therefore, the computer system according to the modified example is suitable for an application in which most I / O requests are sequential write and low access latency is required, such as a log write application.
  • the storage module 23 may be provided with a function for creating a backup copy of data in the storage module 23. An example will be described below.
  • the storage module 23 divides and manages the area of the secondary storage device 234 into two (hereinafter, the areas divided into two are referred to as “area A” and “area B”).
  • area A the areas divided into two are referred to as “area A” and “area B”.
  • the flash memory chips constituting the area A and the flash memory chips constituting the area B may be different flash memory chips.
  • the write data is duplicated by storing the write data in both the area A and the area B.
  • duplication of write data may be performed asynchronously.
  • Area B is used as a backup for area A.
  • the storage module 23 reads and transmits the data in the area A at normal times. If a failure occurs in the area A and the access becomes impossible, the storage module 23 reads and transmits the data in the area B. By configuring the storage module 23 in this way, the risk of data loss can be reduced.
  • the storage module 23 stores the write data in the area B
  • compression may be performed.
  • the size of the region B can be made smaller than that of the region A.
  • the compression may be performed by causing the processor 231 of the storage module 23 to execute a program that executes some compression algorithm, or dedicated hardware that performs compression processing may be provided in the storage module 23.
  • the area A may also be compressed.
  • the data in the storage module 23 may be compressed, and the data in the storage module 23 may be encrypted to ensure security.
  • the write data stored in the storage module 23 may be copied (backed up) to the drive 22.
  • the controller 21 since the controller 21 can issue a command to the storage module 23 to access the PDEV space area, the controller 21 reads the data stored in the storage module 23 and replicates it to the drive 22. can do.
  • the storage module 23 has a so-called snapshot function. If there is a snapshot function, an image (snapshot image) of a PDEV space at a specific time can be backed up.
  • An example of the snapshot function is disclosed in, for example, Patent Document 2, and thus the description of the snapshot function is omitted in this example.
  • the storage module 23 supports a command for instructing creation of a snapshot (referred to as a snapshot command).
  • a snapshot command When receiving a snapshot command from the initiator device, the storage module 23 creates a virtual volume (snapshot volume) in which the snapshot image is stored.
  • the storage module 23 according to the fourth embodiment also supports a command for reading snapshot volume data (referred to as a snapshot read command).
  • a snapshot read command When the snapshot read command is received from the initiator device, the storage module 23 returns the snapshot volume data to the initiator device.
  • the controller 21 When performing backup, the controller 21 first issues a snapshot command to the storage module 23. Thereafter, the controller 21 issues a snapshot read command to the storage module 23 to read the snapshot image and store it in the drive 22 or logical volume. As a result, the storage apparatus 2 can acquire and save the backup data of the storage module 23.
  • the backup may be started when the administrator of the storage apparatus 2 issues a backup instruction from the management apparatus 4 to the storage apparatus 2, or the backup instruction is issued from the server 3 to the storage apparatus 2. You may start with that. Further, the storage apparatus 2 may perform backup periodically.
  • the storage apparatus 2 is configured to form a storage hierarchy using a plurality of drives 22 and a storage module 23 and to manage the hierarchy of data.
  • data corresponding to a specific condition such as data with low access frequency or data after a certain period of time
  • the capacity of the storage module 23 can be prevented from being exhausted, and the capacity of the storage module 23 can be used effectively.
  • the processor 31 of the server 3 generates data to be written to the logical volume, stores it in the memory 32 (S1), calculates a check code (CRC) from the data, and stores it in the memory 32 (S1-1). Thereafter, the processor 31 issues a write activation instruction to the storage modules (23-1, 23-2).
  • the storage modules (23-1, 23-2) read the data and the check code, and check the data using the check code (S4-1, S4-2).
  • each storage module 23 generates a check code from the data, and compares the generated check code with the check code read from the memory 32 to determine whether the data is broken. If both are the same, it can be said that the data is not broken in the process of data transfer between the server 3 and the storage module 23.
  • the check code may include information indicating a data storage position such as a data write destination address.
  • the processor 31 notifies each storage module 23 of the address (hereinafter referred to as an “expected value”) at the time of start of writing.
  • Each storage module 23 may read the data and the check code from the memory 32 and then check the address based on the notified expected value to check whether the read address is correct.
  • FIG. 15 shows a processing flow in that case.
  • the processor 31 requests the I / F device 33 to generate a check code instead of generating a check code by itself (S1-1). Accordingly, the I / F device 33 generates a check code from the data to be written to the logical volume and stores it in the memory 32 (S1-2), and then notifies the processor 31 that the generation has been completed (S1-3). ).
  • Other processes are the same as those in FIG.
  • the storage module 23 may perform a data check using a check code, and then store the check code together with the data in the primary storage device 233 or the secondary storage device 234. Alternatively, the storage module 23 may delete the check code. Alternatively, the storage module 23 may discard the check code read from the memory 32 and generate a new check code.
  • data transfer may occur inside the storage module 23.
  • reclamation or the like which is a process for reusing a used part once, is performed, so that the components in the storage module 23 Data transfer occurs.
  • check code generation, transfer data check, check code deletion, and the like may be performed in an arbitrary combination.
  • check code generation, transfer data check, deletion, etc. may be performed in any combination. Good.
  • the transfer data may be checked using a check code between the two.
  • FIG. 16 illustrates a hardware configuration of the computer system 1 ′ according to the second embodiment.
  • the storage apparatus 2 ′ does not have the controller 21.
  • the I / F device 33 ′ is different from that described in the first embodiment. Specifically, the I / F device 33 ′ includes a switch 331 and a drive interface 215 ′ (hereinafter abbreviated as “Drive IF 215 ′).
  • the switch 331 is a PCIe switch and is a component for connecting the storage module 23 and the drive IF 215 ′ to the processor 31.
  • a plurality of storage modules 23 and a plurality of Drive IFs 215 ′ are connected to the switch 331 via a PCI Express link.
  • the Drive IF 215 ' is a component having the same function as the BEIF 215 in the computer system according to the first embodiment, and includes an interface controller that performs PCIe and SAS protocol conversion. However, unlike the first embodiment, the Drive IF 215 ′ is used to connect the processor 31 and the drive 22. It is not essential that the switch 331 and the Drive IF 215 'are mounted as a single hardware (chip). The switch 331 and the Drive IF 215 'may be mounted on the server 3' as different hardware.
  • a program executed by the server 3 'according to the second embodiment will be described with reference to FIG.
  • the processor 31 of the server 3 ′ executes a hypervisor 3001 that is a program for forming one or more virtual machines (VMs) on the server 3 ′.
  • VMs virtual machines
  • the hypervisor 3001 creates one or more virtualized memories and one or more virtualized processors by virtualizing the processor 31 and the memory 32 that are physical resources in the server 3 ′.
  • the virtualized memory is referred to as “virtualized memory”
  • the virtualized processor is referred to as “virtualized CPU”.
  • the hypervisor 3001 creates one or more virtual machines using a virtual memory and a virtual CPU. As is well known, the hypervisor 3001 also performs virtualization of peripheral hardware other than the processor and the memory.
  • the server 3 ′ at least four virtual machines are formed by the hypervisor 3001.
  • the first virtual machine is a virtual machine for executing an AP used by a user for business, an OS for controlling the execution of the AP, and the like. That is, the first virtual machine performs processing equivalent to that of the server 3 in the first embodiment.
  • this virtual machine is referred to as “server OS 3003”.
  • the second and third virtual machines perform processing substantially equivalent to that of the controller 21 in the first embodiment, and in the present embodiment, this virtual machine is referred to as “storage OS 3002”.
  • storage OS 3002 In the virtual CPU of the storage OS 3002, a program (a program for processing a command from the server 3) executed by the processor 211 of the controller 21 in the first embodiment is executed.
  • two storage OSs 3002 operate on the server 3 ′.
  • only one storage OS 3002 may operate on the server 3 '.
  • a part of the virtual memory of the storage OS 3002 is used as a cache area for storing write data from the server 3 ′, similar to the memory 212 of the controller 21 in the first embodiment. Therefore, the set of the storage device 2 ′ and the storage OS 3002 according to the second embodiment has substantially the same function as the storage device 2 according to the first embodiment.
  • the fourth virtual machine is a virtual machine for processing commands received from the server OS 3003 and the storage OS 3002, and has the same function as the I / F device 33 in the first embodiment.
  • this virtual machine is called an interface module 3004 (or IF module 3004).
  • the IF module 3004 includes a Direct I / O volume table 400, a module address table 450, and a transaction management table 800, like the I / F device 33 according to the first embodiment.
  • Information set in the Direct I / O volume table 400 and the module address table 450 is notified from the controller 21 in the computer system according to the first embodiment, but from the storage OS 3002 in the case of the computer system according to the second embodiment. Be notified.
  • the IF module 3004 executes the same processing as that of the I / F device 33 in the first embodiment. Specifically, when the IF module 3004 acquires a write command from the server OS 3003, the IF module 3004 performs processing equivalent to the processing described in FIG. If the write destination area specified by the write command is an area registered in the Direct I / O volume table 400, the IF module 3004 directly sends the write command to the two storage modules 23; The write command is transmitted to the storage OS 3002 (the controller equivalent of the first embodiment).
  • the IF module 3004 may directly send a write command to the two storage modules 23.
  • the IF module 3004 After the IF module 3004 transmits a write command directly to the two storage modules 23, it receives a response from the two storage modules 23.
  • the processing at this time is the same as the processing in FIG. That is, the IF module 3004 confirms that the responses have been received from the two storage modules 23 using the transaction management table 800 in the same manner as the I / F device 33 in the first embodiment, and then sends a write command to the server OS 3003. Return a response to the effect that the process has been completed.
  • the storage OS 3002 forms a logical volume from a plurality of drives 22 and a plurality of storage modules, like the controller 21 in the first embodiment.
  • the logical volume management table 200 described in the first embodiment is also included.
  • the storage OS 3002 receives a write command from the IF module 3004, an area for storing write data is secured on the virtual memory of the storage OS 3002 as in the controller 21 in the first embodiment.
  • the storage OS 3002 acquires write data from the memory of the server OS 3003 and stores it in the reserved area.
  • the storage OS 3002 writes the write data stored in the area to the drive 22 via the Drive IF 215 '.
  • the above is the description of the computer system according to the second embodiment.
  • the computer system according to the first embodiment can directly send a write command to a plurality of storage modules to cause each storage module to perform a write data storage process.
  • control hardware such as a storage controller is unnecessary, so that the manufacturing cost of hardware can be suppressed.
  • the configuration of the computer system is not limited to the configuration example described above.
  • the I / F device 33 exists in the server 3, but the I / F device 33 may be arranged on the data transfer path between the server 3 and the storage device 2.
  • the mounting position is not necessarily limited to the server 3.
  • the I / F device 33 may be mounted on any one of the controllers 21.
  • the storage module 23 is used as a storage device (final storage medium) constituting a logical volume.
  • the storage module 23 can also be used for cache purposes.
  • Write data from the server is temporarily stored not in the memory 212 but in the storage module 23, and after a while, the storage controller moves the write data stored in the storage module 23 to a logical volume configured by the drive 22 (decoding). (Stage) is also possible.
  • the virtual computer technology is used to implement functions equivalent to those of the I / F device and the controller in the first embodiment using the virtual computer, but the virtual computer technology is not essential.
  • Functions equivalent to those of the I / F device and the controller may be implemented in the form of a device driver or the like.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本発明の一態様である計算機システムは、複数の記憶デバイスを有するストレージ装置と、プロセッサとインタフェースデバイスを有するサーバを含む。インタフェースデバイスはプロセッサからライトコマンドを受領すると、このライトコマンドでライト対象とされている複数の記憶デバイスに対して直接ライトデータの格納を指示する。指示を受けた複数の記憶デバイスは、サーバのメモリからライトデータを読み出して記憶デバイスに格納する。インタフェースデバイスは、複数の記憶デバイスからレスポンスを受領した時点で、プロセッサに対してライト処理の完了を通知する。

Description

計算機システム
 本発明は、計算機システムのデータ転送技術に関する。
 ITの進歩やインターネットの普及などにより、企業等における計算機システムが扱うデータ量は増加を続けており、データを格納するストレージ装置に対しても、高い性能が要求されている。
 従来から、データアクセス性能の向上のために、様々な技術が導入されてきた。一つにはDMA(Direct Memory Access)が挙げられる。ホスト計算機及び/またはストレージ装置にDMAエンジンを設け、データ転送処理をホスト計算機あるいはストレージ装置のCPUに代えてDMAエンジンに行わせるようにする。これにより、ホスト計算機あるいはストレージ装置のCPUのオーバヘッドを削減でき、結果としてシステムの性能を向上させることができる。たとえば特許文献1では、複数のストレージモジュールを有するストレージアプライアンスと、クライアント間のデータ転送(リードまたはライト)技術が開示されている。特許文献1には、クライアントがコマンドをストレージアプライアンスのコントロールモジュールに書き込むと、コントロールモジュールは書き込まれたコマンドをもとに、DMAエンジンに、ホストのメモリにあるアクセス対象データを、ストレージモジュールの記憶領域に転送させる技術が開示されている。
米国特許第8407377号明細書 米国特許第7237076号明細書
 高い信頼性が求められる計算機システムでは、装置障害時のデータロストを防ぐため、データは複数の記憶デバイスに格納される。特許文献1に開示のシステムにおいて、1つのデータを複数(たとえば2つ)の記憶デバイスに格納する場合、DMAエンジンあるいはDMAからデータ転送指示を受けるスイッチが、2つの記憶デバイスに対してデータ転送を行う必要が出る。つまり特許文献1に開示の技術では、1単位のデータを格納するために、DMAエンジン等のデータ転送手段は2単位分のデータ転送処理を行わなければならず、データ転送手段の負担が大きい。
 本発明の一態様である計算機システムは、複数の記憶デバイスを有するストレージ装置と、プロセッサとインタフェースデバイスを有するサーバを含む。インタフェースデバイスはプロセッサからライトコマンドを受領すると、このライトコマンドでライト対象とされている複数の記憶デバイスに対して直接ライトデータの格納を指示する。指示を受けた複数の記憶デバイスは、サーバのメモリからライトデータを読み出して記憶デバイスに格納する。インタフェースデバイスは、複数の記憶デバイスからレスポンスを受領した時点で、プロセッサに対してライト処理の完了を通知する。
 本発明により、ライト処理時にホストの処理負荷を低減することができる。
実施例1に係る計算機システムの構成例である。 ストレージモジュールの構成例である。 I/F装置の構成例である。 論理ボリューム管理テーブルの例である。 Direct I/O処理の全体の流れの説明図である。 Direct I/Oボリュームテーブルの例である。 モジュールアドレステーブルの例である。 I/F装置で実施されるライト起動処理のフローチャートである。 コマンドとレスポンスのフォーマットの例である。 ストレージモジュール内のライトデータ格納領域と管理情報の構成例である。 トランザクション管理テーブルの例である。 I/F装置がレスポンス受領時に実施する処理のフローチャートである。 変形例2における、ストレージモジュール内のライトデータ格納領域と管理情報の構成例である。 変形例6における、Direct I/O処理の全体の流れの説明図である。 変形例6における、Direct I/O処理の全体の流れの説明図(2)である。 実施例2に係る計算機システムの構成例である。 サーバで実行されるプログラムの説明図である。
 以下、本発明の実施例について、図面を用いて説明する。なお、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、また実施例の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
 また、以後の説明では「プログラム」を主語として説明を行う場合があるが、実際にはプログラムはプロセッサによって実行されることで、定められた処理が行われる。ただし説明が冗長になることを防ぐため、プログラムを主語として説明することがある。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各装置にインストールされてもよい。記憶メディアとしては、例えば、ICカード、SDカード、DVD等であってもよい。
 図1は、実施例1に係る計算機システム1の構成を示す。計算機システム1は、サーバ3、ストレージ装置2そして管理装置4を有する。サーバ3は、ユーザが業務などで使用するアプリケーションプログラム(AP)を実行する装置である。ストレージ装置2は、サーバ3が使用するデータを格納するためのボリューム(論理ボリューム)を提供する装置である。図1では2台のサーバ3がストレージ装置2に接続されている構成が示されているが、サーバ3の台数は1台でも良い。あるいはサーバ3が3台以上あってもよい。
 サーバ3は少なくとも、プロセッサ31、メモリ32、インタフェース装置(I/F装置)33を有する。またこれ以外に、たとえばサーバ3をLAN(Local Area Network)に接続するためのNIC(Network Interface Controller)、キーボードやディスプレイ等の入出力デバイス等を有していてもよい、
 プロセッサ31は、ユーザが業務などで使用するAPや、オペレーティングシステム(OS)を実行する。図ではプロセッサ31は1つだけ記載されているが、複数のプロセッサ31が存在してもよい。またプロセッサ31がマルチコアプロセッサであってもよい。
 メモリ32はプロセッサ31の主記憶として用いられる。プロセッサ31がプログラムを実行する際、メモリ32にプログラム及びデータがロードされ、プロセッサ31はメモリ32からプログラムを読み出して実行する。
 I/F装置33は、サーバ3とストレージ装置2間のデータ転送の制御を行うためのコンポーネントである。サーバ3のプロセッサ31がストレージ装置2のボリュームにアクセスする時、I/F装置33にコマンドを発行する。
 プロセッサ31と周辺機器(I/F装置33等)との通信インタフェースには、様々なインタフェースを採用可能であるが、本実施例では、PCI Express(以下PCIeと略記する)が用いられる例を説明する。プロセッサ31とI/F装置33は、PCI Expressリンクで接続され、プロセッサ31とI/F装置33との間では、PCIe規格に従う通信が行われる。また、その他の周辺機器、たとえばNIC(非図示)なども、プロセッサ31とPCI Expressリンクで接続される。また本実施例に係る計算機システム1では、I/F装置33とストレージ装置2(のコントローラ)もPCI Expressリンクで接続される。
 ストレージ装置2は、1以上のストレージコントローラ(以下、「コントローラ」または「CTL」と呼ぶこともある)21、複数のドライブ22、複数のストレージモジュール23を有する。CTL21はストレージ装置2の制御用ハードウェアで、サーバ3から到来するデータアクセス要求(リードコマンド、ライトコマンド等)の処理を行う。実施例1では、ストレージ装置2が2つのコントローラ21(21-0、21-1)を有する構成について説明する。ただしストレージ装置2が、2より多くのコントローラ21を有していてもよい。
 CTL21の内部構成について説明する。CTL21は、プロセッサ211、メモリ212、スイッチ214、バックエンドインタフェース(BEIF)215を有する。プロセッサ211は、サーバ3からのI/O要求の処理を行う。実施例1に係るストレージ装置2では、サーバ3からのI/O要求の処理等を行うためのプログラムがプロセッサ211で実行されることで、プロセッサ211は、サーバ3からリード要求のあったデータをドライブ22から読み出してサーバ3に返送する処理、あるいはサーバ3からライト要求のあったデータをドライブ22に書き込む処理等を行う。
 メモリ212は、プロセッサ211が使用するプログラムや制御情報を格納するための記憶媒体である。メモリ212には一般に、アクセス性能の高い記憶素子、たとえばDRAMが用いられる。ただしDRAM以外の記憶素子が用いられてもよい。またメモリ212は、サーバ3からのライトデータあるいはドライブ22から読み出されたデータを一時的に格納するキャッシュメモリとしても用いられる。以下では、メモリ212の領域のうち、キャッシュメモリとして用いられる領域のことを、「キャッシュ領域」と呼ぶ。
 スイッチ214は、サーバ3のI/F装置33や後述するストレージモジュール23等のコンポーネントと、プロセッサ211とを接続するためのコンポーネントである。本実施例に係るストレージ装置2では、スイッチ214はPCIeスイッチであり、プロセッサ211と、I/F装置33またはBEIF215との間では、PCIe規格に従う通信が行われる。また、CTL21-0のプロセッサ211とCTL21-1のプロセッサ211同士も、スイッチ214を介して接続される。これにより、CTL21-0のプロセッサ211とCTL21-1のプロセッサ211は、相互に通信可能である。
 BEIF215は、CTL21とドライブ22とを接続するためのインタフェースである。本実施例に係る計算機システムでは、ドライブ22がSAS(Serial Attached SCSI)規格に従う記憶デバイスとする。その場合、BEIF215はSASインタフェースコントローラを含んでおり、BEIF215ではPCIeとSASのプロトコル変換が行われる。
 ドライブ22は、サーバ3からのライトデータを格納するための、不揮発性の記憶デバイスであり、例えば従来からあるHDD(Hard Disk Drive)またはSSD(Solid State Drive)が用いられる。各ドライブ22は、SASリンクを介して、BEIF215に接続される。各ドライブ22は、2つのインタフェースを有する。一方のインタフェースは、コントローラ21-0のBEIF215に接続され、もう一方のインタフェースは、コントローラ21-1のBEIF215に接続される。これにより、CTL21-0とCTL21-1の両方が、各ドライブ22に対してアクセス(リードまたはライト)可能になる。
 各ドライブ22はCTL21に対して、1つの記憶空間を提供している。CTL21はこの記憶空間上のアドレス(LBA)を指定したコマンド(リードコマンド、ライトコマンド等)をドライブ22に発行することで、ドライブ22に対してデータのリード・ライトが可能である。
 ストレージモジュール23もドライブ22と同様、サーバ3からのライトデータを格納するために用いられる記憶デバイスである。本実施例では、ドライブ22とストレージモジュール23のことを総称して「記憶デバイス」と呼ぶ。各ストレージモジュール23は2つのCTL21に接続される。ただしストレージモジュール23は、BEIF215ではなく、PCI Expressリンクを介して、各CTL21のスイッチ214に接続される。そのため、ストレージモジュール23には、CTL21からコマンドを発行することもできるが、サーバ3のI/F装置33からもコマンドを発行することができる。
 管理装置4は、ストレージ装置2の設定を行うための計算機で、コントローラ21にPCI Expressリンクで接続される。ただしコントローラ21にNICを設け、管理装置4とコントローラ21の間をイーサネットで接続してもよい。管理装置4では、ストレージ装置2の設定を行うためのプログラムが実行され、ストレージ装置2のユーザ(管理者)にGUIまたはCLIが提供される。管理者はGUIを用いて、後述する論理ボリュームの定義などを行う。
 図2を用いて、ストレージモジュール23のハードウェア構成を説明する。ストレージモジュール23は、プロセッサ231、データ転送装置232、一次記憶装置233、二次記憶装置234、バッテリ235を有する。プロセッサ231は、ストレージモジュール23の制御を行うためのプログラムを実行するコンポーネントである。プロセッサ231は主として、一次記憶装置233や二次記憶装置234の記憶領域管理を実施する。
 データ転送装置232は、外部装置(サーバ3等)とのデータ転送を行うコンポーネントである。データ転送装置232は外部装置からのデータ転送指示を受信するためのトリガレジスタを含む。
 なお、ストレージモジュール23の実装形態は、上で説明した以外の形態でもよい。たとえばプロセッサ231の代わりに、ASICを用いて実装されてもよい。またプロセッサ231とデータ転送装置232が同一ハードウェアとして実装されてもよい。
 一次記憶装置233と二次記憶装置234は、主としてサーバ3等からのライトデータを記憶するために用いられる。一次記憶装置233の記憶領域にはDRAM等の揮発性記憶媒体が用いられ、二次記憶装置234の記憶領域にはフラッシュメモリ等の不揮発性記憶媒体が用いられている。サーバ3等からのライトデータは一旦、一次記憶装置233に格納される。一次記憶装置233に格納されたライトデータは、任意のタイミングで二次記憶装置234に移動される。また、一次記憶装置233の一部領域は、外部装置から受信するコマンドを格納するコマンドキューとして用いられる。
 バッテリ235は、ストレージ装置2への給電が停止した場合、一次記憶装置233の記憶領域に格納されている内容を保持するために設けられている。ストレージ装置2には外部電源(非図示)が接続されており、ストレージ装置2及びストレージモジュール23は通常時には、外部電源から供給される電力を用いて稼働する。停電等によって外部電源からの電力供給が途絶えた場合、ストレージモジュール23は、電力供給源を外部電源からバッテリ235に切り替え、一次記憶装置233の記憶領域に格納されている内容が消失しないようにする。
 ストレージモジュール23は、イニシエータデバイス(本実施例では、CTL21またはI/F装置33がイニシエータデバイスとなる)に対し、1つの記憶空間を提供する。この記憶空間を本明細書では「PDEV空間」と呼ぶ。イニシエータデバイスはストレージモジュール23に対し、このPDEV空間上のアドレス(LBA)を指定したコマンドを発行することで、ストレージモジュール23へのデータリードまたはデータライトが可能である。
 ストレージモジュール23はPDEV空間上の各領域に、二次記憶装置234の領域をマップする。PDEV空間上の領域と、この領域にマップされる二次記憶装置234の領域との対応関係の情報をマッピング情報と呼ぶ。ストレージモジュール23は、このマッピング情報を一次記憶装置233等に格納して管理している。プロセッサ231が二次記憶装置234にデータをリード・ライトする時、マッピング情報を参照することで、リード・ライト先の二次記憶装置234上領域を特定する。なお、このマッピングは静的なマッピングでも良いし、動的なマッピングでも良い。二次記憶装置234の記憶媒体として、フラッシュメモリのような、再書き込み不可の記憶媒体が用いられる場合には、動的なマッピングが用いられる。動的なマッピングが用いられる場合、プロセッサ231は、たとえばイニシエータデバイスからライトコマンドを受領したことを契機に、ライト対象のPDEV空間上の領域に二次記憶装置234の未使用記憶領域をマッピングする。
 ストレージモジュール23へのコマンド発行方法の具体例は後述するが、イニシエータデバイスはストレージモジュール23とPCIeリンクで接続され、またストレージモジュール23内のコマンドキューやトリガレジスタ等は、PCIe空間にマッピングされているため、イニシエータデバイスはPCIe規格に従ったアクセスリクエスト(Write)を用いることで、ストレージモジュール23にコマンドやデータ転送指示を送信できる。また、ストレージモジュール23がPCIe規格に従ったアクセスリクエスト(Read)を送信することで、たとえばI/F装置33等のイニシエータデバイスから情報(コマンド等)を読み出すこともできる。
 続いてI/F装置について説明する。I/F装置33は、サーバ3のプロセッサ31がストレージ装置2に対して発行するコマンド(リードコマンド、ライトコマンド等)を受信し、コントローラ21に送信する機能を有する。I/F装置33はまた、サーバ3からのライトデータをストレージ装置2に送信する、またはストレージ装置2内のデータをサーバ3のメモリ32に転送する機能を有する。さらにI/F装置33は、ストレージモジュール23(正確にはデータ転送装置232)に対し、データ転送を行わせることもできる。
 I/F装置33の構成例を、図3を用いて説明する。I/F装置33はプロセッサ341、メモリ342、データ転送装置343を有する。プロセッサ341はI/F装置33の制御を行うための制御プログラムを実行するコンポーネントである。制御プログラムとは具体的には、サーバ3からのコマンドを解釈し、コマンドの内容に応じて適切な処理を行うものである。
 メモリ342は、プロセッサ341が実行する制御プログラムを格納する記憶領域である。またメモリ342は、サーバ3からのコマンドを格納するコマンドキューと、サーバ3がI/F装置33にライト処理の開始(ライト起動)を指示するために用いられるトリガレジスタ、ストレージ装置2(またはストレージモジュール23)からのレスポンスを格納するレスポンスキュー、ドアベルレジスタを含む。なお、ライトの処理にコマンドを格納するコマンドキュー、ドアベルレジスタを利用しても良い。データ転送装置343は、サーバ3とストレージ装置2間のデータ転送を司るコンポーネントである。具体的にはサーバ3のメモリ32上のデータをコントローラ21に転送する、またはコマンドをコントローラ21に送信する処理を行う。
 メモリ342のうち、少なくとも一部(たとえばコマンドキューやドアベルレジスタ等)または全部は、PCIe空間のアドレスにマッピングされている。これにより、プロセッサ31(またはプロセッサ31に内蔵されたルートコンプレックス)は、PCIeの空間上のアドレスを指定した入出力要求を発行することで、メモリ342へ直接コマンドを格納できる。また、コントローラ21のプロセッサ211及びストレージモジュール23も、PCIe空間にマッピングされたメモリ342の領域に、直接アクセスすることができる。
 さらに、ストレージモジュール23の一次記憶装置233の一部または全体、そしてデータ転送装置232に対してデータ転送処理の開始などを指示するためのレジスタも、PCIe空間のアドレスにマッピングされている。これにより、I/F装置33がストレージモジュール23に直接、データ転送処理の開始指示等を送信することが可能になっている。
 また、サーバ3のメモリ32の少なくとも一部(ライトデータを格納する領域等)も、PCIeで接続されたデバイスからアクセス可能に構成されている。そのためたとえばストレージモジュール23がPCIe規格に従ったアクセスリクエストを送信することで、メモリ32からデータを取得することも可能である。これを使用して、本実施例に係るストレージモジュール23のデータ転送装置232は、サーバ3のメモリ32に格納されたライトデータを、プロセッサ31非介在でメモリ32から読み出して、ストレージモジュール23に格納することができる。詳細は後述する。
 I/F装置33の実装形態は、上で説明した以外の形態でもよい。たとえばプロセッサ341とデータ転送装置343が同一ハードウェアとして実装されてもよい。またプロセッサ341に代えて、ASICを用いて実装されてもよい。
 続いて、ストレージ装置2がサーバ3に提供するボリュームの説明を行う。ストレージ装置2は、1以上の論理ボリュームを形成し、サーバ3に提供する。論理ボリュームは、1以上のドライブ22の記憶領域で構成されるものもあれば、1以上のストレージモジュール23の記憶領域から構成されるものもある。
 本実施例に係るストレージ装置2は、RAID技術を用いて、複数のドライブ22から1つの論理的な記憶領域を定義(形成)する。ここで定義される1つの論理的な記憶領域が、論理ボリュームとして扱われる。ストレージ装置2は同様に、RAID技術を用いて、複数のストレージモジュール23から1つの論理的な記憶領域を定義する。複数のストレージモジュール23から定義される1つの論理的な記憶領域も、論理ボリュームとして扱われる。
 各論理ボリュームには、ストレージ装置2内で一意な識別子がアサインされる。本実施例に係るストレージ装置2では、この識別子に非負の整数値が用いられ、この識別子のことを論理デバイス番号(LDEV#とも呼ばれる。また論理ボリューム番号とも呼ばれることもある)と呼ぶ。またサーバ3が論理ボリュームにアクセスする場合、論理ボリュームを一意に特定する情報として、論理ユニット番号(LUNとも呼ばれる)を含むコマンドをストレージ装置2に対して送信する。そのため論理ボリュームにはLUNもアサインされている。
 ストレージ装置2は、各ドライブ22及び各ストレージモジュール23を一意に特定するため、各ドライブ22及び各ストレージモジュール23にも一意な識別子を割り当てて管理している。この識別子のことを物理デバイス番号(PDEV#)と呼ぶ。PDEV#にも非負の整数値が用いられる。
 コントローラ21は、論理ボリュームとドライブ22(またはストレージモジュール23)とのマッピングを管理するための情報を有する。この情報を論理ボリューム管理テーブルと呼ぶ。図4に論理ボリューム管理テーブル200の例を示す。
 論理ボリューム管理テーブル200は、ストレージ装置2で形成された各論理ボリュームについて、LDEV#201、LUN202、PDEV type203、PDEV#204、RAID Level205、Capacity206、Owner MP#207、Direct I/O Flag208、LBA Range209の情報を格納するためのテーブルである。
 LDEV#201には、論理ボリュームにアサインされた論理デバイス番号が格納され、LUN202には、論理ボリュームにアサインされたLUNが格納される。LDEV#201とLUN202には、同一値が格納されてもよいし、異なる値が格納されてもよい。
 PDEV#203には、論理ボリュームを構成しているドライブ22(またはストレージモジュール23)のPDEV#が格納される。1論理ボリュームは複数のドライブ(またはストレージモジュール23)で構成されるので、PDEV#203には複数の値(PDEV#)が格納される。
 PDEV type203には、論理ボリュームを構成している記憶デバイスが、ドライブ22であるかストレージモジュール23であるかを識別するための情報が格納される。PDEV type203に“1”が格納されている場合には、論理ボリュームを構成している記憶デバイスがドライブ22であることを表す。PDEV type203に“2”が格納されている場合には、論理ボリュームを構成している記憶デバイスがストレージモジュール23であることを意味する。
 RAID Level205には、論理ボリュームを構成する複数の記憶デバイスに適用されているRAIDレベルの情報が格納される。RAIDレベルとは、RAID技術におけるデータ冗長化方式を表すもので、一般的にはRAID1~RAID6のRAIDレベルがある。また、RAID1+0のように、複数のデータ冗長化方式を組み合わせた方式も定義可能である。
 Capacity206には、論理ボリュームの容量が格納される。
 Owner MP#207には、論理ボリュームに対する処理を担当するコントローラ21の情報が格納される。本実施例に係るストレージ装置2は、2つのコントローラ21を有するが、1つの論理ボリュームに対する処理、具体的にはサーバ3から到来するコマンドに係る処理を行うコントローラ21は、いずれか一方のコントローラ21が実施する。論理ボリュームに対する処理を担当するコントローラ21は「オーナ」と呼ばれる。
 オーナは論理ボリューム毎に定められている。ある論理ボリュームのOwner MP#207に“0”が格納されている場合、その論理ボリュームに対する処理は、コントローラ21-0によって行われる。一方ある論理ボリュームのOwner MP#207に“1”が格納されている場合、その論理ボリュームに対する処理は、コントローラ21-1によって行われる。Owner MP#207に“1”が格納されている論理ボリュームに対するコマンドを、コントローラ21-0が受信した場合には、コントローラ21-0は、受信したコマンドをコントローラ21-1に転送し、コントローラ21-1に処理を行わせる。一方のコントローラ21(たとえばコントローラ21-0)が障害などの理由で停止した場合には、残りのコントローラ21-1が、全論理ボリュームに対する処理を担当する。
 Direct I/O Flag208は、論理ボリュームに対するライト処理を、コントローラ21非介在で実施するか否かを表す情報である。これについては後述する。
 ストレージ装置2の管理者が管理装置4を用いて論理ボリュームの形成指示をストレージ装置2に発行することで、ストレージ装置2のコントローラ21は論理ボリュームの形成を行う。論理ボリュームが形成される時、コントローラ21は論理ボリューム管理テーブル200に、上で説明した各種情報を格納する。また、管理装置4に代えて、サーバ3で論理ボリュームの形成指示を実施するためのプログラムを実行させ、サーバ3からストレージ装置2に論理ボリュームの形成指示を発行してもよい。
 また論理ボリューム管理テーブル200は、コントローラ21-0のメモリ212と、コントローラ21-0のメモリ212の両方に格納される。原則として両メモリ212に格納される情報の内容は同一に維持される。
 サーバ3が論理ボリューム(この論理ボリュームをVolAと呼ぶ)に対するライトコマンドを発行した時に、コントローラ21が実行する処理の流れを説明する。以下では、サーバ3がVolAのオーナであるコントローラ21に対してライトコマンドを発行した場合について説明する。以下の説明では、VolAのオーナであるコントローラ21のことを「オーナコントローラ」と呼び、VolAのオーナであるコントローラ21は、「非オーナコントローラ」と呼ばれる。
 ライトコマンドを受領したオーナコントローラのプロセッサ211は、オーナコントローラのキャッシュ領域(メモリ212上)にライトデータを格納するための領域を確保する。確保された領域のアドレス情報は、I/F装置33のデータ転送装置343に通知される。通知方法には様々な方法を採用可能である。また、オーナコントローラのプロセッサ211は併せて、非オーナコントローラに対し、非オーナコントローラのキャッシュ領域にもライトデータを格納するための領域を確保させる。非オーナコントローラのキャッシュ領域に確保された領域のアドレスは、データ転送装置343に通知されなくてよい。
 I/F装置33のデータ転送装置343は、通知されたアドレス(オーナコントローラのメモリ212上アドレス)に対してライトデータを転送する。ライトデータがオーナコントローラのメモリ212に格納された後、オーナコントローラは非オーナコントローラのメモリ212にライトデータの複製を格納する。ライトデータの複製の格納が完了すると、データ転送装置343はサーバ3にライト処理が完了した旨のレスポンスを返却する。キャッシュ領域に格納されたデータは、しばらく後にオーナコントローラによって、論理ボリュームを構成する記憶デバイス(ドライブ22またはストレージモジュール23)に反映される。キャッシュ領域のデータをドライブ22に反映する処理のことは「デステージ」と呼ばれる。
 なお、上で説明した処理の流れは、コントローラ21がサーバ3からライトコマンドを受領したことに応じて、コントローラ21がライト処理を行う場合の例である。本実施例ではこの処理のことを「通常ライト処理」と呼ぶ。一方、本実施例に係る計算機システム1では、複数のストレージモジュール23で形成される論理ボリュームに対するライト処理を、コントローラ21の介在無しに実施することもできる。このライト処理のことを、本明細書ではDirect I/Oと呼ぶ。
 以下では、Direct I/O及びそれに関連する管理情報について説明する。論理ボリューム管理テーブル200のDirect I/O Flag208及びLBA Range209が、Direct I/Oに関する管理情報である。論理ボリューム管理テーブル200のDirect I/O Flag208に“1”が格納された論理ボリュームは、Direct I/Oが可能な論理ボリュームであることを意味する。それ以外の論理ボリュームのDirect I/O Flag208に“0”が格納された論理ボリュームは、Direct I/Oが許可されていない論理ボリュームであることを意味する。
 LBA Range209には、Direct I/Oによるライト処理を許可する論理ボリューム上の領域情報(開始LBA、終端LBAのセット)が格納される。本実施例に係るストレージ装置2は、Direct I/O Flag208が“1”の論理ボリューム内の領域のうち、LBA Range209に設定されている領域についてのみ、Direct I/Oによるライト処理を許可することができる。ただし論理ボリューム内の全領域についてDirect I/Oによるライト処理を許可してもよく、この場合LBA Range209には無効値(“-1”など、LBA Range209に用いられない値)が設定される。
 ストレージ装置2の管理者は管理装置4を用いて、Direct I/Oによるライト処理対象の論理ボリューム、及びその論理ボリューム内の領域情報の設定指示をストレージ装置2に発行することで、対象の論理ボリュームのDirect I/O Flag208及びLBA Range209に値が設定される。
 なお、本実施例に係る計算機システムにおいて、Direct I/Oが可能な論理ボリュームは、少なくとも以下の条件全てに合致する論理ボリュームである:
1) 論理ボリュームが、ストレージモジュール23のみを用いて形成されている。(論理ボリューム管理テーブル200のPDEV type203が“2”である)
2) RAID Level(論理ボリューム管理テーブル200のRAID Level205)が、RAID1またはRAID1+0の論理ボリュームであること。
本実施例では、Direct I/Oによるライト処理が行われる論理ボリュームのRAID LevelがRAID1の例について中心に説明する。つまりDirect I/Oにより、論理ボリュームを構成する2つのストレージモジュール23に対し、ライトデータが二重書きされる。
 コントローラ21は、ある論理ボリュームに対してDirect I/O Flag208に“1”を設定する指示を、管理装置4から受信した時、設定対象の論理ボリュームが上の条件に合致するか判定する。そしてコントローラ21は条件に合致している場合に限って、Direct I/O Flag208に“1”を設定する。LBA Range209への情報設定も同様である。つまりコントローラ21は上の条件に合致している論理ボリュームについてのみ、LBA Range209への情報設定を許可する。
 Direct I/Oによるライト処理の流れを、図5を用いて説明する。以下、図5における、ライト対象論理ボリュームは、ストレージモジュール23-1、ストレージモジュール23-2から構成されている場合について説明する。また以下では、ストレージモジュール23-1内のプロセッサ231、データ転送装置232、一次記憶装置233、二次記憶装置234はそれぞれ、プロセッサ231-1、データ転送装置232-1、一次記憶装置233-1、二次記憶装置234-1と表記される。同様に、ストレージモジュール23-2内のプロセッサ231、データ転送装置232、一次記憶装置233、二次記憶装置234もそれぞれ、プロセッサ231-2、データ転送装置232-2、一次記憶装置233-2、二次記憶装置234-3と表記される。
 まずプロセッサ31が(アプリケーションプログラム等が実行されることによって)、論理ボリュームに書き込むべきデータを生成し、そのデータをメモリ32に格納する(S1)。このときプロセッサ31は、S1で生成されたデータを論理ボリュームに書き込むためのコマンド(ライトコマンド)も作成し、メモリ32にコマンドを格納する。ただしメモリ32にコマンドを格納せず、直接メモリ342内のコマンドキューにコマンドが格納されても良い。
 そしてプロセッサ31はI/F装置33のトリガレジスタに、コマンドの格納されているアドレスを格納することで、I/F装置33に対してライト起動指示を行う(S2)。ここまでの処理は、通常ライト処理(Direct I/Oでないライト処理)でも同じである。
 I/F装置33のトリガレジスタに値が書き込まれたことに応じて、I/F装置33のプロセッサ341はコマンドを読み出し、コマンド内容に基づいて、ストレージモジュール23-1及び23-2にライト起動指示を行う(S3-1、S3-2)。この処理の詳細は後述する。
 ライト起動指示が行われると、ストレージモジュール23-1のデータ転送装置232-1は、サーバ3のメモリ32からライト対象データを読み出し、確保された領域に格納する(S4-1)。また、ストレージモジュール23-2も、S4-1と同様の処理を行う(S4-2)。この処理の詳細は後述する。
 S4-1の終了後、ストレージモジュール23-1はI/F装置33に対して、処理が完了した旨を表す応答情報(レスポンスと呼ばれる)を通知する(S5-1)。レスポンスはストレージモジュール23-1によってI/F装置33のレスポンスキューに格納される。
 またストレージモジュール23-2もS4-2の終了後、I/F装置33に対してレスポンスを通知する(S5-2)。I/F装置33は、ストレージモジュール23-1とストレージモジュール23-2の両方から、レスポンスを受信したことを確認した後、プロセッサ31に、S2で受信したライトコマンドに係る処理が完了した旨のレスポンスを通知する(S6)。
 なお、上で述べたとおり、Direct I/Oによるライト処理の実行可能な論理ボリュームについての情報は、コントローラ21に設定されるが、サーバ3(のI/F装置33)もこの情報を認識している必要がある。I/F装置33は、Direct I/Oによるライト処理の実行可能な論理ボリュームについての情報を、Direct I/Oボリュームテーブルに格納して管理する。Direct I/Oボリュームテーブルの内容について、図6を用いて説明する。
 Direct I/Oボリュームテーブル400は、I/F装置33のメモリ342に格納される。このテーブルの各行には、Direct I/Oによるライト処理の実行可能な論理ボリュームについての情報が格納されている。Direct I/Oボリュームテーブル400は、LUN401、Address Range402、Module#1(403)、Module#2(404)のカラムを有する。
 LUN401には、Direct I/Oによるライト処理を許可する論理ボリュームのLUNが格納される。そしてAddress Range402には、LUN401で特定される論理ボリュームの領域のうち、Direct I/Oによるライト処理を許可される領域のアドレス範囲(開始LBA、終端LBA)が格納される。つまりLUN401とAddress Range402には、論理ボリューム管理テーブル200のLUN202とLBA Range209と同じ値が格納される。
 Module#1(403)、Module#2(404)にはそれぞれ、LUN401で特定される論理ボリュームを構成するストレージモジュール23の識別子についての情報が格納される。Direct I/Oによるライト処理が行われる論理ボリュームは、2つのストレージモジュール23から構成される。これはDirect I/Oによるライト処理が行われる論理ボリュームのRAID LevelはRAID1であるからである。そのためDirect I/Oボリュームテーブル400は、2つのストレージモジュール23についての識別子を格納するために、Module#1(403)、Module#2(404)を有する。本実施例に係るストレージ装置2は、Module#1(403)、Module#2(404)に格納すべき情報として、PDEV#を用いる。つまりModule#1(403)、Module#2(404)には、論理ボリューム管理テーブル200のPDEV#204に格納されている値が格納される。ただし別の実施形態として、PDEV#以外の情報が、Module#1(403)、Module#2(404)に格納されてもよい。
 管理者は管理装置4を用いて、ストレージ装置2の管理者からの指示によって、1または複数の論理ボリュームについて、Direct I/Oを可能にするように設定することができる。コントローラ21が管理装置から、Direct I/Oを可能にしたい論理ボリューム及びその論理ボリューム内領域の情報を受信すると、コントローラ21は論理ボリューム管理テーブル200のDirect I/O Flag208に“1”を設定し、またLBA Range209に指定された領域の情報を設定する。その後コントローラ21は、Direct I/O Flag208に“1”が設定された論理ボリュームのLUN202、LBA Range209、PDEV#204の情報をI/F装置33に連絡する。I/F装置33はこの連絡を受信すると、受信した情報をDirect I/Oボリュームテーブル400に格納する。これにより、管理者はストレージ装置2に対して論理ボリュームの設定を行うだけで、サーバ3にもDirect I/Oに必要な情報が設定される。
 もしストレージ装置2に複数のサーバ3が接続されている場合、ストレージ装置2は、接続されているすべてのサーバ3のI/F装置33に対し、Direct I/O Flag208に“1”が設定された論理ボリュームのLUN202、LBA Range209、PDEV#204を連絡する。これによりストレージ装置2に接続されているすべてのサーバ3が、論理ボリュームに対してDirect I/Oによるライト処理を行うことができる。また別の実施形態として、ストレージ装置2は特定のサーバにのみこれらの情報を通知するようにして、特定のサーバだけがDirect I/Oによるライト処理を行うことができるようにしてもよい。
 コントローラ21からI/F装置33への情報連絡用の経路には、PCI Expressリンクが用いられる。なお、Direct I/Oボリュームテーブル400の格納される領域をコントローラ21のプロセッサ211からアクセス可能なように、PCIe空間にマッピングしてもよい。その場合、プロセッサ211がDirect I/Oボリュームテーブル400に直接情報を書き込むことができる。
 また、Direct I/Oボリュームテーブル400に情報を格納する方法として、ストレージ装置2からI/F装置33に連絡する以外の方法が採用されてもよい。たとえばサーバ3のプロセッサ31で、I/F装置33に情報を設定するためのプログラムを実行させ、そのプログラムがストレージ装置2または管理装置4から、Direct I/Oボリュームテーブル400に設定すべき情報を取得し、I/F装置33に格納するようにしてもよい。あるいは、サーバ3の入出力デバイスを用いて、Direct I/Oボリュームテーブル400に情報を設定できるプログラムをサーバ3上で実行するようにしてもよい。その場合、サーバ3のユーザが入出力デバイスを介して、手動でDirect I/Oボリュームテーブル400に情報を設定する。
 続いてサーバ3が有するもう1つの管理情報である、モジュールアドレステーブルの内容について、図7を用いて説明する。モジュールアドレステーブル450はModule#(451)、Module Address(452)、代替Module Address(453)のカラムを有する。モジュールアドレステーブル450は、I/F装置33のメモリ342に格納される。
 Module#(451)はストレージモジュール23の識別子で、たとえばPDEV#である。Module Address(452)には、I/F装置33がストレージモジュール23にライト起動指示を行う際に必要な情報が格納される。具体的には、データ転送装置232上のトリガレジスタ等のアドレスが格納される。
 代替Module Address(453)にも、Module Address(452)と同様に、I/F装置33がストレージモジュール23にライト起動指示を行う際に必要な情報(トリガレジスタ等のアドレス)が格納される。Module Address(452)に格納されるアドレスは、コントローラ21-0が属するPCIeドメインのアドレスであり、代替Module Address(453)に格納されるアドレスは、コントローラ21-1が属するPCIeドメインのアドレスである。
 I/F装置33は、コントローラ21-0のスイッチ214を経由する経路(以下、「経路A」と呼ぶ)を用いて、ストレージモジュール23に指示を出すときは、Module Address(452)に格納されるアドレスを用いてストレージモジュール23に指示を出す(トリガレジスタに情報を格納する)。I/F装置33が経路Aを用いてストレージモジュール23に指示を出せない場合(たとえばコントローラ21-0に障害が発生してダウンしている場合が該当する)、コントローラ21-1のスイッチ214を経由する経路(以下、「経路B」と呼ぶ)を用いて、ストレージモジュール23にアクセスする。その場合、I/F装置33は代替Module Address(453)に格納されるアドレスを用いて、ストレージモジュール23に指示を出す。
 ストレージモジュール23は、経路Aを介してI/F装置33から指示を受領した場合、経路Aを用いてライトデータやコマンドをI/F装置33から取得する。逆にストレージモジュール23が経路Bを介してI/F装置33から指示を受領した場合、経路Bを用いてライトデータやコマンドをI/F装置33から取得する。
 モジュールアドレステーブル450に設定される情報は、ストレージ装置2の起動時、またはストレージモジュール23をストレージ装置2にインストールした時などに、ストレージ装置2からI/F装置33に通知される。ただしそれ以外の方法でモジュールアドレステーブル450に情報を設定してもよい。たとえばユーザが手動でモジュールアドレステーブル450に情報設定できる手段(プログラム)をサーバ3上に実装し、ユーザにモジュールアドレステーブル450に情報設定させるようにしてもよい。
 続いて、上で説明したS3-1及びS3―2のライト起動指示の際に、I/F装置33で行われる処理の流れを、図8を用いて説明する。その前にサーバ3とストレージ装置2の間でやり取りされるコマンドとレスポンスのフォーマットの例を説明する。
 サーバ3が作成するコマンドのフォーマットの例を、図9を用いて説明する。図9(a)に、コマンド50の例が示されている。コマンド50は、オペコード(Opcode)51、CMD ID52、LUN53、開始LBA54、データ長(Length)55、転送元アドレス(Source Addr.)56を含む。またこれ以外の情報が含まれていてもよい。
 オペコード(Opcode)51は、コマンドの種類を表す情報が格納される。コマンドの種類にはたとえば、リードコマンド、ライトコマンドなどがある。サーバ3が論理ボリュームへのデータ書き込みを指示したい場合には、サーバ3は、オペコード(Opcode)51にライトコマンドであることを示す情報が格納されたコマンド50を作成する。
 CMD ID52は、サーバ3が各コマンドに対して付ける、ユニークな識別子である。コントローラ21(またはストレージモジュール23)がサーバ3からのコマンドを受信し、このコマンドに係る処理が完了すると、コントローラ21(またはストレージモジュール23)はサーバ3に対し、図9(b)に示されているようなレスポンス60を返却する。コントローラ21(またはストレージモジュール23)はCMD ID52にxが指定されたコマンドに係る処理を完了すると、CMD ID61にxが指定されたレスポンス60を作成して、サーバ3に返送する。これによりサーバ3は、コントローラ21(またはストレージモジュール23)に対して複数のコマンドを発行した場合でも、受領したレスポンスがどのコマンドに対するレスポンスであるか判別することができる。
 LUN53は、アクセス対象論理ボリュームの論理ユニット番号である。そして開始LBA53は、アクセス対象の領域のアドレスである。たとえばライトコマンドの場合、ライト対象のデータが格納されるべき、論理ボリューム上のアドレス(LBA)が指定される。データ長(Length)55はライト対象のデータの長さが格納される。
 Source Addr.56は、ライト対象データが格納されている、メモリ32上の先頭アドレスである。ライト対象データがメモリ32上に離散的に格納されている場合には、コマンド50が複数のSource Addr.56を含むようにしてもよい。なお、Source Addr.56は、複数のSource Addr.56とそれぞれ各Source Addr.56からのライト対象データの長さなどを含めたSGL(Scatter Gather List)を示すアドレスとしてもよい。
 サーバ3に返送されるレスポンスのフォーマットについて、図9(b)を用いて説明する。上でも述べたが、コントローラ21(またはストレージモジュール23)は、受信したコマンド50に係る処理を終了すると、レスポンス60をサーバ3(I/F装置33)に返送する。レスポンス60には、CMD ID61とStatus62が含まれる。CMD ID61は先に説明したので、説明を省く。Status62は、コマンドに係る処理の成否を表す情報が含まれる。たとえば処理が成功した場合にはStatus62には0が、処理が失敗した場合には0以外の情報が含まれる。
 図8の説明に戻る。I/F装置33は、上で説明したライト起動指示(S2)を受領すると、サーバ3のメモリ32からライトコマンドを取得する(S1001)。ライトコマンドの格納されているアドレスは、I/F装置33のトリガレジスタに格納されている。なお、ドアベルレジスタを利用した場合は、ライトコマンドの格納されているアドレスは、ベースアドレスレジスタとドアベルレジスタから取得しても良い。
 コマンドを取得した後、I/F装置33は、コマンド50で指定されているライト先領域が、Direct I/Oボリュームテーブル400に登録されている領域であるか判定する(S1002)。ライトコマンドには、LUN53、及びライト範囲を特定する情報(開始LBA54とLength55)が含まれている。I/F装置33のプロセッサ341は、Direct I/Oボリュームテーブル400の各行のうち、ライトコマンドに含まれているLUNと、LUN401が一致する行があるか判定する。一致する行がある場合、この行を「対象行」と呼ぶ。対象行が存在した場合、プロセッサ341はさらに、対象行のAddress Range402に含まれる領域内に、ライトコマンドで指定されているライト範囲が含まれるか判定する。これにより、ライトコマンドで指定されているライト先領域が、Direct I/Oボリュームテーブル400に登録されている領域であるか判定できる。
 ライトコマンドで指定されているライト先領域が、Direct I/Oボリュームテーブル400に登録されている領域の範囲内である場合(S1002:Y)、I/F装置33は、Direct I/Oによるライト処理を行うと決定する。具体的にはプロセッサ341は、対象行のModule#1(403)、Module#2(404)で特定されるストレージモジュール23に対し、直接ライトコマンドを送信すると決定する(S1003)。
 続いてプロセッサ341は、モジュールアドレステーブル450を参照し、ライトコマンド送信先のストレージモジュール23のトリガレジスタのアドレスを特定する。そしてプロセッサ341はトリガレジスタに、コマンドの格納されているアドレス(I/F装置33のメモリ342上アドレス)を書き込むことで、ストレージモジュール23にライト処理の開始を指示する(S1004)。またS1004ではプロセッサ341は、トランザクション管理テーブル(後述)のCMD ID801に、ライトコマンドのCMD ID52を登録する。I/F装置33からストレージモジュール23に送信されるライトコマンドのフォーマットは、図9と同じでも良いし、異なっていてもよい。たとえばプロセッサ341は、コマンド50のうちLUN53を除去したコマンドを新たに作成し、新たに作成されたコマンドの格納されているアドレスをストレージモジュール23に通知してもよい。
 なお、ストレージモジュール23は2つ存在するため、プロセッサ341は2つのストレージモジュール23に対して、ライト処理の開始を指示する。2つのストレージモジュール23には、同じコマンド50が送信される。同じコマンドが送信されるため、2つのストレージモジュール23の同一領域に同一データが書き込まれることになる。また、上ではストレージモジュール23がライトコマンドの内容をI/F装置33から読み出す例を説明したが、別の実施形態としてI/F装置33(プロセッサ341またはデータ転送装置343)がストレージモジュール23へライトコマンドを送信するようにしてもよい。
 トランザクション管理テーブル800について、図11を用いて説明する。トランザクション管理テーブル800は、CMD ID801、完了数802のカラムを有するテーブルで、メモリ342に格納されている。CMD ID801には、ストレージモジュール23に送信されたコマンド50のCMD ID52が格納される。完了数802には、ストレージモジュール23から受領したレスポンスの数が格納される。なお、完了数802の初期値は0である。S1004でプロセッサ341はトランザクション管理テーブル800に、CMD ID801にライトコマンドのCMD ID52が格納された行を追加する。またこの時、この行の完了数802には0を格納する。
 一方ライトコマンドで指定されているライト先領域が、Direct I/Oボリュームテーブル400に登録されている領域の範囲内でない場合(S1002:N)、I/F装置33はコントローラ21にライトコマンドを送信し、コントローラ21に通常ライト処理を行わせる(S1005)。
 続いてライトコマンドが書き込まれたストレージモジュール23で行われる処理について説明する。I/F装置33がストレージモジュール23のトリガレジスタに情報(コマンドのアドレス)を書き込むことで、データ転送装置232がコマンドの受信を開始する。
 データ転送装置232はトリガレジスタに格納されたアドレスから、コマンドを読み出し、ストレージモジュール23のコマンドキューにコマンドを格納する。そしてデータ転送装置232はプロセッサ231に、ライトデータを格納すべき領域を確保させる。この領域は一次記憶装置233内に設けられる。確保すべき領域のサイズは、コマンド50に含まれているLength55を参照することで判明する。プロセッサ231はコマンドキューに格納されたコマンド50を読み出して、確保すべき領域のサイズを特定し、領域の確保を行う。プロセッサ231は領域を確保した後、データ転送装置232に確保した領域のアドレスを通知する。
 データ転送装置232はプロセッサ231から通知を受けると、サーバ3のメモリ32からライト対象データを読み出し、プロセッサ231から通知されたアドレスにライト対象データを格納する。ライト対象データの格納されているメモリ32上のアドレスは、コマンド50に含まれている(Source Addr. 56)。そのためデータ転送装置232は、Source Addr. 56に格納されているアドレスからデータ読み出しを行う。ライト対象データの格納が完了すると、データ転送装置232はプロセッサ231に処理の終了を報告する。プロセッサ231はレスポンス60を作成し、I/F装置33にレスポンス60を通知する。
 ライトデータを格納すべき領域、及びその管理情報の一例を、図10を用いて説明する。ストレージモジュール23は一次記憶装置233内に、データバッファ500、管理情報キュー510、next_ptr515、tail_ptr516を設ける。データバッファ500はライトデータを格納する領域で、管理情報キュー510はライトデータが格納された領域の管理情報を格納する領域である。next_ptr515には、データバッファ500内の領域のうち、空き領域の先頭アドレスが格納され、tail_ptr516は、空き領域の終端アドレスが格納される。プロセッサ231が領域を確保する際、アドレスがnext_ptr515以上、またはtail_ptr516以下の領域から、領域を選択する。
 ストレージモジュール23のプロセッサ231は領域を確保する時、最初はデータバッファ500の先頭から連続領域を確保する。確保すべき領域の長さは、ライトコマンド50で指定されるデータ長(Length55)の長さと同じである。プロセッサ231は領域を確保すると、next_ptr515に、(確保した領域の終端アドレス+1)を格納する。これ以降プロセッサ231が領域を確保する時、next_ptr515から始まる連続領域を確保する。next_ptr515がデータバッファ500の終端アドレスに到達した時には、next_ptr515の値をデータバッファ500の先頭アドレスに変更する。これにより、データバッファ500はリングバッファとして用いられることになる。ただし、データバッファ500をリングバッファとして用いる方法は一例であり、これ以外の方法でデータバッファ500から領域を確保するようにしても良い。
 ライトデータをデータバッファ500上の領域に格納すると同時に、プロセッサ231はライトデータの格納された領域の管理情報を作成して、管理情報キュー510の終端に格納する。図10の管理情報520が、管理情報キュー510に格納される管理情報である。この管理情報520は、データバッファ500上のライトデータを二次記憶装置234に格納する時に用いられる。
 管理情報520は、ライトデータの格納されているデータバッファ500上先頭アドレスであるデータポインタ521、開始LBA522、Length523を含む。開始LBA522、Length523にはそれぞれ、I/F装置33から送信されたライトコマンド50に含まれている開始LBA54及びLength55と同内容の情報が格納される。データポインタ521には、プロセッサ231により確保された領域の先頭アドレスが格納される。管理情報520が管理情報キュー510に格納された後、プロセッサ231はデータ転送装置232に確保した領域のアドレスを通知する。そしてデータ転送装置232はライトデータをサーバ3から読み出し、確保した領域へと格納する。
 この後プロセッサ231は、一次記憶装置233内に格納されたライトデータを二次記憶装置234に格納(移動)する。プロセッサ231は管理情報キュー510の先頭に格納されている管理情報520を取り出し、データポインタ521で特定されるアドレスから始まる連続領域に格納されているデータ(ライトデータ)を、二次記憶装置234に格納する。データを二次記憶装置234に格納する時は、プロセッサ231は先に述べたマッピング情報を参照することで、開始LBA522を二次記憶装置234上のライト先領域のアドレスに変換する。そしてこのアドレス変換によって導出されたアドレスに対してライトデータが格納される。ライトデータが二次記憶装置234へ格納された後、プロセッサ231は管理情報キュー510から管理情報520を削除する。またプロセッサ231は、tail_ptr516に、削除された管理情報520に含まれていたLength523の値を加算する。これにより、tail_ptr516は、空き領域の終端アドレスを指すようになる。
 一次記憶装置233内に格納されたライトデータを二次記憶装置234に格納(移動)する契機は任意である。ストレージモジュール23がレスポンスをI/F装置33に返却するタイミングとは独立したタイミングで、ライトデータを二次記憶装置234に格納(移動)してよい。もちろん、ストレージモジュール23がレスポンスをI/F装置33に返却する時点(または直前)に、ライトデータを二次記憶装置234に格納(移動)してもよい。
 たとえばプロセッサ231は、一次記憶装置233内に格納されたライトデータを二次記憶装置234に移動するタスクを定期的に実施してもよい。あるいは、データ転送装置232からプロセッサ231に処理の終了が報告された時点で、プロセッサ231は即座に一次記憶装置233内に格納されたライトデータを二次記憶装置234に移動してもよい。
 あるいは、一次記憶装置233内にライトデータが所定量以上蓄積されたことを契機に、プロセッサ231はライトデータを二次記憶装置234に移動するタスクを実施してもよい。たとえば二次記憶装置234にフラッシュメモリ等の、データアクセス単位が512バイトより大きい単位(ページ)である記憶媒体が用いられている場合には、一次記憶装置233内に1ページのN倍(Nは1以上の整数値)に相当する量のライトデータが蓄積された時点で、ライトデータを二次記憶装置234に移動するとよい。また、外部電源からの電力供給が途絶えた場合、ストレージモジュール23はバッテリ235の電力を用いて、一次記憶装置233内のライトデータをすべて二次記憶装置234へ移動するのが望ましい。
 続いて、I/F装置33が上で説明したS5-1及びS5―2で実施する処理、つまりストレージモジュール23から応答情報を受領した時に実施する処理の流れを、図12を用いて説明する。
 I/F装置33は、ストレージモジュール23から、応答情報を受領する(S1501)。ストレージモジュール23はI/F装置33のレスポンスキューに応答情報(レスポンス60)を格納し、さらにI/F装置33のドアベルレジスタに情報を格納する。I/F装置33は、ドアベルレジスタに情報が格納されたことに応じて、レスポンス60がレスポンスキューに格納されたことを認識する。
 レスポンス60には、CMD ID61が含まれている。以下、CMD ID61の値がn(nは整数値)であった場合について説明する。I/F装置33は、トランザクション管理テーブル800内の各行のうち、CMD ID801の値が、受領したレスポンス60のCMD ID61(n)と等しい行を特定し、その行の完了数802に1を加算する(S1503)。
 S1505でI/F装置33は、CMD ID801の値がnの行の完了数802が2であるか否か判定する。完了数802が2の場合、CMD ID61がnのレスポンス60を2回受領した、つまり2つのストレージモジュール23からレスポンス60を受領したことを意味する。この場合には(S1505:Y)、I/F装置33はサーバのプロセッサ31に、ライト処理が完了したことを通知し、トランザクション管理テーブル800から、CMD ID801の値がnの行を削除し(S1506)、処理を終了する。
 完了数802が2でない場合(S1505:N)、I/F装置33は、別のストレージモジュール23からのレスポンス60の到来を待つ(S1507)。そして別のストレージモジュール23からレスポンス60を受信した時点で、再びS1501から処理を実施する。I/F装置33は上記の処理を行うことにより、論理ボリュームを構成する2つのストレージモジュール23からの応答情報を受領した時点で初めて、サーバ3のプロセッサ31にライト処理が完了したことを通知する。そのため、プロセッサ31がライト完了の応答情報を受領した時点では、データが確実に2つのストレージモジュール23に格納されていることが保証されている。
 本実施例に係る計算機システムでは、ボリュームへのライト処理時に、サーバ3はボリュームを構成する複数のストレージモジュール23にライトコマンドを送信するだけで(あるいはライト起動の指示を与えるだけで)、ストレージモジュール23にデータ格納処理を行わせることができる。そのため、負荷の大きい処理をストレージモジュール23にオフロードすることができ、サーバ3の処理負荷は低く抑えられる。また、コントローラ21はストレージモジュール23のライト処理に介在する必要がないため、コントローラの負荷を低減することができる。またライトデータを2つのストレージモジュール23に格納するが、各ストレージモジュール23のデータ転送装置232がサーバ3からストレージモジュール23へのデータ転送を実施する。そのため、特定のストレージモジュール23のみに負荷が集中することがない。
[変形例1]
 実施例1では、ライトコマンドで指定されているライト先領域が、Direct I/Oボリュームテーブル400に登録されている領域の範囲内である場合に、I/F装置33がDirect I/Oによるライト処理を実施する例を説明した。ただし、Direct I/Oによるライト処理を計算機システムに実施させるためには、これ以外の方法が用いられてもよい。
 たとえばDirect I/Oによるライト処理を行いたい場合に、サーバ3のプロセッサ31が通常のライトコマンドとは異なるコマンドをI/F装置33に送信するようにしてもよい。このコマンドのフォーマットは、実施例1で説明したものと同じであるが、Opcode51に、通常のライトコマンドやリードコマンドでは用いられていない値が格納されたコマンド(以下、これを「DirectI/Oコマンド」と呼ぶ)が用いられる。プロセッサ31がDirect I/Oによるライト処理を行いたい場合、プロセッサ31はDirectI/Oコマンドを作成し、I/F装置33にライト起動を指示する。I/F装置33がDirectI/Oコマンドを受領するとDirect I/Oによるライト処理を行う。この場合、I/F装置33はDirectI/Oコマンドで指定されているライト先領域が、Direct I/Oボリュームテーブル400に登録されている領域の範囲内であるか否かを判定してもよいし、しなくてもよい。
[変形例2]
 続いて変形例2として、ライト処理をシーケンシャルライト用途に限定した変形例について説明する。
 変形例2に係る計算機システムでは、Direct I/Oによるライト処理を行いたい場合、変形例1と同様にサーバ3はDirectI/Oコマンドを作成する。DirectI/Oコマンドのフォーマットは、コマンドに開始LBA54が含まれていない点を除けば、図9で説明したものと同じである。
 変形例2に係るストレージモジュール23が有する管理情報について、図13を用いて説明する。ストレージモジュール23は一次記憶装置233内に、データバッファ500、next_ptr515、tail_ptr516を有する点は、実施例1で説明したものと同じである。ただし変形例2の場合には、管理情報キュー510と管理情報520は存在しない。また変形例2では、ストレージモジュール23は終端LBA517を有する。
 ストレージモジュール23がI/F装置33からのライトデータを一次記憶装置233に格納する時の処理は、管理情報520を作成しない点を除いて、実施例1で説明したものと同様である。つまりデータバッファ500の先頭からシーケンシャルにライトデータを格納していく。
 ストレージモジュール23は、データバッファ500に格納されたライトデータを二次記憶装置234に格納する際、PDEV空間の先頭領域(LBAが0の領域)からシーケンシャルにライトデータを格納する。そしてライトデータの格納後、最後にライトデータを書き込んだアドレス(PDEV空間上のLBA)を終端LBA517に記録する。その後ライトデータを二次記憶装置234に格納する処理を行う際には、アドレスが(1+終端LBA517)の領域からシーケンシャルにライトデータを格納する。
 データバッファ500内のデータを二次記憶装置234に格納する場合、ストレージモジュール23は、tail_ptr516で特定されるアドレスから所定サイズ(仮にこのサイズをmとする)のデータを二次記憶装置234に格納する。データの格納後、tail_ptr516にmを加算する。mの値は、I/F装置33から送信されてきたコマンド50に含まれるLength55と同じである必要はなく、ストレージモジュール23が独自に決定して良い。
 このような書き込み処理を行うことで、ストレージモジュール23は、ライトデータ毎に管理情報520を持つ必要がなくなり、データ格納時の処理オーバヘッドを削減でき、結果として論理ボリュームへのアクセスレイテンシが短くなる。たとえばDBMSのRedo Logを格納する用途で論理ボリュームを用いる場合、論理ボリュームへのI/O傾向は、シーケンシャルライト中心となる。かつRedo Logの格納にかかる応答時間は短いほど望ましい。そのため変形例に係る計算機システムは、ログライト用途のように、ほとんどのI/O要求がシーケンシャルライトで、かつ低アクセスレイテンシが要求される用途に適している。
[変形例3]
 ストレージモジュール23の耐障害性を高めるため、ストレージモジュール23内でデータのバックアップコピーを作成する機能をストレージモジュール23に設けてもよい。以下、一例を説明する。
 ストレージモジュール23は二次記憶装置234の領域を2つに分割して管理する(以下では、2分割されたそれぞれの領域のことを、「領域A」、「領域B」と呼ぶ)。二次記憶装置234の記憶領域が、例えば複数のフラッシュメモリチップで構成されている場合、領域Aを構成するフラッシュメモリチップと領域Bを構成するフラッシュメモリチップは、異なるフラッシュメモリチップにするとよい。
 ストレージモジュール23がライトデータを二次記憶装置234に格納する際、領域A、領域Bの両方にライトデータを格納することで、ライトデータが二重化されるようにする。ただしライトデータの二重化は非同期に実施されてもよい。
 領域Bは領域Aのバックアップとして用いられる。ストレージモジュール23に対するリードコマンドをコントローラ21(またはサーバ3)から受領した時、ストレージモジュール23は通常時は領域Aのデータを読み出して送信する。もし領域Aに障害が発生してアクセスできなくなった時には、ストレージモジュール23は領域Bのデータを読み出して送信する。このようにストレージモジュール23を構成することで、データ消失リスクを低減することができる。
 また、ストレージモジュール23が領域Bにライトデータを格納する時には圧縮を行ってもよい。これにより領域Bのサイズを領域Aよりも小さくすることができる。圧縮は、ストレージモジュール23のプロセッサ231で、何らかの圧縮アルゴリズムを実行するプログラムを実行させることで実施してもよいし、圧縮処理を行う専用ハードウェアをストレージモジュール23に設けてもよい。なお、領域Aも圧縮してもよい。また、バックアップに限らず、ストレージモジュール23内のデータを圧縮しても良く、また、ストレージモジュール23のデータはセキュリティを確保するため、暗号化されても良い。
[変形例4]
 ストレージモジュール23内でライトデータを複製することに加えて(または代えて)、ストレージモジュール23に格納されたライトデータをドライブ22に複製(バックアップ)するようにしてもよい。実施例1でも述べたとおり、コントローラ21が、ストレージモジュール23にコマンドを発行して、PDEV空間の領域にアクセスできるので、コントローラ21がストレージモジュール23に格納されたデータを読み出して、ドライブ22に複製することができる。
 ストレージモジュール23のバックアップデータを保存するために、ストレージモジュール23がいわゆるスナップショット機能を有していると望ましい。スナップショット機能があると、特定時点のPDEV空間のイメージ(スナップショットイメージ)をバックアップすることが可能になる。スナップショット機能の例は、例えば特許文献2に開示されているので、本例ではスナップショット機能の説明は省略する。
 変形例4に係るストレージモジュール23は、スナップショット作成を指示するコマンド(スナップショットコマンドと呼ぶ)をサポートする。イニシエータデバイスからスナップショットコマンドを受領すると、ストレージモジュール23はスナップショットイメージの格納された仮想的なボリューム(スナップショットボリューム)を作成する。また実施例4に係るストレージモジュール23は、通常のリードコマンドに加え、スナップショットボリュームのデータをリードするためのコマンド(スナップショットリードコマンドと呼ぶ)もサポートする。イニシエータデバイスからスナップショットリードコマンドを受領すると、ストレージモジュール23は、スナップショットボリュームのデータをイニシエータデバイスに返送する。
 バックアップを行う際、コントローラ21は最初に、ストレージモジュール23に対してスナップショットコマンドを発行する。その後コントローラ21はストレージモジュール23にスナップショットリードコマンドを発行することで、スナップショットイメージを読み出し、ドライブ22または論理ボリュームに格納する。これにより、ストレージ装置2はストレージモジュール23のバックアップデータの取得・保存を行うことができる。
 バックアップは、ストレージ装置2の管理者が管理装置4からストレージ装置2に対し、バックアップの指示を発行することで開始されてもよいし、サーバ3からストレージ装置2に対し、バックアップの指示を発行することで開始されてもよい。また、ストレージ装置2が定期的にバックアップを行ってもよい。
[変形例5]
 変形例5に係るストレージ装置2は、複数のドライブ22、ストレージモジュール23を用いて記憶階層を形成し、データの階層管理を行うよう構成される。このとき、ストレージモジュール23に格納されたデータのうち、アクセス頻度の低いデータや一定時間経過したデータ等の、特定の条件に対応したデータを、ストレージモジュール23より容量の大きいドライブ22(またはストレージモジュール23)や、アクセススピードが低速なドライブ22(またはストレージモジュール23)に移動する。これにより、ストレージモジュール23の容量枯渇を防ぎ、ストレージモジュール23の容量を有効に利用できる。なお、ストレージモジュール23間やドライブ22間でも、容量やアクセススピードに違いがあるモデルが有り、それらの間でもデータの移動があってもよい。
[変形例6]
 サーバ3とストレージモジュール23間のデータ転送の過程でデータが壊れていないことをチェックするために、CRC等のチェックコードを用いたチェックが行われても良い。図14を用いて一例を説明する。図14はDirect I/Oによるライト処理の過程で、データのチェックが行われる場合の処理フローを表している。
 サーバ3のプロセッサ31は論理ボリュームに書き込むべきデータを生成してメモリ32に格納(S1)した後、そのデータからチェックコード(CRC)を計算してメモリ32に格納する(S1-1)。その後プロセッサ31はストレージモジュール(23-1、23-2)にライト起動指示を行う。ストレージモジュール(23-1、23-2)はデータとチェックコードを読み出し、チェックコードを用いたデータのチェックを行う(S4-1,S4-2)。具体的には、各ストレージモジュール23はデータからチェックコードを生成し、生成したチェックコードとメモリ32から読み出したチェックコードとを比較することで、データが壊れていないか判定する。両者が同一であれば、サーバ3とストレージモジュール23間のデータ転送の過程でデータが壊れていないといえる。またチェックコードには、CRCに加えて(または代えて)、データのライト先アドレス等の、データ格納位置を表す情報が含まれていてもよい。チェックコードにデータのライト先アドレスが含まれている場合、プロセッサ31はライト起動時に、そのアドレス(以下、これを「期待値」と呼ぶ)を各ストレージモジュール23に通知する。各ストレージモジュール23はメモリ32からデータ及びチェックコードを読み出した後、通知された期待値を元にアドレスのチェックを行うことで、読み出しアドレスに間違いがないかチェックしても良い。
 なお、プロセッサ31のチェックコード生成負荷を低減するため、I/F装置33にチェックコード生成をオフロードしても良い。図15にその場合の処理フローを示す。プロセッサ31は、自身でチェックコードを生成する代わりに、I/F装置33にチェックコード生成を依頼する(S1-1)。I/F装置33はそれに応じて、論理ボリュームに書き込むべきデータからチェックコードを生成してメモリ32に格納し(S1-2)、その後生成が完了した旨をプロセッサ31に通知する(S1-3)。その他の処理は、図16と同じである。
 ストレージモジュール23はチェックコードを用いたデータチェックを行った後、そのチェックコードをデータと共に一次記憶装置233又は二次記憶装置234に格納しても良い。またはストレージモジュール23はチェックコードを削除しても良い。あるいは、ストレージモジュール23はメモリ32から読み出したチェックコードを破棄して、新たなチェックコードを生成しても良い。
 また、ストレージモジュール23内部でデータ転送が発生することがある。たとえば、ストレージモジュール23内の記憶装置がフラッシュメモリなどで構成されている場合、一度使用した箇所を再度利用可能にする処理であるリクラメーション等が実施されることにより、ストレージモジュール23内のコンポーネント間でデータ転送が発生する。そのデータ転送の際に、内部でチェックコードの生成、転送データのチェック、チェックコードの削除などが任意の組み合わせで行われてもよい。さらに、変形例4や変形例5のようにストレージモジュール23からドライブ22などへデータを転送する際にも、チェックコードの生成、転送データのチェック、削除などが、任意の組み合わせで行われてもよい。
 なお、サーバ3のメモリ32とI/F装置33間、I/F装置33とストレージコントローラ21間、ストレージコントローラ21とストレージモジュール23間、I/F装置33とドライブ22間、ストレージコントローラ21とドライブ22間で、チェックコードを用いた転送データのチェックが実施されてもよい。
 つづいて実施例2に係る計算機システムについて説明する。図16に実施例2に係る計算機システム1’のハードウェア構成を示す。実施例2に係る計算機システム1’では、ストレージ装置2’はコントローラ21を持たない。また、I/F装置33’が、実施例1で説明したものと異なる。具体的にはI/F装置33’は、スイッチ331とドライブインタフェース215’(以下、「Drive IF 215’」と略記する)を有する。
 スイッチ331はPCIeスイッチで、ストレージモジュール23及びDrive IF 215’を、プロセッサ31に接続するためのコンポーネントである。スイッチ331にはPCI Expressリンクを介して複数のストレージモジュール23と複数のDrive IF 215’が接続される。
 Drive IF 215’は、実施例1に係る計算機システムにおけるBEIF215と同等の機能を有するコンポーネントで、PCIeとSASのプロトコル変換を行うインタフェースコントローラを含む。ただし実施例1と異なり、Drive IF 215’は、プロセッサ31とドライブ22を接続するために用いられる。なお、スイッチ331とDrive IF 215’単一のハードウェア(チップ)として実装されることは必須ではない。スイッチ331とDrive IF 215’がそれぞれ別のハードウェアとして、サーバ3’に実装されていてもよい。
 実施例1に係る計算機システムと実施例2に係る計算機システムのハードウェア構成上の主な違いは、上で述べた点だけであり、その他の点、たとえばストレージモジュール23の構成等は、実施例1で説明したものと同じである。
 実施例2に係るサーバ3’で実行されるプログラムについて、図17を用いて説明する。サーバ3’のプロセッサ31では、サーバ3’上で1以上の仮想計算機(VM)を形成するためのプログラムである、ハイパーバイザ3001が実行されている。
 ハイパーバイザ3001は、サーバ3’中の物理資源であるプロセッサ31やメモリ32等を仮想化することで、1以上の仮想化されたメモリ、1以上の仮想化されたプロセッサを作成する。以下ではこの、仮想化されたメモリのことを「仮想化メモリ(Virtualized Memory)」と呼び、仮想化されたプロセッサのことを「仮想化CPU(Virtualized CPU)」と呼ぶ。そしてハイパーバイザ3001は、仮想化メモリ及び仮想化CPUを用いて、1以上の仮想計算機を作成する。またよく知られているように、ハイパーバイザ3001は、プロセッサ、メモリ以外の周辺ハードウェアの仮想化も実施する。
 実施例2に係るサーバ3’では、ハイパーバイザ3001により、少なくとも4つの仮想計算機が形成される。1つ目の仮想計算機は、ユーザが業務などで使用するAPや、APの実行を制御するためのOS等を実行するための仮想計算機である。つまり1つ目の仮想計算機は実施例1におけるサーバ3と同等の処理を実施するものである。本実施例ではこの仮想計算機を「サーバOS3003」と呼ぶ。
 2つ目及び3つ目の仮想計算機は、実施例1におけるコントローラ21とほぼ同等の処理を実施するもので、本実施例ではこの仮想計算機を「ストレージOS3002」と呼ぶ。ストレージOS3002の仮想化CPUでは、実施例1におけるコントローラ21のプロセッサ211が実行していたプログラム(サーバ3からのコマンドの処理等を行うプログラム)が実行される。また、実施例1に係るストレージ装置2で2つのコントローラ21が存在していたのと同様に、実施例2に係る計算機システムでは、サーバ3’上でストレージOS3002が2つ稼働する。ただし別の実施形態として、1つのストレージOS3002のみがサーバ3’上で稼働するようにしてもよい。
 またストレージOS3002の仮想化メモリの一部の領域は、実施例1におけるコントローラ21のメモリ212と同様、サーバ3’からのライトデータを格納するキャッシュ領域として用いられる。そのため、実施例2に係るストレージ装置2’とストレージOS3002のセットが、実質的に実施例1に係るストレージ装置2と同等の機能を有するものになっている。
 4つ目の仮想計算機は、サーバOS3003やストレージOS3002から受領するコマンドの処理を行うための仮想計算機であり、実施例1におけるI/F装置33と同様の機能を持つ。本実施例ではこの仮想計算機を、インタフェースモジュール3004(またはIFモジュール3004)と呼ぶ。
 IFモジュール3004は、実施例1に係るI/F装置33と同様に、Direct I/Oボリュームテーブル400、モジュールアドレステーブル450、トランザクション管理テーブル800を有する。Direct I/Oボリュームテーブル400、モジュールアドレステーブル450に設定される情報は、実施例1に係る計算機システムではコントローラ21から通知されたが、実施例2に係る計算機システムの場合には、ストレージOS3002から通知される。
 そしてIFモジュール3004は、実施例1におけるI/F装置33と同様の処理を実行する。具体的にはIFモジュール3004は、サーバOS3003からライトコマンドを取得すると、図8に記載の処理と同等の処理を行う。ライトコマンドで指定されているライト先領域がDirect I/Oボリュームテーブル400に登録されている領域であれば、IFモジュール3004は2つのストレージモジュール23に直接ライトコマンドを送信し、そうでない場合には、ストレージOS3002(実施例1のコントローラ相当物)にライトコマンドを送信する。もちろん、変形例1や2で説明したように、サーバOS3003がDirectI/Oコマンドを発行した時に、IFモジュール3004が2つのストレージモジュール23に直接ライトコマンドを送信するようにしてもよい。
 IFモジュール3004が2つのストレージモジュール23に直接ライトコマンドを送信したあと、2つのストレージモジュール23からレスポンスを受領する。この時の処理は図12の処理と同様である。つまりIFモジュール3004は、実施例1におけるI/F装置33と同様に、トランザクション管理テーブル800を用いて2つのストレージモジュール23からレスポンスを受領したことを確認した後、サーバOS3003に対し、ライトコマンドに係る処理が終了した旨のレスポンスを返却する。
 なお、2つのストレージモジュール23に直接ライトコマンドが送信された時に、ストレージモジュール23で行われる処理の流れは、実施例1で説明したものと同様である。ただし各ストレージモジュール23でデータの格納が完了すると、各ストレージモジュール23はレスポンスをIFモジュール3004に返却する。これらの点を除いては、実施例2に係るストレージモジュール23で行われる処理は、実施例1で説明したものと違いがない。
 ストレージOS3002は、実施例1におけるコントローラ21と同様、複数のドライブ22や複数のストレージモジュールから論理ボリュームを形成する。また実施例1で説明した論理ボリューム管理テーブル200を有する。ストレージOS3002がIFモジュール3004からライトコマンドを受領すると、実施例1におけるコントローラ21と同様に、ライトデータを格納するための領域を、ストレージOS3002の仮想化メモリ上に確保する。そしてストレージOS3002はサーバOS3003のメモリからライトデータを取得し、この確保された領域に格納する。領域に格納されたライトデータは、ストレージOS3002がDrive IF215’を介してドライブ22へ書き込む。以上が、実施例2に係る計算機システムの説明である。
 ここまで説明してきたように、実施例2に係る計算機システムのように、ストレージ装置がストレージコントローラのような制御用ハードウェアを有さない構成の計算機システムにおいても、実施例1に係る計算機システムと同様に、サーバが複数のストレージモジュールに対して直接ライトコマンドを送信し、各ストレージモジュールに、ライトデータの格納処理を行わせることができる。実施例2に係る計算機システムでは、ストレージコントローラのような制御用ハードウェアが不要であるので、ハードウェアの製造コストを抑えることができる。
 以上、本発明の実施例を説明してきたが、これは本発明の説明のための例示であって、本発明を上で説明した実施例に限定する趣旨ではない。本発明は、他の種々の形態でも実施可能である。
 たとえば計算機システムの構成は、上で説明した構成例に限定されない。実施例1で説明した計算機システムの構成例では、I/F装置33がサーバ3内に存在したが、I/F装置33はサーバ3とストレージ装置2間のデータ転送経路上に配置されていればよく、実装位置は必ずしもサーバ3内に限定されない。また、複数のコントローラ21のうち、いずれか一方のコントローラ21上にI/F装置33が実装されていてもよい。
 また上で説明した各実施例では、論理ボリュームを構成する記憶デバイス(最終記憶媒体)としてストレージモジュール23を用いる例について説明してきた。ただしストレージモジュール23はキャッシュ用途に用いることも可能である。サーバからのライトデータを、メモリ212ではなくストレージモジュール23に一時的に格納し、しばらく後にストレージコントローラが、ストレージモジュール23に格納されたライトデータを、ドライブ22で構成される論理ボリュームに移動(デステージ)するという使い方も可能である。
 また、実施例2に係る計算機システムでは、仮想計算機技術を用いて、実施例1におけるI/F装置とコントローラと同等の機能を仮想計算機により実装しているが、仮想計算機技術は必須ではない。I/F装置とコントローラと同等の機能を、デバイスドライバ等の形態で実装してもよい。
1: 計算機システム,2: ストレージ装置,3: サーバ,21: コントローラ(CTL),22: ドライブ,23: ストレージモジュール,31: プロセッサ,32: メモリ,33: I/F装置,211: プロセッサ,212: メモリ,214: スイッチ,215: BEIF,341: プロセッサ,342: メモリ,343: データ転送装置

Claims (15)

  1.  複数の記憶デバイスを有するストレージ装置と、
     プロセッサとメモリとインタフェースデバイスを有するサーバを有する計算機システムにおいて、
     前記インタフェースデバイスは、前記プロセッサからライトコマンドを受領すると、
     前記ライトコマンドによりライト対象とされている複数の前記記憶デバイスに対して直接ライトデータの格納を指示し、
     前記ライトデータ格納を指示された前記複数の記憶デバイスは、前記サーバのメモリからライトデータを読み出して、前記記憶デバイスに格納した後、レスポンスを前記インタフェースデバイスに返信し、
     前記インタフェースデバイスは、前記複数の前記記憶デバイスからレスポンスを受領すると、前記プロセッサに、前記ライトコマンドに係るライト処理が完了したことを通知する、
    ことを特徴とする計算機システム。
  2.  前記ストレージ装置は、2以上の前記記憶デバイスから構成される論理ボリュームを定義しており、
     前記ライトコマンドは、前記ライトデータの書き込み先として前記論理ボリューム内の領域を特定する情報を含んでおり、
     前記ライトコマンドを受領した前記インタフェースデバイスは、前記ライトコマンドに含まれている前記ライトデータの書き込み先が、前記インタフェースデバイスに登録されている範囲内である場合、前記論理ボリュームを構成する前記記憶デバイスに対してライトデータ格納を指示する、
    ことを特徴とする、請求項1に記載の計算機システム。
  3.  前記計算機システムはストレージコントローラを有し、
     前記インタフェースデバイスは前記ライトコマンドに含まれている前記ライトデータの書き込み先が、前記インタフェースデバイスに登録されている範囲内でない場合、前記ストレージコントローラに前記ライトデータ格納を指示する、
    ことを特徴とする、請求項2に記載の計算機システム。
  4.  前記ストレージ装置は、前記インタフェースデバイスが直接ライトデータ格納を指示可能な論理ボリュームの領域と、前記論理ボリュームを構成する複数の前記記憶デバイスについての情報を前記インタフェースデバイスに通知し、
     前記インタフェースデバイスには、前記通知された情報に基づいて、前記情報を前記インタフェースデバイスに登録する、
    ことを特徴とする、請求項2に記載の計算機システム。
  5.  前記ライトコマンドにはさらに、前記ライトデータの格納されている、前記サーバのメモリアドレスが含まれており、
     前記ライトデータ格納を指示された前記複数の記憶デバイスはそれぞれ、前記インタフェースデバイスから前記ライトコマンドを取得し、前記ライトコマンドに含まれている前記メモリアドレスから前記ライトデータを読み出し、前記記憶デバイスに格納する
    ことを特徴とする、請求項2に記載の計算機システム。
  6.  前記記憶デバイスは、第1記憶領域と第2記憶領域を有し、
     前記ライトデータを格納する時、前記記憶デバイスは、前記第1記憶領域と前記第2記憶領域に前記ライトデータを格納する、
    ことを特徴とする、請求項1に記載の計算機システム。
  7.  前記記憶デバイスは、前記第2記憶領域に、前記ライトデータの圧縮データを格納する、
    ことを特徴とする、請求項6に記載の計算機システム。
  8.  前記記憶デバイスは、第1の経路及び第2の経路を介して前記インタフェースデバイスに接続され、
     前記インタフェースデバイスは、前記第1の経路を介して前記記憶デバイスに指示を出せない場合、前記第2の経路を介して前記記憶デバイスに指示を出す、
    ことを特徴とする、請求項1に記載の計算機システム。
  9.  前記サーバでは複数の仮想計算機が稼働しており、
     前記インタフェースデバイスは前記仮想計算機である、
    ことを特徴とする、請求項1に記載の計算機システム。
  10.  複数の記憶デバイスを有するストレージ装置と、
     プロセッサとメモリとインタフェースデバイスを有するサーバを有する計算機システムの制御方法であって、
     前記インタフェースデバイスが、前記プロセッサからライトコマンドを受領したことに応じて、前記ライトコマンドによりライト対象とされている複数の前記記憶デバイスに対して直接ライトデータ格納を指示し、
     前記ライトデータ格納を指示された前記複数の記憶デバイスが、前記サーバのメモリからライトデータを読み出して、前記記憶デバイスに格納した後、レスポンスを前記インタフェースデバイスに返信し、
     前記インタフェースデバイスが、前記複数の前記記憶デバイスからレスポンスを受領すると、前記プロセッサに前記ライトコマンドに係るライト処理が完了したことを通知する、
    ことを特徴とする計算機システムの制御方法。
  11.  前記ストレージ装置は、2以上の前記記憶デバイスから構成される論理ボリュームを複数定義しており、
     前記ライトコマンドは、前記ライトデータの書き込み先として前記論理ボリューム内の領域を特定する情報を含んでおり、
     前記ライトコマンドを受領した前記インタフェースデバイスは、前記ライトコマンドに含まれている前記ライトデータの書き込み先が、前記インタフェースデバイスに登録されている範囲内である場合、前記論理ボリュームを構成する前記記憶デバイスに対してライトデータ格納を指示する、
    ことを特徴とする、請求項10に記載の計算機システムの制御方法。
  12.  前記ストレージ装置は、前記インタフェースデバイスが直接ライトデータ格納を指示可能な論理ボリュームの領域と、前記論理ボリュームを構成する複数の前記記憶デバイスについての情報を前記インタフェースデバイスに通知し、
     前記インタフェースデバイスには、前記通知に基づいて、前記情報を前記インタフェースデバイスに登録する、
    ことを特徴とする、請求項11に記載の計算機システムの制御方法。
  13.  前記ライトコマンドにはさらに、前記ライトデータの格納されている、前記サーバのメモリアドレスが含まれており、
     前記ライトデータ格納を指示された前記複数の記憶デバイスはそれぞれ、前記インタフェースデバイスから前記ライトコマンドを取得し、前記ライトコマンドに含まれている前記メモリアドレスから前記ライトデータを読み出し、前記記憶デバイスに格納する、
    ことを特徴とする、請求項11に記載の計算機システムの制御方法。
  14.  前記記憶デバイスは、第1記憶領域と第2記憶領域を有し、
     前記記憶デバイスは前記ライトデータを格納する時、前記第1記憶領域と前記第2記憶領域に前記ライトデータを格納する、
    ことを特徴とする、請求項10に記載の計算機システムの制御方法。
  15.  前記記憶デバイスは、前記第2記憶領域に、前記ライトデータの圧縮データを格納する、
    ことを特徴とする、請求項14に記載の計算機システムの制御方法。
PCT/JP2015/066019 2015-06-03 2015-06-03 計算機システム WO2016194162A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/066019 WO2016194162A1 (ja) 2015-06-03 2015-06-03 計算機システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/066019 WO2016194162A1 (ja) 2015-06-03 2015-06-03 計算機システム

Publications (1)

Publication Number Publication Date
WO2016194162A1 true WO2016194162A1 (ja) 2016-12-08

Family

ID=57440391

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/066019 WO2016194162A1 (ja) 2015-06-03 2015-06-03 計算機システム

Country Status (1)

Country Link
WO (1) WO2016194162A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019105874A (ja) * 2017-12-08 2019-06-27 東芝メモリ株式会社 情報処理装置および方法
JP2019105873A (ja) * 2017-12-08 2019-06-27 東芝メモリ株式会社 メモリシステムおよび制御方法
WO2024043267A1 (ja) * 2022-08-25 2024-02-29 日東電工株式会社 データ処理装置および生体センサ

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200187A (ja) * 1993-12-30 1995-08-04 Hitachi Ltd ディスクアレイ装置
JP2000148652A (ja) * 1998-11-12 2000-05-30 Hitachi Ltd ディスクアレイ制御方法およびディスクアレイ制御装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200187A (ja) * 1993-12-30 1995-08-04 Hitachi Ltd ディスクアレイ装置
JP2000148652A (ja) * 1998-11-12 2000-05-30 Hitachi Ltd ディスクアレイ制御方法およびディスクアレイ制御装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019105874A (ja) * 2017-12-08 2019-06-27 東芝メモリ株式会社 情報処理装置および方法
JP2019105873A (ja) * 2017-12-08 2019-06-27 東芝メモリ株式会社 メモリシステムおよび制御方法
JP7048289B2 (ja) 2017-12-08 2022-04-05 キオクシア株式会社 情報処理装置および方法
WO2024043267A1 (ja) * 2022-08-25 2024-02-29 日東電工株式会社 データ処理装置および生体センサ

Similar Documents

Publication Publication Date Title
JP6600698B2 (ja) 計算機システム
US8984221B2 (en) Method for assigning storage area and computer system using the same
JP5620614B1 (ja) ストレージシステム
US8392670B2 (en) Performance management of access to flash memory in a storage device
JP6328335B2 (ja) ストレージ装置及びその制御方法
JP6898393B2 (ja) ストレージシステム及びデータ転送方法
US10191685B2 (en) Storage system, storage device, and data transfer method
JP2004213064A (ja) Raid装置及びその論理デバイス拡張方法
JP6663478B2 (ja) データ移行方法及び計算機システム
US10788999B2 (en) Information system, management program, and program exchange method of information system
JP6652647B2 (ja) ストレージシステム
US8566541B2 (en) Storage system storing electronic modules applied to electronic objects common to several computers, and storage control method for the same
US11740823B2 (en) Storage system and storage control method
WO2016194162A1 (ja) 計算機システム
WO2016013075A1 (ja) ストレージ、計算機およびその制御方法
WO2014147786A1 (ja) ストレージシステム及びデータ管理方法
JP6924671B2 (ja) データ書込み要求処理方法及びストレージアレイ
JP5597266B2 (ja) ストレージシステム
US20180307427A1 (en) Storage control apparatus and storage control method
WO2018055686A1 (ja) 情報処理システム
US20220391243A1 (en) Dynamically redistributing i/o jobs among operating system threads
US11822808B2 (en) Remotely replicating duplicated data
JP7113698B2 (ja) 情報システム
US20140208023A1 (en) Storage system and control method for storage system
JP6013420B2 (ja) ストレージシステム

Legal Events

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

Ref document number: 15894195

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: 15894195

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP