Memory system and control method
The memory system with virtual controllers allows hosts in an NVMe-oF environment to manage namespaces flexibly by processing Admin commands, addressing the issue of unsupported commands and enabling seamless namespace operations.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- KIOXIA CORP
- Filing Date
- 2022-09-05
- Publication Date
- 2026-04-10
AI Technical Summary
In an NVMe-oF environment, hosts connected via a network cannot perform operations on namespaces (NS) due to error responses from the target to Admin commands, preventing the flexible management of NSs across multiple hosts.
A memory system with a controller that creates virtual controllers for each host, allowing Admin commands to be processed based on the namespace attachment/detachment status, enabling independent operations on NSs by each host.
Enables hosts connected via a network to perform Admin commands on NSs, managing NSs flexibly and independently, resolving the issue of unsupported commands and ensuring seamless namespace operations.
Smart Images

Figure 0007843668000001 
Figure 0007843668000002 
Figure 0007843668000003
Abstract
Description
Technical Field
[0001] Embodiments of the present invention relate to a memory system and a control method.
Background Art
[0002] NVMe TM -oF (NVMe over Fabrics) is a technology that enables a host to use a target connected via a network as a local NVMe device. The target is a memory system such as a SSD (Solid State Drive).
[0003] Normally, an NVMe device can logically divide the storage area of the NVMe device to create a plurality of NSs (Namespaces). By creating a plurality of NSs in the storage area, the NVMe device can be used flexibly. For example, the storage area of the NVMe device used by the host can be divided for each application program. Also, when multiple hosts are connected to one target by NVMe-oF, the storage areas of the NVMe devices used by the multiple hosts can be divided for each host.
[0004] In an environment where the host is directly connected to the NVMe device, the host can perform operations related to NSs, such as creating, deleting, attaching, and detaching NSs, by sending an Admin command, which is a command for NS operations, to the connected NVMe device. Attach is an operation to incorporate an NS into the access target, and detach is an operation to remove an NS from the access target. Also, deleting an NS is to release a part of the storage area of the NVMe device reserved for the NS.
[0005] On the other hand, in an environment where NVMe-oF allows multiple hosts to use a single target as a local NVMe device, Admin commands sent by a host to the target are treated as unsupported commands by the target and result in an error response. However, the target's error response to Admin commands prevents situations where an NS used by one host is deleted or detached by another host in response to an Admin command sent to the target.
[0006] Thus, a host connected to the target via the network can use NS in the attached state, but cannot perform operations on NS. [Prior art documents] [Patent Documents]
[0007] [Patent Document 1] Special Publication No. 2021-510215 [Patent Document 2] Japanese Patent Publication No. 2019-75104 [Patent Document 3] Japanese Patent Publication No. 2021-77208 [Overview of the Initiative] [Problems that the invention aims to solve]
[0008] One embodiment of the present invention provides a memory system and control method that enables a host to perform operations on a namespace over a network. [Means for solving the problem]
[0009] According to the embodiment, the memory system comprises non-volatile memory and a controller. The non-volatile memory comprises a storage area. The controller can communicate with one or more hosts, including a first host, via a network, and can logically partition the storage area of the non-volatile memory to create namespaces. In response to receiving a first command from the first host requesting a connection, the controller creates a virtual controller that allows the first host to accept requests for operations, including the creation, deletion, or attachment / detachment of namespaces, via the network, based on the namespace attachment / detachment status of the non-volatile memory storage area, and that allows the first host to independently attach / detach namespaces regardless of namespace attachment / detachment on other hosts. When the controller receives a second command from the first host regarding namespace operations, it executes the processing related to the namespace operation requested by the second command, based on the namespace attachment / detachment status in the virtual controller. [Brief explanation of the drawing]
[0010] [Figure 1] A diagram showing an example configuration of a computer system to which NVMe-oF is applied, including the target (memory system) of the first embodiment. [Figure 2] A diagram showing one example configuration of the target of the first embodiment. [Figure 3] A diagram showing an example of a virtual controller created in the target of the first embodiment. [Figure 4] A flowchart illustrating the operation procedure when a connect command is received in the target of the first embodiment. [Figure 5] A flowchart illustrating the operation procedure when an NS creation command is received in the target of the first embodiment. [Figure 6] A flowchart illustrating the operation procedure when an NS deletion command is received in the target of the first embodiment. [Figure 7] A flowchart illustrating the operation procedure when an NS attach / detach command is received by the target of the first embodiment. [Figure 8] A diagram showing a configuration example of a controller in the target of the second embodiment. [Figure 9] A diagram showing an example of the attach state of NS in the memory side controller and the virtual controller in the target of the second embodiment. [Figure 10] A diagram showing an example of NS management information stored by the target of the second embodiment. [Figure 11] A flowchart showing the operation procedure when a connect command is received by the target of the second embodiment. [Figure 12] A flowchart showing the operation procedure when an I / O command is received by the target of the second embodiment. [Figure 13] A flowchart showing the operation procedure when an NS attach command is received by the target of the second embodiment. [Figure 14] A flowchart showing the operation procedure when an NS detach command is received by the target of the second embodiment. [Figure 15] A diagram showing a configuration example of a controller in the target of the third embodiment. [Figure 16] A diagram showing a configuration example of a controller in the target of the fourth embodiment. [Figure 17] A flowchart showing the operation procedure when a save request for NS management information is received by the target of the fourth embodiment. [Figure 18] A flowchart showing the operation procedure when a connect command is received by the target of the fourth embodiment.
Embodiments for Carrying Out the Invention
[0011] Hereinafter, embodiments will be described with reference to the drawings.
[0012] (First Embodiment) First, the first embodiment will be described.
[0013] Figure 1 shows an example configuration of a computer system 1000 to which NVMe-oF is applied, including the target (memory system) 1 of the first embodiment.
[0014] Computer system 1000 is connected to a target system 100 containing one or more targets 1 and a host system 200 containing one or more hosts 2 via network equipment 3. Target 1 and network equipment 3, and network equipment 3 and hosts 2 are connected, for example, via an IEEE 802.3 standard network.
[0015] Target 1 is a storage device that has the ability to communicate with Host 2 using the NVMe-oF protocol. Host 2 is an information processing device such as a server or a PC (Personal Computer). Network device 3 is, for example, a switch or a router. Target 1 receives commands from Host 2, an external device, via Network device 3.
[0016] Figure 2 shows an example configuration of Target 1. Figure 2 also shows an example configuration of the controller 10, which will be described later, that Target 1 has.
[0017] Target 1 includes a controller 10 and memory 20. The controller 10 is configured as a System-on-Chip (SoC). The memory 20 is, for example, NAND flash memory.
[0018] The controller 10 performs overall control of the target 1, including control of the memory 20. The function of communicating with the host 2 using the NVMe-oF protocol, as described above, is implemented by the controller 10. The controller 10 can create NSs in the memory 20's storage area, delete existing NSs, or attach and detach NSs in response to Admin commands from the host 2. However, conventionally, the host 2 connected to the target 1 via a network could not operate NSs using Admin commands. The controller 10 of the target 1 in the first embodiment includes a mechanism that enables the host 2 connected to the target 1 via a network to operate NSs using Admin commands. This point will be described in detail below.
[0019] The controller 10 includes a host-side controller 11, a memory-side controller 12, an NS status confirmation unit 13, and a virtual controller creation unit 14. These may be implemented by a processor within the controller 10 executing a program, or they may be implemented as hardware such as electrical circuits. Hereinafter, the NS status confirmation unit 13 will also be referred to as the confirmation unit 13, and the virtual controller creation unit 14 will also be referred to as the creation unit 14.
[0020] The host-side controller 11 receives commands and data from host 2 via network device 3, for example, in the IEEE 802.3 standard format. The host-side controller 11 converts the received commands and data into a format that the memory-side controller 12 can interpret and relays it to the memory-side controller 12. The host-side controller 11 also sends the processing results of the commands received from the memory-side controller 12 to network device 3, addressed to host 2, for example, in the IEEE 802.3 standard format.
[0021] The host-side controller 11 has an Admin command passthrough unit 111. Hereinafter, the Admin command passthrough unit 111 will also be referred to as the passthrough unit 111. If a command received from host 2 via network device 3 is an Admin command related to NS operation, the passthrough unit 111 executes processing to relay this Admin command to the memory-side controller 12. As mentioned above, Admin commands from host 2 received via network device 3 would conventionally be returned as unsupported commands. However, Admin commands from a host directly connected to target 1 are relayed to the memory-side controller 12 as before, without the need for the passthrough unit 111.
[0022] The memory-side controller 12 controls the writing of data to memory 20 and the reading of data from memory 20 in response to commands received from the host-side controller 11. Furthermore, when it receives an Admin command related to NS operations, the memory-side controller 12 can reserve a portion of memory 20 to create an NS, delete an NS to free up the portion of memory 20 reserved for that NS, or attach and detach an NS.
[0023] The verification unit 13 checks the attach status of the NS in the memory controller 12 based on instructions from the host controller 11. Instructions from the host controller 11 to the verification unit 13 are executed when a connect command requesting a connection with target 1 is sent from host 2. For example, if three NS "1", NS "2", and NS "3" have been created in the memory 20, and two of them, NS "1" and NS "2", are in the attach state, the verification unit 13 confirms that two of the three NS "1", NS "2", and NS "3" are in the attach state. The verification unit 13 then notifies the creation unit 14 of this confirmation result.
[0024] The creation unit 14 creates a virtual controller 11A (see Figure 3) for host 2, which sent the connect command. The creation of the virtual controller 11A by the creation unit 14 is also performed based on instructions from the host-side controller 11 when the connect command is received. Based on the notification from the confirmation unit 13, the creation unit 14 creates a virtual controller 11A that reflects the attach status of the NSs in the memory-side controller 12. For example, it creates a virtual controller 11A in which two of the three NSs "1" and "2" are in the attach status. The creation unit 14 notifies the host-side controller 11 that the creation of the virtual controller 11A is complete.
[0025] The creation unit 14 includes an NS attach unit 141. The NS attach unit 141 performs NS attachment / detachment in the virtual controller 11A based on instructions from the host controller 11. The timing of when the host controller 11 sends instructions to this NS attach unit 141 will be described later.
[0026] Once the creation of the virtual controller 11A by the creation unit 14 is complete, the host-side controller 11 responds to the host 2 via the network device 3 that the connection is complete. After the connection is complete, the host-side controller 11 manages the NS attach status in the virtual controller 11A and the NS attach status in the memory-side controller 12 in parallel. Based on this management, the host-side controller 11 controls access to the memory 20 in accordance with the commands sent by the host 2.
[0027] Figure 3 shows an example of a virtual controller 11A created in target 1 of the first embodiment.
[0028] This example shows that two NS21s, "A" and "B," have been created in the memory area of memory 20, and that these two NS21s are in the attached state in the memory-side controller 12. The memory-side controller 12 identifies NS21 "A" as identifier NSID "1" and NS21 "B" as identifier NSID2.
[0029] Furthermore, this example shows the case where both NS21 "A" and NS21 "B" are in the attached state in the virtual controller 11A. In other words, the state of the virtual controller 11A shown in Figure 3 is the state of the virtual controller 11A created in response to the reception of the connect command from host 2. In host 2, NS21 "A" is identified as "1" and NS21 "B" is identified as "2". In Figure 3, the identifiers NSID "1" and "2" shown within the frame of virtual controller 11A are identifiers used by host 2 to identify NS21. When host 2 sends a command targeting NS21 "A", it uses identifier NSID "1". As a result, for example, when the command is relayed to the memory-side controller 12, the memory-side controller 12 performs processing targeting NS21 "A".
[0030] Here, if host 2 were to send an Admin command requesting the detachment of NS21 "A", the host-side controller 11 would determine whether NS21 "A" is in the attached state in another virtual controller 11A for host 2 other than host 2. If there is another virtual controller 11A that has NS21 "A" in the attached state, the host-side controller 11 would send an instruction to the NS attach unit 141 to detach NS21 "A" from the virtual controller 11A for host 2 that sent the Admin command, and would respond to host 2 that the detachment of NS21 "A" is complete. Therefore, in this case, the pass-through unit 111 does not pass the Admin command to the memory-side controller 12, and NS21 "A" remains attached in the memory-side controller 12. In other words, the detachment of NS21 "A" is performed only in the virtual controller 11A for host 2 that sent the Admin command.
[0031] On the other hand, if there are no other virtual controllers 11A that have NS21"A" in the attached state, the host controller 11 first passes an Admin command to the memory controller 12 via the pass-through unit 111 requesting detachment. The memory controller 12 then executes the detachment process for NS21"A" in response to this Admin command. When the host controller 11 is notified by the memory controller 12 that detachment of NS21"A" is complete, it sends an instruction to the NS attach unit 141 to detach NS21"A" from the virtual controller 11A for host 2 that sent the Admin command, and also responds to host 2 that detachment of NS21"A" is complete. If the host controller 11 is notified by the memory controller 12 that detachment of NS21"A" has failed, it does not send an instruction to the NS attach unit 141 to detach NS21"A", but instead responds to host 2 that detachment of NS21"A" has failed. Unlike the attach case described later, in the case of detachment, the detachment on the virtual controller 11A may be performed regardless of the success or failure of the detachment on the memory-side controller 12. However, for the management of target 1, it is preferable that if the detachment process on the memory-side controller 12 fails, the result is notified to the host 2 that sent the command. Here, the failure of the detachment process on the memory-side controller 12 is also referred to as the detachment process resulting in an error.
[0032] Furthermore, suppose that after NS21 "A" is detached, host 2 sends an Admin command requesting the attachment of NS21 "A". In this case as well, the host-side controller 11 determines whether there is another virtual controller 11A that has NS21 "A" attached. If there is another virtual controller 11A that has NS21 "A" attached, then NS21 "A" is also attached in the memory-side controller 12. The host-side controller 11 sends an instruction to the NS attach unit 141 to attach NS21 "A" to the virtual controller 11A for host 2 that sent the Admin command, and responds to host 2 that the attachment of NS21 "A" is complete. In this case, the host-side controller 11 does not pass the Admin command to the memory-side controller 12 via the pass-through unit 111.
[0033] On the other hand, if there are no other virtual controllers 11A with NS21"A" attached, the host controller 11 first passes an Admin command to the memory controller 12 via the pass-through unit 111 requesting an attachment. The memory controller 12 then executes the process of attaching NS21"A" in response to this Admin command. When the host controller 11 is notified by the memory controller 12 that the attachment of NS21"A" is complete, it sends an instruction to the NS attach unit 141 to attach NS21"A" to the virtual controller 11A for host 2 that sent the Admin command, and also responds to host 2 that the attachment of NS21"A" is complete. If the host controller 11 is notified by the memory controller 12 that the attachment of NS21"A" has failed, it does not send an instruction to the NS attach unit 141 to attach NS21"A", but instead responds to host 2 that the attachment of NS21"A" has failed. The attachment of an NS in the virtual controller 11A presupposes that the same NS is also attached to the memory-side controller 12. Therefore, if the attachment of the NS in the memory-side controller 12 fails, a response indicating the attachment failure is inevitably sent to the host 2. Here, the response indicating the attachment failure is also called an error response.
[0034] Next, suppose host 2 sends an Admin command requesting the deletion of NS21 "A". In this case as well, the host-side controller 11 determines whether there is another virtual controller 11A that has NS21 "A" attached. If there is another virtual controller 11A that has NS21 "A" attached, the host-side controller 11 cannot delete NS21 "A", and therefore responds to host 2 with an error. In this case, the host-side controller 11 does not pass the Admin command to the memory-side controller 12 via the pass-through unit 111. If there is no other virtual controller 11A that has NS21 "A" attached, the host-side controller 11 passes the Admin command requesting deletion to the memory-side controller 12 via the pass-through unit 111. The memory-side controller 12 then executes the process of deleting NS21 "A" in response to this Admin command. When the host-side controller 11 receives notification from the memory-side controller 12 that the deletion of NS21 "A" is complete, it responds to host 2 with a confirmation that the deletion of NS21 "A" is complete. At this time, if NS21 "A" was in the attached state on the virtual controller 11A for host 2 that sent the Admin command, the host-side controller 11 detaches NS21 "A" on the virtual controller 11A for host 2. If the memory-side controller 12 notifies the host-side controller 11 that the deletion of NS21 "A" failed, the host-side controller 11 responds to host 2 with a confirmation that the deletion of NS21 "A" failed.
[0035] Furthermore, when an Admin command requesting the deletion of NS21"A" is received, if the virtual controller 11A for host 2 that sent the Admin command is in the process of attaching NS21"A", the host-side controller 11 may respond to host 2 with a message indicating that the deletion of NS21"A" failed.
[0036] Furthermore, suppose host 2 sends an Admin command requesting the creation of a new NS that does not currently exist, for example, NS21 "C". At this time, since NS21 "C", which is about to be created, is not attached to any other virtual controller 11A, the host-side controller 11 immediately passes the Admin command requesting the creation of a new NS21 to the memory-side controller 12 via the pass-through unit 111. The memory-side controller 12 then executes the process of creating the new NS21 in response to this Admin command. When the host-side controller 11 receives notification from the memory-side controller 12 that NS21 "C" has been created as a new NS, it responds to host 2 with the completion of NS21 "C" creation. If it receives notification that NS21 "C" creation has failed, the host-side controller 11 responds to host 2 with the failure to create NS21 "C".
[0037] Thus, in the first embodiment, target 1 creates a virtual controller 11A for each host 2 that requests a connection to target 1 via the connect command, and manages the attach state of the NS on each virtual controller 11A, thereby enabling host 2 connected via the network to operate the NS using the Admin command.
[0038] Figure 4 is a flowchart showing the operation procedure when a connect command is received in target 1 of the first embodiment.
[0039] When a connect command is received, the verification unit 13 checks the attachment status of the NS on the memory-side controller 12 (S101). The creation unit 14 creates a virtual controller 11A that matches the attachment status of the NS on the memory-side controller 12 notified by the verification unit 13 (S102).
[0040] Once the virtual controller 11A is created, the host controller 11 creates a response indicating the completion of the connection with host 2 (S103), and sends the created response to host 2 (S104).
[0041] Figure 5 is a flowchart showing the operation procedure when an NS creation command is received in target 1 of the first embodiment.
[0042] If the Admin command received from host 2 is an NS creation command, the host-side controller 11 immediately relays it to the memory-side controller 12 via the pass-through unit 111 (S201). The host-side controller 11 receives a response from the memory-side controller 12 (S202) and sends the received response to host 2 (S203).
[0043] Figure 6 is a flowchart showing the operation procedure when an NS deletion command is received in target 1 of the first embodiment.
[0044] The host controller 11 determines whether there are other virtual controllers 11A that have the NS specified in the NS deletion command (Admin command) in the attached state (S301). Other virtual controllers 11A are virtual controllers 11A created for host 2 other than the host 2 that sent the NS deletion command.
[0045] If there are no other virtual controllers 11A that have the target NS in the attached state (S301: NO), the host controller 11 relays the received NS deletion command to the memory controller 12 via the pass-through unit 111 (S302). Then, the host controller 11 sends the response received from the memory controller 12 to the host 2 (S303).
[0046] On the other hand, if there is another virtual controller 11A that has the target NS in the attached state (S301:YES), the host controller 11 does not relay the NS deletion command by the pass-through unit 111 to the memory controller 12, and instead sends an error response to the host 2 (S303).
[0047] Figure 7 is a flowchart showing the operation procedure when an NS attach command or an NS detach command is received in target 1 of the first embodiment.
[0048] The host controller 11 determines whether there are other virtual controllers 11A that have the NS specified by the NS attach command or NS detach command (Admin command) in the attached state (S401).
[0049] If there are no other virtual controllers 11A that have the target NS in the attach state (S401: NO), the host controller 11 relays the received NS attach command or NS detach command to the memory controller 12 via the pass-through unit 111 (S402). The host controller 11 determines whether the response from the memory controller 12 indicates success or not (S403).
[0050] If the response from the memory-side controller 12 indicates success (S403: YES), the host-side controller 11 uses the NS attach unit 141 to attach or detach the target NS on the virtual controller 11A for host 2 that sent the NS attach command or NS detach command (S404). Then, the host-side controller 11 sends a response to host 2 indicating that the attachment or detachment of NS21 is complete (S405).
[0051] On the other hand, if the response from the memory-side controller 12 indicates failure (S403: NO), the host-side controller 11 sends a response to the host 2 indicating that the NS attachment or detachment failed without performing an attachment or detachment of the NS in the virtual controller 11A (S405).
[0052] Furthermore, if there is another virtual controller 11A that has the target NS in the attached state (S401: YES), the host-side controller 11 will use the NS attach unit 141 to attach or detach the NS on the virtual controller 11A without relaying commands to the memory-side controller 12 (S404), and will send a response to the host 2 indicating that the NS attachment or detachment is complete (S405).
[0053] As described above, in the target 1 of the first embodiment, the host 2 can operate the NS via the network.
[0054] (Second Embodiment) Next, a second embodiment will be described. Figure 8 shows an example configuration of the controller 10a in target 1a of the second embodiment.
[0055] The controller 10a of the second embodiment further includes a virtual controller / NS state management unit 15 compared to the controller 10 of the first embodiment. Hereinafter, the virtual controller / NS state management unit 15 will also be referred to as the management unit 15. The management unit 15 stores information about NSs attached to the virtual controller 11A (NS management information). The management unit 15 has an NSID conversion unit 151 that converts NSIDs based on the NS management information.
[0056] Figure 3, referenced in the description of the first embodiment, shows that the NS attach state in the memory-side controller 12 and the NS attach state in the virtual controller 11A are consistent. In NVMe-oF, multiple hosts 2 can be connected to the same target 1a, so a discrepancy may occur between the NS attach state in the memory-side controller 12 and the NS attach state in the virtual controller 11A. Figure 9 shows an example of a discrepancy between the NS attach state in the memory-side controller 12 and the NS attach state in the virtual controller 11A.
[0057] Figure 9 shows that three NS21s, "A", "B", and "C", have been created in the memory area of memory 20. All three of these NS21s are attached to the memory-side controller 12. The memory-side controller 12 identifies NS21 "A" as identification information NSID1, NS21 "B" as identification information NSID2, and NS21 "C" as identification information NSID3.
[0058] Meanwhile, in the virtual controller[1]11A for host[1]2, two NS21s are attached: NS21 "A" corresponding to identification information NSID1 and NS21 "B" corresponding to identification information NSID2. In the virtual controller[2]11A for host[2]2, two NS21s are attached: NS21 "B" corresponding to identification information NSID1 and NS21 "C" corresponding to identification information NSID2. This state can occur, for example, in response to the reception of connect and detach commands from host[1]2 and host[2]2, respectively. Specifically, first, upon receiving connect commands from each, virtual controllers[1],[2]11A for host[1]2 and host[2]2 are created in a state that matches the NS attachment state in the memory-side controller 12. Then, if a detach command for NS21 "C" is received from host[1]2 and a detach command for NS21 "A" is received from host[2]2, the state shown in Figure 9 may occur. When a detach command for NS21 "C" is sent from host[1]2, if the virtual controller[2]11A for host[2]2 is attached to NS21 "C", then the detachment of NS21 "C" will only occur on the virtual controller[1]11A for host[1]2. Similarly, when a detach command for NS21 "A" is sent from host[2]2, if the virtual controller[1]11A for host[1]2 is attached to NS21 "A", then the detachment of NS21 "A" will only occur on the virtual controller[2]11A for host[2]2.
[0059] Here, hosts [1]2 and [2]2 adaptively assign an integer identifier NSID of 1 or more to each NS21 in the attached state in ascending order and without gaps. Therefore, after detaching NS21 "A", host [2]2 identifies NS21 "B" as identifier NSID1 and NS21 "C" as identifier NSID2. In this case, if host [2]2 sends a command targeting NS21 "B" using identifier NSID1, the memory-side controller 12, which receives this command from the host-side controller 11, will end up targeting NS21 "A", which was not intended by host [2]2.
[0060] In the target 1a of the second embodiment, the controller 10a further includes a management unit 15 which includes an NSID conversion unit 151. This prevents an NS21 that is not intended by the host 2 from becoming the target of a command, even if there is a discrepancy between the attach state of NS21 on the memory-side controller 12 and the attach state of NS21 on the virtual controller 11A. This point will be described in detail below.
[0061] Figure 10 shows an example of NS management information stored in the management unit 15.
[0062] As shown in Figure 10, the NS management information associates, for each virtual controller 11A, the corresponding host 2, the NS21 attached to that virtual controller 11A, and the identifier NSID in the virtual controller 11A and the identifier NSID in the memory-side controller 12 for each attached NS. When target 1a is in the state shown in Figure 9, the management unit 15 stores the NS management information including the contents shown in Figure 10.
[0063] Specifically, the management unit 15 stores in the NS management information that, for virtual controller [1] 11A, it is for host [1] 2, that NS21 "A" and NS21 "B" are attached, that the identifier NSID of NS21 "A" in virtual controller 11A is "1" and the identifier NSID of memory-side controller 12 is "1", and that the identifier NSID of NS21 "B" in virtual controller 11A is "2" and the identifier NSID of memory-side controller 12 is "2".
[0064] Furthermore, the management unit 15 stores in the NS management information that, for virtual controller [2] 11A, it is for host [2] 2, that NS21 "B" and NS21 "C" are attached, that the identifier NSID of NS21 "A" in virtual controller 11A is "1" and the identifier NSID of memory-side controller 12 is "2", and that the identifier NSID of NS21 "B" in virtual controller 11A is "2" and the identifier NSID of memory-side controller 12 is "3".
[0065] Before relaying the command received from host 2 to the memory-side controller 12, the host-side controller 11 instructs the NSID conversion unit 151 to convert the NS21 identifier NSID included in the command. Based on the NS management information stored in the management unit 15, the NSID conversion unit 151 converts the NS21 identifier NSID included in the command as necessary. For example, if the command sent by host [2]2 contains identifier NSID1, the NSID conversion unit 151 converts this identifier NSID from "1" to "2". The host-side controller 11 then relays the command containing the converted NS21 identifier NSID2 to the memory-side controller 12.
[0066] As a result, even if the memory-side controller 12 identifies NS21 "B" by identifier NSID2, and the host [2]2 sends a command specifying NS21 "B" using identifier NSID1, the memory-side controller 12 will target the NS21 "B" intended by the host [2]2 with the command.
[0067] Figure 11 is a flowchart showing the operation procedure when a connect command is received in target 1a of the second embodiment. Steps S501, S502, S504, and S505 in Figure 11 are substantially the same as steps S101 to S104 in Figure 4.
[0068] When a connect command is received, the verification unit 13 checks the NS attach status on the memory-side controller 12 (S501). The creation unit 14 creates a virtual controller 11A that matches the NS attach status on the memory-side controller 12 notified by the verification unit 13 (S502). The management unit 15 registers the NS management information of the created virtual controller 11A (S503).
[0069] When the host controller 11 has created the virtual controller 11A and registered the NS management information for the created virtual controller 11A, it creates a response indicating that the connection with host 2 is complete (S504) and sends the created response to host 2 (S505).
[0070] Figure 12 is a flowchart showing the operation procedure when an I / O command requesting to write data to or read data from memory 20 is received in target 1a of the second embodiment.
[0071] The host-side controller 11 uses the NSID conversion unit 151 to convert the NS21 identifier NSID included in the command to the NSID identifier in the memory-side controller 12 (S601). The host-side controller 11 relays the command containing the converted NS21 identifier NSID to the memory-side controller 12 (S602). The memory-side controller 12 executes processing related to this command.
[0072] The host controller 11 receives a response from the memory controller 12 (S603), and the NSID conversion unit 151 then converts the NS21 identifier NSID contained in the response to the identifier NSID in the virtual controller 11A (S604). The host controller 11 sends the response containing the converted NS21 identifier NSID to the host 2 (S605).
[0073] Figure 13 is a flowchart showing the operation procedure when an NS attach command is received in target 1a of the second embodiment. Steps S701 to S704 and S706 in Figure 13 are substantially the same as steps S401 to S405 in Figure 4.
[0074] The host controller 11 determines whether there are other virtual controllers 11A that have the NS specified by the NS attach command (Admin command) in the attached state (S701).
[0075] If there are no other virtual controllers 11A that have the target NS in the attach state (S701: NO), the host controller 11 relays the received NS attach command to the memory controller 12 via the pass-through unit 111 (S702). The host controller 11 determines whether the response from the memory controller 12 indicates success or not (S703).
[0076] If the response from the memory-side controller 12 indicates success (S703: YES), the host-side controller 11 uses the NS attach unit 141 to attach the target NS21 to the virtual controller 11A for host 2 that sent the NS attach command (S704). The management unit 15 updates the NS management information of the virtual controller 11A for host 2 in conjunction with the attachment of NS21 (705). Then, the host-side controller 11 sends a response to host 2 indicating that the attachment of NS21 is complete (S706).
[0077] On the other hand, if the response from the memory-side controller 12 indicates failure (S703: NO), the host-side controller 11 sends a response to host 2 indicating that the NS attachment failed without performing the NS attachment on the virtual controller 11A (S706).
[0078] Furthermore, if there is another virtual controller 11A that has the target NS in the attached state (S701: YES), the host controller 11 will attach the NS to the virtual controller 11A using the NS attach unit 141 without relaying commands to the memory controller 12 (S704). The management unit 15 updates the NS management information of the target virtual controller 11A in conjunction with the attachment of NS21 (S705). The host controller 11 sends a response to host 2 indicating that the attachment of NS21 is complete (S706).
[0079] Figure 14 is a flowchart showing the operation procedure when an NS detach command is received in target 1a of the second embodiment. Steps S803 to S805 in Figure 14 are substantially the same as steps S401, S402, and S405 in Figure 4, respectively.
[0080] The host controller 11, using the NS attach unit 141, detaches the target NS21 on the virtual controller 11A for host 2 that sent the NS detach command (S801). The management unit 15 updates the NS management information of the target virtual controller 11A in conjunction with the detachment of NS21 (S802).
[0081] Next, the host controller 11 determines whether there is another virtual controller 11A that has the target NS in the attached state (S803). If there is no other virtual controller 11A that has the target NS in the attached state (S803: NO), the host controller 11 relays the received NS detach command to the memory controller 12 via the pass-through unit 111 (S804). The host controller 11 sends the response from the memory controller 12 to the host 2 (S805).
[0082] If there is another virtual controller 11A that has the target NS in the attached state (S803:YES), the host controller 11 sends a response to host 2 indicating that the NS21 has been detached, without relaying the command to the memory controller 12 (S805).
[0083] As described above, in the target 1a of the second embodiment, even if there is a discrepancy between the attach state of the NS in the memory-side controller 12 and the attach state of the NS in the virtual controller 11A, the NS operations requested by the host 2 can be executed without any problems.
[0084] (Third embodiment) Next, a third embodiment will be described. Figure 15 shows an example configuration of the controller 10b in target 1b of the third embodiment.
[0085] In the third embodiment, the controller 10b, compared to the controller 10a of the second embodiment, has a management unit 15 that further includes an NS management information providing unit 152. The NS management information providing unit 152 is provided to provide the NS management information stored in the management unit 15 to the host 2.
[0086] For example, one of several NVMe commands, whose use can be defined independently by the vendor, can be pre-assigned for obtaining NS management information. When the host controller 11 receives this vendor-specific NVMe command from host 2, it requests the NS management information provider 152 to provide NS management information. The host controller 11 then sends the NS management information provided by the NS management information provider 152 to host 2. Alternatively, storage management APIs such as Redfish or storage configuration processes such as Swordfish may be used to obtain NS management information.
[0087] In the third embodiment, target 1b is configured to provide NS management information to host 2. By obtaining NS management information from target 1b, host 2 can recognize, for example, which NS21 is being used by which host 2. Therefore, effects such as preventing erroneous access when using separate NS21s for each host 2 and reducing maintenance costs can be expected.
[0088] (Fourth Embodiment) Next, a fourth embodiment will be described. Figure 16 shows an example configuration of the controller 10c in the target 1c of the fourth embodiment.
[0089] The controller 10c of the fourth embodiment, compared to the controller 10a of the second embodiment, has a management unit 15 that further includes an NS management information storage unit 153. The NS management information storage unit 153 is provided to store the NS management information stored in the management unit 15 in the memory 20.
[0090] For example, one of several NVMe commands, whose purpose can be defined independently by the vendor, may be pre-assigned for saving NS management information. When the host controller 11 receives this vendor-specific NVMe command from host 2, it requests the NS management information storage unit 153 to save the NS management information to memory 20. Note that a storage management API such as Redfish or a storage configuration process such as Swordfish may be used to save the NS management information. Furthermore, it is preferable that the NVMe command requesting the saving of NS management information can, through parameters or other means, save only the NS management information related to the host 2 that sent the command, or save the NS management information related to all hosts 2, including the host 2 that sent the command.
[0091] In the fourth embodiment, when a connect command is received, if NS management information relating to the host 2 that sent the command is stored in memory 20, the target 1c does not create a virtual controller 11A for the host 2 to match the attach state of NS21 in the memory-side controller 12. Instead of creating such a virtual controller 11A, the target 1c of the fourth embodiment creates a virtual controller 11A for the host 2 so as to reproduce the attach state of NS21 indicated by the NS management information stored in memory 20.
[0092] This allows, for example, when reconnecting host 2 and target 1c for maintenance or fault recovery, to reproduce the attach state of NS21 at the time of disconnection without having to perform NS operations again from host 2. As a result, benefits such as reduced maintenance costs and downtime can be expected.
[0093] Figure 17 is a flowchart showing the operation procedure when a request to save NS management information is received in target 1c of the fourth embodiment.
[0094] When the host-side controller 11 receives a request to save NS management information, for example, via a vendor-specific NVMe command, it determines whether the information to be saved is the NS management information of all hosts 2 (S901). If the information to be saved is the NS management information of all hosts 2 (S901: YES), the host-side controller 11 uses the NS management information storage unit 153 to save the NS management information of all hosts 2 to the memory 20 (S902) and sends a response to the host 2 indicating that the NS management information has been saved (S904). On the other hand, if the information to be saved is not the NS management information of all hosts 2 (S901: NO), the host-side controller 11 uses the NS management information storage unit 153 to save only the NS management information of the requesting host 2 to the memory 20 (S903) and sends a response to the host 2 indicating that the NS management information has been saved (S904).
[0095] Figure 18 is a flowchart showing the operation procedure when a connect command is received in target 1c of the fourth embodiment.
[0096] When the connect command is received, the host controller 11 reads the NS management information from the memory 20 (S1001). The host controller 11 then refers to the read NS management information to determine whether or not the NS management information of the host 2 that sent the connect command (target host 2) was stored in the memory 20 (S1002).
[0097] If the NS management information for target host 2 is saved (S1002:YES), the creation unit 14 creates a virtual controller 11A to which the NS21 that was attached at the time of the previous disconnection is attached, based on the NS management information read from memory 20 (S1003). The management unit 15 registers the NS management information of the created virtual controller 11A (S1007). The host-side controller 11 sends a connect completion response to host 2 (S1006).
[0098] On the other hand, if the NS management information for target host 2 is not saved (S1002: NO), the confirmation unit 13 checks the NS attach status on the memory-side controller 12 (S1004). The creation unit 14 creates a virtual controller 11A that matches the NS attach status on the memory-side controller 12 notified by the confirmation unit 13 (S1005). The management unit 15 registers the NS management information of the created virtual controller 11A (S1007). The host-side controller 11 sends a response to host 2 indicating that the connection with host 2 is complete (S1006).
[0099] In the fourth embodiment, target 1c stores NS management information in memory 20, which allows the connection state of NS21 at the time of disconnection to be reproduced upon reconnection, thus enabling control downtime and other benefits.
[0100] While several embodiments of the present invention have been described, these embodiments are presented as examples only and are not intended to limit the scope of the invention. These novel embodiments can be carried out in a variety of other forms, and various omissions, substitutions, and modifications can be made without departing from the spirit of the invention. These embodiments and their variations are included in the scope and spirit of the invention, as well as in the claims of the invention and its equivalents. [Explanation of symbols]
[0101] 1...Target, 2...Host, 3...Network device, 10...Controller, 11...Host-side controller, 11A...Virtual controller, 12...Memory-side controller, 13...NS status confirmation unit, 14...Virtual controller creation unit, 15...Virtual controller / NS status management unit, 20...Memory, 21...NS, 100...Target system, 111...Admin command passthrough unit, 141...NS attach unit, 151...NSID conversion unit, 152...NS management information provision unit, 153...NS management information storage unit, 200...Host system, 1000...Computer system.
Claims
1. Non-volatile memory equipped with storage space, A controller capable of communicating with one or more hosts, including a first host, via a network, and capable of logically dividing the storage area of the non-volatile memory to create namespaces, It is equipped with, The aforementioned controller, In response to receiving a first command requesting a connection from the first host, a virtual controller is created to enable the first host to accept requests from the network for operations including the creation, deletion, or attachment / detachment of the namespace, based on the status of the namespace being attached to the storage area of the non-volatile memory, and to enable the first host to independently attach / detach the namespace regardless of the attachment / detachment of the namespace on other hosts. When a second command relating to the operation of the namespace is received from the first host, the virtual controller executes the processing relating to the operation of the namespace requested by the second command, based on the namespace installation status in the virtual controller. Memory system.
2. The aforementioned controller, When the first command is received from the first host, a first virtual controller is created for the first host. When the first command is received from the second host, a second virtual controller is created for the second host. When the first host receives the second command requesting the installation or removal of the namespace as the operation, the first virtual controller installs or removes the namespace specified by the second command. When the second host receives the second command requesting the installation or removal of the namespace as the operation, the second virtual controller installs or removes the namespace specified by the second command. The system manages the correspondence between a first identifier of the namespace created in the non-volatile memory and a second identifier of the namespace that is installed in the first virtual controller, and manages the correspondence between the first identifier and a third identifier of the namespace that is installed in the second virtual controller. When the first host receives a third command in which the namespace is specified by the second identifier and access to the namespace is requested, the second identifier is converted to the first identifier, and the processing related to the access requested by the third command to the namespace indicated by the first identifier is executed. When the second host receives the third command in which the namespace is specified by the third identifier, the third identifier is converted to the first identifier, and the processing related to the access requested by the third command to the namespace indicated by the first identifier is executed. The memory system according to claim 1.
3. The aforementioned controller, When the first namespace is not installed on any virtual controller, including the first virtual controller, and the first host receives the second command requesting installation of the first namespace as the operation, the first namespace is created in the non-volatile memory and the first namespace is installed on the first virtual controller. When the first namespace is installed on a virtual controller other than the first virtual controller, and the first host receives the second command requesting installation of the first namespace as the operation, the creation of the first namespace in the non-volatile memory is omitted, and the first namespace is installed on the first virtual controller. The memory system according to claim 2.
4. The aforementioned controller, When the second namespace is installed on the first virtual controller and not installed on any other virtual controller, and the first host receives the second command requesting the removal of the second namespace as the operation, the second namespace is transitioned from a state created in the non-volatile memory to a state released, and the second namespace is transitioned from a state installed on the first virtual controller to a state removed. When the second namespace is installed on the first virtual controller and on virtual controllers other than the first virtual controller, and the first host receives the second command requesting the removal of the second namespace as the operation, the transition of the second namespace from the state created in the non-volatile memory to the state released is omitted, and the second namespace is transitioned from the state installed on the first virtual controller to the state removed. The memory system according to claim 2.
5. The aforementioned controller, When the third namespace is not installed on any virtual controller other than the first virtual controller, and the first host receives the second command requesting deletion of the third namespace as the operation described above, the third namespace is deleted from the non-volatile memory. If the third namespace is installed on a virtual controller other than the first virtual controller, and the first host receives the second command requesting deletion of the third namespace as the operation, an error response is sent to the first host. The memory system according to claim 2.
6. The memory system according to claim 5, wherein when the controller receives the second command from the first host requesting the deletion of the third namespace while the third namespace is not installed in any virtual controller other than the first virtual controller, if the third namespace was installed in the first virtual controller, the controller transitions the third namespace from the state where it is installed in the first virtual controller to the state where it is uninstalled, and deletes the third namespace from the non-volatile memory.
7. The memory system according to claim 5, wherein when the controller receives the second command from the first host requesting deletion as the operation on the third namespace, while the third namespace is not installed on any virtual controller other than the first virtual controller, the controller sends an error response to the first host if the third namespace was installed on the first virtual controller.
8. The memory system according to claim 2, wherein when the controller receives a second command from the first host requesting the creation of a namespace as the operation, the controller creates the namespace specified by the second command in the storage area of the non-volatile memory.
9. The aforementioned controller, A first table is managed that stores the correspondence between the namespace identifier created in the storage area of the non-volatile memory and the namespace identifier in the state installed in the virtual controller, including the correspondence between the first identifier and the second identifier and the correspondence between the first identifier and the third identifier. When a fourth command requesting the first table is received from the host, the first table is sent to the host. The memory system according to claim 2.
10. The aforementioned controller, A first table is managed that stores the correspondence between the namespace identifier created in the storage area of the non-volatile memory and the namespace identifier in the state installed in the virtual controller, including the correspondence between the first identifier and the second identifier and the correspondence between the first identifier and the third identifier. When a fifth command is received from the host requesting the storage of the first table in the non-volatile memory, the first table is stored in the non-volatile memory. The memory system according to claim 2.
11. A control method for a memory system that can communicate with one or more hosts, including a first host, via a network, and can logically divide the storage area of a non-volatile memory having a storage area to create namespaces, In response to receiving a first command requesting a connection from the first host, a virtual controller is created to enable the first host to accept requests from the network for operations including the creation, deletion, or attachment / detachment of the namespace, based on the status of the namespace being attached to the storage area of the non-volatile memory, and to enable the first host to independently attach / detach the namespace regardless of the attachment / detachment of the namespace on other hosts. When a second command relating to the operation of the namespace is received from the first host, the virtual controller executes the processing relating to the operation of the namespace requested by the second command, based on the namespace installation status in the virtual controller. Control method.
Citation Information
Patent Citations
Memory system and control method
JP2018101334A
Bridge device and storage adjacency operation method using bridge device
JP2019075104A
Storage device
JP2021077208A
I / O request processing method and device
JP2021510215A
Method for managing name space in storage device, and storage device for using method
JP2022016368A