(57)【要約】【課題】  複数のストレージ装置で容量の大きな論理ディスクを提供するシステムにおいて、専用のコントローラなどを設けることなく、データ転送効率を向上させる。【解決手段】  論理ディスクを構成する複数のストレージ装置の１つであって、サーバ装置から論理ディスクのブロックのアドレス（以降、指定アドレス）を指定したリードの入出力命令を受信して、指定アドレスが自装置内に有るか、自装置内に無い場合はどのストレージ装置内に有るかの判定をするデータ格納判定手段と、ａ）判定が自装置内でない場合、入出力命令発行元のサーバ装置と、指定アドレスを指定したライトのダイレクト転送命令を、指定アドレスが存在するストレージ装置に送信し、ｂ）他のストレージ装置から受信したライトのダイレクト転送命令で指定されたサーバ装置に、指定されたアドレスのブロックのデータを転送するコマンド制御手段と、を備えるストレージ装置。【選択図】      図１
2018081346.tif 000002
【特許請求の範囲】
【請求項１】
論理ディスクを構成する複数のストレージ装置の１つであって、
サーバ装置から前記論理ディスクのブロックのアドレス（以降、指定アドレス）を指定したリードの入出力命令を受信して、前記指定アドレスが自装置内に有るか、自装置内に無い場合はどの前記ストレージ装置内に有るかの判定をするデータ格納判定手段と、
ａ）前記判定が自装置内でない場合、前記入出力命令発行元の前記サーバ装置と、前記指定アドレスを指定したライトのダイレクト転送命令を、前記指定アドレスが存在する前記ストレージ装置に送信し、ｂ）他の前記ストレージ装置から受信したライトの前記ダイレクト転送命令で指定された前記サーバ装置に、指定されたアドレスの前記ブロックのデータを転送するコマンド制御手段と、を備えるストレージ装置。
【請求項２】
データ格納判定手段は、ライトの前記入出力命令を受信して前記判定をし、
前記コマンド制御手段は、ａ）前記入出力命令発行元の前記サーバ装置と、前記指定アドレスを指定したリードのダイレクト転送命令を送信し、ｂ）他の前記ストレージ装置から受信したリードの前記ダイレクト転送命令で指定された前記サーバ装置から、指定されたアドレスの前記ブロックにデータを転送する、請求項１のストレージ装置。
【請求項３】
前記コマンド制御手段は、ａ）他の前記ストレージ装置から送信された前記ダイレクト転送命令を受信すると、前記ダイレクト転送命令で指定された前記サーバ装置に、指定された前記アドレスを含むデータ転送命令を送信し、ｂ）前記データ転送命令に対する了承信号を受信して、他の前記ストレージ装置から送信された前記ダイレクト転送命令で指定された前記サーバ装置と、指定されたアドレスのブロックとの間のデータ転送を実行する、請求項１乃至請求項２の何れか１項のストレージ装置。
【請求項４】
複数の請求項３のストレージ装置と、
入出力バッファを割り当てて前記入出力命令を発行する論理ディスク入出力手段と、前記ストレージ装置から前記データ転送命令を受信すると、自装置が発行した前記入出力命令を検索して前記入出力バッファを特定し、前記入出力バッファを前記データ転送命令用に割当てて、前記了承信号を返信するコマンド検索手段とを備える、前記サーバ装置と、を包含するストレージシステム。
【請求項５】
サーバ装置から、複数のストレージ装置で構成される論理ディスク内のブロックのアドレス（以降、指定アドレス）を指定したリードの入出力命令を受信して、前記指定アドレスが或る特定の装置（以降、自装置）内に有るか、自装置内に無い場合はどの前記ストレージ装置内に有るかの判定を行い、
ａ）前記判定が自装置内でない場合、前記入出力命令発行元の前記サーバ装置と、前記指定アドレスを指定したライトのダイレクト転送命令を、前記指定アドレスが存在する前記ストレージ装置に送信し、ｂ）他の前記ストレージ装置から受信したライトの前記ダイレクト転送命令で指定された前記サーバ装置に、指定されたアドレスの前記ブロックのデータを転送する、ストレージ制御方法。
【請求項６】
ライトの前記入出力命令を受信して前記判定をし、
ａ）前記入出力命令発行元の前記サーバ装置と、前記指定アドレスを指定したリードのダイレクト転送命令を送信し、ｂ）他の前記ストレージ装置から受信したリードの前記ダイレクト転送命令で指定された前記サーバ装置から、指定されたアドレスの前記ブロックにデータを転送する、請求項５のストレージ制御方法。
【請求項７】
ａ）他の前記ストレージ装置から送信された前記ダイレクト転送命令を受信すると、前記ダイレクト転送命令で指定された前記サーバ装置に、指定された前記アドレスを含むデータ転送命令を送信し、ｂ）前記データ転送命令に対する了承信号を受信して、他の前記ストレージ装置から送信された前記ダイレクト転送命令で指定された前記サーバ装置と、指定されたアドレスのブロックとの間のデータ転送を実行する、請求項５乃至請求項６の何れか１項のストレージ制御方法。
【請求項８】
サーバ装置から、複数のコンピュータ装置から構成される論理ディスクのブロックのアドレス（以降、指定アドレス）を指定したリードの入出力命令を受信して、前記指定アドレスが自装置内に有るか、自装置内に無い場合はどの前記コンピュータ装置内に有るかの判定をするデータ格納判定処理と、
ａ）前記判定が自装置内でない場合、前記入出力命令発行元の前記サーバ装置と、前記指定アドレスを指定したライトのダイレクト転送命令を、前記指定アドレスが存在する前記コンピュータ装置に送信し、ｂ）他の前記コンピュータ装置から受信したライトの前記ダイレクト転送命令で指定された前記サーバ装置に、指定されたアドレスの前記ブロックのデータを転送するコマンド制御処理と、を前記コンピュータ装置に実行させるストレージ制御プログラム。
【請求項９】
ライトの前記入出力命令を受信して前記判定をする前記データ格納判定処理と、
ａ）前記入出力命令発行元の前記サーバ装置と、前記指定アドレスを指定したリードのダイレクト転送命令を送信し、ｂ）他の前記コンピュータ装置から受信したリードの前記ダイレクト転送命令で指定された前記サーバ装置から、指定されたアドレスの前記ブロックにデータを転送する前記コマンド制御処理と、を前記コンピュータ装置に実行させる請求項８のストレージ制御プログラム。
【請求項１０】
ａ）他の前記コンピュータ装置から送信された前記ダイレクト転送命令を受信すると、前記ダイレクト転送命令で指定された前記サーバ装置に、指定された前記アドレスを含むデータ転送命令を送信し、ｂ）前記データ転送命令に対する了承信号を受信して、他の前記コンピュータ装置から送信された前記ダイレクト転送命令で指定された前記サーバ装置と、指定されたアドレスのブロックとの間のデータ転送を実行する前記コマンド制御処理を、前記コンピュータ装置に実行させる、請求項８乃至請求項９の何れか１項のストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、ストレージシステム、ストレージ制御方法、および、ストレージ制御プログラム、特に、複数のストレージ装置で1つの論理ディスクを構成するストレージ装置の制御に関する。
【背景技術】
【０００２】
スケールアウトストレージなどは、複数のストレージ装置で一つの大きな論理ディスクを構成し、当該論理ディスクをサーバ装置に割り当てる。スケールアウトストレージにおいては、或るサーバ装置が或るストレージ装置に対しデータ転送コマンドを発行したが、そのデータが別のストレージに有るという事象が発生する。この場合、データ転送コマンドを受信したストレージ装置は、別のストレージ装置から一旦データを引き込んだ後に、サーバ装置へデータ転送する必要がある。
【０００３】
図８は、この時の様子を示す。図８において、ストレージ装置１とストレージ装置２は大きな論理ディスクを構成している。図８において、サーバ装置1が、論理ディスク内の或る論理ブロックアドレスを指定してストレージ1に読み込み命令を出したが、そのブロックはストレージ装置２に格納されている。この場合、ストレージ装置１はストレージ装置２に読み込み命令を発行する。そして、当該ブロックのデータは一旦ストレージ装置２からストレージ装置１に転送された後、ストレージ装置１からサーバ装置１に転送される。
【０００４】
特許文献１は、ミラー間の不整合を防ぐ、Active-Active方式の仮想化ストレージシステムを開示する。
【０００５】
特許文献２は、ディスクアレイコントローラ、ディスク装置、ホスト装置を1つのインターフェースに接続した、RAID（Redundant Arrays of Inexpensive Disks）を構成するディスクアレイを開示する。このディスクアレイは、ディスクアレイコントローラとディスク装置間、および、ディスクアレイコントローラとホスト装置間の通信を、１つのインターフェースを介して行う。
【０００６】
このディスクアレイのディスクアレイコントローラは、ホスト装置からリードホストコマンドを受信すると、コピーディスクコマンドを、読み出し対象データを格納しているディスク装置に送信する。ディスク装置は、コピーディスクコマンドを受信すると、データをホスト装置に送信する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１６−０２４６７９号公報
【特許文献２】特開２００４−２８０８６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述したように、データ転送コマンドを受信したストレージ装置が、別のストレージ装置から一旦データを引き込んだ後に、サーバ装置へデータ転送するのは、無駄な転送を行うことになり転送効率が悪い。
【０００９】
サーバ装置がデータを格納しているストレージ装置に対して適切にデータ転送コマンドを発行すれば上記現象は発生しない。しかし、そのためにはサーバ装置が全データの格納場所の情報を覚えている必要がある。更に、性能やアクセス頻度などを考慮して、ストレージ装置が、データの格納場所を互いの間で入れ替えるなどの処理を行った場合には、サーバ装置が覚えているデータの格納場所の情報をその度に更新する必要があるなど、処理が煩雑である。
【００１０】
一方、特許文献２が開示するシステムのように、専用のコントローラを設置するのはコスト高になるうえ、性能/信頼性の面で課題が有る。特に、RAIDのような複雑な処理を前提としない場合、コスト高は大きな問題となる。
【００１１】
本発明は、上記課題を解決する、ストレージ装置、ストレージ制御方法、および、ストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の１実施の形態のストレージ装置は、論理ディスクを構成する複数のストレージ装置の１つであって、サーバ装置から前記論理ディスクのブロックのアドレス（以降、指定アドレス）を指定したリードの入出力命令を受信して、前記指定アドレスが自装置内に有るか、自装置内に無い場合はどの前記ストレージ装置内に有るかの判定をするデータ格納判定手段と、ａ）前記判定が自装置内でない場合、前記入出力命令発行元の前記サーバ装置と、前記指定アドレスを指定したライトのダイレクト転送命令を、前記指定アドレスが存在する前記ストレージ装置に送信し、ｂ）他の前記ストレージ装置から受信したライトの前記ダイレクト転送命令で指定された前記サーバ装置に、指定されたアドレスの前記ブロックのデータを転送するコマンド制御手段と、を備える。
【００１３】
本発明の１実施の形態のストレージ制御方法は、サーバ装置から、複数のストレージ装置で構成される論理ディスク内のブロックのアドレス（以降、指定アドレス）を指定したリードの入出力命令を受信して、前記指定アドレスが或る特定の装置（以降、自装置）内に有るか、自装置内に無い場合はどの前記ストレージ装置内に有るかの判定を行い、ａ）前記判定が自装置内でない場合、前記入出力命令発行元の前記サーバ装置と、前記指定アドレスを指定したライトのダイレクト転送命令を、前記指定アドレスが存在する前記ストレージ装置に送信し、ｂ）他の前記ストレージ装置から受信したライトの前記ダイレクト転送命令で指定された前記サーバ装置に、指定されたアドレスの前記ブロックのデータを転送する。
【００１４】
本発明の１実施の形態のストレージ制御プログラムは、サーバ装置から、複数のコンピュータ装置から構成される論理ディスクのブロックのアドレス（以降、指定アドレス）を指定したリードの入出力命令を受信して、前記指定アドレスが自装置内に有るか、自装置内に無い場合はどの前記コンピュータ装置内に有るかの判定をするデータ格納判定処理と、ａ）前記判定が自装置内でない場合、前記入出力命令発行元の前記サーバ装置と、前記指定アドレスを指定したライトのダイレクト転送命令を、前記指定アドレスが存在する前記コンピュータ装置に送信し、ｂ）他の前記コンピュータ装置から受信したライトの前記ダイレクト転送命令で指定された前記サーバ装置に、指定されたアドレスの前記ブロックのデータを転送するコマンド制御処理と、を前記コンピュータ装置に実行させる。
【発明の効果】
【００１５】
本発明にかかるストレージ装置は、複数のストレージ装置で容量の大きな論理ディスクを提供するシステムにおいて、専用のコントローラなどを設けることなく、データ転送効率を向上させる。
【図面の簡単な説明】
【００１６】
【図１】図１は、第１の実施の形態に係るストレージシステム50の構成を示す図である。
【図２】図２は、コンピュータ装置600の構成図である。
【図３】図３は、ストレージシステム50の動作フローチャートである。
【図４】図４は、ストレージ装置20からサーバ装置10へのデータ転送の様子を示す図である。
【図５】図５は、サーバ装置10からストレージ装置20へのデータ転送の様子を示す図である。
【図６】図６は、第２の実施の形態に係るストレージ装置20の動作を示す図である。
【図７】図７は、第３の実施の形態に係るストレージ装置20の構成を示す図である。
【図８】図８は、背景技術を説明する図である。
【発明を実施するための形態】
【００１７】
＜第１の実施の形態＞
＜構成＞
図１は、本実施の形態に係るストレージシステム50の構成を示す図である。ストレージシステム50は、N（Nは自然数）台のサーバ装置10とM（Mは複数）台のストレージ装置20とが、通信網30に接続されて構成される。M台のストレージ装置20は、其々、少なくとも１台のディスク装置24を制御しており、全体として各ディスク装置24の容量より大きな論理ディスク40を構成する。なお、ここで、制御とは、領域の管理、入出力の実行をいう。論理ディスク40は、仮想ディスクと呼ばれることも有る。
【００１８】
各サーバ装置10は、この論理ディスク40に対して入出力を実行する。サーバ装置10は、論理ディスク40に対して入出力を実行する際、論理ディスク40における論理的なブロックアドレスを指定する。論理ディスク40における論理的なブロックアドレスは、論理ディスク40を構成する何れかのストレージ装置20が制御するディスク装置24のブロックアドレスに変換される。
【００１９】
ストレージ装置20は、コマンド制御部21、および、データ格納判定部23を備える。ストレージ装置20は、ディスク装置24を装置内に備えていても良いし、データセンタ内のネットワーク等を経由して装置外のディスク装置24に接続されていても良い。
【００２０】
データ格納判定部23は、サーバ装置10から指定されたアドレスのブロックが、自装置が制御するディスク装置24内に有るか否かを判定する。無い場合、データ格納判定部23は、当該ブロックが、他のどのストレージ装置20が制御するディスク装置24内に有るかの判定をする。なお、以降、「或るアドレスのブロックが、或るストレージ装置20が制御するディスク装置24内に有る」ことを、「或るアドレスが或るストレージ装置20内に有る」と略記することが有る。
【００２１】
コマンド制御部21は、他のストレージ装置20に対し、サーバ装置10へ直接にデータを転送することを要求するコマンドである、ダイレクトデータ転送コマンドを発行する。また、コマンド制御部21は、他のストレージ装置20からダイレクトデータ転送コマンドを受信すると、サーバ装置10と自装置が制御するディスク装置24との間のデータ転送も行う。コマンド制御部21は、サーバ装置10から入出力命令を受信して、サーバ装置10と自装置が制御するディスク装置24との間のデータ転送も行う。
【００２２】
サーバ装置10は、コマンド検索部11と論理ディスク入出力部12を備える。
【００２３】
論理ディスク入出力部12は、サーバ装置10が実行する業務処理プログラム等から要求されて、論理ディスク40に対する入出力を行う。論理ディスク入出力部12は、論理ディスク40における論理的なブロックアドレスを指定した入出力命令を、ストレージ装置20に発行する。
【００２４】
このとき、論理ディスク入出力部12は、例えば、ラウンドロビンでストレージ装置20を選択して入出力命令を発行する。あるいは、論理ディスク入出力部12は、同期インターバルが長い論理ディスク40のブロックアドレスと当該アドレスを有するストレージ装置20との対応関係表を保持し、当該表に基づいて、ストレージ装置20を選択して入出力命令を発行しても良い。
【００２５】
コマンド検索部11は、ストレージ装置20から受信したダイレクト転送コマンドを基に、自装置が発行した入出力命令を検索する。
【００２６】
ここで、ストレージ装置20のコマンド制御部21、および、データ格納判定部23は、論理回路で構成される。
【００２７】
ストレージ装置20は、コンピュータ装置600により実現されても良い。図２は、コンピュータ装置600の構成図である。コンピュータ装置600は、バス640で相互に接続された、プロセッサ610、主記憶部630、および、外部記憶装置620を備える。プロセッサ610は、バス640を経由して、主記憶部630、および、外部記憶装置620に対してデータの読み書きを行う。また、プロセッサ610は、主記憶部630に格納されているプログラム650を実行する。なお、プログラム650は、当初外部記憶装置620に格納されており、コンピュータ装置600の初期設定時に、プロセッサ610が外部記憶装置620から主記憶部630にロードしても良い。
【００２８】
ここで、主記憶部630は半導体メモリ装置である。外部記憶装置620はディスク装置、または、半導体記憶装置等の記憶装置である。
【００２９】
プロセッサ610は、プログラム650を実行することにより、コマンド制御部21、および、データ格納判定部23として機能する。すなわち、プロセッサ610は、プログラム650を実行することにより、コマンド制御部21、および、データ格納判定部23が行う処理を実行する。
【００３０】
外部記憶装置620は、ディスク装置24として使用されても良い。
【００３１】
サーバ装置10のコマンド検索部11と論理ディスク入出力部12は、論理回路で構成される。サーバ装置10は、ストレージ装置20同様に、コンピュータ装置600により実現されても良い。この場合、プロセッサ610は、プログラム650を実行することにより、コマンド検索部11と論理ディスク入出力部12として機能する。すなわち、プロセッサ610は、プログラム650を実行することにより、コマンド検索部11と論理ディスク入出力部12が行う処理を実行する。
【００３２】
＜動作＞
次に、ダイレクトデータ転送を含む、サーバ装置10とストレージ装置20間のデータ転送の様子を説明する。
【００３３】
＜１.  ストレージ装置20からサーバ装置10へのデータ転送＞
図３は、ストレージシステム50の動作フローチャートである。図４は、ストレージ装置20からサーバ装置10へのデータ転送の様子を示す図である。
【００３４】
図３のステップS1において、サーバ装置10、例えば図４の左側のサーバ装置10の論理ディスク入出力部12が、リードデータを保存するためのバッファを確保し、ストレージ装置20、例えば図４左側のストレージ装置20に対してリードコマンド（図４のａ）を発行する。
【００３５】
続いて、当該リードコマンドを受信したストレージ装置20、例えば図４左側のストレージ装置20は、ステップS2からS5を実行する。
【００３６】
ステップS2において、データ格納判定部23は、当該リードコマンドで指定された対象アドレスのブロックが自装置のディスク装置24に存在するか否かを判定する。
【００３７】
ステップS3において、リードの対象アドレスのブロックが自装置のディスク装置24に存在する場合、データ格納判定部23はステップS4に推移する。存在しない場合、データ格納判定部23は、対象アドレスのブロックが、他のどのストレージ装置20のディスク装置24に存在するかを特定し、ステップS5へ推移する。
【００３８】
データ格納判定部23は、例えば、各ストレージ装置20対応に、論理ディスク40のブロックアドレスの範囲を示すデータを記憶しており、この範囲データを参照して上記判定を行う。変更が有ったとき当該範囲データは、例えば、ストレージ装置20間を接続する通信網30とは別の高速ネットワークを経由してアップデートされる。あるいは、データ格納判定部23は、上述の高速ネットワーク経由で、他のストレージ装置20にブロックアドレスの存在問合せをしても良い。
【００３９】
ステップS4において、コマンド制御部21が、自ストレージ装置20のディスク装置24内のブロックに格納されているデータを、リードコマンドを発行したサーバ装置10、例えば図４の左側のサーバ装置10に転送する。その後、コマンド制御部21はステップS12へ推移する。
【００４０】
ステップS5において、コマンド制御部21は、リードコマンドで指定された対象アドレスのブロックが存在するストレージ装置20、例えば、図４右側のストレージ装置20に対して、ライトのダイレクトデータ転送コマンド（図４のｂ）を発行する。その後、コマンド制御部21は、ステップS6へ推移する。本コマンドは、リードコマンドを発行したサーバ装置10、リードコマンドで指定された対象アドレス、データ長、対象論理番号等の情報を含む。
【００４１】
続いて、当該ダイレクトデータ転送コマンドを受信したストレージ装置20、例えば図４右側のストレージ装置20はステップS6からS8を実行する。
【００４２】
ステップS6において、ダイレクトデータ転送コマンドを受信したストレージ装置20のコマンド制御部21は、受信したコマンドを判定し、ダイレクトデータ転送コマンドの場合はステップS7へ推移し、それ以外のコマンドの場合はステップS8へ推移する。
【００４３】
ステップS7において、コマンド制御部21は、受信したライトのダイレクトデータ転送コマンドに含まれるリードコマンドを発行したサーバ装置10、リードコマンドで指定された対象アドレス、データ長、対象論理番号等をもとにライトコマンドを作成する。コマンド制御部21は、リードコマンドを発行したサーバ装置10、例えば、図４の左側のサーバ装置10に対して、ライトコマンド（図４のｃ）を発行し、ステップS9へ推移する。
【００４４】
ステップS8において、コマンド制御部21は、ダイレクトデータ転送コマンド以外のコマンド処理を実施する。
【００４５】
続いて、リードコマンドを発行したサーバ装置10、例えば図４左側のサーバ装置10は、ステップS9からS11を実行する。
【００４６】
ステップS9において、サーバ装置10のコマンド検索部11が、ストレージ装置20からのライトコマンドを受信し、ステップS10へ推移する。
【００４７】
ステップS10において、コマンド検索部11は、受信したライトコマンドに含まれる対象アドレスをキーに自装置が発行したリードコマンドを検索する。コマンド検索部11は、このリードコマンド検索のキーとして、対象アドレスに加え、データ長、対象論理番号、その他の情報を併用しても良い。当該リードコマンドを検出すると、コマンド検索部11は、ステップS1でリードデータを格納するために確保したバッファを、ストレージ装置20から転送されるライトデータを保存するバッファとして割り当てて、ステップS11へ推移する。
【００４８】
ステップS11において、論理ディスク入出力部12は、ストレージ装置20からサーバ装置10への直接ライトデータ転送（図４のｄ）を実施し、ステップS12へ推移する。
【００４９】
ステップS12において、論理ディスク入出力部12は、データ転送を完了とする。ここでダイレクトデータ転送コマンドによるデータ転送がされていた場合、論理ディスク入出力部12は、そのデータ転送の完了レスポンスをストレージ装置20に返した段階で、ステップS1で発行したリードコマンド完了を判断する。
【００５０】
＜２.  サーバ装置10からストレージ装置20へのデータ転送＞
図５は、サーバ装置10からストレージ装置20へのデータ転送の様子を示す図である。以下に説明するように、ストレージシステム50は、この方向のデータ転送においても、効率的な実行が可能である。
【００５１】
まず、サーバ装置10、例えば図５の左側のサーバ装置10の論理ディスク入出力部12が、ライトデータをバッファに格納し、ストレージ装置20、例えば図５左側のストレージ装置20に対してライトコマンド（図５のａ）を発行する。
【００５２】
当該ライトコマンドを受信したストレージ装置20、例えば図５左側のストレージ装置20のデータ格納判定部23は、当該ライトコマンドで指定された対象アドレスのブロックが自装置のディスク装置24に存在するか否かを判定する。
【００５３】
存在しない場合、データ格納判定部23は、ライト対象アドレスのブロックが、他のどのストレージ装置20のディスク装置24に存在するかを特定する。そして、コマンド制御部21は、ライトコマンドで指定された対象アドレスのブロックが存在するストレージ装置20、例えば、図５右側のストレージ装置20に対して、リードのダイレクトデータ転送コマンド（図５のｂ）を発行する。本コマンドは、ライトコマンドを発行したサーバ装置10、ライトコマンドで指定された対象アドレス、データ長、対象論理番号等の情報を含む。
【００５４】
続いて、ダイレクトデータ転送コマンドを受信したストレージ装置20のコマンド制御部21は、受信したコマンドを判定する。ダイレクトデータ転送コマンドの場合、コマンド制御部21は、受信したリードのダイレクトデータ転送コマンドに含まれるライトコマンドを発行したサーバ装置10、ライトコマンドで指定された対象アドレス、データ長、対象論理番号等をもとにリードコマンドを作成する。コマンド制御部21は、ライトコマンドを発行したサーバ装置10、例えば、図４の左側のサーバ装置10に対して、リードコマンド（図５のｃ）を発行する。
【００５５】
サーバ装置10のコマンド検索部11が、ストレージ装置20からのリードコマンドを受信し、受信したリードコマンドに含まれる対象アドレスをキーに自装置が発行したライトコマンドを検索する。コマンド検索部11は、このライトコマンド検索のキーとして、対象アドレスに加え、データ長、対象論理番号、その他の情報を併用しても良い。当該ライトコマンドを検出すると、コマンド検索部11は、ライトコマンドで指定されたバッファを、直接リードデータ転送のバッファとして割り当てる。
【００５６】
その後、論理ディスク入出力部12は、サーバ装置10からストレージ装置20への直接リードデータ転送（図５のｄ）を実施する。
【００５７】
＜効果＞
本実施の形態にかかるストレージ装置20は、複数のストレージ装置20で容量の大きな論理ディスク40を提供するストレージシステム50において、専用のコントローラなどを設けることなく、データ転送効率を向上させる。すなわち、本実施の形態にかかるストレージ装置20は、スケールアウトストレージにおいて、サーバ装置10とストレージ装置20の全体の性能を向上させる。
【００５８】
その理由は、指定されたアドレスが存在しないストレージ装置20がリードコマンドを受け付けた場合でも、指定されたアドレスが存在するストレージ装置20からサーバ装置10側へ直接データ転送するからである。この直接転送によって、ストレージ装置20間のデータ転送をなくすことができるためである。
【００５９】
＜第２の実施形態＞
ストレージ装置20のコマンド制御部21は、通信網30の負荷も考慮して、最適な経路にてデータ転送を実施しても良い。例えば、図６が示すように、右側のスイッチの経路が高負荷だった場合に、左側のスイッチの経路を使用してデータ転送を実施する。
【００６０】
これにより、通信網30内の適切な負荷分散が可能となる。
【００６１】
＜第３の実施形態＞
図７は、第３の実施の形態に係るストレージ装置20の構成を示す図である。本実施の形態に係るストレージ装置20は、複数台で論理ディスク40を構成する。本実施の形態に係るストレージ装置20は、データ格納判定部23とコマンド制御部21とを備えている。ストレージ装置20は、さらに、ディスク装置24のような記憶装置を備えているか、外部のディスク装置24のような記憶装置と接続されている。
【００６２】
データ格納判定部23は、サーバ装置10から論理ディスク40のブロックのアドレス（以降、指定アドレス）を指定したリードの入出力命令を受信して、指定アドレスが自装置内に有るか、自装置内に無い場合はどのストレージ装置20内に有るかの判定をする。なお、ストレージ装置20とサーバ装置10は、ネットワークを介して接続されている。
【００６３】
コマンド制御部21は、上記判定が自装置内でない場合、入出力命令発行元のサーバ装置10と、指定アドレスを指定したライトのダイレクト転送命令を、指定アドレスが存在するストレージ装置20に送信する。さらに、コマンド制御部21は、他のストレージ装置20から受信したライトのダイレクト転送命令で指定されたサーバ装置10に、指定されたアドレスのブロックのデータを転送する。
【００６４】
本実施の形態にかかるストレージ装置20は、複数のストレージ装置20で容量の大きな論理ディスク40を提供するストレージシステム50において、専用のコントローラなどを設けることなく、データ転送効率を向上させる。すなわち、本実施の形態にかかるストレージ装置20は、スケールアウトストレージにおいて、サーバ装置10とストレージ装置20の全体の性能を向上させる。
【００６５】
その理由は、指定されたアドレスが存在しないストレージ装置20がリードコマンドを受け付けた場合でも、指定されたアドレスが存在するストレージ装置20からサーバ装置10側へ直接データ転送するからである。この直接転送によって、ストレージ装置20間のデータ転送をなくすことができるためである。
【００６６】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００６７】
10    サーバ装置
11    コマンド検索部
12    論理ディスク入出力部
20    ストレージ装置
21    コマンド制御部
23    データ格納判定部
24    ディスク装置
30    通信網
40    論理ディスク
600    コンピュータ装置
610    プロセッサ
620    外部記憶装置
630    主記憶部
640    バス
650    プログラム
【図１】
2018081346.tif 000003
【図２】
2018081346.tif 000004
【図３】
2018081346.tif 000005
【図４】
2018081346.tif 000006
【図５】
2018081346.tif 000007
【図６】
2018081346.tif 000008
【図７】
2018081346.tif 000009
【図８】
2018081346.tif 000010