Storage system
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- HITACHI VANTARA LTD
- Filing Date
- 2024-02-21
- Publication Date
- 2026-08-03
AI Technical Summary
【0016】 本発明の一態様によれば、複数コネクションを含むセッション確立にかかる時間を短縮できる。
Smart Images

Figure 0007899244000001 
Figure 0007899244000002 
Figure 0007899244000003
Abstract
Description
Technical Field
[0001] The present invention relates to a storage system.
Background Art
[0002] In recent information systems, Storage Area Network (SAN) has become widespread as a form of connecting a storage system and a host server. In the SAN configuration, the storage system and the host server are connected via a switch using a network cable such as an optical fiber. With SAN, sharing of storage resources among multiple host servers becomes possible. Software that operates on a host server and accesses the storage system is called an initiator, and software that operates in the storage system, accepts storage access from the initiator, and provides access to the storage is called a target.
[0003] As types of SAN, there are FC-SAN using Fibre Channel (FC) and IP (Internet Protocol)-SAN using Ethernet. FC-SAN performs lossless data transfer using a dedicated interface module and an FC switch, so it has high reliability and can constitute a mission-critical IT system. On the other hand, IP-SAN is based on the standard IP protocol and can be easily handled without the advanced expertise required for FC-SAN. Reliability is ensured by performing retransmission control of communication data at the TCP layer of the upper protocol, and its adoption for mission-critical information systems is also increasing. In addition, broadband expansion is also progressing due to the spread of 100Gb Ethernet and 200Gb Ethernet, and expectations for IP-SAN are rising.
[0004] With the increasing prevalence of storage using non-volatile memory, NVMe / TCP (Non-Volatile Memory Express over Transmission Control Protocol), which offers improved performance, is becoming more widespread as a protocol for IP-SANs, 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 a single session essentially uses a single TCP connection to exchange iSCSI requests and responses, allowing the host server to access the storage.
[0006] On the other hand, with NVMe / TCP, the host server can access the storage system by exchanging NVMe requests / responses using multiple TCP connections (NVMe / TCP connections; hereafter, both iSCSI and NVMe / TCP will be simply referred to as "connections" unless a protocol distinction is necessary) over an NVMeAssociation (equivalent to a session in iSCSI; hereafter, referred to as "session" unless a protocol distinction is necessary) which is a logical connection between the host server and the storage system. As a result, NVMe / TCP enables storage access with a higher degree of I / O (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 [Overview of the project] [Problems that the invention aims to solve]
[0008] Patent Document 1 discloses a SmartNIC-utilizing storage system in which a SmartNIC is installed in the controller of the storage system, and protocol processing is performed by the SmartNIC. A 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. Furthermore, by modifying the software on the SmartNIC without significantly altering the controller, it becomes possible to support new protocols and communication functions.
[0010] Protocols that improve storage access performance by increasing I / O parallelism, such as NVMe / TCP, require a larger number of connections per initiator compared to protocols that access storage via a single connection, such as iSCSI. This is because initiators typically operate on multiple CPU (Central Processing Unit) cores, and by distributing the storage access processing for multiple connections among the CPU cores, improved storage access performance can be expected. Therefore, to expect the highest access performance, the number of connections should be equal to the number of CPU cores. However, in recent years, some systems have more than 100 CPU cores, in which case establishing a single NVMe / TCP session requires establishing more than 100 connections.
[0011] Patent Document 1 does not disclose the detailed operation during session establishment. Since session management in a storage system must be performed by the controller, in iSCSI session establishment which assumes a single connection, it is natural for the SmartNIC to notify the controller each time a connection is established, and for the controller to manage the connection, i.e., the session.
[0012] However, applying this to NVMe / TCP would mean that every time a large number of connections (NVMe / TCP connections) that make up a single session (NVMe association) are established, the SmartNIC would notify the controller, and the controller would then manage the large number of connections as sessions.
[0013] As a result, establishing a single session takes time. Furthermore, if the initiator performs connection establishment sequentially, meaning that it only starts the next connection process after the previous connection process is complete, session establishment will take even longer. Depending on the initiator's configuration and requirements, there is a risk that a long session establishment time may be considered a session establishment failure.
[0014] In other words, in storage protocols where a single session is composed of multiple connections, the time required to establish a session becomes a challenge. [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 for managing the session of communication with the host, the front-end interface stores connection management information for managing 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, the time required to establish a session including multiple connections can be reduced. [Brief explanation of the drawing]
[0017] [Figure 1]It is the overall configuration diagram of the information system of Example 1. [Figure 2] It is the configuration diagram of the memory control block. [Figure 3] It shows the configuration example of the FE I / F. [Figure 4] It is an example of the configuration diagram of the host server. [Figure 5] It is an example of the configuration diagram of the management server. [Figure 6] It shows the configuration example of the Subsystem management table. [Figure 7] It shows the configuration example of the Namespace management table. [Figure 8] It shows the configuration example of the Controller management table. [Figure 9] It shows the configuration example of the Controller holding table. [Figure 10] It shows the configuration example of the connection management table. [Figure 11] It shows the sequence diagram of the initialization process. [Figure 12] It shows the flowchart of the FE I / F in the initialization process. [Figure 13] It shows the flowchart of the memory control block in the initialization process. [Figure 14] It shows the sequence diagram of the management queue connection establishment process. [Figure 15] It shows the sequence diagram of the IO queue connection establishment process. [Figure 16A] It is the flowchart of the connection establishment process of the FE I / F. [Figure 16B] It is the flowchart of the connection establishment process of the FE I / F. [Figure 17] It is the flowchart of the connection establishment process of the memory control block. [Figure 18] It shows the sequence diagram of the IO access process. [Figure 19] It is the flowchart of the IO access process of the FE I / F. [Figure 20]This is a flowchart of the I / O access process for the memory control block. [Figure 21] This is a sequence diagram of the connection termination process initiated by the host server. [Figure 22] This is a flowchart of the connection termination process initiated by the host server in the FE I / F. [Figure 23] This is a flowchart of the connection disconnection process triggered by the host server in the memory control block. [Figure 24] This is a sequence diagram of the connection disconnection process triggered by the storage system. [Figure 25] This is a flowchart of the connection disconnection process triggered by the storage system in the FE I / F. [Figure 26] This is a flowchart of the connection disconnection process triggered by the storage system in the memory control block. [Figure 27] The flowchart for the connection disconnection process triggered by the host server using the FE I / F in Example 2 is shown. [Figure 28] The following shows an example configuration of the connection management table in Example 4. [Modes for carrying out the invention] [Examples]
[0018] The following description will use a configuration implemented with typical hardware as an information system configuration. However, the configuration of the present invention is not limited to hardware, and some or all of the hardware may be implemented in software using virtualization technology to ensure flexibility when changing the information system. Furthermore, unless otherwise specified, the number of components such as memory, CPU (Central Processing Unit), and bus will be described as one each. However, multiple units of each may be provided to achieve redundancy or load balancing, or they may be divided to improve convenience and cost performance. Regarding the bus, it 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] Regarding memory, also known as storage space, it is generally an area for storing information composed of DRAM (Dynamic Random Access Memory), etc. However, memory can be tiered using, for example, SRAM (Static Random Access Memory), flash memory, HDD, etc., to optimize storage capacity, access speed, and cost. Alternatively, some or all of the storage space can be placed in a remote location and accessed and used as needed via a network connected through input / output devices, thereby saving the storage space required by the computer.
[0020] The following configuration description is based on the typical computer configuration of a CPU, memory, input / output devices, and bus. Therefore, without individual explanation, the memory stores programs and data to be run by the CPU and controls the computer's behavior. In addition, devices commonly used in computers may be added to improve usability. For example, a serial bus may be added to allow the addition of user interface devices such as a keyboard and display to improve the operator's operability of the information system, or a configuration that allows operators to access the system remotely via a network may be adopted to improve usability.
[0021] In one embodiment of the present invention, the Front-end Interface (FE I / F) notifies the processor of the storage control block of the information when the first connection among multiple connections constituting a session is established. The storage control block creates management information for a new session, including the notified first connection. Furthermore, the information for each connection is managed by the FE I / F and managed in association with the session management information of the storage control block. According to this embodiment of the present invention, the time required for session establishment when using a protocol in which a single session is composed of multiple connections can be reduced in a storage system equipped with an FE I / F.
[0022] Figure 1 is an overall configuration diagram of the information system in Example 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 servers 200, storage system 1, and management server 50 are interconnected via the network 3.
[0023] The storage system 1 comprises one or more storage device units 20 and a storage control device 10. The storage control device 10 comprises one or more storage control blocks 100. To improve the availability of the storage system 1, the storage control device 10 may be equipped with multiple storage control blocks 100, each supplied with its own dedicated power supply. Alternatively, multiple storage control devices 10 may be equipped and interconnected via an HCA (Host Channel Adapter) network to improve availability and performance through load balancing.
[0024] The memory control device 10 or memory control block 100 is generally also called a storage controller or simply a controller, and provides storage functionality. Figure 1 shows an example of a redundant configuration in which the memory control device 10 holds two memory control blocks 100, but a simpler configuration can also be adopted in which there is only one memory control block 100, which also serves as the memory control device 10. In this case, the memory control block 100 becomes the storage controller.
[0025] The memory control block 100 has a BE I / F (Back-end Interface) 120 and one or more FE I / F 110. In this example, the FE I / F 110 is a SmartNIC (Network Interface Card).
[0026] The memory device unit 20 has one or more PDEV21. PDEV21 refers to a physical device, such as an HDD (Hard Disk Drive), or other memory devices (non-volatile memory devices), such as flash memory devices like SSDs (Solid State Drives), or DRAM (Dynamic Random Access Memory) with a battery.
[0027] The storage device unit 20 may have different types of PDEV21 to improve fault tolerance through diversity and optimize performance and cost. Alternatively, a RAID (Redundant Array of Inexpensive Disks) group may be configured using multiple identical PDEV21 to store data according to a predetermined RAID level and optimize fault tolerance and capacity according to requirements.
[0028] Network 3 is a network for mutual communication between, for example, the connected host server 200, storage system 1, and management server 50. For example, a LAN (Local Area Network) may be used, but it may also be possible to logically configure it using virtual network technology to mix heterogeneous networks and reduce network installation costs, or to use wireless technology to prevent the complexity of cable wiring.
[0029] The host server 200 is a device that connects to storage system 1 and performs storage access. Specifically, it establishes and disconnects connections to storage system 1, changes settings, and sends 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 for a user or operator to control and monitor the storage system 1.
[0031] Figure 2 is a diagram of the memory control block 100. The memory control block 100 has a BE I / F 120, one or more FE I / Fs 110, a CPU (Central Processing Unit) 103, and a memory area 104, which are connected to each other by a bus.
[0032] BE I / F120 and FE I / F110 correspond to input / output devices in a computer. BE I / F 120 is an interface for communicating with the storage device unit 20. FE I / F110 is a programmable network interface, a SmartNIC, on which part of the storage protocol operates 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, and a storage access method optimized for cost and access speed according to the requirements of the information system may be selected.
[0034] Storage System 1 treats logical devices (LDEVs), which are created by bundling physical devices (PDEVs) using RAID or similar methods, as its basic unit. Here, we will explain some of the NVMe terms used in this specification. The Host is the party using Storage System 1 (equivalent to the initiator in iSCSI), is uniquely identified by its HostID, and has the name HostNQN.
[0035] A Subsystem provides one or more devices in a storage system (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 its SubsystemID and has the name SubsystemNQN.
[0036] The Controller (NVMe controller) is an interface for accessing the Subsystem. l It is identified by its erID. A Namespace is a logical device provided by the Subsystem and is identified by its NamespaceID. A Port (Fabric port) is a network interface for accessing the Controller and is identified by its PortID.
[0037] An Association is a logical connection between a Host and a Subsystem. The Host accesses a Port to establish an Association with the Controller. When the Host accesses a Subsystem, it can reference one or more Namespaces, or logical devices, identified by their NamespaceID.
[0038] In NVMe / TCP, for each access (association) to a single subsystem, a management queue connection and an arbitrary number of I / O queue connections are established. The queue connections are established first, followed by the I / O queue connections. The target namespace is specified during I / O (Read / Write) access.
[0039] The memory area 104 stores the memory control program group P0 executed by the CPU 103 and the management information managed by the memory control program group P0. The management information includes the Subsystem management table T10, the Namespace management table T20, and the Controller management table T30. Details of the management information and the processing by the memory control block 100 will be described later.
[0040] Figure 3 shows an example configuration of the FE I / F110. In this example, the FE I / F110 is a SmartNIC. A SmartNIC is a high-performance network card that can be programmed (added) with user-desired functions via software or hardware, and is a front-end interface device. For example, a SmartNIC can perform functions at the transport layer or application layer.
[0041] The following description of SmartNIC can be applied not only to interface devices whose functions can be programmed by software executed by a processor, but also to interface devices with programmable logic circuit configurations, such as FPGAs (Field Programmable Gate Arrays). An FPGA may include logic circuits that implement each of the functions implemented by the program, and cache memory used in calculations.
[0042] The FE I / F110 includes a network I / F111, an internal I / F112, a CPU113, and a memory area114. These are interconnected by a communication channel, such as a bus.
[0043] The network interface (I / F) 111 is an interface device for communicating with the host server 200. The network interface (I / F) 111 is configured with an IP address and used as a network port (hereinafter referred to as a port) for communication. An IP address is an identifier on the network, and the host server 200 communicates with the FE interface (I / F) 110 through the IP address configured on the port.
[0044] The internal I / F112 is an interface device that communicates with the memory control block 100. The internal I / F112 is connected to the CPU of the memory control block 100, for example, via PCIe (Peripheral Component Interconnect-Express).
[0045] The CPU 113 controls the operation of the FE I / F 110. The memory area 114 stores the programs and data used to control the operation of the CPU 113. The memory area 114 stores the interface processing program group P10, the Controller holding table T50, and the connection management table T60.
[0046] The interface processing program group P10 is executed on the CPU 113 to control the connection for communication between the host server 200 and the storage system 1, and the session consisting 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 TCP ports for the Listen service to accept connection requests for each port of the FE I / F110. 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 / F110 and communicates with the memory control block 100 to perform initialization, resource management, fault management, and task scheduling of the FE I / F110.
[0049] The interface processing program group P10 receives various requests such as Read / Write from the host server 200 and processes the block protocols 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 memory control block 100. The interface processing program group P10 communicates with the memory control block 100 and performs data writing, reading, and other processing on the LDEVs that constitute the namespace of the Subsystem in response to the various requests mentioned above.
[0050] Figure 4 shows an example of the configuration diagram of the host server 200. The host server 200 has a network interface 201, a CPU 202, and a storage area 203. These are interconnected by a communication path, such as a bus.
[0051] The network interface 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 storage area 203 stores programs and tables used to control the operation of the CPU 202. The application program P41 and the storage connection program P43 are stored in the storage area 203. Information used by the programs is also stored in the storage area 203.
[0052] The application program P41, when executed on the CPU 202, reads and writes 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 performs data reading and writing to the storage system 1.
[0053] Figure 5 shows an example of the configuration diagram of the management server 50. The management server 50 has a network interface 51, a CPU 52, and a storage area 53. These are interconnected by a communication path such as a bus. The network interface 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 storage area 53 stores programs and data used to control the operation of the CPU 52. The management server program P50 is stored in the storage area 53. The management server program P50 has a user interface such as a GUI or CLI and provides functions for a user or operator to control and monitor the storage system 1. When the management server program P50 receives control or monitoring instructions from the user to the storage system 1, it communicates with the storage system 1 and performs the control or monitoring.
[0055] The management information held in the memory control block 100 will be described in detail below. In the following description, the management information is represented in a table, but other representations suitable for improving functions and performance, such as fault tolerance, may also be used. In addition, while a representation may be used in which multiple values are held in one field of one entry in a table, it is also possible to perform normalization that conforms to performance and functional requirements by holding information in multiple tables or multiple entries by partitioning the table or entries.
[0056] Figure 6 shows an example configuration of the Subsystem management table T10. The Subsystem management table T10 associates a Subsystem with a SubsystemNQN and a port on the FE I / F110. In the example configuration shown in Figure 6, the Subsystem management table T10 includes a SubsystemID column C101, a SubsystemNQN column C102, and a Port ID column C103. The SubsystemID column C101 stores the identifier of the Subsystem within storage system 1. The SubsystemNQN column C102 shows the NQN (NVMe Qualified Name), which is the identifier of the Subsystem in the NVMe / TCP protocol. The Port ID column C103 shows the identifier of the port on the FE I / F110 that the Host uses to access the Subsystem.
[0057] Figure 7 shows an example configuration of the Namespace management table T20. Each subsystem provides one or more Namespaces to the Host. Only one logical device (LDEV) is assigned to a single Namespace. Namespace The management table T20 manages the relationships between these.
[0058] In the configuration example shown in Figure 7, the Namespace management table T20 includes the SubsystemID column C201, the NamespaceID column C202, and the LDEVID column C203. Each entry represents information for a single Namespace. The SubsystemID column C201 shows the ID of the Subsystem that has each Namespace. The NamespaceID column C202 shows the ID that identifies the Namespace within the Subsystem. Each Namespace is identified within storage system 1 by the combination of SubsystemID and NamespaceID. The LDEVID column C203 shows the ID of the LDEV that constitutes each Namespace. In each Subsystem, there is a one-to-one correspondence between Namespaces and LDEVs.
[0059] Figure 8 shows an example configuration of the Controller management table T30. The Controller management table T30 is an interface for access from the host and manages the information of the current Association. When an Association is created, a new entry is added, and when it is completed, that entry is deleted.
[0060] In the configuration example shown in Figure 8, the Controller management table T30 has a ControllerID column. C 301, SubsystemID field C 302, Port ID field C 303, HostNQN field C 304, HostID field C 305, Protocol section C 306, Number of Scheduled Queues C 307, and the number of connections column. C Includes 308 entries. Each entry displays information for one current association.
[0061] ControllerID field C 301 indicates the ID of the Controller that the host accesses in the Association. ControllerID identifies the Controller within Storage System 1. SubsystemID field C 302 indicates the ID of the Subsystem that has the Controller. (PortID field) C 303 indicates the port ID of the FE I / F110 that is being accessed in the Association.
[0062] Host NQN field C 304 indicates the NQN of the accessing host in the Association. (HostID field) C 305 indicates the ID of the accessing host in the Association. (Protocol field) CSection 306 indicates the type of communication protocol used in the Association. In this example, NVMe / TCP is assumed. Other examples include FC-NVMe and iSCSI.
[0063] Planned queue number field C 307 indicates the maximum number of I / O queues in the Association. Since I / O queues are configured for each I / O queue connection (management queue connections are not included), the number of scheduled queues corresponds to the number of scheduled I / O queue connections. For example, the number of scheduled queues is set to the value requested by the host. Note that a maximum allowable value is set in advance for the number of scheduled queues, and the number of scheduled queues in the Association may be set and registered within a range less than or equal to that maximum allowable value. Connection Count field C 308 indicates the current number of I / O queue connections in the Association. This value corresponds to the current number of I / O queues in the Association.
[0064] Next, we will explain in more detail the management information held in the FE I / F110. As shown in Figure 3, the FE I / F110 stores the Controller holding table T50 and the connection management table T60 in the storage area 114.
[0065] Figure 9 shows an example configuration of the Controller retention table T50. The Controller retention table T50 consists of cache data and additional information of the Controller management table T30, which is maintained and managed by the memory control block 100. Note that the Controller retention table T50 may include only information on associations that use the port of the FE I / F 110 in question, or it may also include information on associations that use the ports of other FE I / F 110s.
[0066] Adopting the former reduces the number of items to be managed, thus saving resources and effort required for management. On the other hand, adopting the latter simplifies processing by allowing the confirmation of information necessary for redundancy and mutual exclusion in conjunction with multiple FE I / F110s without requiring additional queries. Furthermore, since the Controller retention table T50 is a cache of information held by the memory control block 100, it is possible to save computing resources required by the FE I / F110 by omitting part or all of the Controller retention table T50 and querying the memory control block 100 for the necessary information.
[0067] In the configuration example shown in Figure 9, the Controller storage table T50 has the ControllerID column. C 501, SubsystemID field C 502, Port ID field C 503, HostNQN field C 504, HostID field C 505, Protocol section C 506, Number of Scheduled Queues C 507, Number of connections column C Includes 508 and available NamespaceID field C509.
[0068] Each entry displays information for a single current Association (session). C 501~ C The data for 508 is in the column with the same name in the Controller management table T30. C 301~ C This is a cache of 308 data points, and the data between them is identical. Note that in the cache of the Controller management table T30 held by the Controller holding table T50 shown in Figure 9, some data may be omitted.
[0069] The Available NamespaceID field C509 indicates the Namespace (LDEV) ID that a host can access within the Association. A single Association allows access to one or more specified Namespaces (LDEVs). The information in the Available NamespaceID field C509 is: memory The signal is passed from control block 100 to FE I / F 110.
[0070] Figure 10 shows an example configuration of the connection management table T60. The connection management table T60 manages the TCP information of the Controller. Each entry represents information for a single connection. The connection management table T60 manages both management queue connections and I / O queue connections. The connection management table T60 manages information for connections via the FE I / F110 that holds it, and does not need to include information for other FE I / F110s. Adopting the former reduces the number of managed devices, thus saving resources and effort required for management. Adopting the latter simplifies processing because information necessary for redundancy and mutual exclusion in cooperation with multiple FE I / F110s can be obtained without additional queries.
[0071] In the configuration example shown in Figure 10, the connection management table T60 includes the connection ID field C601, the Controller ID field C602, the host IP address field C603, the host port number field C604, the target IP address field C605, the target port number field C606, the queue ID field C607, and the connection settings field C608.
[0072] The Connection ID field C601 is the identifier of the entry in the Connection Management Table T60. The Connection ID field C601 may be omitted. The Controller ID field C602 indicates the Controller ID of the Association to which the connection belongs.
[0073] The Host IP Address field C603 and Host Port Number field 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 field C605 and Target Port Number field C606 indicate the target IP address / TCP port number. These values are set by the memory control block 100.
[0074] The queue ID field C607 indicates the ID of the queue assigned to the connection. "0" is set for management queues, and integer values of "1" or greater are sequentially assigned to I / O queues. The connection settings field C608 shows the configuration information for each connection. In this example, the keepalive function settings, specifically the KeepAliveTimeout time, are registered. The KeepAliveTimeout time is the time after one request is completed that the connection remains open for the next new request, and is measured in milliseconds, for example.
[0075] Requests can be limited to specific requests, such as the KeepAlive command, to simplify processing. Another example in the connection settings section C608 is to set the processing priority of that connection relative to other connections, allowing specific connections to be given priority or lower priority, thus enabling resource usage appropriate to the request.
[0076] The following describes the processing performed by the memory control block 100 and the FE I / F 110. In the following description, the order of processing may be changed to the extent that consistency is maintained, or the processing may be simplified by combining preceding and succeeding processes to reduce the number of communications.
[0077] The parameters used in the processing of the memory control block 100 and FE I / F 110 are those mentioned in the information exchanged between the memory control block 100 and FE I / F 110, or those that are pre-configured in the memory control block 100 and FE I / F 110. Some or all of the parameters included in the information exchanged via communication may be pre-configured in the memory control block 100 and FE I / F 110 to save on communication and processing. Conversely, information may be added to the communication to reduce the number of pre-configured parameters and facilitate configuration changes.
[0078] First, the initialization process by the memory control block 100 and the FE I / F 110 will be explained. Figure 11 shows a sequence diagram of the initialization process, Figure 12 shows a flowchart of the FE I / F 110 in the initialization process, and Figure 13 shows a flowchart of the memory control block 100 in the initialization process.
[0079] Before the initialization process shown in Figure 11-13 begins, the memory control block 100 creates the Subsystem management table T10 and Namespace management table T20 in advance, based on the design and operator settings. The FE I / F 110 is also pre-configured for communication initialization with the memory control block 100, based on the design and initial settings.
[0080] As shown in Figures 11 and 13, the memory 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 memory control block 100 establish communication with each other (S11, S22). That is, as shown in Figure 12, the started FE I / F 110 establishes communication with the memory control block 100 (S11), and as shown in Figure 13, the memory control block 100 establishes communication with the started FE I / F 110 (S22).
[0081] Next, as shown in Figures 11 and 13, the memory control block 100 sends a port configuration instruction to the FE I / F 110 (S23). The port configuration 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 configuration instruction from the memory control block 100 and configures the IP address and TCP port number for each port (S12).
[0082] Once the port configuration is complete, the FE I / F 110 sends a port configuration completion notification to the memory control block 100 (S13).
[0083] As shown in Figures 11 and 13, after receiving a port configuration completion notification from the FE I / F 110 (S24), the memory control block 100 sends a port listening start instruction to the FE I / F 110 (S25).
[0084] As shown in Figures 11 and 12, the FE I / F 110 receives a port listening start instruction from the memory control block 100 (S14) and listens for communication from the host server (S15). For example, the FE I / F 110 starts the NVMe / TCP target software. Subsequently, the FE I / F 110 sends a port listening completion notification to the memory control block 100 (S16).
[0085] As shown in Figures 11 and 13, the memory control block 100 listens for port information from the FE I / F 110. Completed Received completion notification (S26) and awaits instructions from the operator and requests from FE I / F110 (S27).
[0086] Next, the connection establishment process between the host server 200 and the storage control block 100 will be described. In NVMe / TCP, the host server 200 and the storage system 1 establish a management queue connection and an arbitrary number of I / O queue connections for access to a single subsystem (Association). The management queue connection is established first, followed by several I / O queue connections. The target Namespace (LDEV) is specified during I / O (Read / Write) access.
[0087] Figure 14 shows a sequence diagram of the management queue connection establishment process. Figure 14 shows the processing sequence when no errors occur 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 holding table T50.
[0088] For example, the information for the connection management table T60 may include the queue ID, host IP address, host port number, and connection configuration information. The ControllerID is omitted in the case of a management queue connection request. The queue ID is "0" in the case of a management queue connection. The connection configuration information indicates the KeepAliveTimeout time. The target IP address and target port number can be obtained by the FE I / F 110 from the memory control block 100.
[0089] The information for the Controller's holding table T50 can include SubsystemNQN, HostNQN, HostID, the requested number of scheduled queues, and the number of connections (current number of I / O queues). For management queue connections, the number of connections is "0". Note that the PortID is stored as a setting value within the FE I / F110.
[0090] Next, the FE I / F110 adds an entry to the connection management table T60 (S32). At this time, the ControllerID is set to a value that means it is not entered (for example, 0xffff). Furthermore, the FE I / F110 sends a Controller Addition Request to the Memory Control Block (S33).
[0091] A Controller Addition Request includes information stored in the Controller Management Table T30. Specifically, the Controller Addition Request includes information on SubsystemNQN, PortID, HostNQN, HostID, protocol, number of scheduled queues, and number of connections. For management queue connections, the number of connections is "0". The protocol indicates the communication protocol between host server 200 and the FE I / F, and in this example, NVMe over TCP is assumed.
[0092] Upon receiving a request to add a Controller, the memory control block 100 adds a new entry to the Controller management table T30, secures hardware resources such as memory space and CPU cores, and sets the Controller ID (S34).
[0093] The memory control block 100 searches the Subsystem management table T10 for an entry whose SubsystemNQN matches the SubsystemNQN included in the Controller addition request, obtains the SubsystemID 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 set for the management queue connection is 0. The above request value is set as the planned queue size. If the request value is greater than the pre-set maximum allowable value, that maximum allowable value may be set.
[0094] In this specification, as described above, searching for an entry in a specific table (in the example above, Subsystem management table T10) where the value of a specific field of an entry (in the example above, SubsystemNQN) matches a value given with the same name (in the example above, SubsystemNQN included in the Controller Addition Request), and retrieving the value of another field of that entry (in the example above, SubsystemID), is simply expressed as retrieving another value from a specific table using a specific field value (in the example above, retrieving SubsystemID from Subsystem management table T10 using SubsystemNQN), or retrieving another value by searching for a specific field value from a specific table (in the example above, searching for SubsystemNQN from Subsystem management table T10 and retrieving SubsystemID).
[0095] Next, the memory control block 100 searches the Namespace management table T20 for entries whose SubsystemID matches the aforementioned SubsystemID, and obtains the NamespaceIDs of the matching entries as a list of available NamespaceIDs (S35). Next, the memory control block 100 sends a Controller Additional Response containing specific information to the FE I / F 110 (S36).
[0096] The Controller additional response includes the ControllerID, the configured number of scheduled queues, and a list of available NamespaceIDs. The NamespaceID list may be defined as a sequential number starting from 1, for example, and the amount of communication data may be reduced by returning the number of NamespaceIDs.
[0097] Upon receiving a response from the memory control block 100, the FE I / F 110 adds an entry to the Controller retention table (S37), and sets the ControllerID of the entry added to the Controller retention table T50 to the corresponding entry in the connection management table T60 (S38).
[0098] The FE I / F110 prepares the necessary hardware resources, such as memory and CPU cores, for processing on the management queue connection (S39), and returns a connection completion response to the host server 200 (S40). The connection completion response includes the configured ControllerID, the configured number of scheduled queues, and a list of available NamespaceIDs. If an error occurs during processing, an error response is sent to the host server 200. Furthermore, multiple management queue connections may be established; in this case, they are treated as different associations and managed as connections with different ControllerIDs.
[0099] Figure 15 shows a sequence diagram of the I / O queue connection establishment process belonging to the Association after the management queue connection has been established. Figure 15 shows the processing sequence when no errors occur 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 holding table T50.
[0100] For example, the information for connection management table T60 may include ControllerID, queue ID, host IP address, host port number, and connection configuration information. ,tube The value returned when the queue connection is established is used. The queue ID is an integer value of "1" or greater in the case of an I / O 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 / F110 from the memory control block 100.
[0101] The information for the Controller retention table T50 can include the ControllerID. The corresponding Association can be identified by searching for an entry in the Controller retention table T50 that matches the ControllerID provided by the host.
[0102] Next, FE I / F110 adds an entry to the connection management table T60 (S46). Then, FE I / F110 searches for the specified ControllerID in the Controller retention table T50 (S47).
[0103] If an entry with a matching ControllerID 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 ControllerID. The number of connections is set to the number of connections of the entry with the matching ControllerID plus 1. If the entry does not exist or the number of connections in this case exceeds the planned queue size, an error is generated.
[0104] Upon receiving a connection addition request, the storage control block 100 searches for the corresponding entry in the Controller management table T30 using the ControllerID and updates the number of connections in the entry for that ControllerID to the value of the number of connections included in the connection addition request from the FE I / F 110 (S49). Subsequently, the storage control block 100 returns a normal response (S50). If the entry does not exist or if the number of connections exceeds the planned number of queues due to the current IO queue connection, an error response is returned.
[0105] Upon receiving a normal response from the memory control block 100, the FE I / F 110 updates the number of connections in the Controller retention table T50 to match the Controller management table T30 (S51).
[0106] The FE I / F110 prepares hardware resources such as memory area and CPU cores for the management queue connection (S52) and returns a connection completion response to the host server 200 (S53). The connection completion response includes the ControllerID. If an error occurs during processing, an error response is sent to the host server 200.
[0107] Next, the processes of the FE I / F 110 and the memory control block 100 in the connection establishment process, as described with reference to Figures 14 and 15, will be explained with reference to flowcharts. In the following explanation, different symbols are used for the same steps as in Figures 14 and 15. Figures 16A and 16B are flowcharts of the connection establishment process of the FE I / F 110.
[0108] The FE I / F110 receives a connection request from the host server 200 for either a management queue connection or an I / O queue connection (S61). The information included in the connection request is as described above.
[0109] Next, the FE I / F110 adds a corresponding entry to the connection management table T60 (S62). At this time, the ControllerID is not entered. Next, the FE I / F110 determines whether the queue ID of the connection request is "0" or not (S63). If the queue ID is "0", it is a request for a management queue connection; if it is a larger integer, it is a request for an I / O queue connection.
[0110] If the queue ID is "0", meaning 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 containing the Controller ID is received from the storage control block 100 (S64). The information contained in the Controller addition request and the Controller addition response is as explained with reference to Figure 14.
[0111] If the Controller additional response is an error response (S65:YES), FE I / F110 returns an error response to host server 200 (S66). If the Controller additional response is not an error response (S65:NO), FE I / F110 adds an entry to Controller retention table T50 (S67).
[0112] Furthermore, the FE I / F110 sets the ControllerID of the entry added to the Controller holding table T50 to the corresponding entry in the connection management table T60 (S68). The FE I / F110 prepares hardware resources such as memory area and CPU cores 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 explained with reference to Figure 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 through connector A to step S71 in Figure 16B. In step S71, the FE I / F 110 searches for the Controller ID in the Controller holding table T50.
[0114] If the ControllerID does not exist (S71: NO), the FE I / F 110 returns an error response to the host server 200 (S78). If the ControllerID exists in the Controller retention table T50 (S71: YES), the FE I / F 110 determines whether the number of connections indicated by the connection request (current number of IO queues) plus 1 exceeds the planned number of queues (S72).
[0115] If the number of connections indicated by the connection request plus one exceeds the number of scheduled queues (S72:YES), the FE I / F 110 returns an error response to the host server 200 (S78). Note that the storage system-triggered disconnection process described later may also be executed. If the number of connections indicated by the connection request plus one is less than or equal to the number of scheduled queues (S72:NO), the FE I / F 110 sends a connection addition notification to the storage control block 100 and receives a response (S73).
[0116] If an error response is received from the memory control block 100 (S74:YES), the FE I / F 110 returns the error response to the host server 200 (S78). If a normal response is received from the memory control block 100 (S74:NO), the FE I / F 110 updates the number of connections in the Controller holding table T50 (S75).
[0117] Next, the FE I / F 110 prepares hardware resources such as memory area and CPU cores for the management queue connection (S76), and returns a connection completion response to the host server 200 (S77). The information included in the connection completion response is as explained with reference to Figure 15.
[0118] Next, the processing of the memory control block 100 will be explained. Figure 17 is a flowchart of the connection establishment process of the memory control block 100. Some of the symbols in Figure 17 overlap with those in Figure 16B, but even if the symbols are the same in Figure 17 and Figure 16B, they represent different steps. The memory 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 explained with reference to Figures 14 and 15.
[0119] If the received request is a Controller addition request (S76: Controller addition request), the memory control block 100 includes the entry SubsystemNQN in the Subsystem management table T10 as part of the Controller addition request. ruS Search for an entry that matches ubsystemNQN and obtain the Subsystem ID of that entry (S77).
[0120] Next, the memory 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 the Controller ID (S78). The protocol at this time is assumed to be NVMe over TCP. The memory control block 100 sets the number of connections to "0" and sets the number of scheduled queues to the requested value. However, if the requested value is greater than the maximum allowable value, the maximum allowable value may be set instead.
[0121] Next, the memory control block 100 searches for the Subsystem ID in the Namespace management table T20 and obtains a list of available Namespace IDs (S79). Then, the memory control block 100 returns a Controller additional response to the FE I / F 110 (S80). The Controller additional response includes the Controller ID, the set number of scheduled queues, 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 memory control block 100 searches for the corresponding entry in the Controller management table T30 using the ControllerID (S81). If the entry does not exist (S82: NO), the memory control block 100 returns an error response to the FE I / F 110 (S87).
[0123] If an entry exists (S82:YES), the memory control block 100 compares the number of scheduled queues for that entry with the number of connections indicated by the request from the FE I / F 110 (current number of IO queues) (S83). If the number of connections plus 1 exceeds the number of scheduled queues, that is, if the number of IO queues exceeds the number of scheduled queues due to the current IO queue connection (S84:YES), the memory 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 memory control block 100 updates the number of connections in the Controller management table T30 to the number of connections plus 1 (S85), and returns a normal response to the FE I / F 110 (S86).
[0125] Next, we will explain how storage system 1 processes I / O access (read access or write access) from host server 200. Figure 18 shows a sequence diagram of I / O access processing.
[0126] FE I / F110 receives an IO command from host server 200 (S91). The IO command is either a read command or a write command. The IO command includes the command type (read or write), NamespaceID, destination address, destination size, and, in the case of a write command, the data to be written.
[0127] The FE I / F110 retrieves a list of ControllerIDs and NamespaceIDs corresponding to IO commands from the connection management table T60 (S92). The FE I / F110 adds the retrieved ControllerID and forwards the above IO command to the memory control block 100 (S93).
[0128] When the memory control block 100 receives the ControllerID and IO command from the FE I / F 110, it obtains the corresponding SubsystemID from the Controller management table T30 (S94). Furthermore, the memory control block 100 searches the Namespace management table T20 for the combination of SubsystemID and NamespaceID and obtains the corresponding LDEV ID (S95).
[0129] Next, the memory control block 100 performs an access permission / denial determination on the access destination address and access destination size (S96). This determination is based on user privileges, whether the access destination is in use by another host server, etc. To determine This is a common storage access control method.
[0130] Next, the memory 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 for the read command and a success response is returned for the write command.
[0131] The FE I / F 110 receives a response from the memory control block 100 and forwards it to the host server 200 (S98).
[0132] Alternatively, the host server 200 may send a write command without write data to the FE I / F 110, receive a write-enabled response, and then send a write command containing write data. In this case, the above sequence will be executed twice.
[0133] Next, the processing of the FE I / F 110 and the memory control block 100 in the IO access process described with reference to Figure 18 will be explained with reference to the flowchart. In the following explanation, different symbols are used for the same steps as in Figure 18.
[0134] Figure 19 is a flowchart of the IO access processing of the FE I / F110. First, the FE I / F110 receives an IO command from the host server (S101). The information contained in the IO command is as explained with reference to Figure 18. Next, the FE I / F110 obtains a list of ControllerIDs and NamespaceIDs 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 retrieved NamespaceID list (S103:NO), the FE I / F110 returns an error response to the host server 200 (S107).
[0136] If the NamespaceID of the IO command is included in the retrieved NamespaceID list (S103:YES), the FE I / F 110 sends the retrieved ControllerID and the IO command to the memory control block 100 (S104). The FE I / F 110 then receives a response from the memory control block 100 (S105) and returns it to the host server 200 (S106). As described above, the response can be an error response or a normal read or write response. A normal read response includes read data.
[0137] Figure 20 is a flowchart of the I / O access process of the memory control block 100. The memory control block 100 receives an I / O command and ControllerID from the FE I / F 110 (S111). Next, the memory control block 100 obtains the corresponding SubsystemID from the Controller management table T30 (S112).
[0138] Next, the memory control block 100 searches the Namespace management table T20 for a combination of SubsystemID and NamespaceID and obtains the corresponding LDEV ID (S113).
[0139] Next, the storage control block 100 determines whether the access destination address and access destination size are accessible by the I / O command (S114). This step is a general storage access control that determines whether user privileges are in place or if another host is using the storage.
[0140] If the access fails (S114: NO), the memory control block 100 returns an error response to the FE I / F 110 (S118). If the access is permitted (S114: YES), the memory 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 memory control block 100 reads data of the size of the access destination from the access destination address of the LDEV indicated by the LDEV ID and returns it to the FE I / F 110 as an IO result (S116). If the IO command is a write command (S115: WRITE), the memory control block 100 writes data of the size of the access destination to the access destination address of 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 termination process triggered by the host server 200. Figure 21 is a sequence diagram of the connection termination process triggered by the host server. The FE I / F 110 receives a connection termination request from the host server (S121). Note that the termination may also be triggered by the host server 200 terminating the TCP connection.
[0143] Next, the FE I / F110 retrieves the ControllerID of the connection from the connection management table T60 (S122). The FE I / F110 then disconnects the connection by sending a disconnection completion notification to the host server 200 (S123). Note that this step is unnecessary if the disconnection is triggered by a TCP connection termination.
[0144] Next, the FE I / F 110 deletes the corresponding entry from the connection management table T60 and releases the resources (S124). Then, the FE I / F 110 sends a connection deletion request to the memory control block 100 (S125). The connection deletion request includes information on the ControllerID and the updated number of connections.
[0145] Upon receiving a connection deletion request from the FE I / F 110, the storage control block 100 updates the number of connections for the entry with the matching ControllerID in the Controller management table T30 (S126). Here, the number of connections is reduced by 1. Subsequently, the storage control block 100 sends a completion notification to the FE I / F 110 (S127).
[0146] Upon receiving the completion notification, FE I / F110 updates the number of connections (current queue number) in the Controller holding table T50 (S128). Here, the value of the number of connections is decreased by 1.
[0147] If the number of connections (current number of I / O queues) in the Controller holding table T50 is 0, the FE I / F 110 sends a Controller deletion request to the storage control block 100 (S129). The Controller deletion request includes the target Controller ID.
[0148] Upon receiving a Controller deletion request, the storage control block 100 deletes the entry with the matching ControllerID in the Controller management table T30 and releases the resources (S130). Subsequently, the storage control block 100 sends a completion notification to the FE I / F 110 (S131). Upon receiving the completion notification, the FE I / F 110 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 memory control block 100 in the host server-triggered connection disconnection process, as explained with reference to Figure 21, will be described with reference to the flowchart. In the following explanation, different symbols are used for the same steps as in Figure 21.
[0150] Figure 22 is a flowchart of the connection termination process initiated by the host server for the FE I / F110. First, the FE I / F110 receives a connection termination request from the host server (S141). As mentioned above, the trigger may be the host server 200 terminating the TCP connection.
[0151] Next, the FE I / F110 retrieves the ControllerID of the connection from the connection management table T60 (S142). The FE I / F110 then disconnects the connection by sending a disconnection completion notification to the host server 200 (S143). This step is unnecessary if the disconnection is triggered by a TCP connection termination.
[0152] Next, the FE I / F 110 deletes the corresponding entry from the connection management table T60 and releases the resources (S144). Then, the FE I / F 110 sends a connection deletion request to the memory control block 100 and receives a completion notification (S145). The connection deletion request includes information on the ControllerID and the updated number of connections.
[0153] Upon receiving the completion notification, FE I / F110 updates the number of connections (current queue number) in Controller holding table T50 (S128). Here, the value of the number of connections is reduced by 1. FE I / F110 then determines whether the number of connections (current IO queue number) in Controller holding table T50 is 0 (S147).
[0154] If the number of connections is greater than 0 (S147: NO), this flow terminates. If the number of connections is 0 (S147: YES), the FE I / F 110 sends a Controller deletion request to the memory control block 100 and receives a completion notification from the memory 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 connection disconnection process triggered by the host server in the memory control block 100. The memory control block 100 receives a connection deletion request from the FE I / F 110 (S151). The connection deletion request indicates the ControllerID and the number of connections after the update. The memory control block 100 updates the number of connections for the entry with the matching ControllerID in the Controller management table T30 (S152). Here, the number of connections is reduced by 1. Next, the memory control block 100 sends a completion notification to the FE I / F 110 (S153).
[0156] Subsequently, the memory control block 100 receives a Controller deletion request (S154). The Controller deletion request indicates the Controller ID. The memory control block 100 deletes the entry with the matching Controller ID in the Controller management table T30 and releases the resources (S155). Next, the memory 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. Figure 24 is a sequence diagram of the connection disconnection process triggered by the storage system. In the event of an operator operation or an error occurring within the storage system 1, the storage control block 100 disables the entry with a matching ControllerID in the Controller management table T30 (S161). Disabling an entry may be done, for example, by setting the number of scheduled queues 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 ControllerID to the FE I / F 110 (S162).
[0158] Upon receiving a connection disconnection request, the FE I / F 110 searches the connection management table T60 for connections with matching ControllerIDs (S163). The FE I / F 110 then sends connection disconnection notifications to the host servers 200 for all matching connections and disconnects them (S164).
[0159] Next, the FE I / F 110 deletes the entry with the matching ControllerID from the connection management table T60 and releases the resources (S165). Furthermore, the FE I / F 110 deletes the entry with the matching ControllerID from the Controller retention table T50 and releases the resources (S166). After that, the FE I / F 110 sends a disconnection completion notification to the memory control block 100 (S167).
[0160] When the memory control block 100 receives a disconnection completion notification from the FE I / F 110, it deletes the entry with the matching ControllerID from the Controller management table T30 (S168).
[0161] Next, the processes of the FE I / F 110 and the memory control block 100 in the storage system-triggered connection disconnection process, as explained with reference to Figure 24, will be described with reference to the flowchart. In the following explanation, different symbols are used for the same steps as in Figure 24.
[0162] Figure 25 is a flowchart of the connection disconnection process triggered by the storage system in the FE I / F110. The FE I / F110 receives a connection disconnection request including the ControllerID from the storage control block 100 (S171). The FE I / F110 searches the connection management table T60 for connections with matching ControllerIDs (S172). The FE I / F110 sends disconnection notifications to the host servers 200 for all matching connections, and then disconnects the connections (S173).
[0163] Next, the FE I / F110 connects management Delete the entry in the table that matches the ControllerID and release the resources (S17 4 Next, the FE I / F110 deletes the entry with the matching ControllerID from the Controller retention table and releases the resources (S175). It then notifies the memory control block that the disconnection is complete (S176).
[0164] Figure 26 is a flowchart of the connection disconnection process triggered by the storage system in the memory control block 100. In response to operator actions or errors occurring within the storage system 1, the memory control block 100 disables entries in the Controller management table T30 that match the ControllerID (S181). Disabling an entry can be done, for example, by setting the number of scheduled queues 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 memory control block 100 sends a connection disconnection request specifying the ControllerID to the FE I / F 110 (S182). Subsequently, the memory control block 100 receives a disconnection completion notification from the FE I / F 110 (S183). Next, the memory control block 100 deletes the entry with the matching ControllerID from the Controller management table T30 (S184). If the entry has already been deleted, the entry deletion is omitted.
[0166] Various modifications are possible to the above embodiment. For example, information on the number of connections may be omitted in the Controller management table T30. In this case, communication regarding the number of connections, processing related to updating the number of connections in the storage control block 100 at the FE I / F 110, and processing related to the number of connections in the storage control block 100 can be omitted between the FE I / F 110 and the storage control block 100. As a result, the time required to establish a connection (Association) to the Controller can be further reduced by omitting communication between the FE I / F 110 and the storage control block 100 when establishing an IO queue connection.
[0167] In addition to the number of connections, the number of reserved queues (the number of allowed queues) in the Controller management table T30 may be omitted. In this case, during initialization, the memory control block 100 notifies the FE I / F 110 of the number of reserved queues, and thereafter the FE I / F 110 manages the number of reserved queues. As a result, the management of connections (associations) to the Controller is performed by the FE I / F 110, reducing the involvement of the memory control block 100 and simplifying the processing of the FE I / F 110. However, since the memory control block 100 can no longer manage the number of reserved queues, if the number of reserved queues needs to be changed midway through, instructions from the memory control block 100 to the FE I / F 110 are required.
[0168] In the description of the above process, the order of the steps can be rearranged as long as consistency is maintained, and the process can be simplified or the number of communications reduced by combining preceding and succeeding steps. Also, if there are sufficient resources and immediate release of resources is not necessary, resource release 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 memory control block 100. However, different communication methods may be used to optimize the required computing resources or simplify implementation.
[0170] For example, the communication format supported by the host server and memory control block may be adopted to suppress additional development and processing. For instance, NVMe over FC or iSCSI may be used between the host server 200 and the FE I / F 110, and UDP (User Datagram Protocol) may be used between the FE I / F 110 and the memory control block 100. If other communication methods are used, the specific information of that communication method will be used. For example, in iSCSI, the iSCSI Qualified Name is used instead of the SubsystemNQN.
[0171] The method of transmitting information is not limited to the examples above. For example, the amount of data in a single transmission may be reduced by dividing specific information, or the reliability of the process may be improved by performing sequential error detection processing. Fault tolerance may be improved by making the information redundant by sending it multiple times, or by checking for inconsistencies during transmission. In addition, the number of transmissions may be reduced by sending different information in a combined format (for example, by concatenating HostNQN and HostID as a string).
[0172] In the above embodiment, since the FE I / F 110 is located between the host server 200 and the memory control block 100, if the transmission of information is divided into multiple parts, the communication becomes two-stage. There are two ways to handle the divided information, and either one may be adopted.
[0173] In one method, the FE I / F 110 performs multiple communications with either the host server 200 or the memory control block 100, combines the divided information, and transmits it to the other. This simplifies communication. In another method, the FE I / F 110 sequentially transmits the information received from either the host server 200 or the memory control block 100 to the other. This minimizes delay.
[0174] If it can be confirmed from other information, or if it is not required by the communication method, the information may be transmitted in other formats, or only a portion of the information may be transmitted. For example, Contr o If the SubsystemNQN can be restored from the table managing the ControllerID by providing only the ControllerID, then only the ControllerID needs to be sent. This reduces the amount of data and processing required for communication.
[0175] The response may not contain all the information in the example above. For example, if an error occurs, the error will be notified. Each request is assigned a request ID to distinguish which request the response or data corresponds to. Also, if the processing does not change depending on the content of the response to the communication, such as disconnection or deletion, the sending of the response may be omitted. By omitting the sending of the response, deadlocks due to waiting for a response can be avoided, the time to complete processing can be shortened, and processing can be simplified. Sending a response can maintain the consistency of the state at both ends of the communication if an error occurs at either end. [Examples]
[0176] Embodiment 2 of the present invention is described below. In this embodiment, the processing of the FE I / F110 in connection termination processing initiated by the host server differs from that of Embodiment 1. The description of Embodiment 1 may apply to configurations not specifically mentioned in the following description.
[0177] Figure 27 shows a flowchart of the connection termination process triggered by the host server using the FE I / F110. The FE I / F110 removes the Controller (complete disconnection) when a single connection is terminated. This simplifies the processing of the FE I / F110, reducing the load and improving performance.
[0178] Referring to Figure 27, steps S141 to S143 are the same as the flowchart shown in Figure 22 of Example 1. After step S143, the FE I / F 110 sends a disconnection notification to the host server 200 for all entries of the ControllerID in the connection management table T60 and disconnects all connections (S191). The FE I / F 110 deletes all entries of the ControllerID from the connection management table T60 and the resources release (S192) The following steps S148 and S149 are the same as the flowchart shown in Figure 22 of Example 1. [Examples]
[0179] Embodiment 3 of the present invention is described below. This embodiment adds a connection ID to the configuration of the connection management table T60 of Embodiment 1. The information transmitted from the FE I / F 110 to the memory control block 100 includes the connection ID. When the memory control block 100 saves its processing to the log, it includes the connection ID notified by the FE I / F 110 in the log. This makes it easy to track connections that took a long time or connections where errors occurred. The other configurations are the same as in Embodiment 1. [Examples]
[0180] Embodiment 4 of the present invention is described below. This embodiment manages the CPU core responsible for connections in the FE I / F110. The differences from Embodiment 1 are described below. The description of Embodiment 1 can be applied to configurations that are not specifically mentioned.
[0181] Figure 28 shows an example configuration of the connection management table T90 in this embodiment. In addition to columns C601 to C608 of the connection management table T60 in Embodiment 1, the connection management table T90 includes a column C609 for the assigned core. The assigned 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 its request to the memory control block 100. When the memory control block 100 saves its processing to the log, it includes the information about the assigned core (including the core ID) notified by the FE I / F 110 in the log. This step may be omitted.
[0183] The memory control block 100 includes the assigned core ID notified by the FE I / F 110 in the response indicating the processing result that it sends to the FE I / F 110. When a disconnection is triggered by the memory control block, the memory control block 100 inserts an invalid value into the response.
[0184] When the FE I / F 110 processes the response from the memory control block 100, the FE I / F 110 refers to the included assigned core ID and sets it as the core to be processed by the FE I / F 110.
[0185] In this embodiment, during I / O access, the FE I / F 110 can immediately distribute processing to the core responsible for the I / O access based on the response from the memory control block 100, thereby equalizing processing bias among cores and improving cache efficiency and latency. The information transmitted between the FE I / F 110 and the memory control block 100 may include a connection ID instead of the assigned core ID, as in Embodiment 3. The FE I / F 110 can identify the assigned core by referring to the connection management table T90. This configuration simplifies the implementation of both Embodiment 3 and Embodiment 4.
[0186] It should be noted that the present invention is not limited to the embodiments described above, and various modifications are included. For example, the embodiments described above are described in detail to make the present invention easier to understand, and are not necessarily limited to those having all the configurations described. Furthermore, it is possible to replace parts of the configuration of one embodiment with the configuration of another embodiment, and it is also possible to add configurations from other embodiments to the configuration of one embodiment. In addition, it is possible to add, delete, or replace parts of the configuration of each embodiment with other configurations.
[0187] Furthermore, some or all of the above configurations, functions, and processing units may be implemented in hardware, for example, by designing them as integrated circuits. Alternatively, the above configurations and functions may be implemented in software by having the processor interpret and execute programs that implement each function. Information such as programs, tables, and files that implement each function can be stored in memory, a recording device such as a hard disk or SSD, or a recording medium such as an IC card or SD card.
[0188] Furthermore, the control lines and information lines shown are those deemed necessary for explanatory purposes, and not all control lines and information lines are necessarily shown in the actual 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 I / F 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 containing one or more connections, Front-end interface and Processor and Includes memory area, The aforementioned storage area stores session management information for managing the communication session with the host, The aforementioned front-end interface stores connection management information for managing the session connection, The front-end interface controls access from the host by referring to the connection management information. The front-end interface stores session retention information, including a cache of the information contained in the session management information. The front-end interface adds a new entry to the connection management information when the initial connection of the session is established. The front-end interface transmits information regarding the initial connection to the processor. The processor adds an entry for the new session, including the initial connection, to the session management information. The processor transmits the information of the new session to the front-end interface. The front-end interface updates the session retention information with the received information about 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.
2. The storage system according to Claim 1, The session retention information manages the planned number of connections in the session, The front-end interface returns an error to the host if the number of connection establishments requested by the host exceeds the planned number of connections. Storage system.
3. A storage system that communicates with a host in a session including one or more connections, Front-end interface and Processor and Includes memory area, The aforementioned storage area stores session management information for managing the communication session with the host, The aforementioned front-end interface stores connection management information for managing the session connection, The front-end interface controls access from the host by referring to the connection management information. In disconnecting the connection from the host to the front-end interface, The front-end interface obtains the corresponding session information from the connection management information, The front-end interface sends a disconnection completion notification to the host. The front-end interface sends a request to the processor to disconnect the connection, specifying the corresponding session. The processor updates the session management information in response to the received disconnection request. Storage system.
4. A storage system that communicates with a host in a session including one or more connections, Front-end interface and Processor and Includes memory area, The aforementioned storage area stores session management information for managing the communication session with the host, The aforementioned front-end interface stores connection management information for managing the session connection, The front-end interface controls access from the host by referring to the connection management information. In disconnecting the connection from the host to the front-end interface, The front-end interface obtains the corresponding session information from the connection management information, The front-end interface sends a disconnection completion notification to the host. If the number of I / O connections for the corresponding session is 0, the front-end interface sends a request to the processor to delete the corresponding session. The processor deletes the information of the corresponding session from the session management information. Storage system.