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

計算機システム Download PDF

Info

Publication number
WO2015194033A1
WO2015194033A1 PCT/JP2014/066419 JP2014066419W WO2015194033A1 WO 2015194033 A1 WO2015194033 A1 WO 2015194033A1 JP 2014066419 W JP2014066419 W JP 2014066419W WO 2015194033 A1 WO2015194033 A1 WO 2015194033A1
Authority
WO
WIPO (PCT)
Prior art keywords
server computer
storage
storage controller
command
server
Prior art date
Application number
PCT/JP2014/066419
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 US15/125,204 priority Critical patent/US20170102874A1/en
Priority to JP2016528751A priority patent/JP6286542B2/ja
Priority to PCT/JP2014/066419 priority patent/WO2015194033A1/ja
Publication of WO2015194033A1 publication Critical patent/WO2015194033A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Definitions

  • the present invention relates to a computer system including a nonvolatile memory device.
  • flash A flash memory device (hereinafter referred to as “flash”) has higher I / O (Input / Output) performance than an HDD (Hard Disk Drive).
  • I / O Input / Output
  • HDD Hard Disk Drive
  • SCSI Small Computer System Interface
  • OS Operating System
  • NVMe Non-Volatile Memory Express
  • This specification defines a streamlined set of registers whose functionality includes: ⁇ Indication of controller capabilities ⁇ Status for controller failures (command status is processed via CQ directly) ⁇ Admin Queue configuration (I / O Queue configuration processed via Admin commands) ⁇ Doorbell registers for scalable number of submission and Completion Queues
  • NVMe has the following key points: Does not require uncacheable / MMIO register reads in the command submission or completion path. ⁇ A maximum of one MMIO register write is necessary in the command submission path. ⁇ Support for up to 65,535 I / O queues, with each I / O queue supporting up to 64K outstanding commands. ⁇ Priority associated with each I / O queue with well-defined arbitration mechanism. ⁇ All information to complete a 4KB read request is included in the 64B command itself, ensuring efficient small I / O operation. ⁇ Efficient and streamlined command set. ⁇ Support for MSI / MSI-X and interrupt aggregation. ⁇ Support for multiple namespaces. ⁇ Efficient support for I / O virtualization architectures like SR-IOV. ⁇ Robust error reporting and management capabilities. ⁇ Support for multi-path I / O and namespace sharing.
  • Non-Patent Document 1 discloses a concept of sharing a namespace (hereinafter abbreviated as NS) from a plurality of hosts.
  • NS namespace
  • Non-Patent Document 2 improves server I / O performance by using a PCI-Express flash memory SSD (Solid State Drive) that interprets such NVMe-compliant commands (hereinafter abbreviated as NVMe commands).
  • PCI-Express is abbreviated as PCIe).
  • Capacity virtualization (thin provisioning) is known as a technology for improving storage usage efficiency.
  • the capacity virtualization the capacity of the virtual storage area is made larger than the capacity of the real storage area to the server, and the real storage area is allocated to the virtual storage area according to the amount of stored data.
  • Hierarchical control virtualization is also known as a technology for improving the storage performance / cost ratio.
  • Hierarchical control virtualization automatically stores frequently accessed data in high-speed storage tiers and automatically stores infrequently accessed data in low bit-cost storage tiers, allowing storage administrators to Reduce the burden of hierarchy management.
  • NVMe is an interface that reduces the delay in accessing the flash memory from the server.
  • the main access target is the flash memory on the PCIe add-on card in the server.
  • Non-Patent Document 1 discloses thin provisioning for a namespace that is a storage area.
  • the server can acquire the thin provisioning status by issuing an Identify command defined by NVMe to the storage.
  • NVM Express 1.1a Specification http://www.nvmexpress.org/wp-content/uploads/NVM-Express-1_1a.pdf
  • NVM Express: Unlock Your Solid State Drives Potential http://www.nvmexpress.org/wp-content/uploads/2013-FMS-NVMe-Track.pdf
  • Non-Patent Document 1 Although the shared concept of NS is disclosed in the NVMe standard disclosed in Non-Patent Document 1, the implementation form is not disclosed as disclosed below, and a computer system that realizes high-performance I / O is provided. Is not easy. "1.3 Outside of Scope The register interface and command set are specified apart from any usage model for the NVM, but rather only specifies the communication interface to the NVM subsystem. Thus, this specification does not specify whether the non-volatile memory system is used as a solid state drive , a main memory, a cache memory, a backup memory, a redundant memory, etc. Specific usage models are outside the scope, optional, and not licensed. "
  • a computer system includes a first server computer, a second server computer, a non-volatile memory device, and a non-volatile memory connected to the first server computer and the second server computer via PCI-Express.
  • a storage controller connected to the device.
  • the storage controller provides a virtual storage area shared by the first server computer and the second server computer, and the server computer that is each of the first server computer and the second server computer is a command conforming to the NVM-Express standard.
  • Stores a program that issues an NVM-Express command and the program accesses the virtual storage area via PCI-Express by issuing an NVM-Express command that specifies the namespace associated with the virtual storage area.
  • the storage controller allocates the storage area in the nonvolatile memory device to the virtual storage area based on the access.
  • the summary of an Example is shown.
  • the physical and logical configuration of CPF is shown.
  • the physical configuration and logical configuration of another CPF are shown.
  • the details of CPF when the NVMe interpretation site is candidate (3) are shown. Indicates the PCIe space in the server-side PCIe I / F device.
  • the relationship between NS of NVMe and the storage area of the storage controller is shown. It is a flowchart which shows the process relevant to a NVMe command. It is a flowchart which shows the starting method of CPF. Details of CPF when the NVMe interpretation site is candidate (2) are shown.
  • An example of the application form of CPF is shown.
  • the data structure in the storage controller 3 is shown.
  • An LU management table 351 is shown.
  • a virtual volume management table 352 is shown.
  • a pool management table 353 is shown.
  • a logical volume management table 354 is shown.
  • the virtual volume creation processing is shown.
  • the virtual volume creation screen is shown.
  • the logical volume registration process is shown.
  • the write processing for the virtual volume is shown.
  • Indicates NVMe command response processing Indicates the relationship between the Identify command response and storage capacity.
  • the virtual volume management table 352b when thin provisioning is applied and tearing is not applied is shown.
  • the pool management table 353b when thin provisioning is applied and tearing is not applied is shown.
  • the logical volume management table 354b when thin provisioning is applied and tearing is not applied is shown.
  • the virtual volume creation screen when thin provisioning is applied and tearing is not applied is shown.
  • the relationship between the response of the Identify command and the storage capacity when thin provisioning is not applied is shown.
  • An LU management table 351c in the case of applying tearing without applying thin provisioning is shown.
  • the information of the present embodiment will be described using the expression “table”.
  • the information may not necessarily be expressed by a data structure using a table.
  • it may be expressed by a data structure such as “list”, “DB (database)”, “queue”, or the like. Therefore, “table”, “list”, “DB”, “queue”, and the like can be simply referred to as “information” in order to show that they do not depend on the data structure.
  • the expressions “identification information”, “identifier”, “name”, “name”, “ID” can be used, and these can be replaced with each other. It is.
  • program will be the subject of the explanation, but since the program uses the memory and communication port (communication control device) to perform the processing determined by being executed by the CPU (Central Processing Unit), The description may be based on the CPU.
  • the processing disclosed with the program as the subject may be processing performed by a computer such as a server computer, a storage controller, a management computer, or an information processing apparatus. Part or all of the program may be realized by dedicated hardware, or may be modularized.
  • Various programs may be installed in each computer by a program distribution server or a storage medium.
  • Figure 1 shows a summary of the example.
  • the following explanation can be applied to the successor standard of NVMe that will appear in the future, and also to the successor standard of PCI-Express (Peripheral Component Interconnect Express: hereinafter abbreviated as PCIe). Applicable. If terms related to NVMe or PCIe are used, they should also be considered to indicate equivalent terms in the successor standards.
  • PCIe Peripheral Component Interconnect Express
  • the embodiment is described for NVMe targeting the current Block access. However, if access in byte or word units is defined by the NVMe standard, this embodiment can also be applied to those accesses. Needless to say.
  • nonvolatile memory devices using flash memory
  • nonvolatile memories other than flash memory such as FeRAM (Ferroelectric Random Access Memory), MRAM (Magnetoresistive Random Access Memory), phase change memory, etc. (Ovonic Unified Memory) and non-volatile memory devices using RRAM (registered trademark, Resistance RAM) may be applied.
  • FeRAM Feroelectric Random Access Memory
  • MRAM Magneticoresistive Random Access Memory
  • phase change memory etc.
  • RRAM registered trademark, Resistance RAM
  • NVMe is an I / F (Interface) standard for realizing high-speed access to flash memory SSDs.
  • high-speed access such as high IOPS (Input / Output per Second) and low latency is possible for flash memory SSDs.
  • IOPS Input / Output per Second
  • low latency is possible for flash memory SSDs.
  • the access latency which was 6.0 ⁇ s in the SSD adopting SCSI / SAS (Serial Attached SCSI) can be reduced to 2.8 ⁇ s by adopting NVMe. ing.
  • SCSI / SAS Serial Attached SCSI
  • the key point is as described above, but the memory access efficiency between CPU cores can be improved by using multiple I / O queues and not having to share one I / O queue among multiple cores.
  • NVMe is standardized and a wide range of flash memory devices are expected to support the NVMe standard. Therefore, it is expected that vendors of programs other than device drivers (typically application programs) directly issue NVMe commands and access flash memory devices at high speed.
  • device drivers typically application programs
  • flash memory device in this embodiment is a device having at least the following characteristics, and the flash memory SSD is one example: * Includes flash memory chips. * Includes a flash memory controller that: # In response to a read request from the outside, the data stored in the flash memory chip is transferred to the outside. Then, the data received together with the write request received from the outside is stored in the flash memory chip. # Erase the flash memory chip.
  • the computer system includes at least one or more server computers, one or more storage controllers, a flash memory device (may be abbreviated as “Flash” in the figure), and a communication mechanism. Each of these contents in the computer system may be referred to as a computer system component.
  • the computer system is preferably a Converged Platform.
  • Converged Platform is also called Converged Infrastructure and Converged System.
  • Converged may be replaced by the term “vertical integration”. In the present embodiment, these are hereinafter collectively referred to as a converged platform (sometimes abbreviated as CPF).
  • CPF has the following characteristics: * Products that include server computers, storage systems (including storage controllers and storage devices), and communication mechanisms that connect them. When an administrator of a company individually introduces a server computer and a storage system, the operation verification represented by such a connection check between the server computer and the storage system is performed by the administrator.
  • Some CPFs may include a management subsystem that executes a management program that collectively sets server computers, storage systems, and communication mechanisms. This management subsystem can quickly provide the execution environment (virtual machine, DBMS: Database Management System, Web server, etc.) desired by the administrator. For example, in order to provide a virtual machine having a necessary amount of resources, the management program requests allocation of necessary resources to the server computer and the storage system, and creates a virtual machine using the allocated resources. Request to.
  • Server computers (1) and (2) are units for storing and executing programs (1) and (2) for accessing the storage controller, respectively.
  • the programs (1) and (2) access the shared data area provided by the storage controller by issuing an NVMe command.
  • the part that provides the shared data area as the NS of NVMe will be described later.
  • the server computer includes at least a CPU, main memory (hereinafter abbreviated as memory), and RC.
  • the server computer may be, for example: * File server * Blade server system * PC (Personal Computer) server * Blade plugged into the blade server system
  • the programs (1) and (2) are, for example, business application programs (for example, Web server, DBMS, analysis program, middleware), programs that can create LPAR (Logical Partitioning) and virtual machines, OS, device drivers, However, other programs may be used.
  • business application programs for example, Web server, DBMS, analysis program, middleware
  • LPAR Logical Partitioning
  • the communication mechanism connects the server computer and the storage controller via PCIe.
  • PCIe Peripheral Component Interconnect Express
  • FC Fibre Channel
  • SAN Storage Area Network
  • Ethernet registered trademark
  • NVMe is premised on a communication mechanism based on PCIe. Therefore, the part that interprets the NVMe command from the server computer needs to be an endpoint in PCIe (hereinafter abbreviated as EP). Also, if the PCIe chipset does not allow sharing of EPs from multiple Root Complexes (hereinafter abbreviated as RC) (hereinafter referred to as “coexistence of multiple RCs”) (for example, MR-IOV: Multi-Root This restriction must also be considered when I / O Virtualization is not supported.
  • RC Root Complexes
  • the computer system includes one of three candidates.
  • the three candidates (1), (2), (3) (shown as NVMe I / F candidates (1), (2), (3) in the figure) are as follows: * Candidate (1): Flash memory device.
  • the storage controller and the flash memory device are connected by PCIe, and the flash memory device is an EP having a function conforming to NVMe.
  • the storage controller passes the NVMe command from the server computer to the flash memory device.
  • Candidate (2) Storage controller.
  • the server computer and the storage controller are connected by PCIe.
  • the intermediary device includes logic that provides an EP for each RC of the server computer, logic that provides another EP for the RC of the storage controller, and write data between the server computer and the storage controller. And the logic that mediates the transfer of read data.
  • PCIe was originally used as a communication path in server computers and storage systems, the communicable distance of PCIe is short compared to FC and Ethernet, and RC has a smaller number of communication nodes than can communicate with FC or Ethernet. Can communicate only with EP. Also, compared to communication protocols that run on FC and Ethernet, PCIe fault handling is weak. For this reason, the computer system that employs PCIe as the communication mechanism is preferably a CPF. This is because, by using CPF as the computer system, it is possible to eliminate the need for cabling of the communication mechanism between the server computer and the storage unit by the customer, so troubles due to the aforementioned weaknesses of PCIe are less likely to occur, resulting in highly reliable NVMe. Can provide access.
  • the candidate parts (1) to (3) for interpreting the NVMe command have the following merits.
  • Candidate (1) There is no or small processing overhead by the storage controller.
  • Candidate (1) can easily implement efficient NVMe queue control in consideration of the internal state of the flash memory device. This is because the part that interprets the NVMe command and the controller that performs wear leveling or reclamation of the flash memory device are the same or close. For example, although there are a plurality of I / O queues in NVMe, candidate (1) changes the way of extracting NVMe commands from a plurality of I / O queues based on the internal state.
  • Candidate (2) The enterprise function provided by the storage controller can be applied to NS of NVMe.
  • the candidate (2) can perform efficient NVMe queue control in consideration of the internal state of the storage controller. This is because the part that interprets the NVMe command and the storage controller are the same or close. For example, the candidate (2) can change the way of extracting NVMe commands from a plurality of I / O queues based on the internal state, and in accordance with the accumulation state of NVMe commands in the I / O queue, The control of other processes of the storage controller can be changed.
  • Candidate (3) Enterprise functions provided by the storage controller can be applied to NS of NVMe. Also, if the candidate (3) intermediary device converts the NVMe command into a SCSI request (SCSI command), the storage program executed by the storage controller can be executed at the execution code, intermediate code or source code level.
  • the storage controller uses the storage area of the flash memory device and provides high performance I / O processing.
  • the storage controller may have functions related to reliability, redundancy, high functionality, and ease of maintenance and management as provided by enterprise SAN storage subsystems.
  • the storage controller makes the flash memory device redundant, and provides a shared data area from the redundant storage area.
  • the storage controller enables device maintenance such as replacement, addition, and removal of a flash memory device without prohibiting or failing to access data stored in the shared data area (so-called non-stop).
  • non-stop non-stop
  • flash memory devices Unlike HDDs, flash memory devices have the property of shortening device life due to excessive writing. Therefore, the reliability as the computer system can be improved by providing the storage controller with such redundancy and non-stop maintenance.
  • the storage controller provides copy functions such as remote copy and snapshot for data stored by NVMe.
  • the storage controller is connected to the HDD as a storage device in addition to the flash memory device, thereby enabling tearing using these storage devices. Note that the storage controller may make the storage area provided by the HDD correspond to NS of NVMe.
  • the storage controller is not connected to the server computer (1) or (2), but from a computer system outside the computer system (including server computers and storage systems) or network devices (including SAN switches and Ethernet switches). Provide access over the network. As a result, the above-described remote copy can be performed, and storage consolidation including a computer system or network device outside the computer system can be provided, thereby improving flexibility.
  • the storage controller is configured to be inserted into the chassis of the blade server system.
  • a board such as a backplane for the PCIe connection between the blade that is the server computer and the storage controller, troubles associated with the PCIe connection can be reduced.
  • a blade server system chassis and a storage controller chassis in a single rack may be sold as a CPF.
  • the management subsystem is a subsystem that performs at least one of the following processes: * Receive requests from administrators or integrated management subsystems and make settings for computer system components according to requests. * Obtain information from computer system components and display it to the administrator or send it to the integrated management subsystem.
  • the information to be acquired includes, for example, performance information, failure information, setting information, configuration information, and the like.
  • the configuration information includes items that are fixed to the computer system and items that can be changed unless components are inserted and removed, and the setting information is an item that can be changed by setting, particularly among the configuration information. Note that these types of information may be collectively referred to as component information.
  • the information displayed to the administrator or transmitted to another computer may be the acquired component information as it is, or the information may be displayed or transmitted after being converted / processed according to some standard.
  • So-called automatic / autonomous management that automatically and autonomously configures computer system components based on the above component information.
  • the management subsystem may be in the following forms (including a mixture of these forms), but any form may be used as long as the above processing is performed.
  • a set of related functions and computers is a management subsystem.
  • a computer one or more) separate from the computer system component.
  • the management subsystem is a plurality of computers connected to the computer system via a network, for example, a computer such as a computer dedicated to a server computer, a computer dedicated to a storage controller, or a computer dedicated to display processing is included in the management subsystem. May be present.
  • the management subsystem is a BMC (Baseboard Management Controller) or an agent program.
  • the integrated management subsystem is a subsystem that integrates and manages managed devices represented by servers, storage systems, network devices (including SAN switches and Ethernet switches), and this computer system.
  • the integrated management subsystem is connected to the management subsystem and other managed devices via a network.
  • the integrated management subsystem may communicate with the managed device using a vendor-proprietary protocol, but SNMP (Simple Network Management Protocol) or SMI-S (Storage Management Initial-Specification) In some cases, communication with the management target device may be performed using a standardized protocol.
  • the integrated management subsystem includes one or more computers connected to the computer system via a network.
  • the vendor who provides the integrated management subsystem may differ from the vendor of this computer system.
  • the communication mechanism of this computer system is PCIe, so the integrated management subsystem can manage this computer system.
  • PCIe the communication mechanism of this computer system
  • An example of the reason is that the integrated management subsystem recognizes only the FC or Ethernet connection as the connection path between the server computer and the storage controller, and does not recognize the PCIe connection as the aforementioned connection path.
  • the integrated management subsystem assumes that the server computer and the storage controller are not connected, management items based on the assumption that such connection information exists cannot be applied to this computer system.
  • the management subsystem of this computer system converts the PCIe connection information into virtual SAN connection information by emulating the SAN connection to the PCIe connection of this computer system, and By transmitting SAN connection information to the integrated management subsystem, the SAN connection may be managed by the integrated management subsystem.
  • the emulation of SAN connection includes, for example, providing connection information or accepting a setting related to SAN connection (assigning Logical Unit to storage port).
  • the SAN to be emulated may be FC-SAN, IP (Internet Protocol) -SAN, or Ethernet-SAN.
  • this computer system may be introduced, and enterprises provided by the above storage controller without sharing data In order to apply the function to the data stored in NVMe, this computer system may be introduced. Also, if a business system has already been built using a program that issues NVMe commands in an environment that is not this computer system, an interface for vendor-proprietary flash memory devices must not be implemented for that program. However, there are cases where a business system can be constructed with this computer system.
  • Data sharing by NVMe has the following uses, for example: # Fast failover between multiple server computers.
  • the server computer (2) determines to perform a failover that takes over the processing by the server computer (1).
  • a local flash memory device (abbreviated as “Local Flash” in the figure) is connected to each of multiple server computers via a PCIe connection, and the NVMe command issuance destination of the server computer program is only the local flash memory device.
  • Local Flash Local flash memory device
  • # When multiple server computers perform parallel processing by accessing the shared data area in parallel with NVMe. One server computer writes data, and another server computer can immediately read the data.
  • the I / O processing capacity of the storage controller may become a bottleneck.
  • a flash memory device (referred to as a local flash memory device) capable of interpreting the NVMe command may be connected to each server computer via PCIe and occupied by the connected server computer.
  • the program executed on the server computer stores data that does not require application of data sharing and enterprise functions in the local flash memory device, and stores data that is desired to be applied to the data sharing or enterprise functions by the storage controller.
  • What is necessary is just to store in NS of NVMe which is a storage area provided.
  • the server computer (1) program processing is taken over by the server computer (2) due to a failure or load of the server computer (1)
  • the server computer (1) shares data necessary for takeover with shared data. Processing is executed by writing to and reading from the NS, which is the area, and data unnecessary for takeover is written to the local flash memory device.
  • Such setting may be performed manually, but may be performed automatically by the above-described management subsystem or integrated management subsystem.
  • these subsystems determine whether each NS can be shared by multiple server computers (or application of enterprise functions), and can be shared (or enterprise-based) based on the characteristics of programs executed on the server computers. Data for which application of the function is indispensable may be grasped, and it may be set so that the storage area for storing the data is properly used for the program executed by the server computer. Since the administrator of the program is not necessarily familiar with the configuration and characteristics of the computer system, the setting work load of the program by the administrator is reduced.
  • the management subsystem queries the computer system for the relationship between the NSID and the storage area of the storage controller.
  • the server computer program determines that it is a common NS from the information obtained by collecting information by specifying the NSID.
  • Fig. 2 shows the physical and logical configuration of CPF.
  • the CPF 1 in this figure includes a server computer 2, a storage controller 3, a flash memory device 5 as a storage device, and a management computer 7 as an example of a management subsystem.
  • the server computer 2 includes a management I / F 272 for connecting to the management computer 7.
  • the server computer 2 executes an application program 228 (may be simply referred to as an application), an OS 227, an NVMe control program 222, and a server management I / F control program 229 as examples of programs.
  • the connection between the management computer 7, the server computer 2 and the storage controller 3 can be considered to be Ethernet, but other physical / virtual connection forms may be used.
  • the server management I / F control program 229 communicates with the management computer 7 by controlling the management I / F 272.
  • the NVMe control program 222 is a program that issues an NVMe command to the PCIe I / F 262.
  • the program 222 may be a part of another program stored in the server computer 2 or may be a program different from other programs stored in the server computer 2.
  • the application program 228 issues an NVMe command
  • a device driver in the OS 227 issues an NVMe command.
  • the PCIe I / F 262 transmits an NVMe command to the PCIe I / F 362 according to the operation of the NVMe control program 222, receives a response to the NVMe command from the PCIe I / F 362, and returns the response to the NVMe control program 222.
  • the storage controller 3 includes a management I / F 382 for connecting to the management computer 7 and a flash I / F 372 for connecting to the flash memory device 5.
  • the connection between the flash I / F 372 and the flash memory device 5 is preferably a PCIe connection when the flash memory device 5 interprets the NVMe command. Otherwise, SAS or SATA (Serial Advanced Technology Attachment) is used. Or FC or Ethernet, or another communication mechanism may be used.
  • the storage controller 3 executes the storage program 320.
  • the storage program 320 includes, for example, a PCIe I / F control program 322, a flash I / F control program 323, and a management I / F control program 324 that control communication with each interface.
  • the PCIe I / F control program 322 communicates with the server computer 2 by controlling the PCIe I / F 362.
  • the flash I / F control program 323 communicates with the flash memory device 5 by controlling the flash I / F 372.
  • the management I / F control program 324 communicates with the management computer 7 by controlling the management I / F 382.
  • the entities of the PCIe I / F 262 and the PCIe I / F 362 are, for example, the server-side PCIe I / F device 4 shown in FIG. 4 and the storage-side PCIe I / F device 8 shown in FIG.
  • FIG. 3 is a diagram showing the physical configuration and logical configuration of another CPF.
  • Fig. 2 The difference from Fig. 2 is that NVMe and SCSI are used together as an I / O request from the server computer 2 to the storage controller 3.
  • the SCSI control program 224 issues a SCSI request to the SCSI function of the PCIe I / F 262 (SCSI Func. In the figure) to the LUN provided by the storage controller 3 in response to a request from another program.
  • the SCSI control program 224 is, for example, a SCSI device driver. This program may be a part of another program stored in the server computer 2 or may be a program different from the other program stored in the server computer 2.
  • a device driver in the OS 227 may issue a SCSI request.
  • the NVMe function NVMe Func. In the figure
  • the SCSI function transmits a SCSI command to the PCIe I / F 362 in accordance with the operation of the SCSI control program 224, receives a response to the SCSI command from the PCIe I / F 362, and returns the response to the SCSI control program 224.
  • the PCIe I / F 362 is to be a multi-function is determined by whether or not the NVMe command is interpreted by the mediation device.
  • the booting of the server computer 2 means that the BIOS (Basic Input / Output System) program of the server computer 2 needs to be mounted so that an EP having a boot device can be handled.
  • the EP here is, for example, a SCSI HBA (Host Bus Adapter) or a PCIe I / F device (NVMe function or SCSI function).
  • SCSI HBA Hyper Bus Adapter
  • PCIe I / F device NVMe function or SCSI function
  • the specific implementation method is as follows: # The BIOS program obtains the device driver program for the BIOS program from the discovered EP and executes it. # The BIOS program itself includes a driver program for NVMe.
  • the server computer 2 has the following three types.
  • the server computer 2 included in the CPF 1 may be only one type of the above (A) to (C), a combination of any two types of (A) to (C), or ( There may be three types of combinations of A) to (C).
  • FIG. 4 is a detailed diagram of CPF1 when the above-described NVMe interpretation site is candidate (3).
  • PCIe connection between the server computer 2 and the storage controller 3 is performed via a switch, it is omitted in the figure.
  • the server computer 2 includes a CPU 21, a main memory 22 (abbreviated as Mem in the figure, and may be referred to as the memory 22 in the following description), an RC 24, and a server-side PCIe I / F device 4.
  • the RC 24 and the server side PCIe I / F device 4 are connected by PCIe.
  • the RC 24 and the CPU 21 are connected via a network faster than PCIe.
  • the memory 22 is connected to the CPU 21 and the RC 24 via a memory controller (not shown) via a high-speed network.
  • Each program executed by the server computer 2 described so far is loaded into the memory 22 and executed by the CPU 21.
  • the CPU 21 may be a CPU core.
  • the RC 24, the CPU 21, and the memory controller may be combined into one LSI package.
  • the server-side PCIe I / F device 4 is an example of the aforementioned mediation device.
  • the server side PCIe I / F device 4 may be arranged outside the server computer 2.
  • the server-side PCIe I / F device 4 is a device having the following characteristics: * Interprets NVMe commands issued by programs executed by the CPU 21. * Provide EP41 for RC24. * Provide another EP 42 to the RC 33 included in the storage controller 3.
  • the storage controller 3 includes a plurality of RCs and the device 4 needs to communicate with each of the storage controllers 3, the device 4 provides another EP 42 to each RC.
  • the server-side PCIe I / F device 4 here provides two EPs 42 to the two RCs 33 in the storage controller 3, respectively.
  • the server-side PCIe I / F device 4 has a logic for providing a plurality of EPs 42 corresponding to a plurality of server computers 2, a logic for providing EP 41, and a SCSI command based on the NVMe command.
  • EP41 corresponds to the PCIe I / F 262 in FIG. 2
  • EP42 corresponds to the PCIe I / F 362.
  • the server-side PCIe I / F device 4 may include logic for issuing a SCSI request based on the SCSI request issued by the CPU 21 to the storage controller 3 as logic corresponding to the SCSI function of FIG.
  • Each of these logics may be realized by hardware such as a dedicated circuit, or may be realized by a processor that executes software.
  • server-side PCIe I / F device 4 has both the NVMe function and the SCSI function, so that there are, for example, one or more of the following advantages compared to mounting these functions on separate boards: *lowering cost. * Reduced space for inserting PCIe-connected devices in Server Computer 2. * Reduce the number of PCIe slots used in server computer 2. In particular, when the above-described multi-function is realized in this candidate (3), the logic for the server-side PCIe I / F device 4 to send a SCSI request to the storage controller 3 can be shared among the functions. Reduction is possible.
  • the server computer 2 may include the local flash memory device 23 (abbreviated as “Flash” in the figure) as described above.
  • the local flash memory device 23 is connected to the RC 24 by PCIe.
  • the Local flash memory device 23 and the server-side PCIe I / F device 4 are described as communicating via the RC 24, but they may or may not communicate via the RC 24. May be.
  • the storage controller 3 includes one or more (two in the figure) control units 36 (abbreviated as CTL unit in the figure).
  • Each control unit 36 includes a CPU 31, a main memory 32 (abbreviated as Mem in the figure, and may be referred to as the memory 32 in the following description), an RC 33, and a flash I / F 372.
  • the RC 33, the server-side PCIe I / F device 4, and the flash I / F 372 are connected by PCIe.
  • RC 33 and CPU 31 are connected via a network faster than PCIe.
  • the main memory 32 is connected to the CPU 31 and the RC 33 via a memory controller (not shown) via a high-speed network.
  • Each program executed by the storage controller 3 such as the storage program 320 described so far is loaded into the memory 32 and executed by the CPU 31.
  • the CPU 31 may be a CPU core.
  • the RC 33, CPU 31, and memory controller may be combined into one LSI package.
  • Each control unit 36 may include a disk I / F 34 for connection to the HDD 6.
  • the flash I / F 372 and the disk I / F 34 are the same interface type, these two I / Fs may be shared.
  • the disk I / F 34 may be SAS, SATA, FC, or Ethernet, but other communication mechanisms may be used.
  • the flash I / F 372 (or disk I / F 34) and the server-side PCIe I / F device 4 are described to communicate via the RC 33, but the flash I / F 372 (or the disk I / F 34) may communicate via the RC 33. It may not be possible to communicate. This also applies to the flash I / F 372 and the disk I / F 34.
  • control unit 36 there may be a plurality of components included in the control unit 36.
  • control units 36 can communicate with each other, and in the figure, the RC 33 is described as being connected by PCIe as an example. In addition, when connecting between RC33 by PCIe, it communicates via NTB (Non-transparent Bridge) which is not illustrated. Note that another mechanism may be used for communication between the control units 36.
  • FIG. 5 is an enlarged view centering on the server-side PCIe I / F device 4 of FIG.
  • the PCIe space 241 is a space controlled by the RC 24 in the server computer 2
  • the PCIe space 331 is a space controlled by the RC 33 in the storage controller 3.
  • the server-side PCIe I / F device 4 can connect the PCIe link for RC24 and the PCIe link for RC33 to separate each PCIe space, and operates as an EP in each link.
  • disk I / F 34 and the flash I / F 372 may exist in a PCIe space different from the PCIe space 331.
  • FIG. 6 is a diagram showing the relationship between the NVMe NS and the storage area of the storage controller 3.
  • the storage controller 3 manages the following storage areas.
  • Parity group It is defined using a plurality of storage devices (flash memory device 5 and HDD 6). As a result, high reliability, high speed, and large capacity are achieved by RAID (Redundant Arrays of Inexpensive Disks).
  • Logical volume It is an area obtained by dividing the storage area of the parity group. Since the storage area of the parity group may be too large to be provided to the server computer as it is, a logical volume exists.
  • Pool It is a group that includes storage areas used for thin provisioning and tearing.
  • the logical volume is assigned to the pool, but the parity group and the storage device itself may be directly assigned to the pool.
  • Virtual volume It is a virtual storage area defined by using a pool and to which thin provisioning or / and tiering is applied. In the following description, a term indicating a logical volume and a virtual volume may be referred to as “volume”.
  • Logical Unit Logical unit, hereafter referred to as LU). It is a storage area that allows access from the server computer 2 in the virtual volume or logical volume.
  • a Logical Unit is assigned a SCSI LUN (Logical Unit Number).
  • the storage controller 3 does not have to provide all types of storage areas.
  • NS may be associated with any type of these storage areas. However, NS is more preferably associated with Logical Unit. This is because the storage program 320 is easily compatible with the storage program 320 of the SAN storage system, and the definition of the storage area is also highly compatible with the SAN storage system.
  • the Logical Unit LUN that is not associated with the NS may be referred to as a SCSI LUN.
  • the storage program 320 performs the following processing (not necessarily all): * Receive, interpret and process SCSI requests. For example, if the SCSI request is a read request, the storage program 320 reads data from a storage device such as the flash memory device 5 or the HDD 6 and transfers it to the server computer 2. At that time, the main memory 32 of the storage controller 3 may be used as a cache memory. For example, if the SCSI request is a write request, write data is stored in the cache memory, and then the write data is written to the storage device. * RAID processing for parity groups. * Define the storage area provided by the storage controller 3. The defined result is stored as storage area definition information in the main memory 32 of the storage controller 3 and is referred to in the request processing described above. * Other processing for enterprise functions such as thin provisioning.
  • the server-side PCIe I / F device 4 generates a SCSI command based on the NVMe command received from the server computer 2 and transmits it to the storage controller 3.
  • FIG. 7 is a flowchart showing NVMe command processing related to the NVMe command performed between the server computer 2, the server-side PCIe I / F device 4 and the control unit 36. The following processing is applied when the NVMe command is read or / and write, but may be applied to other NVMe commands.
  • the processing procedure is as follows. The following steps assume a case where the storage controller 3 includes a plurality of control units 36, each control unit 36 includes a plurality of CPUs 31, and the logical unit corresponds to NS: (S8110)
  • the server computer 2 transmits an NVMe command by the processing of the above-described program.
  • the NVMe command can specify the target NS by including the NSID.
  • the NVMe command also includes the access range in the NSID and the memory range of the server computer 2.
  • the server side PCIe I / F device 4 receives the NVMe command.
  • the server-side PCIe I / F device 4 interprets the received NVMe command, and converts the NSID included in the command into a corresponding LUN.
  • the server-side PCIe I / F device 4 generates a SCSI command including the converted LUN.
  • the server-side PCIe I / F device 4 determines the control unit 36 and the CPU 31 that are the transmission destinations of the generated SCSI command.
  • the server-side PCIe I / F device 4 transmits the generated SCSI command to the determined transmission destination.
  • the CPU 31 of the destination control unit 36 receives the SCSI command and processes the received SCSI command.
  • the transmission and reception of the NVMe command in S8110 and S8112 are the following processes: (A) The program being executed in the server computer 2 registers the NVMe command in the I / O queue prepared in the memory 22 of the server computer 2, (B) The program being executed on the server computer 2 increments the head pointer of the I / O queue in the NVMe register space of EP41 of the server side PCIe I / F device 4, (C) The server-side PCIe I / F device 4 detects the increment of the head pointer of the I / O queue and fetches the NVMe command from the I / O queue of the memory 22 of the server computer 2.
  • a plurality of NVMe commands may be fetched in (C).
  • the server-side PCIe I / F device 4 performs the steps after S8114 for each NVMe command.
  • S8114 to S8124 may be repeatedly executed serially for each NVMe command, or may be executed in parallel.
  • the server-side PCIe I / F device 4 uses the write data stored in the memory 22 of the server computer 2 as the storage controller 3 To the memory 32. If the NVMe command is read, the server side PCIe I / F device 4 transfers the read data stored in the memory 32 of the storage controller 3 to the memory 22 of the server computer 2.
  • the conversion from NSID to LUN in S8114 can be performed, for example, by any one of the following or in combination: *
  • the server-side PCIe I / F device 4 converts NSID to LUN using a predetermined conversion formula (which may include bit operations).
  • the server-side PCIe I / F device 4 can convert from a LUN to an NSID by an inverse conversion formula that forms a pair with a predetermined conversion formula.
  • the server-side PCIe I / F device 4 stores a conversion table for obtaining a LUN from the NSID in the memory of the server-side PCIe I / F device 4 and refers to it during conversion.
  • the server-side PCIe I / F device 4 may receive the SCSI command issued from the server computer 2 in S8112. In this case, although the subsequent S8114 and S8116 are omitted, the server-side PCIe I / F device 4 determines whether the received command is an NVMe command or a SCSI command.
  • the destination determination method in S8118 may be determined based on the following criteria, but may be determined based on other criteria: * Check whether the control unit 36 or CPU 31 is faulty.
  • the server-side PCIe I / F device 4 stores the state of the control unit 36 obtained as a result of transmission, and transmits it to the control unit 36 in which no failure has occurred based on the stored state.
  • (A) the storage controller 3 or the management computer 7 acquires the load of the control unit 36 or the CPU 31, and sets the control unit 36 or the CPU 31 that is the transmission destination of the SCSI command generated by the request addressed to each NS.
  • the server-side PCIe I / F device 4 that has received the determination result and transmits a SCSI command based on the determination result.
  • the server side PCIe I / F device 4 may generate an FCP (Fibre Channel Protocol) command including the generated SCSI command in addition to the generation of the SCSI command in S8116, and may transmit it as an FCP command in S8118.
  • FCP Fibre Channel Protocol
  • the storage program 320 can perform control (access control, priority control, etc.) using a communication identifier on the SAN such as a port ID generated from a WWN (World Wide Name) or WWN, or an IP address.
  • Compatibility with SAN storage subsystem can be maintained. This has both a storage program perspective and an operational perspective.
  • the integrated management subsystem can acquire the connection between the server computer 2 and the storage controller 3.
  • the server side PCIe I / F device 4 When sending an FCP command, the server side PCIe I / F device 4 has the following: * Virtual server port corresponding to EP 41 (virtual WWN is assigned). * Virtual storage port (virtual WWN is assigned) corresponding to EP42. The virtual storage port is recognized and handled by the storage program 320 in the same manner as a normal SAN port.
  • the management subsystem can specify which volume is the NVMe NS by defining a Logical Unit for the virtual storage port.
  • the storage controller 3 that has received the instruction of S03 performs the following processing: (S03-1) The storage controller 3 selects the server-side PCIe I / F device 4 corresponding to the designated virtual storage port. (S03-2) The storage controller 3 defines a Logical Unit corresponding to the designated volume (that is, assigns a LUN to the designated volume). (S03-3) The storage controller 3 notifies the assigned LUN to the selected server-side PCIe I / F device 4. The server-side PCIe I / F device 4 becomes NS by assigning an NSID to the notified LUN. In this allocation process, the server-side PCIe I / F device 4 generates an NSID, and generates / registers the information when the NSID / LUN conversion information is used.
  • the above is the description of the processing flow of the management subsystem.
  • the administrator can designate which server computer 2 the volume is provided as NVMe by designating the virtual storage port. This is because each server-side PCIe I / F device 4 has a virtual storage port and the device 4 is not shared by a plurality of server computers 2.
  • the storage controller 3 has a performance monitoring function for the Logical Unit
  • the server computer 2 that applies the load to the Logical Unit is determined as one, so that the server computer 2 that causes the load can be quickly identified. Can do.
  • the above Logical Unit definition is made for each virtual storage port of the server computer 2 to be shared.
  • FCP has been explained specifically.
  • PDU Protocol Data Unit
  • Ethernet frame of iSCSI Internet Small Computer System Interface
  • Ethernet frame is targeted
  • the WWN in the above explanation is the IP address.
  • MAC Media Access Control
  • the WWN described above may be replaced with a communication identifier (meaning including WWN, IP address, or MAC address).
  • the management subsystem may provide a setting mode for guarding the Logical Unit definition for the SAN port for the NVMe NS volume. This is because in the operation mode in which only temporary data is stored in NS, the Logical Unit for the SAN port is the source of unintended data update. In addition, when the volume is recognized by the OS through both the NS and SAN LUN paths, the OS may recognize each as a separate storage area and perform update processing that causes data inconsistencies. . This guard mode can also avoid such data inconsistencies.
  • FIG. 8 is a flowchart showing a method for starting CPF1.
  • S1531, S1532, S1533, S1534 When the storage controller 3 detects that the power is turned on, the storage controller 320 starts the storage program 320, performs virtual volume creation processing described later, and enters a state of accepting access to the Logical Unit.
  • the storage controller 3 transmits Logical Unit information (LUN, etc.) to the server side PCIe I / F device 4.
  • the storage controller 3 may transmit in response to a request from the server side PCIe I / F device 4 or may transmit independently.
  • S1521) The server computer 2 and the server-side PCIe I / F device 4 detect power ON.
  • the server-side PCIe I / F device 4 is activated and recognizes the Logical Unit by receiving the Logical Unit information received from the storage controller 3. (S1544)
  • the server-side PCIe I / F device 4 generates NS information (NSID or the like) corresponding to the recognized Logical Unit and transmits it to a program executed by the server computer 2.
  • NS information NSID or the like
  • the server side PCIe I / F device 4 transmits in response to a request from the program of the server computer 2, but the server side PCIe I / F device 4 may transmit independently. This step may be performed as part of the activation of the device 4 or may be performed after the activation.
  • the server computer 2 starts programs such as the OS 227 and the application 228, and a program that requires NS recognition waits for reception of NS information (NSID, etc.).
  • S1523 A program that requires NS recognition in the server computer 2 receives NS information from the server-side PCIe I / F device 4. Note that, as shown in the figure, the activation of the storage controller 3 and the server-side PCIe I / F device 4 has been completed when the reception of S1523 is performed. This step may be performed as part of the activation of S1522, or may be performed after the activation.
  • the NVMe command processing described in FIG. 7 is performed.
  • the storage controller 3 and the server computer 2 (and the server-side PCIe I / F device 4) are turned on independently.
  • the storage controller 3 may instruct the server computer 2 (and the server-side PCIe I / F device 4) to turn on the power.
  • FIG. 9 is a detailed diagram of CPF1 when the above-described NVMe interpretation site is candidate (2).
  • the differences from FIG. 4 are as follows: * The server side PCIe I / F device 4 has been replaced with a PCIe switch (SW) 9. * A storage-side PCIe I / F device 8 has been newly installed in the storage controller 3.
  • This device 8 is the same as the server-side PCIe I / F device 4, but this device 8 is provided in order to solve the above-mentioned “multiple RC coexistence” problem by providing the EP 51 to each server computer 2. 8, the number of EPs 51 connected to the server computer 2 is equal to or greater than the number of server computers 2. Further, the device 8 provides the EP 52 to the RC 33 in the storage controller 3.
  • the NVMe command processing of the storage-side PCIe I / F device 8 may be processed according to the flow described with reference to FIG. 7. However, as illustrated in FIG. An efficient NVMe queue control may be performed in consideration of the state. For example, NVMe command processing lowers the priority of fetching from the queue of NVMe related to the NS to which the HDD with load concentration or faulty HDD is assigned.
  • the storage-side PCIe I / F device 8 may convert the NVMe command into a command format other than SCSI, or may transmit the NVMe command to the storage program 320 as it is.
  • the old system includes a server computer (1), a server computer (2), two local flash memory devices (abbreviated as NVMe Local Flash in the figure), a storage controller, and a storage device.
  • the two local flash memory devices are connected to the server computers (1) and (2) by PCIe, respectively.
  • the storage controller is connected to the server computers (1) and (2) by FC.
  • the server computer (1) executes an application.
  • the storage controller uses a storage device to provide a Logical Unit that supports SCSI (shown as SCSI Logical Unit in the figure).
  • the application stores temporarily generated data in the NS of a local flash memory device that supports NVMe, and stores non-temporary data in a Logical Unit provided by the storage controller. This realizes high-speed application processing.
  • the server computer (1) stops, the server computer (2) resumes the processing of the application.
  • the server computer (2) reads the data from the Logical Unit via FC and resumes the processing.
  • the CPF includes a server computer (1), a server computer (2), a storage controller, and a flash memory device (abbreviated as “Flash” in the figure).
  • CPF uses a flash memory device connected to a storage controller instead of a local flash memory device connected to each server computer.
  • the storage controller uses a flash memory device to provide a logical unit that supports SCSI and a namespace that supports NVMe (denoted as NVMe Namespace in the figure).
  • the application of the server computer (1) executes processing by writing temporary data to the shared data area NS and reading the temporary data from the NS.
  • the server computer (2) When it is determined that the server computer (2) takes over the application processing of the server computer (1) to the server computer (2) due to a failure of the server computer (1), the server computer (2) Read data and execute the process.
  • Such a configuration provides the following benefits: * Maintenance of flash memory devices can be consolidated. * Reliability, redundancy, high functionality, and ease of maintenance and management can be improved by using storage controller enterprise functions for flash memory devices.
  • the application settings are changed and the temporary data stored in the NS is taken over between server computers, the time required for switching from the server computer (1) to the server computer (2) due to a failure can be shortened.
  • MTBF Machine Time Between Failure
  • it is easy to switch between server computers improving ease of maintenance and management.
  • non-temporary data that was previously stored in the SCSI Logical Unit can be stored in the NVMe NS, further improving application processing performance.
  • Thin provisioning provides a virtual volume to the server computer 2, and allocates a storage area in the pool to the virtual volume based on access from the server computer 2 to the virtual volume. Thin provisioning is also called capacity virtualization. In the tearing, data written from the server computer 2 is arranged in any of a plurality of types of storage media. Tiering is also called hierarchical control virtualization or automatic layering.
  • FIG. 11 shows a data structure in the storage controller 3.
  • the storage controller 3 stores an LU management table 351, a virtual volume management table 352, a pool management table 353, a logical volume management table 354, and a mapping management table 355 in the memory 32.
  • FIG. 12 shows the LU management table 351.
  • the LU management table 351 includes an entry for each LU.
  • An entry corresponding to one LU includes a LUN, a volume type and volume number, and an LU capacity.
  • the LUN is an identifier indicating the LU.
  • the volume type is a type of volume assigned to the LU, and indicates whether the volume is a virtual volume or a logical volume.
  • the volume number is a virtual volume number or a logical volume number indicating the volume according to the volume type.
  • the LU capacity is the capacity of the volume. When the LU is accessed by the server computer 2 using NVMe, the NS capacity is the LU capacity. In an LU using thin provisioning, the volume type indicates a virtual volume, and the volume number indicates a virtual volume number.
  • the volume type indicates a logical volume
  • the volume number indicates a logical volume number. Since a LUN has an independent number space for at least each storage port (including virtual storage ports), there may be a plurality of this table, and more specifically, each storage port.
  • FIG. 13 shows the virtual volume management table 352.
  • the virtual volume management table 352 includes an entry for each virtual volume.
  • the entry corresponding to one virtual volume includes a virtual volume number, a virtual volume attribute, a virtual volume capacity, a used pool number (#), and a used Tier number (#).
  • the virtual volume number is the volume number of the virtual volume.
  • the virtual volume attribute is a protocol on the server computer 2 side that accesses the virtual volume, and indicates whether it is NVMe or SCSI.
  • the virtual volume capacity is the volume capacity of the virtual volume, and is set by the administrator of the storage controller 3 when the virtual volume is created.
  • the used pool number is a pool number indicating a pool associated with the virtual volume.
  • the used Tier number is a Tier number indicating a Tier associated with the virtual volume. The smaller the Tier number, the higher the performance of the storage device.
  • an SSD is assigned as a Tier 1 storage device, a SAS HDD with a lower access performance and lower cost than SSD as a Tier 2 storage device, and a SCSI with lower access performance and lower cost than a SAS HDD as a Tier 3 storage device HDD is allocated.
  • data written by designating virtual volume # 1 by the SCSI command is stored in any one of Tiers 1 to 3.
  • Data written by designating virtual volume # 2 by the SCSI command is stored in either Tier 1 or 2.
  • Data written by designating virtual volume # 3 by the NVMe command is stored in either Tier 1 or 2.
  • the cost of the storage device can be reduced.
  • Data written by designating virtual volume # 4 by the NVMe command is always stored in Tier 1.
  • a high-performance shared data area can be provided.
  • Two virtual volumes # 1 and # 2 accessed by SCSI share one pool # 1.
  • Two virtual volumes # 3 and # 4 accessed by NVMe are associated with two pools # 2 and # 3, respectively.
  • the server computer 2 can selectively use the access performance and the cost of the storage medium depending on the protocol used for access.
  • the server computer 2 can selectively use the access performance and the cost of the storage medium depending on the protocol used for access.
  • the server computer 2 can fix the volume accessed by the NVMe command to the highest hierarchy such as a flash memory, it is possible to achieve easy management by introducing a pool or tier while maintaining high-speed access by the flash memory.
  • FIG. 14 shows the pool management table 353.
  • the pool management table 353 includes an entry for each pool.
  • the entry corresponding to one pool includes a pool number (#), a pool attribute, a pool capacity, an allocated capacity, a depletion threshold, and a registered logical volume number (#).
  • the pool number is an identifier indicating the pool.
  • the pool attribute is a protocol associated with the pool, indicates whether the server computer 2 uses NVMe or SCSI for access, and is set by the administrator when the pool is created.
  • the pool capacity is the capacity of the pool, and is the total capacity of the logical volumes registered in the pool.
  • the allocated capacity indicates the total capacity of pages allocated from the pool to the virtual volume.
  • the depletion threshold is a threshold of the ratio of allocated capacity to pool capacity.
  • the storage controller 3 When the ratio of the allocated capacity to the pool capacity of the pool exceeds the depletion threshold, the storage controller 3 notifies the management computer 7 of an alert requesting that a logical volume be added to the pool.
  • the registered logical volume number is a logical volume number indicating a logical volume registered in the pool, and is set for each Tier. This indicates that a logical volume cannot be added to a tier that has been previously set to “prohibited” in the logical volume number.
  • the storage controller 3 can allocate a logical volume for each Tier to the pool. Further, the storage controller 3 can detect the shortage of the pool capacity by managing the pool capacity and the allocated capacity, and can notify the administrator.
  • FIG. 15 shows the logical volume management table 354.
  • the logical volume management table 354 includes an entry for each logical volume.
  • An entry corresponding to one logical volume includes a logical volume number (#), a storage medium, a logical volume capacity, a registration destination pool number (#), and a registration destination LUN.
  • the logical volume number is an identifier of the logical volume.
  • the storage medium is an identifier representing the type of the storage medium that constitutes the logical volume, and indicates, for example, any one of SSD, SAS (HDD), and SATA (HDD).
  • the logical volume capacity is the capacity of the logical volume.
  • the registration destination pool number is the pool number of the registration destination pool of the logical volume.
  • the registration destination LUN is the LUN of the registration destination LU of the logical volume.
  • a logical volume When using thin provisioning, a logical volume is associated with a pool. When thin provisioning is not used, a logical volume is associated with an LU. A logical volume that is not associated with either a pool or an LU is a spare logical volume.
  • the storage controller 3 registers the logical volume added by the administrator in the logical volume management table 354 as a spare logical volume. The spare logical volume is added to the pool when the pool capacity is depleted, for example.
  • a plurality of different storage media are allocated to a pool having a plurality of Tiers.
  • the SSD may have an interface such as PCIe or SAS.
  • the plurality of types may be assigned to a plurality of Tiers, respectively.
  • the storage controller 3 can manage the type of storage medium allocated to the logical volume. Thereby, the storage controller 3 can allocate a storage medium suitable for the Tier to the logical volume.
  • the mapping management table 355 includes a first relationship between a virtual page in the virtual volume and a logical page in the logical volume assigned to the pool, a logical volume address (referred to as a logical volume logical address), and a storage device address (stored in the storage). A second relationship with the device logical address).
  • a virtual page refers to an individual space obtained by dividing the address space of a virtual volume by a predetermined length.
  • a logical page refers to an individual space obtained by dividing an address space of a logical volume by a predetermined length (typically the same length as that of a virtual page).
  • the entry representing the first relationship includes information representing a virtual page (for example, a combination of virtual volume # and virtual volume logical address) and information representing a logical page assigned to the virtual page (for example, logical volume # and logical volume).
  • a set of logical addresses) is registered.
  • the access specifying the address of the virtual volume can be converted into the address of the logical volume assigned to the pool.
  • a logical page may not be assigned to a virtual page.
  • the information representing the logical page contains a value representing “not assigned”.
  • the contents representing the first relationship may be in other forms as long as thin provisioning can be realized, and does not exclude the inclusion of other information. For example, a page number may be assigned to each of the virtual page and the logical page, and the allocation relationship may be expressed by the page number.
  • the method of expressing the second relationship depends on the relationship between the logical volume, the parity group, and the storage device shown in FIG. 6, but the point is that the logical volume logical address can be converted into the storage device logical address. If one logical volume corresponds to only one parity group, the second relation is that the address space in the parity group associated with the identifier of the parity group to which the logical volume corresponds is an entry. Further, if one storage device is not allocated across a plurality of parity groups, the identifier list of the storage devices included in the parity group becomes a part of the entry. Note that the second relationship may be expressed in other forms.
  • the storage controller 3 can acquire the address in the logical volume corresponding to the address in the virtual volume.
  • the storage controller 3 can acquire an address in the storage device corresponding to an address in the logical volume.
  • FIG. 16 shows a virtual volume creation process
  • the virtual volume creation process includes the following processes: (S2110) When the administrator displays a virtual volume creation screen on the management computer 7 and inputs a virtual volume creation instruction on the screen, the management computer 7 issues the command to the storage controller 3. (S2120) Thereafter, the storage controller 3 determines whether or not the virtual volume attribute of the virtual volume is NVMe based on the instruction. When it is determined that the virtual volume attribute is not NVMe, that is, the virtual volume attribute is SCSI (SCSI), the storage controller 3 shifts the processing to S2150. On the other hand, when it is determined that the virtual volume attribute is NVMe (NVMe), the storage controller 3 shifts the process to S2130.
  • SCSI SCSI
  • NVMe NVMe
  • the storage controller 3 adds an entry for the NVMe pool to the pool management table 353, and sets permission or prohibition of logical volume registration for each Tier based on the instruction. (S2140) Thereafter, the storage controller 3 performs a logical volume registration process for registering a logical volume by designating the pool. (S2150) Thereafter, the storage controller 3 adds an entry of the virtual volume associated with the pool to the virtual volume management table 352, and ends this flow.
  • the storage controller 3 can create a virtual volume to be accessed by the server computer 2 using the NVMe command and create a pool to be allocated to the virtual volume. As a result, the storage controller 3 can assign the created pool to only one virtual volume, manage the capacity of the virtual volume, and manage the capacity of the pool corresponding to the virtual volume.
  • the storage controller 3 selects a suitable pool as in the case of SCSI (selection is a method of receiving a pool identifier from an administrator). It is conceivable that the process proceeds to S2150.
  • FIG. 17 shows a virtual volume creation screen.
  • the virtual volume creation screen includes a virtual volume number, an access protocol, a virtual volume capacity, a used storage hierarchy, a next volume button, and a completion button.
  • the virtual volume number the virtual volume number of the created virtual volume is input.
  • the access protocol either SCSI or NVMe is input as an access protocol that becomes a virtual volume attribute of the virtual volume.
  • the virtual volume capacity the virtual volume capacity of the virtual volume is input.
  • the usage storage hierarchy includes an entry for each Tier. In an entry corresponding to one Tier, a storage medium corresponding to the Tier is displayed, and permission or prohibition (non-permission) of use of the Tier is input.
  • the management computer 7 displays a virtual volume creation screen for setting the next virtual volume.
  • the completion button the management computer 7 issues an instruction including the value input on the virtual volume creation screen to the storage controller 3.
  • the storage medium type of the storage device assigned to Tier 1 is SSD.
  • the SSD is connected to the Flash I / F372.
  • Flash I / F 372 is PCIe or SAS.
  • the storage medium type of the storage device assigned to Tier 2 is SAS HDD.
  • SAS HDD is connected to Disk I / F34.
  • This Disk I / F 34 is SAS.
  • the type of storage medium assigned to Tier 3 is SATA HDD.
  • SATA HDD is connected to Disk I / F34. This Disk I / F 34 is SATA.
  • FIG. 18 shows logical volume registration processing
  • the storage controller 3 performs a logical volume registration process for each Tier that is permitted to be registered in the pool based on the information of the used storage tier of the designated pool.
  • the logical volume registration process for the specified pool and tier includes the following processes: (S2210)
  • the storage controller 3 searches the logical volume management table 354 and determines whether there is a logical volume that matches the specified pool.
  • the conforming logical volume here is a spare logical volume and a logical volume of a storage medium corresponding to the designated Tier. If it is determined that there is a logical volume that matches the pool (Yes), the storage controller 3 shifts the processing to S2240.
  • the storage controller 3 shifts the processing to S2220.
  • the storage controller 3 reports an alert to the management computer 7 to prompt the administrator to add a new logical volume.
  • the storage controller 3 determines whether or not a logical volume suitable for the pool has been added. When it is determined that a logical volume that matches the pool has not been added (No), the storage controller 3 repeats S2230. On the other hand, when it is determined that a logical volume suitable for the pool has been added (Yes), the storage controller 3 shifts the processing to S2240.
  • the storage controller 3 adds the information of the logical volume determined to be suitable for the pool to the logical volume management table and the pool management table, and ends this flow.
  • the storage controller 3 may select the logical volumes from the plurality of logical volumes in the order of a predetermined number.
  • the storage controller 3 can register a logical volume suitable for the designated pool and Tier in the pool.
  • the server-side PCIe I / F device 4 When the server computer 2 sends an NVMe Write command to the server-side PCIe I / F device 4, the server-side PCIe I / F device 4 performs server-side PCIe I / F through the above-mentioned NVMe command processing.
  • the device 4 converts the NVMe Write command into a SCSI Write command and transmits it to the storage controller 3.
  • the NVMe Write command specifies NS.
  • the converted SCSI Write command specifies the LU associated with the NS.
  • the storage controller 3 performs a write process for writing to the virtual volume.
  • FIG. 19 shows a write process for a virtual volume.
  • the Write process includes the following processes: (S8310) Upon receiving a SCSI Write command, the storage controller 3 transmits a write data transfer request to the server-side PCIe I / F device 4. Thereafter, the server-side PCIe I / F device 4 transfers the write data stored in the memory 22 of the server computer 2 to the memory 32 (cache memory) of the storage controller 3. (S8320) Thereafter, the storage controller 3 refers to the LU management table 351 and selects a virtual volume corresponding to the LU specified by the Write command from the server side PCIe I / F device 4. Thereafter, the storage controller 3 refers to the mapping management table 355 and determines whether or not a page is allocated to the write target virtual volume logical address designated by the Write command in the virtual volume.
  • the storage controller 3 shifts the process to S8360. On the other hand, when it is determined that a page is not allocated to the write target virtual volume logical address, the storage controller 3 shifts the processing to S8330. (S8330, S8340, S8350) The storage controller 3 allocates an unused (new) page from the pool corresponding to the virtual volume to the write-target virtual volume logical address. Thereafter, the storage controller 3 adds information on the allocated page to the mapping management table 355. Thereafter, the storage controller 3 increases the allocated capacity of the pool in the pool management table 353 by the size of the page.
  • the storage controller 3 performs asynchronous destage that asynchronously writes the write data in the memory 32 to the storage device.
  • the storage controller 3 acquires the storage device logical address corresponding to the page corresponding to the write target based on the mapping management table 355, and writes it to the storage device logical address.
  • the storage controller 3 determines, based on the pool management table 353, whether the ratio of the allocated capacity to the pool capacity of the pool exceeds the depletion threshold. When it is determined that the ratio does not exceed the depletion threshold, the storage controller 3 ends this flow. On the other hand, when it is determined that the ratio has exceeded the depletion threshold, the storage controller 3 shifts the processing to S8380.
  • the storage controller 3 performs the above-described logical volume registration processing by designating the pool, and ends this flow.
  • the server-side PCIe I / F device 4 converts the NVMe command into a SCSI command and sends it to the storage controller 3. To do. Thereafter, the storage controller 3 performs NVMe command response processing for transmitting a response to the server computer 2 via the server-side PCIe I / F device 4.
  • FIG. 20 shows NVMe command response processing.
  • NVMe command response processing is performed by the server computer 2, the server-side PCIe I / F device 4, and the storage controller 3.
  • NVMe command response processing includes the following processing: (S8210, S8220)
  • the storage controller 3 executes processing according to the SCSI command from the server-side PCIe I / F device 4 and transmits a response in SCSI format to the SCSI command to the server-side PCIe I / F device 4. .
  • S8230, S8240, S8250 Thereafter, the server-side PCIe I / F device 4 receives the SCSI response from the storage controller 3, converts the received response into an NVMe response, and converts the converted response to It transmits to the server computer 2.
  • the server computer 2 receives the NVMe format response from the server-side PCIe I / F device 4, and ends this flow.
  • the storage controller 3 can send a response to the SCSI command to the server side PCIe I / F device 4 according to a SCSI compliant program, and the server computer 2 is compliant with NVMe.
  • the response from the server side PCIe I / F device 4 can be processed according to the program.
  • the server computer 2 can acquire a response parameter by issuing an Identify command to the server side PCIe I / F device 4.
  • FIG. 21 shows the relationship between the response of the Identify command and the storage capacity.
  • Identify command which is one of NVMe commands, specifies NS and acquires the status of thin provisioning of the NS.
  • the response to the Identify command includes a plurality of parameter fields.
  • the multiple parameters are Namespace Size (hereinafter abbreviated as NS Size), Namespace Capacity (hereinafter abbreviated as NS Capacity), Namespace Utilization (hereinafter abbreviated as NS Utilization), and Namespace Features (hereinafter abbreviated as NS Features). ).
  • NS Size represents the total size of the NS in terms of the number of logical blocks.
  • One logical block corresponds to one LBA.
  • the LBA size that is the size of the logical block is, for example, 512B.
  • NS Size in this embodiment corresponds to the LU capacity of an LU associated with the NS or the virtual volume capacity of a virtual volume assigned to the LU.
  • NS Capacity indicates the pool capacity of the pool that can be allocated to the NS in terms of the number of logical blocks.
  • NS Capacity in this embodiment corresponds to the pool capacity of the pool associated with the LU.
  • NS Utilization represents the total size of the storage area allocated to the NS in terms of the number of logical blocks.
  • NS Utilization in this embodiment corresponds to the allocated capacity that is the total capacity of the pages allocated from the pool to the virtual volume.
  • NS Features indicates whether the NS supports thin provisioning.
  • the storage controller 3 manages, for example, a storage area allocated from the pool to the virtual volume in units of pages.
  • the page size is, for example, 42 MB.
  • the value obtained by subtracting NS Utilization from NS Capacity corresponds to the capacity of the free space in the NS. If a plurality of NS share one pool, the NS free area used by the user of the server computer 2 may be consumed by another NS used by the user of another server computer 2. Therefore, it is desirable that one NS corresponds to one pool.
  • the server-side PCIe I / F device 4 converts the NVMe Identify command into a SCSI Inquiry command and sends it to the storage controller 3 by the above-described NVMe command processing. .
  • NS in the Identify command is converted to LU in the Inquiry command.
  • the storage controller 3 performs Inquiry processing according to the Inquiry command as S8120 of the NVMe command response processing described above.
  • FIG. 22 shows the inquiry process.
  • Inquiry processing includes the following: (S8410)
  • the storage controller 3 identifies a virtual volume corresponding to the LU specified by the Inquiry command based on the LU management table 351, and assigns it to the LU specified by the Inquiry command based on the virtual volume management table 352. It is determined whether or not the corresponding virtual volume attribute is NVMe. If it is determined that the virtual volume attribute is not NVMe, that is, the virtual volume attribute is SCSI, the storage controller 3 shifts the processing to S8430. On the other hand, when it is determined that the virtual volume attribute is NVMe, the storage controller 3 shifts the processing to S8430.
  • the storage controller 3 acquires the virtual volume capacity of the virtual volume from the virtual volume management table 352, acquires the pool capacity and allocated capacity of the pool corresponding to the virtual volume from the pool management table 353, and is acquired. Based on the obtained information, the next response parameter indicated in the NVMe standard is calculated.
  • NS Size Virtual volume capacity ⁇ LBA size
  • NS Capacity Pool capacity ⁇ LBA size
  • NS Utilization Allocated capacity ⁇ LBA size
  • the storage controller 3 counts the number of allocated pages. Is multiplied by the page size to calculate the allocated capacity.
  • the storage controller 3 sets NS Features to 1 when a virtual volume is associated with the LU, that is, when thin provisioning is used for the LU, and when the logical volume is associated with the LU, Set NS Features to 0 when thin provisioning is not used for the LU.
  • the NVMe standard defines the relationship NS Size ⁇ NS Capacity ⁇ NS Utilization.
  • the storage controller 3 matches NS Capacity in the response parameter with NS Size. Thereby, the storage controller 3 can calculate a response parameter in conformity with the NVMe standard.
  • the storage controller 3 creates a response packet of the SCSI inquiry command using the response parameter, transmits it to the server side PCIe I / F device 4, and ends this flow.
  • the storage controller 3 includes NS Size, NS Capacity, NS Utilization, and NS Features in the free area of the response packet format of the Inquiry command.
  • the server-side PCIe I / F device 4 converts the inquiry response packet into an identify response packet and transmits the packet to the server computer 2. Thereby, even if the storage controller 3 does not interpret NVMe, the server computer 2 can receive a response packet conforming to the NVMe standard.
  • a plurality of server computers 2 can share a capacity virtualized NS. Further, it is possible to reduce the design of the storage capacity and the cost of the initial storage device. Furthermore, by applying tiering to NU, a plurality of server computers 2 can share an automatically hierarchized NS. In addition, for example, it is possible to improve the access performance by placing data with high access frequency in a high-performance tier, and reduce the cost for storage capacity by placing data with low access frequency in a low-cost tier. it can.
  • the storage controller uses the virtual volume management table 352b instead of the virtual volume management table 352, uses the pool management table 353b instead of the pool management table 353, and uses the logical volume management table 354. Instead of this, the logical volume management table 354b is used.
  • FIG. 23 shows a virtual volume management table 352b when thin provisioning is applied and tearing is not applied. Compared with the virtual volume management table 352, the virtual volume management table 352b does not include the used Tier number.
  • FIG. 24 shows the pool management table 353b when thin provisioning is applied and tearing is not applied.
  • the registered logical volume number of the pool management table 353 indicates the logical volume number for each Tier, whereas the registered logical volume number of the pool management table 353b indicates the logical volume number of the logical volume registered in the pool.
  • FIG. 25 shows the logical volume management table 354b when thin provisioning is applied and tearing is not applied. Compared with the logical volume management table 354, in the logical volume management table 354b, logical volumes based on the same storage medium are allocated to one pool.
  • FIG. 26 shows a virtual volume creation screen when thin provisioning is applied and tearing is not applied. Compared with the case where tearing is applied, this virtual volume creation screen does not require an item of the use storage hierarchy.
  • the plurality of server computers 2 can share the capacity virtualized NS. Further, it is possible to reduce the design of the storage capacity and the cost of the initial storage device.
  • FIG. 27 shows the relationship between the response of the Identify command and the storage capacity when thin provisioning is not applied.
  • the storage controller 3 makes NS Size equal to NS Capacity.
  • the storage controller uses the LU management table 351c instead of the LU management table 351, and does not use the virtual volume management table 352 and the pool management table 353.
  • FIG. 28 shows an LU management table 351c when tearing is applied without applying thin provisioning.
  • the storage controller 3 When tearing is applied without applying thin provisioning, the storage controller 3 assigns a plurality of logical volumes respectively corresponding to a plurality of Tiers to one LU, and uses the total capacity of the plurality of logical volumes as an LU capacity. Register in the management table 351c.
  • the plurality of server computers 2 can share the automatically hierarchized NS.
  • the computer system may include an intermediary device such as a server-side PCIe I / F device 4 or a storage-side PCIe I / F device 8 as an interface device.
  • the computer system may include a substrate such as a backplane as a communication mechanism, and may include a blade server system chassis, a storage controller chassis, a PCIe connection cable, and the like as a communication mechanism.
  • the computer system may include a chassis, a rack, and the like as a housing that houses a plurality of server computers, a storage controller, and a communication mechanism.
  • the server computer may include an RC 24 or the like as the server-side RC.
  • the server computer may include the RC 33 or the like as the storage-side RC.
  • the interface device may provide EP 41 or the like as the first EP, and may provide EP 41 or the like different from the first EP as the second EP.
  • the interface device may provide EP 42 or the like as the third EP.
  • the server computer may use temporary data or data necessary for takeover as the first data, and may use data unnecessary for takeover as the second data.
  • the computer system may include a local flash memory device or the like as the local nonvolatile memory device.
  • the computer system may use a virtual volume or the like as a virtual storage area.
  • the computer system may use a logical volume or the like as the shared storage area.
  • the computer system may use SCSI or the like as a specific standard.
  • the computer system may include an SSD, a SAS HDD, a SATA HDD, etc. as a plurality of storage devices.
  • the server computer may use the NVM control program 222 or the like as the first program.
  • the server computer may use the SCSI control program 224 or the like as the second program.
  • An NS Size field or the like may be used as the first field.
  • An NS Capacity field or the like may be used as the second field.
  • An NS Utilization field or the like may be used as the third field.

Landscapes

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

Abstract

 複数のサーバ計算機が仮想化されたnamespaceを共有する。ストレージコントローラは、第1サーバ計算機及び第2サーバ計算機により共有される仮想記憶領域を提供し、第1サーバ計算機及び第2サーバ計算機の夫々であるサーバ計算機は、NVM-Express規格に準拠するコマンドであるNVM-Expressコマンドを発行するプログラムを格納し、プログラムは、仮想記憶領域に関連付けられたnamespaceを指定するNVM-Expressコマンドを発行することによりPCI-Expressを介して仮想記憶領域にアクセスすることを、サーバ計算機に実行させ、ストレージコントローラは、アクセスに基づいて、不揮発メモリデバイス内の記憶領域を仮想記憶領域に割り当てる。

Description

計算機システム
 本発明は、不揮発メモリデバイスを含む計算機システムに関する。
 フラッシュメモリデバイス(以下フラッシュと呼ぶ)はHDD(Hard Disk Drive)と比較して高いI/O(Input/Output)性能を有する。しかし、その性能を発揮させようとした場合、従来のSCSI(Small Computer System Interface)は、サーバで実行されるOS(Operating System)、デバイスドライバ等のプログラム処理の効率が悪いことから、フラッシュメモリデバイスのI/O性能を発揮させることは容易ではない。非特許文献1記載のNVM-Express(Non-Volatile Memory Express:以後NVMeと省略)はそのような問題を解決するための以下を規定した規格である。
This specification defines a streamlined set of registers whose functionality includes:
・ Indication of controller capabilities
・ Status for controller failures (command status is processed via CQ directly)
・ Admin Queue configuration (I/O Queue configuration processed via Admin commands)
・ Doorbell registers for scalable number of Submission and Completion Queues
 NVMeは以下をキーポイントに持つ。
・ Does not require uncacheable / MMIO register reads in the command submission or completion path.
・ A maximum of one MMIO register write is necessary in the command submission path.
・ Support for up to 65,535 I/O queues, with each I/O queue supporting up to 64K outstanding commands.
・ Priority associated with each I/O queue with well-defined arbitration mechanism.
・ All information to complete a 4KB read request is included in the 64B command itself, ensuring efficient small I/O operation.
・ Efficient and streamlined command set.
・ Support for MSI/MSI-X and interrupt aggregation.
・ Support for multiple namespaces.
・ Efficient support for I/O virtualization architectures like SR-IOV.
・ Robust error reporting and management capabilities.
・ Support for multi-path I/O and namespace sharing.
 また、非特許文献1には複数のホストからnamespace(以後、NSと省略)を共有する概念が開示されている。
 非特許文献2にはこのようなNVMeに準拠したコマンド(以後、NVMeコマンドと省略)を解釈するPCI-ExpressフラッシュメモリSSD(Solid State Drive)を用いることにより、サーバのI/O性能が向上することが開示されている(以後、PCI-ExpressをPCIeと省略)。
 ストレージの利用効率を向上させる技術として容量仮想化(シンプロビジョニング)が知られている。容量仮想化は、サーバに対し仮想記憶領域の容量を実記憶領域の容量より大きく見せかけ、格納データ量に応じて仮想記憶領域に実記憶領域を割り当てる。
 また、ストレージの性能/コスト比を向上させる技術として階層制御仮想化が知られている。階層制御仮想化により、アクセス頻度の高いデータが高速なストレージ階層に自動的に格納され、アクセス頻度の低いデータが低ビットコストのストレージ階層に自動的に格納されることで、ストレージの管理者による階層管理の負担を軽減する。
 NVMeはサーバからフラッシュメモリへのアクセスを低遅延化するインターフェースである。NVMeにおいて、主なアクセス対象は、サーバにおけるPCIeアドオンカード上のフラッシュメモリである。
 非特許文献1には、記憶領域であるnamespaceに対するシンプロビジョニングが開示されている。サーバはNVMeで規定されたIdentifyコマンドをストレージへ発行することによりシンプロビジョニングの状況を取得することができる。
"NVM Express 1.1a Specification," http://www.nvmexpress.org/wp-content/uploads/NVM-Express-1_1a.pdf "NVM Express: Unlock Your Solid State Drives Potential," http://www.nvmexpress.org/wp-content/uploads/2013-FMS-NVMe-Track.pdf
 非特許文献1に開示のNVMe規格ではNSの共有概念は開示されているものの、以下に開示の通りその実現形態は開示されておらず、高性能I/Oを実現する計算機システムを提供することは容易ではない。
"1.3 Outside of Scope
The register interface and command set are specified apart from any usage model for the NVM, but rather only specifies the communication interface to the NVM subsystem. Thus, this specification does not specify whether the non-volatile memory system is used as a solid state drive, a main memory, a cache memory, a backup memory, a redundant memory, etc. Specific usage models are outside the scope, optional, and not licensed."
 また、NVMeの仕様書では、namespaceの仮想化の実装方法が開示されていないため、仮想化されたnamespaceを共有することは容易ではない。
 以上の課題を解決するため、計算機システムは、第1サーバ計算機と、第2サーバ計算機と、不揮発メモリデバイスと、第1サーバ計算機及び第2サーバ計算機にPCI-Expressを介して接続され、不揮発メモリデバイスに接続されるストレージコントローラと、を含む。ストレージコントローラは、第1サーバ計算機及び第2サーバ計算機により共有される仮想記憶領域を提供し、第1サーバ計算機及び第2サーバ計算機の夫々であるサーバ計算機は、NVM-Express規格に準拠するコマンドであるNVM-Expressコマンドを発行するプログラムを格納し、プログラムは、仮想記憶領域に関連付けられたnamespaceを指定するNVM-Expressコマンドを発行することによりPCI-Expressを介して仮想記憶領域にアクセスすることを、サーバ計算機に実行させ、ストレージコントローラは、アクセスに基づいて、不揮発メモリデバイス内の記憶領域を仮想記憶領域に割り当てる。
実施例のサマリを示す。 CPFの物理構成及び論理構成を示す。 別なCPFの物理構成及び論理構成を示す。 NVMe解釈部位が候補(3)である場合のCPFの詳細を示す。 サーバ側PCIe I/FデバイスにおけるPCIe空間を示す。 NVMeのNSとストレージコントローラの記憶領域との関係を示す。 NVMeコマンドに関連した処理を示すフローチャートである。 CPFの起動方法を示すフローチャートである。 NVMe解釈部位が候補(2)である場合のCPFの詳細を示す。 CPFの適用形態の例を示す。 ストレージコントローラ3におけるデータの構成を示す。 LU管理テーブル351を示す。 仮想ボリューム管理テーブル352を示す。 プール管理テーブル353を示す。 論理ボリューム管理テーブル354を示す。 仮想ボリューム作成処理を示す。 仮想ボリューム作成画面を示す。 論理ボリューム登録処理を示す。 仮想ボリュームに対するWrite処理を示す。 NVMeコマンド応答処理を示す。 Identifyコマンドの応答と記憶容量の関係を示す。 Inquiry処理を示す。 シンプロビジョニングを適用しティアリングを適用しない場合の仮想ボリューム管理テーブル352bを示す。 シンプロビジョニングを適用しティアリングを適用しない場合のプール管理テーブル353bを示す。 シンプロビジョニングを適用しティアリングを適用しない場合の論理ボリューム管理テーブル354bを示す。 シンプロビジョニングを適用しティアリングを適用しない場合の仮想ボリューム作成画面を示す。 シンプロビジョニングを適用しない場合のIdentifyコマンドの応答と記憶容量の関係を示す。 シンプロビジョニングを適用せずティアリングを適用する場合のLU管理テーブル351cを示す。
 以下、図面を参照しながら実施例を説明する。ただし、本実施例は、発明を実現するための一例に過ぎず、発明の技術的範囲を限定するものではない。また、各図において共通の構成については、同一の参照番号が付されている。
 なお、以後の説明では「テーブル」という表現にて本実施例の情報を説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくてもよい。例えば、「リスト」、「DB(データベース)」、「キュー」等のデータ構造やそれ以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために、「テーブル」、「リスト」、「DB」、「キュー」等については、単に「情報」と呼ぶこともできる。また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
 以後の説明では、「プログラム」を主語として説明を行うが、プログラムはCPU(Central Processing Unit)によって実行されることで定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行うため、CPUを主語とした説明としてもよい。また、プログラムを主語として開示された処理は、サーバ計算機やストレージコントローラや管理計算機等の計算機、情報処理装置が行う処理としてもよい。プログラムの一部又は全ては、専用ハードウェアで実現してもよく、また、モジュール化されていてもよい。各種プログラムは、プログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
<実施例のサマリ>
 図1に実施例のサマリを示す。なお、以後の説明は、今後登場するであろうNVMeの後継規格に対しても適用可能であり、同様にPCI-Express(Peripheral Component Interconnect Express:以後、PCIeと省略)の後継規格に対しても適用可能である。NVMeやPCIeに関連する用語が用いられた場合、その後継規格の同等の用語も指し示すと考えるべきである。同様に実施例は現在のBlockアクセスをターゲットとしたNVMeを対象として説明しているが、仮にバイトやワード単位のアクセスがNVMe規格で規定された場合はそれらアクセスについても本実施例が適用できることは言うまでもない。同様に、実施例は、フラッシュメモリを用いる不揮発メモリデバイスを対象として説明しているが、フラッシュメモリ以外の不揮発メモリ、例えばFeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、相変化メモリ(Ovonic Unified Memory)、RRAM(登録商標、Resistance RAM)を用いる不揮発メモリデバイスに適用してもよい。
≪NVMeについて≫
 非特許文献1及び2の通り、NVMeはフラッシュメモリSSDに対して高速アクセスを実現するためのI/F(Interface)規格である。NVMe規格に沿ってプログラム(例えばデバイスドライバ、及びその他、アプリケーション、OSも含む)を開発することで、フラッシュメモリSSDに対し、高IOPS(Input/Output per Second)や低レイテンシといった高速アクセスが可能となる。例えば非特許文献2の18ページによれば、SCSI/SAS(Serial Attached SCSI)を採用したSSDで6.0μsであったアクセスレイテンシが、NVMeを採用することで2.8μsまで削減できると開示されている。そのキーポイントは既に説明した通りだが、マルチI/Oキュー化し、複数のコアで1つのI/Oキューを共有しなくてもよくしたことで、CPUコア間のメモリアクセス効率を改善できる。
 NVMeは規格化されて、幅広いフラッシュメモリデバイスがNVMe規格に対応することが期待される。そのため、デバイスドライバ以外のプログラム(典型的にはアプリケーションプログラム)のベンダにとって、当該プログラムが直接NVMeコマンドを発行し、フラッシュメモリデバイスに高速にアクセスすることも期待される。
 なお、本実施例における「フラッシュメモリデバイス」は少なくとも以下の特徴を持つデバイスであり、フラッシュメモリSSDはその1例である:
*フラッシュメモリチップを含む。
*以下の処理を行うフラッシュメモリコントローラを含む:
  #外部からのリードリクエストに応じて、フラッシュメモリチップに保存されたデータを外部に転送する。そして、外部から受信したライトリクエストと共に受信したデータをフラッシュメモリチップに保存する。
  #フラッシュメモリチップのイレース処理を行う。
≪計算機システム≫
 計算機システムは、1以上のサーバ計算機と、1以上のストレージコントローラと、フラッシュメモリデバイス(図では「Flash」と省略する場合がある)、通信機構(Communication Mechanism)とを少なくとも含む。なお、計算機システム内のこれらの含有物の夫々を計算機システムコンポーネントと呼ぶことがある。
 なお、本計算機システムはConverged Platformであることが好ましい。なお、Converged PlatformはConverged Infrastructure、Converged Systemとも呼ばれ、日本語では「Converged」が「垂直統合」という用語に置き換わる場合がある。なお、本実施例では以後、これらをConverged Platform(CPFと省略することもある)に統一して呼ぶ。CPFは以下の特徴を持つ:
*サーバ計算機、ストレージシステム(ストレージコントローラと記憶デバイスを含む)、及びこれらを接続する通信機構を含む製品。企業の管理者が個別にサーバ計算機とストレージシステムを導入する場合、こうしたサーバ計算機とストレージシステムの接続確認に代表される動作検証は管理者側で行われていた。しかし、CPFを導入する場合、製品を販売するベンダが事前に動作検証を行うため、製品を設置して使用する顧客の管理者による動作検証が不要又は削減できる。
*なお、一部のCPFは、サーバ計算機、ストレージシステム、及び通信機構の設定を一括して行う管理プログラムを実行する管理サブシステムを含む場合がある。この管理サブシステムは、管理者が希望する実行環境(仮想マシン、DBMS:Database Management System、Webサーバ等)を迅速に提供することができる。例えば、管理プログラムは、必要なリソース量の仮想マシンを提供するために、サーバ計算機及びストレージシステムに必要なリソースの割り当てをリクエストし、割り当てられたリソースを用いて仮想マシンを作成するようにハイパーバイザにリクエストする。
≪サーバ計算機≫
 サーバ計算機(1)及び(2)は夫々、ストレージコントローラにアクセスするプログラム(1)及び(2)を格納し実行するユニットである。プログラム(1)及び(2)は、NVMeコマンドを発行することで、ストレージコントローラにより提供される共有データ領域に対してアクセスする。なお、共有データ領域をNVMeのNSとして提供する部位は後ほど説明する。
 サーバ計算機は、少なくともCPU、メインメモリ(以後メモリと省略する)、RCを含む。サーバ計算機は例えば以下であってもよい:
*ファイルサーバ
*ブレードサーバシステム
*PC(Personal Computer)サーバ
*ブレードサーバシステムに差し込まれるブレード
≪サーバ計算機のプログラム≫
 なお、プログラム(1)及び(2)は例えば、業務アプリケーションプログラム(例えばWebサーバ、DBMS、分析プログラム、ミドルウェア)や、LPAR(Logical Partitioning)や仮想マシンを作成可能なプログラムや、OS、デバイスドライバ、であることが考えられるが、他のプログラムであってもよい。
≪通信機構≫
 通信機構は、サーバ計算機とストレージコントローラとをPCIeで接続する。なお、サーバ計算機とストレージコントローラとの間のPCIe接続は、従来のサーバ計算機とストレージシステムとの接続で採用されているFC(Fibre Channel)、Ethernet(登録商標)を用いるSAN(Storage Area Network)のようなネットワークを介さない。理由は以下の通りである(いずれか1つ、又は両方):
*これら広域SANも構築可能なプロトコルでは変換処理のオーバーヘッドが高く、共有データ領域への高性能I/O提供の妨げとなるため。
*EthernetやSANのデバイス(特にスイッチ)が高価であるため。
 なお、NVMeはPCIeに基づいた通信機構を前提とする。そのため、サーバ計算機からのNVMeコマンドを解釈する部位はPCIeにおけるEndpoint(以後、EPと省略)である必要がある。また、PCIeのチップセットが、複数のRoot Complex(以後、RCと省略)からEPを共有すること(以後、「複数RCの同居」と呼ぶ)を許容しない場合(例えばMR-IOV:Multi-Root I/O Virtualizationをサポートしない場合)はこの制限も考慮する必要がある。
 本実施例では、以上を踏まえ、NVMeコマンドを解釈する部位の候補として3つの候補を開示する。計算機システムは、3つの候補の中の一種類を含む。3つの候補(1)、(2)、(3)(図ではNVMe I/F候補(1)、(2)、(3)と記載)は以下の通りである:
*候補(1):フラッシュメモリデバイス。この場合はストレージコントローラとフラッシュメモリデバイスとはPCIeで接続され、フラッシュメモリデバイスはNVMeに準拠したFunctionを持つEPとなる。ストレージコントローラはサーバ計算機からのNVMeコマンドを当該フラッシュメモリデバイスにスルーする。
*候補(2):ストレージコントローラ。この場合はサーバ計算機からストレージコントローラまでがPCIeで接続される。なお、前述の複数RCの同居に関する制限がある場合、サーバ計算機(1)のRCとストレージコントローラのRCとのPCIe接続と、サーバ計算機(2)のRCとストレージコントローラのRCとのPCIe接続とは、分離される。そして、ストレージコントローラのRCはそれぞれのサーバ計算機のRCに対して個別なEPを提供する。
*候補(3):サーバ計算機からのPCIe接続とストレージコントローラからのPCIe接続を仲介する仲介デバイス。インテル(R)やAMD(R)等が提供するCPU及びPCIeチップセットはコモディティ化されているため、低価格で高性能である。こうしたものをストレージコントローラに採用する場合に課題となるのが、ストレージコントローラにもRCが存在してしまい、前述の複数RCの同居の制限がある場合は、そのままサーバ計算機と接続できないことである。当該仲介デバイスは、夫々のサーバ計算機のRCに対してはEPを提供するロジックと、ストレージコントローラのRCに対しては別なEPを提供するロジックと、サーバ計算機とストレージコントローラとの間のライトデータやリードデータの転送を仲介するロジックとを含むことにより、この課題を解決する。
 なお、PCIeは元々サーバ計算機やストレージシステム内の通信路として用いられてきたため、FCやEthernetと比較するとPCIeの通信可能距離は短く、RCはFCやEthernetで通信できる通信ノード数よりも少ない数のEPとしか通信ができない。また、FCやEthernet上で動作する通信プロトコルと比較して、PCIeの障害処理は弱い。そのため、通信機構としてPCIeを採用する本計算機システムはCPFであることが好ましい。なぜならば、計算機システムをCPFにすることで顧客によるサーバ計算機とストレージユニット間の通信機構のケーブリングを不要とできることから、前述のPCIeの弱点によるトラブルが発生しにくく、結果として信頼性の高いNVMeアクセスを提供できる。
≪NVMeコマンド解釈部位毎のメリット≫
 なお、前述のNVMeコマンドを解釈する部位の候補(1)から(3)には例えば以下のメリットがある。
*候補(1):ストレージコントローラによる処理のオーバーヘッドが無い、又は小さい。候補(1)は、フラッシュメモリデバイスの内部状態を考慮した、効率的なNVMeのキュー制御を実現しやすい。なぜなら、NVMeコマンドを解釈する部位と、フラッシュメモリデバイスのウェアレベリングやリクラメーション等を行うコントローラが同じ又は近いためである。例えば、NVMeではI/Oキューが複数存在するが、候補(1)は、複数のI/OキューからのNVMeコマンドの取り出し方を当該内部状態に基づいて変更する。
*候補(2):ストレージコントローラが提供する前述のエンタープライズ向け機能をNVMeのNSに対して適用できる。また、候補(2)は、ストレージコントローラの内部状態を考慮した効率的なNVMeのキュー制御を行うことができる。なぜなら、NVMeコマンドを解釈する部位と、ストレージコントローラとが同じ又は近いためである。例えば、候補(2)は、複数のI/OキューからのNVMeコマンドの取り出し方を当該内部状態に基づいて変更することができる他、I/OキューにあるNVMeコマンドの蓄積状態に応じて、ストレージコントローラの他の処理の制御を変更できる。
*候補(3):ストレージコントローラが提供するエンタープライズ向け機能をNVMeのNSに対して適用できる。また、候補(3)の仲介デバイスがNVMeコマンドをSCSIリクエスト(SCSIコマンド)に変換するのであれば、ストレージコントローラで実行されるストレージプログラムは、実行コード、中間コード、又はソースコードレベルで、従来のSANストレージサブシステムのストレージプログラムと互換性を保ちやすい。その結果として、計算機システムのストレージプログラムの品質向上、機能向上できる他、前述のリモートコピーのような計算機システムのストレージコントローラとSANストレージサブシステムとの間の連携処理の実装も容易になる。なぜなら、通常のSANストレージサブシステム同士の連携と同じ部分が殆どのためである。
≪ストレージコントローラ≫
 ストレージコントローラはフラッシュメモリデバイスの記憶領域を用い、高性能I/O処理を提供する。また、ストレージコントローラは、これまでエンタープライズ向けのSANストレージサブシステムが提供してきたような信頼性、冗長性、高機能性、保守・管理容易性に関係する機能を有してもよい。以下がその例である:
*ストレージコントローラは、フラッシュメモリデバイスを冗長化し、冗長化した記憶領域から共有データ領域を提供する。また、ストレージコントローラは、共有データ領域に格納したデータへのアクセスを禁止又は失敗させずに(いわゆる無停止に)、フラッシュメモリデバイスの交換、増設、抜き去りといったデバイス保守を可能とする。HDDとは異なり、フラッシュメモリデバイスには書き込み過多によるデバイス寿命の短期化という特性がある。そのため、こうした冗長化や無停止保守をストレージコントローラが提供することで本計算機システムとしての信頼性を向上させることができる。また、サーバ計算機にPCIeのフラッシュメモリデバイスが差し込まれる場合、フラッシュメモリデバイスの保守は個々のサーバ計算機に対して個別に行われなければならない。しかし、本計算機システムのようにストレージコントローラにフラッシュメモリデバイスが接続されることにより、フラッシュメモリデバイスの保守をストレージ側にまとめると、保守作業者はまとめてフラッシュメモリデバイスの保守作業を行うことができ、保守が容易になる。
*ストレージコントローラは、NVMeによって格納したデータに対して、リモートコピーやスナップショットといったコピー機能を提供する。
*ストレージコントローラは、フラッシュメモリデバイス以外に記憶デバイスとしてHDDに接続されることにより、これらの記憶デバイスを用いたティアリングを可能とする。なお、ストレージコントローラは、HDDが提供する記憶領域をNVMeのNSに対応させてもよい。
*ストレージコントローラは、サーバ計算機(1)や(2)を介さずに、本計算機システムの外部の計算機システム(サーバ計算機やストレージシステムを含む)又はネットワーク装置(SANスイッチやEthernetスイッチを含む)からのネットワークを介したアクセスを提供する。これにより前述のリモートコピーが行えたり、本計算機システム外部の計算機システム又はネットワーク装置も含めたストレージコンソリデーションも提供できたりする等、柔軟性が向上する。
≪サーバ計算機とストレージコントローラの配置≫
 前述の通り、PCIeは通信可能距離が短いことから、サーバ計算機とストレージコントローラとは物理的に近い位置に配置されていればよい。しかし、以下がより好ましい:
*ストレージコントローラが、ブレードサーバシステムのシャーシに差し込まれる構成を有する。なお、サーバ計算機であるブレードとストレージコントローラとの間のPCIe接続にバックプレーン等の基板を用いることで、PCIe接続に伴うトラブルを削減できる。
*ブレードサーバシステムのシャーシとは別なシャーシにストレージコントローラを入れ、両シャーシをPCIe接続用のケーブルで接続する。なお、ブレードサーバシステムのシャーシとストレージコントローラのシャーシとを1つのラックに入れたものを、CPFとして販売してもよい。このようにラックに両シャーシとPCIe接続用ケーブルとを入れることで、PCIe接続用ケーブルに伴うトラブルを削減でき、また単体販売しているブレードサーバシステムやストレージシステムのシャーシそのもの又は部品をCPFへ流用することが容易である。
≪管理サブシステム≫
 管理サブシステムは以下の少なくとも1つの処理を行うサブシステムである:
*管理者又は統合管理サブシステムからのリクエストを受信し、計算機システムコンポーネントに対してリクエストに応じた設定を行うこと。
*計算機システムコンポーネントから情報を取得し、管理者に表示したり、又は統合管理サブシステムに送信したりすること。なお、取得する情報は例えば性能情報、障害情報、設定情報、構成情報等がある。例えば、構成情報は、コンポーネントの抜き差しをしない限り本計算機システムに固定な項目と、変更可能な項目とを含み、設定情報は特に構成情報のうち、設定により変更可能な項目である。なお、これら種類の情報をまとめてコンポーネント情報と呼ぶことがある。また、管理者に表示したり、別な計算機に送信したりする情報は、取得したコンポーネント情報そのままでもよく、又は何らかの基準で変換・加工した後に、当該情報の表示や送信を行ってもよい。
*上記コンポーネント情報に基づいて、計算機システムコンポーネントへの設定を自動的・自律的に行う、いわゆる自動・自律管理。
 管理サブシステムは例えば以下の形態(それらの形態の混在を含む)であることが考えられるが、上記処理を行う形態であればそれらの形態にこだわらない。関係する機能、計算機の集合が管理サブシステムである。
*計算機システムコンポーネントとは別な計算機(1以上)。管理サブシステムが、ネットワークを介して計算機システムに接続されている複数の計算機である場合、例えば、サーバ計算機専用の計算機、ストレージコントローラ専用の計算機、表示処理専用の計算機、といった計算機が管理サブシステムに存在してもよい。
*計算機システムコンポーネントの一部。例えばBMC(Baseboard Management Controller)やエージェントプログラムが管理サブシステムである。
≪統合管理サブシステム≫
 統合管理サブシステムは、サーバ、ストレージシステム、ネットワーク装置(SANスイッチやEthernetスイッチを含む)、そして本計算機システム、等に代表される管理対象装置を統合管理するサブシステムである。統合管理サブシステムは、ネットワークを介して管理サブシステム及び他の管理対象装置に接続される。統合管理サブシステムは複数の管理対象装置を管理するために、ベンダプロプライエタリなプロトコルで管理対象装置と通信することもあるが、SNMP(Simple Network Management Protocol)やSMI-S(Storage Management Initiative-Specification)といった標準化されたプロトコルで管理対象装置と通信することもある。
 統合管理サブシステムは、ネットワークを介して計算機システムに接続されている1又は複数の計算機を含む。
 なお、統合管理サブシステムの提供ベンダは、本計算機システムのベンダとは異なる場合があり、その場合、本計算機システムの通信機構がPCIeであることで、統合管理サブシステムは本計算機システムの管理ができなかったり、できたとしても通常より劣った管理しかできなかったりすることがある。その理由の一例としては、統合管理サブシステムがサーバ計算機とストレージコントローラとの接続経路としてFC又はEthernet接続のみ認識し、PCIe接続を前述の接続経路として認識しない場合である。この場合、統合管理サブシステムは、サーバ計算機とストレージコントローラが接続されていないとみなすため、このような接続情報があることを前提とする管理項目は本計算機システムに適用できないことになる。
 そのような場合の対策のため、本計算機システムの管理サブシステムは、本計算機システムのPCIe接続にSAN接続をエミュレートさせることにより、PCIe接続の情報を仮想のSAN接続の情報に変換し、そのSAN接続の情報を統合管理サブシステムに送信することにより、そのSAN接続を統合管理サブシステムの管理対象としてもよい。なお、SAN接続のエミュレートとは例えば、接続情報を提供すること、又はSAN接続に関する設定を受け付けること(ストレージポートへのLogical Unit割り当て)、等がある。なお、エミュレート先のSANはFC-SANであってもよく、IP(Internet Protocol)-SAN、Ethernet-SANであってもよい。
≪本計算機システムの用途とLocalフラッシュメモリデバイスの併用≫
 以上説明の通り、複数のサーバ計算機間でNVMeによるデータ共有を実現するために、本計算機システムが導入されることが考えられる他、データ共有をしなくても前述のストレージコントローラが提供するエンタープライズ向け機能を、NVMeで格納したデータに適用するために、本計算機システムが導入されることも考えられる。また、既に本計算機システムではない環境にて、NVMeコマンドを発行するプログラムを用いて業務システムが構築されていた場合は、当該プログラムに対して、ベンダプロプライエタリなフラッシュメモリデバイス向けのインターフェースを実装しなくても、本計算機システムにて業務システムが構築されることができる場合もある。
 なお、NVMeによるデータ共有は例えば以下の用途がある:
  #複数のサーバ計算機間の高速フェイルオーバ。サーバ計算機(1)の障害等に応じて、サーバ計算機(2)はサーバ計算機(1)による処理を引き継ぐフェイルオーバを行うと判定する。複数のサーバ計算機の夫々にPCIe接続を介してLocalフラッシュメモリデバイス(図では「Local Flash」と省略)が接続されており、そしてサーバ計算機のプログラムのNVMeコマンド発行先がLocalフラッシュメモリデバイスだけである場合、複数のサーバ計算機は、フェイルオーバ元と先のLocalフラッシュメモリデバイス間でデータコピーする必要があり、高速なフェイルオーバが難しい。本計算機システムの場合はそのようなデータコピーは不要である。
  #複数のサーバ計算機がNVMeで共有データ領域に並列アクセスすることで、並列処理を行う場合。あるサーバ計算機がデータをライトし、すぐに他のサーバ計算機が当該データをリードすることができる。
 しかし、サーバ計算機の数が増加した場合は、ストレージコントローラのI/O処理能力がボトルネックとなってしまう場合もある。
 こうした場合に対処するために、各サーバ計算機に対して、NVMeコマンドを解釈できるフラッシュメモリデバイス(Localフラッシュメモリデバイスと呼ぶ)がPCIeで接続され、接続されたサーバ計算機により占有されてもよい。こうした構成の場合、サーバ計算機で実行されるプログラムは、データ共有及びエンタープライズ向け機能の適用が不要なデータをLocalフラッシュメモリデバイスに格納し、データ共有又はエンタープライズ向け機能の適用を望むデータをストレージコントローラにより提供される記憶領域であるNVMeのNSに格納すればよい。例えば、サーバ計算機(1)の障害や負荷等により、サーバ計算機(1)のプログラムの処理がサーバ計算機(2)に引き継がれる構成において、サーバ計算機(1)は、引き継ぎに必要なデータを共有データ領域であるNSへ書き込み、NSから読み出すことにより、処理を実行し、引き継ぎに不要なデータをLocalフラッシュメモリデバイスへ書き込む。
 なお、こうした設定は手動で行われてもよいが、前述の管理サブシステムや統合管理サブシステムにより自動で行われてもよい。例えば、これらのサブシステムは、各NSが複数のサーバ計算機による共有(又はエンタープライズ向け機能の適用)可か否かを判断し、サーバ計算機で実行されるプログラムの特性に基づいて共有(又はエンタープライズ向け機能の適用)が必須であるデータを把握し、サーバ計算機で実行されるプログラムに対し、データを格納する記憶領域を使い分けるように設定してもよい。当該プログラムの管理者は本計算機システムの構成・特徴を熟知しているとは限らないため、管理者による当該プログラムの設定作業負荷が軽減される。なお、NSが共有か否かの判断方法としては以下が考えられるが、他の方法であってもよい:
*管理サブシステムがNSIDとストレージコントローラの記憶領域との関係を計算機システムに問い合わせる。
*サーバ計算機のプログラムがNSIDを指定して情報収集を行うことにより得られる情報から共通のNSであることを判断する。
<基本構成図>
 以下に計算機システムがCPFである場合を例により詳細な実施例を説明する。
≪NVMe制御でのCPF≫
 図2はCPFの物理構成及び論理構成を示した図である。
 本図でのCPF1は、サーバ計算機2、ストレージコントローラ3、記憶デバイスとしてフラッシュメモリデバイス5、管理サブシステムの一例として管理計算機7を含む。
 サーバ計算機2は、管理計算機7と接続するための管理I/F272を含む。サーバ計算機2は、プログラムの一例としてアプリケーションプログラム228(単にアプリケーションと省略することがある)、OS227、NVMe制御プログラム222、サーバ管理I/F制御プログラム229を実行する。なお、管理計算機7とサーバ計算機2及びストレージコントローラ3との接続はEthernetであることが考えられえるが、他の物理的・仮想的な接続形態であってもよい。サーバ管理I/F制御プログラム229は、管理I/F272を制御することにより、管理計算機7との通信を行う。
 NVMe制御プログラム222は、NVMeコマンドをPCIe I/F262に発行するプログラムである。なお、プログラム222はサーバ計算機2に格納されている他のプログラムの一部であってもよく、サーバ計算機2に格納されている他のプログラムと別なプログラムであってもよい。例えば、アプリケーションプログラム228がNVMeコマンドを発行する構成や、OS227内のデバイスドライバがNVMeコマンドを発行する構成がある。
 PCIe I/F262は、NVMe制御プログラム222の動作に従ってNVMeコマンドをPCIe I/F362へ送信した後、PCIe I/F362から当該NVMeコマンドに対するレスポンスを受信し、そのレスポンスをNVMe制御プログラム222へ返す。
 ストレージコントローラ3は、管理計算機7と接続するための管理I/F382と、フラッシュメモリデバイス5と接続するためのフラッシュI/F372と、を含む。なお、フラッシュI/F372とフラッシュメモリデバイス5との接続は、フラッシュメモリデバイス5がNVMeコマンドを解釈する場合はPCIe接続であることが好ましいが、そうでない場合はSASやSATA(Serial Advanced Technology Attachment)やFCやEthernetであってもよく、他の通信機構を用いてもよい。
 ストレージコントローラ3は、ストレージプログラム320を実行する。なお、ストレージプログラム320は例えば、各インターフェースとの通信を制御する、PCIe I/F制御プログラム322と、フラッシュI/F制御プログラム323と、管理I/F制御プログラム324と、を含む。PCIe I/F制御プログラム322は、PCIe I/F362を制御することにより、サーバ計算機2との通信を行う。フラッシュI/F制御プログラム323は、フラッシュI/F372を制御することにより、フラッシュメモリデバイス5との通信を行う。管理I/F制御プログラム324は、管理I/F382を制御することにより、管理計算機7との通信を行う。
 なお、PCIe I/F262とPCIe I/F362の実体は、例えば、図4に示すサーバ側PCIe I/Fデバイス4や、図9に示すストレージ側PCIe I/Fデバイス8である。
≪NVMe制御+SCSI制御でのCPF≫
 図3は別なCPFの物理構成及び論理構成を示した図である。
 図2との差異は、サーバ計算機2からストレージコントローラ3へのI/Oリクエストとして、NVMeとSCSIを併用することである。
 SCSI制御プログラム224は、他のプログラムからのリクエストに応じて、ストレージコントローラ3により提供されるLUNに対してSCSIリクエストをPCIe I/F262のSCSIファンクション(図中のSCSI Func.)宛に発行する。SCSI制御プログラム224は例えばSCSIデバイスドライバである。なお、本プログラムはサーバ計算機2に格納されている他のプログラムの一部であってもよく、サーバ計算機2に格納されている他のプログラムとは別なプログラムであってもよい。例えば、OS227内のデバイスドライバがSCSIリクエストを発行する場合がある。
 PCIe I/F262がNVMeコマンドとSCSIリクエストの両方を受け付ける場合、NVMeファンクション(図中のNVMe Func.)とSCSIファンクションの2つを持つ必要がある。この内NVMeファンクションについては図2のPCIe I/F262の説明として説明済みである。SCSIファンクションはSCSI制御プログラム224の動作に従ってSCSIコマンドをPCIe I/F362へ送信した後、PCIe I/F362から当該SCSIコマンドに対するレスポンスを受信し、そのレスポンスをSCSI制御プログラム224へ返す。なお、PCIe I/F362をマルチファンクションにするか否かは、仲介デバイスでNVMeコマンドを解釈するか否かによって定まる。
 このように、あるサーバ計算機2がNVMeコマンドとSCSIリクエストの両方を発行できるようにすることで、以下の少なくとも1つのメリットがある。
*サーバ計算機2においてNVMe非対応のプログラムが、NVMeのNSに対応した記憶領域にアクセスできるようにするため。
*サーバ計算機2においてNVMe非対応のプログラムが、NVMeのNSに対応した記憶領域とは別な記憶領域にアクセスできるようにするため。例えばストレージコントローラ3にHDDが接続している場合、サーバ計算機2が当該HDDの記憶領域に対してはSCSIでアクセスできるようにする。
*本願出願時点ではNVMeのI/FがNSをサーバ計算機2のブートデバイスとして使用できるように規格化されていないため。そのため、ストレージコントローラ3が提供する記憶領域をサーバ計算機2のブートデバイスとする場合、サーバ計算機2がその記憶領域にSCSIリクエストでアクセスできる必要がある。なお、サーバ計算機2がブートするということは、サーバ計算機2のBIOS(Basic Input/Output System)プログラムが、ブートデバイスを持つEPをハンドリング可能なように実装されている必要があるということである。ここでのEPは、例えばSCSI HBA(Host Bus Adapter)やPCIe I/Fデバイス(NVMeファンクション又はSCSIファンクション)である。その具体的な実装方法は以下の通りである:
  #BIOSプログラムが、発見したEPからBIOSプログラム用のデバイスドライバプログラムを取得し、それを実行する。
  #BIOSプログラム自体がNVMe用のドライバプログラムを含む。
 なお、サーバ計算機2には以下の3つのタイプがある。
(A)NVMeコマンドを発行し、SCSIリクエストを発行しない。
(B)NVMeコマンドとSCSIリクエストを発行する。
(C)NVMeコマンドを発行せず、SCSIリクエストを発行する。
 ここで、CPF1に含まれるサーバ計算機2は1つの場合もあれば複数の場合もある。複数の場合、CPF1に含まれるサーバ計算機2は、上記(A)乃至(C)のいずれか1タイプだけの場合もあれば、(A)乃至(C)のいずれか2タイプのコンビネーション、又は(A)乃至(C)の3タイプのコンビネーションの場合もあってもよい。
<候補(3)を用いるCPFのハードウェア全体構成>
 図4は、前述のNVMe解釈部位が候補(3)である場合のCPF1を詳細化した図である。なお、サーバ計算機2とストレージコントローラ3の間のPCIe接続はスイッチを介して行われるが、図では省略している。
 サーバ計算機2は、CPU21と、メインメモリ22(図ではMemと省略し、以後の説明ではメモリ22と呼ぶことがある)と、RC24と、サーバ側PCIe I/Fデバイス4とを含む。RC24とサーバ側PCIe I/Fデバイス4とはPCIeにて接続される。RC24とCPU21とはPCIeより高速なネットワークで接続される。メモリ22は、図示しないメモリコントローラを介して、CPU21及びRC24と高速なネットワークで接続される。これまで説明したサーバ計算機2にて実行される各プログラムは、メモリ22にロードされ、CPU21によって実行される。CPU21はCPUコアであってもよい。RC24とCPU21とメモリコントローラとは1つのLSIパッケージでまとめられてもよい。
 サーバ側PCIe I/Fデバイス4は、前述の仲介デバイスの一例である。サーバ側PCIe I/Fデバイス4は、サーバ計算機2の外部に配置されてもよい。サーバ側PCIe I/Fデバイス4は、以下の特徴を持つデバイスである:
*CPU21により実行されるプログラムによって発行されたNVMeコマンドを解釈する。
*RC24に対してEP41を提供する。
*ストレージコントローラ3に含まれるRC33に対して別なEP42を提供する。なお、ストレージコントローラ3に複数のRCが含まれ、本デバイス4がそれぞれと通信する必要がある場合は、本デバイス4は各RCに対して別なEP42を提供する。ここでのサーバ側PCIe I/Fデバイス4は、ストレージコントローラ3内の二つのRC33に対して二つのEP42を夫々提供する。
 サーバ側PCIe I/Fデバイス4は、これらの特徴を実現するために、複数のサーバ計算機2に夫々対応する複数のEP42を提供するロジックと、EP41を提供するロジックと、NVMeコマンドに基づくSCSIコマンドをストレージコントローラ3に発行するロジックとを含んでもよい。なお、EP41は図2のPCIe I/F262に対応し、EP42はPCIe I/F362に対応しているとも言える。更にサーバ側PCIe I/Fデバイス4が図3のSCSIファンクションに相当するロジックとして、CPU21により発行されたSCSIリクエストに基づくSCSIリクエストをストレージコントローラ3に発行するロジックを含んでもよい。これらのロジックの夫々は、専用回路などのハードウェアにより実現されてもよいし、ソフトウェアを実行するプロセッサにより実現されてもよい。
 なお、サーバ側PCIe I/Fデバイス4がNVMeファンクションとSCSIファンクションの両方を持つことで、別々なボードにこれらファンクションを実装する場合と比較して例えば以下の1つ以上のメリットがある:
*低コスト化。
*サーバ計算機2においてPCIe接続のデバイスを差し込むためのスペースの削減。
*サーバ計算機2内の使用PCIeスロット数の削減。
特に本候補(3)で上記マルチファンクションを実現した場合は、サーバ側PCIe I/Fデバイス4がSCSIリクエストをストレージコントローラ3へ送信するロジックをファンクション間で共通化できるため、デバイスの小型化又はコスト削減が可能である。
 なお、サーバ計算機2は前述の通りLocalフラッシュメモリデバイス23(図ではFlashと省略)を含んでもよい。Localフラッシュメモリデバイス23はRC24とPCIeで接続される。
 なお、サーバ計算機2に含まれる各構成物は複数であってもよい。なお、図ではLocalフラッシュメモリデバイス23とサーバ側PCIe I/Fデバイス4とはRC24を介して通信をするように記載されているが、RC24を介さずに通信してもよく、また通信できなくてもよい。
 ストレージコントローラ3は1つ以上の(図では2つの)コントロールユニット36(図ではCTLユニットと省略)を含む。各コントロールユニット36は、CPU31と、メインメモリ32(図ではMemと省略し、以後の説明ではメモリ32と呼ぶことがある)と、RC33と、フラッシュI/F372とを含む。RC33と、サーバ側PCIe I/Fデバイス4と、フラッシュI/F372とはPCIeにて接続される。RC33とCPU31とはPCIeより高速なネットワークで接続される。メインメモリ32は、図示しないメモリコントローラを介して、CPU31及びRC33と高速なネットワークで接続される。これまで説明してきたストレージプログラム320等のストレージコントローラ3で実行される各プログラムは、メモリ32にロードされ、CPU31によって実行される。CPU31はCPUコアであってもよい。RC33とCPU31とメモリコントローラとは1つのLSIパッケージでまとめられてもよい。
 各コントロールユニット36はHDD6に接続するためのディスクI/F34を含んでもよい。なお、フラッシュI/F372とディスクI/F34が同じインターフェースタイプである場合は、これら2つのI/Fを共通化してもよい。なお、ディスクI/F34はSAS、SATA、FC、Ethernetであることが考えられるが、他の通信機構を用いてもよい。
 なお、図ではフラッシュI/F372(又はディスクI/F34)とサーバ側PCIe I/Fデバイス4とはRC33を介して通信をするように記載されているが、RC33を介さずに通信してもよく、また通信できなくてもよい。この点はフラッシュI/F372とディスクI/F34についても同様である。
 なお、コントロールユニット36に含まれる各構成物は複数であってもよい。
 なお、コントロールユニット36間は通信可能であることが望ましく、図ではその一例としてRC33間をPCIeで接続するように記載している。なお、RC33間をPCIeで接続する場合は、図示しないNTB(Non-transparent Bridge)を介して通信する。なお、コントロールユニット36間の通信は他の機構を用いてもよい。
<候補(3)を用いるCPFのPCIe空間の範囲>
 図5は、図4のサーバ側PCIe I/Fデバイス4を中心に拡大し、PCIeアドレスの空間であるPCIe空間を記載した図である。PCIe空間241は、サーバ計算機2内のRC24がコントロールする空間であり、PCIe空間331は、ストレージコントローラ3内のRC33がコントロールする空間である。なお、前述の「複数RCの同居」問題で示した通り、複数のRCが1つのPCIe空間に同居することができない。そのため、サーバ側PCIe I/Fデバイス4はそれぞれのPCIe空間を分離させるために、RC24向けのPCIeリンクと、RC33向けのPCIeリンクを接続でき、それぞれのリンクにおいてEPとして動作する。
 なお、ディスクI/F34とフラッシュI/F372とはPCIe空間331とは別なPCIe空間に存在してもよい。
<NVMeのNSとストレージコントローラの記憶領域の関係>
 図6は、NVMeのNSとストレージコントローラ3の記憶領域との関係を示した図である。ストレージコントローラ3は以下の記憶領域を管理している。
*パリティグループ。それは複数の記憶デバイス(フラッシュメモリデバイス5やHDD6)を用いて定義される。これにより、RAID(Redundant Arrays of Inexpensive Disks)による高信頼化、高速化、大容量化が達成される。
*論理ボリューム。それはパリティグループの記憶領域を分割した領域である。パリティグループの記憶領域はそのままサーバ計算機に提供されるには大容量過ぎる場合があるため、論理ボリュームが存在する。
*プール。それはシンプロビジョニングやティアリングに用いる記憶領域が含まれるグループである。図では論理ボリュームがプールに割り当てられているが、パリティグループや記憶デバイス自体が直接プールに割り当てられてもよい。
*仮想ボリューム。それはプールを用いて定義された、シンプロビジョニング又は/及びティアリングを適用した仮想記憶領域である。なお、以後の説明では論理ボリュームと仮想ボリュームを指し示す用語として「ボリューム」と呼ぶことがある。
*Logical Unit(論理ユニット、以後、LUと呼ぶことがある)。それは仮想ボリューム又は論理ボリュームのうち、サーバ計算機2からのアクセスを許す記憶領域である。Logical UnitはSCSIのLUN(Logical Unit Number)を割り当てられる。
 なお、ストレージコントローラ3は上記全種類の記憶領域を提供しなくてもよい。
 NSはこれら記憶領域のいずれの種類に対して対応付けられてもよい。しかし、NSはLogical Unitに対応付けられることがより好ましい。なぜならばストレージプログラム320はSANストレージシステムのストレージプログラム320と互換性を保ちやすくなり、また記憶領域の定義についてもSANストレージシステムとの互換性が高くなるからである。以後、NSに対応付けられたLogical UnitのLUNと区別するために、NSに対応付けられていないLogical UnitのLUNを、SCSI LUNと呼ぶことがある。
<ストレージプログラム>
 以上説明した項目も含め、ストレージプログラム320は以下の処理を行う(全部である必要はない):
*SCSIリクエストを受信し、解釈し、処理すること。例えば当該SCSIリクエストがリードリクエストであれば、ストレージプログラム320は、フラッシュメモリデバイス5やHDD6等の記憶デバイスからデータをリードし、サーバ計算機2に転送する。なお、その際、ストレージコントローラ3のメインメモリ32をキャッシュメモリとして用いてもよい。例えば当該SCSIリクエストがライトリクエストであればキャッシュメモリにライトデータを格納し、その後記憶デバイスにライトデータをライトする。
*パリティグループに対してRAID処理をすること。
*ストレージコントローラ3により提供される上記記憶領域の定義を行うこと。なお、定義した結果はストレージコントローラ3のメインメモリ32に記憶領域定義情報として格納し、前述のリクエスト処理の際に参照する。
*その他シンプロビジョニング等のエンタープライズ向け機能の処理を行うこと。
<候補(3)におけるリクエスト変換処理>
 前述の通り候補(3)では、サーバ側PCIe I/Fデバイス4は、サーバ計算機2より受信したNVMeコマンドに基づいてSCSIコマンドを生成し、ストレージコントローラ3に送信する。
 図7はサーバ計算機2と、サーバ側PCIe I/Fデバイス4とコントロールユニット36との間で行われるNVMeコマンドに関連したNVMeコマンド処理を示すフローチャートである。なお、下記処理は、NVMeコマンドがリード又は/及びライトの場合に適用されるが、他のNVMeコマンドに適用されてもよい。
 処理手順は以下の通りである。なお、下記ステップはストレージコントローラ3に複数のコントロールユニット36が含まれ、各コントロールユニット36に複数のCPU31が含まれ、また、Logical UnitをNSに対応させる場合を想定している:
(S8110)サーバ計算機2は、前述のプログラムの処理によりNVMeコマンドを送信する。なお、NVMeコマンドはNSIDを含むことで、対象となるNSを指定できる。NVMeコマンドはまた、NSID内のアクセス範囲と、サーバ計算機2のメモリ範囲とを含む。
(S8112)サーバ側PCIe I/Fデバイス4は、NVMeコマンドを受信する。
(S8114)サーバ側PCIe I/Fデバイス4は、受信したNVMeコマンドを解釈し、コマンドに含まれるNSIDを、対応するLUNに変換する。
(S8116)サーバ側PCIe I/Fデバイス4は、変換したLUNを含むSCSIコマンドを生成する。
(S8118)サーバ側PCIe I/Fデバイス4は、生成したSCSIコマンドの送信先となるコントロールユニット36及びCPU31を決定する。
(S8120)サーバ側PCIe I/Fデバイス4は、生成したSCSIコマンドを決定した送信先に送信する。
(S8122、S8124)送信先のコントロールユニット36のCPU31は、SCSIコマンドを受信し、受信したSCSIコマンドを処理する。
 なお、S8110とS8112のNVMeコマンドの送信及び受信とは以下の処理である:
(A)サーバ計算機2で実行中のプログラムは、サーバ計算機2のメモリ22に準備したI/OキューにNVMeコマンドを登録し、
(B)サーバ計算機2で実行中のプログラムは、サーバ側PCIe I/Fデバイス4のEP41のNVMeレジスタ空間のI/Oキューのhead pointerをインクリメントし、
(C)サーバ側PCIe I/Fデバイス4は、I/Oキューのhead pointerのインクリメントを検知し、サーバ計算機2のメモリ22のI/OキューからNVMeコマンドをフェッチする。
 ところで(C)で複数のNVMeコマンドがフェッチされる場合があり、この場合、サーバ側PCIe I/Fデバイス4は個々のNVMeコマンドに対してS8114以降のステップを行うが、その実行順序としては、NVMeコマンド毎にS8114からS8124をシリアルに繰り返し実行してもよく、パラレルに実行してもよい。
 なお、図示はしていないが、S8124の処理の結果、NVMeコマンドがライトであれば、サーバ側PCIe I/Fデバイス4は、サーバ計算機2のメモリ22に格納されたライトデータを、ストレージコントローラ3のメモリ32に転送する。NVMeコマンドがリードであれば、サーバ側PCIe I/Fデバイス4は、ストレージコントローラ3のメモリ32に格納されたリードデータを、サーバ計算機2のメモリ22に転送する。
 また、S8114でのNSIDからLUNへの変換は、例えば以下のいずれか又は併用で行うことが考えられる:
*サーバ側PCIe I/Fデバイス4は、所定の変換式(ビット演算を含んでもよい)でNSIDからLUNに変換する。なお、サーバ側PCIe I/Fデバイス4は、所定の変換式とペアを成す逆変換式により、LUNからNSIDへも変換できる。所定の変換式のシンプルな例がNSID=LUNである。
*サーバ側PCIe I/Fデバイス4は、NSIDからLUNを得るための変換テーブルをサーバ側PCIe I/Fデバイス4のメモリに格納し、変換の際に参照する。
 なお、図3で説明の通り、S8112にてサーバ側PCIe I/Fデバイス4はサーバ計算機2から発行されたSCSIコマンドを受信してもよい。この場合、続くS8114、S8116は省略するが、そのために、サーバ側PCIe I/Fデバイス4は、受信したコマンドがNVMeコマンドか、SCSIコマンドか判断する。
 なお、S8118での送信先の決定方法は以下の基準で決定することが考えられるが、他の基準で決定してもよい:
*コントロールユニット36、又はCPU31の障害の有無。例えば、サーバ側PCIe I/Fデバイス4は送信の結果として得られるコントロールユニット36の状態を記憶し、記憶した状態に基づいて障害が発生していないコントロールユニット36に送信する。
*コントロールユニット36、又はCPU31の障害の負荷。実現形態としては、(A)ストレージコントローラ3又は管理計算機7が、コントロールユニット36又はCPU31の負荷を取得し、各NS宛てのリクエストで生成されたSCSIコマンドの送信先となるコントロールユニット36又はCPU31を決定して各サーバ側PCIe I/Fデバイス4に送信し、(B)決定結果を受信したサーバ側PCIe I/Fデバイス4は決定結果に基づいてSCSIコマンドを送信する。
≪SCSIコマンドを含むFCPコマンドを送信する場合≫
 なお、サーバ側PCIe I/Fデバイス4は、S8116でSCSIコマンドの生成に加えて生成したSCSIコマンドを含むFCP(Fibre Channel Protocol)コマンドを生成し、S8118でFCPコマンドとして送信してもよい。これには以下のメリットがある:
*ストレージプログラム320にてWWN(World Wide Name)又はWWNから生成されたPort IDや、IPアドレスといったSAN上の通信識別子を用いた制御(アクセス制御や優先度制御等)を行うことができる。
*SANストレージサブシステムとの互換性が維持できる。これはストレージプログラム視点と操作視点の両方の意味がある。
*統合管理サブシステムがサーバ計算機2とストレージコントローラ3間の接続を取得できる。
 FCPコマンドを送信する場合、サーバ側PCIe I/Fデバイス4は以下を持つ:
*EP41に対応する仮想サーバポート(仮想WWNが割り当てられる)。
*EP42に対応する仮想ストレージポート(仮想WWNが割り当てられる)。仮想ストレージポートは、ストレージプログラム320により通常のSANポートと同様に認識され、取り扱われる。
 管理サブシステムは上記仮想ストレージポートに対してLogical Unitの定義を行うことで、どのボリュームをNVMeのNSとするか指定することができる。以下が管理サブシステムの処理フローである:
(S01)管理サブシステムは、ストレージポートとボリュームを指定するLogical Unit定義リクエストを受信する。
(S02)指定されたストレージポートが仮想ストレージポートでない場合、管理サブシステムは、SANストレージサブシステムと同様の処理で指定されたストレージポートに対して、指定されたボリュームに対応するLogical Unitを定義する指示を、ストレージコントローラ3に送信する。
(S03)指定されたストレージポートが仮想ストレージポートである場合、管理サブシステムは、指定された仮想ストレージポートに対して、指定されたボリュームに対応するLogical Unitを定義する指示を、ストレージコントローラ3に送信する。
 なお、S03の指示を受けたストレージコントローラ3は以下の処理を行う:
(S03-1)ストレージコントローラ3は、指定された仮想ストレージポートに対応するサーバ側PCIe I/Fデバイス4を選択する。
(S03-2)ストレージコントローラ3は、指定されたボリュームに対応するLogical Unitを定義する(つまりLUNを、指定されたボリュームに割り当てる)。
(S03-3)ストレージコントローラ3は、選択されたサーバ側PCIe I/Fデバイス4に対して、割り当てられたLUNを通知する。なお、サーバ側PCIe I/Fデバイス4は通知されたLUNに対してNSIDを割り当てることでNS化する。なお、この割り当ての処理においてサーバ側PCIe I/Fデバイス4は、NSIDを生成し、NSIDとLUNの変換情報を用いている場合は当該情報の生成・登録を行う。
 以上が管理サブシステムの処理フローの説明である。これにより、管理者は仮想ストレージポートを指定することでどのサーバ計算機2に対してボリュームをNVMeとして提供するか指定することができる。これは、サーバ側PCIe I/Fデバイス4毎に仮想ストレージポートを持ち、当該デバイス4は複数のサーバ計算機2でシェアされない形態であるためである。また、ストレージコントローラ3がLogical Unitを対象とした性能モニタリング機能を持つ場合、当該Logical Unitに負荷を与えるサーバ計算機2が1つに定まることから迅速に負荷の原因となるサーバ計算機2を特定することができる。なお、複数のサーバ計算機2が、あるボリュームを共有NSとしてアクセスする場合は、共有するサーバ計算機2の仮想ストレージポート各々に対して上記Logical Unit定義を行う。
 なお、以上の説明ではFCPに特化して説明したが、FCPの代わりにiSCSI(Internet Small Computer System Interface)のPDU(Protocol Data Unit)やEthernetフレームを対象とする場合は上記説明のWWNをIPアドレスやMAC(Media Access Control)アドレスと読み替えればよく、一般化するとしたら上記説明のWWNを通信識別子(WWNやIPアドレスやMACアドレスを含む意味)と読み替えればよい。
 なお、管理サブシステムは、NVMeのNSとしたボリュームに対してSANポートに対するLogical Unit定義をガードする設定モードを設けてもよい。NSに対して一時的なデータのみを格納する運用形態の場合、SANポートに対するLogical Unitは意図しないデータ更新の元となるからである。また、ボリュームをNSとSANのLUNとの両方の経路でOSに認識させた場合、OSはそれぞれを別な記憶領域として認識してしまい、データ不整合を招く更新処理を実行する可能性がある。本ガードモードはそうしたデータ不整合を回避することもできる。
<CPFの起動方法>
 図8はCPF1の起動方法を示すフローチャートである。
(S1531、S1532、S1533、S1534)ストレージコントローラ3は、電源ONを検知したらストレージプログラム320を起動し、後述する仮想ボリューム作成処理を行い、Logical Unitへのアクセス受付開始状態となる。
(S1535)ストレージコントローラ3は、サーバ側PCIe I/Fデバイス4へLogical Unit情報(LUN等)を送信する。なお、ここでストレージコントローラ3は、サーバ側PCIe I/Fデバイス4からのリクエストに応じて送信してもよく、主体的に送信してもよい。
(S1521)サーバ計算機2及びサーバ側PCIe I/Fデバイス4は、電源ONを検知する。
(S1542、S1543)サーバ側PCIe I/Fデバイス4は、起動し、ストレージコントローラ3から受信したLogical Unit情報を受信することでLogical Unitを認識する。
(S1544)サーバ側PCIe I/Fデバイス4は、認識したLogical Unitに対応するNS情報(NSID等)を生成し、サーバ計算機2で実行されるプログラムに送信する。なお、ここでサーバ側PCIe I/Fデバイス4はサーバ計算機2のプログラムからのリクエストに応じて送信することが考えられるが、サーバ側PCIe I/Fデバイス4が主体的に送信してもよい。なお、本ステップはデバイス4の起動の一環として行われてもよく、起動後に行われてもよい。
(S1522)サーバ計算機2は、OS227、アプリケーション228等のプログラムを起動し、NSの認識が必要なプログラムはNS情報(NSID等)の受信を待つ。
(S1523)サーバ計算機2においてNSの認識が必要なプログラムは、サーバ側PCIe I/Fデバイス4から、NS情報を受信する。なお、本図が示す通り、S1523の受信を行った時点で、ストレージコントローラ3及びサーバ側PCIe I/Fデバイス4の起動は完了している。なお、本ステップはS1522の起動の一環として行われてもよく、起動後に行われてもよい。
 以上の処理の後、図7にて説明したNVMeコマンドの処理が行われる。なお、本図ではストレージコントローラ3と、サーバ計算機2(及びサーバ側PCIe I/Fデバイス4)との電源ONは独立して行われることとした。しかし、S1531乃至S1533のステップの一環として、ストレージコントローラ3が、サーバ計算機2(及びサーバ側PCIe I/Fデバイス4)の電源ONを指示してもよい。
<NVMe解釈部位が候補(2)である場合>
 図9は、前述のNVMe解釈部位が候補(2)である場合のCPF1を詳細化した図である。図4との相違点は以下である:
*サーバ側PCIe I/Fデバイス4は、PCIeスイッチ(SW)9に代替された。
*ストレージコントローラ3にストレージ側PCIe I/Fデバイス8が新設された。なお、本デバイス8はサーバ側PCIe I/Fデバイス4と同様であるが、サーバ計算機2の各々に対してEP51を提供することで前述の「複数RCの同居」問題を解決するため、本デバイス8においてサーバ計算機2に接続されるEP51の数は、サーバ計算機2の数以上になる。更に本デバイス8は、ストレージコントローラ3内のRC33に対してEP52を提供する。
 なお、ストレージ側PCIe I/Fデバイス8のNVMeコマンド処理は図7で説明したフローで処理してもよいが、図1で説明したようにストレージプログラム320と連携することで、ストレージコントローラ3の内部状態を考慮した効率的なNVMeのキュー制御を行ってもよい。例えばNVMeコマンド処理は、負荷集中や障害があるHDDが割り当てられているNSが関係しているNVMeのキューからのフェッチの優先度を下げる。また、ストレージ側PCIe I/Fデバイス8は、NVMeコマンドをSCSI以外のコマンド形式に変換してもよく、またNVMeコマンドのままストレージプログラム320に送信してもよい。
<CPF1の適用形態>
 これまで説明してきた、CPFの適用形態の例を図10に示す。
 旧システムにより実行されているアプリケーションをCPFへ移行させるケースについて説明する。旧システムは、サーバ計算機(1)と、サーバ計算機(2)と、二つのローカルフラッシュメモリデバイス(図ではNVMe Local Flashと省略)と、ストレージコントローラと、記憶デバイスとを含む。二つのローカルフラッシュメモリデバイスは、サーバ計算機(1)及び(2)にPCIeで夫々接続されている。ストレージコントローラは、サーバ計算機(1)及び(2)にFCで接続されている。サーバ計算機(1)はアプリケーションを実行する。ストレージコントローラは、記憶デバイスを用いて、SCSIをサポートするLogical Unit(図ではSCSI Logical Unitと記載)を提供する。
 旧システムにてアプリケーションが以下の設定で利用されていたとする:
*アプリケーションは、一時的に生成するデータを、NVMeをサポートするローカルフラッシュメモリデバイスのNSに格納し、非一時的なデータを、ストレージコントローラにより提供されるLogical Unitに格納する。これによってアプリケーションの高速処理を実現する。
*仮にサーバ計算機(1)が停止した場合、サーバ計算機(2)がアプリケーションの処理を再開する。ただし、サーバ計算機(2)はサーバ計算機(1)によりローカルフラッシュメモリデバイスに格納されたデータを引き継げないため、サーバ計算機(2)はFC経由でLogical Unitからデータを読み込み、処理を再開する。
 このようなアプリケーションを旧システムからCPFに移行させることができる。CPFは、サーバ計算機(1)と、サーバ計算機(2)と、ストレージコントローラと、フラッシュメモリデバイス(図ではFlashと省略)とを含む。CPFは、各サーバ計算機に接続されたローカルフラッシュメモリデバイスに代えて、ストレージコントローラに接続されたフラッシュメモリデバイスを用いる。ストレージコントローラは、フラッシュメモリデバイスを用いて、SCSIをサポートするLogical Unitと、NVMeをサポートするnamespace(図ではNVMe Namespaceと記載)とを提供する。サーバ計算機(1)のアプリケーションは、共有データ領域であるNSに一時データを書き込み、NSから一時データを読み出すことにより、処理を実行する。サーバ計算機(1)の障害等により、サーバ計算機(2)が、サーバ計算機(1)のアプリケーションの処理をサーバ計算機(2)へ引き継ぐことを判定した場合、サーバ計算機(2)は、NSから一時データを読み出し処理を引き継いで実行する。
このような構成によれば、以下のメリットが得られる:
*フラッシュメモリデバイスの保守を集約できる。
*フラッシュメモリデバイスに対してストレージコントローラのエンタープライズ向け機能を用いることにより、信頼性、冗長性、高機能性、保守・管理容易性が向上できる。
 更に、アプリケーション設定を変更し、NSに格納された一時データを、サーバ計算機間で引き継ぐようにすれば、障害等によるサーバ計算機(1)からサーバ計算機(2)への切り替え時間が短縮でき、アプリケーションのMTBF(Mean Time Between Failure)が向上する他、サーバ計算機間の切り替えが容易となることから、保守・管理容易性が向上する。また、従来はSCSIのLogical Unitに格納していた非一時的なデータをNVMeのNSに格納できるため、アプリケーション処理性能が更に向上する。
<LUにシンプロビジョニング及びティアリングを適用する場合>
 以下、ストレージコントローラ3がシンプロビジョニング及びティアリングを適用するLUを提供し、サーバ側PCIe I/Fデバイス4がそのLUをNSに関連付ける場合について説明する。シンプロビジョニングは、仮想ボリュームをサーバ計算機2へ提供し、サーバ計算機2から仮想ボリュームへのアクセスに基づいて、プール内の記憶領域を仮想ボリュームに割り当てる。シンプロビジョニングは、容量仮想化とも呼ばれる。ティアリングは、サーバ計算機2から書き込まれるデータを複数の種類の記憶媒体の何れかに配置する。ティアリングは、階層制御仮想化や自動階層化とも呼ばれる。
≪ストレージコントローラ3におけるデータの構成≫
 図11は、ストレージコントローラ3におけるデータの構成を示す。
 ストレージコントローラ3はメモリ32に、LU管理テーブル351と、仮想ボリューム管理テーブル352と、プール管理テーブル353と、論理ボリューム管理テーブル354と、マッピング管理テーブル355とを格納する。
 図12は、LU管理テーブル351を示す。
 LU管理テーブル351は、LU毎のエントリを含む。一つのLUに対応するエントリは、LUNと、ボリューム種別及びボリューム番号と、LU容量とを含む。LUNは、当該LUを示す識別子である。ボリューム種別は、当該LUに割り当てられたボリュームの種別であり、当該ボリュームが仮想ボリュームであるか論理ボリュームであるかを示す。ボリューム番号は、ボリューム種別に応じて当該ボリュームを示す仮想ボリューム番号又は論理ボリューム番号である。LU容量は、当該ボリュームの容量である。当該LUがサーバ計算機2によりNVMeでアクセスされる場合、NSの容量はLU容量である。シンプロビジョニングを用いるLUにおいて、ボリューム種別は仮想ボリュームを示し、ボリューム番号は仮想ボリューム番号を示す。シンプロビジョニングを用いないLUにおいて、ボリューム種別は論理ボリュームを示し、ボリューム番号は論理ボリューム番号を示す。なお、LUNは少なくともストレージポート(仮想ストレージポートを含む)毎に独立した番号空間を持つため、本テーブルは複数存在してもよく、より具体的にはストレージポート毎に存在してもよい。
 図13は、仮想ボリューム管理テーブル352を示す。
 仮想ボリューム管理テーブル352は、仮想ボリューム毎のエントリを含む。一つの仮想ボリュームに対応するエントリは、仮想ボリューム番号と、仮想ボリューム属性と、仮想ボリューム容量と、使用プール番号(#)と、使用Tier番号(#)とを含む。仮想ボリューム番号は、当該仮想ボリュームのボリューム番号である。仮想ボリューム属性は、当該仮想ボリュームに対してアクセスするサーバ計算機2側のプロトコルであり、NVMeであるかSCSIであるかを示す。仮想ボリューム容量は、当該仮想ボリュームのボリューム容量であり、当該仮想ボリュームの作成時にストレージコントローラ3の管理者により設定される。使用プール番号は、当該仮想ボリュームに関連付けられるプールを示すプール番号である。使用Tier番号は、当該仮想ボリュームに関連付けられるTierを示すTier番号である。Tier番号が小さいほど記憶デバイスの性能が高い。例えば、Tier1の記憶デバイスとしてSSDが割り当てられ、Tier2の記憶デバイスとして、SSDよりアクセス性能が低くコストが低いSAS HDDが割り当てられ、Tier3の記憶デバイスとして、SAS HDDよりアクセス性能が低くコストが低いSCSI HDDが割り当てられる。この例において、SCSIコマンドにより仮想ボリューム#1を指定して書き込まれるデータは、Tier1~3の何れかに格納される。SCSIコマンドにより仮想ボリューム#2を指定して書き込まれるデータは、Tier1及び2の何れかに格納される。NVMeコマンドにより仮想ボリューム#3を指定して書き込まれるデータは、Tier1及び2の何れかに格納される。仮想ボリューム#3を用いて、アクセスが少ないデータをTier2に配置することで、記憶デバイスのコストを削減することができる。NVMeコマンドにより仮想ボリューム#4を指定して書き込まれるデータは、必ずTier1に格納される。仮想ボリューム#4を用いることにより、高性能な共有データ領域を提供することができる。SCSIによりアクセスされる二つの仮想ボリューム#1、#2は、一つのプール#1を共有している。NVMeによりアクセスされる二つの仮想ボリューム#3、#4は、二つのプール#2、#3に夫々関連付けられている。
 このように、サーバ計算機2により用いられるプロトコルとTierの構成を関連付けることにより、サーバ計算機2は、アクセスに用いるプロトコルによってアクセス性能や記憶媒体のコストを使い分けることができる。また、NVMeコマンドによりアクセスするボリュームを、フラッシュメモリ等の最上位の階層に固定することで、フラッシュメモリによる高速アクセスを維持しつつ、プールやティア導入による管理容易化を達成できる。
 図14は、プール管理テーブル353を示す。
 プール管理テーブル353は、プール毎のエントリを含む。一つのプールに対応するエントリは、プール番号(#)と、プール属性と、プール容量と、割当済容量と、枯渇閾値と、登録論理ボリューム番号(#)とを含む。プール番号は、当該プールを示す識別子である。プール属性は、当該プールに関連付けられたプロトコルであり、サーバ計算機2がアクセスにNVMe及びSCSIの何れを用いるかを示し、当該プールの作成時に管理者により設定される。プール容量は、当該プールの容量であり、当該プールに登録された論理ボリュームの容量の合計である。割当済容量は、当該プールから仮想ボリュームに割り当てられたページの容量の合計を示す。枯渇閾値は、プール容量に対する割当済容量の割合の閾値である。ストレージコントローラ3は、当該プールのプール容量に対する割当済容量の割合が枯渇閾値を超えると、当該プールに論理ボリュームを追加することを要求するアラートを管理計算機7に通知する。登録論理ボリューム番号は、当該プールに登録された論理ボリュームを示す論理ボリューム番号であり、Tier毎に設定される。論理ボリューム番号に予め「禁止」と設定されているTierには、論理ボリュームを追加することができないことを示す。
 このプール管理テーブル353によれば、ストレージコントローラ3は、プールにTier毎の論理ボリュームを割り当てることができる。また、ストレージコントローラ3は、プール容量と割当済容量を管理することにより、プール容量の不足を検出でき、管理者への通知を行うことができる。
 図15は、論理ボリューム管理テーブル354を示す。
 論理ボリューム管理テーブル354は、論理ボリューム毎のエントリを含む。一つの論理ボリュームに対応するエントリは、論理ボリューム番号(#)と、記憶媒体と、論理ボリューム容量と、登録先プール番号(#)と、登録先LUNとを含む。論理ボリューム番号は、当該論理ボリュームの識別子である。記憶媒体は、当該論理ボリュームを構成する記憶媒体の種別を表す識別子であり、例えばSSD、SAS(HDD)、SATA(HDD)の何れかを示す。論理ボリューム容量は、当該論理ボリュームの容量である。登録先プール番号は、当該論理ボリュームの登録先のプールのプール番号である。登録先LUNは、当該論理ボリュームの登録先のLUのLUNである。シンプロビジョニングを用いる場合、論理ボリュームは、プールに関連付けられる。シンプロビジョニングを用いない場合、論理ボリュームは、LUに関連付けられる。プール及びLUの何れにも関連付けられていない論理ボリュームは、予備の論理ボリュームである。ストレージコントローラ3は、管理者により追加された論理ボリュームを、予備の論理ボリュームとして論理ボリューム管理テーブル354に登録する。予備の論理ボリュームは例えば、プール容量が枯渇した場合に当該プールへ追加される。複数のTierを持つプールには、互いに異なる複数の記憶媒体が割り当てられる。
 なお、SSDは、PCIeやSAS等のインターフェースを有していても良い。互いに異なるインターフェースを有する複数の種類のSSDがストレージコントローラ3に接続されている場合、それら複数の種類が複数のTierに夫々割り当てられても良い。
 この論理ボリューム管理テーブル354によれば、ストレージコントローラ3は、論理ボリュームに割り当てられる記憶媒体の種類を管理することができる。これにより、ストレージコントローラ3は、Tierに適した記憶媒体を論理ボリュームに割り当てることができる。
 マッピング管理テーブル355は、仮想ボリュームにおける仮想ページとプールに割り当てられた論理ボリューム内の論理ページとの第1の関係と、論理ボリュームのアドレス(論理ボリューム論理アドレスと呼ぶ)と記憶デバイスのアドレス(記憶デバイス論理アドレスと呼ぶ)との第2の関係を含む。なお、仮想ページとは、仮想ボリュームのアドレス空間を所定の長さ毎に分割した個々の空間を指す。論理ページとは、論理ボリュームのアドレス空間を所定の長さ(典型的には仮想ページの場合と同じ長さ)毎に分割した個々の空間を指す。
 第1の関係を表すエントリには、仮想ページを表す情報(例えば仮想ボリューム#と仮想ボリューム論理アドレスの組み)と、当該仮想ページに割り当てられた論理ページを表す情報(例えば論理ボリューム#と論理ボリューム論理アドレスの組み)との組みが登録される。これによって仮想ボリュームのアドレスを指定したアクセスをプールに割り当てられた論理ボリュームのアドレスに変換することができる。なお、シンプロビジョニングの場合は、仮想ページに論理ページが割り当てられていない場合もある。このような場合は前述の論理ページを表す情報には「割り当てられていない」ことを表す値が入る。なお、第1の関係を表す内容は、シンプロビジョニングを実現できるのであれば他の形態であってもよく、他の情報を含むことを排除するものでもない。例えば、仮想ページと論理ページそれぞれにページ番号を付与し、当該ページ番号で割り当て関係を表現してもよい。
 第2の関係を表す方法は、図6に示した論理ボリュームとパリティグループ、記憶デバイスの関係に依存するが、要は論理ボリューム論理アドレスから記憶デバイス論理アドレスに変換できればよい。仮に1つの論理ボリュームは1つのパリティグループにしか対応しない場合、第2の関係は、その論理ボリュームが対応するパリティグループの識別子と対応させたパリティグループ内のアドレス空間をエントリとする。また、仮に1つの記憶デバイスを複数のパリティグループに跨って割り当てない場合、パリティグループに含まれる記憶デバイスの識別子リストもエントリの一部となる。なお、第2の関係は他の形態で表現されてもよい。
 このマッピング管理テーブル355によれば、ストレージコントローラ3は、仮想ボリューム内のアドレスに対応する論理ボリューム内のアドレスを取得することができる。また、ストレージコントローラ3は、論理ボリューム内のアドレスに対応する記憶デバイス内のアドレスを取得することができる。
≪仮想ボリューム作成処理≫
 図16は、仮想ボリューム作成処理を示す。
 仮想ボリューム作成処理は、以下の処理を含む:
(S2110)管理者が管理計算機7に仮想ボリューム作成画面を表示させ、その画面上で仮想ボリュームの作成の指示を入力すると、管理計算機7は、その指示をストレージコントローラ3へ発行する。
(S2120)その後、ストレージコントローラ3は、指示に基づいて、当該仮想ボリュームの仮想ボリューム属性がNVMeであるか否かを判定する。仮想ボリューム属性がNVMeでない、即ち仮想ボリューム属性がSCSIであると判定された場合(SCSI)、ストレージコントローラ3は、処理をS2150へ移行させる。一方、仮想ボリューム属性がNVMeであると判定された場合(NVMe)、ストレージコントローラ3は、処理をS2130へ移行させる。
(S2130)ストレージコントローラ3は、プール管理テーブル353にNVMe用プールのエントリを追加し、指示に基づいてTier毎の論理ボリュームの登録の許可又は禁止を設定する。
(S2140)その後、ストレージコントローラ3は、当該プールを指定して論理ボリュームを登録する論理ボリューム登録処理を行う。
(S2150)その後、ストレージコントローラ3は、仮想ボリューム管理テーブル352に当該プールに関連付けられた仮想ボリュームのエントリを追加し、このフローを終了する。
 この仮想ボリューム作成処理によれば、ストレージコントローラ3は、サーバ計算機2がNVMeコマンドを用いてアクセスする仮想ボリュームを作成すると共に、その仮想ボリュームに割り当てるプールを作成することができる。これにより、ストレージコントローラ3は、作成されたプールを、一つの仮想ボリュームだけに割り当て、仮想ボリュームの容量を管理すると共に、仮想ボリュームに対応するプールの容量を管理することができる。なお、複数のNVMe向け仮想ボリュームがプールを共有する場合は、S2130及びS2140においてストレージコントローラ3は、SCSIの場合と同様に好適なプールを選択し(選択は管理者からプールの識別子を受信する方法や管理計算機が所定の基準で選択する方法がある)、S2150に進むことが考えられる。
 図17は、仮想ボリューム作成画面を示す。
 仮想ボリューム作成画面は、仮想ボリューム番号と、アクセスプロトコルと、仮想ボリューム容量と、利用記憶階層と、次ボリュームボタンと、完了ボタンとを含む。仮想ボリューム番号には、作成される仮想ボリュームの仮想ボリューム番号が入力される。アクセスプロトコルには、当該仮想ボリュームの仮想ボリューム属性となるアクセスプロトコルとしてSCSI及びNVMeの何れかが入力される。仮想ボリューム容量には、当該仮想ボリュームの仮想ボリューム容量が入力される。利用記憶階層は、Tier毎のエントリを含む。一つのTierに対応するエントリには、当該Tierに対応する記憶媒体が表示され、当該Tierの利用の許可又は禁止(不許可)が入力される。次ボリュームボタンが押されると、管理計算機7は、次の仮想ボリュームの設定のための仮想ボリューム作成画面を表示する。完了ボタンが押されると、管理計算機7は、仮想ボリューム作成画面において入力された値を含む指示をストレージコントローラ3へ発行する。
 この例において、Tier1に割り当てられる記憶デバイスの記憶媒体の種類は、SSDである。SSDはFlash I/F372に接続されている。Flash I/F372はPCIeやSAS等である。Tier2に割り当てられる記憶デバイスの記憶媒体の種類は、SAS HDDである。SAS HDDは、Disk I/F34に接続されている。このDisk I/F34はSASである。Tier3に割り当てられる記憶デバイスの記憶媒体の種類は、SATA HDDである。SATA HDDは、Disk I/F34に接続されている。このDisk I/F34はSATAである。
 図18は、論理ボリューム登録処理を示す。
 ストレージコントローラ3は、指定されたプールの利用記憶階層の情報に基づいて、当該プールへの登録が許可されているTier毎に論理ボリューム登録処理を行う。指定されたプール及びTierに対する論理ボリューム登録処理は、以下の処理を含む:
(S2210)ストレージコントローラ3は、論理ボリューム管理テーブル354を検索し、指定されたプールに適合する論理ボリュームがあるか否かを判定する。ここで適合する論理ボリュームは、予備の論理ボリュームで、且つ指定されたTierに対応する記憶媒体の論理ボリュームである。当該プールに適合する論理ボリュームがあると判定された場合(Yes)、ストレージコントローラ3は処理をS2240へ移行させる。一方、当該プールに適合する論理ボリュームがないと判定された場合(No)、ストレージコントローラ3は処理をS2220へ移行させる。
(S2220)ストレージコントローラ3は、アラートを管理計算機7へ報告することにより、管理者に対し新たな論理ボリュームの追加を促す。
(S2230)その後、ストレージコントローラ3は、当該プールに適合する論理ボリュームが追加されたか否かを判定する。当該プールに適合する論理ボリュームが追加されていないと判定された場合(No)、ストレージコントローラ3は、S2230を繰り返す。一方、当該プールに適合する論理ボリュームが追加されたと判定された場合(Yes)、ストレージコントローラ3は、処理をS2240へ移行させる。
(S2240)ストレージコントローラ3は、当該プールに適合すると判定された論理ボリュームの情報を、論理ボリューム管理テーブルとプール管理テーブルへ追加し、このフローを終了する。ここで、複数の論理ボリュームが当該プールに適合すると判定された場合、ストレージコントローラ3は、これらの複数の論理ボリュームの中から予め定められた番号順に論理ボリュームを選択してもよい。
 論理ボリューム登録処理によれば、ストレージコントローラ3は、指定されたプール及びTierに適した論理ボリュームを当該プールへ登録することができる。
≪仮想ボリュームに対するWrite処理≫
 サーバ計算機2がサーバ側PCIe I/Fデバイス4へNVMeのWriteコマンドを送信した場合、前述のNVMeコマンド処理によりサーバ側PCIe I/Fデバイス4は、前述のNVMeコマンド処理によりサーバ側PCIe I/Fデバイス4はNVMeのWriteコマンドをSCSIのWriteコマンドに変換してストレージコントローラ3へ送信する。ここで、NVMeのWriteコマンドは、NSを指定する。変換されたSCSIのWriteコマンドは、NSに関連付けられたLUを指定する。その後、ストレージコントローラ3は、仮想ボリュームへ書き込むWrite処理を行う。
 図19は、仮想ボリュームに対するWrite処理を示す。
 Write処理は、以下の処理を含む:
(S8310)ストレージコントローラ3は、SCSIのWriteコマンドを受信すると、ライトデータの転送要求をサーバ側PCIe I/Fデバイス4へ送信する。その後、サーバ側PCIe I/Fデバイス4は、サーバ計算機2のメモリ22に格納されたライトデータを、ストレージコントローラ3のメモリ32(キャッシュメモリ)へ転送する。
(S8320)その後、ストレージコントローラ3は、LU管理テーブル351を参照し、サーバ側PCIe I/Fデバイス4からのWriteコマンドにより指定されたLUに対応する仮想ボリュームを選択する。その後、ストレージコントローラ3は、マッピング管理テーブル355を参照し、当該仮想ボリューム内でWriteコマンドにより指定されたライト対象の仮想ボリューム論理アドレスにページが割り当てられているか否かを判定する。ライト対象の仮想ボリューム論理アドレスにページが割り当てられていると判定された場合、ストレージコントローラ3は、処理をS8360へ移行させる。一方、ライト対象の仮想ボリューム論理アドレスにページが割り当てられていないと判定された場合、ストレージコントローラ3は、処理をS8330へ移行させる。
(S8330、S8340、S8350)ストレージコントローラ3は、ライト対象の仮想ボリューム論理アドレスへ、当該仮想ボリュームに対応するプールから未使用(新規)ページを割り当てる。その後、ストレージコントローラ3は、割り当てられたページの情報をマッピング管理テーブル355に追加する。その後、ストレージコントローラ3は、プール管理テーブル353における当該プールの割当済容量を当該ページのサイズだけ増加させる。
(S8360)その後、ストレージコントローラ3は、非同期でメモリ32内のライトデータを記憶デバイスへ書き込む非同期デステージを行う。ここで、ストレージコントローラ3は、マッピング管理テーブル355に基づいて、ライト対象に対応するページに対応する記憶デバイス論理アドレスを取得し、その記憶デバイス論理アドレスへ書き込む。
(S8370)その後、ストレージコントローラ3は、プール管理テーブル353に基づいて、当該プールのプール容量に対する割当済容量の割合が枯渇閾値を超えたか否かを判定する。当該割合が枯渇閾値を超えていないと判定された場合、ストレージコントローラ3は、このフローを終了する。一方、当該割合が枯渇閾値を超えたと判定された場合、ストレージコントローラ3は、処理をS8380へ移行させる。
(S8380)ストレージコントローラ3は、当該プールを指定して前述の論理ボリューム登録処理を行い、このフローを終了する。
 このWrite処理によれば、サーバ計算機2がNVMeのWriteコマンドを発行した場合でも、SCSIのWriteコマンドと同様にして、シンプロビジョニングの仮想ボリュームへデータを書き込むことができる。
≪NVMeコマンド応答処理≫
 前述のNVMeコマンド処理において、サーバ計算機2がサーバ側PCIe I/Fデバイス4へNVMeコマンドを送信した場合、サーバ側PCIe I/Fデバイス4はNVMeコマンドをSCSIコマンドに変換してストレージコントローラ3へ送信する。その後、ストレージコントローラ3は、サーバ側PCIe I/Fデバイス4を介してサーバ計算機2へ応答を送信するNVMeコマンド応答処理を行う。
 図20は、NVMeコマンド応答処理を示す。
 NVMeコマンド応答処理は、サーバ計算機2と、サーバ側PCIe I/Fデバイス4と、ストレージコントローラ3とにより行われる。NVMeコマンド応答処理は、以下の処理を含む:
(S8210、S8220)ストレージコントローラ3は、サーバ側PCIe I/Fデバイス4からのSCSIコマンドに応じた処理を実行し、そのSCSIコマンドに対するSCSI形式の応答をサーバ側PCIe I/Fデバイス4へ送信する。
(S8230、S8240、S8250)その後、サーバ側PCIe I/Fデバイス4は、ストレージコントローラ3からのSCSI形式の応答を受信し、受信された応答をNVMe形式の応答に変換し、変換された応答をサーバ計算機2へ送信する。
(S8260)その後、サーバ計算機2は、サーバ側PCIe I/Fデバイス4からのNVMe形式の応答を受信し、このフローを終了する。
 以上のNVMeコマンド応答処理によれば、ストレージコントローラ3は、SCSIに準拠したプログラムに従って、SCSIコマンドに対する応答をサーバ側PCIe I/Fデバイス4へ送信することができ、サーバ計算機2は、NVMeに準拠したプログラムに従って、サーバ側PCIe I/Fデバイス4からの応答を処理することができる。また、このNVMeコマンド応答処理によれば、サーバ計算機2は、Identifyコマンドをサーバ側PCIe I/Fデバイス4へ発行することにより、応答パラメータを取得することができる。
≪Identifyコマンドの応答≫
 図21は、Identifyコマンドの応答と記憶容量の関係を示す。
 NVMeコマンドの一つであるIdentifyコマンドは、NSを指定し、当該NSのシンプロビジョニングの状況を取得する。非特許文献1に記載されているように、Identifyコマンドの応答は、複数のパラメータのフィールドを含む。複数のパラメータは、Namespace Size(以後、NS Sizeと省略)と、Namespace Capacity(以後、NS Capacityと省略)と、Namespace Utilization(以後、NS Utilizationと省略)と、Namespace Features(以後、NS Featuresと省略)とを含む。NS Sizeは、当該NSの合計サイズを論理ブロック数で表す。一つの論理ブロックは、一つのLBAに対応する。論理ブロックのサイズであるLBAサイズは例えば512Bである。本実施例におけるNS Sizeは、当該NSに関連付けられたLUのLU容量、又は当該LUに割り当てられた仮想ボリュームの仮想ボリューム容量に対応する。NS Capacityは、当該NSに割り当てることができるプールのプール容量を論理ブロック数で表す。本実施例におけるNS Capacityは、当該LUに関連付けられたプールのプール容量に対応する。NS Utilizationは、当該NSに割り当てられた記憶領域の合計サイズを論理ブロック数で表す。本実施例におけるNS Utilizationは、当該プールから当該仮想ボリュームに割り当てられたページの合計の容量である割当済容量に対応する。NS Featuresは、当該NSがシンプロビジョニングをサポートしているか否かを示す。
 ストレージコントローラ3は例えば、プールから仮想ボリュームへ割り当てられる記憶領域をページ単位で管理する。ページのサイズは例えば42MBである。
 サーバ計算機2のユーザから見ると、NS CapacityからNS Utilizationを減じた値が当該NSの空き領域の容量に相当する。もし複数のNSが一つのプールを共有すると、サーバ計算機2のユーザが使用するNSの空き領域が、別のサーバ計算機2のユーザが使用する別のNSにより消費される場合がある。したがって、一つのNSが一つのプールに対応することが望ましい。
≪Inquiry処理≫
 サーバ計算機2がNSを指定するIdentifyコマンドを発行すると、前述のNVMeコマンド処理により、サーバ側PCIe I/Fデバイス4は、NVMeのIdentifyコマンドをSCSIのInquiryコマンドに変換してストレージコントローラ3へ送信する。これにより、IdentifyコマンドにおけるNSは、InquiryコマンドにおいてLUに変換される。その後、ストレージコントローラ3は、前述のNVMeコマンド応答処理のS8120として、Inquiryコマンドに応じたInquiry処理を行う。
 図22は、Inquiry処理を示す。
 Inquiry処理は以下の処理を含む:
(S8410)ストレージコントローラ3は、LU管理テーブル351に基づいて、Inquiryコマンドにより指定されたLUに対応する仮想ボリュームを特定し、仮想ボリューム管理テーブル352に基づいて、当該Inquiryコマンドにより指定されたLUに対応する仮想ボリューム属性がNVMeであるか否かを判定する。仮想ボリューム属性がNVMeでない、即ち仮想ボリューム属性がSCSIであると判定された場合、ストレージコントローラ3は、処理をS8430へ移行させる。一方、仮想ボリューム属性がNVMeであると判定された場合、ストレージコントローラ3は、処理をS8430へ移行させる。
(S8420)ストレージコントローラ3は、仮想ボリューム管理テーブル352から当該仮想ボリュームの仮想ボリューム容量を取得し、プール管理テーブル353から当該仮想ボリュームに対応するプールのプール容量及び割当済容量を取得し、取得された情報に基づいて、NVMe規格に示された次の応答パラメータを算出する。
 NS Size = 仮想ボリューム容量÷LBAサイズ
 NS Capacity = プール容量÷LBAサイズ
 NS Utilization = 割当済容量÷LBAサイズ
割当済容量が割当済ページ数で表されている場合、ストレージコントローラ3は、割当済ページ数にページサイズを乗じた値を割当済容量として算出する。更にストレージコントローラ3は、当該LUに仮想ボリュームが関連付けられている場合、即ち当該LUにシンプロビジョニングを用いる場合、NS Featuresを1に設定し、当該LUに論理ボリュームが関連付けられている場合、即ち当該LUにシンプロビジョニングを用いない場合、NS Featuresを0に設定する。NVMe規格では、NS Size ≧ NS Capacity ≧ NS Utilizationの関係が定められている。ストレージコントローラ3は、プール容量が仮想ボリューム容量より大きい場合、応答パラメータにおけるNS CapacityをNS Sizeに一致させる。これにより、ストレージコントローラ3は、NVMe規格に準拠した応答パラメータを算出することができる。
(S8430)その後、ストレージコントローラ3は、応答パラメータを用いてSCSIのInquiryコマンドの応答パケットを作成してサーバ側PCIe I/Fデバイス4へ送信し、このフローを終了する。例えば、ストレージコントローラ3は、Inquiryコマンドの応答パケットのフォーマットの空き領域に、NS Size、NS Capacity、NS Utilization、NS Featuresを含める。サーバ側PCIe I/Fデバイス4は、Inquiryの応答パケットをIdentifyの応答パケットに変換してサーバ計算機2へ送信する。これにより、ストレージコントローラ3がNVMeを解釈しない場合であっても、サーバ計算機2はNVMe規格に準拠した応答パケットを受信することができる。
 以上に説明したように、LUにシンプロビジョニングを適用することにより、複数のサーバ計算機2は、容量仮想化されたNSを共有することができる。また、記憶容量の設計や初期の記憶デバイスのコストを低減することができる。更に、NUにティアリングを適用することにより、複数のサーバ計算機2は、自動階層化されたNSを共有することができる。また、例えば、アクセス頻度が高いデータを、高性能な階層に配置することでアクセス性能を向上させ、アクセス頻度が低いデータを低価格な階層に配置することで記憶容量に対するコストを低減することができる。
<LUにシンプロビジョニングを適用しティアリングを適用しない場合>
 前述のようにLUにシンプロビジョニング及びティアリングを適用した場合と比較して、シンプロビジョニングを適用しティアリングを適用しない場合の差異について説明する。
 シンプロビジョニングを適用しティアリングを適用しない場合、ストレージコントローラは、仮想ボリューム管理テーブル352の代わりに仮想ボリューム管理テーブル352bを用い、プール管理テーブル353の代わりにプール管理テーブル353bを用い、論理ボリューム管理テーブル354の代わりに論理ボリューム管理テーブル354bを用いる。
 図23は、シンプロビジョニングを適用しティアリングを適用しない場合の仮想ボリューム管理テーブル352bを示す。仮想ボリューム管理テーブル352と比較すると、仮想ボリューム管理テーブル352bは、使用Tier番号を含まない。
 図24は、シンプロビジョニングを適用しティアリングを適用しない場合のプール管理テーブル353bを示す。プール管理テーブル353の登録論理ボリューム番号が、Tier毎の論理ボリューム番号を示すのに対し、プール管理テーブル353bの登録論理ボリューム番号は、当該プールに登録された論理ボリュームの論理ボリューム番号を示す。
 図25は、シンプロビジョニングを適用しティアリングを適用しない場合の論理ボリューム管理テーブル354bを示す。論理ボリューム管理テーブル354と比較すると、論理ボリューム管理テーブル354bでは、一つのプールに対して、同一の記憶媒体に基づく論理ボリュームが割り当てられている。
 図26は、シンプロビジョニングを適用しティアリングを適用しない場合の仮想ボリューム作成画面を示す。ティアリングを適用する場合と比較すると、この仮想ボリューム作成画面は、利用記憶階層の項目を必要としない。
 これにより、複数のサーバ計算機2は、容量仮想化されたNSを共有することができる。また、記憶容量の設計や初期の記憶デバイスのコストを低減することができる。
<LUにシンプロビジョニングを適用せずティアリングを適用する場合>
 前述のようにLUにシンプロビジョニング及びティアリングを適用した場合と比較して、シンプロビジョニングを適用せずティアリングを適用する場合の差異について説明する。
 図27は、シンプロビジョニングを適用しない場合のIdentifyコマンドの応答と記憶容量の関係を示す。
 シンプロビジョニングを適用しないLUに対するIdentifyコマンドに応じたInquiry処理において、ストレージコントローラ3は、NS SizeをNS Capacityに等しくする。
 シンプロビジョニングを適用しティアリングを適用しない場合、ストレージコントローラは、LU管理テーブル351の代わりにLU管理テーブル351cを用い、仮想ボリューム管理テーブル352及びプール管理テーブル353を用いない。
 図28は、シンプロビジョニングを適用せずティアリングを適用する場合のLU管理テーブル351cを示す。
 シンプロビジョニングを適用せずティアリングを適用する場合、ストレージコントローラ3は、複数のTierに夫々対応する複数の論理ボリュームを一つのLUに割り当て、それら複数の論理ボリュームの容量の合計をLU容量として、LU管理テーブル351cに登録する。
 これにより、複数のサーバ計算機2は、自動階層化されたNSを共有することができる。また、例えば、アクセス頻度が高いデータを、高性能な階層に配置することでアクセス性能を向上させ、アクセス頻度が低いデータを低価格な階層に配置することで記憶容量に対するコストを低減することができる。
 計算機システムは、インターフェースデバイスとして、サーバ側PCIe I/Fデバイス4やストレージ側PCIe I/Fデバイス8等の仲介デバイスを含んでもよい。計算機システムは、通信機構としてバックプレーン等の基板を含んでもよいし、通信機構としてブレードサーバシステムのシャーシとストレージコントローラのシャーシとPCIe接続用ケーブル等を含んでもよい。計算機システムは、複数のサーバ計算機、ストレージコントローラ、及び通信機構を収容する筐体として、シャーシ、ラック等を含んでもよい。サーバ計算機は、サーバ側RCとしてRC24等を含んでもよい。サーバ計算機は、ストレージ側RCとしてRC33等を含んでもよい。インターフェースデバイスは、第1EPとしてEP41等を提供し、第2EPとして第1EPと異なるEP41等を提供してもよい。インターフェースデバイスは、第3EPとしてEP42等を提供してもよい。サーバ計算機は、第1データとして一時データ又は引き継ぎに必要なデータ等を用いてもよく、第2データとして引き継ぎに不要なデータ等を用いてもよい。計算機システムは、ローカル不揮発メモリデバイスとして、Localフラッシュメモリデバイス等を含んでもよい。計算機システムは、仮想記憶領域として、仮想ボリューム等を用いてもよい。計算機システムは、共有記憶領域として、論理ボリューム等を用いてもよい。計算機システムは、特定規格として、SCSI等を用いてもよい。計算機システムは、複数の記憶デバイスとして、SSD、SAS HDD、及びSATA HDD等を夫々含んでもよい。サーバ計算機は、第1プログラムとして、NVM制御プログラム222等を用いても良い。サーバ計算機は、第2プログラムとして、SCSI制御プログラム224等を用いても良い。第1フィールドとして、NS Sizeのフィールド等が用いられても良い。第2フィールドとして、NS Capacityのフィールド等が用いられても良い。第3フィールドとして、NS Utilizationのフィールド等が用いられても良い。
 なお、以上の説明では、サーバ計算機2からのNVMeコマンドにより指定されるNSと、サーバ計算機2からのSCSIリクエストにより指定されるSCSI LUNとに、別々のプールが対応づけられている場合について説明した。これは例えばNSに対して高負荷なアクセスがなされた場合にSCSI LUNに対して影響が及ばないようにリソースを分離する意味を持つ。しかし、容量利用効率を優先させてNSとSCSI LUNとに、共通のプールが対応づけられてもよい。
 以上で説明を終える。なお、以上で説明したポイントのいくつかはNVMeコマンド以外のSCSIコマンドに対しても適用できる場合がある。
 1…CPF 2…サーバ計算機 3…ストレージコントローラ 4…サーバ側PCIe I/Fデバイス 5…フラッシュメモリデバイス 6…HDD 7…管理計算機 8…ストレージ側PCIe I/Fデバイス 9…PCIeスイッチ 36…コントロールユニット
 

Claims (10)

  1.  第1サーバ計算機と、
     第2サーバ計算機と、
     不揮発メモリデバイスと、
     前記第1サーバ計算機及び前記第2サーバ計算機にPCI-Expressを介して接続され、前記不揮発メモリデバイスに接続されるストレージコントローラと、
    を含み、
     前記ストレージコントローラは、前記第1サーバ計算機及び前記第2サーバ計算機により共有される仮想記憶領域を提供し、
     前記第1サーバ計算機及び前記第2サーバ計算機の夫々であるサーバ計算機は、NVM-Express規格に準拠するコマンドであるNVM-Expressコマンドを発行するプログラムを格納し、
     前記プログラムは、前記仮想記憶領域に関連付けられたnamespaceを指定するNVM-Expressコマンドを発行することによりPCI-Expressを介して前記仮想記憶領域にアクセスすることを、前記サーバ計算機に実行させ、
     前記ストレージコントローラは、前記アクセスに基づいて、前記不揮発メモリデバイス内の記憶領域を前記仮想記憶領域に割り当てる、
    計算機システム。
  2.  前記ストレージコントローラは、前記仮想記憶領域を作成し、前記不揮発メモリデバイスに基づくプールを仮想記憶領域に関連付け、前記仮想記憶領域へ書き込まれるデータの増加に応じて、前記プールの一部を前記仮想記憶領域に割り当て、
     前記サーバ計算機が前記namespaceを指定するIdentifyコマンドを発行した場合、前記ストレージコントローラは、前記仮想記憶領域の容量をLBAサイズで除した値を示す第1フィールドと、前記プールの容量をLBAサイズで除した値を示す第2フィールドと、前記プールから前記仮想記憶領域に割り当てられている記憶領域のサイズをLBAサイズで除した値を示す第3フィールドとを含む応答を発行する、
    請求項1に記載の計算機システム。
  3.  前記ストレージコントローラは、前記仮想記憶領域の作成の指示を受信した場合、前記仮想記憶領域及び前記プールを作成し、前記プールを前記仮想記憶領域に関連付ける、
    請求項2に記載の計算機システム。
  4.  前記ストレージコントローラは、前記プールの容量が前記仮想記憶領域の容量より大きい場合、前記応答内の前記第2フィールドに、前記第1フィールドの値を設定する、
    請求項2に記載の計算機システム。
  5.  前記サーバ計算機にPCI-Expressを介して接続されると共に、前記ストレージコントローラにPCI-Expressを介して接続されることにより、前記サーバ計算機と前記ストレージコントローラの間に介在するインターフェースデバイスを更に含み、
     前記ストレージコントローラは、SCSIリクエストを解釈し前記SCSIリクエストに基づいて前記不揮発メモリデバイスにアクセスすることにより、前記仮想記憶領域を提供し、
     前記インターフェースデバイスは、
      前記第1サーバ計算機に含まれるRoot Complex(RC)である第1サーバ側RCに対して第1Endpoint(EP)を提供するロジックと、
      前記第2サーバ計算機に含まれるRCである第2サーバ側RCに対して第2EPを提供するロジックと、
      前記ストレージコントローラに含まれるRCであるストレージ側RCに対して第3EPを提供するロジックと、
      前記サーバ計算機により発行されたNVM-Expressコマンドを解釈し、前記解釈されたNVM-Expressコマンドに基づくSCSIリクエストを前記ストレージコントローラへ発行するロジックと、
      前記発行されたSCSIリクエストに応じて前記ストレージコントローラにより発行されたSCSI応答を解釈し、前記SCSI応答に基づくNVMe応答を前記サーバ計算機へ発行するロジックと、
    を含む、
    請求項1に記載の計算機システム。
  6.  前記ストレージコントローラは、前記仮想記憶領域である仮想ボリューム及び仮想ストレージポートを論理ユニットに関連付け、前記論理ユニットを前記namespaceに割り当てる、
    請求項5に記載の計算機システム。
  7.  前記プログラムは、SCSIリクエストを発行することを、前記サーバ計算機に実行させ、
     前記インターフェースデバイスは更に、前記サーバ計算機により発行されたSCSIリクエストを解釈し前記サーバ計算機により発行されたSCSIリクエストに基づくSCSIリクエストを前記ストレージコントローラへ発行するロジックを含む、
    請求項5に記載の計算機システム。
  8.  前記不揮発メモリデバイスを含み、互いに特性が異なる複数の記憶デバイスを備え、
     前記ストレージコントローラは、前記複数の記憶デバイスに接続され、前記アクセスに基づいて、前記仮想記憶領域へ書き込まれるデータを前記複数の記憶デバイスの何れかに配置する、
    請求項1に記載の計算機システム。
  9.  第1サーバ計算機と、
     第2サーバ計算機と、
     互いに特性が異なる複数の記憶デバイスと、
     前記第1サーバ計算機及び前記第2サーバ計算機にPCI-Expressを介して接続され、前記複数の記憶デバイスに接続されるストレージコントローラと、
    を含み、
     前記複数の記憶デバイスの一つは不揮発メモリデバイスであり、
     前記ストレージコントローラは、前記第1サーバ計算機及び前記第2サーバ計算機により共有される共有記憶領域を提供し、
     前記第1サーバ計算機及び前記第2サーバ計算機の夫々であるサーバ計算機は、NVM-Express規格に準拠するコマンドであるNVM-Expressコマンドを発行するプログラムを格納し、
     前記プログラムは、前記共有記憶領域に関連付けられたnamespaceを指定するNVM-Expressコマンドを発行することによりPCI-Expressを介して前記共有記憶領域にアクセスすることを、前記サーバ計算機に実行させ、
     前記ストレージコントローラは、前記アクセスに基づいて、前記共有記憶領域へ書き込まれるデータを前記複数の記憶デバイスの何れかに配置する、
    計算機システム。
  10.  第1サーバ計算機と、
     第2サーバ計算機と、
     互いに特性が異なる複数の記憶デバイスと、
     前記第1サーバ計算機及び前記第2サーバ計算機にPCI-Expressを介して接続され、前記複数の記憶デバイスに接続されるストレージコントローラと、
    を含み、
     前記複数の記憶デバイスの一つは不揮発メモリデバイスであり、
     前記ストレージコントローラは、前記第1サーバ計算機及び前記第2サーバ計算機により共有される第1共有記憶領域及び第2共有記憶領域を提供し、
     前記第1サーバ計算機及び前記第2サーバ計算機の夫々であるサーバ計算機は、NVM-Express規格に準拠するコマンドであるNVM-Expressコマンドを発行する第1プログラムと、前記NVM-Express規格と異なる特定規格に準拠するコマンドである特定規格コマンドを発行する第2プログラムとを格納し、
     前記第1プログラムは、前記第1共有記憶領域に関連付けられたnamespaceを指定するNVM-Expressコマンドを発行することによりPCI-Expressを介して前記第1共有記憶領域にアクセスすることを、前記サーバ計算機に実行させ、
     前記第2プログラムは、前記第2共有記憶領域を指定する特定規格コマンドを発行することによりPCI-Expressを介して前記第2共有記憶領域にアクセスすることを、前記サーバ計算機に実行させ、
     前記ストレージコントローラは、前記NVMeコマンドによるアクセスに基づいて、前記第1共有記憶領域へ書き込まれるデータを前記不揮発メモリデバイスへ配置し、
     前記ストレージコントローラは、前記特定規格コマンドによるアクセスに基づいて、前記第2共有記憶領域へ書き込まれるデータを前記複数の記憶デバイスの何れかへ配置する、
    計算機システム。
     
PCT/JP2014/066419 2014-06-20 2014-06-20 計算機システム WO2015194033A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US15/125,204 US20170102874A1 (en) 2014-06-20 2014-06-20 Computer system
JP2016528751A JP6286542B2 (ja) 2014-06-20 2014-06-20 計算機システム
PCT/JP2014/066419 WO2015194033A1 (ja) 2014-06-20 2014-06-20 計算機システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/066419 WO2015194033A1 (ja) 2014-06-20 2014-06-20 計算機システム

Publications (1)

Publication Number Publication Date
WO2015194033A1 true WO2015194033A1 (ja) 2015-12-23

Family

ID=54935062

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/066419 WO2015194033A1 (ja) 2014-06-20 2014-06-20 計算機システム

Country Status (3)

Country Link
US (1) US20170102874A1 (ja)
JP (1) JP6286542B2 (ja)
WO (1) WO2015194033A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108632338A (zh) * 2017-03-16 2018-10-09 三星电子株式会社 存储系统和用于提供自动存储发现的方法
CN108694022A (zh) * 2017-04-11 2018-10-23 三星电子株式会社 用于识别具有最低尾延迟的固态盘的系统和方法
CN109062184A (zh) * 2018-08-10 2018-12-21 中国船舶重工集团公司第七〇九研究所 双机应急救援设备、故障切换方法和救援系统
US10235071B2 (en) 2016-11-29 2019-03-19 Kabushiki Kaisha Toshiba Tiered storage system, storage controller and tiering control method
US10684672B2 (en) 2017-09-21 2020-06-16 Toshiba Memory Corporation Selection of a low power consumption mode in a memory system based on information on a data transfer state
US10983701B2 (en) 2016-12-21 2021-04-20 Toshiba Memory Corporation Memory system that constructs virtual storage regions for virtual machines

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9823849B2 (en) * 2015-06-26 2017-11-21 Intel Corporation Method and apparatus for dynamically allocating storage resources to compute nodes
US10235102B2 (en) * 2015-11-01 2019-03-19 Sandisk Technologies Llc Methods, systems and computer readable media for submission queue pointer management
US10206297B2 (en) * 2015-11-23 2019-02-12 Liqid Inc. Meshed architecture rackmount storage assembly
US10049053B1 (en) * 2015-12-31 2018-08-14 EMC IP Holding Company LLC Classifying performance of an external storage resource pool associated with a performance tier in a federated tiered storage system for overload avoidance and auto-tiering
US10204057B2 (en) * 2016-08-09 2019-02-12 Atmel Corporation Memory emulation mechanism
US10534541B2 (en) * 2016-09-20 2020-01-14 Seagate Technology Llc Asynchronous discovery of initiators and targets in a storage fabric
JP6763543B2 (ja) * 2016-12-16 2020-09-30 日本電気株式会社 管理装置、管理システム、管理装置の制御方法及びプログラム
CN109324753B (zh) * 2017-07-31 2023-10-31 北京忆恒创源科技股份有限公司 虚拟lun管理
US10768820B2 (en) * 2017-11-16 2020-09-08 Samsung Electronics Co., Ltd. On-demand storage provisioning using distributed and virtual namespace management
US11934322B1 (en) * 2018-04-05 2024-03-19 Pure Storage, Inc. Multiple encryption keys on storage drives
US10558376B2 (en) * 2018-06-28 2020-02-11 Western Digital Technologies, Inc. Storage system and method for namespace reservation in a multi-queue single-controller environment
US11509606B2 (en) * 2018-06-29 2022-11-22 Intel Corporation Offload of storage node scale-out management to a smart network interface controller
CN111190844A (zh) * 2019-12-31 2020-05-22 杭州华澜微电子股份有限公司 一种协议转化方法及电子设备
US11650937B2 (en) 2019-12-31 2023-05-16 Western Digital Technologies, Inc. Storage system and method for secure host controller memory buffer access
JP7429214B2 (ja) * 2021-10-07 2024-02-07 株式会社日立製作所 ストレージシステム及びストレージシステムにおけるデータ複製方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012169027A1 (ja) * 2011-06-08 2012-12-13 株式会社日立製作所 計算機システム及びストレージシステム管理方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008027291A (ja) * 2006-07-24 2008-02-07 Hitachi Ltd ストレージ装置及びデータ保護方法
JP4975396B2 (ja) * 2006-08-24 2012-07-11 株式会社日立製作所 記憶制御装置及び記憶制御方法
US20120110259A1 (en) * 2010-10-27 2012-05-03 Enmotus Inc. Tiered data storage system with data management and method of operation thereof
US8966172B2 (en) * 2011-11-15 2015-02-24 Pavilion Data Systems, Inc. Processor agnostic data storage in a PCIE based shared storage enviroment
US20140195634A1 (en) * 2013-01-10 2014-07-10 Broadcom Corporation System and Method for Multiservice Input/Output
US9003071B2 (en) * 2013-03-13 2015-04-07 Futurewei Technologies, Inc. Namespace access control in NVM express PCIe NVM with SR-IOV
US20150095555A1 (en) * 2013-09-27 2015-04-02 Avalanche Technology, Inc. Method of thin provisioning in a solid state disk array
US9009397B1 (en) * 2013-09-27 2015-04-14 Avalanche Technology, Inc. Storage processor managing solid state disk array
US9298648B2 (en) * 2013-05-08 2016-03-29 Avago Technologies General Ip (Singapore) Pte Ltd Method and system for I/O flow management using RAID controller with DMA capabilitiy to directly send data to PCI-E devices connected to PCI-E switch
US9430412B2 (en) * 2013-06-26 2016-08-30 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over Ethernet-type networks

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012169027A1 (ja) * 2011-06-08 2012-12-13 株式会社日立製作所 計算機システム及びストレージシステム管理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"NVM Express 1.1a Specification", 23 September 2013 (2013-09-23), pages 10 - 12, 135, XP055245275, Retrieved from the Internet <URL:http://www.nvmexpress.org/wp-content/uploads/NVM-Express-1_1a.pdf> [retrieved on 20140825] *
JANENE ELLEFSON: "NVM Express: Unlock Your Solid State Drives Potential", FLASH MEMORY SUMMIT 2013, 2013, pages 90 - 98,107,110, Retrieved from the Internet <URL:http://www.nvmexpress.org/wp-content/uploads/2013-FMS-NVMe-Track.pdf> [retrieved on 20140825] *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10235071B2 (en) 2016-11-29 2019-03-19 Kabushiki Kaisha Toshiba Tiered storage system, storage controller and tiering control method
US10983701B2 (en) 2016-12-21 2021-04-20 Toshiba Memory Corporation Memory system that constructs virtual storage regions for virtual machines
US11747984B2 (en) 2016-12-21 2023-09-05 Kioxia Corporation Memory system that constructs virtual storage regions for virtual machines
CN108632338A (zh) * 2017-03-16 2018-10-09 三星电子株式会社 存储系统和用于提供自动存储发现的方法
CN108632338B (zh) * 2017-03-16 2022-05-24 三星电子株式会社 存储系统和用于提供自动存储发现的方法
CN108694022A (zh) * 2017-04-11 2018-10-23 三星电子株式会社 用于识别具有最低尾延迟的固态盘的系统和方法
CN108694022B (zh) * 2017-04-11 2023-04-28 三星电子株式会社 用于识别具有最低尾延迟的固态盘的系统和方法
US10684672B2 (en) 2017-09-21 2020-06-16 Toshiba Memory Corporation Selection of a low power consumption mode in a memory system based on information on a data transfer state
CN109062184A (zh) * 2018-08-10 2018-12-21 中国船舶重工集团公司第七〇九研究所 双机应急救援设备、故障切换方法和救援系统

Also Published As

Publication number Publication date
US20170102874A1 (en) 2017-04-13
JP6286542B2 (ja) 2018-02-28
JPWO2015194033A1 (ja) 2017-04-20

Similar Documents

Publication Publication Date Title
JP6286542B2 (ja) 計算機システム
JP6273353B2 (ja) 計算機システム
US9606745B2 (en) Storage system and method for allocating resource
US9990313B2 (en) Storage apparatus and interface apparatus
JP5502232B2 (ja) ストレージシステム、及びその制御方法
US8918615B2 (en) Information storage system including a plurality of storage systems that is managed using system and volume identification information and storage system management method for same
EP1837751B1 (en) Storage system, storage extent release method and storage apparatus
US8578178B2 (en) Storage system and its management method
US20130290541A1 (en) Resource management system and resource managing method
US7555600B2 (en) Storage apparatus and configuration setting method
US8286163B2 (en) Coupling between server and storage apparatus using detected I/O adaptor and allowing application execution based on access group and port connection group in virtualized environment
US7937553B2 (en) Controlling virtual memory in a storage controller
JP6068676B2 (ja) 計算機システム及び計算機システムの制御方法
US10346065B2 (en) Method for performing hot-swap of a storage device in a virtualization environment
JP5996098B2 (ja) ストレージデバイスの高速アクセス及びデータ保護を実現する計算機、計算機システム、及びi/o要求処理方法
US11782634B2 (en) Dynamic use of non-volatile ram as memory and storage on a storage system
US8799573B2 (en) Storage system and its logical unit management method
EP2696275A2 (en) I/o device and storage management system
US9239681B2 (en) Storage subsystem and method for controlling the storage subsystem
US20190213147A1 (en) Storage system and mapping method
JP2018101440A (ja) 計算機システム
WO2016139749A1 (ja) 計算機システム、及び、記憶制御方法
US11201788B2 (en) Distributed computing system and resource allocation method
JP6516875B2 (ja) 統合プラットフォーム、サーバ、及び、フェイルオーバ方法
CN115185450A (zh) 用于迁移、复制和备份的基于阵列的拷贝机制

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

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15125204

Country of ref document: US

ENP Entry into the national phase

Ref document number: 2016528751

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14895201

Country of ref document: EP

Kind code of ref document: A1