IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

<>
  • 特開-メモリシステムおよび制御方法 図1
  • 特開-メモリシステムおよび制御方法 図2
  • 特開-メモリシステムおよび制御方法 図3
  • 特開-メモリシステムおよび制御方法 図4
  • 特開-メモリシステムおよび制御方法 図5
  • 特開-メモリシステムおよび制御方法 図6
  • 特開-メモリシステムおよび制御方法 図7
  • 特開-メモリシステムおよび制御方法 図8
  • 特開-メモリシステムおよび制御方法 図9
  • 特開-メモリシステムおよび制御方法 図10
  • 特開-メモリシステムおよび制御方法 図11
  • 特開-メモリシステムおよび制御方法 図12
  • 特開-メモリシステムおよび制御方法 図13
  • 特開-メモリシステムおよび制御方法 図14
  • 特開-メモリシステムおよび制御方法 図15
  • 特開-メモリシステムおよび制御方法 図16
  • 特開-メモリシステムおよび制御方法 図17
  • 特開-メモリシステムおよび制御方法 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024036068
(43)【公開日】2024-03-15
(54)【発明の名称】メモリシステムおよび制御方法
(51)【国際特許分類】
   G06F 12/02 20060101AFI20240308BHJP
   G06F 16/18 20190101ALI20240308BHJP
   G06F 12/00 20060101ALI20240308BHJP
   G06F 3/06 20060101ALI20240308BHJP
【FI】
G06F12/02 510A
G06F16/18
G06F12/00 597U
G06F3/06 301M
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022140780
(22)【出願日】2022-09-05
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】佐々木 達哉
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA12
(57)【要約】
【課題】ホストがネットワーク経由でネームスペースを操作することを可能とするメモリシステムを提供する。
【解決手段】実施形態によれば、コントローラは、第1ホストから接続を要求する第1コマンドを受信したことに応じて、不揮発性メモリの記憶領域を論理的に分割して作成されるネームスペースの装着状況に基づき、ネームスペースの作成、削除または着脱を含む操作の要求をネットワークを介して第1ホストから受付可能とするための、かつ、他のホストにおけるネームスペースの着脱とは無関係に第1ホストがネームスペースを独自に着脱可能とするための仮想コントローラを作成する。コントローラは、第1ホストからネームスペースの操作に関する第2コマンドを受信した場合、仮想コントローラにおけるネームスペースの装着状況に基づき、第2コマンドが要求するネームスペースの操作に関する処理を実行する。
【選択図】図2
【特許請求の範囲】
【請求項1】
記憶領域を備える不揮発性メモリと、
ネットワークを介して第1ホストを含む1以上のホストと通信可能であり、前記不揮発性メモリの前記記憶領域を論理的に分割してネームスペースを作成可能であるコントローラと、
を具備し、
前記コントローラは、
前記第1ホストから接続を要求する第1コマンドを受信したことに応じて、前記不揮発性メモリの前記記憶領域に対する前記ネームスペースの装着状況に基づき、前記ネームスペースの作成、削除または着脱を含む操作の要求を前記ネットワークを介して前記第1ホストから受付可能とするための、かつ、他のホストにおける前記ネームスペースの着脱とは無関係に前記第1ホストが前記ネームスペースを独自に着脱可能とするための仮想コントローラを作成し、
前記第1ホストから前記ネームスペースの操作に関する第2コマンドを受信した場合、前記仮想コントローラにおけるネームスペースの装着状況に基づき、前記第2コマンドが要求する前記ネームスペースの操作に関する処理を実行する、
メモリシステム。
【請求項2】
前記コントローラは、
前記第1ホストから前記第1コマンドを受信した場合、前記第1ホスト用に第1仮想コントローラを作成し、
第2ホストから前記第1コマンドを受信した場合、前記第2ホスト用に第2仮想コントローラを作成し、
前記第1ホストから前記ネームスペースの前記操作として装着または抜脱を要求する前記第2コマンドを受信した場合、前記第2コマンドが指定する前記ネームスペースを前記第1仮想コントローラにおいて装着または抜脱し、
前記第2ホストから前記ネームスペースの前記操作として装着または抜脱を要求する前記第2コマンドを受信した場合、前記第2コマンドが指定する前記ネームスペースを前記第2仮想コントローラにおいて装着または抜脱し、
前記不揮発性メモリに作成されている前記ネームスペースの第1識別子と、前記第1仮想コントローラにおいて装着されている状態にある前記ネームスペースの第2識別子との対応関係を管理し、かつ、前記第1識別子と、前記第2仮想コントローラにおいて装着されている状態にある前記ネームスペースの第3識別子との対応関係とを管理し、
前記第1ホストから、前記第2識別子によって前記ネームスペースが指定され前記ネームスペースへのアクセスを要求する第3コマンドを受信した場合、前記第2識別子を前記第1識別子に変換して、前記第1識別子で示される前記ネームスペースに対して前記第3コマンドが要求するアクセスに関する処理を実行し、
前記第2ホストから、前記第3識別子によって前記ネームスペースが指定された前記第3コマンドを受信した場合、前記第3識別子を前記第1識別子に変換して、前記第1識別子で示される前記ネームスペースに対して前記第3コマンドが要求するアクセスに関する処理を実行する、
請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、
第1ネームスペースが前記第1仮想コントローラを含むいずれの仮想コントローラにおいても装着されていない状態において、前記第1ホストから前記第1ネームスペースの前記操作として装着を要求する前記第2コマンドを受信した場合、前記第1ネームスペースを前記不揮発性メモリにおいて作成し、かつ、前記第1ネームスペースを前記第1仮想コントローラにおいて装着し、
前記第1ネームスペースが前記第1仮想コントローラ以外の仮想コントローラにおいて装着されている状態において、前記第1ホストから前記第1ネームスペースの前記操作として装着を要求する前記第2コマンドを受信した場合、前記第1ネームスペースを前記不揮発性メモリにおいて作成することを省略し、前記第1ネームスペースを前記第1仮想コントローラにおいて装着する、
請求項2に記載のメモリシステム。
【請求項4】
前記コントローラは、
第2ネームスペースが前記第1仮想コントローラにおいて装着されており、かつ、前記第1仮想コントローラ以外の仮想コントローラにおいて装着されていない状態において、前記第1ホストから前記第2ネームスペースの前記操作として抜脱を要求する前記第2コマンドを受信した場合、前記第2ネームスペースを前記不揮発性メモリにおいて作成された状態から解放された状態へ移行し、かつ、前記第2ネームスペースを前記第1仮想コントローラにおいて装着された状態から抜脱された状態へ移行し、
前記第2ネームスペースが前記第1仮想コントローラと前記第1仮想コントローラ以外の仮想コントローラとにおいて装着されている状態において、前記第1ホストから前記第2ネームスペースの前記操作として抜脱を要求する前記第2コマンドを受信した場合、前記第2ネームスペースを前記不揮発性メモリにおいて作成された状態から解放された状態へ移行することを省略し、前記第2ネームスペースを前記第1仮想コントローラにおいて装着された状態から抜脱された状態へ移行する、
請求項2に記載のメモリシステム。
【請求項5】
前記コントローラは、
第3ネームスペースが前記第1仮想コントローラ以外の仮想コントローラにおいて装着されていない状態において、前記第1ホストから前記第3ネームスペースの前記操作として削除を要求する前記第2コマンドを受信した場合、前記第3ネームスペースを前記不揮発性メモリから削除し、
前記第3ネームスペースが前記第1仮想コントローラ以外の仮想コントローラにおいて装着されている状態において、前記第1ホストから前記第3ネームスペースの前記操作として削除を要求する前記第2コマンドを受信した場合、エラー応答を前記第1ホストへ送信する、
請求項2に記載のメモリシステム。
【請求項6】
前記コントローラは、前記第3ネームスペースが前記第1仮想コントローラ以外の仮想コントローラにおいて装着されていない状態において、前記第1ホストから前記第3ネームスペースの削除を要求する前記第2コマンドを受信した際、前記第3ネームスペースが前記第1仮想コントローラにおいて装着されていた場合、前記第3ネームスペースを前記第1仮想コントローラにおいて装着された状態から抜脱された状態へ移行し、かつ、前記第3ネームスペースを前記不揮発性メモリから削除する請求項5に記載のメモリシステム。
【請求項7】
前記コントローラは、前記第3ネームスペースが前記第1仮想コントローラ以外の仮想コントローラにおいて装着されていない状態において、前記第1ホストから前記第3ネームスペースの前記操作として削除を要求する前記第2コマンドを受信した際、前記第3ネームスペースが前記第1仮想コントローラにおいて装着されていた場合、エラー応答を前記第1ホストへ送信する請求項5に記載のメモリシステム。
【請求項8】
前記コントローラは、前記第1ホストからネームスペースの前記操作として作成を要求する前記第2コマンドを受信した場合、前記第2コマンドで指定されるネームスペースを前記不揮発性メモリの前記記憶領域に作成する請求項2に記載のメモリシステム。
【請求項9】
前記コントローラは、
前記第1識別子と前記第2識別子との対応関係および前記第1識別子と前記第3識別子との対応関係を含む、前記不揮発性メモリの前記記憶領域に作成されている前記ネームスペースの識別子と、前記仮想コントローラにおいて装着されている状態にある前記ネームスペースの識別子との対応関係を記憶する第1テーブルを管理し、
前記ホストから前記第1テーブルを要求する第4コマンドを受信した場合、前記第1テーブルを前記ホストへ送信する、
請求項2に記載のメモリシステム。
【請求項10】
前記コントローラは、
前記第1識別子と前記第2識別子との対応関係および前記第1識別子と前記第3識別子との対応関係を含む、前記不揮発性メモリの前記記憶領域に作成されている前記ネームスペースの識別子と、前記仮想コントローラにおいて装着されている状態にある前記ネームスペースの識別子との対応関係を記憶する第1テーブルを管理し、
前記ホストから前記第1テーブルの前記不揮発性メモリへの格納を要求する第5コマンドを受信した場合、前記第1テーブルを前記不揮発性メモリに格納する、
請求項2に記載のメモリシステム。
【請求項11】
ネットワークを介して第1ホストを含む1以上のホストと通信可能であり、記憶領域を備える不揮発性メモリの前記記憶領域を論理的に分割してネームスペースを作成可能なメモリシステムの制御方法であって、
前記第1ホストから接続を要求する第1コマンドを受信したことに応じて、前記不揮発性メモリの前記記憶領域に対する前記ネームスペースの装着状況に基づき、前記ネームスペースの作成、削除または着脱を含む操作の要求を前記ネットワークを介して前記第1ホストから受付可能とするための、かつ、他のホストにおける前記ネームスペースの着脱とは無関係に前記第1ホストが前記ネームスペースを独自に着脱可能とするための仮想コントローラを作成し、
前記第1ホストから前記ネームスペースの操作に関する第2コマンドを受信した場合、前記仮想コントローラにおけるネームスペースの装着状況に基づき、前記第2コマンドが要求する前記ネームスペースの操作に関する処理を実行する、
制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムおよび制御方法に関する。
【背景技術】
【0002】
NVMeTM-oF(NVMe over Fabrics)は、ホストが、ネットワークを介して接続されるターゲットを、ローカルのNVMeデバイスとして利用することを可能とする技術である。ターゲットは、たとえばSSD(Solid State Drive)といったメモリシステムである。
【0003】
通常、NVMeデバイスは、NVMeデバイスの記憶領域を論理的に分割して、複数のNS(Namespace)を作成することができる。記憶領域に複数のNSを作成することで、NVMeデバイスを柔軟に使用することができる。例えば、ホストが使用するNVMeデバイスの記憶領域を、アプリケーションプログラムごとに分けることができる。また、NVMe-oFによって複数のホストが1つのターゲットに接続している場合に、複数のホストが使用するNVMeデバイスの記憶領域を、ホストごとに分けることができる。
【0004】
ホストがNVMeデバイスと直接的に接続される環境下においては、ホストは、NS操作用のコマンドであるAdminコマンドを、接続されたNVMeデバイスに送信することで、NSの作成、削除や、NSのattach(装着)、detach(抜脱)といった、NSに関する操作を行うことができる。attachは、NSをアクセス対象に組み入れる操作であり、detachは、NSをアクセス対象から外す操作である。また、NSの削除は、NS用として確保されているNVMeデバイスの一部の記憶領域を解放することである。
【0005】
一方、1つのターゲットを複数のホストが利用可能とするNVMe-oFによって1つのターゲットをローカルのNVMeデバイスとして利用する環境下においては、ホストがターゲットに送信したAdminコマンドは、ターゲットによってサポート外のコマンドとして扱われて、エラー応答されてしまう。しかし、ターゲットがAdminコマンドに対してエラー応答を行うことで、あるホストが使用しているNSを、別のホストがターゲットに送信したAdminコマンドに応じて削除またはdetachするといったことが防止されている。
【0006】
このように、ターゲットとネットワークを介して接続されるホストは、attach状態のNSを使用することはできるが、NSに関する操作を行うことはできない。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特表2021-510215号公報
【特許文献2】特開2019-75104号公報
【特許文献3】特開2021-77208号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明の1つの実施形態は、ホストがネットワーク経由でネームスペースに関する操作をすることを可能とするメモリシステムおよび制御方法を提供する。
【課題を解決するための手段】
【0009】
実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラと、を具備する。不揮発性メモリは、記憶領域を備える。コントローラは、ネットワークを介して第1ホストを含む1以上のホストと通信可能であり、不揮発性メモリの記憶領域を論理的に分割してネームスペースを作成可能である。コントローラは、第1ホストから接続を要求する第1コマンドを受信したことに応じて、不揮発性メモリの記憶領域に対するネームスペースの装着状況に基づき、ネームスペースの作成、削除または着脱を含む操作の要求をネットワークを介して第1ホストから受付可能とするための、かつ、他のホストにおけるネームスペースの着脱とは無関係に第1ホストがネームスペースを独自に着脱可能とするための仮想コントローラを作成する。コントローラは、第1ホストからネームスペースの操作に関する第2コマンドを受信した場合、仮想コントローラにおけるネームスペースの装着状況に基づき、第2コマンドが要求するネームスペースの操作に関する処理を実行する。
【図面の簡単な説明】
【0010】
図1】第1実施形態のターゲット(メモリシステム)を含む、NVMe-oFを適用するコンピュータシステムの一構成例を示す図。
図2】第1実施形態のターゲットの一構成例を示す図。
図3】第1実施形態のターゲットにおいて作成される仮想コントローラの一例を示す図。
図4】第1実施形態のターゲットにおけるconnectコマンド受信時の動作手順を示すフローチャート。
図5】第1実施形態のターゲットにおけるNS作成コマンド受信時の動作手順を示すフローチャート。
図6】第1実施形態のターゲットにおけるNS削除コマンド受信時の動作手順を示すフローチャート。
図7】第1実施形態のターゲットにおけるNS attach/detachコマンド受信時の動作手順を示すフローチャート。
図8】第2実施形態のターゲットにおけるコントローラの一構成例を示す図。
図9】第2実施形態のターゲットにおける、メモリ側コントローラおよび仮想コントローラにおけるNSのattach状態の一例を示す図。
図10】第2実施形態のターゲットが記憶するNS管理情報の一例を示す図。
図11】第2実施形態のターゲットにおけるconnectコマンド受信時の動作手順を示すフローチャート。
図12】第2実施形態のターゲットにおけるI/Oコマンド受信時の動作手順を示すフローチャート。
図13】第2実施形態のターゲットにおけるNS attachコマンド受信時の動作手順を示すフローチャート。
図14】第2実施形態のターゲットにおけるNS detachコマンド受信時の動作手順を示すフローチャート。
図15】第3実施形態のターゲットにおけるコントローラの一構成例を示す図。
図16】第4実施形態のターゲットにおけるコントローラの一構成例を示す図。
図17】第4実施形態のターゲットにおけるNS管理情報の保存要求受信時の動作手順を示すフローチャート。
図18】第4実施形態のターゲットにおけるconnectコマンド受信時の動作手順を示すフローチャート。
【発明を実施するための形態】
【0011】
以下、実施の形態について、図面を参照して説明する。
【0012】
(第1実施形態)
まず、第1実施形態について説明する。
【0013】
図1は、第1実施形態のターゲット(メモリシステム)1を含む、NVMe-oFを適用するコンピュータシステム1000の一構成例を示す図である。
【0014】
コンピュータシステム1000は、1以上のターゲット1を含むターゲットシステム100と、1以上のホスト2を含むホストシステム200とが、ネットワーク機器3を介して接続される。ターゲット1とネットワーク機器3およびネットワーク機器3とホスト2は、たとえば、IEEE 802.3規格のネットワークで接続される。
【0015】
ターゲット1は、NVMe-oF規格のプロトコルでホスト2と通信する機能を有するストレージ装置である。ホスト2は、サーバやPC(Personal Computer)といった情報処理装置である。ネットワーク機器3は、たとえばスイッチやルータである。ターゲット1は、ネットワーク機器3を介して、外部装置であるホスト2からのコマンドを受信する。
【0016】
図2は、ターゲット1の一構成例を示す図である。図2には、ターゲット1が有する後述するコントローラ10の一構成例が併せて示されている。
【0017】
ターゲット1は、コントローラ10と、メモリ20とを有する。コントローラ10は、SoC(System-on-Chip)などとして構成されている。メモリ20は、たとえばNAND型のフラッシュメモリである。
【0018】
コントローラ10は、メモリ20の制御を含むターゲット1の全体的な制御を実行する。前述の、NVMe-oF規格のプロトコルでホスト2と通信する機能は、コントローラ10によって実現される。コントローラ10は、ホスト2からのAdminコマンドに応じて、メモリ20の記憶領域にNSを作成したり、既存のNSを削除したり、NSを着脱したりすることができる。しかし、従来、ネットワークを介してターゲット1と接続されるホスト2がAdminコマンドによってNSを操作することはできなかった。第1実施形態のターゲット1のコントローラ10は、ネットワークを介してターゲット1と接続されるホスト2がAdminコマンドによってNSを操作することを可能とする仕組みを備えている。以下、この点について詳述する。
【0019】
コントローラ10は、ホスト側コントローラ11と、メモリ側コントローラ12と、NS状態確認部13と、仮想コントローラ作成部14とを有する。これらは、コントローラ10内のプロセッサがプログラムを実行することによって実現されてもよいし、電気回路などのハードウェアとして実現されてもよい。以下、NS状態確認部13を確認部13とも称し、仮想コントローラ作成部14を作成部14とも称する。
【0020】
ホスト側コントローラ11は、たとえばIEEE 802.3規格のフォーマットで、ネットワーク機器3を介してホスト2からのコマンドやデータを受信する。ホスト側コントローラ11は、受信したコマンドやデータを、メモリ側コントローラ12が解釈可能なフォーマットに変換し、メモリ側コントローラ12へと中継する。また、ホスト側コントローラ11は、メモリ側コントローラ12から受け取ったコマンドの処理結果を、たとえばIEEE 802.3規格のフォーマットでホスト2に宛ててネットワーク機器3へ送信する。
【0021】
ホスト側コントローラ11は、Adminコマンドパススルー部111を有する。以下、Adminコマンドパススルー部111をパススルー部111とも称する。パススルー部111は、ネットワーク機器3経由で受信されるホスト2からのコマンドがNSの操作に関するAdminコマンドであった場合、このAdminコマンドをメモリ側コントローラ12へ中継するための処理を実行する。前述したように、ネットワーク機器3経由で受信されるホスト2からのAdminコマンドは、従来であればサポート外のコマンドとしてエラー応答されていた。なお、ターゲット1と直接的に接続されるホストからのAdminコマンドは、パススルー部111によらずとも、従来と同様、メモリ側コントローラ12へ中継される。
【0022】
メモリ側コントローラ12は、ホスト側コントローラ11から受け取ったコマンドに応じて、メモリ20へのデータの書き込みや、メモリ20からのデータの読み出しを制御する。また、NSの操作に関するAdminコマンドを受け取った場合、メモリ側コントローラ12は、メモリ20の一部の記憶領域を確保してNSを作成したり、NSを削除して当該NS用に確保されていたメモリ20の一部の記憶領域を解放したり、NSを着脱(attach、detach)したりすることができる。
【0023】
確認部13は、ホスト側コントローラ11からの指示に基づき、メモリ側コントローラ12におけるNSのattach状態を確認する。ホスト側コントローラ11から確認部13への指示は、ターゲット1との接続を要求するconnectコマンドがホスト2から送信された場合に実行される。たとえば、3つのNS「1」、NS「2」、NS「3」がメモリ20の記憶領域に作成されており、そのうち、2つのNS「1」、NS「2」がattach状態にある場合、確認部13は、3つのNS「1」、NS「2」、NS「3」の中の2つのNS「1」、NS「2」がattach状態にあることを確認する。確認部13は、この確認結果を作成部14に通知する。
【0024】
作成部14は、connectコマンドを送信したホスト2用の仮想コントローラ11A(図3参照)を作成する。作成部14による仮想コントローラ11Aの作成も、connectコマンド受信時のホスト側コントローラ11からの指示に基づいて実行される。作成部14は、確認部13からの通知に基づき、メモリ側コントローラ12におけるNSのattach状態が反映された仮想コントローラ11Aを作成する。たとえば、3つのNS「1」、NS「2」、NS「3」の中の2つのNS「1」、NS「2」がattach状態にある仮想コントローラ11Aを作成する。作成部14は、仮想コントローラ11Aの作成が完了したことを、ホスト側コントローラ11に通知する。
【0025】
作成部14は、NS attach部141を有する。NS attach部141は、ホスト側コントローラ11の指示に基づき、仮想コントローラ11AにおけるNSのattach/detachを実行する。このNS attach部141に対してホスト側コントローラ11が指示を送るタイミングについては後述する。
【0026】
ホスト側コントローラ11は、作成部14による仮想コントローラ11Aの作成が完了すると、ホスト2に対して、接続完了をネットワーク機器3経由で応答する。接続完了後、ホスト側コントローラ11は、仮想コントローラ11AにおけるNSのattach状態と、メモリ側コントローラ12におけるNSのattach状態とを並行して管理する。ホスト側コントローラ11は、この管理に基づいて、ホスト2が送信するコマンドに応じて、メモリ20に対するアクセスを制御する。
【0027】
図3は、第1実施形態のターゲット1において作成される仮想コントローラ11Aの一例を示す図である。
【0028】
ここでは、メモリ20の記憶領域に、2つのNS21「A」、NS21「B」が作成されており、かつ、これら2つのNS21がメモリ側コントローラ12においてattach状態にある例を示す。メモリ側コントローラ12は、NS21「A」を識別子NSID「1」と識別し、NS21「B」を識別子NSID2と識別している。
【0029】
また、ここでは、仮想コントローラ11Aにおいても、NS21「A」、NS21「B」の両方がattach状態にある場合を例に示す。つまり、図3に示す仮想コントローラ11Aの状態は、ホスト2からconnectコマンドの受信に応じて作成される仮想コントローラ11Aの状態である。ホスト2においても、NS21「A」は「1」と識別され、NS21「B」は「2」と識別されている。図3中、仮想コントローラ11Aの枠内に示される識別子NSID「1」、「2」は、ホスト2がNS21の識別に用いる識別子である。ホスト2がNS21「A」を対象とするコマンドを送信する場合、識別子NSID「1」を使用する。これにより、たとえば当該コマンドがメモリ側コントローラ12に中継された際、メモリ側コントローラ12によってNS21「A」を対象とする処理が行われる。
【0030】
ここで、仮に、ホスト2が、NS21「A」のdetachを要求するAdminコマンドを送信したとすると、ホスト側コントローラ11は、このホスト2以外の他のホスト2用の仮想コントローラ11AにおいてNS21「A」がattach状態にあるか否かを判定する。NS21「A」をattach状態としている他の仮想コントローラ11Aがある場合、ホスト側コントローラ11は、NS attach部141に対して、Adminコマンドを送信したホスト2用の仮想コントローラ11AからNS21「A」をdetachする指示を送り、NS21「A」のdetach完了をホスト2へ応答する。従って、この場合は、パススルー部111によるメモリ側コントローラ12へのAdminコマンドの引き渡しは行われず、メモリ側コントローラ12においてNS21「A」はattachされたままである。換言すれば、Adminコマンドを送信したホスト2用の仮想コントローラ11Aにおいてのみ、NS21「A」のdetachが行われる。
【0031】
一方、NS21「A」をattach状態としている他の仮想コントローラ11Aがない場合、ホスト側コントローラ11は、まず、パススルー部111によるメモリ側コントローラ12へのdetachを要求するAdminコマンドの引き渡しを行う。メモリ側コントローラ12は、このAdminコマンドに応じて、NS21「A」のdetachの処理を実行する。ホスト側コントローラ11は、メモリ側コントローラ12からNS21「A」のdetach完了を通知されると、NS attach部141に対して、Adminコマンドを送信したホスト2用の仮想コントローラ11AからNS21「A」をdetachする指示を送ると共に、NS21「A」のdetach完了をホスト2へ応答する。メモリ側コントローラ12からNS21「A」のdetach失敗を通知された場合、ホスト側コントローラ11は、NS attach部141に対するNS21「A」をdetachする指示を送ることなく、NS21「A」のdetach失敗をホスト2へ応答する。なお、後述するattachの場合と異なり、detachの場合は、メモリ側コントローラ12におけるdetachの成否に関わらず、仮想コントローラ11Aにおけるdetachを行うようにしてもよい。しかし、ターゲット1の管理上、メモリ側コントローラ12におけるdetachの処理が失敗した場合、その結果がコマンド送信元のホスト2へ通知されることが好ましい。ここで、メモリ側コントローラ12におけるdetachの処理が失敗することは、detachの処理がエラーとなるともいう。
【0032】
また、NS21「A」のdetach後、ホスト2が、NS21「A」のattachを要求するAdminコマンドを送信したとする。この場合も、ホスト側コントローラ11は、NS21「A」をattach状態としている他の仮想コントローラ11Aがあるか否かを判定する。NS21「A」をattach状態としている他の仮想コントローラ11Aがある場合、メモリ側コントローラ12においても、NS21「A」はattach状態にある。ホスト側コントローラ11は、NS attach部141に対して、Adminコマンドを送信したホスト2用の仮想コントローラ11AへNS21「A」をattachする指示を送り、NS21「A」のattach完了をホスト2へ応答する。この場合、ホスト側コントローラ11は、パススルー部111によるメモリ側コントローラ12へのAdminコマンドの引き渡しは行わない。
【0033】
一方、NS21「A」をattach状態としている他の仮想コントローラ11Aがない場合、ホスト側コントローラ11は、まず、パススルー部111によるメモリ側コントローラ12へのattachを要求するAdminコマンドの引き渡しを行う。メモリ側コントローラ12は、このAdminコマンドに応じて、NS21「A」のattachの処理を実行する。ホスト側コントローラ11は、メモリ側コントローラ12からNS21「A」のattach完了を通知されると、NS attach部141に対して、Adminコマンドを送信したホスト2用の仮想コントローラ11AへNS21「A」をatttachする指示を送ると共に、NS21「A」のattach完了をホスト2へ応答する。メモリ側コントローラ12からNS21「A」のattach失敗を通知された場合、ホスト側コントローラ11は、NS attach部141に対するNS21「A」をattachする指示を送ることなく、NS21「A」のattach失敗をホスト2へ応答する。仮想コントローラ11AにおけるNSのattachは、メモリ側コントローラ12においても当該NSがattachされていることが前提である。このため、メモリ側コントローラ12におけるNSのattachが失敗した場合には、ホスト2へのattach失敗の応答は必然的に行われる。ここで、attach失敗の応答は、エラー応答ともいう。
【0034】
次に、ホスト2が、NS21「A」の削除を要求するAdminコマンドを送信したとする。この場合も、ホスト側コントローラ11は、NS21「A」をattach状態としている他の仮想コントローラ11Aがあるか否かを判定する。NS21「A」をattach状態としている他の仮想コントローラ11Aがある場合、NS21「A」の削除することはできないため、ホスト側コントローラ11は、ホスト2へエラーを応答する。この場合、ホスト側コントローラ11は、パススルー部111によるメモリ側コントローラ12へのAdminコマンドの引き渡しは行わない。NS21「A」をattach状態としている他の仮想コントローラ11Aがない場合、ホスト側コントローラ11は、パススルー部111によるメモリ側コントローラ12への削除を要求するAdminコマンドの引き渡しを行う。メモリ側コントローラ12は、このAdminコマンドに応じて、NS21「A」の削除の処理を実行する。ホスト側コントローラ11は、メモリ側コントローラ12からNS21「A」の削除完了を通知されると、NS21「A」の削除完了をホスト2へ応答する。このとき、Adminコマンドを送信したホスト2用の仮想コントローラ11AにおいてNS21「A」がattach状態であったならば、ホスト側コントローラ11は、当該ホスト2用の仮想コントローラ11AにおいてNS21「A」をdettachする。メモリ側コントローラ12からNS21「A」の削除失敗を通知された場合は、ホスト側コントローラ11は、NS21「A」の削除失敗をホスト2へ応答する。
【0035】
なお、NS21「A」の削除を要求するAdminコマンドの受信時、このAdminコマンドを送信したホスト2用の仮想コントローラ11AにおいてNS21「A」をattach中であった場合、ホスト側コントローラ11は、NS21「A」の削除失敗をホスト2へ応答することとしてもよい。
【0036】
また、ホスト2が、その時点では存在していない新たなNSとして、たとえばNS21「C」の作成を要求するAdminコマンドを送信したとする。このとき、これから作成されようとしているNS21「C」は、他の仮想コントローラ11Aにおいてもattachされていないので、ホスト側コントローラ11は、パススルー部111によるメモリ側コントローラ12への新たなNS21の作成を要求するAdminコマンドの引き渡しを即時的に行う。メモリ側コントローラ12は、このAdminコマンドに応じて、新たなNS21の作成の処理を実行する。ホスト側コントローラ11は、メモリ側コントローラ12から新たなNSとしてNS21「C」が作成されたことを示す作成完了を通知されると、NS21「C」の作成完了をホスト2へ応答する。NS21「C」の作成失敗を通知された場合は、ホスト側コントローラ11は、NS21「C」の作成失敗をホスト2へ応答する。
【0037】
このように、第1実施形態のターゲット1は、connectコマンドによってターゲット1との接続を要求するホスト2ごとに仮想コントローラ11Aを作成し、各仮想コントローラ11A上でのNSのattach状態を管理することで、ネットワークを介して接続されるホスト2がAdminコマンドでNSを操作することを可能とする。
【0038】
図4は、第1実施形態のターゲット1における、connectコマンド受信時の動作手順を示すフローチャートである。
【0039】
connectコマンドを受信した場合、確認部13は、メモリ側コントローラ12におけるNSのattach状態を確認する(S101)。作成部14は、確認部13から通知される、メモリ側コントローラ12におけるNSのattach状態と一致した仮想コントローラ11Aを作成する(S102)。
【0040】
ホスト側コントローラ11は、仮想コントローラ11Aが作成されたら、ホスト2との接続完了の応答を作成し(S103)、当該作成した応答をホスト2へ送信する(S104)。
【0041】
図5は、第1実施形態のターゲット1における、NS作成コマンド受信時の動作手順を示すフローチャートである。
【0042】
ホスト側コントローラ11は、ホスト2から受信したAdminコマンドがNS作成コマンドであった場合、パススルー部111により、メモリ側コントローラ12へ即時的に中継する(S201)。ホスト側コントローラ11は、メモリ側コントローラ12からの応答を受信し(S202)、当該受信した応答をホスト2へ送信する(S203)。
【0043】
図6は、第1実施形態のターゲット1における、NS削除コマンド受信時の動作手順を示すフローチャートである。
【0044】
ホスト側コントローラ11は、NS削除コマンド(Adminコマンド)で指定されているNSをattach状態としている他の仮想コントローラ11Aがあるか否かを判定する(S301)。他の仮想コントローラ11Aとは、NS削除コマンドを送信したホスト2以外のホスト2用に作成されている仮想コントローラ11Aである。
【0045】
対象のNSをattach状態としている他の仮想コントローラ11Aがない場合(S301:NO)、ホスト側コントローラ11は、受信したNS削除コマンドを、パススルー部111により、メモリ側コントローラ12へ中継する(S302)。そして、ホスト側コントローラ11は、メモリ側コントローラ12から受け取った応答をホスト2へ送信する(S303)。
【0046】
一方、対象のNSをattach状態としている他の仮想コントローラ11Aがある場合(S301:YES)、ホスト側コントローラ11は、パススルー部111によるNS削除コマンドのメモリ側コントローラ12への中継は行わず、エラー応答をホスト2へ送信する(S303)。
【0047】
図7は、第1実施形態のターゲット1における、NS attachコマンドまたはNS detachコマンド受信時の動作手順を示すフローチャートである。
【0048】
ホスト側コントローラ11は、NS attachコマンドまたはNS detachコマンド(Adminコマンド)で指定されているNSをattach状態としている他の仮想コントローラ11Aがあるか否かを判定する(S401)。
【0049】
対象のNSをattach状態としている他の仮想コントローラ11Aがない場合(S401:NO)、ホスト側コントローラ11は、受信したNS attachコマンドまたはNS detachコマンドを、パススルー部111により、メモリ側コントローラ12へ中継する(S402)。ホスト側コントローラ11は、メモリ側コントローラ12からの応答が成功を示しているか否かを判定する(S403)。
【0050】
メモリ側コントローラ12からの応答が成功を示している場合(S403:YES)、ホスト側コントローラ11は、NS attach部141により、NS attachコマンドまたはNS detachコマンドを送信したホスト2用の仮想コントローラ11Aにおいて対象のNSをattachまたはdetachする(S404)。そして、ホスト側コントローラ11は、NS21のattach完了またはdetach完了の応答をホスト2へ送信する(S405)。
【0051】
一方、メモリ側コントローラ12からの応答が失敗を示している場合(S403:NO)、ホスト側コントローラ11は、仮想コントローラ11AにおけるNSのattachまたはdetachを行うことなく、NSのattach失敗またはdetach失敗の応答をホスト2へ送信する(S405)。
【0052】
また、対象のNSをattach状態としている他の仮想コントローラ11Aがある場合(S401:YES)、ホスト側コントローラ11は、メモリ側コントローラ12へのコマンドの中継を行うことなく、NS attach部141により、仮想コントローラ11AにおけるNSのattachまたはdetachを行い(S404)、NSのattach完了またはdetach完了の応答をホスト2へ送信する(S405)。
【0053】
以上のように、第1実施形態のターゲット1においては、ホスト2がネットワーク経由でNSを操作することが可能となる。
【0054】
(第2実施形態)
次に、第2実施形態について説明する。図8は、第2実施形態のターゲット1aにおけるコントローラ10aの一構成例を示す図である。
【0055】
第2実施形態のコントローラ10aは、第1実施形態のコントローラ10と比較して、仮想コントローラ・NS状態管理部15をさらに有する。以下、仮想コントローラ・NS状態管理部15を管理部15とも称する。管理部15は、仮想コントローラ11AにattachされているNSの情報(NS管理情報)を記憶する。管理部15は、NS管理情報に基づき、NSIDを変換するNSID変換部151を有する。
【0056】
第1実施形態の説明で参照した図3には、メモリ側コントローラ12におけるNSのattach状態と、仮想コントローラ11AにおけるNSのattach状態とが一致している様子を示した。NVMe-oFでは、複数のホスト2が同一のターゲット1aに接続することができるので、メモリ側コントローラ12におけるNSのattach状態と、仮想コントローラ11AにおけるNSのattach状態との間で矛盾が生じる可能性がある。図9は、メモリ側コントローラ12におけるNSのattach状態と、仮想コントローラ11AにおけるNSのattach状態との間で矛盾が生じている一例を示す図である。
【0057】
図9には、メモリ20の記憶領域に、3つのNS21「A」、NS21「B」、NS21「C」が作成されている様子が示されている。これら3つのNS21のすべてが、メモリ側コントローラ12においてattachされている状態にある。また、メモリ側コントローラ12は、NS21「A」を識別情報NSID1、NS21「B」を識別情報NSID2、NS21「C」を識別情報NSID3として識別している。
【0058】
一方、ホスト[1]2用の仮想コントローラ[1]11Aにおいては、識別情報NSID1に対応するNS21「A」、識別情報NSID2に対応するNS21「B」の2つのNS21がattachされており、ホスト[2]2用の仮想コントローラ[2]11Aにおいては、識別情報NSID1に対応するNS21「B」、識別情報NSID2に対応するNS21「C」の2つのNS21がattachされている。この状態は、たとえば、ホスト[1]2およびホスト[2]2それぞれからのconnectコマンドおよびdetachコマンドの受信に応じて発生し得る。具体的には、まず、それぞれからのconnectコマンドの受信に伴って、ホスト[1]2用およびホスト[2]2用の仮想コントローラ[1],[2]11Aがメモリ側コントローラ12におけるNSのattach状態と一致する状態で作成される。そしてその後、ホスト[1]2からのNS21「C」のdetachコマンドが受信され、ホスト[2]2からのNS21「A」のdetachコマンドが受信された場合に、図9の状態が発生し得る。ホスト[1]2からNS21「C」のdetachコマンドが送信された際、ホスト[2]2用の仮想コントローラ[2]11Aが当該NS21「C」をattachしていると、ホスト[1]2用の仮想コントローラ[1]11AにおいてのみNS21「C」のdetachが行われる。同様に、ホスト[2]2からNS21「A」のdetachコマンドが送信された際、ホスト[1]2用の仮想コントローラ[1]11Aが当該NS21「A」をattachしていると、ホスト[2]2用の仮想コントローラ[2]11AにおいてのみNS21「A」のdetachが行われる。
【0059】
ここで、ホスト[1]2およびホスト[2]2は、attach状態にある各NS21に対して、1以上の整数の識別子NSIDを昇順かつ無欠番で適応的に割り当てている。従って、ホスト[2]2は、NS21「A」をdetach後、NS21「B」を識別子NSID1、NS21「C」を識別子NSID2と識別している。この場合、ホスト[2]2が、NS21「B」を対象とするコマンドを、識別子NSID1を用いて送信すると、このコマンドをホスト側コントローラ11から中継されたメモリ側コントローラ12においては、ホスト[2]2が意図しないNS21「A」がコマンドの対象となってしまう。
【0060】
第2実施形態のターゲット1aにおいては、コントローラ10aが、NSID変換部151を含む管理部15をさらに備える。これにより、メモリ側コントローラ12上おけるNS21のattach状態と、仮想コントローラ11AにおけるNS21のattach状態との間で矛盾が生じていたとしても、ホスト2が意図しないNS21がコマンドの対象となることを防止する。以下、この点について詳述する。
【0061】
図10は、管理部15が記憶するNS管理情報の一例を示す図である。
【0062】
図10に示すように、NS管理情報には、仮想コントローラ11Aごとに、対応するホスト2と、その仮想コントローラ11Aにおいてattachされている状態のNS21と、attachされている各NSの仮想コントローラ11Aにおける識別子NSIDおよびメモリ側コントローラ12における識別子NSIDと、が対応付けられている。管理部15は、ターゲット1aが図9に示す状態にあるとき、図10に示す内容を含むNS管理情報を記憶する。
【0063】
具体的には、管理部15は、NS管理情報において、仮想コントローラ[1]11Aについては、ホスト[1]2用であること、NS21「A」、NS21「B」がattachされていること、NS21「A」の仮想コントローラ11Aにおける識別子NSIDは「1」であり、メモリ側コントローラ12における識別子NSIDは「1」であること、NS21「B」の仮想コントローラ11Aにおける識別子NSIDは「2」であり、メモリ側コントローラ12における識別子NSIDは「2」であること、を記憶する。
【0064】
また、管理部15は、NS管理情報において、仮想コントローラ[2]11Aについては、ホスト[2]2用であること、NS21「B」、NS21「C」がattachされていること、NS21「A」の仮想コントローラ11Aにおける識別子NSIDは「1」であり、メモリ側コントローラ12における識別子NSIDは「2」であること、NS21「B」の仮想コントローラ11Aにおける識別子NSIDは「2」であり、メモリ側コントローラ12における識別子NSIDは「3」であること、を記憶する。
【0065】
ホスト側コントローラ11は、ホスト2から受信したコマンドをメモリ側コントローラ12へ中継する前に、コマンドに含まれているNS21の識別子NSIDの変換をNSID変換部151に指示する。NSID変換部151は、管理部15で記憶されるNS管理情報に基づき、コマンドに含まれるNS21の識別子NSIDを必要に応じて変換する。たとえば、ホスト[2]2が送信したコマンドに識別子NSID1が含まれていた場合、NSID変換部151は、この識別子NSIDを「1」から「2」に変換する。ホスト側コントローラ11は、変換後のNS21の識別子NSID2を含むコマンドをメモリ側コントローラ12へ中継する。
【0066】
これにより、メモリ側コントローラ12が識別子NSID2でNS21「B」を識別している一方で、ホスト[2]2が識別子NSID1を用いてNS21「B」を指定するコマンドが送信されても、メモリ側コントローラ12において、ホスト[2]2が意図するNS21「B」がコマンドの対象となる。
【0067】
図11は、第2実施形態のターゲット1aにおける、connectコマンド受信時の動作手順を示すフローチャートである。図11に示すS501、S502,S504,S505は、それぞれ図4に示すS101~104と実質的に同じ処理である。
【0068】
connectコマンドを受信した場合、確認部13は、メモリ側コントローラ12におけるNSのattach状態を確認する(S501)。作成部14は、確認部13から通知される、メモリ側コントローラ12におけるNSのattach状態と一致した仮想コントローラ11Aを作成する(S502)。管理部15は、作成された仮想コントローラ11AのNS管理情報を登録する(S503)。
【0069】
ホスト側コントローラ11は、仮想コントローラ11Aが作成され、また、当該作成された仮想コントローラ11AのNS管理情報が登録されたら、ホスト2との接続完了の応答を作成し(S504)、当該作成した応答をホスト2へ送信する(S505)。
【0070】
図12は、第2実施形態のターゲット1aにおける、メモリ20へのデータの書き込みまたはメモリ20からのデータの読み出しを要求するI/Oコマンド受信時の動作手順を示すフローチャートである。
【0071】
ホスト側コントローラ11は、NSID変換部151により、コマンドに含まれるNS21の識別子NSIDをメモリ側コントローラ12における識別子NSIDへ変換する(S601)。ホスト側コントローラ11は、変換したNS21の識別子NSIDを含むコマンドをメモリ側コントローラ12へ中継する(S602)。メモリ側コントローラ12は、このコマンドに関する処理を実行する。
【0072】
ホスト側コントローラ11は、メモリ側コントローラ12からの応答を受信し(S603)、NSID変換部151により、今度は、その応答に含まれるNS21の識別子NSIDを仮想コントローラ11Aにおける識別子NSIDへ変換する(S604)。ホスト側コントローラ11は、変換したNS21の識別子NSIDを含む応答をホスト2へ送信する(S605)。
【0073】
図13は、第2実施形態のターゲット1aにおける、NS attachコマンド受信時の動作手順を示すフローチャートである。図13に示すS701~S704,S706は、それぞれ図4に示すS401~405と実質的に同じ処理である。
【0074】
ホスト側コントローラ11は、NS attachコマンド(Adminコマンド)で指定されているNSをattach状態としている他の仮想コントローラ11Aがあるか否かを判定する(S701)。
【0075】
対象のNSをattach状態としている他の仮想コントローラ11Aがない場合(S701:NO)、ホスト側コントローラ11は、受信したNS attachコマンドを、パススルー部111により、メモリ側コントローラ12へ中継する(S702)。ホスト側コントローラ11は、メモリ側コントローラ12からの応答が成功を示しているか否かを判定する(S703)。
【0076】
メモリ側コントローラ12からの応答が成功を示している場合(S703:YES)、ホスト側コントローラ11は、NS attach部141により、NS attachコマンドを送信したホスト2用の仮想コントローラ11Aにおいて対象のNS21をattachする(S704)。管理部15は、NS21のattachに伴い、当該ホスト2用の仮想コントローラ11AのNS管理情報を更新する(705)。そして、ホスト側コントローラ11は、NS21のattach完了の応答をホスト2へ送信する(S706)。
【0077】
一方、メモリ側コントローラ12からの応答が失敗を示している場合(S703:NO)、ホスト側コントローラ11は、仮想コントローラ11AにおけるNSのattachを行うことなく、NSのattach失敗の応答をホスト2へ送信する(S706)。
【0078】
また、対象のNSをattach状態としている他の仮想コントローラ11Aがある場合(S701:YES)、ホスト側コントローラ11は、メモリ側コントローラ12へのコマンドの中継を行うことなく、NS attach部141により、仮想コントローラ11AにおけるNSのattachを行う(S704)。管理部15は、NS21のattachに伴い、対象の仮想コントローラ11AのNS管理情報を更新する(S705)。ホスト側コントローラ11は、NS21のattach完了の応答をホスト2へ送信する(S706)。
【0079】
図14は、第2実施形態のターゲット1aにおける、NS detachコマンド受信時の動作手順を示すフローチャートである。図14に示すS803~S805は、それぞれ図4に示すS401、S402,405と実質的に同じ処理である。
【0080】
ホスト側コントローラ11は、NS attach部141により、NS detachコマンドを送信したホスト2用の仮想コントローラ11Aにおいて対象のNS21をdetachする(S801)。管理部15は、NS21のdetachに伴い、対象の仮想コントローラ11AのNS管理情報を更新する(S802)。
【0081】
続いて、ホスト側コントローラ11は、対象のNSをattach状態としている他の仮想コントローラ11Aがあるか否かを判定する(S803)。対象のNSをattach状態としている他の仮想コントローラ11Aがない場合(S803:NO)、ホスト側コントローラ11は、受信したNS detachコマンドを、パススルー部111により、メモリ側コントローラ12へ中継する(S804)。ホスト側コントローラ11は、メモリ側コントローラ12からの応答をホスト2へ送信する(S805)。
【0082】
対象のNSをattach状態としている他の仮想コントローラ11Aがある場合(S803:YES)、ホスト側コントローラ11は、メモリ側コントローラ12へのコマンドの中継を行うことなく、NS21のdetach完了の応答をホスト2へ送信する(S805)。
【0083】
以上のように、第2実施形態のターゲット1aにおいては、さらに、メモリ側コントローラ12におけるNSのattach状態と、仮想コントローラ11AにおけるNSのattach状態との間で矛盾が生じている場合であっても、ホスト2が要求するNSの操作を問題なく実行することができる。
【0084】
(第3実施形態)
次に、第3実施形態について説明する。図15は、第3実施形態のターゲット1bにおけるコントローラ10bの一構成例を示す図である。
【0085】
第3実施形態のコントローラ10bは、第2実施形態のコントローラ10aと比較して、管理部15が、NS管理情報提供部152をさらに有する。NS管理情報提供部152は、管理部15で記憶されるNS管理情報をホスト2へ提供するために設けられる。
【0086】
たとえば、ベンダーが独自に用途を定義することのできる複数のNVMeコマンドの中の1つを、予めNS管理情報の取得用として割り当てておく。ホスト側コントローラ11は、このベンダー固有のNVMeコマンドをホスト2から受信したら、NS管理情報提供部152に対して、NS管理情報の提供を要求する。ホスト側コントローラ11は、NS管理情報提供部152から提供されたNS管理情報をホスト2へ送信する。なお、NS管理情報の取得には、Redfishなどのストレージ管理のAPIや、Swordfishなどのストレージ設定用プロセスを使用してもよい。
【0087】
第3実施形態のターゲット1bは、ホスト2にNS管理情報を提供可能に構成される。ホスト2がターゲット1bからNS管理情報を取得することで、ホスト2は、たとえば、どのNS21がどのホスト2によって使用されているのかを認識することができる。そのため、ホスト2ごとにNS21を分けて使用する際の誤アクセス防止や、メンテナンスコストの削減なとの効果を期待することができる。
【0088】
(第4実施形態)
次に、第4実施形態について説明する。図16は、第4実施形態のターゲット1cにおけるコントローラ10cの一構成例を示す図である。
【0089】
第4実施形態のコントローラ10cは、第2実施形態のコントローラ10aと比較して、管理部15が、NS管理情報保存部153をさらに有する。NS管理情報保存部153は、管理部15で記憶されるNS管理情報をメモリ20に保存するために設けられる。
【0090】
たとえば、ベンダーが独自に用途を定義することのできる複数のNVMeコマンドの中の1つを、予めNS管理情報の保存用として割り当てておく。ホスト側コントローラ11は、このベンダー固有のNVMeコマンドをホスト2から受信したら、NS管理情報保存部153に対して、NS管理情報のメモリ20への保存を要求する。なお、NS管理情報の保存には、Redfishなどのストレージ管理のAPIや、Swordfishなどのストレージ設定用プロセスを使用してもよい。また、NS管理情報の保存を要求するNVMeコマンドは、パラメータなどにより、そのコマンドを送信したホスト2に関するNS管理情報のみを保存したり、当該ホスト2を含む全ホスト2に関するNS管理情報を保存したりすることができることが好ましい。
【0091】
第4実施形態のターゲット1cは、connentコマンドの受信時、コマンドを送信したホスト2に関するNS管理情報がメモリ20に保存されていたならば、メモリ側コントローラ12におけるNS21のattach状態と一致するように当該ホスト2用の仮想コントローラ11Aを作成しない。第4実施形態のターゲット1cは、このような仮想コントローラ11Aの作成に代えて、メモリ20に保存されているNS管理情報で示されるNS21のattach状態が再現されるように当該ホスト2用の仮想コントローラ11Aを作成する。
【0092】
これにより、たとえばメンテナンスや障害復旧でホスト2とターゲット1cとを再接続する場合、ホスト2から改めてNS操作を行わなくとも、切断時のNS21のattach状態を再現することができる。そして、これに伴い、メンテナンスコストやダウンタイムの削減などの効果を期待することができる。
【0093】
図17は、第4実施形態のターゲット1cにおける、NS管理情報の保存要求を受信した場合の動作手順を示すフローチャートである。
【0094】
ホスト側コントローラ11は、たとえばベンダー固有のNVMeコマンドでNS管理情報の保存要求を受信すると、保存対象は全ホスト2のNS管理情報か否かを判定する(S901)。保存対象が全ホスト2のNS管理情報である場合(S901:YES)、ホスト側コントローラ11は、NS管理情報保存部153により、全ホスト2のNS管理情報をメモリ20に保存し(S902)、NS管理情報保存完了の応答をホスト2へ送信する(S904)。一方、保存対象が全ホスト2のNS管理情報ではない場合(S901:NO)、ホスト側コントローラ11は、NS管理情報保存部153により、要求元のホスト2のNS管理情報のみをメモリ20に保存し(S903)、NS管理情報保存完了の応答をホスト2へ送信する(S904)。
【0095】
図18は、第4実施形態のターゲット1cにおける、connectコマンド受信時の動作手順を示すフローチャートである。
【0096】
connectコマンドを受信した場合、ホスト側コントローラ11は、NS管理情報をメモリ20から読み出す(S1001)。ホスト側コントローラ11は、読み出したNS管理情報を参照して、connectコマンドを送信したホスト2(対象ホスト2)のNS管理情報がメモリ20に保存されていたか否かを判定する(S1002)。
【0097】
対象ホスト2のNS管理情報が保存されていた場合(S1002:YES)、作成部14は、メモリ20から読み出されたNS管理情報に基づき、前回の切断時にattachされていたNS21がattachされた仮想コントローラ11Aを作成する(S1003)。管理部15は、作成された仮想コントローラ11AのNS管理情報を登録する(S1007)。ホスト側コントローラ11は、connect完了の応答をホスト2へ送信する(S1006)。
【0098】
一方、対象ホスト2のNS管理情報が保存されていない場合(S1002:NO)、確認部13は、メモリ側コントローラ12におけるNSのattach状態を確認する(S1004)。作成部14は、確認部13から通知される、メモリ側コントローラ12におけるNSのattach状態と一致した仮想コントローラ11Aを作成する(S1005)。管理部15は、作成された仮想コントローラ11AのNS管理情報を登録する(S1007)。ホスト側コントローラ11は、ホスト2との接続完了の応答をホスト2へ送信する(S1006)。
【0099】
第4実施形態のターゲット1cは、メモリ20へNS管理情報を保存することで、切断時のNS21の接続の状態を再接続時に再現できるので、コントダウンやダウンタイムの効果を期待することができる。
【0100】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0101】
1…ターゲット、2…ホスト、3…ネットワーク機器、10…コントローラ、11…ホスト側コントローラ、11A…仮想コントローラ、12…メモリ側コントローラ、13…NS状態確認部、14…仮想コントローラ作成部、15…仮想コントローラ・NS状態管理部、20…メモリ、21…NS、100…ターゲットシステム、111…Adminコマンドパススルー部、141…NS attach部、151…NSID変換部、152…NS管理情報提供部、153…NS管理情報保存部、200…ホストシステム、1000…コンピュータシステム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18