(57)【要約】【課題】クラウド・ベースのランクを使用するシン・プロビジョニングを提供する。【解決手段】クラウド・ベースのランクを使用するシン・プロビジョニングのためのコンピュータ実装方法は、ストレージ・コントローラに関連付けられた複数のローカル・ランクのすべてに関する未使用の物理ストレージ空間の総量を決定することと、未使用の物理ストレージ空間の総量を第１のしきい値と比較することと、未使用の物理ストレージ空間の総量が第１のしきい値未満であるということの決定に応答して、１つまたは複数のクラウド・ベースのランクを作成することとを含む。１つまたは複数のクラウド・ベースのランクの各々を作成することは、クラウド・インターフェイスを介して１つまたは複数の対応するクラウド・ストレージ・デバイス上のストレージ空間を割り当てることと、割り当てられたストレージ空間を対応する仮想ローカル・アドレスにマッピングすることと、ストレージ・コントローラに関連付けられた仮想ローカル・ランクとして仮想ローカル・アドレスをグループ化することとを含む。【選択図】図２
2020533689.tif 000002
【特許請求の範囲】
【請求項１】
ストレージ・コントローラに関連付けられた複数のローカル・ランクのすべてに関して、未使用の物理ストレージ空間の総量を決定することと、
前記未使用の物理ストレージ空間の総量を、第１のしきい値と比較することと、
前記未使用の物理ストレージ空間の総量が前記第１のしきい値未満であるということの決定に応答して、１つまたは複数のクラウド・ベースのランクを作成することとを含んでいるコンピュータ実装方法であって、
前記１つまたは複数のクラウド・ベースのランクの各々を作成することが、
クラウド・インターフェイスを介して１つまたは複数の対応するクラウド・ストレージ・デバイス上のストレージ空間を割り当てることと、
前記割り当てられたストレージ空間を対応する仮想ローカル・アドレスにマッピングすることと、
前記ストレージ・コントローラに関連付けられた仮想ローカル・ランクとして前記仮想ローカル・アドレスをグループ化することとを含んでいる、コンピュータ実装方法。
【請求項２】
前記１つまたは複数のクラウド・ベースのランクの作成後に書き込まれた新しいデータを前記１つまたは複数のクラウド・ベースのランクに格納することをさらに含んでいる、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記１つまたは複数のクラウド・ベースのランクを作成する前に、前記複数のローカル・ランクに格納されたデータを前記１つまたは複数のクラウド・ベースのランクに移動することと、
前記１つまたは複数のクラウド・ベースのランクの作成後に書き込まれた新しいデータを前記複数のローカル・ランクに格納することとをさらに含んでいる、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記クラウド・ベースのランクのうちの１つに対するローカル・データ・アクセス要求を、前記クラウド・インターフェイス用に構成されたクラウド・データ・アクセス要求に変換することと、
前記クラウド・データ・アクセス要求を、前記クラウド・インターフェイスを介して前記１つまたは複数の対応するクラウド・ストレージ・デバイスに伝達することとをさらに含んでいる、請求項１に記載のコンピュータ実装方法。
【請求項５】
前記複数のローカル・ランクおよび前記１つまたは複数のクラウド・ベースのランクに関する使用済みのストレージ空間の総量を決定することと、
前記複数のローカル・ランクのストレージ空間の総量と、前記使用済みのストレージ空間の決定された総量との間の差を決定することと、
前記差が第２のしきい値を上回るということの決定に応答して、データを前記１つまたは複数のクラウド・ベースのランクから前記複数のローカル・ランクに移動することとをさらに含んでいる、請求項１に記載のコンピュータ実装方法。
【請求項６】
前記第１のしきい値が前記第２のしきい値と異なっている、請求項５に記載のコンピュータ実装方法。
【請求項７】
前記１つまたは複数のクラウド・ベースのランクから前記複数のローカル・ランクへのすべての前記データの移動後に、前記１つまたは複数のクラウド・ベースのランクを除去することをさらに含んでいる、請求項５に記載のコンピュータ実装方法。
【請求項８】
ホスト・アダプタを１つまたは複数のホスト・デバイスに通信によって結合するように構成された１つまたは複数のポートを含んでいる前記ホスト・アダプタと、
プロセッサおよびメモリを備えているストレージ・コントローラであって、前記ホスト・アダプタに通信によって結合されている、前記ストレージ・コントローラと、
プロセッサおよびメモリを備えているデバイス・アダプタであって、前記ストレージ・コントローラに通信によって結合されている、前記デバイス・アダプタとを備えている、ストレージ・システムであって、
前記デバイス・アダプタが、複数のローカル・ストレージ・ドライブに通信によって結合された複数のポートと、ネットワークを介して複数のクラウド・ストレージ・デバイスに通信によって結合された少なくとも１つのネットワーク・ポートとをさらに含んでおり、
前記デバイス・アダプタおよび前記ストレージ・コントローラのうちの１つが、
前記複数のローカル・ストレージ・ドライブ上の未使用の物理ストレージ空間の総量が第１の既定のしきい値未満であるということの決定に応答して、１つまたは複数のクラウド・ベースのランクを作成するように構成されたクラウド・プロビジョニング・モジュールを実装するようにさらに構成されており、
前記１つまたは複数のクラウド・ベースのランクの各々を作成するために、前記クラウド・プロビジョニング・モジュールが、
クラウド・インターフェイスを介して１つまたは複数の対応するクラウド・ストレージ・デバイス上のストレージ空間を割り当てることと、
前記割り当てられたストレージ空間を対応する仮想ローカル・アドレスにマッピングすることと、
前記ストレージ・コントローラに関連付けられた仮想ローカル・ランクとして前記仮想ローカル・アドレスをグループ化することとを実行するように構成されている、ストレージ・システム。
【請求項９】
前記仮想ローカル・ランクが仮想ローカルＲＡＩＤアレイを備えている、請求項８に記載のストレージ・システム。
【請求項１０】
前記クラウド・プロビジョニング・モジュールが、前記１つまたは複数のクラウド・ベースのランクの作成後に書き込まれた新しいデータを前記１つまたは複数のクラウド・ベースのランクに格納するようにさらに構成されている、請求項８に記載のストレージ・システム。
【請求項１１】
前記クラウド・プロビジョニング・モジュールが、
前記１つまたは複数のクラウド・ベースのランクを作成する前に、前記複数のローカル・ストレージ・ドライブに格納されたデータを前記１つまたは複数のクラウド・ベースのランクに移動することと、
前記１つまたは複数のクラウド・ベースのランクの作成後に書き込まれた新しいデータを前記複数のローカル・ストレージ・ドライブに格納することとを実行するようにさらに構成されている、請求項８に記載のストレージ・システム。
【請求項１２】
前記クラウド・プロビジョニング・モジュールが、
前記クラウド・ベースのランクのうちの１つに対するローカル・データ・アクセス要求を、前記クラウド・インターフェイス用に構成されたクラウド・データ・アクセス要求に変換することと、
前記クラウド・データ・アクセス要求を、前記クラウド・インターフェイスを介して前記１つまたは複数の対応するクラウド・ストレージ・デバイスに伝達することとを実行するようにさらに構成されている、請求項８に記載のストレージ・システム。
【請求項１３】
前記クラウド・プロビジョニング・モジュールが、
前記複数のローカル・ストレージ・ドライブおよび前記１つまたは複数のクラウド・ベースのランクに関する使用済みのストレージ空間の総量を決定することと、
前記複数のローカル・ストレージ・ドライブのストレージ空間の総量と、前記使用済みのストレージ空間の決定された総量との間の差を決定することと、
前記差が第２の既定のしきい値を上回るということの決定に応答して、データを前記１つまたは複数のクラウド・ベースのランクから前記複数のローカル・ストレージ・ドライブに移動することとを実行するようにさらに構成されている、請求項８に記載のストレージ・システム。
【請求項１４】
前記第１の既定のしきい値が前記第２の既定のしきい値と異なっている、請求項１３に記載のストレージ・システム。
【請求項１５】
前記クラウド・プロビジョニング・モジュールが、前記１つまたは複数のクラウド・ベースのランクから前記複数のローカル・ストレージ・ドライブへのすべての前記データの移動後に、前記１つまたは複数のクラウド・ベースのランクを除去するようにさらに構成されている、請求項１３に記載のストレージ・システム。
【請求項１６】
コンピュータ可読プログラムが格納されているコンピュータ可読記憶媒体を備えているコンピュータ・プログラム製品であって、前記コンピュータ可読プログラムが、プロセッサによって実行された場合に、前記プロセッサに、
ストレージ・コントローラに関連付けられた複数のローカル新磁気ディスク制御機構（ＲＡＩＤ）アレイのすべてに関して、未使用の物理ストレージ空間の総量を決定することと、
前記未使用の物理ストレージ空間の総量を、第１の既定のしきい値と比較することと、
前記未使用の物理ストレージ空間の総量が前記第１の既定のしきい値未満であるということの決定に応答して、１つまたは複数のクラウド・ベースのランクを作成することと実行させ、
前記１つまたは複数のクラウド・ベースのランクの各々を作成するために、前記コンピュータ可読プログラムが、前記プロセッサに、
クラウド・インターフェイスを介して１つまたは複数の対応するクラウド・ストレージ・デバイス上のストレージ空間を割り当てることと、
前記割り当てられたストレージ空間を対応する仮想ローカル・アドレスに割り当てることと、
前記割り当てられた仮想ローカル・アドレスを、前記ストレージ・コントローラに関連付けられた対応する仮想ローカルＲＡＩＤアレイに構成することとを実行させるように構成されている、コンピュータ・プログラム製品。
【請求項１７】
前記コンピュータ可読プログラムが、前記プロセッサに、前記１つまたは複数のクラウド・ベースのランクの作成後に書き込まれた新しいデータを前記１つまたは複数のクラウド・ベースのランクに格納させるようにさらに構成されている、請求項１６に記載のコンピュータ・プログラム製品。
【請求項１８】
前記コンピュータ可読プログラムが、前記プロセッサに、
前記１つまたは複数のクラウド・ベースのランクを作成する前に、前記複数のローカルＲＡＩＤアレイに格納されたデータを前記１つまたは複数のクラウド・ベースのランクに移動することと、
前記１つまたは複数のクラウド・ベースのランクの作成後に書き込まれた新しいデータを前記複数のローカルＲＡＩＤアレイに格納することとを実行させるようにさらに構成されている、請求項１６に記載のコンピュータ・プログラム製品。
【請求項１９】
前記コンピュータ可読プログラムが、前記プロセッサに、
前記複数のローカルＲＡＩＤアレイおよび前記１つまたは複数のクラウド・ベースのランクに関する使用済みのストレージ空間の総量を決定することと、
前記複数のローカルＲＡＩＤアレイのストレージ空間の総量と、前記使用済みのストレージ空間の決定された総量との間の差を決定することと、
前記差が第２の既定のしきい値を上回るということの決定に応答して、データを前記１つまたは複数のクラウド・ベースのランクから前記複数のローカルＲＡＩＤアレイに移動することとを実行させるようにさらに構成されている、請求項１６に記載のコンピュータ・プログラム製品。
【請求項２０】
前記コンピュータ可読プログラムが、前記プロセッサに、前記１つまたは複数のクラウド・ベースのランクから前記複数のローカルＲＡＩＤアレイへのすべての前記データの移動後に、前記１つまたは複数のクラウド・ベースのランクを除去させるようにさらに構成されている、請求項１９に記載のコンピュータ・プログラム製品。
【請求項２１】
前記コンピュータ可読プログラムが、前記プロセッサに、前記クラウド・インターフェイスのアプリケーション・プログラミング・インターフェイス（ＡＰＩ）の要件に従って、前記１つまたは複数の仮想ローカルＲＡＩＤアレイに対するローカル・データ・アクセス要求をクラウド・データ・アクセス要求に変換させるようにさらに構成されている、請求項１５に記載のコンピュータ・プログラム製品。
【請求項２２】
ネットワークを介してコンピューティング・デバイスを１つまたは複数のクラウド・ストレージ・デバイスに通信によって結合するように構成されたネットワーク・アダプタと、
データを格納するように構成されたストレージ媒体と、
前記ネットワーク・アダプタおよび前記ストレージ媒体に通信によって結合されたプロセッサとを備えているコンピューティング・デバイスであって、前記プロセッサが、
請求項１ないし７のいずれかに記載の方法のステップを実行するように構成されている、コンピューティング・デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
クラウド・ベースのランクを使用するシン・プロビジョニングを実現するためのコンピュータ実装方法に関する。
【背景技術】
【０００２】
ストレージ・エリア・ネットワーク（ＳＡＮ：storage area networks）などのストレージ・ネットワークは、さまざまなタイプのデータ・ストレージ・システムをさまざまなタイプのサーバ（本明細書では「ホスト・システム」とも呼ばれる）と相互接続するために使用される。一部のサーバは、データ・ストレージ媒体、ストレージ・コントローラ、メモリ、および付随する電力システム、冷却システムなどの、さまざまなハードウェアを含む。
【０００３】
ストレージ・コントローラは、読み取り要求および書き込み要求に応答して、データ・ストレージ媒体およびメモリへのアクセスを制御する。ストレージ・コントローラは、ＲＡＩＤ（redundant array of independent disks：新磁気ディスク制御機構）、ＪＢＯＤ（just a bunch of disks：単純ディスク束）、ならびにその他の冗長性およびセキュリティ・レベルなどのデータ・ストレージ・デバイスに従って、データを管理することができる。一例として、ＤＳ８０００シリーズなどのＩＢＭ（Ｒ）ＥＳＳ（Enterprise Storage Server）は、コンピュータの実体、キャッシュ、不揮発性ストレージなどの冗長なクラスタを含む。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
クラウド・ベースのランクを使用するシン・プロビジョニングを提供する。
【課題を解決するための手段】
【０００５】
本発明の態様は、クラウド・ベースのランクを使用するシン・プロビジョニングのためのコンピュータ実装方法、コンピュータ・プログラム製品、コンピューティング・デバイス、およびシステムを含む。本発明を具現化する例示的な方法は、ストレージ・コントローラに関連付けられた複数のローカル・ランクのすべてに関する未使用の物理ストレージ空間の総量を決定することと、未使用の物理ストレージ空間の総量を第１のしきい値と比較することと、未使用の物理ストレージ空間の総量が第１のしきい値未満であるということの決定に応答して、１つまたは複数のクラウド・ベースのランクを作成することとを含む。１つまたは複数のクラウド・ベースのランクの各々を作成することは、クラウド・インターフェイスを介して１つまたは複数の対応するクラウド・ストレージ・デバイス上のストレージ空間を割り当てることと、割り当てられたストレージ空間を対応する仮想ローカル・アドレスにマッピングすることと、ストレージ・コントローラに関連付けられた仮想ローカル・ランクとして仮想ローカル・アドレスをグループ化することとを含む。
【０００６】
上記の概要は、本発明の各実施形態例もすべての実装も説明するよう意図されていない。
【０００７】
各図面が、本発明の実施形態例のみを表しており、したがって、範囲の制限と見なされるべきではないということを理解して、添付の図面を使用することによって、追加の特殊性および詳細と共に、本発明の実施形態例が説明される。
【図面の簡単な説明】
【０００８】
【図１】例示的なネットワーク環境を示す上位のブロック図である。
【図２】例示的なストレージ・システムを示す上位のブロック図である。
【図３】例示的なデバイス・アダプタのブロック図である。
【図４】クラウド・ベースのランクを使用するシン・プロビジョニングの例示的な方法を示すフローチャートである。
【発明を実施するための形態】
【０００９】
慣行に従って、説明されるさまざまな特徴は一定の縮尺で描かれておらず、本発明の実施形態例に関連する特定の特徴を強調するように描かれている。
【００１０】
以下の詳細な説明では、本明細書の一部を形成する添付の図面に対する参照が行われ、その参照において、本発明の特定の例示的な実施形態が、例として示される。ただし、本発明のその他の実施形態が利用されてよく、論理的変更、機械的変更、および電気的変更が行われてよいということが、理解されるべきである。さらに、図面および本明細書において提示される方法は、個別のステップが実行される順序を制限すると解釈されるべきではない。したがって、以下の詳細な説明は、限定する意味で受け取られるべきではない。
【００１１】
本明細書において使用されるとき、「少なくとも１つ」、「１つまたは複数」、および「〜または〜あるいはその組み合わせ」という語句は、動作中の結合および分離の両方である無制限の表現である。例えば、「Ａ、Ｂ、およびＣのうちの少なくとも１つ」、「Ａ、Ｂ、またはＣのうちの少なくとも１つ」、「Ａ、Ｂ、およびＣのうちの１つまたは複数」、「Ａ、Ｂ、またはＣのうちの１つまたは複数」、および「Ａ、Ｂ、またはＣ、あるいはその組み合わせ」という表現の各々は、Ａ単独、Ｂ単独、Ｃ単独、ＡおよびＢの組み合わせ、ＡおよびＣの組み合わせ、ＢおよびＣの組み合わせ、またはＡ、Ｂ、およびＣの組み合わせを意味する。さらに、「１つ（a）」または「１つ（an）」の実体という用語は、その実態のうちの１つまたは複数のことを指す。そのため、「１つ（a）」（または「１つ（an）」）、「１つまたは複数」、および「少なくとも１つ」という用語は、本明細書では交換可能なように使用され得る。「備えている」、「含んでいる」、および「有している」という用語が交換可能なように使用され得るということにも注意するべきである。「自動的」およびその変形の用語は、本明細書において使用されるとき、プロセスまたは動作が実行されるときに、具体的な人間の入力なしで実行される、任意のプロセスまたは動作のことを指す。人間の入力は、そのような入力が、プロセスまたは動作の実行方法または実行のタイミングを指示または制御する場合に、具体的であると見なされる。人間の入力を使用するプロセスは、その入力が、プロセスの実行方法または実行のタイミングを指示することも制御することも行わない場合、まだ自動的であると見なされる。
【００１２】
「決定する」、「算出する」、および「計算する」という用語、ならびにその変形は、本明細書において使用されるとき、交換可能なように使用され、任意の種類の方法、プロセス、数学演算、または手法を含む。以下では、「通信する」または「通信によって結合される」は、無線または有線に関わらず、任意の電気接続を意味するものとし、２つ以上のシステム、コンポーネント、モジュール、デバイスなどが、任意のプロトコルまたは形式を使用してデータ、信号、またはその他の情報を交換できるようにする。さらに、通信によって結合された２つのコンポーネントは、互いに直接結合される必要はなく、他の中間のコンポーネントまたはデバイスを介して一緒に結合されてもよい。
【００１３】
図１は、例示的なネットワーク・アーキテクチャ１００を示す上位のブロック図である。ネットワーク・アーキテクチャ１００は、制限ではなく、単に例として提示されている。実際、本明細書で開示されるシステムおよび方法は、図１に示されているネットワーク・アーキテクチャ１００に加えて、多種多様な異なるネットワーク・アーキテクチャに適用可能であってよい。
【００１４】
図に示されているように、ネットワーク・アーキテクチャ１００は、１つまたは複数のクライアントまたはクライアント・コンピュータ１０２−１…１０２−Ｎ（Ｎはクライアント・コンピュータの総数）、および１つまたは複数のホスト１０６−１…１０６−Ｍ（Ｍはホスト（本明細書では、「サーバ・コンピュータ」１０６、「ホスト・システム」１０６、または「ホスト・デバイス」１０６とも呼ばれる）の総数）を含む。図１には５つのクライアント１０２が示されているが、他の実施形態では、その他の数のクライアント１０２が使用され得るということが、理解されるべきである。例えば、一部の実施形態では、１つのクライアント１０２のみが実装される。他の実施形態では、５つより多いクライアント１０２または少ないクライアント１０２が使用される。同様に、図１には４つのホスト１０６が示されているが、任意の適切な数のホスト１０６が使用され得るということが、理解されるべきである。例えば、一部の実施形態では、１つのホスト１０６のみが使用される。本発明の他の実施形態では、４つより多いストレージ・ホスト１０６または少ないストレージ・ホスト１０６が使用され得る。
【００１５】
クライアント・コンピュータ１０２の各々は、デスクトップ・コンピュータ、ポータブル・コンピュータ、ラップトップまたはノートブック・コンピュータ、ネットブック、タブレット・コンピュータ、ポケット・コンピュータ、スマートフォン、あるいは任意のその他の適切な種類の電子デバイスとして実装され得る。同様に、ホスト１０６の各々は、任意の適切なホスト・コンピュータまたはサーバを使用して実装され得る。そのようなサーバは、ＩＢＭ  Ｓｙｓｔｅｍ  ｚ（Ｒ）およびＩＢＭ  Ｓｙｓｔｅｍ  ｉ（Ｒ）サーバに加えて、ＵＮＩＸ（Ｒ）サーバ、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（Ｒ）サーバ、およびＬｉｎｕｘプラットフォームを含むことができるが、これらに限定されない。
【００１６】
クライアント・コンピュータ１０２は、ネットワーク１０４を介して、ホスト１０６に通信によって結合される。ネットワーク１０４の例としては、ローカル・エリア・ネットワーク（ＬＡＮ：local-area-network）、広域ネットワーク（ＷＡＮ：wide-area-network）、インターネット、イントラネットなどが挙げられる。一般に、クライアント・コンピュータ１０２は、通信セッションを開始し、一方、サーバ・コンピュータ１０６は、クライアント・コンピュータ１０２からの要求を待つ。本発明の特定の実施形態では、コンピュータ１０２またはサーバ１０６あるいはその両方は、１つまたは複数の内部または外部の直接取り付けられたストレージ・システム１１２（例えば、ハードディスク・ドライブ、半導体ドライブ、テープ・ドライブなどのアレイ）に、接続されてよい。これらのコンピュータ１０２、１０６、および直接取り付けられたストレージ・システム１１２は、ＡＴＡ、ＳＡＴＡ、ＳＣＳＩ、ＳＡＳ、ファイバ・チャネルなどのプロトコルを使用して通信してよい。
【００１７】
ネットワーク・アーキテクチャ１００は、本発明の特定の実施形態では、ストレージ・エリア・ネットワーク（ＳＡＮ：storage-area-network）１０８またはＬＡＮ１０８（例えば、ネットワークに取り付けられたストレージを使用する場合）など、サーバ１０６の背後にストレージ・ネットワーク１０８を含んでよい。図１に示された例では、ネットワーク１０８は、サーバ１０６を１つまたは複数のストレージ・サブシステム１１０に接続する。説明の目的で、１つのストレージ・サブシステム１１０のみが示されているが、本発明の他の実施形態では２つ以上のストレージ・サブシステム１１０が使用され得るということが、理解されるべきである。ストレージ・サブシステム１１０は、ストレージ・デバイスのアレイ１１６への接続を管理する。ストレージ・デバイスのアレイ１１６は、ハードディスク・ドライブまたは半導体ドライブあるいはその両方のアレイを含むことができる。ストレージ・サブシステム１１０にアクセスするために、ホスト・システム１０６は、ホスト１０６上の１つまたは複数のポートからストレージ・サブシステム１１０上の１つまたは複数のポートへの物理的接続を経由して通信してよい。接続は、スイッチ、ファブリック、直接接続などを介してよい。本発明の特定の実施形態では、サーバ１０６およびストレージ・サブシステム１１０は、ファイバ・チャネル（ＦＣ：Fibre Channel）またはｉＳＣＳＩなどのネットワーク規格を使用して通信してよい。
【００１８】
従来のシステムでは、プロビジョニングするべきストレージ容量を決定することは、困難であるか、または高価であるか、あるいはその両方である可能性がある。一部のシステムは、使用可能な物理ストレージ空間より多くの論理ストレージ空間をプロビジョニングする、シン・プロビジョニングと呼ばれる手法を利用する。格納されるデータの増大に起因して、より多くの物理ストレージ空間が必要になるため、容量を増やすために、追加のストレージ・ドライブが構成されて追加される。しかし、ストレージ・ドライブの追加は、サービスが利用できなくなるダウンタイムをもたらすだけでなく、新しいストレージ・ドライブを購入し、構成し、設置するための追加費用を発生させる可能性がある。さらに、それ以上の物理的空間が存在せず、追加容量がまだ追加されていないときに、新しい書き込みが発生した場合、その新しい書き込みは失敗する。これに対して、必要とされるよりも多くの容量がプロビジョニングされた場合、その空間が未使用になり、ストレージ空間の非効率的な使用および初期プロビジョニングの費用につながる。
【００１９】
基本的な必要性（アーカイブなど）のためにデータを格納する相対的に費用効率が高い方法を提供できるクラウド・ストレージ・サービスが存在するが、クラウド・ストレージ・サービスの従来の使用は、下で説明される高度な管理機能などの、ローカルに接続されたストレージ・アレイを含んでいるエンタープライズ・ストレージ・システムと同じ機能および恩恵を提供しない。従来のエンタープライズ・ストレージ・システムおよび従来のクラウド・ストレージ・サービスとは対照的に、本明細書に記載された本発明の実施形態は、クラウド・ストレージ・ドライブの可用性を活用して、クラウド・ストレージがエンタープライズ・ストレージ・システムのローカル・ストレージ・アレイのように見える方法で、クラウド・ストレージからストレージ・アレイを作成し、下で詳細に説明されているように、クラウドに格納されたデータに対する高度なデータ管理機能を可能にするだけでなく、シン・プロビジョニングをさらにシームレスにする（例えば、容量が必要とされる／追加されるときに、サービスの中断を少なくする）。具体的には、本明細書に記載された本発明の実施形態は、必要性が生じたときに、ストレージ・アレイをストレージ・コントローラに動的に追加することができ、それと同時に、仮想的なクラウドのアレイに格納されたデータに対して、ローカル・ストレージ・アレイで使用できる機能と同じ機能を可能にする。したがって、本明細書に記載された本発明の実施形態は、クラウド・ストレージ・ドライブに格納されたデータに対してエンタープライズ・ストレージ・システムの恩恵を可能にし、シン・プロビジョニングをさらにシームレスにするための、解決策を提供する。
【００２０】
図２は、ストレージ・システム２００の上位のブロック図である。ストレージ・システム２００は、ストレージ・ドライブ（例えば、ハードディスク・ドライブまたは半導体ドライブあるいはその両方）の１つまたは複数のアレイを含んでいる。図に示されているように、ストレージ・システム２００は、ストレージ・サブシステム２１０と、複数のスイッチ２２０と、ハード・ディスク・ドライブまたは半導体ドライブ（フラッシュメモリベースのドライブなど）あるいはその両方などの複数のストレージ・ドライブ２１６とを含んでいる。ストレージ・サブシステム２１０は、１つまたは複数のホスト（例えば、オープン・システムまたはメインフレーム・サーバあるいはその両方）が、複数のストレージ・ドライブ２１６内のデータにアクセスできるようにしてよい。
【００２１】
本発明の一部の実施形態では、ストレージ・サブシステム２１０は、１つまたは複数のストレージ・コントローラ２２２を含んでいる。図２に示されている例では、ストレージ・サブシステムは、ストレージ・コントローラ２２２ａおよびストレージ・コントローラ２２２ｂを含んでいる。説明の目的で、本明細書では２つのストレージ・コントローラ２２２のみが示されているが、本発明の他の実施形態では３つ以上のストレージ・コントローラが使用され得るということが、理解されるべきである。図２のストレージ・サブシステム２１０は、ストレージ・サブシステム２１０をホスト・デバイスおよびストレージ・ドライブ２０４にそれぞれ接続するために、ホスト・アダプタ２２４ａ、２２４ｂ、およびデバイス・アダプタ２２６ａ、２２６ｂも含んでいる。複数のストレージ・コントローラ２２２ａ、２２２ｂは、データが接続されたホストで使用可能であることを保証するのに役立つ冗長性を実現する。したがって、１つのストレージ・コントローラ（例えば、ストレージ・コントローラ２２２ａ）が故障した場合、他のストレージ・コントローラ（例えば、２２２ｂ）が故障したストレージ・コントローラのＩ／Ｏ負荷を受け取り、ホストとストレージ・ドライブ２０４の間でＩ／Ｏを継続できることを保証することができる。このプロセスは、「フェイルオーバー」と呼ばれることがある。
【００２２】
各ストレージ・コントローラ２２２は、１つまたは複数のプロセッサ２２８およびメモリ２３０をそれぞれ含むことができる。メモリ２３０は、揮発性メモリ（例えば、ＲＡＭ）および不揮発性メモリ（例えば、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリなど）を含むことができる。揮発性メモリおよび不揮発性メモリは、プロセッサ２２８上で実行され、ストレージ・ドライブ２０４内のデータにアクセスするために使用される、ソフトウェア・モジュールを格納することができる。ストレージ・コントローラ２２２は、これらのソフトウェア・モジュールのうちの少なくとも１つのインスタンスをホストすることができる。これらのソフトウェア・モジュールは、ストレージ・ドライブ２０４内の論理ボリュームに対するすべての読み取り要求および書き込み要求を管理することができる。
【００２３】
具体的には、各ストレージ・コントローラ２２２は、各デバイス・アダプタ２２６を介して、ストレージ・ドライブ２０４に通信によって結合される。各デバイス・アダプタ２２６は、ストレージ・ドライブ２１６への入出力（Ｉ／Ｏ：Input/Output）アクセス（本明細書では、データ・アクセス要求またはアクセス要求とも呼ばれる）を管理するように構成される。例えば、デバイス・アダプタ２２６は、ストレージ・ドライブ２１６を論理的に構成し、データを格納するストレージ・ドライブ２１６上の位置を決定する。ストレージ・ドライブ２１６（ディスク・ドライブ・モジュール（ＤＤＭ：disk drive modules）とも呼ばれる）は、異なる性能特性を有するさまざまな種類のドライブのグループを含むことができる。例えば、ストレージ・ドライブ２１６は、（相対的に）遅い「ニアライン」ディスク（例えば、毎分７，２００回転（ＲＰＭ：revolutions per minute）の回転速度）、ＳＡＳディスク・ドライブ（例えば、１０ｋまたは１５ｋＲＰＭ）、および相対的に速い半導体ドライブ（ＳＳＤ：solid state drives）の組み合わせを含むことができる。
【００２４】
デバイス・アダプタ２２６は、スイッチ２２０を介してストレージ・ドライブ２１６に結合される。スイッチ２２０の各々は、光ファイバ接続を介してストレージ・ドライブ２１６をデバイス・アダプタに結合するファイバ・スイッチであることができる。デバイス・アダプタ２２６は、ストレージ・ドライブ２１６をアレイ・サイト２３４に論理的にグループ化する。説明の目的で、ストレージ・ドライブ２１６から成る単一のアレイ・サイト２３４が図２に示されている。しかし、本発明の他の実施形態では、ストレージ・ドライブ２１６から成る２つ以上のアレイ・サイトが含まれ得るということが、理解されるべきである。アレイ・サイト２３４は、新磁気ディスク制御機構（ＲＡＩＤ）アレイ２３４として構成され得る。任意の種類のＲＡＩＤアレイ（例えば、ＲＡＩＤ０、ＲＡＩＤ５、ＲＡＩＤ１０など）が使用され得るということが、理解されるべきである。各ＲＡＩＤアレイは、ランクとも呼ばれる。各ランクは、範囲と呼ばれる、複数の同じサイズのパーティションに分割される。各範囲のサイズは、実装に応じて変化することができる。例えば、各範囲のサイズは、少なくとも部分的に、範囲のストレージ・タイプによって決まることができる。範囲のストレージ・タイプ（例えば、固定長ブロック（ＦＢ：Fixed Block）またはカウント・キー・データ（ＣＫＤ：count keydata））は、ストレージ・サブシステムに結合されたホストの種類（例えば、オープンシステム・ホストまたはメインフレーム・サーバ）によって決まる。その後、これらの範囲は、論理ボリュームを構成するためにグループ化される。
【００２５】
ストレージ・サブシステム２１０は、フルディスク暗号化、不揮発性ストレージ（ＮＶＳ：non-volatile storage）アルゴリズム（例えば、しきい値化、ステージ、デステージ）、ストレージ・プール・ストライピング（範囲の循環）、動的ボリューム拡張、動的データ再配置、インテリジェントな書き込みキャッシング、および適応型マルチストリーム・プリフェッチ（adaptive multi-stream prefetching）などの、ただしこれらに限定されない、さまざまな管理機能を可能にすることができる。図２に示されたアーキテクチャに類似するアーキテクチャを有するストレージ・システム２１０の１つの例は、ＩＢＭ  ＤＳ８０００（ＴＭ）シリーズ・エンタープライズ・ストレージ・システムである。ＤＳ８０００（ＴＭ）は、継続的動作をサポートするように設計されたディスク・ストレージおよび半導体ストレージを提供する、高性能、大容量のストレージ・サブシステムである。それでも、本明細書で開示された本発明の実施形態は、ＩＢＭ  ＤＳ８０００（ＴＭ）シリーズ・エンタープライズ・ストレージ・システムに限定されず、システムに関連付けられた製造業者、製品名、またはコンポーネントもしくはコンポーネント名に関わらず、任意の同等の、または類似するストレージ・システムまたはストレージ・システムのグループにおいて実装され得る。したがって、ＩＢＭ  ＤＳ８０００（ＴＭ）は、単に例として提示されており、限定するよう意図されていない。
【００２６】
さらに、図２に示された本発明の実施形態では、デバイス・アダプタ２２６の各々が、イーサネット（Ｒ）・ポートなどの各ネットワーク・ポート２３２を含んでおり、このポートが、インターネットなどのネットワークを介して、デバイス・アダプタ２２６をクラウド・ストレージ・デバイス２１４に通信によって結合する。図２に示されている例では、各デバイス・アダプタ２２６は、各クラウド・プロビジョニング・モジュール（cloud provisioning module）２３２をさらに含んでおり、クラウド・プロビジョニング・モジュール２３２は、クラウド・ストレージ・デバイス２１４が、ストレージ・コントローラ２２２にはローカルＲＡＩＤアレイまたはローカル・ランクのように見えるように、クラウド・ストレージ・デバイス２１４を仮想ＲＡＩＤアレイに割り当ててグループ化するように構成される。このようにして、ローカル・ランク（ＲＡＩＤアレイ２４３など）に使用できるストレージ・コントローラ２２２の機能が、クラウドのランク２１４にも使用できる。
【００２７】
図３および４に関して下で詳細に説明されているように、クラウド・プロビジョニング・モジュール２３２は、ストレージ・コントローラ・コマンドまたはＩ／Ｏアクセスあるいはその両方と、クラウド・インターフェイス・コマンド（cloud interface commands）またはＩ／Ｏアクセスあるいはその両方との間で変換するように構成される。この例では、クラウド・プロビジョニング・モジュール２３２がデバイス・アダプタ２２６に含まれているが、本発明の他の実施形態では、クラウド・プロビジョニング・モジュール２３２がストレージ・コントローラ２２２に含まれ得るということに、注意するべきである。具体的には、本発明の一部の実施形態では、各ストレージ・コントローラ２２２は、各デバイス・アダプタ２２６へのコマンドの変換を実行する各クラウド・プロビジョニング・モジュールを含む。
【００２８】
したがって、本明細書に記載された本発明の実施形態は、従来のクラウド・ストレージ・システムを超える優位性を可能にする。例えば、従来のクラウド・ストレージ・システムは、通常、リモートのアーカイブ、バックアップ、および取得などの、比較的簡単な機能を可能にする。しかし、そのような従来のシステムは、クラウドに格納されたデータに対して、前述した管理機能（例えば、しきい値化、ステージ、およびデステージなどのＮＶＳアルゴリズム）などの高度な管理機能を実行できない。したがって、下でさらに詳細に説明されるクラウド・プロビジョニング・モジュール２３２を使用することによって、本明細書に記載された実施形態は、クラウド・ストレージ・デバイスに格納されたデータに対する、従来のクラウド・ストレージ・システムに使用できない高度な管理機能の実行を可能にする。具体的には、クラウド・プロビジョニング・モジュール２３２を使用することによって、ストレージ・コントローラ２２２およびデバイス・アダプタ２２６は、仮想ＲＡＩＤアレイが、リモート・ストレージではなく、デバイス・アダプタ２２６に結合されたローカル・ドライブであるかのように、クラウド・ストレージから成る仮想ＲＡＩＤアレイまたはランクにアクセスして利用することができる。このようにして、前述した管理機能などの、ローカル・ドライブに使用できる管理機能と同じ管理機能を、それらの管理機能の実装に関連付けられた基礎になるコードまたはハードウェアあるいはその両方を変更することなく、リモートのクラウド・ストレージに使用することができる。
【００２９】
さらに、ストレージ・サブシステム２１０にはローカル・ストレージのように見える仮想ＲＡＩＤアレイを作成することによって、本明細書に記載された実施形態は、さらにシームレスなシン・プロビジョニングを可能にするという問題に対する解決策を提供する。具体的には、クラウド・プロビジョニング・モジュール２３２は、ストレージ・システム内の１つまたは複数のＲＡＩＤアレイ（例えば、アレイ２３４）の複数のストレージ・デバイス上の空き領域または未使用のストレージ空間の量を監視するように構成される。監視された未使用のストレージ空間の量に基づいて、クラウド・プロビジョニング・モジュール２３２は、１つまたは複数のクラウド・ベースのランクを作成して、ストレージ・システム２００の容量を増やしながら、クラウド・ベースのランク上のデータに対する同じ管理機能を可能にすることができる。加えて、クラウド・ベースのランクの作成および追加は、追加のローカル・ストレージ・アレイを設置して構成することと比較して、サービスの中断を減らす。
【００３０】
図３は、デバイス・アダプタ２２６などのデバイス・アダプタまたはストレージ・コントローラ２２２などのストレージ・コントローラとして実装できる、例示的なコンピューティング・デバイス３００のブロック図である。説明の目的で、コンピューティング・デバイス３００は、本明細書ではデバイス・アダプタに関して説明される。図３に示された例では、デバイス・アダプタ３００は、メモリ３２５、ストレージ３３５、相互接続（例えば、バス）３４０、１つまたは複数のプロセッサ３０５（本明細書ではＣＰＵ３０５ともに呼ばれる）、Ｉ／Ｏデバイス・インターフェイス３５０、およびネットワーク・アダプタまたはポート３１５を含んでいる。
【００３１】
各ＣＰＵ３０５は、メモリ３２５またはストレージ３３５あるいはその両方に格納されたプログラミング命令を取得して実行する。相互接続３４０は、プログラミング命令などのデータを、ＣＰＵ３０５、Ｉ／Ｏデバイス・インターフェイス３５０、ストレージ３３５、ネットワーク・アダプタ３１５、およびメモリ３２５の間で移動するために使用される。相互接続３４０は、１つまたは複数のバスを使用して実装され得る。本発明のさまざまな実施形態では、ＣＰＵ３０５は、単一のＣＰＵ、複数のＣＰＵ、または複数のプロセッシング・コアを含んでいる単一のＣＰＵであることができる。本発明の一部の実施形態では、プロセッサ３０５は、デジタル信号プロセッサ（ＤＳＰ：digital signal processor）であることができる。メモリ３２５は、一般に、ランダム・アクセス・メモリ（例えば、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：static random access memory）、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ：dynamic random access memory）、またはフラッシュ）を表すために含められている。ストレージ３３５は、一般に、ハード・ディスク・ドライブ、半導体デバイス（ＳＳＤ：solid state device）、取り外し可能メモリ・カード、光ストレージ、またはフラッシュ・メモリ・デバイスなどの、不揮発性メモリを表すために含められている。
【００３２】
本発明の一部の実施形態では、メモリ３２５は、クラウド・プロビジョニング命令３０１を格納し、ストレージ３３５は、マップ・テーブル３０７を格納する。しかし、本発明のさまざまな実施形態では、クラウド・プロビジョニング命令３０１およびマップ・テーブル３０７が、部分的にメモリ３２５に格納され、かつ部分的にストレージ３３５に格納されるか、あるいは全体的にメモリ３２５に格納されるか、または全体的にストレージ３３５に格納される。
【００３３】
クラウド・プロビジョニング命令３０１は、ＣＰＵ３０５によって実行された場合、ＣＰＵ３０５に、マップ・テーブル３０７を利用して、図２に関して前述されたクラウド・プロビジョニング・モジュールを実装させる。クラウド・プロビジョニング命令３０１およびマップ・テーブル３０７は、デバイス・アダプタ３００に格納され、デバイス・アダプタ３００によって実行／利用されるように示されているが、他の実施形態では、クラウド・プロビジョニング命令３０１およびマップ・テーブル３０７が、図２に示されているストレージ・コントローラ２２２ａまたはストレージ・コントローラ２２２ｂあるいはその両方などのストレージ・コントローラに格納され、それらのストレージ・コントローラよって実行／利用され得るということに、注意するべきである。クラウド・プロビジョニング命令３０１は、ＣＰＵ３０５に、図２に示されたクラウド・ストレージ・デバイス２１４などの、クラウド・ストレージ・デバイス上の空間を割り当てさせる。この空間は、静的に割り当てられるか、または必要性が生じたときに要求に応じて割り当てられ得る。例えば、この空間は、先験的に、または実行時に割り当てられ得る。さらに、クラウド・ストレージのランクは、異なるストレージ容量で作成され得る。
【００３４】
クラウド・プロビジョニング命令３０１は、ＣＰＵ３０５に、割り当てられたストレージを１つまたは複数の仮想ランクにグループ化することと、クラウド・ストレージ・デバイスと１つまたは複数の仮想ランクとの間のマッピングをマップ・テーブル３０７に格納することとをさらに実行させる。具体的には、クラウド・プロビジョニング命令３０１は、ＣＰＵ３０５にマップ・テーブル３０７を生成させ、マップ・テーブル３０７は、割り当てられたストレージ空間を対応する仮想ローカル・アドレスにマッピングし、仮想ローカル・アドレスをグループ化して１つまたは複数の仮想ローカル・ランクまたはＲＡＩＤアレイを作成する。このようにして、クラウド・ストレージの仮想ランクは、Ｉ／Ｏデバイス・インターフェイス３５０を介してデバイス・アダプタ３００に通信によって結合されたストレージ・コントローラに直接取り付けられたローカル・ランクのように見える。また、Ｉ／Ｏデバイス・インターフェイス３５０は、デバイス・アダプタ３００を、半導体ドライブおよびニアライン・ドライブ（例えば、前述されたストレージ・ドライブ２１６）などの、ストレージ・デバイスのローカル・ランクに、通信によって結合する。例えば、Ｉ／Ｏデバイス・インターフェイス３５０は、光ファイバ・ポートを含むことができる。本明細書において使用されるとき、ローカル・ランクは、インターネットなどの広域ネットワークが介在せずに、デバイス・アダプタ３００に直接接続されたストレージ・デバイスから成るランクまたはＲＡＩＤアレイである。
【００３５】
Ｉ／Ｏアクセス（例えば、読み取り要求または書き込み要求）が受信されたときに、クラウド変換命令３０１が、ＣＰＵ３０５に、要求がクラウド・ストレージの仮想ランクに格納されたデータに向けられているかどうかを判定させる。要求がクラウド・ストレージの仮想ランクに格納されたデータに向けられている場合、クラウド・プロビジョニング命令３０１が、クラウド・インターフェイスを介してクラウド・ストレージ・デバイスに送信するために、Ｉ／Ｏアクセス（本明細書では、データ・アクセス要求またはアクセス要求とも呼ばれる）を変換する。例えば、クラウド・プロビジョニング命令３０１は、クラウド・ストレージ・デバイスにアクセスするためにクラウド・インターフェイスによって使用されるコマンド、書式、デバイスのアドレスなどを使用して、Ｉ／Ｏアクセスを変換できる。本明細書において使用されるとき、Ｉ／Ｏアクセス、読み取り／書き込みアクセス、およびデータ・アクセスという用語は、交換可能なように使用され得る。クラウド・インターフェイスの例としては、ＩＢＭ（Ｒ）Ｃｌｏｕｄ  Ｍａｎａｇｅｒまたはｔｈｅ  Ａｍａｚｏｎ（Ｒ）Ｓｉｍｐｌｅ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｉｃｅ（Ａｍａｚｏｎ  Ｓ３）インターフェイスが挙げられるが、これらに限定されない。したがって、前述したように、クラウド・プロビジョニング命令３０１は、他のローカル・ストレージ・デバイスと同様に、クラウド・ストレージをストレージ・コントローラで透過的に使用できるようにする。
【００３６】
加えて、前述したように、クラウド・プロビジョニング命令３０１は、さらにシームレスなシン・プロビジョニングを可能にするために、ＣＰＵ３０５に、必要に応じて１つまたは複数のクラウド・ベースのランクを作成することによって、ストレージ容量を動的に増やすことを実行させる。すなわち、コンピューティング・デバイス３００に関連付けられたストレージ・システムは、論理ストレージ空間より少ないローカル物理ストレージ空間を使用してプロビジョニングすることができ、前述したように、ローカル・ランクのように見えるクラウド・ベースのランクを使用することによって、追加の物理ストレージ空間が追加され得る。例えば、図４に関してさらに詳細に説明されるように、クラウド・プロビジョニング命令３０１は、ＣＰＵ３０５に、クラウド・ベースのランクを使用するシン・プロビジョニングの方法を実行させるように、構成され得る。
【００３７】
加えて、クラウド・プロビジョニング命令３０３は、本発明の一部の実施形態では、ＣＰＵ３０５に、サービス・レベルをクラウド・ベースのランクに割り当てさせるように、構成される。本発明の一部のそのような実施形態では、３つのレベルのサービスが存在する。しかし、複数のレベルのサービスを提供する本発明の他の実施形態では、２つまたは４つ以上のレベルのサービスが提供され得る。この例では、３つのレベルのサービスが利用され、サービスのレベルの選択は、ミラーリングされているデータの圧縮率、仮想ローカル・ランクの各入出力データ速度、およびサービス・レベル・アグリーメントに基づく。例えば、サービス・レベル・アグリーメントが低品質のサービスを示しており、仮想ローカル・ランクのＩ／Ｏデータ速度がしきい値を下回っており、アクセスされているデータが圧縮可能である場合、第１のレベルのサービスが選択される。低品質のサービスは、サービスの事前に定義されたしきい値レベルを下回る、任意の品質のサービスであることができる。第１のレベルのサービスは、この例の３つの選択肢のうちの最低レベルのサービスである。例えば、第１のレベルのサービスは、他の２つのレベルのサービスより大きい待ち時間および小さいスループットを含むことができる。サービス・レベル・アグリーメントが低品質のサービスを示しており、仮想ローカル・ランクのＩ／Ｏデータ速度がしきい値を下回っており、データが圧縮不可能である場合、第２のレベルのサービスが選択される。第２のレベルのサービスは、第１のレベルのサービスより大きいスループットまたはより小さい待ち時間あるいはその両方を含む。最後または第３のレベルのサービスは、他のすべてのデータに使用される（例えば、ＳＬＡが、事前に定義されたしきい値を超えるサービスのレベルを示しているか、またはＩ／Ｏデータ速度がしきい値を超えているか、あるいはその両方である）。第３のレベルのサービスは、第１および第２の両方のレベルのサービスより大きいスループットまたはより小さい待ち時間あるいはその両方を含む。
【００３８】
異なるレベルのサービスを提供することによって、デバイス・アダプタ３２６は、クラウド・ストレージの仮想ランクを活用して、クラウド・ストレージおよびアクセスに対する顧客の必要性を満たすことにおいて、より大きい柔軟性を提供することができる。例示的な第１、第２、および第３のレベルが、待ち時間およびスループットにおいて異なっていると説明されているが、サービスのレベルを区別するために他の要因が使用され得るということに、注意するべきである。例えば、本発明の一部の実施形態では、３つのレベルのサービスは、同じ待ち時間およびスループットを有しているが、費用および冗長性のレベルにおいて異なる。
【００３９】
図４は、クラウド・ベースのランクを使用するシン・プロビジョニングの方法４００を示すフローチャートである。方法４００は、デバイス・アダプタ２２６などのデバイス・アダプタまたはストレージ・コントローラ２２２などのストレージ・コントローラによって実施され得る。例えば、方法４００は、クラウド・プロビジョニング命令３０１などの命令を実行する、コンピューティング・デバイス３００内のＣＰＵ３０５などのＣＰＵによって、実施され得る。例示的な方法４００における動作の順序が、例示の目的で提供されているということ、および本発明の他の実施形態では、この方法が異なる順序で実行され得るということが、理解されるべきである。同様に、本発明の他の実施形態では、一部の動作が省略されるか、または追加の動作が含まれ得るということが、理解されるべきである。
【００４０】
ブロック４０２で、ストレージ・コントローラに関連付けられた複数のローカル・ランクのすべてに関して、未使用の物理ストレージ空間の総量が決定される。この量は、合計ストレージ容量と、使用されているストレージ空間の総量との間の差として決定され得る。
【００４１】
ブロック４０４で、未使用の物理ストレージ空間の総量が、第１のしきい値と比較される。一部の実施形態では、第１のしきい値は、事前に決定されるか、または先験的に設定される。例えば、本発明の一部の実施形態では、第１のしきい値は、合計ストレージ容量のパーセンテージ（例えば、５０％、７０％など）として設定され得る。本発明の他の実施形態では、第１のしきい値は、特定のストレージ量（例えば、１０ギガバイト（ＧＢ）、１００ＧＢなど）として設定され得る。
【００４２】
ブロック４０６で、この比較に基づいて、未使用の物理ストレージの総量が第１のしきい値未満であるかどうかが判定される。未使用の物理ストレージ空間の総量が第１のしきい値未満である場合、ブロック４０８で、１つまたは複数のクラウド・ベースのランクが作成される。各クラウド・ベースのランクは、１つまたは複数のクラウド・ストレージ・デバイス上のストレージ空間を含む。１つまたは複数のクラウド・ストレージ・デバイス上のストレージ空間は、前述したように、仮想ローカル・ランクとしてグループ化された対応する仮想ローカル・アドレスにマッピングされる。さらに、本明細書において使用されるとき、クラウド・ストレージ・デバイスは、ローカル・エリア・ネットワークまたは直接通信リンクとは対照的に、インターネットなどの広域ネットワークを介してアクセスされるストレージ・デバイスである。
【００４３】
１つまたは複数の新しいクラウド・ベースのランクを作成することは、クラウド・インターフェイスを介して、１つまたは複数の対応するクラウド・ストレージ・デバイス上のストレージ空間を割り当てることを含む。クラウド・インターフェイスは、クラウド・ストレージ・デバイスへのアクセスを可能にするように構成されたインターフェイスである。例えば、クラウド・インターフェイスは、アプリケーション・プログラミング・インターフェイス（ＡＰＩ：application programming interface）として実装され得る。上では、例示的なクラウド・インターフェイスが説明された。クラウド・ストレージを割り当てることは、クラウド・インターフェイスを介して、指定された量のストレージを要求することを含むことができる。
【００４４】
新しいクラウド・ベースのランクを作成することは、割り当てられたストレージ空間を対応する仮想ローカル・アドレスにマッピングすることをさらに含む。例えば、本発明の一部の実施形態では、デバイス・アダプタまたはストレージ・コントローラは、割り当てられたストレージ空間を対応する仮想ローカル・アドレスに割り当てる。本明細書において使用されるとき、仮想ローカル・アドレスは、ローカル接続を介してデバイス・アダプタに結合されたストレージ・デバイスのアドレスのように見えるメモリ・アドレスである。ローカル接続とは、インターネットなどの広域ネットワークまたはリモート・ネットワークを経由しない接続のことを指す。
【００４５】
新しいクラウド・ベースのランクを作成することは、仮想ローカル・アドレスを仮想ローカル・ランクとしてグループ化することをさらに含む。例えば、デバイス・アダプタまたはストレージ・コントローラは、ストレージ・デバイスのローカルＲＡＩＤアレイとしてデバイス・アダプタに直接接続されているように見えるように、仮想ローカル・アドレスをグループ化または配置するように構成される。
【００４６】
ブロック４１０で、データが新しいクラウド・ベースのランクに書き込まれる。本発明の一部の実施形態では、データを新しいクラウド・ベースのランクに書き込むことは、アクセス要求を、１つまたは複数のクラウド・ベースのランクの１つまたは複数のクラウド・ストレージ・デバイスに対応するアプリケーション・プログラミング・インターフェイス（ＡＰＩ）用に構成されたクラウド・データ・アクセス要求に変換することと、このクラウド・データ・アクセス要求を、クラウド・インターフェイスを介して１つまたは複数の対応するクラウド・ストレージ・デバイスに伝達することとを含むことができる。
【００４７】
さらに、本発明の一部の実施形態では、データを新しいクラウド・ベースのランクに書き込むことは、クラウド・ベースのランクを作成する前に、複数のローカル・ランクに格納されたデータを新しいクラウド・ベースのランクに移動することを含む。さまざまなアルゴリズムを使用して、クラウド・ベースのランクに移動するデータを決定することができる。例えば、本発明の一部の実施形態では、アクセス頻度の低いデータが移動され、一方、アクセス頻度の高いデータがローカル・ランク上に維持される。そのような一部の実施形態では、１つまたは複数のクラウド・ベースのランクを作成した後に書き込まれた新しいデータが、複数のローカル・ランクに書き込まれる。
【００４８】
本発明の一部の実施形態では、データを新しいクラウド・ベースのランクに書き込むことは、クラウド・ベースのランクを作成した後に書き込まれた新しいデータを、新しいクラウド・ベースのランクに格納することを含む。したがって、本発明のそのような一部の実施形態では、新しいデータをローカル・ランクに書き込むのではなく、新しいデータがクラウド・ベースのランクに書き込まれる。したがって、本発明のそのような一部の実施形態では、ローカル・ランクに格納されたデータを、クラウド・ベースのランクに移動する必要はない。
【００４９】
ブロック４１２で、クラウド・ベースのランクの作成後の複数のローカル・ランク上の空き領域の総量が第２のしきい値を上回っているかどうかが判定される。本発明の一部の実施形態では、第２のしきい値は事前に決定される。さらに、本発明の一部の実施形態では、第２のしきい値は第１のしきい値と同じである。すなわち、本発明の一部の実施形態では、第２および第１のしきい値は同じ値に設定される。本発明の他の実施形態では、第１および第２のしきい値は、それぞれ異なる値に設定される。具体的には、本発明の一部の実施形態では、第２のしきい値は、第１のしきい値より多いローカル・ランク上の空き領域または未使用の空間に対応する。例えば、本発明の一部の実施形態では、第１のしきい値は、７５％の使用済みの物理ストレージ空間／２５％の未使用の物理ストレージ空間に対応するように設定することができ、一方、第２のしきい値は、５０％の使用済みの物理ストレージ空間／５０％の未使用の物理ストレージ空間に対応するように設定される。このようにして、ストレージ・コントローラまたはデバイス・アダプタは、使用済みのデータが第１のしきい値の前後で推移する場合に、クラウド・ベースのランクを使用する前と後を行き来するのを防ぐことができる。
【００５０】
さらに、ブロック４１２で決定される空き領域の総量とは、クラウド・ベースのランクが使用されない場合に使用可能な空き領域の総量のことを指す。例えば、空き領域の総量は、ローカル・ランク上の未使用の空間から、クラウド・ベースのランク上で使用されている空間の量を引くことによって決定され得る。同様に、空き領域の総量は、ブロック４１２で、複数のローカル・ランクおよびクラウド・ベースのランクに関する使用済みのストレージ空間の総量を決定し、次に、ローカル・ランクの総容量（すなわち、ローカル・ランクのストレージ空間の総量）と、ローカル・ランクおよびクラウド・ベースのランクに関する使用済みのストレージ空間の総量との間の差を求めることによって、決定され得る。
【００５１】
クラウド・ベースのランクの作成後の未使用の空間または空き領域の量は、データが削除されるにつれて、増えることができる。例えば、多くの場合、クリーンアップ・ジョブが実行されて不要なデータが削除されるまで、時間と共にデータが作成され、増加する。この削除は、ユーザによる手動の削除であることができる。この削除は、前述した機能などの、ローカル・ランクとクラウド・ベースのランクの両方で使用可能な、ストレージ・システムの高度な管理機能の一部の機能であってもよい。不要なデータが削除されたときに、ストレージ空間が使用可能になるか、または解放される。
【００５２】
ブロック４１２で、ローカル・ランク上の合計空き領域が第２のしきい値を上回るということが決定された場合、ブロック４１４で、データがクラウド・ベースのランクからローカル・ランクに移動される。ブロック４１４で、すべてのデータがクラウド・ベースのランクからローカル・ランクに再び移動される場合、ブロック４１６で、クラウド・ベースのランクが任意選択的に除去または削除され得る。クラウド・ベースのランクを削除することは、ストレージ空間の割り当てを解除することと、マップ・テーブル内の対応するエントリを削除することとを含む。このようにして、ストレージ空間が必要になったときに、クラウド・ベースのランクが動的に作成および削除され得る。
【００５３】
前述したように、例示的な方法４００における動作の順序は、例示の目的で提供されており、本発明の他の実施形態では、方法４００を異なる順序で実行することができ、または一部の動作を省略することができ、もしくは追加の動作を含めることができ、あるいはこれらの組み合わせが可能である。同様に、本発明の他の実施形態では、一部の動作が省略されるか、または追加の動作が含まれ得るということが、理解されるべきである。例えば、本発明の一部の実施形態では、ブロック４１６が省略される。本発明のそのような実施形態では、ローカルＲＡＩＤアレイのうちの１つまたは複数へのデータの再配置後に、クラウド・ベースのランクのうちの１つまたは複数にデータが残っていない場合でも、クラウド・ベースのランクが削除されない。さらに、前述した動作が順次に実行される必要はないということが、理解されるべきである。
【００５４】
本発明の実施形態は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の実施形態の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読記憶媒体を含んでよい。
【００５５】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー（Ｒ）・ディスク、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）、読み取り専用メモリ（ＲＯＭ：read-only memory）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasable programmable read-only memoryまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：compact disc read-only memory）、デジタル多用途ディスク（ＤＶＤ：digital versatile disk）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【００５６】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス／処理デバイスへ、またはネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ）を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス／処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【００５７】
本発明の実施形態の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ：instruction-set-architecture）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）または広域ネットワーク（ＷＡＮ：wide area network）を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行われてよい。本発明の一部の実施形態では、本発明の実施形態の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ：field-programmable gate arrays）、またはプログラマブル・ロジック・アレイ（ＰＬＡ：programmable logic arrays）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【００５８】
本発明の実施形態の態様は、本明細書において、本発明の実施形態に記載された方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【００５９】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【００６０】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
【００６１】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された２つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
実施例
【００６２】
実施例１は、クラウド・ベースのランクを使用するシン・プロビジョニングのためのコンピュータ実装方法を含む。この方法は、ストレージ・コントローラに関連付けられた複数のローカル・ランクのすべてに関する未使用の物理ストレージ空間の総量を決定することと、未使用の物理ストレージ空間の総量を第１のしきい値と比較することと、未使用の物理ストレージ空間の総量が第１のしきい値未満であるということの決定に応答して、１つまたは複数のクラウド・ベースのランクを作成することとを含む。１つまたは複数のクラウド・ベースのランクの各々を作成することは、クラウド・インターフェイスを介して１つまたは複数の対応するクラウド・ストレージ・デバイス上のストレージ空間を割り当てることと、割り当てられたストレージ空間を対応する仮想ローカル・アドレスにマッピングすることと、ストレージ・コントローラに関連付けられた仮想ローカル・ランクとして仮想ローカル・アドレスをグループ化することとを含む。
【００６３】
実施例２は、実施例１の方法を含み、１つまたは複数のクラウド・ベースのランクの作成後に書き込まれた新しいデータを１つまたは複数のクラウド・ベースのランクに格納することをさらに含む。
【００６４】
実施例３は、実施例１〜２のいずれかの方法を含み、１つまたは複数のクラウド・ベースのランクを作成する前に、複数のローカル・ランクに格納されたデータを１つまたは複数のクラウド・ベースのランクに移動することと、１つまたは複数のクラウド・ベースのランクの作成後に書き込まれた新しいデータを複数のローカル・ランクに格納することとをさらに含む。
【００６５】
実施例４は、実施例１〜３のいずれかの方法を含み、クラウド・ベースのランクのうちの１つに対するローカル・データ・アクセス要求を、クラウド・インターフェイス用に構成されたクラウド・データ・アクセス要求に変換することと、このクラウド・データ・アクセス要求を、クラウド・インターフェイスを介して１つまたは複数の対応するクラウド・ストレージ・デバイスに伝達することとをさらに含む。
【００６６】
実施例５は、実施例１〜４のいずれかの方法を含み、複数のローカル・ランクおよび１つまたは複数のクラウド・ベースのランクに関する使用済みのストレージ空間の総量を決定することと、複数のローカル・ランクのストレージ空間の総量と、使用済みのストレージ空間の決定された総量との間の差を決定することと、この差が第２のしきい値を上回るということの決定に応答して、データを１つまたは複数のクラウド・ベースのランクから複数のローカル・ランクに移動することとをさらに含む。
【００６７】
実施例６は、実施例５の方法を含み、第１のしきい値が第２のしきい値と異なっている。
【００６８】
実施例７は、実施例５〜６のいずれかの方法を含み、１つまたは複数のクラウド・ベースのランクから複数のローカル・ランクへのすべてのデータの移動後に、１つまたは複数のクラウド・ベースのランクを除去することをさらに含む。
【００６９】
実施例８は、ストレージ・システムを含む。ストレージ・システムは、ホスト・アダプタを１つまたは複数のホスト・デバイスに通信によって結合するように構成された１つまたは複数のポートを含んでいるホスト・アダプタと、プロセッサおよびメモリを備えているストレージ・コントローラであって、ホスト・アダプタに通信によって結合されている、ストレージ・コントローラと、プロセッサおよびメモリを備えているデバイス・アダプタであって、ストレージ・コントローラに通信によって結合されている、デバイス・アダプタとを備える。デバイス・アダプタは、複数のローカル・ストレージ・ドライブに通信によって結合された複数のポートと、ネットワークを介して複数のクラウド・ストレージ・デバイスに通信によって結合された少なくとも１つのネットワーク・ポートとをさらに含む。デバイス・アダプタおよびストレージ・コントローラのうちの１つが、クラウド・プロビジョニング・モジュールを実装するようにさらに構成される。クラウド・プロビジョニング・モジュールは、複数のローカル・ストレージ・ドライブ上の未使用の物理ストレージ空間の総量が第１の既定のしきい値未満であるということの決定に応答して、１つまたは複数のクラウド・ベースのランクを作成するように構成される。１つまたは複数のクラウド・ベースのランクの各々を作成するために、クラウド・プロビジョニング・モジュールは、クラウド・インターフェイスを介して１つまたは複数の対応するクラウド・ストレージ・デバイス上のストレージ空間を割り当てることと、割り当てられたストレージ空間を対応する仮想ローカル・アドレスに割り当てることと、割り当てられた仮想ローカル・アドレスを、ストレージ・コントローラに関連付けられた対応する仮想ローカルＲＡＩＤアレイに構成することとを実行するように構成される。
【００７０】
実施例９は、実施例８のストレージ・システムを含み、クラウド・プロビジョニング・モジュールが、１つまたは複数のクラウド・ベースのランクの作成後に書き込まれた新しいデータを１つまたは複数のクラウド・ベースのランクに格納するようにさらに構成される。
【００７１】
実施例１０は、実施例８〜９のいずれかのストレージ・システムを含み、クラウド・プロビジョニング・モジュールが、１つまたは複数のクラウド・ベースのランクを作成する前に、複数のローカル・ストレージ・ドライブに格納されたデータを１つまたは複数のクラウド・ベースのランクに移動することと、１つまたは複数のクラウド・ベースのランクの作成後に書き込まれた新しいデータを複数のローカル・ストレージ・ドライブに格納することとを実行するようにさらに構成される。
【００７２】
実施例１１は、実施例８〜１０のいずれかのストレージ・システムを含み、クラウド・プロビジョニング・モジュールが、クラウド・ベースのランクのうちの１つに対するローカル・データ・アクセス要求を、クラウド・インターフェイス用に構成されたクラウド・データ・アクセス要求に変換することと、このクラウド・データ・アクセス要求を、クラウド・インターフェイスを介して１つまたは複数の対応するクラウド・ストレージ・デバイスに伝達することとを実行するようにさらに構成される。
【００７３】
実施例１２は、実施例８〜１１のいずれかのストレージ・システムを含み、クラウド・プロビジョニング・モジュールが、複数のローカル・ストレージ・ドライブおよび１つまたは複数のクラウド・ベースのランクに関する使用済みのストレージ空間の総量を決定することと、複数のローカル・ストレージ・ドライブのストレージ空間の総量と、使用済みのストレージ空間の決定された総量との間の差を決定することと、この差が第２の既定のしきい値を上回るということの決定に応答して、データを１つまたは複数のクラウド・ベースのランクから複数のローカル・ストレージ・ドライブに移動することとを実行するようにさらに構成される。
【００７４】
実施例１３は、実施例１２のストレージ・システムを含み、第１の既定のしきい値が第２の既定のしきい値と異なっている。
【００７５】
実施例１４は、実施例１２〜１３のいずれかのストレージ・システムを含み、クラウド・プロビジョニング・モジュールが、１つまたは複数のクラウド・ベースのランクから複数のローカル・ストレージ・ドライブへのすべてのデータの移動後に、１つまたは複数のクラウド・ベースのランクを除去するようにさらに構成される。
【００７６】
実施例１５は、コンピュータ可読プログラムが格納されているコンピュータ可読記憶媒体を備えているコンピュータ・プログラム製品を含む。コンピュータ可読プログラムは、プロセッサによって実行された場合に、プロセッサに、ストレージ・コントローラに関連付けられた複数のローカル新磁気ディスク制御機構（ＲＡＩＤ）アレイのすべてに関する未使用の物理ストレージ空間の総量を決定することと、未使用の物理ストレージ空間の総量を第１の既定のしきい値と比較することと、未使用の物理ストレージ空間の総量が第１の既定のしきい値未満であるということの決定に応答して、１つまたは複数のクラウド・ベースのランクを作成することとを実行させる。１つまたは複数のクラウド・ベースのランクの各々を作成するために、コンピュータ可読プログラムは、プロセッサに、クラウド・インターフェイスを介して１つまたは複数の対応するクラウド・ストレージ・デバイス上のストレージ空間を割り当てることと、割り当てられたストレージ空間を対応する仮想ローカル・アドレスに割り当てることと、割り当てられた仮想ローカル・アドレスを、ストレージ・コントローラに関連付けられた対応する仮想ローカルＲＡＩＤアレイに構成することとを実行させるように構成される。
【００７７】
実施例１６は、実施例１５のコンピュータ・プログラム製品を含み、コンピュータ可読プログラムが、プロセッサに、１つまたは複数のクラウド・ベースのランクの作成後に書き込まれた新しいデータを１つまたは複数のクラウド・ベースのランクに格納させるようにさらに構成される。
【００７８】
実施例１７は、実施例１５〜１６のいずれかのコンピュータ・プログラム製品を含み、コンピュータ可読プログラムが、プロセッサに、１つまたは複数のクラウド・ベースのランクを作成する前に、複数のローカルＲＡＩＤアレイに格納されたデータを１つまたは複数のクラウド・ベースのランクに移動することと、１つまたは複数のクラウド・ベースのランクの作成後に書き込まれた新しいデータを複数のローカルＲＡＩＤアレイに格納することとを実行させるようにさらに構成される。
【００７９】
実施例１８は、実施例１５〜１７のいずれかのコンピュータ・プログラム製品を含み、コンピュータ可読プログラムが、プロセッサに、複数のローカルＲＡＩＤアレイおよび１つまたは複数のクラウド・ベースのランクに関する使用済みのストレージ空間の総量を決定することと、複数のローカルＲＡＩＤアレイのストレージ空間の総量と、使用済みのストレージ空間の決定された総量との間の差を決定することと、この差が第２の既定のしきい値を上回るということの決定に応答して、データを１つまたは複数のクラウド・ベースのランクから複数のローカルＲＡＩＤアレイに移動することとを実行させるようにさらに構成される。
【００８０】
実施例１９は、実施例１８のコンピュータ・プログラム製品を含み、コンピュータ可読プログラムが、プロセッサに、１つまたは複数のクラウド・ベースのランクから複数のローカルＲＡＩＤアレイへのすべてのデータの移動後に、１つまたは複数のクラウド・ベースのランクを除去させるようにさらに構成される。
【００８１】
実施例２０は、実施例１５〜１９のいずれかのコンピュータ・プログラム製品を含み、コンピュータ可読プログラムが、プロセッサに、クラウド・インターフェイスのアプリケーション・プログラミング・インターフェイス（ＡＰＩ）の要件に従って、１つまたは複数の仮想ローカルＲＡＩＤアレイに対するローカル・データ・アクセス要求をクラウド・データ・アクセス要求に変換させるようにさらに構成される。
【００８２】
実施例２１は、コンピューティング・デバイスを含む。コンピューティング・デバイスは、ネットワークを介してコンピューティング・デバイスを１つまたは複数のクラウド・ストレージ・デバイスに通信によって結合するように構成されたネットワーク・アダプタと、データを格納するように構成されたストレージ媒体と、ネットワーク・アダプタおよびストレージ媒体に通信によって結合されたプロセッサとを備える。プロセッサは、複数のローカル・ランクのすべてに関する未使用の物理ストレージ空間の総量を決定することと、未使用の物理ストレージ空間の総量を第１のしきい値と比較することと、未使用の物理ストレージ空間の総量が第１のしきい値未満であるということの決定に応答して、１つまたは複数のクラウド・ベースのランクを作成することとを実行するように構成される。１つまたは複数のクラウド・ベースのランクの各々を作成するために、プロセッサは、１つまたは複数のクラウド・ストレージ・デバイスに関連付けられたアプリケーション・プログラミング・インターフェイス（ＡＰＩ）を介して１つまたは複数のクラウド・ストレージ・デバイス上のストレージ空間を割り当てることと、割り当てられたストレージ空間を対応する仮想ローカル・アドレスにマッピングし、仮想ローカル・アドレスをグループ化して、１つまたは複数のクラウド・ストレージ・デバイス上の割り当てられたストレージ空間から対応する仮想ローカル・ランクを形成する、マップ・テーブルを生成することであって、このマップ・テーブルがストレージ媒体に格納される、生成することとを実行するように構成される。
【００８３】
実施例２２は、実施例２１のコンピューティング・デバイスを含み、プロセッサが、１つまたは複数のクラウド・ベースのランクを作成する前に、複数のローカル・ランクに格納されたデータを１つまたは複数のクラウド・ベースのランクに移動することと、１つまたは複数のクラウド・ベースのランクの作成後に書き込まれた新しいデータを複数のローカル・ランクに格納することとを実行するようにさらに構成される。
【００８４】
実施例２３は、実施例２１〜２２のいずれかのコンピューティング・デバイスを含み、プロセッサが、１つまたは複数のクラウド・ベースのランクの作成後の複数のローカル・ランクに関する未使用のストレージ空間のその後の総量を決定することと、１つまたは複数のクラウド・ベースのランク上の未使用のストレージ空間のその後の総量と、使用済みのストレージ空間の総量との間の差を決定することと、この差が第２のしきい値を上回るということの決定に応答して、データを１つまたは複数のクラウド・ベースのランクから複数のローカル・ランクに移動することとを実行するようにさらに構成される。
【００８５】
実施例２４は、実施例２３のコンピューティング・デバイスを含み、第１のしきい値が第２のしきい値と異なっている。
【００８６】
実施例２５は、実施例２３〜２４のいずれかのコンピューティング・デバイスを含み、プロセッサが、１つまたは複数のクラウド・ベースのランクから複数のローカル・ランクへのすべてのデータの移動後に、１つまたは複数のクラウド・ベースのランクを除去するようにさらに構成される。
【００８７】
本明細書では、本発明の特定の実施形態が示され、説明されたが、同じ目的を達成するように計算された任意の配置が、示された本発明の特定の実施形態の代わりに使用されてよいということが、当業者によって理解されるであろう。したがって、本発明が特許請求の範囲およびそれと同等のもののみによって制限されるということが、明白に意図される。
【図１】
2020533689.tif 000003
【図２】
2020533689.tif 000004
【図３】
2020533689.tif 000005
【図４】
2020533689.tif 000006
【国際調査報告】
2020533689.tif 000007
2020533689.tif 000008