Storage system

By implementing session and connection management within the storage system, the time required to establish NVMe/TCP sessions is reduced, addressing the inefficiencies in existing systems with multiple connections.

JP2025127810AActive Publication Date: 2025-09-02HITACHI VANTARA LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2024024729
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-02-21
Publication Date
2025-09-02
Estimated Expiration
2044-02-21

AI Technical Summary

Technical Problem

Establishing sessions with multiple connections in NVMe/TCP protocols in storage systems takes a long time, leading to potential session establishment failures, especially in systems with numerous CPU cores.

Method used

A storage system design that includes a front-end interface and processor, where session management information is stored, managing communication sessions and connection management information to control access from the host, reducing the time required to establish sessions with multiple connections.

Benefits of technology

The solution significantly reduces the time needed to establish sessions with multiple connections, enhancing storage system performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025127810000001_ABST
    Figure 2025127810000001_ABST
Patent Text Reader

Abstract

To reduce the time required to establish a session.SOLUTION: A storage system communicates with a host in a session including one or more connections. The storage system includes a front-end interface, a processor, and a storage area. The storage area stores session management information that manages communication sessions with the host. The front-end interface stores connection management information that manages the connections of the sessions. The front-end interface references the connection management information to control access from the host.SELECTED DRAWING: Figure 3
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates to a storage system. [Background technology]

[0002] In recent information systems, Storage Area Networks (SANs) have become popular as a form of connecting storage systems and host servers. In a SAN configuration, the storage system and host server are connected via a switch using network cables such as optical fiber. SANs enable storage resources to be shared among multiple host servers. The software that runs on the host server and accesses the storage system is called the initiator, and the software that runs on the storage system and accepts storage access from the initiator and provides access to the storage is called the target.

[0003] There are two types of SAN: FC-SAN, which uses Fibre Channel (FC), and IP (Internet Protocol)-SAN, which uses Ethernet. FC-SAN uses dedicated interface modules and FC switches for lossless data transfer, making it highly reliable and suitable for configuring mission-critical IT systems. On the other hand, IP-SAN is based on standard IP protocols and can be easily used without the advanced specialized knowledge required for FC-SAN. Reliability is ensured by controlling retransmission of communication data at the TCP layer of the upper protocol, and they are increasingly being adopted for mission-critical information systems. Furthermore, with the spread of 100Gb and 200Gb Ethernet, broadband connectivity is also increasing, raising expectations for IP-SAN.

[0004] As storage using non-volatile memory becomes more widespread, the protocol for IP-SANs is increasingly being replaced by NVMe / TCP (Non-Volatile Memory Express over Transmission Control Protocol), which is expected to offer improved performance, replacing the conventional iSCSI (Internet Small Computer System Interface).

[0005] In iSCSI, the logical connection between the initiator and target is called a session, and one session basically accesses storage from the host server by exchanging iSCSI requests and responses over one TCP connection.

[0006] On the other hand, with NVMe / TCP, NVMe requests and responses are exchanged over multiple TCP connections (NVMe / TCP connections; hereafter, both iSCSI and NVMe / TCP will be referred to simply as "connections" unless a distinction between protocols is required) over an NVMeAssociation (equivalent to a session in iSCSI; hereafter, referred to as a "session" unless a distinction between protocols is required) which is a logical connection between the host server and storage system, allowing the host server to access the storage system. As a result, NVMe / TCP enables storage access with increased IO (Input / Output) parallelism, achieving high-bandwidth, low-latency storage access. [Prior art documents] [Patent documents]

[0007] [Patent Document 1] Japanese Patent Publication No. 2023-142021 Summary of the Invention [Problem to be solved by the invention]

[0008] Patent Document 1 discloses a SmartNIC-utilizing storage system in which a SmartNIC is installed in the storage system controller and protocol processing is performed by the SmartNIC. The SmartNIC is a network interface device equipped with a CPU and memory, and can run a general-purpose operating system (OS) or an OSS (Open Source Software) protocol server.

[0009] By running protocol-related software on the SmartNIC separately from the storage controller, the load on the controller can be reduced, improving storage performance. Additionally, by modifying the software on the SmartNIC without making many modifications to the controller, it becomes possible to support new protocols and communication functions.

[0010] Protocols like NVMe / TCP, which improve storage access performance by increasing IO parallelism, require a larger number of connections per initiator than protocols like iSCSI, which access storage via a single connection. This is because initiators typically run on multiple central processing unit (CPU) cores, and improved storage access performance can be expected by having each CPU core share the storage access processing for multiple connections. Therefore, to achieve the highest access performance, the same number of connections as the number of CPU cores should be established, but in recent years, some systems have more than 100 CPU cores, which means that more than 100 connections must be established to establish a single NVMe / TCP session.

[0011] Patent Document 1 does not disclose detailed operations when a session is established. Since session management in a storage system must be performed by the controller, when establishing a session in iSCSI, which is based on a single connection, it is natural for the SmartNIC to notify the controller each time a connection is established, and for the connection, i.e., the session, to be managed within the controller.

[0012] However, when this is applied to NVMe / TCP, each time a number of connections (NVMe / TCP connections) that make up one session (NVMe association) are established, the SmartNIC notifies the controller, and the controller manages the multiple connections as sessions.

[0013] As a result, it takes a long time to establish one session. Furthermore, if the initiator is implemented to establish connections sequentially, that is, to start the connection process for the next connection after the connection process for one connection is completed, it will take even longer to establish a session. Depending on the initiator's settings and requirements, if it takes a long time to establish a session, it may be considered a session establishment failure.

[0014] In other words, in a storage protocol in which one session is made up of multiple connections, the time required to establish a session becomes an issue. [Means for solving the problem]

[0015] One aspect of the present invention is a storage system that communicates with a host in a session including one or more connections, comprising a front-end interface, a processor, and a storage area, wherein the storage area stores session management information that manages a communication session with the host, the front-end interface stores connection management information that manages the connections of the session, and the front-end interface controls access from the host by referring to the connection management information. [Effects of the Invention]

[0016] According to one aspect of the present invention, it is possible to reduce the time required to establish a session including multiple connections. [Brief explanation of the drawings]

[0017] [Figure 1]1 is an overall configuration diagram of an information system according to a first embodiment. [Figure 2] FIG. 2 is a configuration diagram of a storage control block. [Figure 3] An example of the FE I / F configuration is shown below. [Figure 4] FIG. 2 is a diagram illustrating an example of a configuration of a host server. [Figure 5] FIG. 2 is a diagram illustrating an example of a configuration of a management server. [Figure 6] An example of the configuration of a Subsystem management table is shown below. [Figure 7] An example of the configuration of a Namespace management table is shown below. [Figure 8] 10 shows an example of the configuration of a controller management table. [Figure 9] 10 shows an example of the configuration of a Controller retention table. [Figure 10] 10 shows an example of the configuration of a connection management table. [Figure 11] A sequence diagram of the initialization process is shown below. [Figure 12] 10 shows a flowchart of the FE I / F in the initialization process. [Figure 13] 10 shows a flowchart of a storage control block in an initialization process. [Figure 14] 10 shows a sequence diagram of a management queue connection establishment process. [Figure 15] A sequence diagram of the IO queue connection establishment process is shown below. [Figure 16A] 10 is a flowchart of a connection establishment process of an FE I / F. [Figure 16B] 10 is a flowchart of a connection establishment process of an FE I / F. [Figure 17] 10 is a flowchart of a connection establishment process for a storage control block. [Figure 18] A sequence diagram of IO access processing is shown below. [Figure 19] 10 is a flowchart of an IO access process of an FE I / F. [Figure 20]10 is a flowchart of an IO access process of a storage control block. [Figure 21] FIG. 10 is a sequence diagram of a connection disconnection process triggered by a host server. [Figure 22] 10 is a flowchart of a connection disconnection process triggered by a host server of an FE I / F. [Figure 23] 10 is a flowchart of a host server-triggered connection disconnection process of a storage control block. [Figure 24] FIG. 10 is a sequence diagram of a connection disconnection process triggered by the storage system. [Figure 25] 10 is a flowchart of a storage system-triggered connection disconnection process of an FE I / F. [Figure 26] 10 is a flowchart of a storage system-triggered connection disconnection process of a storage control block. [Figure 27] 11 shows a flowchart of a connection disconnection process triggered by a host server by an FE I / F according to the second embodiment. [Figure 28] 13 shows an example of the configuration of a connection management table according to the fourth embodiment. DETAILED DESCRIPTION OF THE INVENTION [Example]

[0018] The following description will be given of an information system configured using general hardware, but the configuration of the present invention is not limited to hardware. Virtualization technology may be used to realize part or all of the hardware in software, ensuring flexibility when changing the information system. Furthermore, unless otherwise specified, the description will be given assuming that there is only one of each of the components, such as a storage area, a central processing unit (CPU), and a bus. However, multiple components may be provided to provide redundancy and load balancing, or they may be divided to improve convenience and cost performance. The bus may be divided to facilitate arbitration, or a high-bandwidth bus such as PCIe (Peripheral Component Interconnect-Express) may be used to improve performance.

[0019] The storage area, also called memory, is generally an area for storing information composed of DRAM (Dynamic Random Access Memory) etc. However, it is also possible to optimize storage capacity, access speed, and cost by hierarchizing the memory using, for example, SRAM (Static Random Access Memory), flash memory, HDD etc. Also, part or all of the storage area may be placed in a remote location and accessed and used as needed via a network connected via an input / output device, thereby saving the storage area required by the computer.

[0020] The following configuration description is based on a typical computer configuration of a CPU, a storage area, input / output devices, and a bus. Therefore, without going into detail, the storage area stores programs and data to be run by the CPU and controls the behavior of the computer. Furthermore, devices commonly used in computers may be added to improve convenience. For example, a serial bus may be added to add user interface devices such as a keyboard and display to improve the operability of the information system for operators, or a configuration may be adopted in which an operator can access the system from a remote location via a network to improve convenience.

[0021] In a storage system according to one embodiment of the present invention, when the first connection of multiple connections constituting a session is established, the FE I / F (Front-end Interface) notifies the processor in the storage control block of that information. The storage control block then creates management information for the new session, including the notified first connection. Furthermore, information about each connection is managed by the FE I / F, and is managed in association with the session management information in the storage control block. According to one embodiment of the present invention, in a storage system equipped with an FE I / F, it is possible to reduce the time required to establish a session when using a protocol in which multiple connections constitute one session.

[0022] 1 is a diagram showing the overall configuration of an information system according to embodiment 1. The information system includes one or more host servers 200, a storage system 1, a network 30, and a management server 50. The host server 200, the storage system 1, and the management server 50 are connected to each other via a network 3.

[0023] The storage system 1 has one or more storage device units 20 and a storage controller 10. The storage controller 10 has one or more storage control blocks 100. To improve the availability of the storage system 1, the storage controller 10 may be equipped with multiple storage control blocks 100, each of which may be powered by a dedicated power supply. It is also possible to equip multiple storage controllers 10 and interconnect them via an HCA (Host Channel Adapter) network to improve availability and performance through load balancing.

[0024] The storage control device 10 or storage control block 100 is generally called a storage controller or simply a controller, and provides storage functions. While Fig. 1 shows an example of a redundant configuration in which the storage control device 10 has two storage control blocks 100, a simple configuration with just one storage control block 100 that also functions as the storage control device 10 may also be used. In this case, the storage control block 100 becomes the storage controller.

[0025] The storage control block 100 has a BE I / F (Back-end Interface) 120 and one or more FE I / Fs 110. In this example, the FE I / Fs 110 are SmartNICs (Network Interface Cards).

[0026] The storage device unit 20 has one or more PDEVs 21. The PDEV 21 refers to a physical device, and may be, for example, a hard disk drive (HDD), or another storage device (non-volatile storage device), such as a flash memory device like a solid state drive (SSD), or a dynamic random access memory (DRAM) equipped with a battery.

[0027] The storage device unit 20 may have different types of PDEVs 21 to improve fault tolerance and optimize performance and cost through diversity. Also, a RAID (Redundant Array of Inexpensive Disks) group may be configured using multiple PDEVs 21 of the same type, and data may be stored according to a predetermined RAID level to optimize fault tolerance and capacity according to requirements.

[0028] Network 3 is, for example, a network for mutual communication between the connected host server 200, storage system 1, and management server 50, and uses, for example, a LAN (Local Area Network), but it may also be logically configured using virtual network technology to mix different types of networks and reduce network installation costs, or wireless technology to prevent cable wiring from becoming too complicated.

[0029] The host server 200 is a device that connects to the storage system 1 and performs storage access. Specifically, it sends requests to establish and disconnect connections to the storage system 1, change settings, and input / output requests for storage data (data write requests, data read requests).

[0030] The management server 50 is a PC (personal computer) or server equipped with a user interface such as a GUI (Graphical User Interface) or CLI (Command Line Interface), and provides functions that allow a user or operator to control and monitor the storage system 1.

[0031] 2 is a configuration diagram of the storage control block 100. The storage control block 100 has a BE I / F 120, one or more FE I / Fs 110, a CPU (Central Processing Unit) 103, and a storage area 104, all of which are connected to each other via a bus.

[0032] The BE I / F 120 and the FE I / F 110 correspond to input / output devices in a computer. The BE I / F 120 is an interface for communicating with the storage device unit 20. The FE I / F 110 is a SmartNIC, a programmable network interface, and runs part of the storage protocol when the host server 200 accesses the storage system 1.

[0033] In this embodiment, NVMe over TCP (Non Volatile Memory Express over Transmission Control Protocol) is used as an example of a storage protocol, but other storage protocols such as iSCSI (internet small computer system interface) may be used to select a storage access method that optimizes cost and access speed to meet the requirements of the information system.

[0034] The storage system 1 handles logical devices (LDEVs) extracted by bundling physical devices (PDEVs) using RAID or the like as basic units. Here, we will explain some of the terminology used in this specification for NVMe. A host is the party that uses the storage system 1 (equivalent to an initiator in iSCSI), is uniquely identified by a host ID, and has a name called a hostNQN.

[0035] A Subsystem provides one or more devices in the storage system 1 (equivalent to a storage server or target in iSCSI). A Subsystem has one or more Controllers and one or more Namespaces. A Subsystem is uniquely identified by a SubsystemID and has a name called a SubsystemNQN.

[0036] A Controller (NVMe controller) is an interface for accessing a Subsystem and is identified by a Controller ID. A Namespace is a logical device provided by a Subsystem and is identified by a Namespace ID. A Port (Fabric port) is a network interface for accessing a Controller and is identified by a Port ID.

[0037] An Association is a logical connection between a Host and a Subsystem. A Host accesses a Port to establish an Association to a Controller. When a Host accesses a Subsystem, it can refer to one or more Namespaces, or logical devices, identified by NamespaceID.

[0038] In NVMe / TCP, a management queue connection and any number of IO queue connections are established for access (association) to one subsystem. Queue connections are established first, followed by IO queue connections. The namespace to be accessed is specified when accessing IO (Read / Write).

[0039] The storage area 104 stores a storage control program group P0 executed by the CPU 103 and management information managed by the storage control program group P0. The management information includes a Subsystem management table T10, a Namespace management table T20, and a Controller management table T30. Details of the management information and the processing by the storage control block 100 will be described later.

[0040] FIG. 3 shows an example of the configuration of the FE I / F 110. In this example, the FE I / F 110 is a SmartNIC. A SmartNIC is a highly functional network card that can be programmed (added) with user-desired functions using software or hardware, and is a front-end interface device. The SmartNIC can execute functions of the transport layer and application layer, for example.

[0041] The following description of SmartNIC can be applied to interface devices whose functions can be programmed by software executed by a processor, as well as to interface devices with programmable logic circuit configurations such as FPGAs (Field Programmable Gate Arrays). FPGAs may include logic circuits that realize each function implemented by a program and cache memory used in operations.

[0042] The FE I / F 110 includes a network I / F 111, an internal I / F 112, a CPU 113, and a storage area 114. These are interconnected by a communication path such as a bus.

[0043] The network I / F 111 is an interface device for communicating with the host server 200. The network I / F 111 is used as a network port (hereinafter referred to as a port) for communication, to which an IP address is assigned. An IP address is an identifier on a network, and the host server 200 communicates with the FE I / F 110 through the IP address assigned to the port.

[0044] The internal I / F 112 is an interface device that communicates with the storage control block 100. The internal I / F 112 is connected to the CPU of the storage control block 100 via PCIe (Peripheral Component Interconnect-Express), for example.

[0045] The CPU 113 controls the operation of the FE I / F 110. The memory area 114 stores programs and data used to control the operation of the CPU 113. The memory area 114 stores an interface processing program group P10, a controller holding table T50, and a connection management table T60.

[0046] The interface processing program group P10 is executed by the CPU 113 to control a connection for communication between the host server 200 and the storage system 1 and a session made up of one or more connections. In this embodiment, a TCP / IP (Transmission Control Protocol / Internet Protocol) connection is assumed as the connection type, and an NVMe / TCP Association is assumed as the session.

[0047] The interface processing program group P10 configures a TCP port for the Listen service that accepts connection requests for each port of the FE I / F 110. When the interface processing program group P10 receives a connection request for the Listen service, it establishes a TCP connection, and then accepts a session request from the host server and establishes a session.

[0048] The interface processing program group P10 includes the OS (Operating System) of the FE I / F 110, and communicates with the storage control block 100 to initialize the FE I / F 110, manage resources, manage faults, and schedule tasks.

[0049] The interface processing program group P10 receives various requests such as Read / Write from the host server 200 etc. and processes the block protocol included in these requests. The interface processing program group P10 processes block access protocols such as NVMe / TCP received from the host server 200 and converts them into block access command requests to the storage control block 100. The interface processing program group P10 communicates with the storage control block 100 and performs processes such as writing and reading data to and from the LDEVs that make up the Subsystem Namespace in response to the various requests described above.

[0050] 4 is an example of a configuration diagram of the host server 200. The host server 200 has a network I / F 201, a CPU 202, and a storage area 203. These are interconnected by a communication path such as a bus.

[0051] The network I / F 201 is an interface device for communicating with the storage system 1 and the management server 50. The CPU 202 controls the operation of the host server 200. The memory area 203 stores programs and tables used to control the operation of the CPU 202. The memory area 203 stores an application program P41 and a storage connection program P43. The memory area 203 also stores information used by the programs.

[0052] The application program P41 is executed by the CPU 202 to read and write data to the Namespace of the Subsystem provided by the storage system 1 via the storage connection program P43. The storage connection program P43 receives various requests such as Read / Write from the application program P41 and reads and writes data from and to the storage system 1.

[0053] 5 is an example of a configuration diagram of the management server 50. The management server 50 has a network I / F 51, a CPU 52, and a storage area 53. These are interconnected by a communication path such as a bus. The network I / F 51 is an interface device for communicating with the storage system 1 and the host server 200.

[0054] The CPU 52 controls the operation of the management server 50. The memory area 53 stores programs and data used to control the operation of the CPU 52. The memory area 53 stores the management server program P50. The management server program P50 has a user interface such as a GUI or CLI, and provides functions that allow a user or operator to control and monitor the storage system 1. When the management server program P50 receives a control instruction or a monitoring instruction from the user to the storage system 1, it communicates with the storage system 1 and performs control and monitoring.

[0055] The management information held in the storage control block 100 is described in detail below. In the following description, the management information is expressed as a table, but expressions suitable for improving performance and functionality such as fault tolerance, such as key-value, may also be used. Also, while an expression that holds multiple values ​​in one field of one entry in a table may be used, it is also possible to hold information in multiple tables or multiple entries by dividing the table or dividing the entry, and normalizing it in accordance with performance and functional requirements.

[0056] FIG. 6 shows an example of the configuration of a Subsystem management table T10. The Subsystem management table T10 associates a Subsystem with a SubsystemNQN and a port of the FE I / F 110. In the example configuration shown in FIG. 6, the Subsystem management table T10 includes a Subsystem ID column C101, a Subsystem NQN column C102, and a Port ID column C103. The Subsystem ID column C101 stores the identifier of the relevant Subsystem within the storage system 1. The Subsystem NQN column C102 indicates the NQN (NVMe Qualified Name), which is the identifier of the Subsystem in the NVMe / TCP protocol. The Port ID column C103 indicates the identifier of the port of the FE I / F 110 that is used by the Host to access the Subsystem.

[0057] Fig. 7 shows an example of the configuration of a Namespace management table T20. Each Subsystem provides one or more Namespaces to the Host. Only one logical device (LDEV) is assigned to one Namespace. The management table T20 manages the relationships between these.

[0058] In the configuration example shown in FIG. 7, the Namespace management table T20 includes a Subsystem ID column C201, a Namespace ID column C202, and an LDEV ID column C203. Each entry shows information about one Namespace. The Subsystem ID column C201 shows the ID of the Subsystem that has each Namespace. The Namespace ID column C202 shows the ID that identifies the Namespace within the Subsystem. Each Namespace is identified within the storage system 1 by a combination of the Subsystem ID and Namespace ID. The LDEV ID column C203 shows the ID of the LDEV that makes up each Namespace. In each Subsystem, there is a one-to-one correspondence between a Namespace and an LDEV.

[0059] Figure 8 shows an example of the configuration of the controller management table T30. The controller management table T30 is an interface for access from the host, and manages information about current associations. When an association is created, a new entry is added, and when the association is terminated, the entry is deleted.

[0060] 8, the controller management table T30 includes a controller ID column T301, a subsystem ID column T302, a port ID column T303, a host NQN column T304, a host ID column T305, a protocol column T306, a planned number of queues column T307, and a number of connections column T308. Each entry indicates information about one current association.

[0061] The Controller ID column T301 indicates the ID of the controller accessed by the host in the association. The Controller ID identifies the controller within the storage system 1. The Subsystem ID column T302 indicates the ID of the subsystem that has the controller. The Port ID column T303 indicates the ID of the port of the FE I / F 110 that is the access destination in the association.

[0062] The Host NQN column T304 indicates the NQN of the access source host in the association. The Host ID column T305 indicates the ID of the access source host in the association. The Protocol column T306 indicates the type of communication protocol used in the association. In this example, NVMe / TCP is assumed. As other examples, FC-NVMe or iSCSI may also be used.

[0063] The planned queue count column T307 indicates the maximum number of IO queues in the association. Since an IO queue is set for each IO queue connection (not including management queue connections), the planned queue count corresponds to the planned number of IO queue connections. For example, the planned queue count is set to a value requested by the host. Note that an allowable maximum value is set in advance for the planned queue count, and the planned queue count for an association may be set and registered within a range below this allowable maximum value. The connection count column T308 indicates the current number of IO queue connections in the association. This value corresponds to the current number of IO queues in the association.

[0064] Next, a more detailed description will be given of the management information held in the FE I / F 110. As shown in Fig. 3, the FE I / F 110 stores a controller holding table T50 and a connection management table T60 in the storage area 114.

[0065] 9 shows an example of the configuration of the controller holding table T50. The controller holding table T50 is composed of cache data and additional information of the controller management table T30 held and managed by the storage control block 100. The controller holding table T50 may contain only information about associations that use ports of the FE I / F 110 in question, or may also contain information about associations that use ports of other FE I / Fs 110.

[0066] If the former is adopted, the number of managed objects can be reduced, thereby saving resources and effort required for management, while if the latter is adopted, processing can be simplified because information required for processing such as redundancy and exclusion in cooperation with multiple FE I / Fs 110 can be confirmed without additional inquiries. Also, because the controller holding table T50 is a cache of information held by the storage control block 100, the computer resources required by the FE I / F 110 can be saved by omitting part or all of the controller holding table T50 and querying the storage control block 100 for the required information.

[0067] In the configuration example shown in Figure 9, the controller holding table T50 includes a Controller ID column T501, a Subsystem ID column T502, a Port ID column T503, a Host NQN column T504, a Host ID column T505, a Protocol column T506, a planned number of queues column T507, a number of connections column T508, and an available Namespace ID column T509.

[0068] Each entry shows information about one current association (session). The data in columns T501 to T508 is a cache of the data in columns T301 to T308 of the same name in the controller management table T30, and the data between them is identical. Note that some data may be omitted from the cache of the controller management table T30 held in the controller holding table T50 shown in FIG.

[0069] The available Namespace ID column C509 indicates the Namespace that the host can access in the Association, that is, the ID of the LDEV. One Association enables access to one or more specified Namespaces (LDEVs). The information in the available Namespace ID column C509 is passed from the control block 100 to the FE I / F 110.

[0070] FIG. 10 shows an example of the configuration of the connection management table T60. The connection management table T60 manages the TCP information of the controller. Each entry shows information for one connection. The connection management table T60 manages both management queue connections and IO queue connections. The connection management table T60 manages information for connections via the FE I / F 110 that holds it, and does not need to include information for other FE I / Fs 110. If the former is adopted, the number of objects to be managed can be reduced, thereby saving resources and effort required for management. On the other hand, if the latter is adopted, information required for processing such as redundancy and exclusion in cooperation with multiple FE I / Fs 110 can be confirmed without additional inquiries, thereby simplifying processing.

[0071] In the configuration example shown in FIG. 10, the connection management table T60 includes a connection ID column C601, a controller ID column C602, a host IP address column C603, a host port number column C604, a target IP address column C605, a target port number column C606, a queue ID column C607, and a connection setting column C608.

[0072] The connection ID column C601 is an identifier for an entry in the connection management table T60. The connection ID column C601 may be omitted. The controller ID column C602 indicates the controller ID of the association that includes the connection.

[0073] The host IP address column C603 and host port number column C604 indicate the IP address / TCP port number of the host of the connection. These values ​​are specified by the host. The target IP address column C605 and target port number column C606 indicate the IP address / TCP port number of the target. These values ​​are set by the storage control block 100.

[0074] The queue ID column C607 shows the ID of the queue assigned to the connection. "0" is set for management queues, and integer values ​​of "1" or greater are assigned sequentially to IO queues. The connection setting column C608 shows the setting information for each connection. In this example, the setting information for the keepalive function, specifically the KeepAliveTimeout time, is registered. The KeepAliveTimeout time is the time to wait for the next new request without closing the connection after one request is completed, and is measured in milliseconds, for example.

[0075] The request may be limited to specific requests such as a KeepAlive command to make the processing easier to understand. As another example of the connection setting field C608, the processing priority of the connection in question relative to other connections may be set, allowing only specific connections to be prioritized or subordinated, allowing resources to be used in accordance with the request.

[0076] The following describes the processing performed by the storage control block 100 and the FE I / F 110. In the following description, the order of processing may be changed within the scope of maintaining consistency, or the previous and next processing may be combined to simplify the processing and reduce the number of communications.

[0077] The parameters used in the processing of the storage control block 100 and the FE I / F 110 are, if mentioned as information exchanged between the storage control block 100 and the FE I / F 110, that information; otherwise, information that has been set in advance in the storage control block 100 and the FE I / F 110 is used. Some or all of the parameters included in the information exchanged through communication may be set in advance in the storage control block 100 and the FE I / F 110 to save on communication and processing. Conversely, information may be added to the communication to reduce the number of parameters that are set in advance, making it easier to change settings.

[0078] First, we will explain the initialization process performed by the storage control block 100 and the FE I / F 110. Fig. 11 shows a sequence diagram of the initialization process, Fig. 12 shows a flowchart of the FE I / F 110 in the initialization process, and Fig. 13 shows a flowchart of the storage control block 100 in the initialization process.

[0079] 11-13, the storage control block 100 creates a Subsystem management table T10 and a Namespace management table T20 in advance through design and operator settings. Also, the FE I / F 110 is set in advance through design and initial settings for initializing communication with the storage control block 100.

[0080] As shown in Figures 11 and 13, the storage control block 100 starts up the FE I / F 110 (S21). The FE I / F 110 is started up, for example, by supplying power. Next, as shown in Figure 11, the started FE I / F 110 and the storage control block 100 establish communication therebetween (S11, S22). That is, as shown in Figure 12, the started FE I / F 110 establishes communication with the storage control block 100 (S11), and as shown in Figure 13, the storage control block 100 establishes communication with the started FE I / F 110 (S22).

[0081] Next, as shown in Figures 11 and 13, the storage control block 100 sends a port setting instruction to the FE I / F 110 (S23). The port setting instruction specifies the IP address and TCP port number for each port of the FE I / F 110. As shown in Figures 11 and 12, the FE I / F 110 receives the port setting instruction from the storage control block 100 and sets the IP address and TCP port number for each port (S12).

[0082] When the port setting is complete, the FE I / F 110 sends a port setting completion notification to the storage control block 100 (S13).

[0083] As shown in FIGS. 11 and 13, after receiving a port setting completion notification from the FE I / F 110 (S24), the storage control block 100 sends a port standby start instruction to the FE I / F 110 (S25).

[0084] 11 and 12, the FE I / F 110 receives a port standby start instruction from the storage control block 100 (S14) and waits for communication from the host server (S15). For example, the FE I / F 110 starts the NVMe / TCP target software. Then, the FE I / F 110 sends a port standby completion notification to the storage control block 100 (S16).

[0085] As shown in FIGS. 11 and 13, the storage control block 100 receives a port standby start completion notification from the FE I / F 110 (S26), and waits for instructions from the operator and requests from the FE I / F 110 (S27).

[0086] Next, the connection establishment process between the host server 200 and the storage control block 100 will be explained. In NVMe / TCP, the host server 200 and storage system 1 establish a management queue connection and any number of IO queue connections for access (association) to one subsystem. The management queue connection is established first, and then several IO queue connections are established. The namespace (LDEV) to be accessed is specified during IO (Read / Write) access.

[0087] Fig. 14 shows a sequence diagram of the management queue connection establishment process. Fig. 14 shows the processing sequence when no error occurs during the process. First, the FE I / F 110 receives a connection request from the host server 200 (S31). The connection request includes information stored in the connection management table T60 and information stored in the controller retention table T50.

[0088] For example, the information for the connection management table T60 can include information on the queue ID, host IP address, host port number, and connection settings. The controller ID is omitted when requesting a management queue connection. The queue ID is "0" when requesting a management queue connection. The connection setting information indicates the KeepAliveTimeout time. The target IP address and target port number can be obtained by the FE I / F 110 from the storage control block 100.

[0089] The information for the Controller holding table T50 can include the SubsystemNQN, HostNQN, HostID, the requested number of scheduled queues, and the number of connections (current number of IO queues). In the case of a management queue connection, the number of connections is "0." The PortID is held as a setting value in the FE I / F 110.

[0090] Next, the FE I / F 110 adds an entry to the connection management table T60 (S32). At this time, the Controller ID is set to a value that means no entry has been made (for example, 0xffff). Furthermore, the FE I / F 110 sends a controller addition request to the storage control block (S33).

[0091] The controller addition request includes information stored in the controller management table T30. Specifically, the controller addition request includes information such as SubsystemNQN, PortID, HostNQN, HostID, protocol, planned queue count, and number of connections. In the case of a managed queue connection, the number of connections is "0." The protocol indicates the communication protocol between the host server 200 and the FE I / F, and in this example, NVMe over TCP is assumed.

[0092] The storage control block 100 that receives the controller addition request adds a new entry to the controller management table T30, reserves hardware resources such as memory areas and CPU cores, and sets a controller ID (S34).

[0093] The storage control block 100 searches the Subsystem management table T10 for an entry whose Subsystem NQN matches the Subsystem NQN included in the Controller addition request, obtains the Subsystem ID of that entry, and sets it in the Controller management table T30. As described above, the protocol to be set is NVMe over TCP, and the number of connections to be set for the management queue connection is 0. The requested value is set as the planned queue count. Note that if the requested value is larger than a preset maximum allowable value, the maximum allowable value may be set.

[0094] As described above, in this specification, searching for an entry in a specific table (in the above example, the Subsystem management table T10) where the value of a specific field of an entry (in the above example, the SubsystemNQN) matches the value given with the same name (in the above example, the SubsystemNQN included in the Controller addition request), and obtaining the value of another field of that entry (in the above example, the SubsystemID) is simply expressed as using a specific field value to obtain another value from a specific table (in the above example, using the SubsystemNQN to obtain the SubsystemID from the Subsystem management table T10), or searching for a specific field value from a specific table to obtain another value (in the above example, searching for the SubsystemNQN in the Subsystem management table T10 and obtaining the SubsystemID).

[0095] Next, the storage control block 100 searches the Namespace management table T20 for an entry whose Subsystem ID matches the above-mentioned Subsystem ID, and acquires the Namespace ID of the matching entry as a list of available Namespace IDs (S35). Next, the storage control block 100 sends a Controller addition response including specific information to the FE I / F 110 (S36).

[0096] The Controller addition response includes the Controller ID, the configured number of scheduled queues, and a list of available Namespace IDs. The Namespace ID list may be defined as consecutive numbers starting from 1, for example, and the number of Namespace IDs may be returned to reduce the amount of communication data.

[0097] Upon receiving a response from the storage control block 100, the FE I / F 110 adds an entry to the controller holding table (S37) and sets the controller ID of the entry added to the controller holding table T50 to the corresponding entry in the connection management table T60 (S38).

[0098] The FE I / F 110 prepares hardware resources such as memory space and CPU cores required for processing in the management queue connection (S39), and returns a connection completion response to the host server 200 (S40). The connection completion response includes the configured Controller ID, the configured number of scheduled queues, and a list of available Namespace IDs. If an error occurs during processing, an error response is sent to the host server 200. A management queue connection may be established multiple times, in which case it is treated as a different association and managed as connections with different Controller IDs.

[0099] Fig. 15 shows a sequence diagram of the process of establishing an IO queue connection belonging to the Association after the management queue connection has been established. Fig. 15 shows the process sequence when no error occurs during the process. First, the FE I / F 110 receives a connection request from the host server 200 (S45). The connection request includes information stored in the connection management table T60 and information stored in the controller retention table T50.

[0100] For example, the information for the connection management table T60 can include the Controller ID, queue ID, host IP address, host port number, and connection setting information. The Controller ID is the value returned when the management queue connection is established. The queue ID is an integer value equal to or greater than "1" in the case of an IO queue connection. The connection setting information indicates the requested KeepAliveTimeout time. The target IP address and target port number can be obtained by the FE I / F 110 from the storage control block 100.

[0101] The information for the controller holding table T50 can include a controller ID. The corresponding association can be identified by searching the controller holding table T50 for an entry that matches the controller ID indicated by the host.

[0102] Next, the FE I / F 110 adds an entry to the connection management table T60 (S46). Next, the FE I / F 110 searches for the specified Controller ID in the Controller holding table T50 (S47).

[0103] If an entry with a matching Controller ID exists in the Controller holding table T50, the FE I / F 110 further sends a connection addition request to the storage control block 100 (S48). The connection addition request includes information on the number of connections in addition to the Controller ID. The number of connections is set to a value obtained by adding 1 to the number of connections in the entry with the matching Controller ID. Note that if no entry exists or the current number of connections exceeds the planned number of queues, an error occurs.

[0104] The storage control block 100 that received the connection addition request searches the controller management table T30 for the corresponding entry by Controller ID, and updates the number of connections in the entry for that Controller ID to the value of the number of connections included in the connection addition request from the FE I / F 110 (S49).The storage control block 100 then returns a normal response (S50). Note that if the entry does not exist or the number of connections due to the current IO queue connection exceeds the planned number of queues, an error response is returned.

[0105] The FE I / F 110, which has received a normal response from the storage control block 100, updates the number of connections in the controller holding table T50 so that it matches the number in the controller management table T30 (S51).

[0106] The FE I / F 110 prepares hardware resources such as a memory area and a CPU core for the management queue connection (S52), and returns a connection completion response to the host server 200 (S53). The connection completion response includes the Controller ID. If an error occurs during processing, an error response is sent to the host server 200.

[0107] Next, the processing of the FE I / F 110 and the storage control block 100 in the connection establishment processing described with reference to Figures 14 and 15 will be described with reference to flowcharts. In the following description, different reference numerals are given to steps that are the same as steps in Figures 14 and 15. Figures 16A and 16B are flowcharts of the connection establishment processing of the FE I / F 110.

[0108] The FE I / F 110 receives a connection request for a management queue connection or an IO queue connection (S61) from the host server 200. The information included in the connection request is as described above.

[0109] Next, the FE I / F 110 adds a corresponding entry to the connection management table T60 (S62). At this time, the Controller ID is not entered. Next, the FE I / F 110 determines whether the queue ID of the connection request is "0" (S63). If the queue ID is "0", it is a request for a management queue connection, and if it is a larger integer, it is a request for an IO queue connection.

[0110] If the queue ID is "0", that is, if the connection request is for a management queue connection (S63: YES), a controller addition request is sent to the storage control block 100, and a controller addition response including a controller ID is received from the storage control block 100 (S64). The information included in the controller addition request and the controller addition response is as described with reference to Fig. 14.

[0111] If the controller addition response is an error response (S65: YES), the FE I / F 110 returns an error response to the host server 200 (S66). If the controller addition response is not an error response (S65: NO), the FE I / F 110 adds an entry to the controller retention table T50 (S67).

[0112] Furthermore, the FE I / F 110 sets the Controller ID of the entry added to the Controller holding table T50 in the corresponding entry in the connection management table T60 (S68). The FE I / F 110 prepares hardware resources such as a memory area and a CPU core for the management queue connection (S69), and returns a connection completion response to the host server 200 (S70). The information included in the connection completion response is as described with reference to Fig. 14.

[0113] In step S63, if the queue ID is an integer greater than "0", that is, if the connection request is for an IO queue connection (S63: NO), the flow proceeds to step S71 in Fig. 16B via connector A. In step S71, the FE I / F 110 searches for the controller ID in the controller retention table T50.

[0114] If the Controller ID does not exist (S71: NO), the FE I / F 110 returns an error response to the host server 200 (S78). If the Controller ID exists in the Controller retention table T50 (S71: YES), the FE I / F 110 determines whether the value obtained by adding 1 to the number of connections indicated by the connection request (current number of IO queues) exceeds the planned number of queues (S72).

[0115] If the value obtained by adding 1 to the number of connections indicated by the connection request exceeds the planned queue number (S72: YES), the FE I / F 110 returns an error response to the host server 200 (S78). Note that a storage system-triggered disconnection process, which will be described later, may also be executed. If the value obtained by adding 1 to the number of connections indicated by the connection request is equal to or less than the planned queue number (S72: NO), the FE I / F 110 sends a connection addition notification to the storage control block 100 and receives its response (S73).

[0116] If an error response is received from the storage control block 100 (S74: YES), the FE I / F 110 returns an error response to the host server 200 (S78). If a normal response is received from the storage control block 100 (S74: NO), the FE I / F 110 updates the number of connections in the controller retention table T50 (S75).

[0117] Next, FE I / F 110 prepares hardware resources such as a memory area and a CPU core for the management queue connection (S76), and returns a connection completion response to host server 200 (S77). The information included in the connection completion response is as described with reference to FIG.

[0118] Next, the processing of the storage control block 100 will be described. Figure 17 is a flowchart of the connection establishment processing of the storage control block 100. The symbols in Figure 17 are partially the same as those in Figure 16B, but the same symbols in Figure 17 and Figure 16B represent different steps. The storage control block 100 receives a request from the FE I / F 110 (S75) and determines whether the request is a controller addition request or a connection addition notification (S76). The information contained in each addition request is as described with reference to Figures 14 and 15.

[0119] If the received request is a request to add a controller (S76: Request to add controller), the storage control block 100 searches the Subsystem management table T10 for an entry whose Subsystem NQN matches the Subsystem NQN included in the Controller addition request, and obtains the Subsystem ID of that entry (S77).

[0120] Next, the storage control block 100 adds a new entry to the controller management table T30, reserves hardware resources such as memory space and CPU cores, and sets a controller ID (S78). The protocol used here is assumed to be NVMe over TCP. The storage control block 100 sets the number of connections to "0" and the requested value for the number of planned queues. However, if the requested value is greater than the maximum allowable value, the maximum allowable value may be set instead.

[0121] Next, the storage control block 100 searches for the Subsystem ID in the Namespace management table T20 and acquires a list of available Namespace IDs (S79). Next, the storage control block 100 returns a Controller addition response to the FE I / F 110 (S80). The Controller addition response includes the Controller ID, the set planned queue number, and a list of available Namespace IDs.

[0122] In step S76, if the received request is a connection addition request (S76: connection addition request), the storage control block 100 searches the controller management table T30 for a corresponding entry using the controller ID (S81). If the entry does not exist (S82: NO), the storage control block 100 returns an error response to the FE I / F 110 (S87).

[0123] If an entry exists (S82: YES), the storage control block 100 compares (S83) the planned queue count of the entry with the number of connections (current IO queue count) indicated by the request from the FE I / F 110. If the value obtained by adding 1 to the number of connections exceeds the planned queue count, that is, if the current IO queue connection causes the IO queue count to exceed the planned number (S84: YES), the storage control block 100 returns an error response to the FE I / F 110 (S87).

[0124] If the number of IO queues does not exceed the planned number due to the current IO queue connection (S84: NO), the storage control block 100 updates the number of connections for the corresponding entry in the controller management table T30 to a value obtained by adding 1 to the number of connections (S85), and returns a normal response to the FE I / F 110 (S86).

[0125] Next, a description will be given of the processing of the storage system 1 in response to IO access (read access or write access) from the host server 200. Fig. 18 shows a sequence diagram of IO access processing.

[0126] The FE I / F 110 receives an IO command from the host server 200 (S91). The IO command is a read command or a write command. The IO command includes a command type (read or write), a Namespace ID, an access destination address, an access destination size, and, in the case of a write command, write data.

[0127] The FE I / F 110 acquires a list of Controller IDs and Namespace IDs corresponding to the IO command from the connection management table T60 (S92). The FE I / F 110 adds the acquired Controller ID and transfers the IO command to the storage control block 100 (S93).

[0128] When the storage control block 100 receives the Controller ID and IO command from the FE I / F 110, it acquires the corresponding Subsystem ID from the Controller management table T30 (S94). Furthermore, the storage control block 100 searches the Namespace management table T20 for the combination of Subsystem ID and Namespace ID, and acquires the corresponding LDEV ID (S95).

[0129] Next, the storage control block 100 executes an access permission determination for the access destination address and access destination size (S96). This determination is a general storage access control, such as determining user authority or whether the destination is in use by another host server.

[0130] Next, the storage control block 100 returns a response to the FE I / F 110 (S97). If the access permission determination is an error, an error response is returned. If the access permission determination is not an error, read data is returned in response to the read command, and a success response is returned in response to the write command.

[0131] The FE I / F 110 receives the response from the storage control block 100 and transfers it to the host server 200 (S98).

[0132] Alternatively, host server 200 may send a write command that does not include write data to FE I / F 110, and after receiving a write enable response, send a write command that includes write data. In this case, the above sequence is executed twice.

[0133] Next, the processing of the FE I / F 110 and the storage control block 100 in the IO access processing described with reference to Fig. 18 will be described with reference to a flowchart. In the following description, steps that are the same as those in Fig. 18 are given different reference numerals.

[0134] 19 is a flowchart of the IO access processing of the FE I / F 110. First, the FE I / F 110 receives an IO command from the host server (S101). The information included in the IO command is as described with reference to FIG. 18. Next, the FE I / F 110 obtains a list of Controller IDs and Namespace IDs corresponding to the IO command from the connection management table T60 (S102).

[0135] If the NamespaceID of the IO command is not included in the acquired NamespaceID list (S103: NO), the FE I / F 110 returns an error response to the host server 200 (S107).

[0136] If the NamespaceID of the IO command is included in the acquired NamespaceID list (S103: YES), the FE I / F 110 sends the acquired ControllerID and IO command to the storage control block 100 (S104). The FE I / F 110 then receives a response from the storage control block 100 (S105) and returns it to the host server 200 (S106). As described above, the response is either an error response or a normal read or write response. A normal read response includes read data.

[0137] 20 is a flowchart of IO access processing of the storage control block 100. The storage control block 100 receives an IO command and a controller ID from the FE I / F 110 (S111). Next, the storage control block 100 acquires the corresponding subsystem ID from the controller management table T30 (S112).

[0138] Next, the storage control block 100 searches the Namespace management table T20 for a combination of Subsystem ID and Namespace ID, and acquires the corresponding LDEV ID (S113).

[0139] Next, the storage control block 100 determines whether the access destination address and access destination size can be accessed using the IO command (S114). This step is a general storage access control that determines user authority, whether another host is using the access destination, etc.

[0140] If the access results in an error (S114: NO), the storage control block 100 returns an error response to the FE I / F 110 (S118). If the access is permitted (S114: YES), the storage control block 100 determines whether the IO command is a read command or a write command (S115).

[0141] If the IO command is a read command (S115: READ), the storage control block 100 reads data of the access destination size from the access destination address of the LDEV indicated by the LDEV ID and returns it as an IO result to the FE I / F 110 (S116).If the IO command is a write command (S115: WRITE), it writes data of the access destination size to the access destination address in the LDEV indicated by the LDEV ID and returns a success response to the FE I / F 110 as an IO result (S117).

[0142] The following describes the connection disconnection process triggered by the host server 200. Figure 21 is a sequence diagram of the connection disconnection process triggered by the host server. The FE I / F 110 receives a connection disconnection request from the host server (S121). Note that the connection disconnection process may also be triggered by the host server 200 disconnecting the TCP connection.

[0143] Next, the FE I / F 110 acquires the Controller ID of the connection from the connection management table T60 (S122). The FE I / F 110 returns a disconnection completion notification to the host server 200 and disconnects the connection (S123). Note that if the disconnection of the TCP connection is the trigger, this step is not necessary.

[0144] Next, the FE I / F 110 deletes the corresponding entry from the connection management table T60 and releases the resources (S124). Next, the FE I / F 110 sends a connection deletion request to the storage control block 100 (S125). The connection deletion request includes information on the Controller ID and the updated number of connections.

[0145] The storage control block 100, which has received a connection deletion request from the FE I / F 110, updates the number of connections in the entry with a matching Controller ID in the controller management table T30 (S126). Here, the number of connections is decremented by 1. Thereafter, the storage control block 100 sends a completion notification to the FE I / F 110 (S127).

[0146] Upon receiving the completion notification, the FE I / F 110 updates the number of connections (current queue number) in the controller holding table T50 (S128). Here, the value of the number of connections is decremented by 1.

[0147] If the number of connections (current number of IO queues) in the controller retention table T50 is 0, the FE I / F 110 sends a controller deletion request (S129) to the storage control block 100. The controller deletion request includes the target controller ID.

[0148] The storage control block 100, which has received the Controller deletion request, deletes the entry with the matching Controller ID in the Controller management table T30 and releases the resources (S130). The storage control block 100 then sends a completion notification to the FE I / F 110 (S131). The FE I / F 110, which has received the completion notification, deletes the corresponding entry in the Controller retention table T50 and releases the resources (S132).

[0149] Next, the processing of the FE I / F 110 and the storage control block 100 in the host server-triggered connection disconnection processing described with reference to Fig. 21 will be explained with reference to a flowchart. In the following explanation, steps that are the same as those in Fig. 21 are given different reference numerals.

[0150] 22 is a flowchart of the host server-triggered connection disconnection process of the FE I / F 110. First, the FE I / F 110 receives a connection disconnection request from the host server (S141). As described above, the trigger may be the host server 200 disconnecting the TCP connection.

[0151] Next, the FE I / F 110 acquires the Controller ID of the connection from the connection management table T60 (S142). The FE I / F 110 returns a disconnection completion notification to the host server 200 and disconnects the connection (S143). If the disconnection of the TCP connection is the trigger, this step is not necessary.

[0152] Next, the FE I / F 110 deletes the corresponding entry from the connection management table T60 and releases the resources (S144). Next, the FE I / F 110 sends a connection deletion request to the storage control block 100 and receives a completion notification (S145). The connection deletion request includes information on the Controller ID and the number of connections after the update.

[0153] Upon receiving the completion notification, the FE I / F 110 updates the number of connections (current number of queues) in the controller holding table T50 (S128). Here, the value of the number of connections is decremented by 1. The FE I / F 110 determines whether the number of connections (current number of IO queues) in the controller holding table T50 is 0 (S147).

[0154] If the number of connections is greater than 0 (S147: NO), this flow ends. If the number of connections is 0 (S147: YES), the FE I / F 110 sends a controller deletion request to the storage control block 100 and receives a completion notification from the storage control block 100 (S148). The controller deletion request includes the target controller ID. Next, the FE I / F 110 deletes the corresponding entry from the controller retention table T50 and releases the resources (S149).

[0155] Figure 23 is a flowchart of the host server-triggered connection disconnection process of the storage control block 100. The storage control block 100 receives a connection deletion request from the FE I / F 110 (S151). The connection deletion request indicates the Controller ID and the updated number of connections. The storage control block 100 updates the number of connections for the entry with the matching Controller ID in the controller management table T30 (S152). In this case, the number of connections is decremented by 1. Next, the storage control block 100 sends a completion notification to the FE I / F 110 (S153).

[0156] Thereafter, the storage control block 100 receives a controller deletion request (S154). The controller deletion request indicates a controller ID. The storage control block 100 deletes the entry with the matching controller ID from the controller management table T30 and releases the resources (S155). Next, the storage control block 100 sends a completion notification to the FE I / F 110 (S156).

[0157] The following describes the connection disconnection process triggered by the storage system 1. FIG. 24 is a sequence diagram of the connection disconnection process triggered by the storage system. Triggered by an operator operation or an error occurring within the storage system 1, the storage control block 100 invalidates an entry in the controller management table T30 that has a matching Controller ID (S161). An entry may be invalidated, for example, by setting the planned queue count to a negative number, adding an invalid flag to the entry, or temporarily deleting the entry. Next, the storage control block 100 sends a connection disconnection request specifying the Controller ID to the FE I / F 110 (S162).

[0158] Upon receiving the connection disconnection request, the FE I / F 110 searches the connection management table T60 for connections with a matching Controller ID (S163). The FE I / F 110 sends a connection disconnection notification to the host servers 200 of all matching connections, and disconnects the connections (S164).

[0159] Next, the FE I / F 110 deletes the entry with the matching Controller ID from the connection management table T60 and releases the resources (S165). Furthermore, the FE I / F 110 deletes the entry with the matching Controller ID from the Controller retention table T50 and releases the resources (S166). Thereafter, the FE I / F 110 sends a disconnection completion notification to the storage control block 100 (S167).

[0160] When the storage control block 100 receives the disconnection completion notification from the FE I / F 110, it deletes the entry with the matching Controller ID from the controller management table T30 (S168).

[0161] Next, the processing of the FE I / F 110 and the storage control block 100 in the storage system-triggered connection disconnection processing described with reference to Fig. 24 will be explained with reference to a flowchart. In the following explanation, different reference numerals are given to steps that are the same as those in Fig. 24.

[0162] 25 is a flowchart of the storage system-triggered connection disconnection process of the FE I / F 110. The FE I / F 110 receives a connection disconnection request including a Controller ID from the storage control block 100 (S171). The FE I / F 110 searches the connection management table T60 for connections with a matching Controller ID (S172). The FE I / F 110 sends a disconnection notification to the host server 200 for all matching connections, and then disconnects the connections (S173).

[0163] Next, the FE I / F 110 deletes the entry with the matching Controller ID from the connection holding table and releases the resources (S175). Next, the FE I / F 110 deletes the entry with the matching Controller ID from the Controller holding table and releases the resources (S175). The storage control block is notified of the completion of the disconnection (S176).

[0164] 26 is a flowchart of the storage system-triggered connection disconnection processing of the storage control block 100. Triggered by an operator operation or the occurrence of an error within the storage system 1, the storage control block 100 invalidates an entry in the controller management table T30 that has a matching Controller ID (S181). An entry can be invalidated, for example, by setting the planned queue count to a negative number, adding an invalid flag to the entry, or temporarily deleting the entry. If the entry has already been deleted, updating the controller management table T30 is omitted.

[0165] Next, the storage control block 100 sends a connection disconnection request specifying the Controller ID to the FE I / F 110 (S182). Thereafter, the storage control block 100 receives a disconnection completion notification from the FE I / F 110 (S183). Next, the storage control block 100 deletes the entry with the matching Controller ID from the Controller management table T30 (S184). If the entry has already been deleted, entry deletion is omitted.

[0166] Various modifications are possible to the above embodiment. For example, the information on the number of connections may be omitted from the controller management table T30. In this case, communication of information on the number of connections between the FE I / F 110 and the storage control block 100, processing related to updating the number of connections to the storage control block 100 at the FE I / F 110, and processing related to the number of connections at the storage control block 100 can be omitted. As a result, when an IO queue connection is established, communication between the FE I / F 110 and the storage control block 100 can be omitted, further shortening the time required to establish a connection (association) to the controller.

[0167] In addition to the number of connections, the number of reservation queues (number of permitted queues) in the controller management table T30 may be omitted. In this case, at initialization, the storage control block 100 notifies the FE I / F 110 of the number of reservation queues, and thereafter the FE I / F 110 manages the number of reservation queues. This means that management of connections (associations) to the controller is performed by the FE I / F 110, reducing the involvement of the storage control block 100 and simplifying the processing of the FE I / F 110. However, since the storage control block 100 will no longer be able to manage the number of reservation queues, if the number of reservation queues is to be changed midway, an instruction from the storage control block 100 to the FE I / F 110 is required.

[0168] In the above process description, the order of steps can be changed as long as consistency is maintained, and steps can be combined to simplify the process or reduce the number of communications. Also, if there is a surplus of resources and immediate release of resources is not required, the release of resources can be omitted as long as consistency is maintained.

[0169] In this embodiment, the NVMe over TCP communication protocol is assumed between the host server 200 and the FE I / F 110, and DMA communication is assumed between the FE I / F 110 and the storage control block 100. However, a different communication method may be used to optimize the required computer resources or to facilitate implementation.

[0170] For example, additional development and processing may be suppressed by adopting a communication format supported by the host server or storage control block. For example, NVMe over FC or iSCSI may be used between the host server 200 and the FE I / F 110, or UDP (User Datagram Protocol) may be used between the FE I / F 110 and the storage control block 100. Note that when another communication method is used, information specific to that communication method is used. For example, in iSCSI, an iSCSI Qualified Name is used instead of the Subsystem NQN.

[0171] The method of transmitting information is not limited to the above example. For example, specific information may be divided to reduce the amount of data transmitted in one communication, or error detection processing may be performed sequentially to increase the reliability of the processing. Information may be transmitted multiple times to make it redundant, or inconsistencies may be checked during communication to increase fault tolerance. Different information may also be transmitted in a combined format (for example, by concatenating the HostNQN and HostID as strings) to reduce the number of communications.

[0172] In the above embodiment, since the FE I / F 110 exists between the host server 200 and the storage control block 100, when the transmission of information is divided into multiple times, the communication becomes two-stage. There are two methods for handling the divided information, and either method may be adopted.

[0173] In one method, the FE I / F 110 performs multiple communications between either the host server 200 or the storage control block 100, combines the divided information, and sends it to the other. This simplifies communications. In another method, the FE I / F 110 sequentially sends information received from either the host server 200 or the storage control block 100 to the other. This minimizes delays.

[0174] If it can be determined from other information, or if it is not required for the communication method, the information may be transmitted in another format, or only part of the information may be transmitted. For example, if the Subsystem NQN can be restored from a table that manages Controller IDs by transmitting only the Controller ID, then only the Controller ID needs to be transmitted. This reduces the amount of communication data and communication processing.

[0175] The response does not necessarily include all of the information in the example above. For example, if an error occurs, an error is notified. A request ID is attached to each request, making it possible to distinguish which response or data corresponds to which request. Furthermore, if the content of the response to the communication does not change the processing content, such as disconnection or deletion, the sending of the response may be omitted. By omitting the sending of the response, deadlocks caused by waiting for a response can be avoided, the time until processing is completed can be shortened, and the processing can be simplified. By sending a response, it is possible to maintain consistency of the state at both ends of the communication if an error occurs at either end. [Example]

[0176] A second embodiment of the present invention will be described below. This embodiment differs from the first embodiment in the processing of the FE I / F 110 in the connection disconnection processing triggered by the host server. The description of the first embodiment can be applied to configurations that are not specifically mentioned in the following description.

[0177] Figure 27 shows a flowchart of the connection disconnection process triggered by the host server by the FE I / F 110. The FE I / F 110 deletes the controller (disconnects all) when disconnecting a connection. This simplifies the processing of the FE I / F 110, reduces the load, and improves performance.

[0178] 27, steps S141 to S143 are the same as those in the flowchart shown in Fig. 22 of the first embodiment. After step S143, the FE I / F 110 sends a disconnection notification to the host server 200 for all entries of the Controller ID in the connection management table T60, and disconnects all connections (S191). The FE I / F 110 deletes all entries of the Controller ID from the connection management table T60, and releases the resources (S192). The subsequent steps S148 and S149 are the same as those in the flowchart shown in Fig. 22 of the first embodiment. [Example]

[0179] A third embodiment of the present invention will be described below. In this embodiment, a connection ID is added to the configuration of the connection management table T60 of the first embodiment. The information transmitted from the FE I / F 110 to the storage control block 100 includes a connection ID. When the storage control block 100 saves the processing in a log, the connection ID notified from the FE I / F 110 is included in the log. This makes it easy to track connections that require a long time or connections in which an error has occurred. The other configurations are the same as those of the first embodiment. [Example]

[0180] A fourth embodiment of the present invention will be described below. This embodiment manages a CPU core that is in charge of a connection in the FE I / F 110. Differences from the first embodiment will be described below. The description of the first embodiment is applicable to configurations that are not specifically mentioned.

[0181] 28 shows an example of the configuration of a connection management table T90 of this embodiment. The connection management table T90 includes a responsible core column C609 in addition to the columns C601 to C608 of the connection management table T60 of embodiment 1. The responsible core column C609 indicates the identifier of the CPU core that executes processing for the corresponding connection.

[0182] The FE I / F 110 includes information about the assigned core in the request to the storage control block 100. When the storage control block 100 saves the processing in a log, it includes in the log the information about the assigned core (including the core ID) notified by the FE I / F 110. Note that this may be omitted.

[0183] The storage control block 100 includes the responsible core ID notified by the FE I / F 110 in the response indicating the processing result that is sent to the FE I / F 110. When a "disconnection triggered by the storage control block" occurs, the storage control block 100 puts an invalid value in the response.

[0184] When the FE I / F 110 processes the response from the storage control block 100, the FE I / F 110 refers to the included responsible core ID and sets it as the core to be processed in the FE I / F 110.

[0185] According to this embodiment, in an IO access, the FE I / F 110 can immediately distribute processing to the core responsible for that IO access based on a response from the storage control block 100, thereby equalizing the processing imbalance between cores and improving cache effectiveness and latency. Note that the information transmitted between the FE I / F 110 and the storage control block 100 may include a connection ID instead of the responsible core ID, as in the third embodiment. The FE I / F 110 can identify the responsible core by referencing the connection management table T90. This configuration further simplifies the implementation of both the third and fourth embodiments.

[0186] The present invention is not limited to the above-described embodiments and includes various modifications. For example, the above-described embodiments have been described in detail to clearly explain the present invention, and the present invention is not necessarily limited to those including all of the described configurations. Furthermore, it is possible to replace part of the configuration of one embodiment with the configuration of another embodiment, or to add the configuration of another embodiment to the configuration of one embodiment. Furthermore, it is possible to add, delete, or replace part of the configuration of each embodiment with other configurations.

[0187] Furthermore, the above-mentioned components, functions, processing units, etc. may be realized in part or in whole by hardware, for example, by designing them as integrated circuits. Furthermore, the above-mentioned components, functions, etc. may be realized in software by a processor interpreting and executing a program that realizes each function. Information such as the programs, tables, and files that realize each function can be stored in memory, a storage device such as a hard disk or SSD, or a storage medium such as an IC card or SD card.

[0188] In addition, the control lines and information lines shown are those that are considered necessary for the explanation, and do not necessarily show all the control lines and information lines in the product. In reality, it can be assumed that almost all components are interconnected. [Explanation of symbols]

[0189] 1. Storage System 103 CPU 104 Storage area 110 FE interface 113 CPU 114 Storage area 200 host servers T10 Subsystem Management Table T20 Namespace Management Table T30 Controller Management Table T50 Controller holding table T60 Connection Management Table

Claims

1. A storage system that communicates with a host in a session including one or more connections, A front-end interface; a processor; a storage area, the storage area stores session management information for managing a communication session with the host; the front-end interface stores connection management information for managing the connection of the session; the front-end interface controls access from the host by referring to the connection management information; Storage system.

2. 2. The storage system according to claim 1, the front-end interface stores session retention information including a cache of information included in the session management information; the front-end interface adds a new entry to the connection management information when establishing an initial connection for the session; the front-end interface sends information about the initial connection to the processor; the processor adds an entry for a new session including the initial connection to the session management information; The processor sends information about the new session to the front-end interface; the front-end interface updates the session retention information with the received information of the new session; the front-end interface controls access from the host by referring to the connection management information and the session retention information; Storage system.

3. 3. The storage system according to claim 2, the session retention information manages the number of planned connections in the session; the front-end interface returns an error to the host if the number of connections requested by the host to establish exceeds the planned number of connections; Storage system.

4. 2. The storage system according to claim 1, In disconnecting the connection from the host to the front-end interface, the front-end interface acquires information about the corresponding session from the connection management information; The front-end interface sends a disconnection completion notification to the host; the front-end interface transmits a disconnection request to the processor, specifying the corresponding session; the processor updates the session management information in response to the received disconnection request. Storage system.

5. 2. The storage system according to claim 1, In disconnecting the connection from the host to the front-end interface, the front-end interface acquires information about the corresponding session from the connection management information; The front-end interface sends a disconnection completion notification to the host; If the number of IO connections of the corresponding session is 0, the front-end interface sends a deletion request for the corresponding session to the processor; the processor deletes information about the corresponding session from the session management information. Storage system.

6. 2. The storage system according to claim 1, the front-end interface includes a connection ID managed by the front-end interface in a request to the processor; The processor includes the connection ID in log information. Storage system.

7. 2. The storage system according to claim 1, The front-end interface sets a core in charge of a connection; the front-end interface includes information about the core in charge of the connection in a request to the processor; the processor includes information about the assigned core in the processing result to be transmitted to the front-end interface; The front-end interface continues processing the connection using the responsible core. Storage system.

Citation Information

Patent Citations

  • Server load distributing device

    JP2003152783A

  • Storage system and storage device

    JP2007087266A

  • Storage system, data transmission method, and network interface

    JP2024011738A

  • Load-based management for nvme over TCP connections

    US20230412489A1

  • Network interface, and buffer control method thereof

    JP2023142021A