特許第6920001号(P6920001)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 株式会社日立製作所の特許一覧

特許6920001マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法
<>
  • 特許6920001-マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 図000002
  • 特許6920001-マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 図000003
  • 特許6920001-マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 図000004
  • 特許6920001-マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 図000005
  • 特許6920001-マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 図000006
  • 特許6920001-マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 図000007
  • 特許6920001-マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 図000008
  • 特許6920001-マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 図000009
  • 特許6920001-マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 図000010
  • 特許6920001-マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 図000011
  • 特許6920001-マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 図000012
  • 特許6920001-マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 図000013
  • 特許6920001-マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 図000014
  • 特許6920001-マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 図000015
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6920001
(24)【登録日】2021年7月28日
(45)【発行日】2021年8月18日
(54)【発明の名称】マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法
(51)【国際特許分類】
   G06F 13/12 20060101AFI20210805BHJP
   G06F 3/06 20060101ALI20210805BHJP
   G06F 3/08 20060101ALI20210805BHJP
   G06F 13/10 20060101ALI20210805BHJP
【FI】
   G06F13/12 340B
   G06F3/06 301R
   G06F3/08 E
   G06F3/08 H
   G06F13/10 340A
【請求項の数】8
【全頁数】21
(21)【出願番号】特願2018-226940(P2018-226940)
(22)【出願日】2018年12月4日
(65)【公開番号】特開2020-91554(P2020-91554A)
(43)【公開日】2020年6月11日
【審査請求日】2019年8月6日
【前置審査】
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜特許業務法人
(72)【発明者】
【氏名】池田 啓
(72)【発明者】
【氏名】佐藤 篤
(72)【発明者】
【氏名】丸山 貴史
【審査官】 松平 英
(56)【参考文献】
【文献】 特開2017−191603(JP,A)
【文献】 米国特許第08595385(US,B1)
【文献】 米国特許出願公開第2018/0307521(US,A1)
【文献】 国際公開第2018/037510(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/12
G06F 3/06
G06F 3/08
G06F 13/10
(57)【特許請求の範囲】
【請求項1】
計算機に論理的な記憶領域としてボリュームを提供し、計算機からのI/O要求を処理する複数のノードを備えたマルチノードストレージシステムであって、
前記複数のノードは、
前記計算機からのI/O要求を処理する複数のプロセッサと、メモリを有する複数のコントローラと、
前記複数のコントローラの何れかにPCI接続される複数のNVMeドライブと、を備え
前記メモリは、
I/O要求に含まれる論理的アドレスとデータが格納されるNVMeドライブとの対応を管理するストレージ構成情報と、
前記複数のNVMeドライブ毎に、プロセッサ、仮想キュー、実キューとの対応関係、プロセッサが代表プロセッサであることを管理するキュー管理情報と、を格納し、さらに、
前記複数のプロセッサの各々にそれぞれが対応する複数の仮想キューが設定される仮想キュー領域と、
前記複数のNVMeドライブの何れかに対しコマンドを格納する、前記仮想キューの数よりも少ない実キューが設定される実キュー領域と、を有し、
前記仮想キューは、コマンドを格納するVSQと、応答を格納するVCQとを含み、
前記実キューは、コマンドを格納するSQと、応答を格納するCQとを含み、
前記複数のプロセッサの第1のプロセッサは、
前記計算機からリード要求を受領すると、前記ストレージ構成情報に基づいて、前記複数のNVMeドライブからリード要求のアドレスに対応する第1のNVMeドライブを特定し、特定された前記第1のNVMeドライブのキュー管理情報に基づいて、前記第1のプロセッサに割り当てられた第1のVSQにリード要求を格納し、
前記第1のプロセッサを収容する、前記複数のコントローラの第1のコントローラに、収容される第1の代表プロセッサは、
前記第1のNVMeドライブの前記キュー管理情報に基づいて、前記第1のVSQに格納されたリード要求を刈り取り、前記第1のNVMeドライブに対して設定されている第1のSQにリード要求を格納し、
前記第1のNVMeドライブは、
前記第1のSQに格納されたリード要求を刈り取り、リード要求を実行することを特徴とするマルチノードストレージシステム。
【請求項2】
請求項1に記載されたマルチノードストレージシステムにおいて、
前記複数のノードは、
データを一時的に格納するキャッシュメモリを有し、
前記第1のNVMeドライブは、
リード要求を実行すると、前記実キューの内、前記第1のNVMeドライブに対応する第1のCQに応答を格納すると共に、リードデータを前記キャッシュメモリに格納し、
前記第1の代表プロセッサは、
前記第1のプロセッサと前記キュー管理情報に基づいて、前記第1のCQに格納された応答を刈り取り、前記第1のプロセッサに割り当てられた第1のVCQに応答を格納し、
前記第1のプロセッサは、
前記第1のVCQに格納された応答を刈り取り、前記キャッシュメモリからリードデータを読み出すことを特徴とするマルチノードストレージシステム。
【請求項3】
請求項2に記載のマルチノードストレージシステムにおいて、
前記第1のプロセッサは、
前記計算機からリード要求を受領すると、前記第1のプロセッサに割り当てられた前記第1のVSQにリード要求を格納する前に、前記キャッシュメモリにリード要求に対応するデータが格納されているか判定することを特徴とするマルチノードストレージシステム。
【請求項4】
請求項1に記載のマルチノードストレージシステムにおいて、
前記第1のプロセッサは、
前記特定されたNVMeドライブが、前記第1のプロセッサを収容する第1のコントローラ以外の第2のコントローラにPCI接続されている場合、前記特定されたNVMeドライブのキュー管理情報に基づいて、前記第2のコントローラの第2のVSQであって、前記第1のプロセッサ用の前記第2のVSQにリード要求を格納し、
前記第2のコントローラに、収容される第2の代表プロセッサは、前記第2のVSQからリード要求を刈り取り、前記特定されたNVMeドライブに対して設定されている第2のSQにリード要求を格納し、
前記特定されたNVMeドライブは、前記第2のSQに格納されたリード要求を刈り取り、リード要求を実行することを特徴とするマルチノードストレージシステム。
【請求項5】
請求項4に記載されたマルチノードストレージシステムにおいて、
前記特定されたNVMeドライブは、リード要求を実行すると、第2のCQに応答を格納すると共に、リードデータを前記第2のコントローラのキャッシュメモリと前記第1のコントローラのキャッシュメモリに格納し、
前記第2のコントローラの前記第2の代表プロセッサは、前記第1のプロセッサと前記キュー管理情報に基づいて、前記第2のCQに格納された応答を刈り取り、前記第1のプロセッサに割り当てられた第1のVCQに応答を格納し、
前記第1のプロセッサは、第1のVCQに格納された応答を刈り取り、前記キャッシュメモリからリードデータを読み出すことを特徴とするマルチノードストレージシステム。
【請求項6】
請求項4に記載のマルチノードストレージシステムにおいて、
前記第1のプロセッサは、前記計算機からリード要求を受領すると、前記第1のプロセッサに割り当てられた前記第1のVSQにリード要求を格納する前に、キャッシュメモリにリード要求に対応するデータが格納されているか判定することを特徴とするマルチノードストレージシステム。
【請求項7】
計算機に論理的な記憶領域としてボリュームを提供し、計算機からのI/O要求を処理する複数のノードを複数備えたマルチノードストレージシステムのキュー制御方法であって、
前記複数のノードは、
前記計算機からのI/O要求を処理する複数のプロセッサと、メモリを有する複数のコントローラと、
前記複数のコントローラの何れかにPCI接続される複数のNVMeドライブと、を備え、
前記メモリは、
I/O要求に含まれる論理的アドレスとデータが格納されるNVMeドライブとの対応を管理するストレージ構成情報と、
前記複数のNVMeドライブ毎に、プロセッサ、仮想キュー、実キューとの対応関係、プロセッサが代表プロセッサであることを管理するキュー管理情報と、を格納し、さらに、
前記複数のプロセッサの各々にそれぞれ対応する複数の仮想キューが設定される仮想キュー領域と、
前記複数のNVMeドライブの何れかに対しコマンドを格納する、前記仮想キューの数よりも少ない実キューが設定される実キュー領域と、を有し、
前記仮想キューは、コマンドを格納するVSQと、応答を格納するVCQとを含み、
前記実キューは、コマンドを格納するSQと、応答を格納するCQとを含み、
前記複数のプロセッサの第1のプロセッサは、
前記計算機からリード要求を受領すると、前記ストレージ構成情報に基づいて、前記複数のNVMeドライブからリード要求のアドレスに対応する第1のNVMeドライブを特定し、特定された前記第1のNVMeドライブのキュー管理情報に基づいて、前記第1のプロセッサに割り当てられた第1のVSQにリード要求を格納し、
前記第1のプロセッサを収容する、前記複数のコントローラの第1のコントローラに、収容される第1の代表プロセッサは、
前記第1のNVMeドライブの前記キュー管理情報に基づいて、前記第1のVSQに格納されたリード要求を刈り取り、前記第1のNVMeドライブに対して設定されている第1のSQにリード要求を格納し、
前記第1のNVMeドライブは、
前記第1のSQに格納されたリード要求を刈り取り、リード要求を実行することを特徴とするマルチノードストレージシステムのキュー管理方法。
【請求項8】
計算機に論理的な記憶領域としてボリュームを提供し、計算機からのI/O要求を処理する複数のノードを複数備えたマルチノードストレージシステムのキュー制御方法であって、
前記複数のノードは、
前記計算機からのI/O要求を処理する複数のプロセッサと、メモリを有する複数のコントローラと、
前記複数のコントローラの何れかにPCI接続される複数のNVMeドライブと、を備え、
前記メモリは、
I/O要求に含まれる論理的アドレスとデータが格納されるNVMeドライブとの対応を管理するストレージ構成情報と、
前記複数のNVMeドライブ毎に、プロセッサ、仮想キュー、実キューとの対応関係、プロセッサが代表プロセッサであることを管理するキュー管理情報と、を格納し、さらに、
前記複数のプロセッサの各々にそれぞれが対応する複数の仮想キューが設定される仮想キュー領域と、
前記複数のNVMeドライブの何れかに対しコマンドを格納する、前記仮想キューの数よりも少ない実キューが設定される実キュー領域と、を有し、
前記仮想キューは、コマンドを格納するVSQと、応答を格納するVCQとを含み、
前記実キューは、コマンドを格納するSQと、応答を格納するCQとを含み、
前記複数のプロセッサの第1のプロセッサは、
前記計算機からリード要求を受領すると、前記ストレージ構成情報に基づいて、前記複数のNVMeドライブからリード要求のアドレスに対応する第1のNVMeドライブを特定し、前記特定されたNVMeドライブが、前記第1のプロセッサを収容する第1のコントローラ以外の第2のコントローラにPCI接続されている場合、前記特定されたNVMeドライブのキュー管理情報に基づいて、前記第2のコントローラの第2のVSQであって、前記第1のプロセッサ用の前記第2のVSQにリード要求を格納し、
前記第2のコントローラに、収容される第2の代表プロセッサは、前記第1のプロセッサと前記キュー管理情報に基づいて、前記第2のVSQからリード要求を刈り取り、前記特定されたNVMeドライブに対して設定されている第2のSQにリード要求を格納し、
前記特定されたNVMeドライブは、前記第2のSQに格納されたリード要求を刈り取り、リード要求を実行することを特徴とするマルチノードストレージシステムのキュー管理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法に関する。
【背景技術】
【0002】
通常、多数のプロセッサまたはプロセッサコアを有するストレージ装置においては、ドライブを処理するキュー制御を多数のプロセッサ間で排他制御しながら処理を行う必要がある。
【0003】
近年、ストレージ装置の記憶媒体にフラッシュメモリをドライブに搭載した高性能なNVMeドライブを用いたストレージ装置が開発されている。このNVMeドライブでは、規格上、チャネル制御機能によりコマンドを処理するキューを、約64K個まで提供することができる。キューの排他制御を考慮し、NVMeの特徴である多くのキューを利用した高性能化を図る技術として特許文献1が挙げられる。
【0004】
特許文献1には、一つの記憶デバイスに対してプロセッサ数分のキュー群を生成することで、処理の高速化を図る技術が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】国際公開2017/158799号
【発明の概要】
【発明が解決しようとする課題】
【0006】
NVMeドライブを管理するキューは規格上64K個作成可能であるが、実際にドライブベンダーから提供されているキューの数は、128本程度である。特許文献1に記載された技術のように、一つの記憶デバイスに対してプロセッサ数分のキュー群を生成すると、キューが枯渇することが考えられる。
【0007】
また、特許文献1では、どのプロセッサもNVMeドライブにPCI接続され、NVMeドライブのキューにアクセスすることが前提の技術であるが、複数のストレージ装置をネットワークで接続したマルチノードストレージシステムについては十分に考慮されていない。つまり、Software Defined Storage(SDS)、hyper converged infrastructure(HCI環境)のようなマルチノードストレージシステムでは、ドライブに対するアクセス要求を処理するプロセッサの数は、従来のストレージ装置と比較して飛躍的に増加する。このため、キューの数よりプロセッサの数が多くなる可能性があり、特許文献1を適用することができなくなる。
【0008】
また、NVMeのキューはPCI接続されているプロセッサのみが操作できるため、マルチノードストレージシステムのようなネットワークに接続された他のストレージ装置のプロセッサからキューを操作することができない。そのため、I/O要求を受領したストレージ装置が、I/O要求のアクセス先となるデータを格納するドライブがPCI接続されている他のストレージ装置に、I/O要求を転送する必要がある。
【0009】
つまり、転送元のストレージ装置と転送先のストレージ装置の間では、LUN等の論理アドレスを用いたI/O要求を転送する必要がある。そのため、転送元のストレージ装置でアクセス先のドライブを特定するために、LUN等の論理アドレスから実際のデータ格納先のドライブを特定するためのアドレス変換と、転送元のストレージ装置からI/O要求を受信した転送先のストレージ装置で、LUN等の論理アドレスから実際のドライブへのアドレス変換の、二つのアドレス変換が必要となる。
【0010】
そこで、本発明の目的は、I/O処理するプロセッサの数が増えても、キューが枯渇することなく、I/O性能を向上させたマルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法を提供することにある。
【0011】
また、本発明の他の目的は、複数のストレージ装置がネットワークを介して接続されるマルチノードストレージシステムにおいて、I/O性能を向上させたマルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法を提供することにある。
【課題を解決するための手段】
【0012】
上記目的を達成するため、本発明のマルチノードストレージシステムの一態様は、計算機に論理的な記憶領域としてボリュームを提供し、計算機からI/O要求を処理するコントローラを有するノードを複数備えたマルチノードストレージシステムであって、マルチノードストレージシステムは、ノードのコントローラの何れかにPCI接続される複数のNVMeドライブと、複数のノードのコントローラを相互に接続するスイッチとを備え、コントローラは、計算機からのI/O要求を処理する複数のプロセッサと、メモリを有し、メモリには、複数のNVMeドライブ毎に、マルチノードストレージシステムを構成する複数のコントローラのプロセッサ数の仮想キューと、複数のNVMeドライブの何れかに対しコマンドを格納する、前記仮想キューの数よりも少ない、実キューと、を有する。
【発明の効果】
【0013】
本発明によれば、I/O処理を行うプロセッサの数が増えても、NVMeのキューの排他制御によるI/O処理性能の低下を防止することができる。
【0014】
また、マルチノードストレージシステム環境において、I/O処理性能を向上させることができる。
【図面の簡単な説明】
【0015】
図1】システム構成図である。
図2】システムブロック図である。
図3】代表MPによる仮想キューVSQを介したSQ(要求)と制御を説明する図である。
図4】代表MPによる仮想キューVCQを介したCQ(応答)制御を説明する図である。
図5】リード時の動作(ストレート)を説明する図である。
図6】リード時の動作(クロス)を説明する図である。
図7】キャッシュミス時(ストレート)のリードシーケンスを示す図である。
図8】キャッシュミス時(クロス)のリードシーケンスを示す図である。
図9】IO要求受領時のVSQ格納処理フローを示す図である。
図10】代表MPによるVSQ刈取りとSQ(要求)格納処理フローを示す図である。
図11】代表MPによるCQ(応答)刈取りとVCQ格納(クロス間)処理フローを示す図である。
図12】VCQ刈取りと応答処理フローを示す図である。
図13】キュー管理テーブルを示す図である。
図14】ストレージ構成テーブルを示す図である。
【発明を実施するための形態】
【0016】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0017】
以下の説明では、[AAAテーブル]の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、[AAAテーブル]を[AAA情報]とすることができる。
【0018】
また、以下の説明では、[MP]は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)である。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
【0019】
また、以下の説明では、[プログラム]を動作の主体として処理を説明する場合があるが、プログラムは、MP(例えばCPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)等を用いながら行うため、実際の処理の主体はMPである。従って、プログラムを動作の主体として説明された処理は、プロセッサを含む装置が行う処理としてもよい。また、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでもよい。コンピュータプログラムは、プログラムソースから装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ、又は、計算機が読み取り可能な記憶メディアであってもよい。
【0020】
<概要>
本技術は、Software Defined Storage(SDS)、hyper converged infrastructure (HCI環境)のようなマルチノードストレージシステム環境では、プロセッサ(MP)数が増加するため、NVMeドライブを制御するキューの数(本数)より、MPの数の方が多くなることが想定される。
【0021】
その場合、1本のキューを複数のMPで共有することとなり、MP間でキューの操作の排他制御が必要となる。この排他制御により、I/O処理性能が低下する可能性がある。
【0022】
また、NVMeドライブのキュー(SQ、CQ)は、NVMeドライブとPCIにより物理的に接続されているMPからのみ操作が可能である。そのため、複数のストレージ装置がネットワークを介して接続されるSDSやHCIのようなマルチノードストレージシステムでは、ネットワークで接続された他のストレージ装置からNVMeドライブへアクセスするためには、I/Oに含まれるアドレス情報の変換処理が必要となる。つまり、どのストレージ装置にI/Oを転送すべきか、I/Oに含まれるアドレス情報(例えば、LUN)からアクセスすべきNVMeドライブを特定するために、アドレス情報の変換処理が必要となる。
【0023】
しかし、近年のストレージ装置は、多くの仮想的なアドレスレイヤによって管理されているため、I/Oに含まれるアクセス先を特定するLUN等から実際にデータが格納されているドライブへの変換処理を全てのI/O要求に対して行うと、多くの処理を要する。
【0024】
全てのI/O要求に対し、アドレス変換を行うとなると処理性能が低下する恐れがある。
【0025】
本技術は、これら、マルチノードストレージ環境において、NVMeドライブに設けられるキュー(SQ、CQ)とは別に、各MPに対応する仮想的なキュー(VSQ、VCQ)を設けることにより、キューの排他制御を不要とし、I/O処理性能を向上させることができる。
【0026】
また、複数のストレージ装置がネットワークを介して接続されるマルチノードストレージシステムにおいて、キャッシュミスをした場合のみ、アクセス先となるNVMeドライブが接続されたストレージ装置にコマンドを転送(クロス転送)するため、I/O処理性能の向上させることができる。
【0027】
<用語の説明>
NVMe(Non-Volatile Memory Express):PCI Expressを通じて不揮発性ストレージメディア(SSD)を接続するための論理デバイスインタフェース規格。
SQ(Submission Queue):NVMeドライブに対しコマンドを格納するためのキュー。
CQ(Completion Queue): NVMeドライブからの応答を格納するためのキュー。SQとCQはそれぞれ一本ずつでペアを構成する。
本明細書では、SQとCQを実キューと呼ぶ。
【0028】
VSQ(Virtual Submission Queue):MP毎に割り当てられた仮想的なSQ。
VCQ(Virtual Completion Queue): MP毎に割り当てられた仮想的なCQ。
本明細書では、VSQとVCQを仮想キューと呼ぶ。
【0029】
ISW(Intelligent System Switch):ストレージモジュールのコントローラ(CTL)を接続するためのスイッチ。
DKB:CTLとNVMeドライブを接続するためのボード。
【0030】
MP番号:ストレージシステム内でMPを特定するための識別子。
使用VSQ/VCQ番号:MPに対して一意に割り振られるVSQ/VCQの番号。
使用SQ/CQ番号:実際にNVMeドライブとのコマンドの受け渡しを行う際に使用するSQ/CQの番号。
【0031】
VSQ用producer:VSQにどこまでコマンドを格納したかを管理するためのインデックス。
VSQ用Consumer:VSQに格納されたコマンドをどこまで刈り取ったか管理するためのインデックス。
【0032】
VCQ用producer:VCQにどこまでコマンドを格納したかを管理するためのインデックス。
VCQ用Consumer:VCQに格納されたコマンドをどこまで刈り取ったか管理するためのインデックス。
【0033】
代表フラグ:ポーリング処理でVSQからSQ(またはCQからVCQ)に対して、代表して要求を格納するMPであることを管理するための情報。
【0034】
<システム構成>
まず、本発明の一実施形態に係るマルチノードストレージシステムについて説明する。
【0035】
図1は、一実施形態に係るシステム構成図である。
複数のモジュール102a、102b、103cは、インテリジェントシステムスイッチ(ISW)101を介して、相互に接続されている。一つのモジュール102には、二つのノード103が収容され、各ノード103には、二つのコントローラ104が収容されている。各コントローラ104は、ISW101を介して、同一のノード103の他のコントローラ、同一のモジュールの他のノードのコントローラ、或いは、他のモジュールのコントローラと接続される構成となる。
【0036】
各コントローラは、複数のNVMeドライブ107と接続するためのボードDKB105に接続されている。複数のNVMeドライブ107は、NVMeドライブボックス106に収容され、一つ、または複数のNVMeドライブボックス106が各ノード103に接続され、一つのモジュール102を構成している。各コントローラ104は、サーバ等(図示せず)の計算機とネットワークを介して接続され、計算機からI/O要求を処理する。以下、本明細書においては、NVMeドライブを、単にドライブと略す場合がある。
【0037】
モジュール102には、1つ以上のNVMeドライブボックス106が内蔵もしくは外部接続されていても良い。各ノード103は、ストレージ装置に相当し、1つ以上の論理的な記憶領域としてボリュームを計算機に対して提供している。
【0038】
ボリュームは、複数の論理ブロックから構成される。本実施形態での論理ブロックサイズは、例えば、書き込み時に論理ブロックに対して物理ブロックを割り当てるThin Provisioning(容量仮想化)の管理単位と同じサイズとしている。なお、論理ブロックは、Thin Provisioningの管理単位と同じサイズでなくてもよい。ストレージデバイスであるNVMeドライブ107の記憶領域に基づいて複数の物理ブロックが形成されている。ボリュームの論理ブロックには、物理ブロックが割り当てられる。
【0039】
図1に示すマルチノードストレージシステムでは、計算機とモジュール102とが別に構成されている例を示しているが、計算機とモジュール102或いはノード103とを一つのベアメタル(物理計算機)を用いて構成してもよい。例えば、計算機とノード103とのそれぞれを同一の計算機上で動作するVM(Virtual Machine)と呼ばれる仮想計算機としてもよく、コンテナ仮想化により構成されたコンテナとしてもよい。
【0040】
図1には、一つのモジュールが二つのノードで構成される例を示したが、一つのモジュールに含まれるノードの数は、3以上であっても良い。また、図1には各ノードに二つのコントローラが含まれる例を示しているが、ノードに含まれるコントローラの数は、3以上であっても良い。
【0041】
次に、ノード(ストレージ装置)102のハードウェア構成について説明する。
【0042】
図2は、一実施形態に係るノード102(ストレージ装置)のシステムブロック図である。
ストレージ装置102は、サーバ等の計算機からのI/O要求を処理し、NVMeドライブ107にデータを格納、或いは、NVMeドライブ107からデータを読み出し、計算機に送る処理を行うコントローラ104と、1以上のNVMeドライブ107とを有する。図2では、NVMeドライブボックスと、コントローラの一つを省略している。
【0043】
コントローラ104は、サーバ等の計算機201と接続する上位I/F202と、他のノードのコントローラとISW101を介してNVMeで接続するコントローラ間I/F203と、複数のプロセッサ(MP)205と、NVMeドライブ107に接続するための下位I/F206、メモリ204を有する。コントローラ間I/F203は、コントローラを同一のノード103の他のコントローラ、同一のモジュールの他のノードのコントローラ、或いは、他のモジュールのコントローラと接続する。
【0044】
メモリ204には、ノードが計算機に提供するボリュームとNVMeドライブとの関係を示すストレージ構成テーブル2041、キュー管理テーブル2042、コントローラ実行する各種処理を実現するMP処理プログラム2045を格納し、VSQやVCQを設定するVSQ/VCQ領域2043、SQやCQを設定するSQ/CQ領域2044、I/Oに関するデータを一時的に記憶するキャッシュメモリとなるキャッシュメモリ領域2046を有する。
【0045】
図14に、メモリ204に格納されるストレージ構成テーブル2041を示す。ストレージ構成テーブル2041には、例えば、ノードが計算機に提供するボリュームを識別するための情報であるLUN1401に対し、実際にデータが格納される、或いは格納されているNVMeドライブの番号1402を対応させて管理している。
【0046】
図14では、LUNとドライブ番号が直接対応付けられているように記載されているが、実際には、LUNとドライブ番号との間に、仮想ボリュームや各ドライブの容量を管理するプール等、複数のアドレスを管理するレイヤがある場合がある。本実施の形態では、これら中間に存在する各種アドレス管理レイヤの説明を省略して、サーバ等の計算機がI/O要求で指定するLUN番号と、LUN番号を含むI/O要求を実行する場合に利用される物理的なNVMeドライブとの対応関係を必要最低限の情報としてストレージ構成テーブルを説明する。
【0047】
そのため、LUNに対応してストレージ構成テーブルに示されるNVMeドライブ番号は、例えば、RAIDグループを構成するドライブと理解することもできる。また、ストレージ構成テーブルとして、複数種のRAID、EC(Eraser Coding)のデータ保護技術、二つのLUNでペアを組む、ミラーリング、RC(Remote Copy)等の、LUとドライブとの関係を管理する情報を用いることができる。
【0048】
MP(Main Processor)205、メモリ204、上記I/F202、コントローラ間I/F203、下記I/F206は、例えば内部バスや外部バスで接続されている。
【0049】
コントローラは、メモリに格納されたプログラムを、MP205によって実行されることで、定められた処理を、メモリに格納された各種情報を参照しながら行うため、実際の処理の主体はMPであるが、説明上、プログラムを動作の主体として説明する場合がある。その場合、各処理をMPが行う。また、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでもよい。
【0050】
次に、図3を用いて、ノード102で実行される代表MPによる仮想キューVSQを介したSQ(要求)と制御を説明する。
ノード102は、複数のMP205、メモリ204、PCI-SW302を有し、NVMeドライブ107にアクセスする。PCI−SW302は、図2の下記I/F206とNVMeドライブ107の間に存在する。
【0051】
メモリ204には仮想的なキューであるVSQとNVMeドライブに対しコマンドを格納するためのキューであるSQの領域が設けられ、各MP205に対して、仮想的なキューであるVCQ3011が割り当てられ、NVMeに従って動作する。例えば、MP番号[0]のMP205aにはVSQ番号[0]のVSQ3011a、MP番号[x]のMP205xにはVSQ番号[x]のVSQ3011cが割り当てられている。
【0052】
各VSQに、NVMeドライブに対しコマンドを格納するためのキューSQ3012が対応付けられている。例えば、VSQ3011aとVSQ3011cは、SQ番号[0]のSQ3012aが対応している。
このSQ3012に格納されたコマンドは、NVMeドライブ107が刈り取って処理を行う。VSQとSQとの対応は、図13に示すドライブ毎に管理されるキュー管理テーブルによって管理されている。
【0053】
図13は、キュー管理テーブルを示す図である。図13に示すキュー管理テーブル2042はNVMeドライブ毎の情報であり、複数のNVMeドライブを有するマルチノードストレージシステムにおいては、NVMeドライブ毎に複数のキュー管理テーブルを管理する。図13では、NVMeドライブの内、NVMeドライブ番号[ZZ]用のキュー管理テーブルを示している。
【0054】
各MPに対してストレージシステムを通して割り振ったMP番号1301、各MPが使用するVSQ/VCQ番号1302、MPが使用する使用SQ/CQ番号1303、NVMeドライブ番号[ZZ]がPCI接続されているコントローラの情報であるNVMe接続先CTL番号1304、VSQにどこまで格納したか管理するためのインデックスであるVSQ用producer1305、VSQをどこまで刈り取ったか管理するためのインデックスであるVSQ用Consumer1306、VCQにどこまで格納したか管理するためのインデックスであるVCQ用producer1307、VCQをどこまで刈り取ったか管理するためのインデックスであるVCQ用Consumer1308、ポーリング処理でVSQからSQへ、CQからVCQに対して、要求を格納する代表MPであるかどうか示す情報である代表フラグ1309が対応して管理されている。
【0055】
例えば、MP番号[0]に対し、VSQ/VCQ番号は[0]、SQ/CQ番号1303は[0]、NVMeドライブ接続先コントローラの番号1304は[0]、VSQ用producer1305は[10]、VSQ用Consumer1306は[8]、VCQ用producer1307は[6]、VCQ用Consumer1308は[4]、代表フラグ1309が[ON]が対応して管理されている。ここで、NVMe接続先コントローラ番号1304は、キュー管理テーブル2402で管理されるNVMeドライブが、コントローラに対して直接PCI接続されている場合には[0]、直接PCI接続されていない他のコントローラに接続されている場合には[1]が格納される。
【0056】
コントローラ104がI/O要求を受領すると、I/O要求に含まれるLUN等の仮想的なアドレス情報から図14のストレージ構成テーブル1402を参照し、アクセス先のデータを格納するNVMeドライブを特定し、特定されたNVMeドライブの情報から、NVMeドライブ毎に管理されているキュー管理テーブル2402を参照することができる。この動作は、MP処理プログラム2045の内容を、MP205が処理することで実現する。
【0057】
このように、MP毎に割り当てられた仮想的なSQであるVSQを設けることで、MP間の排他制御を不要とし、MP数が多いマルチノードストレージ環境において、I/O処理性能を向上させることができる。
【0058】
図4は、代表MPによる仮想キューVCQを介したCQ(応答)制御を説明する図である。
メモリ204には、仮想的なキューであるVCQとNVMeドライブからの応答を格納するためのキューであるCQの領域が設けられ、各MP205に対して一つの仮想的なキューであるVCQ4011が割り当てられている。例えば、MP番号[0]のMP205aには、VCQ番号[0]のVCP4011aが割り当てられている。
【0059】
各VCQに対して、NVMeドライブからの応答を、NVMeに従って格納するためのキューCQ4012が対応付けられている。このCQ4012に格納されたコマンドは、代表MP205が刈り取って処理を行う。VCQとCQとの対応は、図13に示すドライブ毎に管理されるキュー管理テーブルによって管理されている。
【0060】
このように、MP毎に割り当てられた仮想的なCQであるVCQを設けることで、MP間の排他制御を不要とし、MP数が多いマルチノードストレージ環境において、I/O処理性能を向上させることができる。
【0061】
<ストレート転送動作>
図5は、リード時の動作(ストレート転送)を説明する図である。ここで、ストレート転送とは、I/Oを処理するMPとI/Oのアクセス対象となるNVMeドライブ107がPCI接続されている場合をいう。
【0062】
尚、VSQとVCQのペアは、マルチノードストレージシステムのコントローラに収容されるMPの数だけメモリ204に用意する。SQとCQのペアはNVMeドライブ107がPCI接続されているコントローラ104のメモリ204に用意する。ちなみに、現在入手可能なNVMeドライブ107では、SQとCQのペアは一つのNVMeドライブ107当たり、NVMeドライブ107がサポートしているキューの本数の数だけ作成可能である。
【0063】
図5の点線は、NVMeに従ったデータやコマンドの動きを示す。
【0064】
まず、コントローラ1(104)のMP[00]205aは、自身に割り当てられているVSQ3011aに対し、I/O要求(リード要求)コマンドをNVMeに従って格納する(501)。MP[00]205aは、上位I/FからI/O要求を引き渡されI/Oを処理するMPである。
【0065】
VSQに格納されたリードコマンドは、代表MPによって刈り取られ、SQに格納(エンキュー)される(502)。代表MPは、図13に示す代表フラグが設定されているMPである。代表MPを決める処理は、後述する。
【0066】
SQにエンキューされたリードコマンドは、NVMeドライブ107によって刈り取られ(503)、実行される。ドライブ107によってリードコマンドが実行され、読み出されたデータは、メモリのキャッシュメモリ領域2046に格納される(504)。NVMeドライブ107は、リード要求コマンドを実行したことを示す完了応答をCQ4012aに格納する(505)。
【0067】
代表MPは、CQ4012aに格納された完了応答を、MP205a用のVCQ4011aにエンキューする(506)。MP205aは、VCQ4011aにエンキューされた完了応答を刈り取り(507)、キャッシュメモリ2046に格納されたデータを読み出す。
【0068】
尚、図5はリードコマンドについて説明したが、管理用のコマンドであるAdminコマンドの場合も同様の動作となる。
【0069】
<クロス転送動作>
図6は、リード時の動作(クロス)を説明する図である。クロス転送とは、リードコマンドの処理が異なるコントローラを跨ぐ動作であり、所謂他系への処理依頼動作をいう。そのため、マルチノードストレージシステムにおいては、クロス転送となる他系処理には、同一ノードの異なるコントローラの他、異なるモジュールのコントローラがI/O処理を行う場合も含まれる。
【0070】
コントローラ2(104b)のMP205Cが計算機からI/O要求を受領すると、自身に割り当てられているVSQ3011(MP番号XX用)に、リードコマンドを格納する(601)。コントローラ104bの代表MPはVSPに格納されたリードコマンドを刈り取り、データを格納するNVMeドライブ107が接続されている他系コントローラ104aのVSQにクロス転送してエンキューする(602)。コントローラ104aの代表MPは、VSQに格納されたコマンドをSQにエンキューする(603)。
【0071】
SQ3012に格納されたコマンドは、NVMeドライブ107によって刈り取られ(604)、実行される。NVMeドライブ107によってリードコマンドが実行され、読み出されたデータは、メモリのキャッシュメモリ領域2046に格納される(605)。NVMeドライブ107は、リード要求コマンドを実行したことを示す完了応答をCQに格納する(606)。
【0072】
コントローラ1の代表MPは、CQに格納された完了応答を、MP用のVCQにエンキューする(607)。コントローラ2のVCQにクロス転送してエンキューする(608)。MP205cは、VCQにエンキューされた完了応答を刈り取り(609)、キャッシュメモリに格納されたデータを読み出す。
【0073】
このように、マルチノードストレージシステムの全MPに対し、MP毎に割り当てられた仮想的なSQであるVSQを設けることで、MP間の排他制御を不要とし、MP数が多いマルチノードストレージ環境において、I/O処理性能を向上させることができる。
【0074】
尚、図6はリードコマンドについて説明したが、管理用のコマンドであるAdminコマンドの場合も同様の動作となる。
【0075】
このように、クロス転送の際には、転送先のストレージ装置の仮想キューに対して、ネットワークで接続されるストレージ装置間のLUN等の仮想アドレスを用いたI/O要求と比較し、転送先のストレージ装置でアドレス変換を行う必要がないため、I/O処理性能を向上させることができる。
【0076】
<ストレート転送シーケンス>
図7は、ストレート転送の場合であって、キャッシュミス時のリードシーケンス図である。キャッシュミス判定により、キャッシュミスの場合、図5に示す動作と同様である。本図では、図13の情報を用いながら、処理のシーケンスを説明する。
【0077】
上位I/F202が計算機からリードコマンドを受領する(S701)。上位I/Fは、MP00にリードコマンドの受領を通知する(S702)。MP00はキャッシュメモリにリードコマンドで要求されているデータが自コントローラのキャッシュメモリ内にあるかヒット/ミス判定を行う(S703)。キャッシュヒットした場合、自コントローラのキャッシュメモリからデータを読み出し、計算機に応答する。
【0078】
キャッシュヒットした場合、I/O要求に含まれるLUN等のアクセス先論理アドレス情報を、ドライブの特定やデータ格納位置を示す物理アドレス情報への変換を行うことなく、キャッシュメモリからデータを計算機に転送できるので、I/O要求毎にアドレス変換を行う必要がなく、I/O処理性能を向上させることができる。
【0079】
キャッシュミスの場合(S704)、MP00は、リードコマンドに含まれるLUN等の仮想アドレス情報から、図14のストレージ構成テーブルを参照して、データが格納されているNVMeドライブを算出(特定)する(S705)。
【0080】
MP00は自身に割り当てられているVSQに対して、リードコマンドを格納する(S706)。この際、リードコマンドを受領したMP00は、図13に示したキュー管理テーブルを参照することで、MP00に割り当てられているVSQ1302を取得することができる。尚、NVMeドライブ毎に管理されている図13のキュー管理テーブルは、図14のストレージ構成テーブルを参照して特定したNVMeドライブに基づいて、選択することができる。
【0081】
アクセス先のNVMeドライブが図14のストレージ構成テーブルによって特定されると、NVMeドライブ毎に管理されているキュー管理テーブルによって、MP毎にVSQ/VCQ、SQ/CQの対応、代表MPか否か、ドライブがPCI接続されているコントローラでI/Oが処理されるかが把握できるので、当該I/Oの処理がストレート転送かクロス転送か判断できる。
【0082】
各MPは、キュー管理テーブル2042をポーリングし、自身が代表MPかを判断する。図13を参照して説明すると、例えば、ポーリングしているMPのMP番号[0]であって、リードコマンドが、NVMeドライブZZをアクセス先とする場合、代表フラグ1309が設定[ON]であるため、代表MPとなる。同様に、ポーリングしているMPのMP番号[XX]の場合、代表フラグ1309は[OFF]であるため、MP番号[XX]のMPは代表MPとはならない。図7は、MP番号[01]が代表MPとなり、MP番号[00]が代表MPではなく、I/O処理をするMPである場合が示されている。
【0083】
代表MPは、MP00用のVSQからコマンドを刈り取り(S707)、SQにエンキューする(S708)。
【0084】
SQに格納されたコマンドは、アクセス先となるNVMeドライブ107によって、刈り取られ(S709)、コマンドが実行されて、データを読み出す(S710、S711)。読み出されたデータはキャッシュメモリに格納される(S712)と共に、CQに対して完了応答を格納する(S713)。
【0085】
代表MPは、CQから完了応答を刈り取り(S714)、MP00用のVCQにエンキューする(S715)。MP00は、MP00用のVCQから完了応答を刈り取り(S716)、キャッシュメモリからリードデータを読み出し、上位I/Fに送信する(S718)。上位I/Fは計算機に対してリードデータを送信する(S719)。
【0086】
このように、MP毎に割り当てられた仮想的なCQであるVCQを設けることで、MP間の排他制御を不要とし、MP数が多いマルチノードストレージ環境において、I/O処理性能を向上させることができる。
【0087】
マルチノードストレージ環境において、I/O処理性能を向上させることができる。
【0088】
また、キャッシュヒットした場合、I/O要求に含まれるLUN等のアクセス先論理アドレス情報を、ドライブの特定やデータ格納位置を示す物理アドレス情報への変換を行うことなく、キャッシュメモリからデータを計算機に転送できるので、I/O要求毎にアドレス変換を行う必要がなく、I/O処理性能を向上させることができる。
【0089】
つまり、リード要求のデータを格納するNVMeドライブがPCI接続されていないコントローラのMP(I/O処理MP)が処理を受けても、I/O処理MPが収容されているコントローラのキャッシュメモリにデータがあり、キャッシュヒットした場合には、I/O要求に高速に応答することができる。この場合、I/O要求に含まれているLUN等の仮想アドレス情報を、ドライブ等を特定する物理アドレス情報に変換する必要がないため、I/O処理の高速化が図れる。さらに、不要なアドレス変換からMPを解放するので、MPのリソースを他の処理に有効に活用することができる。
【0090】
<クロス転送>
図8は、キャッシュミス時(クロス)のリードシーケンスを示す図である。図8は、図6のクロスの動作にキャッシュヒット判定の説明も加えたシーケンス図である。本図では、図13の情報を用いながら、処理のシーケンスを説明する。
【0091】
上位I/F202が計算機からリードコマンドを受領する(S801)。上位I/Fは、MPXXにリードコマンドの受領を通知する(S802)。通知を受けたMPXXがI/O処理を行うMPとなる。MPXXはキャッシュメモリにリードコマンドで要求されているデータが自コントローラのキャッシュメモリ内にあるかヒット/ミス判定を行う(S803)。キャッシュヒットした場合、自コントローラのキャッシュメモリからデータを読み出し、計算機に応答する。
【0092】
キャッシュヒットした場合、I/O要求に含まれるLUN等のアクセス先論理アドレス情報を、ドライブの特定やデータ格納位置を示す物理アドレス情報への変換を行うことなく、キャッシュメモリからデータを計算機に転送できるので、I/O要求毎にアドレス変換を行う必要がなく、I/O処理性能を向上させることができる。
【0093】
キャッシュミスの場合(S804)、MPXXは、リードコマンドに含まれるLUN等の仮想アドレス情報から、図14のストレージ構成テーブルを参照して、データが格納されているNVMeドライブを算出(特定)する(S805)。
【0094】
MPXXは自身に割り当てられているVSQに対して、リードコマンドを格納する(S806)。この際、リードコマンドを受領したMPXXは、図13に示したキュー管理テーブルを参照することで、MPXXに割り当てられているVSQを取得することができる。尚、NVMeドライブ毎に管理されている図13のキュー管理テーブルは、図14のストレージ構成テーブルを参照して特定したNVMeドライブに基づいて、選択することができる。
【0095】
アクセス先のNVMeドライブが図14のストレージ構成テーブルによって特定されると、NVMeドライブ毎に管理されているキュー管理テーブルによって、MP毎にVSQ/VCQ、SQ/CQの対応、代表MPか否か、ドライブがPCI接続されているコントローラでI/Oが処理されるかが特定されるので、当該I/Oの処理がストレート転送かクロス転送か判断できる。
【0096】
クロス転送であった場合、MPXXは、図13のキュー管理テーブルに従い、他のコントローラ(CTL1)の使用VSQに対してコマンドを格納する(S807)。他のコントローラ1の代表MPは、使用VSQからコマンドを刈り取り(S808)、SQにエンキューする(S809)。
【0097】
SQに格納されたコマンドは、アクセス先となるNVMeドライブ107によって、刈り取られ、コマンドが実行されて、データを読み出す(S811、S812)。
【0098】
読み出されたデータはコントローラ1のキャッシュメモリに格納される(S813)と共に、コントローラ2のキャッシュメモリに対してDMA転送される(S814)。また、CQに対して完了応答を格納する(S815)。
【0099】
コントローラ1の代表MPは、CQから完了応答を刈り取り(S816)、コントローラ1のVCQとコントローラ2のMPXX用のVCQにエンキューする(S817、S818)。MPXXは、MPXX用のVCQから完了応答を刈り取り(S819)、キャッシュメモリからリードデータを読み出し、上位I/Fに送信する(S821)。上位I/Fは計算機に対してリードデータを送信する(S822)。
【0100】
このように、マルチノードストレージ環境において、NVMeドライブに設けられるキュー(SQ、CQ)とは別に、各MPに対応する仮想的なキュー(VSQ、VCQ)を設けることにより、キューの排他制御を不要とし、I/O処理性能を向上させることができる。
【0101】
また、複数のストレージ装置がネットワークを介して接続されるマルチノードストレージシステムにおいて、キャッシュミスをした場合のみ、アクセス先となるNVMeドライブが接続されたストレージ装置にコマンドを転送(クロス転送)するため、I/O処理性能の向上させることができる。
【0102】
<処理フロー>
図9は、IO要求受領時のVSQ格納処理フローを示す図である。この処理フローは、MPがMP処理プログラム2045を実行することで実現される。I/O要求を受けると、図14のストレージ構成テーブルを参照して、I/O要求に含まれるLUN等からアクセス先ドライブを特定する(S901)。
【0103】
アクセス先ドライブが特定されると、図14のキュー管理テーブルを読み出し、I/O要求を受けたMP(自MP)の番号から対応するVSPの番号を取得する(S902)。
【0104】
MPは、取得した番号のVSPにコマンドを格納し(S903)、図14のキュー管理テーブルを参照(1304)して、アクセス先ドライブ(NVMeドライブ)が、MPが搭載されているコントローラ(自CTL)に接続されているかを判定する(S904)。判定結果、自CTLにドライブが接続されていない場合、ドライブが接続されているコントローラにコマンドを転送する(S905)。なお、転送先は、ドライブが接続されているドライブのVSPを図13のキュー管理テーブルの使用VSQ1302に基づいて取得する。最後に、VSQのProducerの値を更新する(S906)。
【0105】
図10は、代表MPによるVSQ刈取りとSQ(要求)格納処理フローを示す図である。
各MPは、VSQからポーリング処理を開始する(S1002)。VSQからSQ(またはCQからVCQ)に対して、代表して要求を格納するMPであることを管理するための情報である図13のキュー管理テーブルの代表フラグ1309をポーリングし、自身が代表MPかどうかを判断する(S1003)。
【0106】
MPは自身が代表MPでないと判断した場合は処理を終了し、自身が代表MPと判断した場合はステップS1004に進む。キュー管理テーブルの使用SQ番号からVSQ番号を算出する(S1004)。既にVSQに要求があるか(コマンドが格納されているか)を判断し(S1005)、あればステップS1006に、なければステップS1007に進む。
【0107】
VSPにコマンドが格納されている場合、コマンドをSQに退避し、Consumerの値を更新する(S1006)。ステップS1007では、次のVSQを確認し(S1007)、全VSPが確認されていたら処理を終了し、未確認のVSPがあればステップS1004に戻り処理を継続する(S1008)。
【0108】
図11は、代表MPによるCQ(応答)刈取りとVCQ格納(クロス間)処理フローを示す図である。図10のステップS1002同様、MPはポーリング処理を開始する(S1102)。ポーリング処理の結果自身が代表MPの場合、ステップS1104に進み、代表MPでなかった場合には、処理を終了する。
【0109】
ステップS1104では、使用CQに応答があるかを判断し(S1104)、ない場合には処理を終了し、ある場合には、CQの応答をキュー管理テーブルに従ってVCQに退避する(S1105)。
【0110】
操作VCQは、代表MPが収容されているコントローラか判断する(S1106)。異なるコントローラの場合、使用VCQが収容されている他のコントローラに対し、要求(応答)を転送する(S1107)。最後に、Producerの値を更新して(S1108)、処理を終了する。
【0111】
図12は、VCQ刈取りと応答処理フローを示す図である。I/O処理を行うMPは、自身のMP番号から図13のキュー管理テーブルを参照して、VCQ番号を算出する(S1202)。I/O処理を行うMPは、算出されたVCQから要求(応答)を刈り取り(S1203)、Consumerの値を更新して(S1204)、処理を終了する。
【0112】
本実施の形態によれば、マルチノードストレージシステムの全MPに対し、NMP毎に割り当てられた仮想的なSQであるVSQを設けることで、MP間の排他制御を不要とし、MP数が多いマルチノードストレージ環境において、I/O処理性能を向上させることができる。
【0113】
また、キャッシュヒットした場合、I/O要求に含まれるLUN等のアクセス先論理アドレス情報を、ドライブの特定やデータ格納位置を示す物理アドレス情報への変換を行うことなく、キャッシュメモリからデータを計算機に転送できるので、I/O要求毎にアドレス変換を行う必要がなく、I/O処理性能を向上させることができる。
【0114】
つまり、リード要求のデータを格納するNVMeドライブがPCI接続されていないコントローラのMP(I/O処理MP)が処理を受けても、I/O処理MPが収容されているコントローラのキャッシュメモリにデータがあり、キャッシュヒットした場合には、I/O要求に高速に応答することができる。この場合、I/O要求に含まれているLUN等の仮想アドレス情報を、ドライブ等を特定する物理アドレス情報に変換する必要がないため、I/O処理の高速化が図れる。さらに、不要なアドレス変換からMPを解放するので、MPのリソースを他の処理に有効に活用することができる。
【0115】
また、キャッシュヒット判定により、マルチノードストレージシステムのクロス転送を減らすことができ、ISW等で構成されるネットワークの帯域を有効活用することができる。
マンドを転送(クロス転送)するため、I/O処理性能の向上させることができる。
【0116】
さらに、クロス転送の際には、転送先のストレージ装置の仮想キューに対して、NVMeでコマンドを転送するため、ネットワークで接続されるストレージ装置間のLUN等の仮想アドレスを用いたI/O要求と比較し、転送先のストレージ装置でアドレス変換を行う必要がないため、I/O処理性能を向上させることができる。
【符号の説明】
【0117】
101:ISW、102:モジュール、103:ノード(ストレージ装置)、104:コントローラ、106:NVMeドライブボックス、107:NVMeドライブ、201:サーバ(計算機)、202:上位I/F、コントローラ間I/F、204:メモリ、205:MP、206:下位I/F。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14