(57)【要約】【課題】データへのアクセスの時間的近接に基づくデータ・ストレージ間でのデータ移行を管理するデータ・ストレージ・システムを提供。【解決手段】データ・ストレージ・システムが、それぞれ第１および第２のハードウェア・チャネルを介してアクセスされる第１および第２のストレージ・デバイスを含む。ストレージ・コントローラが、第１のデータへのアクセスを要求する第１のアクセス要求と、第２のデータへのアクセスを要求する第２のアクセス要求とを受信し、第１のデータと第２のデータとは両方とも第１のハードウェア・チャネルを介してアクセスされる。時間的近接の範囲を画定する同じサービス・ウィンドウ内での第１および第２のアクセス要求の受信の検出に応答して、ストレージ・コントローラが、それぞれ第１のアクセス要求と第２のアクセス要求によって要求された第１のデータと第２のデータの識別子の関連付けを記録する。その後、ストレージ・コントローラは、第１のデータと第２のデータとが異なるハードウェア・チャネルを介したアクセスのために利用可能となるように、記録された関連付けに基づいて、第２のアクセス要求によってアクセスされた第２のデータを第１のストレージ・デバイスから第２のストレージ・デバイスに移行させる。【選択図】図２
2021514502.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ第１および第２のハードウェア・チャネルを介してアクセスされる少なくとも第１および第２のストレージ・デバイスを含むデータ・ストレージ・システムにおけるデータ移行を管理する方法であって、
前記データ・ストレージ・システムのストレージ・コントローラが第１のデータへのアクセスを要求する第１のアクセス要求と、第２のデータへのアクセスを要求する第２のアクセス要求とを受信することであって、前記第１のデータと前記第２のデータとは両方とも前記第１のハードウェア・チャネルを介してアクセスされる、前記ストレージ・コントローラが前記第１のアクセス要求と前記第２のアクセス要求とを受信することと、
前記第１のアクセス要求と前記第２のアクセス要求の、時間的近接の範囲を画定する同じサービス・ウィンドウ内での受信の検出に応答して、前記ストレージ・コントローラが、それぞれ前記第１のアクセス要求および前記第２のアクセス要求によって要求された前記第１のデータと前記第２のデータの識別子の関連付けを記録することと、
その後、前記第１のデータと前記第２のデータとが異なるハードウェア・チャネルを介したアクセスのために利用可能となるように、前記ストレージ・コントローラが、記録された前記関連付けに基づいて前記第２のアクセス要求によってアクセスされた前記第２のデータを前記第１のストレージ・デバイスから前記第２のストレージ・デバイスに移行させることとを含む方法。
【請求項２】
前記移行は、前記ストレージ・コントローラが、サービス・ウィンドウ内に受信した前記第１のデータと前記第２のデータへのアクセス要求の対の数が移行閾値を満たすと判断するのに応答してのみ、前記第２のデータを移行させることを含む、請求項１に記載の方法。
【請求項３】
前記第１のハードウェア・チャネルはアクセス・レイテンシを有し、
前記サービス・ウィンドウは、前記第１のハードウェア・チャネルの前記アクセス・レイテンシと期間が少なくとも等しい、請求項１に記載の方法。
【請求項４】
前記サービス・ウィンドウは、前記第１のストレージ・デバイスのシーク時間と期間が少なくとも等しい、請求項１に記載の方法。
【請求項５】
前記記録は、
前記第１のデータと前記第２のデータの識別子の前記関連付けをアクセス・データ構造に記録することと、
前記第２のストレージ・デバイスの識別子を前記アクセス・データ構造に、前記第２のデータを移行させることができる候補ストレージ・デバイスとして記録することとを含む、請求項１に記載の方法。
【請求項６】
前記第１のデータと前記第２のデータとを含む組のうちの少なくとも一方のデータのアクセス頻度に基づいて、前記第２のデータを移行させることができる前記候補ストレージ・デバイスを更新することをさらに含む、請求項５に記載の方法。
【請求項７】
データ・ストレージ・システムであって、
ストレージ・コントローラを含み、前記ストレージ・コントローラは、
前記ストレージ・コントローラが第１のデータへのアクセスを要求する第１のアクセス要求と、第２のデータへのアクセスを要求する第２のアクセス要求とを受信することであって、前記第１のデータと前記第２のデータとは両方とも第１のハードウェア・チャネルを介してアクセスされる、前記ストレージ・コントローラが前記第１のアクセス要求と前記第２のアクセス要求とを受信することと、
前記第１のアクセス要求と前記第２のアクセス要求の、時間的近接の範囲を画定する同じサービス・ウィンドウ内での受信の検出に応答して、前記ストレージ・コントローラが、それぞれ前記第１のアクセス要求と前記第２のアクセス要求によって要求された前記第１のデータと前記第２のデータの識別子の関連付けを記録することと、
その後、前記第１のデータと前記第２のデータとが異なるハードウェア・チャネルを介したアクセスのために利用可能となるように、前記ストレージ・コントローラが、記録された前記関連付けに基づいて前記第２のアクセス要求によってアクセスされた前記第２のデータを、前記第１のハードウェア・チャネルを介してアクセスされる第１のストレージ・デバイスから第２のハードウェア・チャネルを介してアクセスされる第２のストレージ・デバイスに移行させることとを実行するように構成された、データ・ストレージ・システム。
【請求項８】
前記移行は、前記ストレージ・コントローラが、サービス・ウィンドウ内に受信した前記第１のデータと前記第２のデータへのアクセス要求の対の数が移行閾値を満たすと判断するのに応答してのみ、前記第２のデータを移行させることを含む、請求項７に記載のデータ・ストレージ・システム。
【請求項９】
前記第１のハードウェア・チャネルはアクセス・レイテンシを有し、
前記サービス・ウィンドウは、前記第１のハードウェア・チャネルの前記アクセス・レイテンシと期間が少なくとも等しい、請求項７に記載のデータ・ストレージ・システム。
【請求項１０】
前記サービス・ウィンドウは、前記第１のストレージ・デバイスのシーク時間と期間が少なくとも等しい、請求項７に記載のデータ・ストレージ・システム。
【請求項１１】
前記記録は、
前記第１のデータと前記第２のデータの識別子の前記関連付けをアクセス・データ構造に記録することと、
前記第２のストレージ・デバイスの識別子を前記アクセス・データ構造に、前記第２のデータを移行させることができる候補ストレージ・デバイスとして記録することとを含む、請求項７に記載のデータ・ストレージ・システム。
【請求項１２】
前記ストレージ・コントローラは、前記第１のデータと前記第２のデータとを含む組のうちの少なくとも一方データのアクセス頻度に基づいて、前記第２のデータを移行させることができる前記候補ストレージ・デバイスを更新するようにさらに構成された、請求項１１に記載のデータ・ストレージ・システム。
【請求項１３】
前記第１のストレージ・デバイスと前記第２のストレージ・デバイスとをさらに含む、請求項７に記載のデータ・ストレージ・システム。
【請求項１４】
プログラム命令が実現されたコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品であって、前記プログラム命令は、ストレージ・コントローラに、
前記ストレージ・コントローラが第１のデータへのアクセスを要求する第１のアクセス要求と、第２のデータへのアクセスを要求する第２のアクセス要求とを受信することであって、前記第１のデータと前記第２のデータとは両方とも第１のハードウェア・チャネルを介してアクセスされる、前記ストレージ・コントローラが前記第１のアクセス要求と前記第２のアクセス要求とを受信することと、
前記第１のアクセス要求と前記第２のアクセス要求の、時間的近接の範囲を画定する同じサービス・ウィンドウ内での受信の検出に応答して、前記ストレージ・コントローラが、それぞれ前記第１のアクセス要求と前記第２のアクセス要求によって要求された前記第１のデータと前記第２のデータの識別子の関連付けを記録することと、
その後、前記第１のデータと前記第２のデータとが異なるハードウェア・チャネルを介したアクセスのために利用可能となるように、前記ストレージ・コントローラが、記録された前記関連付けに基づいて前記第２のアクセス要求によってアクセスされた前記第２のデータを、前記第１のハードウェア・チャネルを介してアクセスされる第１のストレージ・デバイスから第２のハードウェア・チャネルを介してアクセスされる第２のストレージ・デバイスに移行させることとを実行させるように、ストレージ・コントローラによって実行可能な、コンピュータ・プログラム製品。
【請求項１５】
前記移行は、前記ストレージ・コントローラが、サービス・ウィンドウ内に受信した前記第１のデータと前記第２のデータへのアクセス要求の対の数が移行閾値を満たすと判断するのに応答してのみ、前記第２のデータを移行させることを含む、請求項１４に記載のコンピュータ・プログラム製品。
【請求項１６】
前記第１のハードウェア・チャネルはアクセス・レイテンシを有し、
前記サービス・ウィンドウは、前記第１のハードウェア・チャネルの前記アクセス・レイテンシと期間が少なくとも等しい、請求項１４に記載のコンピュータ・プログラム製品。
【請求項１７】
前記サービス・ウィンドウは、前記第１のストレージ・デバイスのシーク時間と期間が少なくとも等しい、請求項１４に記載のコンピュータ・プログラム製品。
【請求項１８】
前記記録は、
前記第１のデータと前記第２のデータの識別子の前記関連付けをアクセス・データ構造に記録することと、
前記第２のストレージ・デバイスの識別子を前記アクセス・データ構造に、前記第２のデータを移行させることができる候補ストレージ・デバイスとして記録することとを含む、請求項１４に記載のコンピュータ・プログラム製品。
【請求項１９】
前記プログラム命令は、前記ストレージ・コントローラに、前記第１のデータと前記第２のデータとを含む組のうちの少なくとも一方のデータのアクセス頻度に基づいて、前記第２のデータを移行させることができる前記候補ストレージ・デバイスを更新することをさらに実行させる、請求項１８に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理およびデータ・ストレージに関し、より詳細には、データ・ストレージ・システムのストレージ・デバイス間のデータの効率的分散に関する。さらにより具体的には、本開示は、データへのアクセスの時間的近接に基づくデータ・ストレージ・デバイス間でのデータの再配置に関する。なお「プログラム」は「プログラム製品」とも呼ぶ。
【背景技術】
【０００２】
データ・ストレージ・システムは、通例、アクセスのボトルネックを低減することによって、アクセス・レイテンシの短縮と、入力／出力（Ｉ／Ｏ）スループットの向上を図っている。例えば、実装形態によっては、データ・ストレージ・システムは、ストレージ・アレイ（例えばＲｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ（ＲＡＩＤ））を形成する複数の異なるピア・ストレージ・デバイス間でデータを「水平方向に」分散させることによって、アクセス・レイテンシの改善とスループットの向上を図っている。実装形態によっては、データ・ストレージ・システムは、これに代えて、またはこれに加えて、データへのアクセス頻度に基づいて、異なるアクセス・レイテンシを有するストレージ・デバイスの複数の階層間でデータを「垂直方向に」分散させることによって、アクセス・レイテンシの改善とスループットの向上を図っている。
【０００３】
しかし、本開示は、データを「水平方向」または「垂直方向」あるいはその両方の方向に分散させるデータ・ストレージ・システムであっても、同じストレージ・デバイスに存在するかまたは共通のコントローラを介してアクセスされる異なるデータへのアクセスの時間的近接のために、パフォーマンス・ボトルネックが生じることがあることを認識している。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示は、同じストレージ・デバイスに存在するか、または共通のコントローラを介したアクセスを受けるか、あるいはその両方のデータへのアクセスの時間的近接のために生じる可能性のあるパフォーマンス・ボトルネックを改善する。したがって、本発明は、データへのアクセスの時間的近接に基づくデータ・ストレージ間でのデータ移行を管理する方法、そのデータ・ストレージ・システムおよびコンピュータ・プログラムを提供する。
【課題を解決するための手段】
【０００５】
少なくとも１つの実施形態では、データ・ストレージ・システムが、それぞれ第１および第２のハードウェア・チャネルを介してアクセスされる少なくとも第１および第２のストレージ・デバイスを含む。データ・ストレージ・システムのストレージ・コントローラが、第１のデータへのアクセスを要求する第１のアクセス要求と、第２のデータへのアクセスを要求する第２のアクセス要求とを受信し、第１のデータと第２のデータは両方とも第１のハードウェア・チャネルを介してアクセスされる。時間的近接の範囲を画定する同じサービス・ウィンドウ内での第１のアクセス要求と第２のアクセス要求の受信の検出に応答して、ストレージ・コントローラは、それぞれ第１および第２のアクセス要求によって要求された第１のデータと第２のデータの識別子の関連付けを記録する。その後、ストレージ・コントローラは、第１のデータと第２のデータとが異なるハードウェア・チャネルを介したアクセスのために利用可能となるように、記録された関連付けに基づいて、第２のアクセス要求によってアクセスされた第２のデータを第１のストレージ・デバイスから第２のストレージ・デバイスに移行させる。
【図面の簡単な説明】
【０００６】
【図１】一実施形態によるデータ処理環境を示す高レベル・ブロック図である。
【図２】一実施形態による、時間的に近接したアクセスの対象を記録するための例示のプロセスを示す高レベル論理フローチャートである。
【図３】一実施形態による、時間的に近接したアクセス要求の対象が図２のプロセスによって記録される例示のアクセス・データ構造を示す図である。
【図４】一実施形態による、データ・ストレージ・システムにおいて時間的に近接したアクセスを受けるデータを分散させる例示のプロセスを示す高レベル論理フローチャートである。
【発明を実施するための形態】
【０００７】
次に、図面を参照し、特に図１を参照すると、本明細書で詳述するデータ・ストレージ・システム１２０を含む例示のデータ処理環境１００の高レベル・ブロック図が示されている。図のように、データ処理環境１００は、命令とデータとを処理する１つまたは複数のプロセッサ１０４を有するプロセッサ・システム１０２などの１つまたは複数のホストを含む。プロセッサ・システム１０２は、プログラム・コード、オペランド、またはプロセッサ１０４によって行われた処理の実行結果、あるいはこれらの組合せを記憶することができるローカル・ストレージ１０６（例えば、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）またはディスクなど）をさらに含むことができる。様々な実施形態で、プロセッサ・システム１０２は、例えば、モバイル・コンピューティング・デバイス（スマートフォンまたはタブレットなど）、ラップトップまたはデスクトップ・パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム（インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なＰＯＷＥＲサーバ・シリーズなど）、またはメインフレーム・コンピュータ・システムとすることができる。プロセッサ・システム１０２は、メモリ・キャッシュ、メモリ・コントローラ、ローカル・ストレージ、Ｉ／Ｏバス・ハブなどと組み合わせて、ＡＲＭ、ＰＯＷＥＲ、Ｉｎｔｅｌ  ｘ８６または任意のその他のプロセッサなど、様々なプロセッサを使用する、組み込みプロセッサ・システムとすることもできる。
【０００８】
各プロセッサ・システム１０２は、１つまたは複数の入力／出力（Ｉ／Ｏ）アダプタ１０８をさらに含み、各Ｉ／Ｏアダプタ１０８はＩ／Ｏチャネル１１０を介して１つまたは複数のデータ・ストレージ・システム１２０に直接（すなわち、介在デバイスなしに）または間接的に（すなわち、少なくとも１つの中間デバイスを介して）結合することができる。実施形態によっては、データ・ストレージ・システム１２０は、プロセッサ・システム１０２と一体化されてもよい。様々な実施形態において、Ｉ／Ｏチャネル１１０は、例えば、ファイバ・チャネル（ＦＣ）、ＦＣオーバ・イーサネット（Ｒ）（FC over Ethernet(R)（ＦＣｏＥ））、インターネット・スモール・コンピュータ・システム・インターフェース（ｉＳＣＳＩ）、ＩｎｆｉｎｉＢａｎｄ、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）、ペリフェラル・コンポーネント・インターコネクト・エクスプレス（Peripheral Component Interconnect Express（ＰＣＩｅ））などを含む、周知の、または今後開発される、通信プロトコルのいずれか１つまたは組合せを採用することができる。Ｉ／Ｏチャネル１１０を介して伝達されるＩ／Ｏ要求（動作）は、例えば、プロセッサ・システム１０２がデータ・ストレージ・システム１２０にデータを要求する読み取り要求と、プロセッサ・システム１０２がデータ・ストレージ・システム１２０へのデータの記憶を要求する書き込み要求と、プロセッサ・システム１０２がファイル・システム・オブジェクト（例えばファイル）を開くことを要求するオープン要求とを含む。
【０００９】
この図の実施形態では、データ・ストレージ・システム１２０は、データ・ストレージ・システム１２０がＩ／Ｏチャネル１１０を介してホストのＩ／Ｏ要求を受信し、応答するために使用する１つまたは複数のインターフェース・カード１２２を含む。各インターフェース・カード１２２は、フォールト・トレランスとロード・バランシングとを提供する１つまたは複数のＲｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ（ＲＡＩＤ）コントローラ１２４に結合されている。ＲＡＩＤコントローラ１２４のそれぞれは、不揮発性メモリ（例えばフラッシュ・メモリ）、ハード・ディスク、テープ・ドライブなどを含む、１つまたは複数の種類のストレージ・デバイスを含み得る、１つまたは複数の不揮発性ストレージ・デバイス１２６ａないし１２６ｄに（例えばＰＣＩｅバスによって）結合されている。良好なＩ／Ｏスループットと低レイテンシとを実現するために、好ましくはそれぞれのコントローラ・メモリ１２５に結合されているかまたはそれぞれのコントローラ・メモリ１２５を含むＲＡＩＤコントローラ１２４のそれぞれが、ストレージ・デバイス１２６間でファイル・システム・オブジェクトのエクステントを分散させる。
【００１０】
図の実施形態では、データ・ストレージ・システム１２０の全体的な動作は、インターフェース・カード１２２とＲＡＩＤコントローラ１２４とに結合された冗長システム管理コントローラ（ＳＭＣ）１２３によって管理される。様々な実施形態で、システム管理コントローラ１２３は、ハードウェア、またはファームウェアまたはソフトウェアあるいはその両方を実行するハードウェアを使用して実装可能である。
【００１１】
当業者は、図１を参照すれば、データ処理環境１００が、ハードウェア・チャネルの固有レイテンシとスループット限界のためにデータ・アクセス要求のボトルネックとなる可能性のある複数のハードウェア・チャネルを含むことが容易にわかるであろう。一般に、この提示の例では、これらの複数のハードウェア・チャネルは、少なくともＩ／Ｏアダプタ１０８と、インターフェース・カード１２２と、ＲＡＩＤコントローラ１２４と、ストレージ・デバイス１２６とを含み得る。これらのハードウェア・チャネルの固有レイテンシとスループット限界とは、後で受信したアクセス要求が、そのアクセス要求が辿るすべてのハードウェア・チャネルの固有レイテンシに、そのアクセス要求が直前のアクセス要求が完了するのを待つときの待ち行列遅延によってもたらされる待ち時間を加えた時間に等しいレイテンシでサービス提供され得る結果となるように、ハードウェア・チャネルの共通の組を採用する時間的に近接したアクセス要求を直列化するという作用をもたらす。一般に、ハード・ディスクおよびテープ・ドライブのようなストレージ・デバイス１２６を含むデータ・ストレージ・システム１２０の場合、アクセス要求のレイテンシの最大の要因は、例えば２ｍｓから１０ｍｓとなることがあるストレージ・デバイス１２６のシーク時間である。
【００１２】
次に、図２を参照すると、一実施形態による、時間的に近接したアクセス要求の対象を記録する例示のプロセスの高レベル論理フローチャートが示されている。図示されているプロセスは、様々な実施形態において、例えばＲＡＩＤコントローラ１２４またはＳＭＣ１２３あるいはその両方（これらを個別にまたは総称して「ストレージ・コントローラ」と呼ぶ）によって実行可能であるが、以下の説明では、説明を簡単にするために、このプロセスについてＲＡＩＤコントローラ１２４によって実行されるものとして説明する。様々な実施形態において、図のプロセスは、完全にハードウェアで、または、ファームウェアまたはソフトウェアあるいはその両方の実行によりこのプロセスを実行するように構成されたハードウェア・プラットフォーム上で実装可能である。
【００１３】
図２のプロセスはブロック２００で開始し、次に、ＲＡＩＤコントローラ１２４が、アクセス要求、例えば読み取り要求、書き込み要求、またはオープン要求の受信を待つことを示すブロック２０２に進む。アクセス要求は、典型的には、（例えば、アクセス要求を開始したプロセッサ・システム１０２またはワークロードあるいはその両方の、インターネット・プロトコル（ＩＰ）アドレス、メディア・アクセス制御（ＭＡＣ）アドレス、またはその他の識別子によって）要求の開始元を識別し、要求によってアクセスされる対象ファイル・システム・オブジェクトを指定する。データ・ストレージ・システム１２０の構成によっては、対象ファイル・システム・オブジェクトは、１つまたは複数の論理ユニット（ＬＵＮ）を含むストレージ・ボリュームなどの論理インターフェースを介して開始元に提示される場合がある。対象ファイル・システム・オブジェクトが開始元にどのように提示されるかにかかわりなく、対象ファイル・システム・オブジェクトは物理的に１つまたは複数のストレージ・デバイス１２６内の１つまたは複数のエクステントに記憶され、各エクステントは物理ストレージの１つまたは複数の連続したブロックからなる。
【００１４】
ブロック２０２でアクセス要求を受信しない場合、プロセスはＲＡＩＤコントローラ１２４がアクセス要求を受信するまで反復し続ける。アクセス要求の受信に応答して、ＲＡＩＤコントローラ１２４は、ブロック２０４で、そのアクセス要求が、異なるエクステントを対象とし、同じハードウェア・チャネルを介してサービス提供される１つまたは複数の他の前のアクセス要求のサービス・ウィンドウ内で受信されるか否かを判断する。好ましい実施形態では、ハードウェア・チャネルのサービス・ウィンドウは、アクセス要求の時間的近接の範囲を画定する設定可能期間である。例えば、実施形態によっては、ハードウェア・チャネルのサービス・ウィンドウは、オペレーティング・システムまたはストレージ・システム・ソフトウェアによって自動的に、あるいはこれに代えて、またはこれに加えて、ストレージ管理者によって手動で設定可能である。シーク時間に左右されるレイテンシを有するストレージ・デバイス１２６（例えばハード・ディスク、テープ・ドライブなど）を含むデータ・ストレージ・システム１２０の場合、所与のハードウェア・チャネルのサービス・ウィンドウは、基礎にあるストレージ・デバイス１２６のシーク時間に等しい最小値を有することが好ましい。したがって、アクセス要求が、２ｍｓのシーク時間を有するハード・ディスク・ストレージ・デバイス１２６に記憶されている１つまたは複数のエクステントへのアクセスを要求する場合、そのハード・ディスク・ストレージ・デバイスからサービス提供されるアクセスのサービス・ウィンドウは、例えば２ｍｓから５ｍｓの間に設定することができる。したがって、ハード・ディスク・ストレージ・デバイス１２６のサービス・ウィンドウが３ｍｓに設定されている場合、ＲＡＩＤコントローラ１２４は、ハード・ディスク・ストレージ・デバイス１２６（例えばストレージ・デバイス１２６ａ）に記憶されているエクステントへのアクセスを要求するアクセス要求が、ブロック２０２で同じストレージ・デバイス１２６ａに記憶されている異なるエクステントを対象とする別のアクセス要求から３ｍｓ以内に受信される場合に、ブロック２０４で肯定の判断をする。
【００１５】
ブロック２０４でＲＡＩＤコントローラ１２４がアクセス要求が同じハードウェア・チャネルを介してサービス提供される別のアクセス要求のサービス・ウィンドウ内に受信されなかったと判断するのに応答して、プロセスは後述するブロック２１４に進む。しかし、ＲＡＩＤコントローラ１２４がブロック２０４でアクセス要求が異なるエクステントを対象とし、同じハードウェア・チャネルを介してサービス提供される１つまたは複数の前のアクセス要求のサービス・ウィンドウ内に受信されたと判断するのに応答して、図２のプロセスはブロック２０６および後続のブロックに進む。ブロック２０６および後続のブロックは、ＲＡＩＤコントローラ１２４が、現在のアクセス要求によって対象とされるエクステントの識別子と、同じハードウェア・チャネルのサービス・ウィンドウ内の他のメモリ・アクセス要求によって対象とされる他のエクステントの識別子との間の１つまたは複数の関連付けを記録することを示している。
【００１６】
図３を参照すると、一実施形態による、図２のブロック２０６で時間的に近接したアクセス要求の対象エクステントを記録することができる例示のアクセス・データ構造３００が示されている。図の例では、ＲＡＩＤコントローラ１２４がそれに関連付けられたコントローラ・メモリ１２５でアクセス・データ構造３００を維持している。
【００１７】
図の実施形態では、テーブルまたはその他の適合するデータ構造の形態を有し得るアクセス・データ構造３００が複数のエントリ３０２を含む。各エントリ３０２は、エクステント識別子の対を記憶するためのエクステント対フィールド３０４と、該当するサービス・ウィンドウ内で識別されたエクステントを対象とするメモリ・アクセス要求の対の数のカウントを示すカウント・フィールド３０６と、アクセス・レイテンシを改善するために、識別されたエクステントの対のうちの一方を移行することができる候補ストレージ・デバイス１２６を識別するための候補デバイス・フィールド３０８とを含む。
【００１８】
この例示のアクセス・データ構造３００を踏まえて、図２のブロック２０６でＲＡＩＤコントローラ１２４は、アクセス・データ構造３００が現在のアクセス要求によって対象とされるエクステントの識別子と同じハードウェア・チャネルのサービス・ウィンドウ内に含まれる他のメモリ・アクセス要求の対象エクステントの識別子との関連付けを記録するエントリ３０２をすでに含んでいるか否かを判断する。含んでいる場合、ＲＡＩＤコントローラ１２４は、ブロック２１２に示すように該当エントリ３０２のカウント・フィールド３０６を単にインクリメントする。しかし、ブロック２０６でＲＡＩＤコントローラ１２４がアクセス・データ構造３００内にすでに存在する一致エントリ３０２がないと判断した場合、ＲＡＩＤコントローラ１２４は、新たなエントリ３０２を割り当て、エクステント対フィールド３０４に、現在のアクセス要求によって対象とされるエクステントの識別子と、同じハードウェア・チャネルのサービス・ウィンドウ内に含まれる他のメモリ・アクセス要求の対象エクステントの識別子との関連付けを記録する（ブロック２０８）。さらに、ＲＡＩＤコントローラ１２４は、対象エクステントのレイテンシを短縮するために現在のアクセス要求の対象エクステントを移行させることができる候補ストレージ・デバイス１２６があればその識別子を判断し、候補デバイス・フィールド３０８に記録する（ブロック２１０）。また、ＲＡＩＤコントローラ１２４は、カウント・フィールド３０６のカウント値を、例えば０から１にインクリメントする（ブロック２１２）。次に、図２のプロセスはブロック２１２からブロック２１４に進む。
【００１９】
ブロック２１４は、ＲＡＩＤコントローラ１２４が、アクセス要求によって要求された対象エクステントへのアクセスの種類（例えば読み取り、書き込み、オープンなど）を提供することによって、現在のメモリ・アクセス要求にサービス提供することを示す。ブロック２１４の後、図２のプロセスは、前述のブロック２０２およびそれ以降のブロックに戻る。
【００２０】
図３に、１つの動作状況でＲＡＩＤコントローラ１２４がアクセス・データ構造３００にどのようにデータを入れることができるかを示す具体的な一例を示す。この例では、ＲＡＩＤコントローラ１２４は１つのサービス・ウィンドウ内で、それぞれがすべてストレージ・デバイス１２６ａに記憶されているエクステントＥ１、．．．、Ｅ５のうちのそれぞれの１つのエクステントを対象とする５つの異なるメモリ・アクセス要求を受信する。このアクセス要求のシーケンスは、以下のように表すことができる。
Ｒ１（Ａ（Ｅ１））
Ｒ２（Ａ（Ｅ２））
Ｒ３（Ａ（Ｅ３））
Ｒ４（Ａ（Ｅ４））
Ｒ５（Ａ（Ｅ５））
【００２１】
このメモリ・アクセス要求のシーケンスの受信に応答して、ＲＡＩＤコントローラ１２４は、図３に示すように、エントリ３０２のエクステント対フィールド３０４にアクセス要求のシーケンスによって対象とされるエクステントの各対の識別子間の関連付けを記録する。また、これがカウント・フィールド３０６が最後に初期化されてからエクステント対が記録された最初であるとすれば、ＲＡＩＤコントローラ１２４はそのような各エントリ３０２のカウント・フィールド３０６を値１に更新する。さらに、ＲＡＩＤコントローラ１２４は、レイテンシを改善するためにこれらの様々な対象エクステントを移行させることができる候補ストレージ・デバイスがあればそれを指定する。この実施例では、ＲＡＩＤコントローラ１２４は、識別子ＢによってエクステントＥ２の候補ストレージ・デバイスとしてストレージ・デバイス１２６ｂを指定し、識別子ＣによってエクステントＥ３の候補ストレージ・デバイスとしてストレージ・デバイス１２６ｃを指定し、識別子ＤによってエクステントＥ４の候補ストレージ・デバイスとしてストレージ・デバイス１２６ｄを指定する。なお、エクステントＥ５がエクステントＥ２ないしＥ４に時間的に近接してアクセスされ続ける場合、エクステントＥ５をストレージ・デバイス１２６ａから移行しても全体的なレイテンシは改善しないため、ＲＡＩＤコントローラ１２４は、エクステントＥ５の候補ストレージ・デバイスを少なくとも最初は示さない。
【００２２】
ＲＡＩＤコントローラ１２４がエクステント対のうちの一方のエクステントを移行させることができる候補ストレージ・デバイスを指定した（または初期指定を行うのを避けた）後、ＲＡＩＤコントローラ１２４は、様々なエクステント対のアクセスの観察された頻度に基づいて、指定候補を更新する（または候補ストレージ・デバイスの指定を行う）ように構成されることが好ましいことに留意されたい。例えば、エクステントＥ５がエクステントＥ１と同じサービス・ウィンドウ内でアクセスされるよりもエクステントＥ２がエクステントＥ１と同じサービス・ウィンドウ内でアクセスされる傾向が低いとすれば、ＲＡＩＤコントローラ１２４は、候補ストレージ・デバイス・フィールド３０８内の候補ストレージ・デバイスの指定を更新して、エクステントＥ５の指定候補としてストレージ・デバイス１２６ｂを指定し、エクステント対Ｅ１：Ｅ２のエントリ３０２の候補デバイス・フィールド３０８をクリアすることが好ましい。
【００２３】
次に図４を参照すると、一実施形態による、データ・ストレージ・システムにおける時間的に近接したアクセスを受けるデータを分散させるための例示のプロセスの高レベル論理フローチャートが示されている。わかりやすいように、以下では図４のプロセスについて、ＲＡＩＤコントローラ１２４がストレージ・デバイス１２６間でエクステントを移行させる場合に関して説明する。しかし、このプロセスは、時間的に近接したアクセスを受けるデータを他のハードウェア・チャネルにわたって分散させる場合にも適用可能であることを理解されたい。
【００２４】
図４のプロセスは、ブロック４００で開始し、次に、ＲＡＩＤコントローラ１２４が、ストレージ・デバイス１２６間でエクステントの移行が最後に行われてから最小移行間隔（例えば、４時間、８時間、１日など）が経過したか否かを判断することを示すブロック４０２に進む。経過していない場合、プロセスは、単にブロック４０２で反復する。しかし、ブロック４０２でＲＡＩＤコントローラ１２４が、最小移行間隔が経過したと判断した場合、ＲＡＩＤコントローラ１２４は、任意により、ブロック４０４で、エントリ３０２のうちのいずれか（または閾値数）のカウント・フィールド３０６のカウント値が移行閾値を満たすか（例えば移行閾値以上であるか）否かをさらに判断してもよい。ブロック４０４に示す任意の判断により、エクステントへの時間的に近接したアクセスの頻度が、移行プロセスのオーバーヘッドを生じさせるのを妥当なものとするのに十分な頻度となるまで、ストレージ・デバイス１２６間のエクステントの移行が行われないようにすることができる。
【００２５】
ブロック４０４で、ＲＡＩＤコントローラ１２４が移行閾値が満たされていないと判断するのに応答して、プロセスはブロック４０２に戻る。しかし、ブロック４０４でＲＡＩＤコントローラ１２４が移行閾値が満たされたと判断した場合、ＲＡＩＤコントローラ１２４は、アクセス・データ構造３００の候補デバイス・フィールド３０８によって示されている分散に従ってエクステントをストレージ・デバイス１２６間で移行させる（ブロック４０６）。この移行の結果、近い時間的近接内で頻繁にアクセスされるエクステントがその後、異なるハードウェア・チャネル（例えばストレージ・デバイス１２６）を介してアクセス可能になる。また、ブロック４０６に示す移行時に、ＲＡＩＤコントローラ１２４などのストレージ・コントローラが、さらに、エクステントのアクセス頻度（ヒート）、ロード・バランシングなどの他の測定基準に基づいてデータを移行させてもよいことが、当業者にはさらにわかるであろう。ブロック４０６での移行の後、例えば、ＲＡＩＤコントローラ１２４は、エクステント対フィールド３０４と候補デバイス・フィールド３０８とをクリアし、カウント・フィールド３０６をゼロにリセットすることによって、アクセス・データ構造３００を再初期化する（ブロック４０８）。次にプロセスは前述のブロック４０２に戻る。
【００２６】
以上で説明したように、少なくとも一実施形態では、データ・ストレージ・システムが、それぞれ第１および第２のハードウェア・チャネルを介してアクセスされる少なくとも第１および第２のストレージ・デバイスを含む。データ・ストレージ・システムのストレージ・コントローラが、第１のデータへのアクセスを要求する第１のアクセス要求と、第２のデータへのアクセスを要求する第２のアクセス要求とを受信し、第１のデータと第２のデータは両方とも第１のハードウェア・チャネルを介してアクセスされる。時間的近接の範囲を画定する同じサービス・ウィンドウ内での第１のアクセス要求と第２のアクセス要求の受信の検出に応答して、ストレージ・コントローラは、それぞれ第１のアクセス要求と第２のアクセス要求によって要求された第１のデータと第２のデータの識別子の関連付けを記録する。その後、ストレージ・コントローラは、第１のデータと第２のデータとが異なるハードウェア・チャネルを介したアクセスのために利用可能となるように、記録された関連付けに基づいて第２のアクセス要求によってアクセスされた第２のデータを第１のストレージ・デバイスから第２のストレージ・デバイスに移行させる。
【００２７】
本発明は、システム、方法、またはコンピュータ・プログラム製品あるいはこれらの組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含み得る。
【００２８】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持し、記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学式ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適合する組合せであってよいが、これらには限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のものが含まれる。すなわち、可搬コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、可搬コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピィ・ディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、およびこれらの任意の適合する組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体とは、電波またはその他の自由に伝搬する電磁波、導波路またはその他の伝送媒体を伝搬する電磁波（例えば光ファイバ・ケーブルを通る光パルス）、または電線を介して伝送される電気信号などの、一過性の信号自体であると解釈すべきではない。
【００２９】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワークあるいはこれらの組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、交換機、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはこれらの組合せを含み得る。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に記憶のために転送する。
【００３０】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語、または同様のプログラム言語などの従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上でまたは一部がユーザのコンピュータ上で、または一部がユーザのコンピュータ上で一部がリモート・コンピュータ上で、または全体がリモート・コンピュータまたはサーバ上で実行されてもよい。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む、任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続は（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行ってもよい。実施形態によっては、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路が、コンピュータ可読プログラム命令の状態情報を使用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【００３１】
本明細書では、本発明の態様について、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品を示すフローチャート図またはブロック図あるいはその両方を参照しながら説明している。フローチャート図またはブロック図あるいはその両方の図の各ブロックおよび、フローチャート図またはブロック図あるいはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることはわかるであろう。
【００３２】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサにより実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックで規定されている機能／動作を実装する手段を形成するように、マシンを形成するように、汎用コンピュータ、特殊目的コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに供給することができる。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方のブロックで規定されている機能／動作の態様を実装する命令を含む製造品を含むように、コンピュータ、プログラマブル・データ処理装置、またはその他のデバイスあるいはこれらの組合せに対して特定の方式で機能するように指示することができるコンピュータ可読記憶媒体に記憶することもできる。
【００３３】
コンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置またはその他のデバイス上で実行される命令がフローチャートまたはブロック図あるいはその両方のブロックで規定されている機能／動作を実装するように、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で一連の動作ステップが実行されてコンピュータ実装プロセスを実現するようにするために、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスにロードすることができる。
【００３４】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能および動作を示す。なお、フローチャートまたはブロック図の各ブロックは、規定されている論理機能を実装するための１つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表すことがある。代替実装形態によっては、ブロックに記載されている機能は、図に記載されている順序とは異なる順序で行われてもよい。例えば、連続して示されている２つのブロックは、関与する機能に応じて、実際には実質的に並行して実行されてよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の図の各ブロック、およびブロック図またはフローチャート図あるいはその両方の図のブロックの組合せは、規定されている機能または動作を実行するかまたは特殊目的ハードウェアとコンピュータ命令との組合せを実施する、特殊目的ハードウェア・ベースのシステムによって実装可能であることも留意されたい。
【００３５】
本発明について１つまたは複数の好ましい実施形態を参照しながら説明したように具体的に示したが、当業者は、本発明の思想および範囲から逸脱することなく、これらの実施形態の形態および詳細に様々な変更を加えることができることがわかるであろう。例えば、態様について特定の機能を管理するフラッシュ・コントローラを含むデータ・ストレージ・システムに関連して説明したが、本発明は、その代わりとして、そのような機能を実行するか、またはそのような機能を実行させるようにプロセッサによって処理可能なプログラム・コードを記憶したストレージ・デバイスを含むプログラム製品として実装することも可能であることを理解されたい。本明細書で使用する「ストレージ・デバイス」とは、法定の製品のみを含み、信号媒体自体、一過性の伝搬信号自体、およびエネルギー自体を含まないものと明確に定義される。
【００３６】
上記の図面および以下の特定の構造および機能の記述は、出願人らが発明したものの範囲、または添付の特許請求の範囲を限定するために示すものではない。図面および記述は、特許権保護を請求する本発明を製作し、使用することを当業者に教示するために示している。当業者は、明確にするためとわかりやすくするために、本発明の商業実施形態の特徴がすべて説明または図示されているわけではないことがわかるであろう。当業者は、本発明の態様を組み込んだ実際の商業実施形態の開発は、商業実施形態のための開発者の最終目標を達成するために多くの実装形態固有の決定を必要とすることがわかるであろう。そのような実装形態固有の決定には、特定の実装形態、場所およびその時々で変わり得るシステム関連制約、業務関連制約、政府関連制約およびその他の制約の順守が含まれ得るが、これらには限定されないこともあり得る。開発者の作業は絶対的な意味で複雑で時間がかかる可能性があるが、そのような作業は本開示を利用する当業者にとっては通常作業であろう。本明細書で開示され、教示されている本発明は、多くの様々な修正および代替形態を許容可能であることを理解すべきである。最後に、これには限定されないが「ａ」などの単数形の用語の使用は、物の数を限定することを意図していない。
【図１】
2021514502.tif 000003
【図２】
2021514502.tif 000004
【図３】
2021514502.tif 000005
【図４】
2021514502.tif 000006
【国際調査報告】
2021514502.tif 000007
2021514502.tif 000008