JP2022039501A - Storage control device, transmission state determination program and storage system - Google Patents
Storage control device, transmission state determination program and storage system Download PDFInfo
- Publication number
- JP2022039501A JP2022039501A JP2020144566A JP2020144566A JP2022039501A JP 2022039501 A JP2022039501 A JP 2022039501A JP 2020144566 A JP2020144566 A JP 2020144566A JP 2020144566 A JP2020144566 A JP 2020144566A JP 2022039501 A JP2022039501 A JP 2022039501A
- Authority
- JP
- Japan
- Prior art keywords
- identifier
- control device
- data
- storage control
- storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000005540 biological transmission Effects 0.000 title abstract 3
- 238000012546 transfer Methods 0.000 claims abstract description 117
- 230000004044 response Effects 0.000 claims abstract description 75
- 238000000034 method Methods 0.000 claims description 17
- 239000007787 solid Substances 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 39
- 238000010586 diagram Methods 0.000 description 28
- 238000011084 recovery Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000005856 abnormality Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 239000000470 constituent Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Landscapes
- Information Transfer Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
本発明は、ストレージ制御装置、送達状況判定プログラムおよびストレージシステムに関する。 The present invention relates to a storage control device, a delivery status determination program, and a storage system.
近年、NVMe(Non-Volatile Memory Express) SSD(Solid State Drive)をストレージデバイスとして採用したストレージシステムが開発されている。NVMeは、不揮発性メモリを使用したフラッシュストレージでの通信を最適化するための通信プロトコルである。 In recent years, a storage system that employs NVMe (Non-Voltile Memory Express) SSD (Solid State Drive) as a storage device has been developed. NVMe is a communication protocol for optimizing communication in flash storage using non-volatile memory.
先行技術としては、ストレージ装置において、コントローラが、それぞれ異なる優先度が設定された複数のコマンドキューを含むキュー群を自コントローラ内または記憶デバイス内に生成し、記憶デバイスに対するコマンドのうち、より迅速な処理が求められるコマンドをより優先度が高いコマンドキューにポストするものがある。また、DMA(Direct Memory Access)コントローラが、スイッチを介して他のCM(Controller Module)へ転送されたデータの転送状況をスイッチから読み出し、読み出した転送状況をメモリに書き込む技術がある。 Prior art, in a storage device, a controller creates a queue group containing multiple command queues with different priorities in its own controller or in a storage device, and among the commands to the storage device, it is faster. Some commands that need to be processed are posted to a higher priority command queue. Further, there is a technique in which a DMA (Direct Memory Access) controller reads the transfer status of data transferred to another CM (Controller Model) via a switch from the switch, and writes the read transfer status to a memory.
しかしながら、従来技術では、他のストレージ制御装置を介して、NVMe SSDなどのストレージデバイスにアクセスする場合、ストレージデバイスから転送されたデータの送達保証を確保することができないという問題がある。 However, in the prior art, when accessing a storage device such as an NVMe SSD via another storage control device, there is a problem that the delivery guarantee of the data transferred from the storage device cannot be ensured.
一つの側面では、本発明は、データの送達状況を判別可能にすることを目的とする。 In one aspect, it is an object of the present invention to make it possible to determine the delivery status of data.
1つの実施態様では、データ転送用のバッファ領域を含み、前記バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行する、内部の回路を再構成可能な集積回路または専用の集積回路を備え、他のストレージ制御装置を経由して、レスポンスを要求しないデータ転送を行うストレージデバイスにアクセスする場合、自メモリへのリードデータの転送を要求するとともに、前記集積回路内の指定した第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を、前記他のストレージ制御装置に送信し、前記集積回路から前記第1の識別子を指定した割り込みを受け付けた場合、前記第1の識別子に対応する割り込みフラグを有効にし、前記実行依頼に応じて前記他のストレージ制御装置から前記ストレージデバイスに発行される前記リードコマンドの実行が完了した場合に、前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付け、前記完了応答を受け付けた場合、前記第1の識別子に対応する割り込みフラグを参照して、前記リードデータの送達状況を判定する、制御部を有するストレージ制御装置が提供される。 In one embodiment, an internal circuit can be reconfigured that includes a buffer area for data transfer and issues an interrupt with an identifier corresponding to the buffer area when a write is made to the buffer area. When accessing a storage device that has an integrated circuit or a dedicated integrated circuit and performs data transfer that does not require a response via another storage control device, the transfer of read data to its own memory is requested and the integration is performed. A read command execution request requesting the transfer of a predetermined data to the buffer area corresponding to the specified first identifier in the circuit is transmitted to the other storage control device, and the first identifier is transmitted from the integrated circuit. When the interrupt for which is specified is received, the interrupt flag corresponding to the first identifier is enabled, and the execution of the read command issued from the other storage control device to the storage device in response to the execution request is completed. When the completion response with the specified first identifier is received from the other storage control device and the completion response is received, the read data is referred to with reference to the interrupt flag corresponding to the first identifier. A storage control device having a control unit for determining the delivery status of the data is provided.
本発明の一側面によれば、データの送達状況を判別可能にすることができるという効果を奏する。 According to one aspect of the present invention, there is an effect that the delivery status of data can be discriminated.
以下に図面を参照して、本発明にかかるストレージ制御装置、送達状況判定プログラムおよびストレージシステムの実施の形態を詳細に説明する。 Hereinafter, embodiments of the storage control device, the delivery status determination program, and the storage system according to the present invention will be described in detail with reference to the drawings.
(実施の形態)
図1は、実施の形態にかかるストレージシステムのシステム構成例を示す説明図である。図1において、ストレージシステム100は、CM#0と、CM#1と、ストレージデバイス$0と、を含む。CM#0,#1およびストレージデバイス$0は、CE(Controller Enclosure)$0に設けられている。CEは、CM等を収容するためのケース(箱)である。
(Embodiment)
FIG. 1 is an explanatory diagram showing an example of a system configuration of a storage system according to an embodiment. In FIG. 1, the
CM#0,#1は、自配下のストレージデバイス$0に対するアクセスを制御するストレージ制御装置の一例である。同一のCE$0内のCM#0,#1は、相互に通信可能に直接接続されている。CE$0は、例えば、1つのストレージ装置として実現される。
ストレージデバイス$0は、レスポンスを要求しないデータ転送を行うストレージデバイスである。例えば、ストレージデバイス$0は、NVMe SSDである。NVMeでは、SSDの接続規格としてPCIe(Peripheral Component Interconnect-Express)が用いられる。PCIeでは、ポステッド・ライト(Posted write)のため、レスポンスを必要としない書き込み転送が行われる。 The storage device $ 0 is a storage device that transfers data without requesting a response. For example, the storage device $ 0 is an NVMe SSD. In NVMe, PCIe (Peripheral Component Interconnect-Express) is used as the SSD connection standard. In PCIe, since it is a posted write, write transfer that does not require a response is performed.
以下の説明では、ストレージデバイス$0として、「NVMe SSD$0」を例に挙げて説明する。NVMe SSD$0は、NVMeの通信プロトコルを用いるSSDである。ただし、ストレージデバイス$0として、レスポンスを要求しないデータ転送を行う他のストレージデバイスを用いることにしてもよい。 In the following description, "NVMe SSD $ 0" will be described as an example of the storage device $ 0. NVMe SSD $ 0 is an SSD that uses the NVMe communication protocol. However, as the storage device $ 0, another storage device that transfers data without requesting a response may be used.
CM#0,#1には、ホスト装置110が接続される。ホスト装置110は、例えば、業務アプリなどを実行するサーバである。CM#0,#1とホスト装置110は、例えば、FC(Fibre Channel)やiSCSI(Internet Small Computer System Interface)などを用いたSAN(Storage Area Network)を介して接続される。
The
以下の説明では、ストレージシステム100内のCM#0,#1のうちの任意のCMを「CM#i」と表記する場合がある(i=0,1)。また、ホスト装置110からのリクエスト(I/O要求)を受け付けたCM#iを「担当CM」と表記する場合がある。
In the following description, any CM among
CM#iは、例えば、CPU(Central Processing Unit)#iと、メモリ#iと、CA(Channel Adapter)#iと、FPGA(Field Programmable Gate Array)#iと、PCIe SW(switch)#iと、を含む。各構成部は、バスによってそれぞれ接続される。 The CM # i includes, for example, a CPU (Central Processing Unit) # i, a memory # i, a CA (Channel Adapter) # i, an FPGA (Field Programmable Gate Array) # i, and a PCIe SW (switch) # i. ,including. Each component is connected by a bus.
CPU#iは、CM#iの全体の制御を司る。CPU♯iは、複数のコアを有していてもよい。メモリ#iは、データやプログラムを格納する。メモリ#iは、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU#iのワークエリアとして使用される。メモリ#iに記憶されるプログラムは、CPU#iにロードされることで、コーディングされている処理をCPU#iに実行させる。メモリ#iは、データやプログラムを一時的に記憶するキャッシュメモリとしても用いられてもよい。 CPU # i controls the entire CM # i. CPU #i may have a plurality of cores. Memory #i stores data and programs. The memory #i includes, for example, a ROM (Read Only Memory), a RAM (Random Access Memory), a flash ROM, and the like. Specifically, for example, a flash ROM or ROM stores various programs, and RAM is used as a work area of CPU # i. The program stored in the memory # i is loaded into the CPU # i to cause the CPU # i to execute the coded process. Memory #i may also be used as a cache memory for temporarily storing data and programs.
CA#iは、ホスト装置110と通信するためのインターフェースである。CA#iは、例えば、LAN、SAN、FC等に準拠したアダプタを有する。FPGA#iは、プログラマブルロジックデバイスであり、内部の回路を再構成可能な集積回路である。PCIe SW#iは、他のデバイス(CM、ストレージデバイス)と通信するためのインターフェースである。CM#iは、例えば、NVMe SSD$0へのアクセスを制御するIOC(Input/Output Controller)を有していてもよい。
CA # i is an interface for communicating with the
なお、ストレージシステム100に含まれるCEの数は1台に限定されるものではなく、また、CEに含まれるCMの数も2台に限定されるものではない。例えば、ストレージシステム100には、複数のCEが含まれていてもよい(例えば、後述の図12参照)。
The number of CEs included in the
また、図1では、1台のホスト装置110がCM#0,#1に接続される場合を例に挙げて説明したが、これに限らない。例えば、複数台のホスト装置のそれぞれが、CM#0,#1のうちの1以上のCMに接続されることにしてもよい。
Further, in FIG. 1, the case where one
また、図1の例では、CM#iがFPGA#iを有することにしたが、これに限らない。例えば、CM#iにおいてFPGA#iが行う処理を、専用の集積回路(例えば、LSI:Large Scale Integration)により実現することにしてもよい。すなわち、CM#iは、FPGA#iの換わりに、FPGA#iと同様の機能を持つ専用の集積回路を有することにしてもよい。 Further, in the example of FIG. 1, CM # i is determined to have FPGA # i, but the present invention is not limited to this. For example, the processing performed by FPGA # i in CM # i may be realized by a dedicated integrated circuit (for example, LSI: Large Scale Integration). That is, the CM # i may have a dedicated integrated circuit having the same function as the FPGA # i instead of the FPGA # i.
ここで、SAS(Serial Attached SCSI) SSDの場合、担当CMは、自系IOCから他系EXPへのパスがあるため、自系EXPと他系EXPの両系でSSDにアクセスできる。EXP(expander)は、SAS EXPであり、コントローラと複数のSASディスクドライブを接続するための中継デバイスである。 Here, in the case of a SAS (Serial Attached SCSI) SSD, the CM in charge can access the SSD in both the own EXP and the other EXP because there is a path from the own IOC to the other EXP. The EXP (expander) is a SAS EXP, which is a relay device for connecting a controller and a plurality of SAS disk drives.
一方、SAS SSDに換えて、NVMe SSDをストレージデバイスとして採用するにあたり、SAS EXPをPCIe SWへ置き換えた場合、自系IOCから他系EXPへのパスがなくなるため、担当CMがSSDの片系しかアクセスできない。したがって、例えば、他CM配下のNVMe SSDとデータのやりとりをするには、他CM経由でアクセスすることになる。この際、例えば、他CMのバッファ経由でアクセスすると、レスポンスが遅いため、担当CMとSSDとの間で直接データ(リードデータ)のやりとりを行うことが望ましい。 On the other hand, when using NVMe SSD as a storage device instead of SAS SSD, if SAS EXP is replaced with PCIe SW, there will be no path from the own IOC to another EXP, so the CM in charge is only one SSD. I can't access it. Therefore, for example, in order to exchange data with an NVMe SSD under another CM, it is accessed via another CM. At this time, for example, if the access is made via the buffer of another CM, the response is slow, so it is desirable to directly exchange data (read data) between the CM in charge and the SSD.
しかしながら、NVMe SSDをストレージデバイスとする従来のストレージシステムでは、異なるPCIeドメインにあるNVMe SSDにアクセスする場合、データの送達保証がとれないという問題がある。例えば、担当CMのPCIe SWとNVMe SSDとの間に障害が発生した場合を想定する。 However, in a conventional storage system using an NVMe SSD as a storage device, there is a problem that data delivery cannot be guaranteed when accessing an NVMe SSD in a different PCIe domain. For example, assume a case where a failure occurs between the PCIe SW of the CM in charge and the NVMe SSD.
この場合、担当CMが、他CMにNVMe SSDへのアクセスを依頼する。他CMは、担当CMが読み出したいデータが格納されたSSDへアクセス可能なCMである。以下の説明では、担当CMが読み出したいデータが格納されたSSDへアクセス可能なCMを「DCM(Drive CM)」と表記する場合がある。 In this case, the CM in charge requests another CM to access the NVMe SSD. The other CM is a CM that can access the SSD in which the data that the responsible CM wants to read is stored. In the following description, a CM that can access the SSD in which the data to be read by the CM in charge is stored may be referred to as "DCM (Drive CM)".
DCMは、担当CMからの依頼に応じて、NVMe SSDへリードコマンドを発行する。NVMe SSDは、DCMからのリードコマンドに応じて、担当CMのメモリへリードデータをDMA転送する。このとき、PCIeのポステッド・ライトのため、担当CMのメモリへ転送されたリードデータの送達保証がとれない。 DCM issues a read command to NVMe SSD in response to a request from the CM in charge. The NVMe SSD transfers the read data to the memory of the CM in charge by DMA in response to the read command from the DCM. At this time, due to the posted write of PCIe, the delivery of the read data transferred to the memory of the CM in charge cannot be guaranteed.
すなわち、一時的にPCIe SW間のリンクが切れるなどの障害が発生しても、NVMe SSDから担当CMのメモリへのリードデータの転送が正常に行われたか否かを判断することができない。データの送達保証が確保できないと、データ抜けが検出できず、ホスト装置においてデータ化けを引き起こすおそれがある。 That is, even if a failure such as a temporary disconnection of the link between the PCIe SWs occurs, it is not possible to determine whether or not the read data has been normally transferred from the NVMe SSD to the memory of the CM in charge. If data delivery guarantee cannot be ensured, data omission cannot be detected and data may be garbled in the host device.
具体的には、例えば、NVMe SSDは、担当CMのメモリへのリードデータの転送処理が完了すると、DCMへMSI(Message Signaled Interrupts)-X割り込みを発行する。DCMは、NVMe SSDからのMSI-X割り込みにより、リードデータの転送処理が完了したと判断すると、担当CMへコマンドの完了応答を送信する。 Specifically, for example, the NVMe SSD issues an MSI (Message Signaled Interrupts) -X interrupt to the DCM when the transfer processing of the read data to the memory of the CM in charge is completed. When the DCM determines that the read data transfer process is completed by the MSI-X interrupt from the NVMe SSD, the DCM sends a command completion response to the CM in charge.
しかし、DCMから担当CMへ完了応答が送信されても、担当CMは、データ転送が正常に行われたか否かは判断できない。すなわち、データ転送にともなう担当CMのメモリからの応答はないため(ポステッド・ライト)、データが正常に転送されなかった場合に、担当CMは認識することができない。この場合でも、DCMから担当CMへ完了応答が送信され、ホスト装置においてデータ化けが発生する。 However, even if the completion response is transmitted from the DCM to the CM in charge, the CM in charge cannot determine whether or not the data transfer has been performed normally. That is, since there is no response from the memory of the CM in charge due to the data transfer (posted write), the CM in charge cannot recognize when the data is not transferred normally. Even in this case, the completion response is transmitted from the DCM to the CM in charge, and data garbled occurs in the host device.
そこで、本実施の形態では、CM#i(担当CM)が他CM#j(DCM)を経由して、NVMe SSD$kにアクセスする場合であっても、データの送達保証を確保することができるストレージシステム100について説明する。具体的には、例えば、CM#i(担当CM)に、データ転送用のバッファ領域を含み、バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行するFPGA#iを設ける。そして、CM#i(担当CM)は、NVMe SSD$kからメモリ#iへのデータ転送と同一の経路を使用して行われるFPGA#i内のバッファ領域への書き込み状況から、メモリ#iへのリードデータの送達状況を判別する。
Therefore, in the present embodiment, even when CM # i (CM in charge) accesses NVMe SSD $ k via another CM # j (DCM), it is possible to secure the guarantee of data delivery. The
図2は、ストレージシステム100の一実施例を示す説明図である。ここでは、CM#0を担当CMとし、CM#1をDCMとする。また、担当CM#0のPCIe SW#0とNVMe SSD$0との間に障害が発生した場合を想定する。この場合、担当CM#0は、DCM#1を経由して、NVMe SSD$0にアクセスする。なお、図2では、各CM#0,#1のハードウェア構成の一部を抜粋して表示している。
FIG. 2 is an explanatory diagram showing an embodiment of the
担当CM#0は、FPGA#0に、SQ IDに対応したDoorbellレジスタ(DBL0,1,…,N)を設ける。Doorbellレジスタ(DBR)は、データ転送用のバッファ領域の一例である。SQ IDは、後述するSQ(Submission Queue)を一意に識別する識別子である。担当CM#0は、FPGA#0のDoorbellレジスタ領域をメモリ#0にマッピングする。例えば、メモリ#0内のDoorbell0は、FPGA#0内のDBL0に対応する。
The
また、担当CM#0は、メモリ#0内にFPGA#0からの割り込みを設定するMSI-X0,1,…,Nを設ける。FPGA#0は、DoorbellレジスタへのWriteが行われた場合、DoorbellレジスタのIDに対応したMSI-X割り込みを、CM#0のCPU#0へ発行する。
Further, the
DCM#1は、メモリ#1内にSQとCQ(Completion Queue)のペアをN個作成する。Nは、任意に設定可能であり、例えば、CPU#1のコア数に応じた値が設定される。SQ、CQは、NVMeのコマンドごとに、DCM#1のCPU#1からNVMe SSD$0へのアクセスに用いられる。
SQは、コマンドを格納するキューである。CQは、コマンドの完了状態を示す情報を格納するキューである。具体的には、例えば、DCM#1は、SQ ID(0,1,…,N)ごとに、SQとCQとのペアをメモリ#1内に作成する。例えば、メモリ#1内の「SQ 0」と「CQ 0」は、SQ ID「0」に対応するSQとCQとのペアを示している。
SQ is a queue for storing commands. The CQ is a queue that stores information indicating the completion status of the command. Specifically, for example,
ここで、NVMeのコマンドのデータ構造例について説明する。 Here, an example of the data structure of the NVMe command will be described.
図3は、NVMeコマンドのデータ構造例を示す説明図である。図3において、NVMeコマンドcmdは、Opcode、データアドレス1、データアドレス2、Starting LBA(Logical Block Addressing)およびNumber of Logical Blocksを含む。
FIG. 3 is an explanatory diagram showing an example of a data structure of an NVMe command. In FIG. 3, the NVMe command cmd includes Opcode,
ここで、Opcodeは、コマンドの種類を示す。例えば、リードコマンドの場合、OpcodeはReadとなる。データアドレス1は、担当CMのメモリ内のデータ領域の転送先アドレスを示す。データアドレス2は、担当CMのFPGA内のDoorbellレジスタのアドレスを示す。 Here, Opcode indicates the type of command. For example, in the case of a read command, Opcode is Read. The data address 1 indicates a transfer destination address of a data area in the memory of the CM in charge. The data address 2 indicates the address of the Doorbell register in the FPGA of the CM in charge.
Starting LBAは、NVMe SSDからリードするブロックの最初のアドレスを示す。Number of Logical Blocksは、NVMe SSDからリードするブロック数を示す。1ブロックは、例えば、512[byte]である。例えば、担当CMのメモリ内のデータ領域に転送するデータのブロック数をLブロックとする。 The Starting LBA indicates the first address of the block to read from the NVMe SSD. Number of Logical Blocks indicates the number of blocks to be read from the NVMe SSD. One block is, for example, 512 [byte]. For example, the number of blocks of data to be transferred to the data area in the memory of the CM in charge is L block.
この場合、Number of Logical Blocksは、Doorbellレジスタへのデータ転送を追加するため、例えば、(L+α)ブロックとする。αブロックは、Doorbellレジスタへの転送分に割り当てられる。αは、任意に設定可能であり、例えば、1に設定される。 In this case, the Number of Logical Blocks is, for example, a (L + α) block in order to add data transfer to the Doorbell register. The α block is allocated to the transfer to the Doorbell register. α can be arbitrarily set, and is set to 1, for example.
ストレージシステム100において、担当CM#0は、図4に示すようなID対応表400を用いて、DCM#1のSQ、CQ、FPGA#0のDoorbellレジスタ、MSI-XのIDによる関連付けを行う。ID対応表400は、例えば、担当CM#0のメモリ#0に記憶される。
In the
図4は、ID対応表の記憶内容の一例を示す説明図である。図4において、ID対応表400は、コマンドID、SQ ID、CQ ID、Doorbell ID、MSI-X IDおよび割り込みフラグのフィールドを有する。各フィールドに情報を設定することで、ID対応情報(例えば、ID対応情報400-1)がレコードとして記憶される。 FIG. 4 is an explanatory diagram showing an example of the stored contents of the ID correspondence table. In FIG. 4, the ID correspondence table 400 has fields for command ID, SQ ID, CQ ID, Doorbell ID, MSI-X ID, and interrupt flag. By setting information in each field, ID correspondence information (for example, ID correspondence information 400-1) is stored as a record.
コマンドIDは、コマンドを一意に識別する識別子である。SQ IDは、DCM#1のメモリ#1内のSQを一意に識別する識別子である。CQ IDは、DCM#1のメモリ#1内のCQを一意に識別する識別子である。Doorbell IDは、担当CM#0のFPGA#0内のDoorbellレジスタを一意に識別する識別子である。
The command ID is an identifier that uniquely identifies the command. The SQ ID is an identifier that uniquely identifies the SQ in the
MSI-X IDは、FPGA#0からのMSI-X割り込みを一意に識別する識別子である。各IDは、0~Nのいずれかの値である。Nは、DCMのメモリ内に作成されるSQとCQとのペアの個数に相当する。割り込みフラグは、FPGA#0からのMSI-X割り込み状態を示す。割り込みフラグ「0」は、割り込みが発生していない状態(無効)を示す。割り込みフラグ「1」は、割り込みが発生した状態(有効)を示す。初期状態では、割り込みフラグは「0」である。
The MSI-X ID is an identifier that uniquely identifies the MSI-X interrupt from
ストレージシステム100では、各リードコマンドに関する一連の流れの中で、SQ、CQ、Doorbellレジスタ、MSI-X割り込みに対して、同じIDを使用する。これにより、担当CM#0のCPU#0が、FPGA#0から受け取ったMSI-X割り込みのIDを確認することで、どのSQ IDのコマンドが完了したか(送達状況)を判別可能にする。
In the
(CM#iの機能的構成例)
つぎに、CM#iの機能的構成例について説明する。まず、図5を用いて、CM#iが担当CMとして動作する場合の機能的構成例について説明する。ここでは、CM#iが担当CMの場合のDCMを「DCM#j」と表記する場合がある(j≠i)。例えば、CM#0が担当CMの場合(i=0)、CM#1がDCMとなる(j=1)。また、リードデータを有するアクセス先のNVMe SSDを「NVMe SSD$k」と表記する場合がある。
(Example of functional configuration of CM # i)
Next, an example of a functional configuration of CM # i will be described. First, with reference to FIG. 5, a functional configuration example in which CM # i operates as the CM in charge will be described. Here, the DCM when CM # i is the responsible CM may be expressed as "DCM # j" (j ≠ i). For example, when
図5は、担当CM#iの機能的構成例を示すブロック図である。図5において、担当CM#iは、第1の受付部501と、第1の要求処理部502と、判定部503と、復旧部504と、を含む。第1の受付部501~復旧部504は制御部となる機能であり、具体的には、例えば、メモリ♯iに記憶されたプログラムをCPU♯iに実行させることにより、または、CA#i、PCIe SW#iにより、その機能を実現する。各機能部の処理結果は、例えば、メモリ♯iに記憶される。
FIG. 5 is a block diagram showing a functional configuration example of the CM # i in charge. In FIG. 5, the CM # i in charge includes a
第1の受付部501は、ホスト装置110からのリクエストを受け付ける。ここで、リクエストは、例えば、NVMe SSD$kに対するリードリクエスト(読出要求)である。リクエストには、例えば、アクセス先の情報やリードデータのデータサイズなどが含まれる。具体的には、例えば、第1の受付部501は、CA#iを介して、ホスト装置110からのリードリクエストを受け付ける。
The
第1の要求処理部502は、DCM#j(他のストレージ制御装置)を経由して、NVMe SSD$kにアクセスする場合、NVMe SSD$kに対して自メモリ#iへのリードデータの転送を要求するリードコマンドの実行依頼を、当該リードコマンドに対応する識別子(第1の識別子)を指定して、DCM#jに送信する。
When the first
ここで、DCM#jを経由して、NVMe SSD$kにアクセスする場合は、例えば、担当CM#iのPCIe SW#iとNVMe SSD$kとの間に障害が発生した場合である。また、DCM#jを経由して、NVMe SSD$kにアクセスする場合は、NVMe SSD$kが、担当CM#iとは異なるCEに配置されている場合である。 Here, when accessing NVMe SSD $ k via DCM # j, for example, there is a case where a failure occurs between PCIe SW # i and NVMe SSD $ k of the CM # i in charge. Further, when accessing NVMe SSD $ k via DCM # j, it is a case where NVMe SSD $ k is located in a CE different from the CM # i in charge.
リードコマンドは、例えば、図3に示したNVMeコマンドcmdである。リードデータは、NVMe SSD$kのStarting LBAから読み出されるLブロック分のデータであり、担当CM#iのメモリ#i内のデータ領域に転送される。 The read command is, for example, the NVMe command cmd shown in FIG. The read data is data for L blocks read from the Starting LBA of NVMe SSD $ k, and is transferred to the data area in the memory #i of the CM # i in charge.
リードコマンドに対応する第1の識別子は、例えば、リードコマンドに割り振られるSQ IDである。例えば、各リードコマンドには、0~NのSQ IDのうち、空きのIDであって、もっと値の小さいSQ IDが割り振られる。空きのIDは、他のリードコマンドに対応していないID、例えば、図4に示したID対応表400に登録されていないIDである。 The first identifier corresponding to the read command is, for example, the SQ ID assigned to the read command. For example, among the SQ IDs from 0 to N, an empty ID with a smaller value is assigned to each read command. The empty ID is an ID that does not correspond to another read command, for example, an ID that is not registered in the ID correspondence table 400 shown in FIG.
DCM#jへ第1の識別子を指定したリードコマンドの実行依頼が送信されると、DCM#jからNVMe SSD$kに対して、FPGA#i内の第1の識別子に対応するバッファ領域への所定のデータの転送要求が追加されたリードコマンドが発行される。第1の識別子に対応するバッファ領域は、例えば、SQ IDに対応したDoorbellレジスタである。 When a read command execution request with the first identifier specified is sent to DCM # j, DCM # j sends NVMe SSD $ k to the buffer area corresponding to the first identifier in FPGA # i. A read command is issued with a request to transfer the specified data added. The buffer area corresponding to the first identifier is, for example, the Doorbell register corresponding to the SQ ID.
すなわち、第1の識別子を指定したリードコマンドの実行依頼は、自メモリ#iへのリードデータの転送を要求するとともに、自FPGA#i内の第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼に相当する。 That is, the execution request of the read command in which the first identifier is specified requests the transfer of the read data to the own memory #i, and is predetermined to the buffer area corresponding to the first identifier in the own FPGA # i. Corresponds to the execution request of the read command that requests the transfer of data.
所定のデータは、任意に設定可能であり、例えば、ホスト装置110から要求されるリードデータよりもデータ量が少ないデータである。所定のデータは、リードデータに続く1ブロック分のデータであってもよい。また、所定のデータは、例えば、NVMe SSD$kからメモリ#iへのリードデータの転送が完了した後、FPGA#i内の第1の識別子に対応するバッファ領域へ転送されるように要求される。なお、DCM側の具体的な処理内容については、図6を用いて後述する。
The predetermined data can be arbitrarily set, and is, for example, data having a smaller amount of data than the read data requested from the
具体的には、例えば、第1の要求処理部502は、ホスト装置110からのリードリクエストに応じて、DCM#jを経由して、NVMe SSD$kにアクセスする場合、ID対応表400を参照して、リードコマンドに割り振るSQ IDを特定する。例えば、ID対応表400にID対応情報が未登録の場合、SQ0(ID:0)が特定される。
Specifically, for example, when the first
第1の要求処理部502は、特定したSQ0に対応するID対応情報(例えば、図4に示したID対応情報400-1)を作成して、ID対応表400に登録する。そして、第1の要求処理部502は、特定したSQ0(ID:0)を指定して、NVMe SSD$kに対するリードコマンドの実行依頼をDCM#jに送信する。アクセス先の情報やリードデータのデータサイズは、リードリクエストから特定される。
The first
また、第1の要求処理部502は、FPGA#iから発行される、第1の識別子を指定した割り込みを受け付けた場合、第1の識別子に対応する割り込みフラグを有効にする。第1の識別子を指定した割り込みは、FPGA#iに設けられた第1の識別子に対応するバッファ領域への書き込みが行われた場合にFPGA#iから発行される。
Further, when the first
具体的には、例えば、FPGA#iは、Doorbell0(ID:0)のDoorbellレジスタへのWriteが行われた場合、Doorbell0(ID:0)を指定したMSI-X割り込みを、CPU#0へ発行する。Doorbell0(ID:0)を指定したMSI-X割り込みは、Doorbell0(ID:0)と関連付けられたMSI-X0(ID:0)のMSI-X割り込みである。この場合、第1の要求処理部502は、ID対応表400を参照して、MSI-X0(ID:0)に対応するID対応情報400-1の割り込みフラグを「1」に設定する。
Specifically, for example, FPGA # i issues an MSI-X interrupt specifying Doorbell 0 (ID: 0) to
判定部503は、第1の要求処理部502によって送信された実行依頼に応じてDCM#jからNVMe SSD$kに発行されるリードコマンドの実行が完了した場合、第1の識別子を指定した完了応答をDCM#jから受け付ける。
When the execution of the read command issued from DCM # j to NVMe SSD $ k in response to the execution request transmitted by the first
発行されるリードコマンドは、メモリ#iへのリードデータの転送を要求するとともに、FPGA#i内の第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドである。FPGA#i内の第1の識別子に対応するバッファ領域への所定のデータの転送要求は、例えば、DCM#jにおいて、メモリ#iへのリードデータの転送を要求するリードコマンドを操作して追加される。 The read command issued is a read command that requests transfer of read data to memory # i and also requests transfer of predetermined data to the buffer area corresponding to the first identifier in FPGA # i. A request for transferring predetermined data to the buffer area corresponding to the first identifier in FPGA # i is added, for example, by operating a read command in DCM # j requesting transfer of read data to memory # i. Will be done.
また、判定部503は、第1の識別子を指定した完了応答を受け付けた場合、第1の識別子に対応する割り込みフラグを参照して、リードデータの送達状況を判定する。具体的には、例えば、判定部503は、SQ IDを指定した完了応答をDCM#jから受け付けた場合に、ID対応表400を参照して、指定されたSQ IDに対応する割り込みフラグの値を確認する。
Further, when the
ここで、割り込みフラグが「1(有効)」の場合、判定部503は、リードデータが送達されたと判定する。すなわち、判定部503は、メモリ#iへのリードデータの転送が正常に行われたと判定する。リードデータは、例えば、ホスト装置110から要求されたLブロック分のデータである。
Here, when the interrupt flag is "1 (valid)", the
一方、割り込みフラグが「0(無効)」の場合、判定部503は、リードデータが送達されなかったと判定する。すなわち、判定部503は、メモリ#iへのリードデータの転送が正常に行われなかったと判定する。なお、判定部503は、例えば、SQ IDを指定したエラー応答をDCM#jから受け付けた場合も、リードデータが送達されなかったと判定する。
On the other hand, when the interrupt flag is "0 (invalid)", the
復旧部504は、リードデータが送達されなかったと判定された場合、所定のリカバリ処理を実行する。所定のリカバリ処理は、例えば、メモリ#iとNVMe SSD$kとの間の経路(リンク)を再構築する処理である。すなわち、一時的なハードウェア障害が発生して、リンクが不安定であったり、通信速度が規定の速度でリンクされていなかったりする可能性があるため、リカバリ処理を実施する。
When it is determined that the read data has not been delivered, the
また、第1の要求処理部502は、所定のリカバリ処理が完了した場合、NVMe SSD$kに対して自メモリ#iへのリードデータの転送を要求するリードコマンドの実行依頼を、当該リードコマンドに対応する第1の識別子を指定して、DCM#jに再度送信することにしてもよい。
Further, when the predetermined recovery process is completed, the first
なお、リカバリ処理を実行後にリードコマンドの実行依頼を再実施しても、リードデータが送達されなかった場合、復旧部504は、その旨をホスト装置110に通知することにしてもよい。また、メモリ#iへ正常に転送されたリードデータは、ホスト装置110に転送される。
If the read data is not delivered even if the read command execution request is re-executed after the recovery process is executed, the
つぎに、図6を用いて、CM#iがDCMとして動作する場合の機能的構成例について説明する。ここでは、CM#iがDCMの場合の担当CMを「担当CM#j」と表記する場合がある(j≠i)。また、DCM#iの配下のNVMe SSDを「NVMe SSD$k」と表記する場合がある。 Next, with reference to FIG. 6, a functional configuration example in which CM # i operates as a DCM will be described. Here, the CM in charge when CM # i is DCM may be expressed as "CM # j in charge" (j ≠ i). In addition, NVMe SSD under DCM # i may be referred to as "NVMe SSD $ k".
図6は、DCM#iの機能的構成例を示すブロック図である。図6において、DCM#iは、第2の受付部601と、第2の要求処理部602と、を含む。第2の受付部601および第2の要求処理部602は制御部となる機能であり、具体的には、例えば、メモリ♯iに記憶されたプログラムをCPU♯iに実行させることにより、または、CA#i、PCIe SW#iにより、その機能を実現する。各機能部の処理結果は、例えば、メモリ♯iに記憶される。
FIG. 6 is a block diagram showing a functional configuration example of DCM # i. In FIG. 6, DCM # i includes a
第2の受付部601は、担当CM#j(他のストレージ制御装置)から、NVMe SSD$kに対して担当CM#jのメモリ#jへのリードデータの転送を要求するリードコマンドに対応する識別子(第2の識別子)を指定した当該リードコマンドの実行依頼を受け付ける。指定される第2の識別子は、例えば、リードコマンドに割り振られるSQ IDである。
The
第2の要求処理部602は、第2の識別子を指定したリードコマンドの実行依頼を受け付けた場合、他メモリ#jへのリードデータの転送を要求するとともに、他FPGA#j内の指定された第2の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドをNVMe SSD$kに発行する。
When the second
すなわち、第2の識別子を指定したリードコマンドの実行依頼は、他メモリ#jへのリードデータの転送を要求するとともに、他FPGA#j内の第2の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼に相当する。他FPGA#j内の第2の識別子に対応するバッファ領域のアドレスは、例えば、担当CM#jからの実行依頼に含まれていてもよく、また、担当CM#jに問い合わせることにしてもよい。 That is, the execution request of the read command in which the second identifier is specified requests the transfer of the read data to the other memory # j, and at the same time, the predetermined read command to the buffer area corresponding to the second identifier in the other FPGA # j is specified. Corresponds to the execution request of the read command that requests the transfer of data. The address of the buffer area corresponding to the second identifier in the other FPGA # j may be included in the execution request from the responsible CM # j, or may be inquired to the responsible CM # j. ..
第2の要求処理部602は、NVMe SSD$kからリードコマンドで要求されたデータの転送完了通知があった場合、第2の識別子を指定した完了応答を担当CM#jに送信する。完了応答は、リードコマンドが完了したことを示す。また、第2の要求処理部602は、NVMe SSD$kからリードコマンドで要求されたデータの転送エラー通知があった場合、第2の識別子を指定したエラー応答を担当CM#jに送信する。エラー応答は、リードコマンドが正常に完了しなかったことを示す。
When the NVMe SSD $ k notifies the transfer completion of the data requested by the read command, the second
具体的には、例えば、第2の要求処理部602は、他メモリ#jへのリードデータの転送を要求するリードコマンドに、他FPGA#j内の第2の識別子に対応するバッファ領域への所定のデータの転送要求を追加する。そして、第2の要求処理部602は、当該転送要求を追加したリードコマンドを、自メモリ#i内の第2の識別子に対応する第1キューに格納する。第1キューは、コマンドを格納するキューであり、例えば、SQである。
Specifically, for example, the second
つぎに、第2の要求処理部602は、NVMe SSD$kによってリードコマンドの完了を示す情報が、自メモリ#i内の第2の識別子に対応する第2キューに書き込まれた場合、第2の識別子を指定した転送完了応答を担当CM#jに送信する。第2キューは、コマンドの完了状態を示す情報を格納するキューであり、例えば、CQである。
Next, when the information indicating the completion of the read command is written by the NVMe SSD $ k to the second queue corresponding to the second identifier in the own memory #i, the second
なお、NVMe SSD$kにアクセスする際のより詳細な動作例については、例えば、図8および図10を用いて後述する。 A more detailed operation example when accessing NVMe SSD $ k will be described later with reference to, for example, FIGS. 8 and 10.
(ストレージシステム100の動作例)
つぎに、図7を用いて、ストレージシステム100の動作例について説明する。ただし、CM#0を担当CMとし、CM#1をDCMとする。また、担当CM#0のPCIe SW#0とNVMe SSD$0との間に障害が発生し、担当CM#0からNVMe SSD$0へ直接アクセスできない場合を想定する。
(Operation example of storage system 100)
Next, an operation example of the
図7は、ストレージシステム100の動作例を示す説明図である。図7において、(1)各CM#0,#1は、構成デバイスの初期化を行い、各メモリ#0,#1のメモリマッピングを行う。(2)担当CM#0は、SQ-IDを指定して、リードコマンドの実行依頼をDCM#1に送信する。リードコマンドは、NVMe SSD$0に対してメモリ#0へのリードデータの転送を要求するリードコマンドである。
FIG. 7 is an explanatory diagram showing an operation example of the
(3)DCM#1は、図3に示したようなコマンドフォーマットで、担当CM#0のFPGA#0内のSQ-IDに対応するDoorbellレジスタへの所定のデータ(1ブロック分のデータ)の転送要求をリードコマンドに追加する。そして、DCM#1は、当該リードコマンドをNVMe SSD$0に送信する。
(3)
具体的には、例えば、DCM#1は、リードコマンドのデータアドレス1に、担当CM#0のメモリ#0内のデータ領域の転送先アドレスを設定する。また、DCM#1は、データアドレス2に、担当CM#0のFPGA#0内のSQ-IDに対応するDoorbellレジスタのアドレスを設定する。また、DCM#1は、Number of Logical Blocksを「L+1」として設定する。
Specifically, for example,
(4)NVMe SSD$0は、リードコマンドに応じて、担当CM#0のメモリ#0のデータ領域(リードコマンドのデータアドレス1に格納されているアドレス)に、Starting LBAからLブロック分のリードデータを書き込む。
(4) NVMe SSD $ 0 reads L blocks from Starting LBA to the data area of
(5)NVMe SSD$0は、担当CM#0のFPGA#0内のDoorbellレジスタ領域(データアドレス2に格納されているアドレス)に、リードデータに続く1ブロック分のデータを書き込む。
(5) NVMe SSD $ 0 writes data for one block following the read data to the Doorbell register area (address stored in the data address 2) in
(6)FPGA#0は、担当CM#0のCPU#0へ、書き込みの完了したDoorbellレジスタのDoorbell IDと関連付けられたMSI-X IDを指定した割り込みを発行する。例えば、Doorbell ID「0」のDoorbellレジスタへの書き込みが完了した場合、MSI-X ID「0」を指定した割り込みがCPU#0に発行される。この場合、CPU#0は、ID対応表400内のMSI-X ID「0」に対応する割り込みフラグを「1」に設定する。
(6)
(7)CPU#0は、SQ-IDを指定した転送完了応答をDCM#1から受け付けた場合、ID対応表400内の指定されたSQ-IDに対応する割り込みフラグを参照して、リードデータの送達状況を判定する。
(7) When
これにより、担当CM#0は、DCM#1を介して、NVMe SSD$0にアクセスした際に、リードデータの転送が正常に行われたか否かを判別することができる。
Thereby, the
(ストレージシステム100の処理手順)
つぎに、ストレージシステム100の処理手順について説明する。まず、図8を用いて、ストレージシステム100の正常時の処理手順について説明する。ただし、CM#0を担当CMとし、CM#1をDCMとする。また、担当CM#0のPCIe SW#0とNVMe SSD$0との間に障害が発生し、担当CM#0からNVMe SSD$0へ直接アクセスできない場合を想定する。
(Processing procedure of storage system 100)
Next, the processing procedure of the
図8は、ストレージシステム100の正常時の処理手順の一例を示すシーケンス図である。図9は、ID対応表400の更新例を示す説明図(その1)である。図8のシーケンス図において、まず、担当CM#0のCPU#0は、ID対応表400にID対応情報を作成する(ステップS801)。
FIG. 8 is a sequence diagram showing an example of a normal processing procedure of the
ここでは、新規発行コマンドに割り振るSQ IDを「1」とする。この場合、図9の(A)に示すように、SQ ID「1」に対応するID対応情報400-2が作成され、ID対応表400に新規登録される。なお、ID対応表400には、実行依頼中のリードコマンドに割り振られたSQ ID「0」に対応するID対応情報400-1が登録されている。 Here, the SQ ID assigned to the newly issued command is set to "1". In this case, as shown in FIG. 9A, the ID correspondence information 400-2 corresponding to the SQ ID “1” is created and newly registered in the ID correspondence table 400. In the ID correspondence table 400, the ID correspondence information 400-1 corresponding to the SQ ID "0" assigned to the read command being executed is registered.
つぎに、担当CM#0のCPU#0は、特定したSQ ID「1」を指定して、NVMe SSD$kに対してメモリ#iへのリードデータの転送を要求するリードコマンドの実行依頼をDCM#jに送信する(ステップS802)。
Next,
DCM#1のCPU#1は、SQ ID「1」を指定したリードコマンドの実行依頼を受け付けると、担当CM#0のFPGA#0内のSQ ID「1」に対応するDoorbellレジスタへの所定のデータの転送要求を追加したリードコマンドを、メモリ#1上のSQ ID「1」に対応するSQに書き込む(ステップS803)。
When the
例えば、図3に示したようなフォーマットのリードコマンドがSQに書き込まれる。なお、リードコマンドのOpcode、データアドレス1、データアドレス2、Starting LBAおよびNumber of Logical Blocksを特定する情報は、例えば、担当CM#0からの実行依頼に含まれる。より詳細に説明すると、例えば、DCM#1のCPU#1は、SQ ID「1」に対応するDoorbellレジスタへの転送先アドレスをデータアドレス2へ設定し、Number of Logical Blocksを「L+1」として設定する。
For example, a read command in the format shown in FIG. 3 is written to the SQ. Information for specifying the read command Opcode,
つぎに、DCM#1のCPU#1は、NVMe SSD$0のSubmission Queue Doorbellレジスタに、SQのTail値を書き込む(ステップS804)。Tail値は、新しいコマンドが処理のために送信されたことを、NVMe SSD$0に示すためのものである。
Next,
つぎに、NVMe SSD$0は、DCM#1のメモリ#1上のSQから、リードコマンドを取得する(ステップS805)。そして、NVMe SSD$0は、リードコマンドのデータアドレス1に基づいて、Starting LBAから読み出したLブロック分のリードデータを、担当CM#0のメモリ#0へ転送する(ステップS806)。
Next, the NVMe SSD $ 0 acquires a read command from the SQ on the
つぎに、NVMe SSD$0は、リードコマンドのデータアドレス2に基づいて、Lブロック分のリードデータに続く1ブロック分のデータを読み出して、読み出した1ブロック分のデータを、担当CM#0のFPGA#0のDoorbellレジスタへ転送する(ステップS807)。
Next, NVMe SSD $ 0 reads the data for one block following the read data for the L block based on the
担当CM#0のFPGA#0は、書き込みの完了したDoorbellレジスタのDoorbell IDと関連付けられたMSI-X IDを指定した割り込みを発行する(ステップS808)。担当CM#0のCPU#0は、ID対応表400内のMSI-X IDに対応する割り込みフラグを「1」に設定する(ステップS809)。
ここでは、Doorbell ID「1」のDoorbellレジスタへの書き込みが完了し、MSI-X ID「1」を指定した割り込みが発行されたとする。この場合、図9の(B)に示すように、MSI-X ID「1」に対応するID対応情報400-2の割り込みフラグが「1」に設定される。なお、SQ ID「0」を指定したリードコマンドが正常に完了したため、ID対応情報400-1が削除されている。また、新たに発行されるリードコマンドに割り振られたSQ ID「2」に対応するID対応情報400-3が登録されている。 Here, it is assumed that the writing to the Doorbell register of Doorbell ID "1" is completed and the interrupt specifying MSI-X ID "1" is issued. In this case, as shown in FIG. 9B, the interrupt flag of the ID correspondence information 400-2 corresponding to the MSI-X ID "1" is set to "1". Since the read command with the SQ ID "0" completed normally, the ID correspondence information 400-1 has been deleted. Further, the ID correspondence information 400-3 corresponding to the SQ ID "2" assigned to the newly issued read command is registered.
NVMe SSD$0は、リードコマンドで要求されたデータの転送が完了した場合、DCM#1のメモリ#1上のCQ ID「1」に対応するCQに転送完了通知を書き込む(ステップS810)。そして、NVMe SSD$0は、DCM#1のCPU#1へMSI-X割り込みを発行する(ステップS811)。
When the transfer of the data requested by the read command is completed, the NVMe SSD $ 0 writes a transfer completion notification in the CQ corresponding to the CQ ID "1" on the
DCM#1のCPU#1は、MSI-X割り込みを受けると、CQ ID「1」に対応するCQを確認して処理を完了する(ステップS812)。つぎに、DCM#1のCPU#1は、NVMe SSD$0のCompletion Queue Doorbellレジスタに、CQのHead値を書き込む(ステップS813)。Head値は、処理が完了したことを、NVMe SSD$0に示すためのものである。
Upon receiving the MSI-X interrupt, the
そして、DCM#1のCPU#1は、SQ-ID「1」を指定した完了応答(Good)を担当CM#0のCPU#0に送信する(ステップS814)。担当CM#0のCPU#0は、SQ-ID「1」を指定した完了応答を受け付けた場合、ID対応表400内のSQ-ID「1」に対応する割り込みフラグを確認して、リードデータの送達状況を判定する(ステップS815)。
Then,
ここでは、SQ-ID「1」に対応する割り込みフラグが「1」のため、リードデータが送達され、SQ ID「1」を指定したリードコマンドが正常に完了したと判定される。そして、担当CM#0のCPU#0は、完了したリードコマンドに対応するエントリをID対応表400から削除する(ステップS816)。
Here, since the interrupt flag corresponding to the SQ-ID "1" is "1", the read data is delivered, and it is determined that the read command with the specified SQ ID "1" completed normally. Then,
ここでは、図9の(C)に示すように、SQ-ID「1」に対応するID対応情報400-2(エントリ)がID対応表400から削除される。 Here, as shown in (C) of FIG. 9, the ID correspondence information 400-2 (entry) corresponding to the SQ-ID "1" is deleted from the ID correspondence table 400.
これにより、担当CM#0からDCM#1を介してNVMe SSD$0へアクセスする場合であっても、リードデータの送達保証を確保することが可能となる。
As a result, even when the NVMe SSD $ 0 is accessed from the
つぎに、図10を用いて、ストレージシステム100の異常発生時の処理手順について説明する。
Next, a processing procedure when an abnormality occurs in the
図10は、ストレージシステム100の異常発生時の処理手順の一例を示すシーケンス図である。図11は、ID対応表400の更新例を示す説明図(その2)である。図10のシーケンス図において、まず、担当CM#0のCPU#0は、ID対応表400にID対応情報を作成する(ステップS1001)。
FIG. 10 is a sequence diagram showing an example of a processing procedure when an abnormality occurs in the
ここでは、新規発行コマンドに割り振るSQ IDを「1」とする。この場合、図11の(D)に示すように、SQ ID「1」に対応するID対応情報400-2が作成され、ID対応表400に新規登録される。なお、ID対応表400には、実行依頼中のリードコマンドに割り振られたSQ ID「0」に対応するID対応情報400-1が登録されている。 Here, the SQ ID assigned to the newly issued command is set to "1". In this case, as shown in FIG. 11D, the ID correspondence information 400-2 corresponding to the SQ ID "1" is created and newly registered in the ID correspondence table 400. In the ID correspondence table 400, the ID correspondence information 400-1 corresponding to the SQ ID "0" assigned to the read command being executed is registered.
つぎに、担当CM#0のCPU#0は、特定したSQ ID「1」を指定して、NVMe SSD$kに対してメモリ#iへのリードデータの転送を要求するリードコマンドの実行依頼をDCM#jに送信する(ステップS1002)。
Next,
DCM#1のCPU#1は、SQ ID「1」を指定したリードコマンドの実行依頼を受け付けると、担当CM#0のFPGA#0内のSQ ID「1」に対応するDoorbellレジスタへの所定のデータの転送要求を追加したリードコマンドを、メモリ#1上のSQ ID「1」に対応するSQに書き込む(ステップS1003)。
When the
つぎに、DCM#1のCPU#1は、NVMe SSD$0のSubmission Queue Doorbellレジスタに、SQのTail値を書き込む(ステップS1004)。つぎに、NVMe SSD$0は、DCM#1のメモリ#1上のSQから、リードコマンドを取得する(ステップS1005)。
Next,
そして、NVMe SSD$0は、リードコマンドのデータアドレス1に基づいて、Starting LBAから読み出したLブロック分のリードデータを、担当CM#0のメモリ#0へ転送する(ステップS1006)。つぎに、NVMe SSD$0は、リードコマンドのデータアドレス2に基づいて、Lブロック分のリードデータに続く1ブロック分のデータを読み出して、読み出した1ブロック分のデータを、担当CM#0のFPGA#0のDoorbellレジスタへ転送する(ステップS1007)。
Then, the NVMe SSD $ 0 transfers the read data for the L block read from the Starting LBA to the
ここでは、ハードウェアの一時不良などにより、担当CM#0のPCIe SW#0とDCM#1のPCIe SW#1との間のリンクが切れて、メモリ#0へのデータ転送とDoorbellレジスタへのデータ転送が失敗した場合を想定する。この場合、Doorbell ID「1」のDoorbellレジスタへの書き込みは実行されないため、MSI-X割り込みは発行されない。このため、図11の(E)に示すように、SQ ID「1」に対応するID対応情報400-2の割り込みフラグは「0」のままである。
Here, due to a temporary hardware failure or the like, the link between
NVMe SSD$0は、リードコマンドで要求されたデータの転送が完了した場合、DCM#1のメモリ#1上のCQ ID「1」に対応するCQに転送完了通知を書き込む(ステップS1008)。そして、NVMe SSD$0は、DCM#1のCPU#1へMSI-X割り込みを発行する(ステップS1009)。
When the transfer of the data requested by the read command is completed, the NVMe SSD $ 0 writes the transfer completion notification to the CQ corresponding to the CQ ID "1" on the
DCM#1のCPU#1は、MSI-X割り込みを受けると、CQ ID「1」に対応するCQを確認して処理を完了する(ステップS1010)。つぎに、DCM#1のCPU#1は、NVMe SSD$0のCompletion Queue Doorbellレジスタに、CQのHead値を書き込む(ステップS1011)。
Upon receiving the MSI-X interrupt, the
そして、DCM#1のCPU#1は、SQ-ID「1」を指定した完了応答(Good)を担当CM#0のCPU#0に送信する(ステップS1012)。担当CM#0のCPU#0は、SQ-ID「1」を指定した完了応答を受け付けた場合、ID対応表400内のSQ-ID「1」に対応する割り込みフラグを確認して、リードデータの送達状況を判定する(ステップS1013)。
Then,
ここでは、図11の(F)に示すように、SQ-ID「1」に対応する割り込みフラグが「0」のため、リードデータが送達されておらず、SQ ID「1」を指定したリードコマンドが正常に完了していないと判定される。そして、担当CM#0のCPU#0は、所定のリカバリ処理を実施した後、SQ ID「1」を指定したリードコマンドの実行依頼をDCM#jに再度送信する(ステップS1014)。
Here, as shown in FIG. 11 (F), since the interrupt flag corresponding to the SQ-ID "1" is "0", the read data is not delivered and the read with the SQ ID "1" specified. It is determined that the command has not completed normally. Then, the
これにより、ハードウェアの一時不良などによりデータ転送が失敗したことを検知することができる。また、経路(リンク)を再構築するなどのリカバリ処理を実施して、DCM#jにリードコマンドを再依頼することができる。 As a result, it is possible to detect that the data transfer has failed due to a temporary failure of the hardware or the like. In addition, the read command can be re-requested from DCM # j by performing recovery processing such as reconstructing the route (link).
(ストレージシステム100のその他の実施例)
つぎに、図12および図13を用いて、ストレージシステム100のその他の実施例について説明する。ここでは、ストレージシステム100に複数のCE(12CM構成)が含まれる場合について説明する。
(Other Examples of Storage System 100)
Next, another embodiment of the
図12は、ストレージシステム100のその他の実施例を示す説明図(その1)である。図12において、ストレージシステム100は、CE$0~$5を含む。各CE$0~$5は、2つのCMとNVMe SSDとをそれぞれ有する。なお、図12では、各CM#iのハードウェア構成の一部を抜粋して表示している。
FIG. 12 is an explanatory diagram (No. 1) showing another embodiment of the
ストレージシステム100において、CM間は、FRT(Front End Router)1200を介して、互いに通信可能に接続される。FRT1200は、PCIe SWを有し、CM間を互いに通信可能に接続する。なお、CM間を接続するFRTとして、FRT1200のみ表記したが、2以上のFRTにより冗長化されていてもよい。
In the
ここで、CM#0を担当CMとし、CM#1をDCMとする。また、担当CM#0のPCIe SW#0とNVMe SSD$0との間に障害が発生し、担当CM#0からNVMe SSD$0へ直接アクセスできない場合を想定する。この場合、担当CM#0からDCM#1へのリードコマンドの実行依頼は、FRT1200を介して行われる。
Here,
また、NVMe SSD$0から担当CM#0へのデータ転送も、FRT1200を介して行われる。なお、図12中、太線矢印は、ホスト装置110から要求されたリードデータが、NVMe SSD#0から読み出されて、ホスト装置110に到達するまでの経路を示している。
In addition, data transfer from NVMe SSD $ 0 to
つぎに、図13を用いて、担当CMとリードデータを有するNVMe SSDとが異なるCEに配置されている場合について説明する。ただし、ストレージシステム100のシステム構成は、図12に示したシステム構成と同一とする。また、図13では、各CM#iのハードウェア構成の一部を抜粋して表示している。
Next, a case where the CM in charge and the NVMe SSD having the read data are arranged in different CEs will be described with reference to FIG. However, the system configuration of the
図13は、ストレージシステム100のその他の実施例を示す説明図(その2)である。ここで、CM#11を担当CMとし、CM#1(または、CM#0)をDCMとする。すなわち、リードデータを有するNVMe SSDを、CE$0内のNVMe SSD$0とする。
FIG. 13 is an explanatory diagram (No. 2) showing another embodiment of the
この場合、担当CM#11からDCM#1へのリードコマンドの実行依頼は、FRT1200を介して行われる。また、NVMe SSD$0から担当CM#11へのデータ転送も、FRT1200を介して行われる。なお、図13中、太線矢印は、ホスト装置110から要求されたリードデータが、NVMe SSD#0から読み出されて、ホスト装置110に到達するまでの経路を示している。
In this case, the execution request of the read command from the
以上説明したように、実施の形態にかかるCM#i(担当CM)によれば、DCM#jを経由して、NVMe SSD$kにアクセスする場合、NVMe SSD$kに対して自メモリ#iへのリードデータの転送を要求するとともに、自FPGA#i内の指定したID(SQ ID)に対応するDoorbellレジスタへの所定のデータの転送を要求するリードコマンドの実行依頼を、DCM#jに送信することができる。 As described above, according to the CM # i (CM in charge) according to the embodiment, when the NVMe SSD $ k is accessed via the DCM # j, the own memory #i is used for the NVMe SSD $ k. Requests the transfer of read data to DCM # j and the execution request of the read command to request the transfer of the predetermined data to the Doorbell register corresponding to the specified ID (SQ ID) in the own FPGA # i. Can be sent.
これにより、NVMe SSD$kに直接アクセスできない場合、自メモリ#iへのリードデータの転送を要求するとともに、自FPGA#i内の指定したSQ IDに対応するDoorbellレジスタへの所定のデータの転送を要求するリードコマンドの実行を依頼することができる。 As a result, when the NVMe SSD $ k cannot be directly accessed, the transfer of the read data to the own memory #i is requested, and the predetermined data is transferred to the Doorbell register corresponding to the specified SQ ID in the own FPGA # i. You can request the execution of the requested read command.
また、CM#i(担当CM)によれば、FPGA#iからID(SQ IDに関連するMSI-X ID)を指定した割り込みを受け付けた場合、当該IDに対応する割り込みフラグを有効にすることができる。FPGA#iは、CM#iが備える集積回路であり、データ転送用のDoorbellレジスタを含み、Doorbellレジスタへの書き込みが行われた場合に当該Doorbellレジスタに対応するID(MSI-X ID)を指定した割り込みをCPU#iへ発行する。 Further, according to CM # i (CM in charge), when an interrupt for which an ID (MSI-X ID related to SQ ID) is specified is received from FPGA # i, the interrupt flag corresponding to the ID is enabled. Can be done. FPGA # i is an integrated circuit included in CM # i, includes a Doorbell register for data transfer, and specifies an ID (MSI-X ID) corresponding to the Doorbell register when writing to the Doorbell register is performed. Issue the interrupt to CPU # i.
これにより、FPGA#i内のDoorbellレジスタへの書き込み状況を判別することができる。 This makes it possible to determine the writing status to the Doorbell register in FPGA # i.
また、CM#i(担当CM)によれば、実行依頼に応じてDCM#jからNVMe SSD$kに発行される、自メモリ#iへのリードデータの転送を要求するとともに、指定したID(SQ ID)に対応するDoorbellレジスタへの所定のデータの転送を要求するリードコマンドの実行が完了した場合に、当該ID(SQ ID)を指定した完了応答をDCM#jから受け付けることができる。 Further, according to CM # i (CM in charge), the transfer of the read data to the own memory #i issued from DCM # j to NVMe SSD $ k in response to the execution request is requested, and the specified ID ( When the execution of the read command requesting the transfer of the predetermined data to the Doorbell register corresponding to the SQ ID) is completed, the completion response specifying the ID (SQ ID) can be received from DCM # j.
これにより、DCM#jに実行依頼したリードコマンドの実行が完了したことを把握することができる。ただし、PCIeのポステッド・ライトのため、DCM#jからの完了応答だけでは、メモリ#iへのリードデータの転送が正常に行われたかどうかはわからない。 This makes it possible to know that the execution of the read command submitted to DCM # j has been completed. However, because of the PCIe posted write, it is not possible to know whether or not the read data has been normally transferred to the memory #i only by the completion response from the DCM # j.
また、CM#i(担当CM)によれば、DCM#jからID(SQ ID)を指定した完了応答を受け付けた場合、当該IDに対応する割り込みフラグを参照して、自メモリ#iへのリードデータの送達状況を判定することができる。 Further, according to CM # i (CM in charge), when a completion response in which an ID (SQ ID) is specified is received from DCM # j, the interrupt flag corresponding to the ID is referred to and the memory # i is sent to the own memory # i. The delivery status of read data can be determined.
これにより、NVMe SSD$kからメモリ#iへのデータ転送と同一の経路を使用して行われるFPGA#i内のDoorbellレジスタへの書き込み状況(データの送達状況)から、メモリ#iへのリードデータの送達状況を判定することができる。 As a result, the read status to the memory # i from the write status (data delivery status) to the Doorbell register in the FPGA # i, which is performed using the same route as the data transfer from the NVMe SSD $ k to the memory # i. The delivery status of the data can be determined.
また、CM#i(担当CM)によれば、複数のID(0~N)のそれぞれのID(Doorbell ID)に対応するDoorbellレジスタを含み、Doorbellレジスタへの書き込みが行われた場合に当該Doorbellレジスタに対応するIDを指定した割り込みを発行するFPGA#iを備え、リードコマンドの実行依頼を、複数のIDのうち他のリードコマンドに対応していないID(SQ ID)を指定して、DCM#jに送信することができる。 Further, according to CM # i (CM in charge), a Doorbell register corresponding to each ID (Doorbell ID) of a plurality of IDs (0 to N) is included, and when writing to the Doorbell register is performed, the Doorbell It is equipped with FPGA # i that issues an interrupt that specifies the ID corresponding to the register, and specifies the ID (SQ ID) that does not correspond to the other read commands among multiple IDs for the execution request of the read command, and DCM. It can be sent to # j.
これにより、各リードコマンドに関する一連の流れの中で、SQ、CQ、Doorbellレジスタ、MSI-X割り込みに、他のリードコマンドに非対応の同じIDを使用して、SQ、CQ、Doorbellレジスタ、MSI-XのIDによる関連付けを行うことができる。このため、複数のリードコマンドを実行した場合であっても、CPU#iがFPGA#iから受け取ったMSI-XのIDを確認することで、どのSQ IDのリードコマンドが正常に完了したのかを判別可能となる。 This allows the SQ, CQ, Doorbell register, MSI to use the same ID that does not support other read commands for the SQ, CQ, Doorbell register, MSI-X interrupt in a series of flows for each read command. -Association by X ID can be performed. Therefore, even when a plurality of read commands are executed, by checking the MSI-X ID received from the FPGA # i by the CPU # i, it is possible to determine which SQ ID read command was completed normally. It becomes possible to distinguish.
また、CM#i(担当CM)によれば、ID(SQ ID)を指定した完了応答をDCM#jから受け付けた場合に、当該IDに対応する割り込みフラグが有効であれば、自メモリ#iへリードデータが送達されたと判定することができる。また、CM#i(担当CM)によれば、当該IDに対応する割り込みフラグが無効であれば、自メモリ#iへリードデータが送達されなかったと判定することができる。 Further, according to CM # i (CM in charge), when a completion response with an ID (SQ ID) is received from DCM # j and the interrupt flag corresponding to the ID is valid, the own memory # i It can be determined that the interrupt data has been delivered. Further, according to CM # i (CM in charge), if the interrupt flag corresponding to the ID is invalid, it can be determined that the read data has not been delivered to the own memory #i.
これにより、一時的なハードウェア障害などが発生して、FPGA#i内のDoorbellレジスタへの書き込みが行われなかった場合は、自メモリ#iへのデータ転送も正常に行われなかったと判断することができる。一方、FPGA#i内のDoorbellレジスタへの書き込みが行われた場合は、自メモリ#iへのデータ転送も正常に行われたと判断することができる。 As a result, if a temporary hardware failure occurs and the writing to the Doorbell register in FPGA # i is not performed, it is determined that the data transfer to the own memory # i is not performed normally. be able to. On the other hand, when the writing is performed to the Doorbell register in FPGA # i, it can be determined that the data transfer to the own memory #i is also performed normally.
また、CM#i(DCM)によれば、自CMを経由して、他CM#j(担当CM)がNVMe SSD$kにアクセスする場合、他CM#jから、NVMe SSD$kに対して他CM#jのメモリ#jへのリードデータの転送を要求するとともに、他CM#jのFPGA#j内の指定されたIDに対応するDoorbellレジスタへの所定のデータの転送を要求するリードコマンドの実行依頼を受け付けることができる。そして、CM#i(DCM)によれば、他CM#jからの実行依頼に応じてリードコマンドをNVMe SSD$kに発行することができる。また、CM#i(DCM)によれば、NVMe SSD$kからリードコマンドで要求されたデータの転送完了通知があった場合、当該IDを指定した完了応答を他CM#jに送信することができる。 Further, according to CM # i (DCM), when another CM # j (in charge CM) accesses NVMe SSD $ k via the own CM, the other CM # j to NVMe SSD $ k. A read command that requests the transfer of read data to the memory # j of another CM # j and also requests the transfer of predetermined data to the Doorbell register corresponding to the specified ID in the FPGA # j of the other CM # j. Can accept execution requests. Then, according to CM # i (DCM), a read command can be issued to NVMe SSD $ k in response to an execution request from another CM # j. Further, according to CM # i (DCM), when NVMe SSD $ k notifies the transfer completion of the data requested by the read command, the completion response specifying the ID can be transmitted to another CM # j. can.
これにより、担当CM#jからの実行依頼に応じて、他メモリ#jへのリードデータの転送を要求するリードコマンドに、当該リードコマンドに対応するSQ IDに関連付けられたDoorbell IDのDoorbellレジスタへの所定のデータの転送要求を追加して、NVMe SSD$kへ発行することができる。また、リードコマンドで要求されたデータのNVMe SSD$kによる転送が完了した場合に、リードコマンドの実行が完了したことを示す完了応答を他CM#jに通知することができる。 As a result, in response to the execution request from the CM # j in charge, the read command requesting the transfer of read data to another memory # j is sent to the Doorbell register of the Doorbell ID associated with the SQ ID corresponding to the read command. A transfer request for predetermined data can be added and issued to NVMe SSD $ k. Further, when the transfer of the data requested by the read command by NVMe SSD $ k is completed, the completion response indicating that the execution of the read command is completed can be notified to other CM # j.
具体的には、例えば、DCM#iは、リードコマンドのデータアドレス1に、担当CM#jのメモリ#j内のデータ領域の転送先アドレスを設定する。また、DCM#iは、データアドレス2に、担当CM#jのFPGA#j内の指定されたSQ-IDに対応するDoorbellレジスタのアドレスを設定する。また、DCM#iは、Number of Logical Blocksを「L+1」として設定する。これにより、メモリ#jへのリードデータの転送が完了した後、Doorbellレジスタへ1ブロック分のデータを転送するよう要求することができ、通信量の増加を抑えつつ、リードデータの送達状況を効果的に判別することが可能となる。
Specifically, for example, DCM # i sets the transfer destination address of the data area in the memory # j of the responsible CM # j to the data address 1 of the read command. Further, DCM # i sets the address of the Doorbell register corresponding to the specified SQ-ID in FPGA # j of the CM # j in charge to the
また、CM#i(DCM)によれば、自CMを経由して、他CM#j(担当CM)がNVMe SSD$kにアクセスする場合、複数のID(0~N)のそれぞれのIDごとに、当該IDに対応するコマンドが格納されるSQと、当該コマンドの完了状態を示す情報が格納されるCQとを自メモリ#i内に作成することができる。そして、CM#i(DCM)によれば、他CM#jから実行依頼を受け付けた場合、自メモリ#i内の指定されたID(SQ ID)に対応するSQにリードコマンドを格納することができる。また、CM#i(DCM)によれば、NVMe SSD$kによって、リードコマンドの完了を示す情報が自メモリ#i内の当該IDに対応するCQに書き込まれた場合、当該IDを指定した完了応答を他CM#jに送信することができる。 Further, according to CM # i (DCM), when another CM # j (in charge CM) accesses NVMe SSD $ k via the own CM, each ID of a plurality of IDs (0 to N) is used. In the own memory # i, an SQ in which the command corresponding to the ID is stored and a CQ in which the information indicating the completion status of the command is stored can be created. Then, according to CM # i (DCM), when an execution request is received from another CM # j, the read command can be stored in the SQ corresponding to the specified ID (SQ ID) in the own memory #i. can. Further, according to CM # i (DCM), when the information indicating the completion of the read command is written in the CQ corresponding to the ID in the own memory #i by NVMe SSD $ k, the completion specifying the ID is completed. The response can be sent to another CM # j.
これにより、複数のリードコマンドの実行を依頼された場合であっても、各リードコマンドの完了状態を区別することが可能となる。 This makes it possible to distinguish the completion status of each read command even when the execution of a plurality of read commands is requested.
これらのことから、実施の形態にかかるストレージシステム100およびCM#iによれば、担当CM#iが他CM#j(DCM)を経由して、NVMe SSD$kにアクセスする場合であっても、データの送達保証を確保することが可能となり、データ抜け(不達)にともなうホスト装置110におけるデータ化けを防ぐことができる。
From these facts, according to the
なお、本実施の形態で説明した送達状況判定方法は、予め用意されたプログラムをストレージ制御装置等のコンピュータで実行することにより実現することができる。本送達状況判定プログラムは、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本送達状況判定プログラムは、インターネット等のネットワークを介して配布してもよい。 The delivery status determination method described in the present embodiment can be realized by executing a program prepared in advance on a computer such as a storage control device. This delivery status determination program is recorded on a computer-readable recording medium such as a hard disk, a flexible disk, a CD (Compact Disc) -ROM, a DVD (Digital Versaille Disk), or a USB (Universal Serial Bus) memory, and is recorded by the computer. It is executed by reading from the medium. Further, the delivery status determination program may be distributed via a network such as the Internet.
上述した実施の形態に関し、さらに以下の付記を開示する。 The following additional notes are further disclosed with respect to the above-described embodiment.
(付記1)データ転送用のバッファ領域を含み、前記バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行する、内部の回路を再構成可能な集積回路または専用の集積回路を備え、
他のストレージ制御装置を経由して、レスポンスを要求しないデータ転送を行うストレージデバイスにアクセスする場合、自メモリへのリードデータの転送を要求するとともに、前記集積回路内の指定した第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を、前記他のストレージ制御装置に送信し、
前記集積回路から前記第1の識別子を指定した割り込みを受け付けた場合、前記第1の識別子に対応する割り込みフラグを有効にし、
前記実行依頼に応じて前記他のストレージ制御装置から前記ストレージデバイスに発行される前記リードコマンドの実行が完了した場合に、前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付け、
前記完了応答を受け付けた場合、前記第1の識別子に対応する割り込みフラグを参照して、前記リードデータの送達状況を判定する、
制御部を有することを特徴とするストレージ制御装置。
(Appendix 1) An integrated circuit that includes a buffer area for data transfer and can reconfigure an internal circuit that issues an interrupt that specifies an identifier corresponding to the buffer area when writing to the buffer area is performed. Or with a dedicated integrated circuit
When accessing a storage device that transfers data without requesting a response via another storage control device, the transfer of read data to its own memory is requested and the specified first identifier in the integrated circuit is used. A read command execution request requesting the transfer of predetermined data to the corresponding buffer area is transmitted to the other storage control device.
When an interrupt with the specified first identifier is received from the integrated circuit, the interrupt flag corresponding to the first identifier is enabled and the interrupt flag is enabled.
When the execution of the read command issued from the other storage control device to the storage device is completed in response to the execution request, a completion response specifying the first identifier is received from the other storage control device. ,
When the completion response is received, the delivery status of the read data is determined with reference to the interrupt flag corresponding to the first identifier.
A storage control device characterized by having a control unit.
(付記2)前記集積回路は、
複数の識別子のそれぞれの識別子に対応するバッファ領域を含み、前記バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行し、
前記制御部は、
前記複数の識別子のうち他のリードコマンドに対応していない第1の識別子を指定して、前記リードコマンドの実行依頼を前記他のストレージ制御装置に送信する、
ことを特徴とする付記1に記載のストレージ制御装置。
(Appendix 2) The integrated circuit is
A buffer area corresponding to each of the identifiers of the plurality of identifiers is included, and when writing to the buffer area is performed, an interrupt specifying the identifier corresponding to the buffer area is issued.
The control unit
The execution request of the read command is transmitted to the other storage control device by designating the first identifier corresponding to the other read command among the plurality of identifiers.
The storage control device according to
(付記3)前記制御部は、
前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付けた場合に、前記第1の識別子に対応する割り込みフラグが有効であれば、前記リードデータが送達されたと判定し、前記第1の識別子に対応する割り込みフラグが無効であれば、前記リードデータが送達されなかったと判定する、
ことを特徴とする付記1または2に記載のストレージ制御装置。
(Appendix 3) The control unit is
When the completion response specifying the first identifier is received from the other storage control device, if the interrupt flag corresponding to the first identifier is valid, it is determined that the read data has been delivered, and the read data is determined. If the interrupt flag corresponding to the first identifier is invalid, it is determined that the read data has not been delivered.
The storage control device according to
(付記4)前記制御部は、
自装置を経由して、他のストレージ制御装置が前記ストレージデバイスにアクセスする場合、前記他のストレージ制御装置から、前記他のストレージ制御装置のメモリへのリードデータの転送を要求するとともに、前記他のストレージ制御装置の集積回路内の指定された第2の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を受け付け、
前記実行依頼を受け付けた場合、前記リードコマンドを前記ストレージデバイスに発行し、
前記ストレージデバイスから前記リードコマンドで要求されたデータの転送完了通知があった場合、前記第2の識別子を指定した完了応答を前記他のストレージ制御装置に送信する、
ことを特徴とする付記1~3のいずれか一つに記載のストレージ制御装置。
(Appendix 4) The control unit is
When another storage control device accesses the storage device via its own device, the other storage control device requests transfer of read data from the other storage control device to the memory of the other storage control device, and the other Accepts a read command execution request requesting the transfer of predetermined data to the buffer area corresponding to the specified second identifier in the integrated circuit of the storage controller of
When the execution request is received, the read command is issued to the storage device.
When the storage device notifies the transfer completion of the data requested by the read command, a completion response specifying the second identifier is transmitted to the other storage control device.
The storage control device according to any one of
(付記5)前記制御部は、
自装置を経由して、他のストレージ制御装置が前記ストレージデバイスにアクセスする場合、複数の識別子のそれぞれの識別子ごとに、当該識別子に対応するコマンドが格納される第1キューと、当該コマンドの完了状態を示す情報が格納される第2キューとを自メモリ内に作成し、
前記実行依頼を受け付けた場合、自メモリ内の前記第2の識別子に対応する第1キューに前記リードコマンドを格納し、
前記ストレージデバイスによって、前記リードコマンドの完了を示す情報が自メモリ内の前記第2の識別子に対応する第2キューに書き込まれた場合、前記第2の識別子を指定した完了応答を前記他のストレージ制御装置に送信する、
ことを特徴とする付記4に記載のストレージ制御装置。
(Appendix 5) The control unit is
When another storage control device accesses the storage device via its own device, the first queue in which the command corresponding to the identifier is stored for each identifier of the plurality of identifiers and the completion of the command are completed. Create a second queue in the own memory that stores the information indicating the status,
When the execution request is received, the read command is stored in the first queue corresponding to the second identifier in the own memory.
When the storage device writes the information indicating the completion of the read command to the second queue corresponding to the second identifier in its own memory, the completion response specifying the second identifier is sent to the other storage. Send to the controller,
The storage control device according to
(付記6)前記集積回路は、FPGA(Field Programmable Gate Array)である、ことを特徴とする付記1~5のいずれか一つに記載のストレージ制御装置。
(Supplementary Note 6) The storage control device according to any one of
(付記7)前記ストレージデバイスは、NVMe(Non-Volatile Memory Express) SSD(Solid State Drive)である、ことを特徴とする付記1~6のいずれか一つに記載のストレージ制御装置。
(Supplementary Note 7) The storage control device according to any one of
(付記8)前記所定のデータは、前記ストレージデバイスから自メモリへの前記リードデータの転送が完了した後、前記第1の識別子に対応するバッファ領域へ転送される、ことを特徴とする付記1に記載のストレージ制御装置。 (Supplementary Note 8) The predetermined data is transferred to the buffer area corresponding to the first identifier after the transfer of the read data from the storage device to the own memory is completed. The storage control device described in.
(付記9)データ転送用のバッファ領域を含み、前記バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行する、内部の回路を再構成可能な集積回路または専用の集積回路を備えたストレージ制御装置に、
他のストレージ制御装置を経由して、レスポンスを要求しないデータ転送を行うストレージデバイスにアクセスする場合、自メモリへのリードデータの転送を要求するとともに、前記集積回路内の指定した第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を、前記他のストレージ制御装置に送信し、
前記集積回路から前記第1の識別子を指定した割り込みを受け付けた場合、前記第1の識別子に対応する割り込みフラグを有効にし、
前記実行依頼に応じて前記他のストレージ制御装置から前記ストレージデバイスに発行される前記リードコマンドの実行が完了した場合に、前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付け、
前記完了応答を受け付けた場合、前記第1の識別子に対応する割り込みフラグを参照して、前記リードデータの送達状況を判定する、
処理を実行させることを特徴とする送達状況判定プログラム。
(Appendix 9) An integrated circuit that includes a buffer area for data transfer and is capable of reconfiguring an internal circuit that issues an interrupt that specifies an identifier corresponding to the buffer area when writing to the buffer area is performed. Or for a storage control device with a dedicated integrated circuit,
When accessing a storage device that transfers data without requesting a response via another storage control device, the transfer of read data to its own memory is requested and the specified first identifier in the integrated circuit is used. A read command execution request requesting the transfer of predetermined data to the corresponding buffer area is transmitted to the other storage control device.
When an interrupt with the specified first identifier is received from the integrated circuit, the interrupt flag corresponding to the first identifier is enabled and the interrupt flag is enabled.
When the execution of the read command issued from the other storage control device to the storage device is completed in response to the execution request, a completion response specifying the first identifier is received from the other storage control device. ,
When the completion response is received, the delivery status of the read data is determined with reference to the interrupt flag corresponding to the first identifier.
A delivery status determination program characterized by executing a process.
(付記10)複数のストレージ制御装置と、レスポンスを要求しないデータ転送を行うストレージデバイスとを含むストレージシステムであって、
前記複数のストレージ制御装置のいずれかのストレージ制御装置は、
データ転送用のバッファ領域を含み、前記バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行する、内部の回路を再構成可能な集積回路または専用の集積回路を備え、
他のストレージ制御装置を経由して、レスポンスを要求しないデータ転送を行うストレージデバイスにアクセスする場合、自メモリへのリードデータの転送を要求するとともに、前記集積回路内の指定した第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を、前記他のストレージ制御装置に送信し、
前記他のストレージ制御装置は、
前記実行依頼を受け付けた場合、前記リードコマンドを前記ストレージデバイスに発行し、
前記ストレージ制御装置は、
前記集積回路から前記第1の識別子を指定した割り込みを受け付けた場合、前記第1の識別子に対応する割り込みフラグを有効にし、
前記実行依頼に応じて前記他のストレージ制御装置から前記ストレージデバイスに発行された前記リードコマンドの実行が完了した場合に、前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付け、
前記完了応答を受け付けた場合、前記第1の識別子に対応する割り込みフラグを参照して、前記リードデータの送達状況を判定する、
ことを特徴とするストレージシステム。
(Appendix 10) A storage system including a plurality of storage control devices and a storage device for data transfer that does not require a response.
The storage control device of any of the plurality of storage control devices is
An integrated circuit that can reconfigure an internal circuit or a dedicated integrated circuit that includes a buffer area for data transfer and issues an interrupt that specifies an identifier corresponding to the buffer area when writing to the buffer area is performed. Equipped with a circuit
When accessing a storage device that transfers data without requesting a response via another storage control device, the transfer of read data to its own memory is requested and the specified first identifier in the integrated circuit is used. A read command execution request requesting the transfer of predetermined data to the corresponding buffer area is transmitted to the other storage control device.
The other storage control device is
When the execution request is received, the read command is issued to the storage device.
The storage control device is
When an interrupt with the specified first identifier is received from the integrated circuit, the interrupt flag corresponding to the first identifier is enabled and the interrupt flag is enabled.
When the execution of the read command issued from the other storage control device to the storage device is completed in response to the execution request, a completion response specifying the first identifier is received from the other storage control device. ,
When the completion response is received, the delivery status of the read data is determined with reference to the interrupt flag corresponding to the first identifier.
A storage system that features that.
(付記11)前記他のストレージ制御装置は、
複数の識別子のそれぞれの識別子ごとに、当該識別子に対応するコマンドが格納される第1キューと、当該コマンドの完了状態を示す情報が格納される第2キューとを自メモリ内に作成し、
前記実行依頼を受け付けた場合、自メモリ内の前記第1の識別子に対応する第1キューに前記リードコマンドを格納し、
前記ストレージデバイスによって、前記リードコマンドの完了を示す情報が自メモリ内の前記第1の識別子に対応する第2キューに書き込まれた場合、前記第1の識別子を指定した完了応答を前記ストレージ制御装置に送信する、
ことを特徴とする付記10に記載のストレージシステム。
(Appendix 11) The other storage control device is
For each of the plurality of identifiers, a first queue in which the command corresponding to the identifier is stored and a second queue in which the information indicating the completion status of the command is stored are created in the own memory.
When the execution request is received, the read command is stored in the first queue corresponding to the first identifier in the own memory.
When the storage device writes information indicating the completion of the read command to the second queue corresponding to the first identifier in its own memory, the storage control device sends a completion response specifying the first identifier. Send to,
The storage system according to
100 ストレージシステム
110 ホスト装置
400 ID対応表
501 第1の受付部
502 第1の要求処理部
503 判定部
504 復旧部
601 第2の受付部
602 第2の要求処理部
1200 FRT
cmd NVMeコマンド
#0,#1,#i,#j CM、CPU、メモリ、CA、FPGA、PCIe SW
$0~$5 CE、NVMe SSD
100
cmd
$ 0- $ 5 CE, NVMe SSD
Claims (9)
他のストレージ制御装置を経由して、レスポンスを要求しないデータ転送を行うストレージデバイスにアクセスする場合、自メモリへのリードデータの転送を要求するとともに、前記集積回路内の指定した第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を、前記他のストレージ制御装置に送信し、
前記集積回路から前記第1の識別子を指定した割り込みを受け付けた場合、前記第1の識別子に対応する割り込みフラグを有効にし、
前記実行依頼に応じて前記他のストレージ制御装置から前記ストレージデバイスに発行される前記リードコマンドの実行が完了した場合に、前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付け、
前記完了応答を受け付けた場合、前記第1の識別子に対応する割り込みフラグを参照して、前記リードデータの送達状況を判定する、
制御部を有することを特徴とするストレージ制御装置。 An integrated circuit that can reconfigure an internal circuit or a dedicated integrated circuit that includes a buffer area for data transfer and issues an interrupt that specifies an identifier corresponding to the buffer area when writing to the buffer area is performed. Equipped with a circuit
When accessing a storage device that transfers data without requesting a response via another storage control device, the transfer of read data to its own memory is requested and the specified first identifier in the integrated circuit is used. A read command execution request requesting the transfer of predetermined data to the corresponding buffer area is transmitted to the other storage control device.
When an interrupt with the specified first identifier is received from the integrated circuit, the interrupt flag corresponding to the first identifier is enabled and the interrupt flag is enabled.
When the execution of the read command issued from the other storage control device to the storage device is completed in response to the execution request, a completion response specifying the first identifier is received from the other storage control device. ,
When the completion response is received, the delivery status of the read data is determined with reference to the interrupt flag corresponding to the first identifier.
A storage control device characterized by having a control unit.
複数の識別子のそれぞれの識別子に対応するバッファ領域を含み、前記バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行し、
前記制御部は、
前記複数の識別子のうち他のリードコマンドに対応していない第1の識別子を指定して、前記リードコマンドの実行依頼を前記他のストレージ制御装置に送信する、
ことを特徴とする請求項1に記載のストレージ制御装置。 The integrated circuit is
A buffer area corresponding to each of the identifiers of the plurality of identifiers is included, and when writing to the buffer area is performed, an interrupt specifying the identifier corresponding to the buffer area is issued.
The control unit
The execution request of the read command is transmitted to the other storage control device by designating the first identifier corresponding to the other read command among the plurality of identifiers.
The storage control device according to claim 1.
前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付けた場合に、前記第1の識別子に対応する割り込みフラグが有効であれば、前記リードデータが送達されたと判定し、前記第1の識別子に対応する割り込みフラグが無効であれば、前記リードデータが送達されなかったと判定する、
ことを特徴とする請求項1または2に記載のストレージ制御装置。 The control unit
When the completion response specifying the first identifier is received from the other storage control device, if the interrupt flag corresponding to the first identifier is valid, it is determined that the read data has been delivered, and the read data is determined. If the interrupt flag corresponding to the first identifier is invalid, it is determined that the read data has not been delivered.
The storage control device according to claim 1 or 2.
自装置を経由して、他のストレージ制御装置が前記ストレージデバイスにアクセスする場合、前記他のストレージ制御装置から、前記他のストレージ制御装置のメモリへのリードデータの転送を要求するとともに、前記他のストレージ制御装置の集積回路内の指定された第2の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を受け付け、
前記実行依頼を受け付けた場合、前記リードコマンドを前記ストレージデバイスに発行し、
前記ストレージデバイスから前記リードコマンドで要求されたデータの転送完了通知があった場合、前記第2の識別子を指定した完了応答を前記他のストレージ制御装置に送信する、
ことを特徴とする請求項1~3のいずれか一つに記載のストレージ制御装置。 The control unit
When another storage control device accesses the storage device via its own device, the other storage control device requests transfer of read data from the other storage control device to the memory of the other storage control device, and the other Accepts a read command execution request requesting the transfer of predetermined data to the buffer area corresponding to the specified second identifier in the integrated circuit of the storage controller of
When the execution request is received, the read command is issued to the storage device.
When the storage device notifies the transfer completion of the data requested by the read command, a completion response specifying the second identifier is transmitted to the other storage control device.
The storage control device according to any one of claims 1 to 3.
自装置を経由して、他のストレージ制御装置が前記ストレージデバイスにアクセスする場合、複数の識別子のそれぞれの識別子ごとに、当該識別子に対応するコマンドが格納される第1キューと、当該コマンドの完了状態を示す情報が格納される第2キューとを自メモリ内に作成し、
前記実行依頼を受け付けた場合、自メモリ内の前記第2の識別子に対応する第1キューに前記リードコマンドを格納し、
前記ストレージデバイスによって、前記リードコマンドの完了を示す情報が自メモリ内の前記第2の識別子に対応する第2キューに書き込まれた場合、前記第2の識別子を指定した完了応答を前記他のストレージ制御装置に送信する、
ことを特徴とする請求項4に記載のストレージ制御装置。 The control unit
When another storage control device accesses the storage device via its own device, the first queue in which the command corresponding to the identifier is stored for each identifier of the plurality of identifiers and the completion of the command are completed. Create a second queue in the own memory that stores the information indicating the status,
When the execution request is received, the read command is stored in the first queue corresponding to the second identifier in the own memory.
When the storage device writes the information indicating the completion of the read command to the second queue corresponding to the second identifier in its own memory, the completion response specifying the second identifier is sent to the other storage. Send to the controller,
The storage control device according to claim 4.
他のストレージ制御装置を経由して、レスポンスを要求しないデータ転送を行うストレージデバイスにアクセスする場合、自メモリへのリードデータの転送を要求するとともに、前記集積回路内の指定した第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を、前記他のストレージ制御装置に送信し、
前記集積回路から前記第1の識別子を指定した割り込みを受け付けた場合、前記第1の識別子に対応する割り込みフラグを有効にし、
前記実行依頼に応じて前記他のストレージ制御装置から前記ストレージデバイスに発行される前記リードコマンドの実行が完了した場合に、前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付け、
前記完了応答を受け付けた場合、前記第1の識別子に対応する割り込みフラグを参照して、前記リードデータの送達状況を判定する、
処理を実行させることを特徴とする送達状況判定プログラム。 An integrated circuit that can reconfigure an internal circuit or a dedicated integrated circuit that includes a buffer area for data transfer and issues an interrupt with an identifier corresponding to the buffer area when writing to the buffer area is performed. For storage control devices equipped with circuits,
When accessing a storage device that transfers data without requesting a response via another storage control device, the transfer of read data to its own memory is requested and the specified first identifier in the integrated circuit is used. A read command execution request requesting the transfer of predetermined data to the corresponding buffer area is transmitted to the other storage control device.
When an interrupt with the specified first identifier is received from the integrated circuit, the interrupt flag corresponding to the first identifier is enabled and the interrupt flag is enabled.
When the execution of the read command issued from the other storage control device to the storage device is completed in response to the execution request, a completion response specifying the first identifier is received from the other storage control device. ,
When the completion response is received, the delivery status of the read data is determined with reference to the interrupt flag corresponding to the first identifier.
A delivery status determination program characterized by executing a process.
前記複数のストレージ制御装置のいずれかのストレージ制御装置は、
データ転送用のバッファ領域を含み、前記バッファ領域への書き込みが行われた場合に当該バッファ領域に対応する識別子を指定した割り込みを発行する、内部の回路を再構成可能な集積回路または専用の集積回路を備え、
他のストレージ制御装置を経由して、レスポンスを要求しないデータ転送を行うストレージデバイスにアクセスする場合、自メモリへのリードデータの転送を要求するとともに、前記集積回路内の指定した第1の識別子に対応するバッファ領域への所定のデータの転送を要求するリードコマンドの実行依頼を、前記他のストレージ制御装置に送信し、
前記他のストレージ制御装置は、
前記実行依頼を受け付けた場合、前記リードコマンドを前記ストレージデバイスに発行し、
前記ストレージ制御装置は、
前記集積回路から前記第1の識別子を指定した割り込みを受け付けた場合、前記第1の識別子に対応する割り込みフラグを有効にし、
前記実行依頼に応じて前記他のストレージ制御装置から前記ストレージデバイスに発行された前記リードコマンドの実行が完了した場合に、前記第1の識別子を指定した完了応答を前記他のストレージ制御装置から受け付け、
前記完了応答を受け付けた場合、前記第1の識別子に対応する割り込みフラグを参照して、前記リードデータの送達状況を判定する、
ことを特徴とするストレージシステム。 A storage system that includes multiple storage control devices and storage devices that perform data transfers that do not require a response.
The storage control device of any of the plurality of storage control devices is
An integrated circuit that can reconfigure an internal circuit or a dedicated integrated circuit that includes a buffer area for data transfer and issues an interrupt that specifies an identifier corresponding to the buffer area when writing to the buffer area is performed. Equipped with a circuit
When accessing a storage device that transfers data without requesting a response via another storage control device, the transfer of read data to its own memory is requested and the specified first identifier in the integrated circuit is used. A read command execution request requesting the transfer of predetermined data to the corresponding buffer area is transmitted to the other storage control device.
The other storage control device is
When the execution request is received, the read command is issued to the storage device.
The storage control device is
When an interrupt with the specified first identifier is received from the integrated circuit, the interrupt flag corresponding to the first identifier is enabled and the interrupt flag is enabled.
When the execution of the read command issued from the other storage control device to the storage device is completed in response to the execution request, a completion response specifying the first identifier is received from the other storage control device. ,
When the completion response is received, the delivery status of the read data is determined with reference to the interrupt flag corresponding to the first identifier.
A storage system that features that.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020144566A JP7553783B2 (en) | 2020-08-28 | 2020-08-28 | STORAGE CONTROL DEVICE, DELIVERY STATUS DETECTION PROGRAM, AND STORAGE SYSTEM |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020144566A JP7553783B2 (en) | 2020-08-28 | 2020-08-28 | STORAGE CONTROL DEVICE, DELIVERY STATUS DETECTION PROGRAM, AND STORAGE SYSTEM |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022039501A true JP2022039501A (en) | 2022-03-10 |
JP7553783B2 JP7553783B2 (en) | 2024-09-19 |
Family
ID=80498504
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020144566A Active JP7553783B2 (en) | 2020-08-28 | 2020-08-28 | STORAGE CONTROL DEVICE, DELIVERY STATUS DETECTION PROGRAM, AND STORAGE SYSTEM |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7553783B2 (en) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006227856A (en) | 2005-02-17 | 2006-08-31 | Hitachi Ltd | Access controller and interface mounted on the same |
JP2012212360A (en) | 2011-03-31 | 2012-11-01 | Nec Corp | Input/output control device, computer, and control method |
-
2020
- 2020-08-28 JP JP2020144566A patent/JP7553783B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP7553783B2 (en) | 2024-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101455016B1 (en) | Method and apparatus to provide a high availability solid state drive | |
US10789196B2 (en) | Storage system | |
JP2012133405A (en) | Storage device and data transfer control method thereof | |
US10191685B2 (en) | Storage system, storage device, and data transfer method | |
US10901626B1 (en) | Storage device | |
JP4100256B2 (en) | Communication method and information processing apparatus | |
US11507307B2 (en) | Storage system including a memory controller that enables each storage controller of a plurality of storage controllers to exclusively read and write control information of the memory | |
US20110282963A1 (en) | Storage device and method of controlling storage device | |
US20120221809A1 (en) | Storage apparatus and data processing method of the same | |
CN110609659A (en) | NVMeoF RAID implementation method for executing read command | |
JP6649989B2 (en) | Storage system and control method thereof | |
JP6773974B2 (en) | Storage controller and storage device | |
JP7553783B2 (en) | STORAGE CONTROL DEVICE, DELIVERY STATUS DETECTION PROGRAM, AND STORAGE SYSTEM | |
JP6944117B2 (en) | Information processing device, transfer control method and transfer control program | |
JP4936088B2 (en) | Disk array device, disk array system, and cache control method | |
US10719391B2 (en) | Storage system and storage control apparatus | |
JP6825263B2 (en) | Storage controller and storage system | |
JP2023010314A (en) | Storage system, data write control method, and data write control program | |
US11940938B2 (en) | Hypervisor bridging of different versions of an IO protocol | |
JP6704127B2 (en) | Information processing equipment | |
JP7201775B2 (en) | Storage system, data management method, and data management program | |
US9639417B2 (en) | Storage control apparatus and control method | |
US11922073B2 (en) | Non-disruptive updating of virtual tape emulation applications | |
US11442882B2 (en) | Bridge circuit for providing conversion between PCIe-NVMe protocol and NVMe-TCP protocol and computer system using the same | |
US11842083B2 (en) | Storage system architecture with dual storage virtualization controllers and the data access method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230511 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240229 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240402 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240509 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20240806 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240819 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7553783 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |