(57)【要約】【課題】クラウド・ベースのランクを使用するデータの動的再配置を提供する。【解決手段】クラウド・ベースのランクを使用するデータの動的再配置のための例示的な方法は、エンタープライズ・ストレージ・システムの複数のローカル・ランクに格納されたデータへのアクセスを監視することと、監視されたアクセスに基づいて、既定の時間の間アクセスされていないデータを識別することと、既定の時間の間アクセスされていないデータをエンタープライズ・ストレージ・システムの１つまたは複数のクラウド・ベースのランクに移動することとを含み、各クラウド・ベースのランクが、１つまたは複数のクラウド・ストレージ・デバイス上のストレージ空間を含み、１つまたは複数のクラウド・ストレージ・デバイス上のストレージ空間が、仮想ローカル・ランクとしてグループ化された対応する仮想ローカル・アドレスにマッピングされる。【選択図】図２
2020533694.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 key data））は、ストレージ・サブシステムに結合されたホストの種類（例えば、オープンシステム・ホストまたはメインフレーム・サーバ）によって決まる。その後、これらの範囲は、論理ボリュームを構成するためにグループ化される。
【００２５】
ストレージ・サブシステム２１０は、フルディスク暗号化、不揮発性ストレージ（ＮＶＳ：non-volatile storage）アルゴリズム（例えば、しきい値化、ステージ、デステージ）、ストレージ・プール・ストライピング（範囲の循環）、動的ボリューム拡張、動的データ再配置、インテリジェントな書き込みキャッシング、および適応型マルチストリーム・プリフェッチ（adaptive multi-stream prefetching）などの、ただしこれらに限定されない、さまざまな管理機能を可能にすることができる。図２に示されたアーキテクチャに類似するアーキテクチャを有するストレージ・システム２１０の１つの例は、ＩＢＭ  ＤＳ８０００（ＴＭ）シリーズ・エンタープライズ・ストレージ・システムである。ＤＳ８０００（ＴＭ）は、継続的動作をサポートするように設計されたディスク・ストレージおよび半導体ストレージを提供する、高性能、大容量のストレージ・サブシステムである。それでも、本明細書で開示された本発明の実施形態は、ＩＢＭ  ＤＳ８０００（ＴＭ）シリーズ・エンタープライズ・ストレージ・システムに限定されず、システムに関連付けられた製造業者、製品名、またはコンポーネントもしくはコンポーネント名に関わらず、任意の同等の、または類似するストレージ・システムまたはストレージ・システムのグループにおいて実装され得る。したがって、ＩＢＭ  ＤＳ８０００（ＴＭ）は、単に例として提示されており、限定するよう意図されていない。
【００２６】
さらに、図２に示された本発明の実施形態では、デバイス・アダプタ２２６の各々が、イーサネット（Ｒ）・ポートなどの各ネットワーク・ポート２３２を含んでおり、このポートが、インターネットなどのネットワークを介して、デバイス・アダプタ２２６をクラウド・ストレージ・デバイス２１４に通信によって結合する。図２に示されている例では、各デバイス・アダプタ２２６は、各再配置モジュール２３２をさらに含んでおり、再配置モジュール２３２は、クラウド・ストレージ・デバイス２１４が、ストレージ・コントローラ２２２にはローカルＲＡＩＤアレイまたはローカル・ランクのように見えるように、クラウド・ストレージ・デバイス２１４を仮想ＲＡＩＤアレイに割り当ててグループ化するように構成される。このようにして、ローカル・ランク（ＲＡＩＤアレイ２４３など）に使用できるストレージ・コントローラ２２２の機能が、クラウドのランク２１４にも使用できる。
【００２７】
図３および４に関して下で詳細に説明されているように、再配置モジュール２３２は、ストレージ・コントローラ・コマンドまたはＩ／Ｏアクセスあるいはその両方と、クラウド・インターフェイス・コマンド（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）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasableprogrammable 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）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【００５６】
本発明の実施形態の態様は、本明細書において、本発明の実施形態に記載された方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【００５７】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【００５８】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
【００５９】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された２つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【００６０】
実施例
実施例１は、データの動的再配置のためのコンピュータ実装方法を含む。この方法は、エンタープライズ・ストレージ・システムの複数のローカル・ランクに格納されたデータへのアクセスを監視することと、監視されたアクセスに基づいて、既定の時間の間アクセスされていないデータを識別することと、既定の時間の間アクセスされていないデータをエンタープライズ・ストレージ・システムの１つまたは複数のクラウド・ベースのランクに移動することとを含み、各クラウド・ベースのランクが、１つまたは複数のクラウド・ストレージ・デバイス上のストレージ空間を含み、１つまたは複数のクラウド・ストレージ・デバイス上のストレージ空間が、仮想ローカル・ランクとしてグループ化された対応する仮想ローカル・アドレスにマッピングされる。
【００６１】
実施例２は、実施例１のコンピュータ実装方法を含み、移動されたデータの少なくとも一部に対応する仮想ローカル・アドレスに向けられたアクセス要求に応答して、アクセス要求を、１つまたは複数のクラウド・ベースのランクの１つまたは複数のクラウド・ストレージ・デバイスに対応するアプリケーション・プログラミング・インターフェイス（ＡＰＩ）用に構成されたクラウド・データ・アクセス要求に変換することと、移動されたデータの少なくとも一部を１つまたは複数のクラウド・ベースのランクから複数のローカル・ランクのうちの少なくとも１つに再配置することとをさらに含む。
【００６２】
実施例３は、実施例２のコンピュータ実装方法を含み、移動されたデータのすべてが複数のローカル・ランクのうちの少なくとも１つに再配置されたことを決定することと、１つまたは複数のクラウド・ベースのランクを削除することとをさらに含む。
【００６３】
実施例４は、実施例１〜３のいずれかのコンピュータ実装方法を含み、既定の時間が、既定の週数または既定の日数のうちの１つを含む。
【００６４】
実施例５は、実施例１〜４のいずれかのコンピュータ実装方法を含み、データを移動することが、十分なストレージ空間を有しているクラウド・ベースのランクを使用できないということの決定に応答して、１つまたは複数の新しいクラウド・ベースのランクを作成することを含む。１つまたは複数の新しいクラウド・ベースのランクの各々を作成することは、クラウド・インターフェイスを介して１つまたは複数の対応するクラウド・ストレージ・デバイス上のストレージ空間を割り当てることと、割り当てられたストレージ空間を対応する仮想ローカル・アドレスにマッピングすることと、仮想ローカル・ランクとして仮想ローカル・アドレスをグループ化することとを含む。
【００６５】
実施例６は、実施例１〜５のいずれかのコンピュータ実装方法を含み、データを移動することが、既定の時間の間アクセスされていないデータのサイズが既定のサイズしきい値を超えているということの決定に応答して、既定の時間の間アクセスされていないデータを１つまたは複数のクラウド・ベースのランクに移動することを含む。
【００６６】
実施例７は、実施例１〜５のいずれかのコンピュータ実装方法を含み、データを移動することが、複数のローカル・ランク上で使用できる空間が既定の使用可能な空間しきい値未満であるということの決定に応答して、既定の時間の間アクセスされていないデータを１つまたは複数のクラウド・ベースのランクに移動することを含む。
【００６７】
実施例８は、ストレージ・システムを含む。ストレージ・システムは、ホスト・アダプタを１つまたは複数のホスト・デバイスに通信によって結合するように構成された１つまたは複数のポートを含んでいるホスト・アダプタと、プロセッサおよびメモリを備えているストレージ・コントローラであって、ホスト・アダプタに通信によって結合されている、ストレージ・コントローラと、プロセッサおよびメモリを備えているデバイス・アダプタであって、ストレージ・コントローラに通信によって結合されている、デバイス・アダプタとを備える。デバイス・アダプタは、複数のローカル・ストレージ・ドライブに通信によって結合された複数のポートと、ネットワークを介して複数のクラウド・ストレージ・デバイスに通信によって結合された少なくとも１つのネットワーク・ポートとをさらに含む。デバイス・アダプタおよびストレージ・コントローラのうちの１つが、データ再配置モジュールを実装するようにさらに構成される。データ再配置モジュールは、エンタープライズ・ストレージ・システムの複数のローカル新磁気ディスク制御機構（ＲＡＩＤ）アレイに格納されたデータへのアクセスを監視することと、監視されたアクセスに基づいて、既定の時間の間アクセスされていないデータを識別することと、既定の時間の間アクセスされていないデータをエンタープライズ・ストレージ・システムの１つまたは複数のクラウド・ベースのＲＡＩＤアレイに移動することとを実行するように構成され、各クラウド・ベースのＲＡＩＤアレイが、１つまたは複数のクラウド・ストレージ・デバイス上のストレージ空間を含み、１つまたは複数のクラウド・ストレージ・デバイス上のストレージ空間が、仮想ローカルＲＡＩＤアレイとしてグループ化された対応する仮想ローカル・アドレスにマッピングされる。
【００６８】
実施例９は、実施例８のストレージ・システムを含み、再配置モジュールが、移動されたデータの少なくとも一部に対応する仮想ローカル・アドレスに向けられたアクセス要求に応答して、移動されたデータの少なくとも一部を１つまたは複数のクラウド・ベースのランクから複数のローカル・ランクのうちの少なくとも１つに再配置するようにさらに構成される。
【００６９】
実施例１０は、実施例９のストレージ・システムを含み、再配置モジュールが、移動されたデータのすべてが複数のローカル・ランクのうちの少なくとも１つに再配置されたということの決定に応答して、１つまたは複数のクラウド・ベースのランクを削除するようにさらに構成される。
【００７０】
実施例１１は、実施例８〜１０のいずれかのストレージ・システムを含み、再配置モジュールが、十分なストレージ空間を有しているクラウド・ベースのランクを使用できないということの決定に応答して、１つまたは複数の新しいクラウド・ベースのランクを作成することによって、データを移動するように構成される。再配置モジュールは、クラウド・インターフェイスを介して１つまたは複数の対応するクラウド・ストレージ・デバイス上のストレージ空間を割り当てることと、割り当てられたストレージ空間を対応する仮想ローカル・アドレスにマッピングすることと、仮想ローカル・ランクとして仮想ローカル・アドレスをグループ化することとによって、１つまたは複数の新しいクラウド・ベースのランクの各々を作成するように構成される。
【００７１】
実施例１２は、実施例８〜１１のいずれかのストレージ・システムを含み、再配置モジュールが、既定の時間の間アクセスされていないデータのサイズが既定のサイズしきい値を超えているということの決定に応答して、既定の時間の間アクセスされていないデータを１つまたは複数のクラウド・ベースのランクに移動するように構成される。
【００７２】
実施例１３は、実施例８〜１２のいずれかのストレージ・システムを含み、再配置モジュールが、データを移動することが、複数のローカル・ランク上で使用できる空間が既定の使用可能な空間しきい値未満であるということの決定に応答して、既定の時間の間アクセスされていないデータを１つまたは複数のクラウド・ベースのランクに移動するように構成される。
【００７３】
実施例１４は、コンピュータ可読プログラムが格納されているコンピュータ可読記憶媒体を備えているコンピュータ・プログラム製品を含む。コンピュータ可読プログラムは、プロセッサによって実行された場合に、プロセッサに、エンタープライズ・ストレージ・システムの複数のローカル新磁気ディスク制御機構（ＲＡＩＤ）アレイに格納されたデータへのアクセスを監視することと、監視されたアクセスに基づいて、既定の時間の間アクセスされていないデータを識別することと、既定の時間の間アクセスされていないデータをエンタープライズ・ストレージ・システムの１つまたは複数のクラウド・ベースのＲＡＩＤアレイに移動することとを実行させ、各クラウド・ベースのＲＡＩＤアレイが、１つまたは複数のクラウド・ストレージ・デバイス上のストレージ空間を含み、１つまたは複数のクラウド・ストレージ・デバイス上のストレージ空間が、仮想ローカルＲＡＩＤアレイとしてグループ化された対応する仮想ローカル・アドレスにマッピングされる。
【００７４】
実施例１５は、実施例１４のコンピュータ・プログラム製品を含み、コンピュータ可読プログラムが、プロセッサに、移動されたデータの少なくとも一部に対応する仮想ローカル・アドレスに向けられたアクセス要求に応答して、アクセス要求を、１つまたは複数のクラウド・ベースのランクの１つまたは複数のクラウド・ストレージ・デバイスに対応するアプリケーション・プログラミング・インターフェイス（ＡＰＩ）用に構成されたクラウド・データ・アクセス要求に変換することと、移動されたデータの少なくとも一部を１つまたは複数のクラウド・ベースのランクから複数のローカル・ランクのうちの少なくとも１つに再配置することとを実行させるようにさらに構成される。
【００７５】
実施例１６は、実施例１５のコンピュータ・プログラム製品を含み、コンピュータ可読プログラムが、プロセッサに、移動されたデータのすべてが複数のローカル・ランクのうちの少なくとも１つに再配置されたということの決定に応答して、１つまたは複数のクラウド・ベースのランクを削除させるようにさらに構成される。
【００７６】
実施例１７は、実施例１４〜１６のいずれかのコンピュータ・プログラム製品を含み、コンピュータ可読プログラムが、プロセッサに、十分なストレージ空間を有しているクラウド・ベースのランクを使用できないということの決定に応答して、１つまたは複数の新しいクラウド・ベースのランクを作成することによって、データを移動させるようにさらに構成される。再配置モジュールは、クラウド・インターフェイスを介して１つまたは複数の対応するクラウド・ストレージ・デバイス上のストレージ空間を割り当てることと、割り当てられたストレージ空間を対応する仮想ローカル・アドレスにマッピングすることと、仮想ローカル・ランクとして仮想ローカル・アドレスをグループ化することとによって、１つまたは複数の新しいクラウド・ベースのランクの各々を作成するように構成される。
【００７７】
実施例１８は、実施例１４〜１７のいずれかのコンピュータ・プログラム製品を含み、コンピュータ可読プログラムが、プロセッサに、既定の時間の間アクセスされていないデータのサイズが既定のサイズしきい値を超えているということの決定に応答して、既定の時間の間アクセスされていないデータを１つまたは複数のクラウド・ベースのランクに移動させるようにさらに構成される。
【００７８】
実施例１９は、実施例１４〜１８のいずれかのコンピュータ・プログラム製品を含み、コンピュータ可読プログラムが、プロセッサに、データを移動することが、複数のローカル・ランク上で使用できる空間が既定の使用可能な空間しきい値未満であるということの決定に応答して、既定の時間の間アクセスされていないデータを１つまたは複数のクラウド・ベースのランクに移動させるようにさらに構成される。
【００７９】
実施例２０は、コンピューティング・デバイスを含む。コンピューティング・デバイスは、ネットワークを介してコンピューティング・デバイスを１つまたは複数のクラウド・ストレージ・デバイスに通信によって結合するように構成されたネットワーク・アダプタと、データを格納するように構成されたストレージ媒体と、ネットワーク・アダプタおよびストレージ媒体に通信によって結合されたプロセッサとを備える。このプロセッサは、エンタープライズ・ストレージ・システムの複数のローカル・ランクに格納されたデータへのアクセスを監視することと、監視されたアクセスに基づいて、既定の時間の間アクセスされていないデータを識別することと、既定の時間の間アクセスされていないデータをエンタープライズ・ストレージ・システムの１つまたは複数のクラウド・ベースのランクに移動することとを実行するように構成され、各クラウド・ベースのランクが、１つまたは複数のクラウド・ストレージ・デバイス上のストレージ空間を含み、１つまたは複数のクラウド・ストレージ・デバイス上のストレージ空間が、仮想ローカル・ランクとしてグループ化された対応する仮想ローカル・アドレスにマッピングされる。
【００８０】
実施例２１は、実施例２０のコンピューティング・デバイスを含み、プロセッサが、移動されたデータの少なくとも一部に対応する仮想ローカル・アドレスに向けられたアクセス要求に応答して、アクセス要求を、１つまたは複数のクラウド・ベースのランクの１つまたは複数のクラウド・ストレージ・デバイスに対応するアプリケーション・プログラミング・インターフェイス（ＡＰＩ）用に構成されたクラウド・データ・アクセス要求に変換することと、移動されたデータの少なくとも一部を１つまたは複数のクラウド・ベースのランクから複数のローカル・ランクのうちの少なくとも１つに再配置することとを実行するようにさらに構成される。
【００８１】
実施例２２は、実施例２１のコンピューティング・デバイスを含み、プロセッサが、移動されたデータのすべてが複数のローカル・ランクのうちの少なくとも１つに再配置されたということの決定に応答して、１つまたは複数のクラウド・ベースのランクを削除するようにさらに構成される。
【００８２】
実施例２３は、実施例２０〜２２のいずれかのコンピューティング・デバイスを含み、プロセッサが、十分なストレージ空間を有しているクラウド・ベースのランクを使用できないということの決定に応答して、１つまたは複数の新しいクラウド・ベースのランクを作成することによって、データを移動するようにさらに構成される。プロセッサは、対応する１つまたは複数のクラウド・ストレージ・デバイスに関連付けられたアプリケーション・プログラミング・インターフェイス（ＡＰＩ）を介して１つまたは複数の対応するクラウド・ストレージ・デバイス上のストレージ空間を割り当てることと、割り当てられたストレージ空間を対応する仮想ローカル・アドレスにマッピングするマップ・テーブルを生成ことと、対応する仮想ローカル・ランクとして仮想ローカル・アドレスをグループ化することとによって、１つまたは複数の新しいクラウド・ベースのランクの各々を作成するように構成される。
【００８３】
実施例２４は、実施例２０〜２３のいずれかのコンピューティング・デバイスを含み、プロセッサが、既定の時間の間アクセスされていないデータのサイズが既定のサイズしきい値を超えているということの決定に応答して、既定の時間の間アクセスされていないデータを１つまたは複数のクラウド・ベースのランクに移動するようにさらに構成される。
【００８４】
実施例２５は、実施例２０〜２４のいずれかのコンピューティング・デバイスを含み、プロセッサが、データを移動することが、複数のローカル・ランク上で使用できる空間が既定の使用可能な空間しきい値未満であるということの決定に応答して、既定の時間の間アクセスされていないデータを１つまたは複数のクラウド・ベースのランクに移動するようにさらに構成される。
【００８５】
本明細書では、本発明の特定の実施形態が示され、説明されたが、同じ目的を達成するように計算された任意の配置が、示された本発明の特定の実施形態の代わりに使用されてよいということが、当業者によって理解されるであろう。したがって、本発明が特許請求の範囲およびそれと同等のもののみによって制限されるということが、明白に意図される。
【図１】
2020533694.tif 000003
【図２】
2020533694.tif 000004
【図３】
2020533694.tif 000005
【図４】
2020533694.tif 000006
【国際調査報告】
2020533694.tif 000007
2020533694.tif 000008