(57)【要約】【課題】ストレージデバイスに対する、より効率的なアクセスを可能とするストレージシステムを提供することである。【解決手段】実施形態によれば、ストレージシステムは、複数のストレージデバイスと、ホスト装置とを具備する。前記ホスト装置は、同一のデータを前記複数のストレージデバイスの中の２以上のストレージデバイスに書き込む。前記複数のストレージデバイスそれぞれは、出力手段を具備する。前記出力手段は、各々のストレージデバイスの状態の遷移に関する情報を出力する。前記ホスト装置は、制御手段を具備する。前記制御手段は、前記出力手段により出力される情報に基づき、第１データが書き込まれた２以上のストレージデバイスの中から前記第１データを読み出す１以上の第１ストレージデバイスを選択するための前記２以上の第１ストレージデバイス間の優先度を制御する。【選択図】図６
2017162166.tif 000002
【特許請求の範囲】
【請求項１】
複数のストレージデバイスと、
同一のデータを前記複数のストレージデバイスの中の２以上のストレージデバイスに書き込むホスト装置と、
を具備し、
前記複数のストレージデバイスそれぞれは、各々のストレージデバイスの状態の遷移に関する情報を出力する出力手段を具備し、
前記ホスト装置は、前記出力手段により出力される情報に基づき、第１データが書き込まれた２以上の第１ストレージデバイスの中から前記第１データを読み出す１以上の第１ストレージデバイスを選択するための前記２以上の第１ストレージデバイス間の優先度を制御する制御手段を具備する
ストレージシステム。
【請求項２】
前記出力手段により出力される情報は、ストレージデバイスが第１処理を実行中の状態であることを示す情報と、ストレージデバイスが実行中の前記第１処理の処理段階を示す情報とを含み、
前記制御手段は、前記２以上の第１ストレージデバイスすべてが前記第１処理を実行中の状態の場合、前記第１処理の処理段階に基づき、前記第１処理が終了するまでの時間が最短の第１ストレージデバイスを判定して、前記２以上の第１ストレージデバイス間の優先度を制御する、
請求項１に記載のストレージシステム。
【請求項３】
前記出力手段により出力される情報は、ストレージデバイスが前記ホスト装置からの要求待ち状態であることを示す情報と、ストレージデバイスが省電力状態であることを示す情報とを含み、
前記制御手段は、前記２以上の第１ストレージデバイスの状態の中に、要求待ち状態が存在せず、かつ、前記第１処理を実行中の状態と、省電力状態とが混在する場合、前記第１処理の処理段階に基づき、前記第１処理が終了するまでの時間が、省電力状態から通常状態に復帰させるまでの時間よりも短い、前記第１処理を実行中の状態の第１ストレージデバイスが存在するか否かを判定して、前記２以上の第１ストレージデバイス間の優先度を制御する、
請求項２に記載のストレージシステム。
【請求項４】
前記複数のストレージデバイスそれぞれは、各々のストレージデバイスの状態を変化させる場合、その許可を前記ホスト装置に申請し、前記ホスト装置から許可された場合、各々のストレージデバイスの状態を変化させる管理手段を具備する請求項１に記載のストレージシステム。
【請求項５】
前記管理手段は、前記ホスト装置から許可されなかった場合、各々のストレージデバイスの状態を変化させることを保留する請求項４に記載のストレージシステム。
【請求項６】
前記ホスト装置が複数存在し、
前記管理手段は、前記複数のホスト装置すべてから許可された場合、ストレージデバイスの状態を変化させる請求項４に記載のストレージシステム。
【請求項７】
前記第１処理は、ストレージデバイスの保守または修復のための内部的な処理を含む請求項２または３に記載のストレージシステム。
【請求項８】
前記複数のストレージデバイスの中の少なくとも１つのストレージデバイスは、ハードディスクドライブであり、
前記ハードディスクドライブであるストレージデバイスにおける前記省電力状態は、磁気ヘッドを退避させた状態を含む請求項３に記載のストレージシステム。
【請求項９】
前記ハードディスクドライブであるストレージデバイスにおける前記省電力状態は、磁気ヘッドを退避させ、かつ、スピンドルの回転を停止させた状態を含む請求項８に記載のストレージシステム。
【請求項１０】
複数のストレージデバイスと、同一のデータを前記複数のストレージデバイスの中の２以上のストレージデバイスに書き込むホスト装置とを具備するストレージシステムの制御方法であって、
前記複数のストレージデバイスそれぞれが、各々のストレージデバイスの状態の遷移に関する情報を出力することと、
前記ホスト装置が、前記出力される情報に基づき、第１データが書込まれた２以上のストレージデバイスの中から前記第１データを読み出す１以上の第１ストレージデバイスを選択するための前記２以上の第１ストレージデバイス間の優先度を制御することと、
を具備する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ストレージシステムおよびストレージシステムの制御方法に関する。
【背景技術】
【０００２】
多くの企業や公的機関などにおいては、大量のデータを安全に格納しておくためのストレージシステムは欠かせないものとなっている。近年、様々な種類かつ任意長のデータをオブジェクトと称される一塊のデータとして取り扱うストレージシステムが注目を集めている。この種のストレージシステムは、オブジェクトストレージと称されている。このオブジェクトストレージ等のストレージシステムにおいては、データ（レプリカ）を複数の異なるロケーション（ストレージデバイス）に格納しておくことで、データの損失を免れる機構が主流となっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４７５７０３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
前述のオブジェクトストレージ等のストレージシステムにおいては、複数のストレージデバイスに格納されているデータを読み出す際、予め定められた優先度に従って、アクセス対象とするストレージデバイスが選択されており、適切なストレージデバイスが必ずしも選択されてはいない。
【０００５】
本発明が解決しようとする課題は、ストレージデバイスに対する、より効率的なアクセスを可能とするストレージシステムおよびストレージシステムの制御方法を提供することである。
【課題を解決するための手段】
【０００６】
実施形態によれば、ストレージシステムは、複数のストレージデバイスと、ホスト装置とを具備する。前記ホスト装置は、同一のデータを前記複数のストレージデバイスの中の２以上のストレージデバイスに書き込む。前記複数のストレージデバイスそれぞれは、出力手段を具備する。前記出力手段は、各々のストレージデバイスの状態の遷移に関する情報を出力する。前記ホスト装置は、制御手段を具備する。前記制御手段は、前記出力手段により出力される情報に基づき、第１データが書き込まれた２以上のストレージデバイスの中から前記第１データを読み出す１以上の第１ストレージデバイスを選択するための前記２以上の第１ストレージデバイス間の優先度を制御する。
【図面の簡単な説明】
【０００７】
【図１】第１実施形態のストレージシステムの一構成例を示す図。
【図２】第１実施形態のストレージシステムに適用されるストレージデバイスのシステム構成の一例を概略的に示す図。
【図３】第１実施形態のストレージシステムに適用されるホストのシステム構成の一例を概略的に示す図。
【図４】第１実施形態のストレージシステムのデータの書き込み時における動作の流れを説明するための図。
【図５】第１実施形態のストレージシステムにおいて使用される管理テーブルの一例を示す図。
【図６】第１実施形態のストレージシステムのストレージデバイスが状態を遷移させる場合における動作の流れを説明するための図。
【図７】第１実施形態のストレージシステムのストレージデバイスによる状態の遷移に関する通知により更新された管理テーブル１Ａの一例を示す図。
【図８】第１実施形態のストレージシステムのデータの読み出し時における動作の流れを説明するための図。
【図９】第１実施形態のストレージシステムのデータの書き込み時における動作の流れを示すフローチャート。
【図１０】第１実施形態のストレージシステムのストレージデバイスが状態を遷移させる場合における動作の流れを示すフローチャート。
【図１１】第１実施形態のストレージシステムのデータの読み出し時における動作の流れを示すフローチャート。
【図１２】第２実施形態のストレージシステムのストレージデバイスが状態を遷移させる場合における動作の流れを説明するための図。
【図１３】第２実施形態のストレージシステムのストレージデバイスが状態を遷移させた場合における動作の流れを示すフローチャート。
【発明を実施するための形態】
【０００８】
以下、実施の形態について図面を参照して説明する。
（第１実施形態）
まず、第１実施形態について説明する。
図１は、本実施形態のストレージシステムの一構成例を示す図である。
図１に示されるように、本実施形態のストレージシステムは、ホスト１と、複数のストレージデバイス２とを有している。ホスト１とストレージデバイス２とは、ネットワークＮおよびサーバ３を介して接続される。ここでは、ネットワークインタフェース機能を有するサーバ３の配下にストレージデバイス２が置かれている例、即ち、ストレージデバイス２が間接的にネットワークＮへ接続される例を示すが、ネットワークインタフェース機能を有するストレージデバイス２を直接的にネットワークＮへ接続してもよい。サーバ３の配下に置かれているストレージデバイス２、即ち、ネットワークＮへ間接的に接続されるストレージデバイス２と、ネットワークＮへ直接的に接続されるストレージデバイス２とが混在してもよい。
【０００９】
ホスト１は、データの書き込み／読み出しのためのストレージデバイス２に対するアクセス処理を実行する処理装置である。ホスト１は、ユーザにより使用されるパーソナルコンピュータであってもよいし、ユーザにより使用されるパーソナルコンピュータ（クライアント）からデータの書き込み要求／読み出し要求を受け付けるサーバコンピュータであってもよい。後者の場合におけるパーソナルコンピュータ（クライアント）とサーバコンピュータ（ホスト１）との間の通信は、図１に示されるネットワークＮを介して行われてもよいし、ネットワークＮとは異なるネットワークを介して行われてもよい。
【００１０】
ここでは、本実施形態のストレージシステムがオブジェクトストレージであるものと想定する。なお、ここで説明するストレージシステムの制御手法は、オブジェクトストレージに限定されるものではない。データ（レプリカ）を複数の異なるロケーション（ストレージデバイス）に格納する機構を持つものであればよい。ここでいう、データを複数の異なるロケーションに格納するとは、データを分割して、複数のストレージデバイスに分散させて格納するストライピングではなく、同一のデータを、複数のストレージデバイスに格納することである。
【００１１】
ホスト１は、書き込み対象のデータの識別子を基に格納先のストレージデバイス２を特定する。データ（オブジェクト）の損失を免れるために、一般的に、データの格納先として、複数のストレージデバイス２が選ばれる。ホスト１は、複数のストレージデバイスそれぞれにデータを格納する際、そのデータがどのストレージデバイス２に格納されているのかを示す情報を管理テーブル１Ａに記録する。また、その際、ホスト１は、どのストレージデバイス２からデータを読み出すべきかに関するストレージデバイス２間の優先度も併せて管理テーブル１Ａに記録する。
【００１２】
たとえば、あるデータが、３つのストレージデバイス格納された場合を想定する。この場合、ホスト１は、この３つのストレージデバイス２間において予め設定されている優先度を管理テーブル１Ａに記録してもよいし、このデータの書き込み要求に対する応答が早かった順に優先度を都度設定して管理テーブル１Ａに記録してもよい。
【００１３】
データの読み出しが要求された場合、ホスト１は、管理テーブル１Ａを参照して、そのデータが格納されているストレージデバイス２を認識し、かつ、アクセス対象とするストレージデバイス２を選択する。１つのストレージデバイス２が選択されてもよいし、２以上のストレージデバイス２が選択されてもよい。ホスト１は、選択したストレージデバイス２からのデータの読み出しを実行する。このデータの読み出しが失敗した場合、ホスト１は、次に優先度の高いストレージデバイス２を選択して、再度、データの読み出しを実行する。２以上のストレージデバイス２を選択する場合、ホスト１は、選択した２以上のストレージデバイス２からのデータの読み出しを並列的に実行する。ホスト１は、最も早く取得されたデータを用い、その他のデータは破棄すればよい。
【００１４】
ところで、ストレージデバイス２は、その状態が動的に変化し得るので、データを読み出す際、たとえば予め設定された優先度に従い、アクセス対象とするストレージデバイス２を選択すると、選択したストレージデバイス２の状態によっては、他のストレージデバイス２よりも応答性で劣る事態も発生し得る。本実施形態のストレージシステムは、ストレージデバイス２の状態に基づき、ストレージデバイス２間の優先度を制御する機構、即ち、ストレージデバイス２の状態が考慮されたストレージデバイス２の選択が行われる機構としたものである。
【００１５】
図２は、本実施形態のストレージシステムに適用されるストレージデバイス２のシステム構成の一例を概略的に示す図である。
図２に示されるように、ストレージデバイス２は、コントローラ２１、データ記憶部２２およびＲＡＭ（Random Access Memory）２３を有している。
【００１６】
コントローラ２１は、外部デバイス（ここでは、サーバ３）との間のインタフェース機能と、データ記憶部２２との間のインタフェース機能とを有し、ＲＡＭ２３を作業領域として用いながら、ホスト１が要求するデータの書き込み／読み出しを実行する。即ち、コントローラ２１は、ストレージデバイス２の各コンポーネントの動作を制御する。前述したように、ストレージデバイス２は、ネットワークＮへ直接的に接続することを可能とするネットワークインタフェース機能を有していてもよい。このネットワークインタフェース機能は、コントローラ２１に設けられる。コントローラ２１の機能は、たとえば、コントローラ２１内に格納されるファームウェアによって実現される。
【００１７】
また、コントローラ２１は、たとえば、省電力化、耐衝撃対策、データ再配置などのために、ホスト１が要求するデータの書き込み／読み出しとは別に、ストレージデバイス２の各コンポーネントの動作を制御する機能を有している。コントローラ２１は、ストレージデバイス２の各コンポーネントの動作状況、即ち、ストレージデバイス２の状態を管理する。更に、コントローラ２１は、ストレージデバイス２の状態、より具体的には、ストレージデバイス２の状態の遷移をホスト１に通知するための処理を実行する状態通知処理部２１１を有している。この状態通知処理部２１１の詳細については後述する。
【００１８】
データ記憶部２２は、たとえばＨＤ（Hard Disk）またはＮＡＮＤ型のフラッシュメモリ（ＮＡＮＤメモリ）等である。たとえばＨＤとＮＡＮＤメモリとの組み合わせ等であってもよい。
一方、図３は、本実施形態のストレージシステムに適用されるホスト１のシステム構成の一例を概略的に示す図である。
【００１９】
図３に示されるように、ホスト１は、プロセッサ１１、主メモリ１２、外部記憶装置１３、入力装置１４、表示装置１５および通信装置１６を有している。
プロセッサ１１は、ホスト１の各コンポーネントの動作を制御するデバイスであり、各種プログラムを外部記憶装置１３から主メモリ１２へロードして実行する。即ち、プロセッサ１１は、各種プログラムの記述に従って、ホスト１の各コンポーネントの動作を制御する。各種プログラムには、後述するストレージ管理ユーティリティプログラム１００が含まれている。なお、ストレージ管理ユーティリティプログラム１００は、データ書き込み／読み出し処理部１０１、データ管理部１０２、ストレージ選択処理部１０３および優先度管理部１０４を有している。
【００２０】
外部記憶装置１３は、たとえばＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）またはフラッシュメモリを内蔵するハイブリッドＨＤＤ等である。図１に示される管理テーブル１Ａは、外部記憶装置１３に作成され、その一部または全部が主メモリ１２に読み出されて使用される。入力装置１４は、キーボード、ポインティングデバイス、操作スイッチ等である。表示装置１５は、たとえばＬＣＤ（Liquid Crystal Display）等である。表示装置１５としてタッチスクリーンディスプレイが適用される場合、ポインティングデバイスによる操作を、タッチスクリーンディスプレイ上でのタッチ操作で代行することができる。
【００２１】
通信装置１６は、たとえばIEEE 802.3規格に準拠した通信を実行する。より具体的には、たとえばネットワークＮを介したサーバ３との通信またはネットワークインタフェース機能を有するストレージデバイス２との通信を実行する。通信装置１６は、前述したクライアントとしてのパーソナルコンピュータとの通信を実行することも可能である。
【００２２】
次に、本実施形態のストレージシステムにおけるストレージデバイス２とホスト１との協働について説明する。
まず、図４を参照して、本実施形態のストレージシステムのデータの書き込み時における動作の流れを説明する。
たとえばユーザにより使用されるパーソナルコンピュータ（クライアント）からデータの書き込みが要求された場合（図４の（１））、ホスト１は、このデータを複数のストレージデバイス２の中の２以上のストレージデバイス２に格納する（図４の（２））。そして、ホスト１は、ストレージデバイス２に格納される当該データに関する情報を管理テーブル１Ａに記録する（図４の（３））。前述のストレージ管理ユーティリティプログラム１００は、複数のストレージデバイス２へのデータの書き込みおよび複数のストレージデバイス２からのデータの読み出しを一元的に管理するプログラムである。
【００２３】
データ書き込み／読み出し処理部１０１は、ストレージデバイス２へのデータの書き込み処理と、ストレージデバイス２からのデータの読み出し処理とを実行する。データ管理部１０２は、前述の管理テーブル１Ａを管理する。データ管理部１０２は、データの書き込み時、たとえばデータ名（ファイル名）などのデータの識別子を検索鍵として検索可能な当該データ用のエントリを管理テーブル１Ａ内に作成する。また、データ管理部１０２は、後述するストレージデバイス２からの通知に基づき、管理テーブル１Ａを更新する処理も実行する。この更新のために、管理テーブル１Ａには、ストレージデバイス２を基に当該ストレージデバイス２に格納されているデータ用のエントリを検索可能とする副索引が設けられる。
【００２４】
ストレージ選択処理部１０３は、データの書き込み時においては、データの格納先とするストレージデバイス２を選択する処理を実行する。ストレージ選択処理部１０３は、たとえば、データの識別子を引数とした関数計算により、２以上のストレージデバイス２を選択する。ストレージ選択処理部１０３により２以上のストレージデバイス２が選択されると、データ書き込み／読み出し処理部１０１は、当該選択された２以上のストレージデバイス２それぞれについてデータの書き込み処理を実行し、データ管理部１０２は、管理テーブル１Ａ内に作成した当該データ用のエントリに、当該選択された２以上のストレージデバイス２それぞれを示す情報を記録する。
【００２５】
また、ストレージ選択処理部１０３は、データの読み出し時においては、管理テーブル１Ａを参照して、読み出し対象のデータが格納される２以上のストレージデバイス２を認識し、かつ、当該２以上のストレージデバイス２の中からアクセス対象とする１以上のストレージデバイス２を選択する処理を実行する。
【００２６】
優先度管理部１０４は、たとえば、ストレージ選択処理部１０３がデータの書き込み時に選択し得る２以上のストレージデバイス２の全組み合わせについて予め設定されたストレージデバイス２間の優先度を管理する。データ管理部１０２は、データの書き込み時にストレージ選択処理部１０３が２以上のストレージデバイス２を選択した際、優先度管理部１０４が管理する当該２以上のストレージデバイス２間の優先度を管理テーブル１Ａ内に作成した当該データ用のエントリに記録する。ストレージ選択処理部１０３は、データの読み出し時、基本的には、この管理テーブル１Ａに記録される優先度に従い、アクセス対象とする１以上のストレージデバイス２を選択する。
【００２７】
図４に示されるように、データＡの書き込みが要求された場合を想定すると、このデータＡの格納先とする２以上のストレージデバイス２がストレージ選択処理部１０３により選択され、当該２以上のストレージデバイス２それぞれへのデータＡの書き込み処理がデータ書き込み／読み出し処理部１０１により実行される。また、データＡ用のエントリがデータ管理部１０２により管理テーブル１Ａ内に作成され、データＡに関する情報（データＡ情報）が記録される。
【００２８】
本実施形態のストレージシステムにおいては、データ（レプリカ）が３箇所に格納されるものとし、データＡの格納先として、ここでは、図４に示されるように、ストレージデバイス［１１］２、ストレージデバイス［２２］２およびストレージデバイス［ＭＮ］２が選択されたものと想定する。この場合、データＡに関する情報として、３つのストレージデバイス２それぞれを示す情報と、（優先度管理部１０４により管理される）３つのストレージデバイス２間の優先度とが記録される。
【００２９】
図５は、本実施形態のストレージシステムにおいて使用される管理テーブル１Ａの一例を示す図である。前述したように、データの書き込み時、そのデータ用のエントリが管理テーブル１Ａ内に作成される。図５は、データＡが、ストレージデバイス［１１］２、ストレージデバイス［２２］２およびストレージデバイス［ＭＮ］２に格納された時点において管理テーブル１Ａ内のデータＡ用のエントリに記録されているデータＡに関する情報を模式的に示している。
【００３０】
図５に示されるように、管理テーブル１Ａには、優先順位、ストレージデバイスＩＤ、状態および処理段階が記録される。優先順位は、データの読み出し時におけるストレージデバイス２の選択順を示す情報である。ストレージデバイスＩＤは、データを格納するストレージデバイス２それぞれを示す情報である。状態は、データを格納するストレージデバイス２それぞれの状態を示す情報である。状態の初期値は、データの書き込み要求／読み出し要求を待機中の状態（Ready）である。処理段階は、後述するBusy状態のストレージデバイスが実行中の処理の段階（進捗状況）を示す情報である。
【００３１】
図５に例示した管理テーブル１Ａ内のデータＡに関する情報によれば、データＡは、ストレージデバイス［１１］２、ストレージデバイス［２２］２およびストレージデバイス［ＭＮ］２に格納され、読み出し時には、アクセス対象として、ストレージデバイス［１１］２→ストレージデバイス［２２］２→ストレージデバイス［ＭＮ］２の順に選択すべきであることを認識できる。
【００３２】
なお、ここでは、ストレージ選択処理部１０３が、データの読み出し時、管理テーブル１Ａを参照して、読み出し対象のデータが格納される２以上のストレージデバイス２を認識することとしている。そのため、データ管理部１０２が、データの書き込み時、そのデータ用のエントリを管理テーブル１Ａに作成することとしている。即ち、管理テーブル１Ａのエントリは、データ毎に作成されるものとしている。
【００３３】
一方、ストレージ選択処理部１０３は、データの読み出し時、管理テーブル１Ａによらずに、読み出し対象のデータが格納される２以上のストレージデバイス２を認識することは可能である。より具体的には、データの書き込み時と同様、たとえばデータ名（ファイル名）などのデータの識別子を引数とした関数計算により、読み出し対象のデータが格納されている２以上のストレージデバイス２を特定できる。この場合、管理テーブル１Ａのエントリは、データ毎ではなく、ストレージ選択処理部１０３がデータの書き込み時に選択し得る２以上のストレージデバイス２の組み合わせ毎に作成すればよい。この場合、管理テーブル１Ａが、前述した優先度管理部１０４の機能を果たすこととなる。また、この場合のエントリの索引は、たとえばストレージデバイスＩＤを昇順に連結させた値などとすればよい。さらに、ストレージデバイス２を基に当該ストレージデバイス２を含む組み合わせに対応するエントリを検索可能とする副索引を設けてもよい。
【００３４】
次に、図６を参照して、本実施形態のストレージシステムのストレージデバイス２が状態を遷移させる場合における動作の流れを説明する。
前述したように、ストレージデバイス２のコントローラ２１は、状態通知処理部２１１を有している（図２参照）。状態通知処理部２１１は、ストレージデバイス２が状態を変化させた場合、その状態の遷移をホスト１に通知するための処理を実行する。状態の変化としては、たとえば、以下のような事象が考えられる。
【００３５】
（ａ）キャッシュデータの不揮発化（ＲＡＭ２３上のデータのデータ記憶部２２への書き込み）、データ再配置（データ記憶部２２内のデータの移動）等の内部的な処理を実行中の状態（Busy[1]）への変化。
（ｂ）データ記憶部２２がＨＤである場合における磁気ヘッドを退避させた状態（Sleep[1]）への変化。
（ｃ）データ記憶部２２がＨＤである場合における（磁気ヘッドの退避に加えて）さらにスピンドルの回転を退避させた状態（Sleep[2]）への変化。
（ｄ）データの書き込み要求／読み出し要求を待機中の状態（Ready）への変化。
（ｅ）メンテナンス処理を実行中の状態（Busy[2]）への変化。
【００３６】
また、状態通知処理部２１１は、ストレージデバイス２がBusy状態にある場合、ストレージデバイス２が実行中の処理の段階（進捗状況）をホスト１に通知するための処理を実行する。
【００３７】
ここで、データＡを格納する３つのストレージデバイス２、即ち、ストレージデバイス［１１］２、ストレージデバイス［２２］２およびストレージデバイス［ＭＮ］２が、ほぼ同じタイミングで、上記（ａ）のようなBusy状態へ変化した場合を想定する。ここでいう、ほぼ同じタイミングとは、データＡを格納する３つのストレージデバイス２すべてがBusy状態である期間が発生する範囲内であればよい。ここでは、ストレージデバイス［ＭＮ］２が、他の２つのストレージデバイス２よりも先にBusy状態へ変化、即ち、内部的な処理の実行を開始したものと想定する。
【００３８】
この場合、各ストレージデバイス２の状態通知処理部２１１は、Busy状態への遷移および実行中の処理の段階（進捗状況）をホスト１へ通知するための処理を実行する（図６の（１），（１）´，（１）´´）。ストレージデバイス２がサーバ３の配下に置かれている場合、状態通知処理部２１１は、たとえば遷移後の状態を示す情報をサーバ３へ出力する。即ち、状態の遷移をサーバ３経由でホスト１へ通知する。ストレージデバイス２が直接的にネットワークＮへ接続されている場合、状態通知処理部２１１は、たとえば遷移後の状態を示す情報をホスト１へ送信する。
【００３９】
一方、ストレージデバイス２の状態の遷移に関する通知を受けたホスト１は、データ管理部１０２が、そのストレージデバイス２に格納されているデータ用のエントリを管理テーブル１Ａ内から検索して、検索されたエントリに記録されている情報を更新する（図６の（２））。
【００４０】
図７に、データＡを格納する３つのストレージデバイス２からの通知により更新された管理テーブル１Ａの一例を示す。図７は、図５と同様、データＡに関する情報を模式的に示し、かつ、図５に示される状態からの更新後の状態を示している。
【００４１】
図７に示されるように、管理テーブル１Ａ内のデータＡに関する情報は、ストレージデバイス［１１］２、ストレージデバイス［２２］２およびストレージデバイス［ＭＮ］２のすべてがBusy状態へと更新されている。また、ストレージデバイス［１１］２およびストレージデバイス［２２］２は、処理段階がLev.1へ更新されており、ストレージデバイス［ＭＮ］２は、処理段階が（Lev.1よりも１段階進んだ）Lev.2へ更新されている。
【００４２】
ここでは、管理テーブル１Ａ内のデータＡに関する情報のみに言及しているが、ストレージデバイス［１１］２、ストレージデバイス［２２］２およびストレージデバイス［ＭＮ］２には、データＡ以外のデータが格納されているので、データ管理部１０２は、データＡ以外のデータについても、管理テーブル１Ａの更新を実行する。
【００４３】
なお、管理テーブル１Ａのエントリが、データ毎ではなく、ストレージデバイス２の組み合わせ毎に作成される場合、ストレージデバイス２からの状態の遷移に関する通知に伴う更新は、そのストレージデバイス２を含む組み合わせに対応するエントリについて実行されることになる。
【００４４】
続いて、図８を参照して、本実施形態のストレージシステムのデータの読み出し時における動作の流れを説明する。
たとえばデータＡの読み出しが要求された場合を想定すると（図８の（１））、ストレージ選択処理部１０３は、データＡ用のエントリを管理テーブル１Ａ内から検索し、アクセス対象とするストレージデバイス２を選択する（図８の（２））。この時、管理テーブル１Ａ内のデータＡ用のエントリに記録されている情報は、図７に示されるものであったと想定する。
【００４５】
前述したように、管理テーブル１Ａ内のデータＡに関する情報、より具体的には、優先順位に従えば、基本的には、まず、アクセス対象として、ストレージデバイス［１１］２が選択され、たとえばストレージデバイス［１１］２からのデータＡの読み出しが失敗した場合、次に、ストレージデバイス［２２］２が選択されることとなる。また、たとえばストレージデバイス［２２］２からのデータＡの読み出しも失敗した場合、最後に、ストレージデバイス［ＭＮ］２が選択されることとなる。
【００４６】
一方、図７に示されるように、データＡを格納する３つのストレージデバイス２がすべてBusy状態である場合、処理段階が最も進んでいる、本来、最後に選択されるべきストレージデバイス［ＭＮ］２をアクセス対象として当初より選択した方が、アクセス速度を速くすることが期待される。データＡを格納する３つのストレージデバイス２の中で、Ready状態へ復帰するまでの時間が最も短いと推測されるからである。
【００４７】
そこで、ストレージ選択処理部１０３は、データの読み出し時、単純に優先順位に従うのではなく、ストレージデバイス２の状態に基づき、（データが格納されている）ストレージデバイス２間の優先度を制御し、アクセス対象とするストレージデバイス２を選択する。即ち、ストレージ選択処理部１０３は、データＡをストレージデバイス［ＭＮ］２から読み出すことを決定する。
【００４８】
このストレージ選択処理部１０３の決定を受けて、データ書き込み／読み出し処理部１０１は、ストレージデバイス［ＭＮ］２からのデータＡの読み出し処理を実行する（図８の（３））。このように読み出されたデータＡが、その読み出しを要求したパーソナルコンピュータ（クライアント）に返却される（図８の（４））。
【００４９】
ストレージ選択処理部１０３が、データの読み出し時、アクセス対象とするストレージデバイス２を選択する規則の一例を以下に列挙する。
（Ａ）Ready状態が存在する場合、Ready状態の中で優先順位が最上位のストレージデバイス２を選択。
（Ｂ）すべてがSleep状態の場合
（Ｂ−１）Partialと称されるSleep状態と、Slumberと称されるSleep状態とが混在する場合、Wake時間が短いPartialの中で優先順位が最上位のストレージデバイス２を選択。たとえば、上記（ｂ）のSleep[1]と上記（ｃ）のSleep[2]とでは、Sleep[1]が優先される。複数のストレージデバイス２が候補に挙がり得るが、その場合は、それらの中から優先順位が最上位のストレージデバイス２を選択。
（Ｂ−２）すべてがPartialまたはSlumberのいずれかである場合、優先順位が最上位のストレージデバイス２を選択。
（Ｃ）すべてがBusy状態の場合、その時点での処理段階からReady状態へ復帰するまでの時間が最も短いと推測されるストレージデバイス２を選択。複数のストレージデバイス２が候補に挙がり得るが、その場合は、それらの中から優先順位が最上位のストレージデバイス２を選択。なお、上記（ａ）のBusy[1]と上記（ｅ）のBusy[2]とが混在するような場合でも、各々の処理段階からReady状態へ復帰するまでの時間を推測することは可能である。
（Ｄ）Ready状態が存在せず、かつ、Sleep状態とBusy状態とが混在する場合
（Ｄ−１）Sleep状態のストレージデバイス２をWakeさせる時間よりも、Ready状態へ復帰するまでの時間が短いと推測されるBusy状態のストレージデバイス２が存在する場合、当該Busy状態のストレージデバイス２を選択。複数のストレージデバイス２が候補に挙がり得るが、その場合は、それらの中から優先順位が最上位のストレージデバイス２を選択。
（Ｄ−２）Sleep状態のストレージデバイス２をWakeさせる時間よりも、Ready状態へ復帰するまでの時間が短いと推測されるBusy状態のストレージデバイス２が存在しない場合、Wake時間が最短のSleep状態のストレージデバイス２の中で優先順位が最上位のストレージデバイス２を選択。
【００５０】
このように、ストレージデバイス２が、状態の遷移をホスト１へ通知し、ホスト１が、ストレージデバイス２の状態に基づき、ストレージデバイス２間の優先度を制御することにより、本実施形態のストレージシステムは、ストレージデバイス２に対するアクセスの効率化を図ることを実現する。
【００５１】
なお、ストレージ選択処理部１０３は、データの読み出し時、アクセス対象として、２以上のストレージデバイス２を選択してもよい。この場合においても、アクセス速度が遅いと推測されるストレージデバイス２を除外する等、ストレージデバイス２の状態を考慮することは有効である。
【００５２】
図９は、本実施形態のストレージシステム（ホスト１）のデータの書き込み時における動作の流れを示すフローチャートである。
データの書き込み時、ホスト１は、まず、たとえばデータの識別子を基にデータの格納先とする２以上のストレージデバイス２を選択する（ステップＡ１）。ホスト１は、選択した２以上のストレージデバイス２に対するデータの書き込み処理を実行する（ステップＡ２）。ホスト１は、この２以上のストレージデバイス２に関する情報を含む、書き込みデータに関する情報を管理テーブル１Ａに記録する（ステップＡ３）。
【００５３】
なお、管理テーブル１Ａがストレージデバイス２の組み合わせ毎に作成される場合、管理テーブル１Ａへの情報の記録は不要である。
図１０は、本実施形態のストレージシステム（ストレージデバイス２，ホスト１）のストレージデバイスが状態を遷移させる場合における動作の流れを示すフローチャートである。
【００５４】
ストレージデバイス２は、状態が変化した時、ホスト１に対して、状態遷移通知を送信する（ステップＢ１１）、一方、状態遷移通知を受信したホスト１は、管理テーブル１Ａ内の状態が遷移したストレージデバイス２に書き込まれているデータに関する情報を検索し（ステップＢ２１）。検索された情報を更新する（ステップＢ２２）。
【００５５】
なお、管理テーブル１Ａがストレージデバイス２の組み合わせ毎に作成される場合、ホスト１は、管理テーブル１Ａ内の状態が遷移したストレージデバイス２を含む組み合わせに関する情報を検索し、検索された情報を更新する。
図１１は、本実施形態のストレージシステム（ホスト１）のデータの読み出し時における動作の流れを示すフローチャートである。
【００５６】
データの読み出し時、ホスト１は、管理テーブル１Ａ内の読み出しデータに関する情報を検索する（ステップＣ１）。検索された情報により、ホスト１は、データが格納されているストレージデバイス２を認識する。
ホスト１は、検索された情報、より具体的には、当該検索された情報で示されるストレージデバイス２の状態に基づき、（データが格納されている）ストレージデバイス２間の優先度を制御し、データを読み出すストレージデバイス２を選択する（ステップＣ２）。ホスト１は、選択した２以上のストレージデバイス２に対するデータの読み出し処理を実行する（ステップＣ３）。
【００５７】
なお、管理テーブル１Ａがストレージデバイス２の組み合わせ毎に作成される場合、ホスト１は、たとえばデータの識別子を基にデータが格納されているストレージデバイス２を認識する。また、この場合、ホスト１は、管理テーブル１Ａ内の認識したストレージデバイス２の組み合わせに関する情報を検索し、検索された情報、より具体的には、当該検出された情報で示されるストレージデバイス２の状態に基づき、（データが格納されている）ストレージデバイス２間の優先度を制御し、データを読み出すストレージデバイス２を選択する。
【００５８】
以上のように、本実施形態のストレージシステムは、ストレージデバイス２に対する、より効率的なアクセスを可能とする。
たとえば、ストレージデバイス２の状態をホスト１が予め知ることにより、アクセスの速いストレージデバイス２と、アクセスの遅いストレージデバイス２とをホスト１が判別できるようになり、データの使用方法に応じたストレージデバイス２の選択も行えるようになる。つまり、前述の説明では、データの読み出し時、アクセスの速いストレージデバイス２を選択するようにしたが、データの種類や優先度などに対応したアクセス速度のストレージデバイス２を選択するようにしてもよい。
【００５９】
また、ストレージデバイス２は、ストレージシステム全体の性能を落とすことなく、必要な処理を行えるようになる。たとえば、あるデータに関して優先順位が最上位のストレージデバイス２が内部的な処理を実行したとしても、このデータの読み出し時、ホスト１側において、他のストレージデバイス２が選択されるようになるので、このストレージデバイス２がReady状態になるまでの遅延を発生させるようなことがない。
【００６０】
また、たとえばストレージデバイス２がＳＳＤであると想定すると、ＳＳＤは、ガーベージコレクションを高速に実行するために、通常、オーバープロビジョニングと称される余分な容量を多く持つ必要がある。ガーベージコレクションを高速に実行する必要を無くすことにより、このような余分な容量を多く持つことを不要にできる。
【００６１】
更に、ストレージシステム全体の応答性を確保しつつ、ストレージデバイス２がSleep状態へ遷移することが可能となるので、ストレージシステム全体の消費電力を低減することができる。より具体的には、たとえば、あるデータに関して優先順位が最上位のストレージデバイス２がSleep状態へ遷移したとしても、このデータの読み出し時、ホスト１側において、他のストレージデバイス２が選択されるようになるので、このストレージデバイス２がReady状態になるまでの遅延を発生させるようなことがない。
【００６２】
（第２実施形態）
次に、第２実施形態について説明する。
第１実施形態では、ストレージデバイス２は、状態を変化させる時、状態の遷移をホスト１に通知した。本実施形態では、ストレージデバイス２は、状態を変化させる時、状態遷移の許可をホスト１に申請し、許可された場合、状態を変化させる。ホスト１が複数存在する場合、ストレージデバイス２は、すべてのホスト１へ申請を行い、すべてのホスト１から許可を得られた場合、状態を変化させる。
【００６３】
図１２は、本実施形態のストレージシステムのストレージデバイス２が状態を遷移させる場合における動作の流れを説明するための図である。ここでは、複数のホスト１が存在しており、複数のホスト１それぞれが、ストレージデバイス２へのデータの書き込み／読み出しを行っていることを想定する。
【００６４】
たとえば、複数のホスト１の中のあるホスト１が、データＢの読み出しの要求を受けている場合を想定する（図１２の（１））。また、データＢを格納するストレージデバイス２が、たとえばSleep状態へ遷移しようとしており、そのために、状態の遷移の許可を複数のホスト１へ申請した場合を想定する（図１２の（２））。なお、データＢを格納するストレージデバイス２には、データＢ以外のデータも格納されているが、データＢ以外のデータの読み出し要求は発生していないものと想定する。また、データＢを格納するストレージデバイス２に対するデータの書き込み要求も発生していないものと想定する。
【００６５】
この場合、データＢを含む当該ストレージデバイス２に格納されているデータの読み出し要求を受けていないホスト１からは、許可の回答を得られるが（図１２の（３））、データＢの読み出し要求を受けているホスト１からは、許可の回答を得られない（図１２の（３）´）。換言すれば、ホスト１は、状態の遷移の許可をストレージデバイス２から申請された場合、その可否を判定して、判定結果をストレージデバイス２へ回答する。
【００６６】
一部のホスト１から許可が得られなかった場合、ストレージデバイス２は、状態を遷移させることを保留する。すべてのホスト１から許可が得られた場合、ストレージデバイス２は、状態を遷移させて、ストレージデバイス２の状態の遷移をすべてのホスト１へ通知する。
【００６７】
このように、ストレージデバイス２が、状態を遷移させる際、その許可をホスト１へ申請し、すべてのホスト１から許可された場合、状態を遷移させるようにし、また、ホスト１が、ストレージデバイス２からの申請に対して、その可否をストレージデバイス２へ回答することにより、本実施形態のストレージシステムは、さらに、ストレージデバイス２に対するアクセスの効率化を図ることを実現する。
【００６８】
図１３は、本実施形態のストレージシステム（ストレージデバイス２）のストレージデバイス２が状態を遷移させる場合における動作の流れを示すフローチャートである。
ストレージデバイス２は、状態を遷移させる場合、すべてのホスト１に対して、状態の遷移の許可を申請する（ステップＤ１）。ストレージデバイス２は、すべてのホスト１から許可の回答が得られたか否かを調べ（ステップＤ２）、すべてのホスト１からの許可が得られなかった場合（ステップＤ２のＮＯ）、状態を遷移させることを保留する（ステップＤ３）。
【００６９】
すべてのホスト１から許可が得られた場合（ステップＤ２のＹＥＳ）、ストレージデバイス２は、状態を遷移させて（ステップＤ４）、ストレージデバイス２の状態の遷移をすべてのホスト１へ通知する（ステップＤ５）。
以上のように、本実施形態のストレージシステムにおいても、ストレージデバイス２に対する、より効率的なアクセスを可能とする。
【００７０】
ホスト１とストレージデバイス２とが多対多で接続される環境においては、ホスト１がストレージデバイス２の状態を指示することは適当でない。たとえば、あるホスト１があるストレージデバイス２に対してSleep状態への遷移を指示しようとした時、他のホスト１がそのストレージデバイス２に対してデータの書き込み／読み出しのためのアクセスを実行しようとしているかもしれない。そのため、ストレージデバイス２からすべてのホスト１に対して、状態を遷移させてもよいかを問い合わせる仕組みが有効となる。
【００７１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７２】
１…ホスト、１Ａ…管理テーブル、２…ストレージデバイス、３…サーバ、Ｎ…ネットワーク、１１…プロセッサ、１００…ストレージ管理ユーティリティプログラム、１０１…データ書き込み／読み出し処理部、１０２…データ管理部、１０３…ストレージ選択処理部、１０４…優先度管理部、２１…コントローラ、２１１…状態通知処理部。
【図１】
2017162166.tif 000003
【図２】
2017162166.tif 000004
【図３】
2017162166.tif 000005
【図４】
2017162166.tif 000006
【図５】
2017162166.tif 000007
【図６】
2017162166.tif 000008
【図７】
2017162166.tif 000009
【図８】
2017162166.tif 000010
【図９】
2017162166.tif 000011
【図１０】
2017162166.tif 000012
【図１１】
2017162166.tif 000013
【図１２】
2017162166.tif 000014
【図１３】
2017162166.tif 000015