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 for managing the session of the communication 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.
Legal claims defining the scope of protection, as filed with the USPTO.
a front-end interface; a processor; and a storage area, wherein the storage area stores session management information for managing the session with the host, the front-end interface stores connection management information for managing the one or more connections of the session, and the front-end interface controls access from the host by referring to the connection management information, the front-end interface acquires information of the session corresponding to the connection from the connection management information, the front-end interface transmits a disconnection completion notification to the host, the front-end interface designates the session and transmits a disconnection request for the connection to the processor, and the processor updates the session management information in response to the received disconnection request. wherein, in termination of a connection of the one or more connections between the host and the front-end interface, . A storage system that communicates with a host in a session including one or more connections, the storage system comprising:
claim 1 the front-end interface stores session holding 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 in establishment of a first connection of the one or more connections of the session, the front-end interface transmits information regarding the first connection to the processor, the processor adds an entry of a new session as the session including the first connection to the session management information, the processor transmits information of the new session to the front-end interface, the front-end interface updates the session holding information with the received information of the new session, and the front-end interface controls the access from the host by referring to the connection management information and the session holding information. . The storage system according to, wherein
claim 2 the session holding information manages a number of scheduled connections in the session, and the front-end interface returns an error to the host in a case where a number of connections to be established, as requested by the host, exceeds the number of scheduled connections. . The storage system according to, wherein
claim 1 the front-end interface includes a connection ID managed by the front-end interface in a request to the processor, and the processor includes the connection ID in log information. . The storage system according to, wherein
claim 1 the front-end interface sets an assigned core for a connection of the one or more connections, the front-end interface includes information of the assigned core of the connection in a request to the processor, the processor includes the information of the assigned core in a processing result to be transmitted to the front-end interface, and the front-end interface continues processing of the connection by the assigned core. . The storage system according to, wherein
a front-end interface; a processor; and a storage area, wherein the storage area stores session management information for managing the session with the host, the front-end interface stores connection management information for managing the one or more connections of the session, and the front-end interface controls access from the host by referring to the connection management information, the front-end interface acquires information of the session corresponding to the connection from the connection management information, the front-end interface transmits a disconnection completion notification to the host, the front-end interface transmits a deletion request for the session to the processor, and the processor deletes information of the session from the session management information. in a case where a number of input/output connections of the session is 0, wherein, in termination of a connection of the one or more connections between the host and the front-end interface, . A storage system that communicates with a host in a session including one or more connections, the storage system comprising:
claim 6 the front-end interface stores session holding 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 in establishment of a first connection of the one or more connections of the session, the front-end interface transmits information regarding the first connection to the processor, the processor adds an entry of a new session as the session including the first connection to the session management information, the processor transmits information of the new session to the front-end interface, the front-end interface updates the session holding information with the received information of the new session, and the front-end interface controls the access from the host by referring to the connection management information and the session holding information. . The storage system according to, wherein
claim 7 the session holding information manages a number of scheduled connections in the session, and the front-end interface returns an error to the host in a case where a number of connections to be established, as requested by the host, exceeds the number of scheduled connections. . The storage system according to, wherein
claim 6 the front-end interface includes a connection ID managed by the front-end interface in a request to the processor, and the processor includes the connection ID in log information. . The storage system according to, wherein
claim 6 the front-end interface sets an assigned core for a connection of the one or more connections, the front-end interface includes information of the assigned core of the connection in a request to the processor, the processor includes the information of the assigned core in a processing result to be transmitted to the front-end interface, and the front-end interface continues processing of the connection by the assigned core. . The storage system according to, wherein
Complete technical specification and implementation details from the patent document.
The present application claims priority from Japanese patent application JP 2024-024729 filed on Feb. 21, 2024, the content of which is hereby incorporated by reference into this application.
The present invention relates to a storage system.
In recent information systems, storage area networks (SANs) have been widely used as a form of connecting storage systems and host servers. In a configuration of the SAN, the storage system and the host server are connected via a switch using a network cable such as an optical fiber. Storage resources can be shared among multiple host servers by using the SAN. Software that operates in the host server and accesses the storage system is referred to as an initiator, and software that operates in the storage system, accepts storage access from the initiator, and provides access to the storage is referred to as a target in this document.
There are an FC-SAN using Fibre Channel (FC) and Internet Protocol (IP)-SAN using the Ethernet as types of the SAN. Since the FC-SAN performs lossless data transfer using a dedicated interface module and an FC switch, it is possible to configure a highly reliable and mission critical IT system. On the other hand, the IP-SAN is based on a standard IP protocol, and can thus be easily handled without advanced expertise required in the FC-SAN. As communication data retransmission control can be performed in the transmission control protocol (TCP) layer over the IP, reliability can be secured in the IP-SAN, resulting an increase of adoption of the IP-SAN to mission critical information systems. In addition, with the spread of 100 Gb Ethernet and 200 Gb Ethernet, the IP-SAN is expected to enhance the communication capacity.
With the spread of storage using a non-volatile memory, Non-Volatile Memory Express over Transmission Control Protocol (NVMe/TCP) as the protocol for the IP-SAN is expected to further improve performance comparing to that of the widespread conventional Internet Small Computer System Interface (iSCSI).
In the case of the iSCSI, a logical connection between the initiator and the target is referred to as a session, and in single session, an iSCSI request/response is basically exchanged on one TCP connection to access the storage from a host server.
On the other hand, in the case of the NVMe/TCP, in NVMe Association (which corresponds to the session in the iSCSI and which hereinafter is referred to as the “session” unless it is necessary to distinguish the protocols) which is a logical connection between the host server and the storage system, an NVMe request/response is exchanged using one or more TCP connections (NVMe/TCP connections) (hereinafter, iSCSI and NVMe/TCP are simply referred to as the “connections” in the present specification unless it is necessary to distinguish the protocols). As a result, in the NVMe/TCP, storage access with an increased degree of input/output (IO) parallelism becomes possible, and storage access with broader bandwidth in lower delay can be achieved compared to that in iSCSI.
JP 2023-142021 A discloses a smart network interface card (SmartNIC)-utilized storage system in which a SmartNIC is installed in a controller of a storage system and protocol processing is performed by the SmartNIC. The SmartNIC is a network interface device equipped with a central processing unit (CPU) and a memory, and can operate a general-purpose operating system (OS) or an open source software (OSS) protocol server.
By operating protocol-related software on the SmartNIC separately from a storage controller, a load of the controller can be reduced to improve storage performance, and the software on the SmartNIC can be modified without much modification of the controller to cope with new protocols and communication functions.
In a protocol that improves storage access performance by increasing the degree of IO parallelism like the NVMe/TCP, the number of connections per initiator increases as compared with a protocol in which access is made by a single connection like the iSCSI. This is because the initiator normally operates on multiple central processing unit (CPU) cores, and the CPU cores share storage access processing of multiple connections, so that improvement in storage access performance can be expected. Therefore, the same number of connections as the number of CPU cores are established in order to achieve the highest access performance. However, in recent years, the number of CPU cores exceeds 100 in some cases, and in this case, more than 100 connections are required for establishing one session in the NVMe/TCP.
JP 2023-142021 A does not disclose a detailed operation at the time of session establishment. Since session management in the storage system needs to be performed by the controller, in the session establishment in the iSCSI in which a single connection is assumed, it is natural that the SmartNIC notifies the controller every time a connection is established, and the connection, that is, the session, is managed in the controller.
However, when such a configuration is applied to the NVMe/TCP, every time a large number of connections (NVMe/TCP connections) of one session (NVMe association) are established, the SmartNIC notifies the controller to manage the large number of connections as the session in the controller.
As a result, it takes time to establish one session. Furthermore, in a case where the initiator sequentially establishes connections, that is, the initiator starts the next connection processing after one connection processing is completed, it takes more time to establish a session. Depending on a configuration and requirements of the initiator, there is a possibility that delayed session establishment is regarded as a session establishment failure.
That is, in a storage protocol in which one session is consist of multiple connections, a time required for session establishment becomes a critical issue.
One aspect of the present invention is a storage system that communicates with a host in a session including one or more connections, the storage system including a front-end interface, a processor, and a storage area, in which the storage area stores session management information for managing the session of the communication with the host, the front-end interface stores connection management information for managing the connection of the session, and the front-end interface controls access from the host by referring to the connection management information.
According to one aspect of the present invention, it is possible to shorten a time required for establishment of a session including a plurality of connections.
Hereinafter, a configuration implemented by general hardware will be described as a configuration of an information system, but a configuration of the present invention is not limited to hardware, and a part of or the entire hardware may be implemented by software using a virtualization technology to secure flexibility at the time of changing the information system. In addition, a description will be given assuming that the number of components such as a storage area, a central processing unit (CPU), and a bus is one unless otherwise specified, but a plurality of components may be prepared to achieve redundancy and load distribution, or a component may be divided to improve convenience and cost performance. The bus may be divided to facilitate arbitration, or performance may be improved using a broadband bus called Peripheral Component Interconnect-Express (PCIe).
The storage area is also referred to as a memory, and is generally an area that stores information and is configured by a dynamic random access memory (DRAM) or the like. A storage capacity, access speed, and cost may be optimized by hierarchizing memories using, for example, a static random access memory (SRAM), a flash memory, a hard disk drive (HDD), or the like. In addition, the storage area necessary for a computer may be saved by placing a part of or the entire storage area at a remote location and accessing the storage area via a network connected via an input/output device to use the storage area as appropriate.
The following description of the configuration is based on a general configuration of a computer including a CPU, a storage area, an input/output device, and a bus. Therefore, even without describing individually, a program to be executed by the CPU and data are stored in the storage area to control a behavior of the computer. In addition, a device that is generally widely used in a computer may be added to improve convenience. For example, a serial bus may be added, and a user interface device such as a keyboard or a display may be added to improve operability of the information system by an operator, or convenience may be improved by adopting a configuration in which the operator accesses from a remote location via a network.
In a storage system according to an embodiment of the present invention, at the time of the first connection establishment among a plurality of connections constituting a session, a front-end interface (FE I/F) notifies a processor of a storage control block of the information. The storage control block creates management information of a new session including the notified first connection. Further, information of each connection is managed by the FE I/F, and is managed in association with session management information of the storage control block. According to an embodiment of the present invention, in the storage system equipped with the FE I/F, it is possible to shorten a time required for session establishment when a protocol in which one session is constituted by a plurality of connections is used.
1 FIG. 200 1 30 50 200 1 50 3 is an overall configuration diagram of an information system according to a first embodiment. The information system includes one or more host servers, a storage system, a network, and a management server. The host server, the storage system, and the management serverare connected to each other via a network.
1 20 10 10 100 1 100 10 100 10 The storage systemincludes one or more storage device unitsand a storage control device. The storage control deviceincludes one or more storage control blocks. In order to improve availability of the storage system, a plurality of storage control blocksmay be mounted on the storage control device, and each storage control blockmay be powered by a dedicated power supply. In addition, a plurality of storage control devicesmay be mounted and interconnected via a host channel adapter (HCA) network to improve performance by improving the availability and distributing a load.
10 100 100 10 100 10 100 1 FIG. The storage control deviceor the storage control blockis also generally referred to as a storage controller or simply a controller, and provides a storage function. Althoughillustrates a configuration example in which two storage control blocksare held in the storage control deviceto achieve redundancy, a simple configuration in which only one storage control blockis provided and also serves as the storage control devicemay be adopted. In this case, the storage control blockserves as the storage controller.
100 120 110 110 The storage control blockincludes a back-end interface (BE I/F)and one or more FE I/Fs. In this example, the FE I/Fis a smart network interface card (SmartNIC).
20 21 21 The storage device unitincludes one or more PDEVs. The PDEVmeans a physical device, and for example, a hard disk drive (HDD), another storage device (non-volatile storage device), a flash memory device such as a solid state drive (SSD), a dynamic random access memory (DRAM) equipped with a battery, or the like is used.
20 21 21 The storage device unitmay include different types of PDEVsto improve failure tolerance and optimize performance and cost through diversity. In addition, a redundant array of inexpensive disks (RAID) group including a plurality of PDEVsof the same type may be configured, and data may be stored according to a predetermined RAID level to optimize the failure tolerance and capacity according to a requirement.
3 200 1 50 3 The networkis, for example, a network for performing mutual communication among the connected host server, storage system, and management server, and for example, a local area network (LAN) is used. However, the networkmay be logically configured by using a virtual network technology and may be configured by mixing different types of networks to suppress network installation cost, or to suppress complication of cable wiring by using a wireless technology.
200 1 200 1 The host serveris a device that is connected to the storage systemand performs storage access. Specifically, the host servertransmits a connection establishment/disconnection request with respect to the storage system, a setting change request, and a storage data input/output request (a data write request and a data read request).
50 1 The management serveris a personal computer (PC) or a server including a user interface such as a graphical user interface (GUI) or a command line interface (CLI), and provides a function for a user or the operator to control and monitor the storage system.
2 FIG. 100 100 120 110 103 104 is a configuration diagram of the storage control block. The storage control blockincludes the BE I/F, one or more FE I/Fs, a central processing unit (CPU), and a storage area, which are connected to each other via a bus.
120 110 120 20 110 200 1 The BE I/Fand the FE I/Fcorrespond to input/output devices in a computer. The BE I/Fis an interface for communicating with the storage device unit. The FE I/Fis a SmartNIC which is a programmable network interface, on which a part of a storage protocol when the host serveraccesses the storage systemoperates.
In the present embodiment, Non-Volatile Memory Express over Transmission Control Protocol (NVMe over TCP) will be described as an example of the storage protocol, but a storage access method with optimized cost and access speed according to requirements of the information system may be selected using another storage protocol such as internet small computer system interface (iSCSI).
1 1 The storage systemtreats a logical device (LDEV) obtained by bundling and cutting the physical devices (PDEV) with RAID or the like as a basic unit, and some terms of the NVMe in the present specification will be described. A Host is a side (corresponding to an initiator in the iSCSI) using the storage system, is uniquely specified by a Host ID, and has a name of Host NQN.
1 A Subsystem provides one or more devices in the storage system(a storage server which corresponds to a target in the iSCSI). The Subsystem includes one or more Controllers and one or more Namespaces. The Subsystem is uniquely specified by a Subsystem ID and has a name of Subsystem NQN.
The Controller (NVMe controller) is an interface for accessing the Subsystem and is identified by a Controller ID. The Namespace is a logical device provided by the Subsystem and is identified by a Namespace ID. A Port (Fabric port) is a network interface for accessing the Controller, and is identified by a Port ID.
Association is a logical connection between the Host and the Subsystem. The Host accesses the Port to establish association with the Controller. When the Host accesses the Subsystem, one or more Namespaces identified by the Namespace ID, that is, the logical devices, can be referred to.
In the NVMe/TCP, a management queue connection and an arbitrary number of IO queue connections are established for access (Association) to one Subsystem. The queue connection is established first, and then the IO queue connection is established. The Namespace as an access destination is designated at the time of IO (Read/Write) access.
104 0 103 0 10 20 30 100 The storage areastores a storage control program group Pexecuted by the CPUand management information managed by the storage control program group P. The management information includes a Subsystem management table T, a Namespace management table T, and a Controller management table T. Details of the management information and details of processing in the storage control blockare described below.
3 FIG. 110 110 illustrates a configuration example of the FE I/F. In this example, the FE I/Fis a SmartNIC. The SmartNIC is a highly functional network card that can program (add) a function desired by the user by software or hardware, and is a front-end interface device. The SmartNIC can execute functions of a transport layer and an application layer, for example.
The following description of the SmartNIC can also be applied to an interface device having a programmable logic circuit configuration such as a field programmable gate array (FPGA) in addition to an interface device that can program a function by software executed by a processor. The FPGA may include a logic circuit that implements each function implemented by a program and a cache memory used in computation.
110 111 112 113 114 111 112 113 114 The FE I/Fincludes a network I/F, an internal I/F, a CPU, and a storage area. The network I/F, the internal I/F, the CPU, and the storage areaare connected to each other by a communication path such as a bus.
111 200 111 200 110 The network I/Fis an interface device for communicating with the host server. The network I/Fis used as a network port (hereinafter, referred to as a port) for communication for which an IP address is set. The IP address is an identifier on the network, and the host servercommunicates with the FE I/Fthrough the IP address set for the port.
112 100 112 100 The internal I/Fis an interface device that communicates with the storage control block. The internal I/Fis connected to the CPU or the like of the storage control blockby, for example, Peripheral Component Interconnect-Express (PCIe).
113 110 114 113 114 10 50 60 The CPUcontrols an operation of the FE I/F. The storage areastores a program and data used for operation control of the CPU. The storage areastores an interface processing program group P, a Controller cache table T, and a connection management table T.
10 113 200 1 The interface processing program group Pis executed by the CPUto control a connection for communication between the host serverand the storage systemand a session including one or more connections. In the present embodiment, Transmission Control Protocol/Internet Protocol (TCP/IP) connection is assumed as a connection type, and NVMe/TCP Association is assumed as a session.
10 110 10 The interface processing program group Pconfigures, for each port of the FE I/F, a TCP port for a Listen service that accepts a connection request. The interface processing program group Pestablishes a TCP connection when a connection request for the Listen service is received, and then accepts a session request from the host server and establishes a session.
10 110 100 110 The interface processing program group Pincludes an operating system (OS) of the FE I/F, and communicates with the storage control blockto perform initialization, resource management, failure management, and task scheduling of the FE I/F.
10 200 10 200 100 10 100 The interface processing program group Preceives various requests such as Read/Write from the host serveror the like, and processes a block protocol included in the request. The interface processing program group Pprocesses a block access protocol such as the NVMe/TCP received from the host server, and converts the block access protocol into a block access command request for the storage control block. The interface processing program group Pcommunicates with the storage control block, and performs processing such as data writing and reading on the LDEV constituting the Namespace of the Subsystem in response to the various requests described above.
4 FIG. 200 200 201 202 203 201 202 203 is an example of a configuration diagram of the host server. The host serverincludes a network I/F, a CPU, and a storage area. The network I/F, the CPU, and the storage areaare connected to each other by a communication path such as a bus.
201 1 50 202 200 203 202 203 41 43 203 The network I/Fis an interface device for communicating with the storage systemand the management server. The CPUcontrols an operation of the host server. The storage areastores a program and a table used for operation control of the CPU. The storage areastores an application program Pand a storage connection program P. The storage areaalso stores information used by the program.
41 202 1 43 43 41 1 The application program Pis executed by the CPUto read and write data in the Namespace of the Subsystem provided by the storage systemvia the storage connection program P. The storage connection program Preceives various requests such as Read/Write from the application program Pand reads/writes data from/to the storage system.
5 FIG. 50 50 51 52 53 201 202 203 51 1 200 is an example of a configuration diagram of the management server. The management serverincludes a network I/F, a CPU, and a storage area. The network I/F, the CPU, and the storage areaare connected to each other by a communication path such as a bus. The network I/Fis an interface device for communicating with the storage systemand the host server.
52 50 53 52 53 50 50 1 1 50 1 The CPUcontrols an operation of the management server. The storage areastores a program and data used for operation control of the CPU. The storage areastores a management server program P. The management server program Pincludes a user interface such as a GUI or a CLI, and provides a function for the user or operator to control and monitor the storage system. When a control instruction or a monitoring instruction for the storage systemis received from the user, the management server program Pcommunicates with the storage systemto perform control or monitoring.
100 Hereinafter, the management information held in the storage control blockwill be specifically described. In the following description, the management information is expressed as a table, but an expression suitable for improving a function or performance such as failure tolerance, such as Key-Value, may be used. In addition, an expression in which a plurality of values is held in one field of one entry in a table is used in some cases, but table division or entry division may be performed to hold information in a plurality of tables or a plurality of entries, so that normalization according to performance and function requirements may be performed.
6 FIG. 6 FIG. 10 10 110 10 101 102 103 101 1 102 103 110 illustrates a configuration example of the Subsystem management table T. The Subsystem management table Tassociates the Subsystem with the Subsystem NQN and the port of the FE I/F. In the configuration example illustrated in, the Subsystem management table Tincludes a Subsystem ID field C, a Subsystem NQN field C, and a port ID field C. The Subsystem ID field Cstores an identifier of a corresponding Subsystem in the storage system. The Subsystem NQN field Cindicates an NVMe qualified name (NQN) which is an identifier of the Subsystem in the NVMe/TCP protocol. The port ID field Cindicates an identifier of the port of the FE I/Ffor the host to access the Subsystem.
7 FIG. 20 20 illustrates a configuration example of the Namespace management table T. Each Subsystem provides one or more Namespaces to the Host. Only one logical device (LDEV) is allocated to one Namespace. The Namespace management table Tmanages a relationship therebetween.
7 FIG. 20 201 202 203 201 202 1 203 In the configuration example illustrated in, the Namespace management table Tincludes a Subsystem ID field C, a Namespace ID field C, and an LDEV ID field C. Each entry indicates information of one Namespace. The Subsystem ID field Cindicates an ID of the Subsystem having each Namespace. The Namespace ID field Cindicates an ID for identifying a Namespace in the Subsystem. Each Namespace is identified in the storage systemby a combination of the Subsystem ID and the Namespace ID. The LDEV ID field Cindicates an ID of the LDEV constituting each Namespace. In each Subsystem, the Namespace and the LDEV are in a one-to-one correspondence.
8 FIG. 30 30 30 illustrates a configuration example of the Controller management table T. The Controller management table Tis an interface for access from the host, and the Controller management table Tmanages information of the current Association. When the Association is made, a new entry is added, and the entry is deleted when the Association is terminated.
8 FIG. 30 301 302 303 304 305 306 307 308 In the configuration example illustrated in, the Controller management table Tincludes a Controller ID field C, a Subsystem ID field C, a Port ID field C, a Host NQN field C, a Host ID field C, a protocol field C, a number of scheduled queues field C, and a number of connections field C. Each entry indicates information of one current Association.
301 1 302 303 110 The Controller ID field Cindicates an ID of the Controller accessed by the host in the Association. The Controller ID identifies the Controller in the storage system. The Subsystem ID field Cindicates an ID of the Subsystem including the Controller. The Port ID field Cindicates an ID of the port of the FE I/Fas an access destination in the Association.
304 305 306 The Host NQN field Cindicates an NQN of the host as an access source in the Association. The Host ID field Cindicates an ID of the host as the access source in the Association. The protocol field Cindicates a type of a communication protocol used in the Association. In this example, the NVMe/TCP is assumed. As another example, the FC-NVMe or the iSCSI may be used.
307 308 The number of scheduled queues field Cindicates the maximum value of the number of IO queues in the Association. Since the IO queue is set for each IO queue connection (the management queue connection is not included), the number of scheduled queues corresponds to the number of scheduled IO queue connections. For example, a requested value from the host is set as the number of scheduled queues. An allowable maximum 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 equal to or less than the allowable maximum value. The number of connections field Cindicates the current number of IO queue connections in the Association. This value corresponds to the current number of IO queues in the Association.
110 110 50 60 114 3 FIG. Next, the management information held in the FE I/Fwill be more specifically described. As illustrated in, the FE I/Fstores the Controller cache table Tand the connection management table Tin the storage area.
9 FIG. 50 50 30 100 50 110 110 illustrates a configuration example of the Controller cache table T. The Controller cache table Tincludes cache data and additional information of the Controller management table Theld and managed by the storage control block. The Controller cache table Tmay include only information of the Association that uses the port of the FE I/For may include information of the Association that uses the port of another FE I/F.
110 50 100 50 110 100 In the former case, resources and labor necessary for management can be saved because the number of management targets can be reduced. On the other hand, in the latter case, information necessary for processing such as redundancy or exclusion in cooperation with a plurality of FE I/Fscan be confirmed without an additional inquiry, so that the processing can be simplified. In addition, since the Controller cache table Tis a cache of information held by the storage control block, a part of or the entire Controller cache table Tmay be omitted, and computer resources required by the FE I/Fmay be saved by inquiring the storage control blockabout necessary information.
9 FIG. 50 501 502 503 504 505 506 507 508 509 In the configuration example illustrated in, the Controller cache table Tincludes a Controller ID field C, a Subsystem ID field C, a Port ID field C, a Host NQN field C, a Host ID field C, a protocol field C, a number of scheduled queues field C, a number of connections fields C, and an available Namespace ID field C.
501 508 301 308 30 30 50 9 FIG. Each entry indicates information of one current Association (session). Data in the fields Cto Cis a cache of data in the fields Cto Chaving the same names in the Controller management table T, and these pieces of data are the same as each other. Some pieces of data may be omitted in the cache of the Controller management table Theld in the Controller cache table Tillustrated in.
509 509 100 110 The available Namespace ID field Cindicates an ID of the Namespace, that is, the LDEV, which can be accessed by the host in the Association. One Association enables access to one or more designated Namespaces (LDEVs). Information in the available Namespace ID field Cis passed from the storage control blockto the FE I/F.
10 FIG. 60 60 60 60 110 60 110 110 illustrates a configuration example of the connection management table T. The connection management table Tmanages TCP information of the Controller. Each entry indicates information of one connection. The connection management table Tmanages both the management queue connection and the IO queue connection. The connection management table Tmanages information of a connection via the FE I/Fholding the connection management table T, and does not need to include information of other FE I/Fs. In the former case, resources and labor necessary for management can be saved because the number of management targets can be reduced. On the other hand, in the latter case, information necessary for processing such as redundancy or exclusion in cooperation with a plurality of FE I/Fscan be confirmed without an additional inquiry, so that the processing can be simplified.
10 FIG. 60 601 602 603 604 605 606 607 608 In the configuration example illustrated in, the connection management table Tincludes a connection ID field C, a Controller ID field C, a host IP address field C, a host port number field C, a target IP address field C, a target port number field C, a queue ID field C, and a connection configuration field C.
601 60 601 602 The connection ID field Cis an identifier of an entry in the connection management table T. The connection ID field Cmay be omitted. The Controller ID field Cindicates the Controller ID in the Association including the connection.
603 604 605 606 100 The host IP address field Cand the host port number field Cindicate an IP address and a TCP port number of the host of the connection, respectively. These values are designated by the host. The target IP address field Cand the target port number field Cindicate an IP address and a TCP port number of the target. These values are set by the storage control block.
607 608 The queue ID field Cindicates an ID of a queue allocated to the connection. “0” is set for a management queue, and an integer value of “1” or more is sequentially assigned to the IO queue. The connection configuration field Cindicates configuration information for each connection. In this example, configuration information of a keepalive function, specifically, a KeepAliveTimeout time, is registered. The KeepAliveTimeout time is a time for waiting for the next new request without closing the connection after one request is completed, and a unit of the time is, for example, milliseconds.
608 The request may be limited to a specific request such as a KeepAlive command to facilitate understanding of processing. As another example of the connection configuration field C, a processing priority of a corresponding connection with respect to another connection may be set such that only a specific connection can be prioritized or subordinated to enable resource use suitable for the request.
100 110 Hereinafter, processing in the storage control blockand the FE I/Fwill be described. In the following description, the order of processing may be changed within a range in which consistency can be maintained, or the preceding and subsequent processing may be combined to simplify processing and reduce the number of communications.
100 110 100 110 100 110 100 110 As for a parameter used in the processing in the storage control blockand the FE I/F, in a case where the parameter is referred to as information exchanged between the storage control blockand the FE I/F, the information is used, and otherwise, information set in advance in the storage control blockand the FE I/Fis used. Some or all of parameters included in the information exchanged through communication may be set in advance in the storage control blockand the FE I/Fto save communication and processing. Conversely, information may be added to communication to reduce the number of parameters to be set in advance, thereby facilitating setting change.
100 110 110 100 11 FIG. 12 FIG. 13 FIG. First, initialization processing in the storage control blockand the FE I/Fwill be described.is a sequence diagram of the initialization processing,is a flowchart of initialization processing in the FE I/F, andis a flowchart of initialization processing in the storage control block.
11 13 FIGS.to 100 10 20 110 100 Before starting the initialization processing illustrated in, the storage control blockcreates the Subsystem management table Tand the Namespace management table Tin advance according to a design or a setting made by the operator. In addition, the FE I/Fis configured in advance for initializing communication with the storage control blockaccording to a design or initial setting.
11 13 FIGS.and 11 FIG. 12 FIG. 13 FIG. 100 110 21 110 110 100 11 22 110 100 11 100 110 22 As illustrated in, the storage control blockactivates the FE I/F(S). The activation of the FE I/Fis performed, for example, by supplying power. Next, as illustrated in, the activated FE I/Fand the storage control blockestablish communication therebetween (Sand S). That is, as illustrated in, the activated FE I/Festablishes communication with the storage control block(S), and as illustrated in, the storage control blockestablishes communication with the activated FE I/F(S).
11 13 FIGS.and 11 12 FIGS.and 100 110 23 110 110 100 12 Next, as illustrated in, the storage control blocktransmits a port setting instruction to the FE I/F(S). The port setting instruction designates the IP address and the TCP port number of each port of the FE I/F. As illustrated in, the FE I/Freceives the port setting instruction from the storage control block, and sets the IP address and the TCP port number of each port (S).
110 100 13 When the port setting is completed, the FE I/Ftransmits a port setting completion notification to the storage control block(S).
11 13 FIGS.and 110 24 100 110 25 As illustrated in, after receiving the port setting completion notification from the FE I/F(S), the storage control blocktransmits a port listening start instruction to the FE I/F(S).
11 12 FIGS.and 110 100 14 15 110 110 100 16 As illustrated in, the FE I/Freceives the port listening start instruction from the storage control block(S), and listens for communication from the host server (S). For example, the FE I/Factivates NVMe/TCP target software. Thereafter, the FE I/Ftransmits a port listening completion notification to the storage control block(S).
11 13 FIGS.and 100 110 26 110 27 As illustrated in, the storage control blockreceives the port listening completion notification from the FE I/F(S), and listens for an instruction from the operator and a request from the FE I/F(S).
200 100 200 1 Next, connection establishment processing between the host serverand the storage control blockwill be described. In the NVMe/TCP, the host serverand the storage systemestablish a management queue connection and an arbitrary number of IO queue connections for access (Association) to one Subsystem. The management queue connection is established first, and then some IO queue connections are established. The Namespace (LDEV) as the access destination is designated at the time of IO (Read/Write) access.
14 FIG. 14 FIG. 110 200 31 60 50 is a sequence diagram of management queue connection establishment processing.illustrates a processing sequence in a case where no error occurs during the processing. First, the FE I/Freceives a connection request from the host server(S). The connection request includes information stored in the connection management table Tand information stored in the Controller cache table T.
60 110 100 For example, the information for the connection management table Tcan include the queue ID, the host IP address, the host port number, and the connection configuration information. The Controller ID is omitted in the case of a management queue connection request. The queue ID is “0” in the case of the management queue connection. The connection configuration information indicates the KeepAliveTimeout time. The target IP address and the target port number can be acquired by the FE I/Ffrom the storage control block.
50 110 The information for the Controller cache table Tcan include the Subsystem NQN, the Host NQN, the Host ID, the requested value of the number of scheduled queues, and the number of connections (the current number of IO queues). In the case of the management queue connection, the number of connections is “0”. The Port ID is held as a set value in the FE I/F.
110 60 32 110 33 Next, the FE I/Fadds an entry to the connection management table T(S). At this time, a value (for example, 0xffff) indicating no input is set as the Controller ID. Further, the FE I/Ftransmits a Controller addition request to the storage control block (S).
30 200 The Controller addition request includes information stored in the Controller management table T. Specifically, the Controller addition request includes information including the Subsystem NQN, the Port ID, the Host NQN, the Host ID, the protocol, the number of scheduled queues, and the number of connections. In the case of the management queue connection, the number of connections is “0”. In addition, the protocol indicates a communication protocol between the host serverand the FE I/F, and in this example, the NVMe over TCP is assumed.
100 30 34 Upon receiving the Controller addition request, the storage control blockadds a new entry to the Controller management table T, secures a hardware resource such as a memory area or a CPU core, and sets the Controller ID (S).
100 10 30 The storage control blocksearches the Subsystem management table Tfor an entry whose Subsystem NQN matches the Subsystem NQN included in the Controller addition request, acquires the Subsystem ID of the corresponding entry, and sets the Subsystem ID in the Controller management table T. As described above, the set protocol is the NVMe over TCP, and the number of connections set for the management queue connection is 0. The requested value is set as the number of scheduled queues. In a case where the requested value is larger than the preset allowable maximum value, the allowable maximum value may be set.
10 10 10 In the present specification, as described above, searching for an entry of which a value of a specific field (in the above example, the Subsystem NQN) matches a value (in the above example, the Subsystem NQN included in the Controller addition request) given by the same name in a specific table (in the above example, the Subsystem management table T) and acquiring a value of another field (in the above example, the Subsystem ID) of the entry is simply expressed as acquiring another value from the specific table by using the value of the specific field (in the above example, the Subsystem ID is acquired from the Subsystem management table Tby using the Subsystem NQN) or acquiring another value by searching for the value of the specific field from the specific table (in the above example, the Subsystem NQN is searched from Subsystem management table T, and the Subsystem ID is acquired).
100 20 35 100 110 36 Next, the storage control blocksearches the Namespace management table Tfor an entry whose Subsystem ID matches the Subsystem ID described above, and acquires the Namespace ID of the matching entry as an available Namespace ID list (S). Next, the storage control blocktransmits a Controller addition response including specific information to the FE I/F(S).
The Controller addition response includes the Controller ID, the set number of scheduled queues, and the available Namespace ID list. The Namespace ID list may be defined as a sequential series starting from 1, for example, and the number of Namespace IDs may be returned to reduce a communication data amount.
100 110 37 50 60 38 Upon receiving the response from the storage control block, the FE I/Fadds an entry to the Controller cache table (S), and sets the Controller ID of the entry added to the Controller cache table Tfor the corresponding entry of the connection management table T(S).
110 39 200 40 200 The FE I/Fprepares the hardware resource such as the memory area or the CPU core necessary for processing in the management queue connection (S), and returns a connection completion response to the host server(S). The connection complete response includes the set Controller ID, the set number of schedule queues, and the available Namespace ID list. In a case where an error occurs during the processing, an error response is transmitted to the host server. In addition, the management queue connection may be established a plurality of times. In this case, the management queue connection is treated as different Association, and is managed as a connection with a different Controller ID.
15 FIG. 15 FIG. 110 200 45 60 50 is a sequence diagram of IO queue connection establishment processing belonging to the corresponding Association after the management queue connection is established.illustrates a processing sequence in a case where no error occurs during the processing. First, the FE I/Freceives a connection request from the host server(S). The connection request includes information stored in the connection management table Tand information stored in the Controller cache table T.
60 110 100 For example, the information for the connection management table Tcan include the Controller ID, the queue ID, the host IP address, the host port number, and the connection configuration information. A value returned at the time of establishment of the management queue connection is used as the Controller ID. The queue ID is an integer value of “1” or more in the case of the IO queue connection. The connection configuration information indicates the requested KeepAliveTimeout time. The target IP address and the target port number can be acquired by the FE I/Ffrom the storage control block.
50 50 The information for the Controller cache table Tcan include the Controller ID. The corresponding Association can be specified by searching for an entry of the Controller cache table Tthat matches the Controller ID indicated from the host.
110 60 46 110 50 47 Next, the FE I/Fadds an entry to the connection management table T(S). Next, the FE I/Fsearches the Controller cache table Tfor the designated Controller ID (S).
50 110 100 48 When an entry whose Controller ID matches exists in the Controller cache table T, the FE I/Ffurther transmits a connection addition request to the storage control block(S). The connection addition request includes information regarding 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 of the entry whose Controller ID matches. In a case where the entry does not exist or the current number of connections exceeds the number of scheduled queues, it is determined that an error has occurred.
100 30 110 49 100 50 Upon receiving the connection addition request, the storage control blocksearches the Controller management table Tfor the corresponding entry with the Controller ID, and updates the number of connections of the entry with the corresponding Controller ID to a value of the number of connections included in the connection addition request from the FE I/F(S). Thereafter, the storage control blockreturns a normal response (S). In a case where the entry does not exist or the number of connections exceeds the number of scheduled queues by the current IO queue connection, an error response is returned.
100 110 50 30 51 Upon receiving the normal response from the storage control block, the FE I/Fupdates the number of connections in the Controller cache table Tso as to match the Controller management table T(S).
110 52 200 53 200 The FE I/Fprepares a hardware resource such as the memory area or the CPU core for the management queue connection (S), and returns a connection completion response to the host server(S). The connection completion response includes the Controller ID. In a case where an error occurs during the processing, an error response is transmitted to the host server.
110 100 110 14 15 FIGS.and 14 15 FIGS.and 16 16 FIGS.A andB Next, processing in each of the FE I/Fand the storage control blockin the connection establishment processing described with reference towill be described with reference to a flowchart. In the following description, the same steps as those inare denoted by different reference numerals.are flowcharts of connection establishment processing in the FE I/F.
110 200 61 The FE I/Freceives a connection request for the management queue connection or the IO queue connection from the host server(S). Information included in the connection request is as described above.
110 60 62 110 63 Next, the FE I/Fadds a corresponding entry to the connection management table T(S). At this time, the Controller ID is not input. Next, the FE I/Fdetermines whether or not the queue ID of the connection request is “0” (S). If the queue ID is “0”, the connection request is a request for the management queue connection, and if the queue ID is an integer larger than 0, the connection request is a request for the IO queue connection.
63 110 100 100 64 14 FIG. In a case where the queue ID is “0”, that is, in a case where the connection request is a request for the management queue connection (S: YES), the FE I/Ftransmits a Controller addition request to the storage control block, and receives a Controller addition response including the Controller ID from the storage control block(S). Information included in the Controller addition request and the Controller addition response is as described with reference to.
65 110 200 66 65 110 50 67 In a case where the Controller addition response is an error response (S: YES), the FE I/Freturns the error response to the host server(S). In a case where the Controller addition response is not an error response (S: NO), the FE I/Fadds an entry to the Controller cache table T(S).
110 50 60 68 110 69 200 70 14 FIG. Further, the FE I/Fsets the Controller ID of the entry added to the Controller cache table Tfor the corresponding entry of the connection management table T(S). The FE I/Fprepares a hardware resource such as the memory area or the CPU core for the management queue connection (S), and returns a connection completion response to the host server(S). Information included in the connection completion response is as described with reference to.
63 63 71 71 110 50 16 FIG.B In step S, in a case where the queue ID is an integer larger than “0”, that is, in a case where the connection request is a request for the IO queue connection (S: NO), the processing proceeds to step Sofvia a connector A. In step S, the FE I/Fsearches the Controller cache table Tfor the Controller ID.
71 110 200 78 50 71 110 72 In a case where the corresponding Controller ID does not exist (S: NO), the FE I/Freturns an error response to the host server(S). In a case where the corresponding Controller ID exists in the Controller cache table T(S: YES), the FE I/Fdetermines whether or not a value obtained by adding 1 to the number of connections (the current number of IO queues) indicated by the connection request exceeds the number of scheduled queues (S).
72 110 200 78 72 110 100 73 In a case where the value obtained by adding 1 to the number of connections indicated by the connection request exceeds the number of scheduled queues (S: YES), the FE I/Freturns an error response to the host server(S). Disconnection processing triggered by the storage system described below may be performed. In a case where the value obtained by adding 1 to the number of connections indicated by the connection request is equal to or less than the number of scheduled queues (S: NO), the FE I/Ftransmits a connection addition notification to the storage control blockand receives a response thereto (S).
100 74 110 200 78 100 74 110 50 75 In a case where an error response is received from the storage control block(S: YES), the FE I/Freturns the error response to the host server(S). In a case where a normal response is received from the storage control block(S: NO), the FE I/Fupdates the number of connections in the Controller cache table T(S).
110 76 200 77 15 FIG. Next, the FE I/Fprepares a hardware resource such as the memory area or the CPU core for the management queue connection (S), and returns a connection completion response to the host server(S). Information included in the connection completion response is as described with reference to.
100 100 100 110 75 76 17 FIG. 17 FIG. 16 FIG.B 17 16 FIGS.andB 14 15 FIGS.and Next, processing in the storage control blockwill be described.is a flowchart of connection establishment processing in the storage control block. Reference numerals inpartially overlap the reference numerals in, but in, the same reference numerals denote different steps from each other. The storage control blockreceives a request from the FE I/F(S), and determines whether the request is a Controller addition request or a connection addition notification (S). Information included in each addition request is as described with reference to.
76 100 10 77 In a case where the received request is the Controller addition request (S: Controller addition request), the storage control blocksearches the Subsystem management table Tfor an entry whose Subsystem NQN matches the Subsystem NQN included in the Controller addition request, and acquires the Subsystem ID of the corresponding entry (S).
100 30 78 100 Next, the storage control blockadds a new entry to the Controller management table T, secures a hardware resource such as the memory area or the CPU core, and sets the Controller ID (S). A protocol at this time is assumed to be the NVMe over TCP. The storage control blocksets “0” as the number of connections and sets the requested value as the number of scheduled queues. However, in a case where the requested value is larger than the allowable maximum value, the allowable maximum value may be set.
100 20 79 100 110 80 Next, the storage control blocksearches the Namespace management table Tfor a corresponding Subsystem ID and acquires the available Namespace ID list (S). Next, the storage control blockreturns a Controller addition response to the FE I/F(S). The Controller addition response includes the Controller ID, the set number of scheduled queues, and the available Namespace ID list.
76 76 100 30 81 82 100 110 87 In step S, in a case where the received request is the connection addition request (S: connection addition request), the storage control blocksearches the Controller management table Tfor an entry with the corresponding Controller ID (S). In a case where the entry does not exist (S: NO), the storage control blockreturns an error response to the FE I/F(S).
82 100 110 83 84 100 110 87 In a case where the entry exists (S: YES), the storage control blockcompares the number of scheduled queues of the entry with the number of connections (the current number of IO queues) indicated by the request from the FE I/F(S). In a case where a value obtained by adding 1 to the number of connections exceeds the number of scheduled queues, that is, in a case where the number of IO queues exceeds the number of scheduled queues due to the current IO queue connection (S: YES), the storage control blockreturns an error response to the FE I/F(S).
84 100 30 85 110 86 In a case where the number of IO queues does not exceed the number of scheduled queues due to the current IO queue connection (S: NO), the storage control blockupdates the number of connections of the corresponding entry in the Controller management table Tto a value obtained by adding 1 to the number of connections (S), and returns a normal response to the FE I/F(S).
1 200 18 FIG. Next, processing in the storage systemfor IO access (read access or write access) from the host serverwill be described.is a sequence diagram of IO access processing.
110 200 91 The FE I/Freceives an IO command from the host server(S). The IO command is a read command or a write command. The IO command includes a command type (read or write), the Namespace ID, an access destination address, an access destination size, and write data in the case of the write command.
110 60 92 110 100 93 The FE I/Facquires the Controller ID and the Namespace ID list corresponding to the IO command from the connection management table T(S). The FE I/Fadds the acquired Controller ID and transfers the IO command to the storage control block(S).
110 100 30 94 100 20 95 Upon receiving the Controller ID and the IO command from the FE I/F, the storage control blockacquires the corresponding Subsystem ID from the Controller management table T(S). Further, the storage control blocksearches the Namespace management table Tfor a combination of the Subsystem ID and the Namespace ID to acquire the corresponding LDEV ID (S).
100 96 Next, the storage control blockperforms access permission verification on the access destination address and the access destination size (S). The verification is general storage access control for determining user authority or whether another host server is using.
100 110 97 Next, the storage control blockreturns a response to the FE I/F(S). In a case where a result of the access permission verification indicates an error, an error response is returned. In a case where the result of the access permission verification does not indicate an error, read data is returned in response to the read command, and a success response is returned in response to the write command.
110 100 200 98 The FE I/Freceives the response from the storage control blockand transfers the response to the host server(S).
200 110 The host servermay transmit the write command including no write data to the FE I/F, and may transmit the write command including the write data after receiving a writable response. In this case, the above-described sequence is performed twice.
110 100 18 FIG. 18 FIG. Next, processing in each of the FE I/Fand the storage control blockin the IO access processing described with reference towill be described with reference to flowcharts. In the following description, the same steps as those inare denoted by different reference numerals.
19 FIG. 18 FIG. 110 110 101 110 60 102 is a flowchart of IO access processing in the FE I/F. First, the FE I/Freceives an IO command from the host server (S). Information included in the IO command is as described with reference to. Next, the FE I/Facquires the Controller ID and the Namespace ID list corresponding to the IO command from the connection management table T(S).
103 110 200 107 In a case where the Namespace ID of the IO command is not included in the acquired Namespace ID list (S: NO), the FE I/Freturns an error response to the host server(S).
103 110 100 104 110 100 105 200 106 In a case where the Namespace ID of the IO command is included in the acquired Namespace ID list (S: YES), the FE I/Ftransmits the acquired Controller ID and the IO command to the storage control block(S). Thereafter, the FE I/Freceives a response from the storage control block(S), and returns the response to the host server(S). As described above, the response is an error response or a normal read or write response. The normal read response includes the read data.
20 FIG. 100 100 110 111 100 30 112 is a flowchart of IO access processing in the storage control block. The storage control blockreceives the IO command and the Controller ID from the FE I/F(S). Next, the storage control blockacquires the corresponding Subsystem ID from the Controller management table T(S).
100 20 113 Next, the storage control blocksearches the Namespace management table Tfor a combination of the Subsystem ID and the Namespace ID to acquire the corresponding LDEV ID (S).
100 114 Next, the storage control blockdetermines whether or not the access destination address and the access destination size can be accessed with the IO command (S). This step is general storage access control for determining user authority or whether another host is using.
114 100 110 118 114 100 115 In a case where the access is not permitted (S: NO), the storage control blockreturns an error response to the FE I/F(S). In a case where the access is permitted (S: YES), the storage control blockdetermines whether the IO command is the read command or the write command (S).
115 100 110 116 115 110 117 In a case where the IO command is the read command (S: READ), the storage control blockreads data of the access destination size from the access destination address of the LDEV indicated by the LDEV ID, and returns the data to the FE I/Fas an IO result (S). In a case where the IO command is the write command (S: WRITE), in the LDEV indicated by the LDEV ID, data of the access destination size is written to the access destination address, and a success response is returned to the FE I/Fas an IO result (S).
200 110 121 200 21 FIG. Hereinafter, disconnection processing triggered by the host serverwill be described.is a sequence diagram of the disconnection processing triggered by the host server. The FE I/Freceives a disconnection request from the host server (S). termination of the TCP connection by the host servermay be a trigger.
110 60 122 110 200 123 Next, the FE I/Facquires the Controller ID of the corresponding connection from the connection management table T(S). The FE I/Freturns a disconnection completion notification to the host serverand terminates the connection (S). In a case where the termination of the TCP connection is the trigger, this step is unnecessary.
110 60 124 110 100 125 Next, the FE I/Fdeletes the corresponding entry of the connection management table Tand releases the resource (S). Next, the FE I/Ftransmits a connection deletion request to the storage control block(S). The connection deletion request includes information regarding the Controller ID and the updated number of connections.
110 100 30 126 100 110 127 Upon receiving the connection deletion request from the FE I/F, the storage control blockupdates the number of connections of the entry whose Controller ID matches in the Controller management table T(S). Here, the number of connections is subtracted by 1. Thereafter, the storage control blocktransmits a completion notification to the FE I/F(S).
110 50 128 Upon receiving the completion notification, the FE I/Fupdates the number of connections (the current number of queues) in the Controller cache table T(S) Here, the value of the number of connections is subtracted by 1.
50 110 100 129 In a case where the number of connections (the current number of IO queues) in the Controller cache table Tis 0, the FE I/Ftransmits a Controller deletion request to the storage control block(S). The Controller deletion request includes the Controller ID of the target.
100 30 130 100 110 131 110 50 132 Upon receiving the Controller deletion request, the storage control blockdeletes the entry whose Controller ID matches in the Controller management table Tand releases the resource (S). Thereafter, the storage control blocktransmits a completion notification to the FE I/F(S). Upon receiving the completion notification, the FE I/Fdeletes the corresponding entry in the Controller cache table Tand releases the resource (S).
110 100 21 FIG. 21 FIG. Next, processing in each of the FE I/Fand the storage control blockin the disconnection processing triggered by the host server described with reference towill be described with reference to a flowchart. In the following description, the same steps as those inare denoted by different reference numerals.
22 FIG. 110 110 141 200 is a flowchart of disconnection processing triggered by the host server in the FE I/F. First, the FE I/Freceives a disconnection request from the host server (S). As described above, the termination of the TCP connection by the host servermay be the trigger.
110 60 142 110 200 143 Next, the FE I/Facquires the Controller ID of the corresponding connection from the connection management table T(S). The FE I/Freturns a disconnection completion notification to the host serverand terminates the connection (S). In a case where the termination of the TCP connection is the trigger, this step is unnecessary.
110 60 144 110 100 145 Next, the FE I/Fdeletes the corresponding entry of the connection management table Tand releases the resource (S). Next, the FE I/Ftransmits a connection deletion request to the storage control blockand receives a completion notification therefor (S). The connection deletion request includes information regarding the Controller ID and the updated number of connections.
110 50 128 110 50 147 Upon receiving the completion notification, the FE I/Fupdates the number of connections (the current number of queues) in the Controller cache table T(S). Here, the value of the number of connections is subtracted by 1. The FE I/Fdetermines whether or not the number of connections (the current number of IO queues) in the Controller cache table Tis 0 (S).
147 147 110 100 100 148 110 50 149 In a case where the number of connections is larger than 0 (S: NO), this flow ends. In a case where the number of connections is 0 (S: YES), the FE I/Ftransmits a Controller deletion request to the storage control blockand receives a completion notification from the storage control block(S). The Controller deletion request includes the Controller ID of the target. Next, the FE I/Fdeletes the corresponding entry in the Controller cache table Tand releases the resource (S).
23 FIG. 100 100 110 151 100 30 152 100 110 153 is a flowchart of disconnection processing triggered by the host server in the storage control block. The storage control blockreceives a connection deletion request from the FE I/F(S). The connection deletion request indicates the Controller ID and the updated number of connections. The storage control blockupdates the number of connections of the entry whose Controller ID matches in the Controller management table T(S). Here, the number of connections is subtracted by 1. Next, the storage control blocktransmits a completion notification to the FE I/F(S).
100 154 100 30 155 100 110 156 Thereafter, the storage control blockreceives a Controller deletion request (S). The Controller deletion request indicates the Controller ID. The storage control blockdeletes the entry whose Controller ID matches in the Controller management table Tand releases the resource (S). Next, the storage control blocktransmits a completion notification to the FE I/F(S).
1 100 30 1 161 100 110 162 24 FIG. Hereinafter, disconnection processing triggered by the storage systemwill be described.is a sequence diagram of the disconnection processing triggered by the storage system. The storage control blockinvalidates the entry whose Controller ID matches in the Controller management table Tin response to an operator operation, occurrence of an error in the storage system, or the like (S). The invalidation of the entry may, for example, set the number of scheduled queues to a negative number, add an invalidation flag to the entry, or temporarily delete the entry. Next, the storage control blocktransmits a disconnection request designating the Controller ID to the FE I/F(S).
110 60 163 110 200 164 Upon receiving the disconnection request, the FE I/Fsearches the connection management table Tfor a connection whose Controller ID matches (S). The FE I/Ftransmits a disconnection notification to the host serverof all the matching connections and terminates the connection (S).
110 60 165 110 50 166 110 100 167 Next, the FE I/Fdeletes the entry whose Controller ID matches from the connection management table Tand releases the resource (S). Further, the FE I/Fdeletes the entry whose Controller ID matches from the Controller cache table Tand releases the resource (S). Thereafter, the FE I/Ftransmits a disconnection completion notification to the storage control block(S).
110 100 30 168 Upon receiving the disconnection completion notification from the FE I/F, the storage control blockdeletes the entry whose Controller ID matches from the Controller management table T(S).
110 100 24 FIG. 24 FIG. Next, processing in each of the FE I/Fand the storage control blockin the disconnection processing triggered by the storage system described with reference towill be described with reference to a flowchart. In the following description, the same steps as those inare denoted by different reference numerals.
25 FIG. 110 110 100 171 110 60 172 110 200 173 is a flowchart of disconnection processing triggered by the storage system in the FE I/F. The FE I/Freceives a disconnection request including the Controller ID from the storage control block(S). The FE I/Fsearches the connection management table Tfor a connection whose Controller ID matches (S). The FE I/Ftransmits a disconnection notification to the host serverof all the matching connections, and then terminates the connection (S).
110 174 110 175 110 176 Next, the FE I/Fdeletes the entry whose Controller ID matches in the connection management table and releases the resource (S). Next, the FE I/Fdeletes the entry whose Controller ID matches from the Controller cache table and releases the resource (S). The FE I/Ftransmits a disconnection completion notification to the storage control block (S).
26 FIG. 100 100 30 1 181 30 is a flowchart of disconnection processing triggered by the storage system in the storage control block. The storage control blockinvalidate the entry whose Controller ID matches in the Controller management table Tin response to an operator operation, occurrence of an error in the storage system, or the like (S). The invalidation of the entry may, for example, set the number of scheduled queues to a negative number, add an invalidation flag to the entry, or temporarily delete the entry. In a case where the entry has already been deleted, updating of the Controller management table Tis omitted.
100 110 182 100 110 183 100 30 184 Next, the storage control blocktransmits a disconnection request designating the Controller ID to the FE I/F(S). Thereafter, the storage control blockreceives a disconnection completion notification from the FE I/F(S). Next, the storage control blockdeletes the entry whose Controller ID matches from the Controller management table T(S). In a case where the entry has already been deleted, the deletion of the entry is omitted.
30 110 100 100 110 100 110 100 Various modifications can be made to the above embodiment. For example, in the Controller management table T, the information regarding the number of connections may be omitted. In this case, between the FE I/Fand the storage control block, communication of information regarding the number of connections, processing regarding update of the number of connections to the storage control blockin the FE I/F, and processing regarding the number of connections in the storage control blockcan be omitted. As a result, when the IO queue connection is established, the communication between the FE I/Fand the storage control blockcan be omitted, and a time for establishment of connection (Association) to the Controller can be further shortened.
30 100 110 110 110 110 100 100 100 110 In addition to the number of connections, the number of reserved queues (the number of queues to be permitted) in the Controller management table Tmay be omitted. In this case, at the time of initialization, the storage control blocknotifies the FE I/Fof the number of reserved queues, and thereafter, the FE I/Fmanages the number of reserved queues. As a result, the connection (Association) to the Controller is managed by the FE I/F, and the processing in the FE I/Fcan be simplified by reducing the involvement of the storage control block. However, since the number of reserved queues cannot be managed by the storage control block, an instruction from the storage control blockto the FE I/Fis required to change the number of reserved queues in the middle.
In the description of the above processing, the order of the steps can be changed within a range in which consistency can be maintained, and the preceding and subsequent steps may be combined to simplify the processing or reduce the number of communications. In addition, in a case where the resource does not need to be immediately released because the resources are abundant, the release of the resource may be omitted within a range in which consistency can be maintained.
200 110 110 100 In the present embodiment, the NVMe over TCP is assumed as the communication protocol between the host serverand the FE I/F, and DMA communication is assumed between the FE I/Fand the storage control block. However, a different communication scheme may be used to optimize necessary computer resources or facilitate implementation.
200 110 110 100 For example, a communication format supported by the host server or the storage control block may be adopted to suppress additional development and additional processing. For example, the NVMe over FC or iSCSI may be used between the host serverand the FE I/F, or a user datagram protocol (UDP) may be used between the FE I/Fand the storage control block. In a case where another communication scheme is used, unique information of the communication scheme is used. For example, in the iSCSI, an iSCSI Qualified Name is used instead of the Subsystem NQN.
An information transmission method is not limited to the above example. For example, a data amount of one communication may be reduced by dividing specific information, and reliability of the processing may be enhanced by sequentially performing error detection processing. Information may be transmitted a plurality of times to achieve redundancy, or it may be checked whether or not inconsistency has occurred during communication to improve failure tolerance. In addition, the number of communications may be reduced by transmitting different pieces of information in a combined format (for example, by concatenating the Host NQN and the Host ID into a character string).
110 200 100 In the above embodiment, the FE I/Fexists between the host serverand the storage control block, and thus, in a case where information is dividedly transmitted a plurality of times, communication is performed in two stages. There are two methods as to how to handle the pieces of divided information, and any one of the two methods may be adopted.
110 200 100 200 100 110 200 100 In one method, the FE I/Fperforms communication with one of the host serverand the storage control blocka plurality of times, combines the pieces of divided information, and transmits the combined information to the other of the host serverand the storage control block. As a result, it is possible to simplify communication. In the other method, the FE I/Fsequentially transmits information received from one of the host serverand the storage control blockto the other. As a result, it is possible to minimize the delay.
In a case where it can be determined from other information, or in a case where it is not essential in the communication scheme, the information may be transmitted in other forms, or only a part of the information may be transmitted. For example, in a case where the Subsystem NQN can be restored from a table that manages the Controller ID by providing only the Controller ID, it is sufficient if only the Controller ID is transmitted. As a result, the data amount of communication and communication processing can be reduced.
The response does not have to include all the pieces of information in the above example. For example, when an error occurs, the error is notified. A request ID is assigned to each request, and it is possible to distinguish which request is a response or data. Furthermore, in a case where a processing content does not change depending on a content of the response to communication, such as disconnection or deletion, transmission of the response may be omitted. By omitting transmission of the response, it is possible to avoid a deadlock due to waiting for a response, shorten a time for completing processing, and simplify processing. By transmitting the response, consistency of states at both ends of communication can be maintained when an error occurs at either end of the communication.
110 Hereinafter, a second embodiment of the present invention will be described. The present embodiment is different from the first embodiment in processing in an FE I/Fin disconnection processing triggered by a host server. The description of the first embodiment can be applied to a configuration not specifically mentioned in the following description.
27 FIG. 110 110 110 is a flowchart of the disconnection processing triggered by the host server in the FE I/F. The FE I/Fdeletes (fully disconnects) a Controller in one disconnection. As a result, the processing in the FE I/Fcan be simplified, and a load can be reduced to improve performance.
27 FIG. 22 FIG. 22 FIG. 141 143 143 110 200 60 191 110 60 192 148 149 Referring to, steps Sto Sare similar to those in the flowchart illustrated inof the first embodiment. After step S, the FE I/Ftransmits a disconnection notification to a host serverfor all entries of a corresponding Controller ID in a connection management table T, and terminates all connections (S). The FE I/Fdeletes all the entries of the corresponding Controller ID from the connection management table Tand releases a resource (S). Steps Sand Sthereafter are similar to those in the flowchart illustrated inof the first embodiment.
60 110 100 100 110 Hereinafter, a third embodiment of the present invention will be described. In the present embodiment, a connection ID is added to the configuration of the connection management table Tof the first embodiment. Information transmitted from an FE I/Fto a storage control blockincludes the connection ID. When the storage control blockstores processing in a log, the connection ID notified from the FE I/Fis included in the log. As a result, it is possible to easily track a connection that requires a long time or a connection in which an error has occurred. Other configurations are similar to those of the first embodiment.
110 Hereinafter, a fourth embodiment of the present invention will be described. In the present embodiment, a CPU core assigned for a connection is managed in an FE I/F. Differences from the first embodiment will be described below. The description of the first embodiment can be applied to a configuration not particularly mentioned below.
28 FIG. 90 90 609 601 608 60 609 illustrates a configuration example of a connection management table Tof the present embodiment. The connection management table Tincludes an assigned core field Cin addition to the fields Cto Cof the connection management table Tof the first embodiment. The assigned core field Cindicates an identifier of a CPU core that performs processing for a corresponding connection.
110 100 100 100 110 The FE I/Fincludes information of the assigned core in a request to a storage control block. When the storage control blockstores processing in a log, the storage control blockincludes the information (including a core ID) of the assigned core notified from the FE I/Fin the log. Note that such a configuration may be omitted.
100 110 110 100 The storage control blockincludes the ID of the assigned core notified from the FE I/Fin a response indicating a processing result transmitted to the FE I/F. At the time of “disconnection triggered by a storage control block”, the storage control blocksets an invalid value as the response.
110 100 110 110 When the FE I/Fprocesses the response from the storage control block, the FE I/Fsets the assigned core as a core that performs processing in the FE I/Fby referring to the included ID of the assigned core.
110 100 110 100 110 90 According to the present embodiment, in IO access, the FE I/Fcan immediately distribute processing to the assigned core for the IO access based on the response from the storage control block, and thus, it is possible to equalize a processing load between cores, which improves cache efficiency and reduces latency. Information transmitted between the FE I/Fand the storage control blockmay include a connection ID as in the third embodiment instead of the ID of the assigned core. The FE I/Fcan identify the assigned core by referring to the connection management table T. Such a configuration further simplifies the implementation of both the third and fourth embodiments.
Note that the present invention is not limited to the embodiments described above, but includes various modified examples. For example, the above-described embodiments have been described in detail in order to explain the present invention in an easy-to-understand manner, and the present invention is not necessarily limited to those having all the configurations described. Further, a part of a configuration of an embodiment can be replaced with a configuration of another embodiment, and a configuration of an embodiment can be added with a configuration of another embodiment. In addition, a part of the configuration of each embodiment can be added with another configuration, can be deleted, and can be replaced with another configuration.
In addition, some or all of the above-described configurations, functions, processing units, and the like may be implemented by hardware, for example, by designing with an integrated circuit. In addition, each of the above-described configurations, functions, and the like may be implemented by software in a manner in which a processor interprets and executes a program for implementing each function. Information such as a program, a table, and a file for implementing each function can be stored in a recording device such as a memory, a hard disk, or an SSD, or a recording medium such as an IC card or an SD card.
In addition, the control lines and information lines indicate those that are considered necessary for explanation, and do not necessarily indicate all the control lines and information lines in the product. In practice, it can be considered that almost all configurations are interconnected.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
September 11, 2024
September 8, 2026
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.