(57)【要約】【課題】本発明は、キャッシングされたデータの保全性を十分に保護し、ＤＡＳシステムで使用される既知のキャッシュ・コヒーレンシ解決策の制限を克服する、ＤＡＳシステムを提供することを目的とする。【解決手段】ＤＡＳシステムのＤＡＳコントローラの外部のＳＳＤのアレイが、ＷＢキャッシング動作を実行するためのＷＢキャッシュ・メモリとしてＤＡＳコントローラによって使用される、ＲＡＩＤテクノロジを実施するＤＡＳシステムを提供する。ＷＢキャッシュ・メモリとして外部ＳＳＤアレイを使用することにより、ＤＡＳシステムの複雑さを大幅には増やさず、キャッシング動作の実行に利用される帯域幅の量を増やさずに、ＤＡＳシステムが完全にキャッシュ・コヒーレントにすることが可能になる。さらに、ＷＢキャッシュ・メモリとして外部ＳＳＤアレイを使用することにより、ＤＡＳコントローラをミラーリングする必要がなくなる。【選択図】図４
2010282628.tif 000002
【特許請求の範囲】
【請求項１】
ダイレクトアタッチト・ストレージ（ＤＡＳ）システムであって、
物理ディスク・ドライブ（ＰＤ）のＲＡＩＤアレイとして構成された複数の磁気ハード・ディスク・ドライブ（ＨＤＤ）と、
キャッシュ・メモリとして構成されたＳＳＤのアレイと、
ＰＤの前記ＲＡＩＤアレイ及び前記ＳＳＤアレイに接続された少なくとも第１の及び第２のＤＡＳコントローラとを含み、各ＤＡＳコントローラは、中央処理装置（ＣＰＵ）、ローカル・メモリ・デバイス、及び入出力（Ｉ／Ｏ）インターフェース・デバイスを有し、前記ＣＰＵのそれぞれ及び前記ローカル・メモリ・デバイスのそれぞれは、ＰＤの前記ＲＡＩＤアレイのＲＡＩＤ構成と整合するＲＡＩＤテクノロジレベルを実行するように構成され、前記ＣＰＵのそれぞれは、前記それぞれのＤＡＳコントローラ内で受け取られたデータが前記ＳＳＤアレイの前記キャッシュ・メモリに一時的に格納されるようにし、その後、ＰＤの前記ＲＡＩＤアレイの前記ＰＤのうちの１つ又は複数に格納されるようにする、キャッシング・アルゴリズムを実行するように構成される、ＤＡＳシステム。
【請求項２】
前記キャッシング・アルゴリズムは、ＰＤの前記ＲＡＩＤアレイの前記ＰＤのうちの１つ又は複数に前記データを格納する前に前記ＳＳＤアレイの前記キャッシュ・メモリに前記データをライト・バック（ＷＢ）キャッシングする、ＷＢキャッシング・アルゴリズムである、請求項１に記載のＤＡＳシステム。
【請求項３】
前記データは、それに関連付けられたメタデータを有し、前記ＤＡＳコントローラの前記ローカル・メモリ・デバイスのそれぞれは、その一部分がキャッシュ・メモリとして使用される、前記それぞれのＣＰＵによって実行される前記ＷＢキャッシング・アルゴリズムは、前記それぞれのＤＡＳコントローラで受け取られた前記データに関連する前記メタデータを、前記それぞれのローカル・メモリ・デバイスの前記それぞれのキャッシュ・メモリ部分に一時的に格納させ、その後、ＰＤの前記ＲＡＩＤアレイの前記ＰＤのうちの１つ又は複数に格納させる、請求項２に記載のＤＡＳシステム。
【請求項４】
前記データは、それに関連付けられたメタデータを有し、前記それぞれのＣＰＵによって実行される前記ＷＢキャッシング・アルゴリズムは、前記それぞれのＤＡＳコントローラで受け取られた前記データに関連する前記メタデータを、前記ＳＳＤアレイの前記キャッシュ・メモリに一時的に格納させ、その後、ＰＤの前記ＲＡＩＤアレイの前記ＰＤのうちの１つ又は複数に格納させる、請求項２に記載のＤＡＳシステム。
【請求項５】
前記それぞれのＣＰＵは、前記ＳＳＤアレイ内に一時的に格納される前記データに対してキャッシュ・コヒーレンシが提供されるように、前記ＳＳＤアレイ内へのデータの前記一時的格納に関してあるＲＡＩＤテクノロジレベルを実行するように構成される、請求項１に記載のＤＡＳシステム。
【請求項６】
前記データは、それに関連付けられたメタデータを有し、前記それぞれのＣＰＵによって実行される前記キャッシング・アルゴリズムは、前記データを前記ＳＳＤアレイ内のブロックに格納させ、各ブロックは、データ保全性フィールド（ＤＩＦ）を含み、前記それぞれのＣＰＵは、前記それぞれのＤＡＳコントローラで受け取られた前記データに関連する前記メタデータを、前記ＳＳＤアレイ内で前記関連するデータが格納される前記ブロックのうちの少なくとも１つに関連する前記ＤＩＦのうちの少なくとも１つに格納させる、請求項５に記載のＤＡＳシステム。
【請求項７】
各それぞれのＣＰＵによって実行される前記キャッシング・アルゴリズムは、前記メタデータのハッシュを計算するハッシング・アルゴリズムを含み、それぞれのハッシュは、前記ＳＳＤアレイ内で前記関連するデータが格納される前記ブロックのうちの少なくとも１つに関連する前記ＤＩＦのうちの前記少なくとも１つに格納される、請求項６に記載のＤＡＳシステム。
【請求項８】
前記データに関連する前記メタデータは、前記データのソースの指示、前記データの長さの指示、及び前記データが変更されたか否かの指示を含む、請求項６に記載のＤＡＳシステム。
【請求項９】
ダイレクトアタッチト・ストレージ（ＤＡＳ）システム内でキャッシングされたデータの保全性を保護する方法であって、
中央処理装置（ＣＰＵ）とローカル・メモリ・デバイスと入出力（Ｉ／Ｏ）インターフェース・デバイスとを有する第１のＤＡＳコントローラ内でデータを受け取ること、
前記第１のＤＡＳコントローラの前記ＣＰＵ内で、前記第１のＤＡＳコントローラ内で受け取られた前記データをＳＳＤアレイの１つ又は複数のＳＳＤに一時的に格納させ、その後、物理ディスク・ドライブ（ＰＤ）のＲＡＩＤアレイとして構成された１つ又は複数の磁気ハード・ディスク・ドライブ（ＨＤＤ）に格納させる、キャッシング・アルゴリズムを実行すること、
ＣＰＵとローカル・メモリ・デバイスとＩ／Ｏインターフェース・デバイスとを有する第２のＤＡＳコントローラ内でデータを受け取ること、ならびに
前記第２のＤＡＳコントローラの前記ＣＰＵ内で、前記第２のＤＡＳコントローラ内で受け取られた前記データを前記ＳＳＤアレイ内の１つ又は複数のＳＳＤに一時的に格納させ、その後、ＰＤの前記ＲＡＩＤアレイとして構成された前記磁気ＨＤＤのうちの１つ又は複数に格納させる、キャッシング・アルゴリズムを実行すること
を含む方法。
【請求項１０】
前記キャッシング・アルゴリズムは、ＰＤの前記ＲＡＩＤアレイの前記ＰＤのうちの１つ又は複数に前記データを格納する前に前記ＳＳＤアレイの前記キャッシュ・メモリに前記データをライト・バック（ＷＢ）キャッシングする、ＷＢキャッシング・アルゴリズムである、請求項９に記載の方法。
【請求項１１】
前記データは、それに関連付けられたメタデータを有し、前記ＤＡＳコントローラの前記ローカル・メモリ・デバイスのそれぞれは、その一部分がキャッシュ・メモリとして使用される、前記それぞれのＣＰＵによって実行される前記ＷＢキャッシング・アルゴリズムは、前記それぞれのＤＡＳコントローラで受け取られた前記データに関連する前記メタデータを、前記それぞれのローカル・メモリ・デバイスの前記それぞれのキャッシュ・メモリ部分に一時的に格納させ、その後、ＰＤの前記ＲＡＩＤアレイの前記ＰＤのうちの１つ又は複数に格納させる、請求項１０に記載の方法。
【請求項１２】
前記データは、それに関連付けられたメタデータを有し、前記それぞれのＣＰＵによって実行される前記ＷＢキャッシング・アルゴリズムは、前記それぞれのＤＡＳコントローラで受け取られた前記データに関連する前記メタデータを、前記ＳＳＤアレイの前記キャッシュ・メモリに一時的に格納させ、その後、ＰＤの前記ＲＡＩＤアレイの前記ＰＤのうちの１つ又は複数に格納させる、請求項１０に記載の方法。
【請求項１３】
前記それぞれのＣＰＵは、前記ＳＳＤアレイ内に一時的に格納される前記データに対してキャッシュ・コヒーレンシが提供されるように、前記ＳＳＤアレイ内へのデータの前記一時的格納に関してあるＲＡＩＤテクノロジレベルを実行するように構成される、請求項９に記載の方法。
【請求項１４】
前記データは、それに関連付けられたメタデータを有し、前記それぞれのＣＰＵによって実行される前記キャッシング・アルゴリズムは、前記データを前記ＳＳＤアレイ内のブロックに格納させ、各ブロックは、データ保全性フィールド（ＤＩＦ）を含み、前記それぞれのＣＰＵは、前記それぞれのＤＡＳコントローラで受け取られた前記データに関連する前記メタデータを、前記ＳＳＤアレイ内で前記関連するデータが格納される前記ブロックのうちの少なくとも１つに関連する前記ＤＩＦのうちの少なくとも１つに格納させる、請求項１３に記載の方法。
【請求項１５】
各それぞれのＣＰＵによって実行される前記キャッシング・アルゴリズムは、前記メタデータのハッシュを計算するハッシング・アルゴリズムを含み、各それぞれのハッシュは、前記ＳＳＤアレイ内で前記関連するデータが格納される前記ブロックのうちの少なくとも１つに関連する前記ＤＩＦのうちの前記少なくとも１つに格納される、請求項１４に記載の方法。
【請求項１６】
前記データに関連する前記メタデータは、前記データのソースの指示、前記データの長さの指示、及び前記データが変更されたか否かの指示を含む、請求項１４に記載の方法。
【請求項１７】
ダイレクトアタッチト・ストレージ（ＤＡＳ）システム内でキャッシングされたデータの保全性を保護するコンピュータ・プログラムをその上に格納されたコンピュータ可読媒体であって、前記コンピュータ・プログラムが、前記コンピュータ可読媒体上に格納されたコンピュータ命令を含み、前記命令が、
第１のＤＡＳコントローラでデータを受け取る第１の命令セットと、
前記第１のＤＡＳコントローラで受け取られた前記データを、ＳＳＤアレイの１つ又は複数のＳＳＤに一時的に格納させ、その後、物理ディスク・ドライブ（ＰＤ）のＲＡＩＤアレイとして構成された１つ又は複数の磁気ハード・ディスク・ドライブ（ＨＤＤ）に格納させるキャッシング・アルゴリズムを前記第１のＤＡＳコントローラ内で実行する第２の命令セットと
を含む、コンピュータ可読媒体。
【請求項１８】
前記キャッシング・アルゴリズムは、ＰＤの前記ＲＡＩＤアレイの前記ＰＤのうちの１つ又は複数に前記データを格納する前に前記ＳＳＤアレイの前記キャッシュ・メモリに前記データをライト・バック（ＷＢ）キャッシングする、ＷＢキャッシング・アルゴリズムである、請求項１７に記載のコンピュータ可読媒体。
【請求項１９】
前記データは、それに関連付けられたメタデータを有し、前記キャッシング・アルゴリズムは、前記ＤＡＳコントローラで受け取られた前記データに関連する前記メタデータを、前記ＤＡＳコントローラのローカル・メモリ・デバイスのキャッシュ・メモリ部分に一時的に格納させ、その後、ＰＤの前記ＲＡＩＤアレイの前記ＰＤのうちの１つ又は複数に格納させる、請求項１７に記載のコンピュータ可読媒体。
【請求項２０】
前記データは、それに関連付けられたメタデータを有し、前記キャッシング・アルゴリズムは、前記ＤＡＳコントローラで受け取られた前記データに関連する前記メタデータを、前記ＳＳＤアレイの前記キャッシュ・メモリに一時的に格納させ、その後、ＰＤの前記ＲＡＩＤアレイの前記ＰＤのうちの１つ又は複数に格納させる、請求項１７に記載のコンピュータ可読媒体。
【請求項２１】
前記ＤＡＳコントローラは、前記ＳＳＤアレイ内に一時的に格納される前記データに対してキャッシュ・コヒーレンシが提供されるように、前記ＳＳＤアレイ内へのデータの前記一時的格納に関してあるＲＡＩＤテクノロジレベルを実行するように構成される、請求項１７に記載のコンピュータ可読媒体。
【請求項２２】
前記データは、それに関連付けられたメタデータを有し、前記ＤＡＳコントローラによって実行される前記キャッシング・アルゴリズムは、前記データを前記ＳＳＤアレイ内のブロックに格納させ、各ブロックは、データ保全性フィールド（ＤＩＦ）を含み、前記ＤＡＳコントローラは、前記それぞれのＤＡＳコントローラで受け取られた前記データに関連する前記メタデータを、前記ＳＳＤアレイ内で前記関連するデータが格納される前記ブロックのうちの少なくとも１つに関連する前記ＤＩＦのうちの少なくとも１つに格納させる、請求項２１に記載のコンピュータ可読媒体。
【請求項２３】
前記ＤＡＳコントローラによって実行される前記キャッシング・アルゴリズムは、前記メタデータのハッシュを計算するハッシング・アルゴリズムを含み、各それぞれのハッシュは、前記ＳＳＤアレイ内で前記関連するデータが格納される前記ブロックのうちの少なくとも１つに関連する前記ＤＩＦのうちの前記少なくとも１つに格納される、請求項２２に記載のコンピュータ可読媒体。
【請求項２４】
前記データに関連する前記メタデータは、前記データのソースの指示、前記データの長さの指示、及び前記データが変更されたか否かの指示を含む、請求項２２に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、その全体が参照によって本明細書に組み込まれている、２００９年６月８日に出願した米国仮出願第６１／２６８，０５５号、名称「ＭＥＴＨＯＤ  ＴＯ  ＥＦＦＩＣＩＥＮＴＬＹ  ＵＳＥ  ＳＳＤ  ＡＳ  ＷＢ  ＣＡＣＨＥ  ＥＬＥＭＥＮＴ  ＩＮ  ＢＯＴＨ  ＰＲＩＶＡＴＥ  ＡＮＤ  ＳＨＡＲＥＤ  ＤＡＳ  ＣＯＮＦＩＧＵＲＡＴＩＯＮＳ」の優先権及び出願日の利益を主張するものである。
【０００２】
本発明は、全般的にはデータ・ストレージ・システムに関し、より具体的には、ダイレクトアタッチト・ストレージ（ｄｉｒｅｃｔ−ａｔｔａｃｈｅｄ  ｓｔｏｒａｇｅ、ＤＡＳ）システム内にキャッシングされたデータの保全性を保護する方法及び装置に関する。
【背景技術】
【０００３】
ストレージ・アレイ又はディスク・アレイは、複数の磁気ハード・ディスク・ドライブ（ＨＤＤ）又は類似する永続ストレージ・ユニットを含むデータ・ストレージ・デバイスである。ストレージ・アレイは、大量のデータを効率的な形で格納することを可能にすることができる。サーバ又はワークステーションを、ストレージ・アレイに直接接続し、ストレージ・アレイがそのサーバ又はワークステーションにとってローカルになるようにすることができる。サーバ又はワークステーションがストレージ・アレイに直接接続される場合、そのストレージ・アレイは、通常、ダイレクトアタッチト・ストレージ（ＤＡＳ）システムと呼ばれる。その代わりに、サーバ又はワークステーションを、ストレージ・アレイ・ネットワーク（ｓｔｏｒａｇｅ  ａｒｒａｙ  ｎｅｔｗｏｒｋ、ＳＡＮ）を介してストレージ・アレイにリモート接続することもできる。ＳＡＮシステムでは、ストレージ・アレイはサーバ又はワークステーションにとってローカルではないが、アレイのディスク・ドライブは、サーバ又はワークステーションのオペレーティング・システム（ＯＳ）にはローカルに接続されているように見える。
【０００４】
ＤＡＳシステム及びＳＡＮシステムは、しばしば、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ（又はＩｎｄｅｐｅｎｄｅｎｔ）Ｄｉｓｋｓ）システムとして構成される。ＲＡＩＤシステムは、ストレージ信頼性を改善するため及び／又は入出力（Ｉ／Ｏ）性能を改善するために、ストレージ冗長性を使用する。一般に、ＲＡＩＤシステムは、通常は物理ディスク・ドライブ（ＰＤ）と呼ばれる複数の磁気ＨＤＤを同時に使用して、より高いレベルの性能、信頼性、及び／又はより大きいデータ・ボリューム・サイズを達成する。句「ＲＡＩＤ」は、一般に、複数のＰＤの間でデータを分割し、複製する、コンピュータ・データ・ストレージ方式を記述するのに使用される。ＲＡＩＤシステムでは、１つ又は複数のＰＤが、１つのＲＡＩＤ仮想ディスク・ドライブ（ＶＤ）としてセットアップされる。ＲＡＩＤ  ＶＤでは、データを複数のＰＤにまたがって分散させることができるが、ＶＤは、ユーザ及びサーバ又はワークステーションのＯＳには、単一のディスクに見える。
【０００５】
ＲＡＩＤシステムとして構成されたＤＡＳシステムでは、ＤＡＳコントローラが、ＲＡＩＤコントローラとして機能する。そのようなシステムでは、ＲＡＩＤコントローラは、そのローカル・メモリの一部をキャッシュ・メモリとして使用する。キャッシュ・メモリは、ＰＤに書き込まれるべきデータを一時的に格納するのに使用される。この目的に使用されるキャッシュ・メモリ構成の１タイプが、ライト・バック（ＷＢ）キャッシュ・メモリ構成として知られる。ＷＢキャッシュ・メモリ構成では、キャッシュ・コマンドは、通常、データがキャッシュ・メモリに移動されるや否や、完了する。そのような構成では、キャッシングされたデータの保全性を維持することは、データが、キャッシングされた後にＰＤへの書込みのためにコミットされるためにフェールオーバー・イベント又はフェールバック・イベントが発生した場合、難題となり得る。したがって、フェールオーバー・イベント又はフェールバック・イベントの発生が、キャッシングされたデータの破壊をもたらさないことを保証するために、措置を講じなければならない。言い換えると、ＤＡＳシステムは、キャッシュ・コヒーレンシを提供しなければならない。キャッシュ・コヒーレンシを提供するために、キャッシングされたデータは、通常、図１〜３を参照してこれから説明するように、別のメモリ・デバイス内で複製される。
【０００６】
図１に、ＲＡＩＤテクノロジを実施する通常のＤＡＳシステム２のブロック図を示す。システム２は、サーバ３、ＲＡＩＤコントローラ４、及びＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｉｎｔｅｒｃｏｎｎｅｃｔ）バス５を含む。ＲＡＩＤコントローラ４は、中央処理装置（ＣＰＵ）６、メモリ・デバイス７、及びＩ／Ｏインターフェース・デバイス８を含む。メモリ・デバイス７のストレージ空間の一部は、キャッシュ・メモリとして使用される。代替案では、ＲＡＩＤコントローラ４が、キャッシュ・メモリとして使用される別々のメモリ・デバイス（図示せず）を含むことができる。Ｉ／Ｏインターフェース・デバイス８は、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）標準規格及び／又はＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）標準規格などの既知のデータ転送プロトコル標準規格に従ってデータ転送を実行するように構成される。Ｉ／Ｏインターフェース・デバイス８は、複数のＰＤ  ９との間でのデータの転送を制御する。ＲＡＩＤコントローラ４は、ＰＣＩバス５を介して、サーバＣＰＵ  １１及びサーバ・メモリ・デバイス１２と通信する。サーバ・メモリ・デバイス１２は、サーバＣＰＵ  １１が実行するソフトウェア・プログラム及びデータを格納する。
【０００７】
通常の書込みアクション中に、サーバＣＰＵ  １１は、ＰＣＩバス５を介してＲＡＩＤコントローラ４に書込み要求命令を送る。ＲＡＩＤコントローラ４のＣＰＵ  ６は、ＲＡＩＤコントローラ４のメモリ・デバイス７内のキャッシュ・メモリにデータを一時的に格納させる。このデータは、その後、メモリ・デバイス７からＩ／Ｏインターフェース・デバイス８を介してＰＤ  ９のうちの１つ又は複数に転送される。メモリ・デバイス７は、ＲＡＩＤ  ＶＤの仮想アドレスとＰＤ  ９の物理アドレスとの間のマッピングを実行するコア・ロジックを含む。ＲＡＩＤコントローラ４のＣＰＵ  ６は、システム２のＲＡＩＤレベルに従って、パリティ計算などの計算を実行する。システム２の現在のＲＡＩＤレベルがパリティを使用する場合には、Ｉ／Ｏインターフェース・デバイス８は、パリティ・ビットをＰＤ  ９のうちの１つ又は複数に格納させる。
【０００８】
通常の読取り動作中に、サーバＣＰＵ  １１は、対応する読取り要求をＰＣＩバス５を介してＲＡＩＤコントローラ４に送る。ＲＡＩＤコントローラＣＰＵ  ６は、メモリ・デバイス７に保持されたロジックを使用して、要求を処理し、要求されたデータがメモリ・デバイス７内のキャッシュ・メモリに保持されている場合には、要求されたデータをメモリ・デバイス７のキャッシュ・メモリから取り出す。要求されたデータがメモリ・デバイス７内のキャッシュ・メモリに保持されていない場合には、ＲＡＩＤコントローラＣＰＵ  ６は、要求されたデータをＰＤ  ９から取り出させる。取り出されたデータは、読取り要求を満たすために、ＰＣＩバス５を介してサーバＣＰＵ  １１に転送される。
【０００９】
図２に、図１に示された複数のＲＡＩＤコントローラ４と、ＲＡＩＤコントローラ４によって共有される図１に示されたＰＤ  ９のアレイとを含む、既知の共有ＤＡＳシステム２３のブロック図を示す。共有ＤＡＳシステム２３内でキャッシュ・コヒーレンシを提供するために、ＲＡＩＤコントローラ４のうちの１つのメモリ・デバイス７内にキャッシングされたデータは、ＲＡＩＤコントローラ４がキャッシュ・ミラーリングに関して対になるように、他のＲＡＩＤコントローラ４のうちの１つのＲＡＩＤコントローラ４のメモリ・デバイス７内に複製される、すなわちミラーリングされる。キャッシングされたデータの複製は、図２では矢印２４によって表される。このタイプのキャッシュ・コヒーレンシ技法は、一般に有効であるが、フェールオーバー・イベント又はフェールバック・イベントが所与の対の両方のＲＡＩＤコントローラ４で発生する場合には、そのミラーリングされた対のキャッシングされたデータの保全性は、危険にさらされる。
【００１０】
図３に、キャッシュ・コヒーレンシが、それぞれのＲＡＩＤコントローラ４のメモリ・デバイス７内にキャッシングされたデータを他のＲＡＩＤコントローラ４それぞれのメモリ・デバイス７内に複製することによって提供される、図２に示された共有ＤＡＳシステム２３のブロック図を示す。キャッシングされたデータの複製は、図３では矢印２４及び２５によって表される。このタイプのキャッシュ・コヒーレンシ技法は、一般に有効であるが、そのような技法の物理的実装形態は、極端に複雑であり、大量の帯域幅を利用する。さらに、システム２３がスケール・アウトされ、より多数のＲＡＩＤコントローラ４がシステム２３に追加されるとき、システム２３の複雑さ及びキャッシュ・ミラーリングに利用される帯域幅の量は、指数関数的に増える。これらの理由から、このキャッシュ・コヒーレンシ解決策は、ほとんどの場合に非実用的である。
【００１１】
ＤＡＳシステムでのキャッシュ・コヒーレンシ問題に対するもう１つの解決策は、ＷＢキャッシュ構成ではなくＷＴキャッシュ構成を使用することである。しかし、ＷＢキャッシュ構成ではなくＷＴキャッシュ構成を使用すると、一般に、ＤＡＳシステムのＩ／Ｏ性能を劣化させ、したがって、競争的な市場において多くのストレージ・アプリケーションにとって不適切である。キャッシュ・コヒーレンシ問題は、ＳＡＮコントローラを使用して簡単に対処することができるが、そのような解決策は、相対的に高価であり、多くの場合に実施が不可能なほどに高価である。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】米国仮出願第６１／２６８，０５５号
【発明の概要】
【発明が解決しようとする課題】
【００１３】
したがって、キャッシングされたデータの保全性を十分に保護し、ＤＡＳシステムで使用される既知のキャッシュ・コヒーレンシ解決策の上述の制限を克服する、ＤＡＳシステムの必要が存在する。
【課題を解決するための手段】
【００１４】
本発明は、キャッシングされたデータの保全性を保護するＤＡＳシステム、方法、及びコンピュータ可読媒体を提供する。このＤＡＳシステムは、ＰＤのＲＡＩＤアレイとして構成された複数の磁気ＨＤＤと、キャッシュ・メモリとして構成されたＳＳＤ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｉｓｋ）のアレイと、ＰＤのＲＡＩＤアレイ及びＳＳＤアレイに接続された少なくとも第１の及び第２のＤＡＳコントローラとを含む。各ＤＡＳコントローラハ、ＣＰＵ、ローカル・メモリ・デバイス、及びＩ／Ｏインターフェース・デバイスを有する。ＣＰＵのそれぞれ及びローカル・メモリ・デバイスのそれぞれは、ＰＤのＲＡＩＤアレイのＲＡＩＤ構成と整合するＲＡＩＤテクノロジレベルを実行するように構成される。各ＣＰＵは、それぞれのＤＡＳコントローラ内で受け取られたデータをＳＳＤアレイのキャッシュ・メモリに一時的に格納させ、その後、ＰＤのＲＡＩＤアレイのＰＤのうちの１つ又は複数に格納させる、キャッシング・アルゴリズムを実行するように構成される。
【００１５】
ＤＡＳシステム内でキャッシングされたデータの保全性を保護する方法は、第１のＤＡＳコントローラ内でデータを受け取ること、第１のＤＡＳコントローラ内で受け取られたデータをＳＳＤアレイの１つ又は複数のＳＳＤに一時的に格納させ、その後、ＰＤのＲＡＩＤアレイとして構成された１つ又は複数の磁気ＨＤＤに格納させる、キャッシング・アルゴリズムを第１のＤＡＳコントローラのＣＰＵ内で実行すること、第２のＤＡＳコントローラ内でデータを受け取ること、ならびに第２のＤＡＳコントローラ内で受け取られたデータをＳＳＤアレイ内の１つ又は複数のＳＳＤに一時的に格納させ、その後、ＰＤのＲＡＩＤアレイとして構成された磁気ＨＤＤのうちの１つ又は複数に格納させる、キャッシング・アルゴリズムを第２のＤＡＳコントローラのＣＰＵ内で実行することを含む。
【００１６】
コンピュータ可読媒体は、ＤＡＳコントローラによって実行される、第１の命令セット及び第２の命令セットを含む。第１の命令セットは、ＤＡＳコントローラでデータを受け取る。第２の命令セットは、第１のＤＡＳコントローラで受け取られたデータを、ＳＳＤアレイの１つ又は複数のＳＳＤに一時的に格納させ、その後、ＰＤのＲＡＩＤアレイとして構成された１つ又は複数の磁気ＨＤＤに格納させるキャッシング・アルゴリズムを第１のＤＡＳコントローラ内で実行する。
【００１７】
本発明の上記及び他の特徴及び利点は、以下の説明、図面、及び特許請求の範囲から明らかになる。
【図面の簡単な説明】
【００１８】
【図１】ＲＡＩＤテクノロジを実施する既知のＤＡＳシステムを示すブロック図である。
【図２】図１に示された複数のＲＡＩＤコントローラが図１に示されたＰＤのアレイを共有し、キャッシングされたデータをＲＡＩＤコントローラ対のメモリ・デバイス内にミラーリングすることによってキャッシュ・コヒーレンシが提供される、共有ＤＡＳシステムを示すブロック図である。
【図３】各ＲＡＩＤコントローラのキャッシングされたデータを他のＲＡＩＤコントローラのすべてのメモリ・デバイス内にミラーリングすることによってキャッシュ・コヒーレンシが提供される、図２に示された共有ＤＡＳシステムを示すブロック図である。
【図４】ＤＡＳシステムのＤＡＳコントローラの外部の少なくとも１つの共有ＳＳＤ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｉｓｋ）が、ＤＡＳシステムのＰＤに書き込まれるデータをキャッシングするＷＢキャッシュ・メモリとして使用される、一実施形態による共有ＤＡＳシステムを示すブロック図である。
【図５】図４に示されたＤＡＳコントローラの１つを示すブロック図である。
【図６】例示的実施形態による、図４に示されたＤＡＳコントローラの１つのＣＰＵによって実行されるＷＢキャッシング・アルゴリズムを表す流れ図である。
【図７】データはＳＳＤアレイ内にキャッシングされるが、関連するメタデータはＤＡＳコントローラの内部のキャッシュ・メモリ内にキャッシングされる、例示的一実施形態による図４に示されたＤＡＳシステムを示すブロック図である。
【図８】データ及び関連するメタデータがＳＳＤアレイ内にキャッシングされる、例示的一実施形態による図４に示されたＤＡＳシステムを示すブロック図である。
【図９】図８に示されたＤＡＳコントローラによって実行されるＷＢキャッシング・アルゴリズムを表す流れ図である。
【発明を実施するための形態】
【００１９】
本発明によれば、ＤＡＳシステムのＤＡＳコントローラの外部のＳＳＤ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｉｓｋ）のアレイが、ＤＡＳコントローラにより、ＷＢキャッシング動作を実行するためのＷＢキャッシュ・メモリとして使用される、ＲＡＩＤテクノロジを実施するＤＡＳシステムが提供される。外部ＳＳＤアレイをＷＢキャッシュ・メモリとして使用すると、ＤＡＳシステムの複雑さを大幅には増やさず、キャッシング動作を実行するために利用される帯域幅の量を増やさずに、ＤＡＳシステムを完全にキャッシュ・コヒーレントにすることが可能になる。さらに、外部ＳＳＤアレイをＷＢキャッシュ・メモリとして使用すると、図１〜３を参照して上で説明したようにＤＡＳコントローラをミラーリングする必要がなくなる。
【００２０】
図４に、ＤＡＳシステム１００のＳＳＤアレイ１１０が、ＤＡＳシステム１００の複数のＤＡＳコントローラ１２０によりＷＢキャッシュ・メモリとして共有される、例示的実施形態による本発明のＤＡＳシステム１００のブロック図を示す。図５に、図４に示されたＤＡＳコントローラ１２０のうちの１つのブロック図を示す。ＤＡＳシステム１００のＤＡＳコントローラ１２０は、図１に示されたＲＡＩＤコントローラ４の構成と同一の又はこれに類似する構成を有する。ＤＡＳコントローラ１２０のそれぞれは、キャッシング動作に関するものを除いて、ＲＡＩＤコントローラ４が動作するのと同じように動作する。したがって、図１に示されたＲＡＩＤコントローラ４の場合と同様に、図４に示されたＤＡＳコントローラ１２０もそれぞれ、ＲＡＩＤコントローラとして構成される。ＤＡＳシステム１００は、ＲＡＩＤテクノロジを使用する。本発明は、ＤＡＳシステム１００内で使用されるＲＡＩＤのレベルに関して限定されない。
【００２１】
ＲＡＩＤは、異なるシステム設計に対応する７つの基本レベルを有し、これらのレベルのいずれか１つ又は複数を、ＤＡＳシステム１００内で実施することができる。異なるＲＡＩＤレベルの簡単な説明をこれから行うが、これらのＲＡＩＤレベルは、当技術分野で周知である。通常はＲＡＩＤレベル０〜６と称する、７つの基本ＲＡＩＤレベルは、次のとおりである。ＲＡＩＤレベル０は、改善されたデータ信頼性及び高められたＩ／Ｏ性能を達成するためにストライピングを使用する。用語「ストライピング」は、単一のデータ・ファイルなど論理的に順次のデータが、フラグメント化され、ラウンドロビン形式で複数のＰＤに割り当てられることを意味する。したがって、データは、そのデータが書き込まれるとき、複数のＰＤ上に「ストライピングされる」と言われる。ストライピングは、性能を改善し、追加のストレージ容量を提供する。ＲＡＩＤレベル１は、パリティなしのミラーリングを使用する。用語「ミラーリング」は、データが継続的に使用可能であることを保証するために、データが別々のＰＤ上にリアル・タイムで複製されることを意味する。このタイプの複製は、データ冗長性を提供する。ＲＡＩＤレベル２は、冗長性及びストライピングを使用する。ＲＡＩＤレベル２では、冗長性は、ハミング・コードの使用によって達成され、このハミング・コードは、ＰＤ上のビットにまたがって計算され、複数のＰＤに格納される。あるＰＤが故障した場合に、パリティ・ビットを使用して、データを再構成することができる。
【００２２】
ＲＡＩＤレベル３システムは、バイトレベル・ストライピングを、インターリーブされたパリティ・ビット及び専用パリティＰＤと組み合わせて使用する。バイトレベル・ストライピング及び冗長性の使用は、改善された性能をもたらし、システムにフォールト・トレランスを与える。ＲＡＩＤレベル３システムは、パリティなしで動作を継続することができ、パリティＰＤが故障した場合に、性能ペナルティをこうむらない。ＲＡＩＤレベル４は、ＲＡＩＤレベル４システムがバイトレベル又はワード・レベルのストライピングではなくブロックレベルのストライピングを使用することを除いて、ＲＡＩＤレベル３と本質的に同一である。各ストライプは、比較的大きいので、単一のファイルを１ブロックに格納することができる。各ＰＤは独立に動作し、多数の異なるＩ／Ｏ要求を、並列に処理することができる。誤り検出は、ブロック・レベル・パリティ・ビット・インターリービングを使用することによって達成される。インターリーブされたパリティ・ビットは、別々の単一のパリティＰＤに格納される。
【００２３】
ＲＡＩＤレベル５は、ストライピングを分散パリティと組み合わせて使用する。分散パリティを実施するには、システムが動作するために１つを除くすべてのＰＤが存在しなければならない。ＰＤのうちのいずれか１つが故障すると、ＰＤの交換が必要となる。しかし、ＰＤのうちの単一のＰＤが故障しても、システムの故障は起こらない。ＲＡＩＤレベル６は、ストライピングを二重分散パリティと組み合わせて使用する。ＲＡＩＤレベル６システムは、少なくとも４つのＰＤの使用を必要とし、ＰＤのうちの２つは、分散パリティ・ビットを格納するのに使用される。このシステムは、２つのＰＤが故障した場合でも動作し続けることができる。二重パリティは、各ＶＤがより多数のＰＤから構成されるシステムで、ますます重要になる。単一パリティを使用するＲＡＩＤレベルシステムは、故障したドライブがリビルドされるまで、データ消失に対して脆弱である。ＲＡＩＤレベル６システムでは、二重パリティを使用することにより、他のＶＤのうちの１つのＰＤが、第１のの故障したＰＤのリビルド完了前に故障した場合に、故障したＰＤを有するＶＤを、データの消失の危険を冒さずにリビルドすることが可能になる。
【００２４】
もう一度図５を参照すると、ＤＡＳコントローラ１２０は、ＣＰＵ１３０Ｃ、メモリ・デバイス１４０、及びＩ／Ｏインターフェース・デバイス１５０を含む。Ｉ／Ｏインターフェース・デバイス１５０は、ＰＤ１２９との間でのデータの転送を制御する。Ｉ／Ｏインターフェース・デバイス１５０は、通常、たとえばＳＡＳ標準規格及び／又はＳＡＴＡ標準規格ならびにその変形などの既知のデータ転送プロトコル標準規格に従ってデータ転送を実行するように構成されるが、他の既知のデータ転送プロトコルならびに所有権付きのデータ転送プロトコルをこの目的に使用することもできる。
【００２５】
ＤＡＳシステム１００の動作を、これから図４及び５を参照して説明する。通常の書込み動作中に、ＤＡＳコントローラ１２０のＣＰＵ１３０は、ＰＤ１２９のうちの１つ又は複数に書き込まれるデータを外部サーバ又はワークステーション（図示せず）から受け取る。ＤＡＳコントローラＣＰＵ１３０は、ＳＳＤアレイ１１０をＷＢキャッシュ・メモリとして使用して、ＰＤ１２９に書き込まれるデータを一時的に格納する。ＳＳＤ１１０でデータをＷＢキャッシングするプロセスを、下記で図６を参照してより詳細に説明する。データがＳＳＤ１１０にＷＢキャッシングされた後のある時点で、ＤＡＳコントローラＣＰＵ１３０は、キャッシングされたデータをＳＳＤ１１０から転送させ、ＰＤ１２９のうちの１つ又は複数に格納させる。メモリ・デバイス１４０は、ＲＡＩＤ  ＶＤの仮想アドレスとＰＤ１２９の物理アドレスとの間のマッピングを実行するコア・ロジックを含む。ＤＡＳコントローラ１２０は、キャッシングされたデータをＰＤ１２９の対応する物理アドレスに格納させる。ＤＡＳコントローラＣＰＵ１３０は、ＤＡＳシステム１００のＲＡＩＤレベルに従って、パリティ計算などの計算をも実行する。たとえば、ＤＡＳシステム１００のＲＡＩＤレベルがパリティを使用する場合、ＤＡＳコントローラＣＰＵ１３０は、パリティ・ビットを計算し、Ｉ／Ｏインターフェース・デバイス１５０は、そのパリティ・ビットをＰＤ１２９のうちの１つ又は複数に格納させる。
【００２６】
通常の読取り動作中に、ＤＡＳコントローラＣＰＵ１３０は、外部サーバ又はワークステーション（図示せず）から読取り要求を受け取り、メモリ・デバイス１４０内に保持されたロジックを使用することによって、その読取り要求を処理して、データをそこから読み取るべきＰＤ１２９のうちの１つ又は複数のＰＤの物理アドレスを決定する。次に、ＤＡＳコントローラＣＰＵ１３０は、要求されたデータを、そのデータがＰＤ１２９内に存在するアドレスから取り出させ、外部サーバ又はワークステーション（図示せず）に送らせる。メモリ・デバイス１４０の一部又はＤＡＳコントローラ１２０内の他の何らかのメモリ・デバイス（図示せず）を、読取りキャッシュ・メモリとして使用することができ、その場合、ＣＰＵ１３０は、要求されたデータが読取りキャッシュ・メモリ内に保持されているとＣＰＵ１３０が判定した場合に、ＰＤ１２９からではなく、読取りキャッシュ・メモリからデータを読み取る。
【００２７】
図６に、例示的一実施形態による、ＤＡＳコントローラ１２０のうちの１つのＤＡＳコントローラ１２０のＣＰＵ１３０によって実行されるＷＢキャッシング・アルゴリズムを表す流れ図を示す。各ＤＡＳコントローラ１２０のＣＰＵ１３０が、このＷＢキャッシング・アルゴリズムを実行する。しかし、簡略にするために、このアルゴリズムを、ＤＡＳコントローラ１２０のうちの１つを参照して説明するのみとする。サーバ又はワークステーション（図示せず）が、ＰＤ１２９に書き込まれるデータをＤＡＳコントローラ１２０に送ると、ＤＡＳコントローラ１２０は、ブロック２０１によって示されるように、そのデータを受け取る。次に、ＣＰＵ１３０は、ブロック２０３によって示されるように、キャッシュ「ヒット」又はキャッシュ「ミス」のどちらが発生したかを判定するために、受け取られたデータを処理する。キャッシュ「ヒット」は、データが現在はＳＳＤ１１０内のキャッシュ・メモリに保持されているとＣＰＵ１３０が判定したことを意味する。キャッシュ「ミス」は、データが現在はキャッシュ・メモリに保持されていないとＣＰＵ１３０が判定したことを意味する。
【００２８】
ＣＰＵ１３０が、キャッシュ・ミスが発生したと判定した場合、ＣＰＵ１３０は、ブロック２０５によって示されるように、データをＳＳＤアレイ１１０のキャッシュ・メモリに書き込ませる。データがＳＳＤアレイ１１０のキャッシュ・メモリに書き込まれた後のある時点で、ＣＰＵ１３０は、ブロック２０６によって示されるように、データをＰＤ１２９内の物理アドレスに格納させる。ブロック２０３で、ＣＰＵ１３０が、キャッシュ・ヒットが発生したと判定した場合、ＣＰＵ１３０は、ブロック２０６によって表されるステップで、ＳＳＤアレイ１１０のキャッシュ・メモリ内に保持された対応するデータを、ＳＳＤアレイ１１０内の対応する物理アドレスに格納させる。
【００２９】
図１〜３を参照して上記で説明した既知のキャッシュ・コヒーレンシ方法とは対照的に、本発明によれば、キャッシュ・コヒーレンシは、ＳＳＤアレイ１１０のあるＲＡＩＤテクノロジレベルを使用することによって提供される。具体的に言うと、ＤＡＳコントローラ１２０が、ＳＳＤアレイ１１０内のキャッシュ・メモリにデータを格納するとき、そのデータがキャッシングされるＳＳＤアレイ１１０のＳＳＤが故障の場合にデータを回復できることを保証するために、ＲＡＩＤテクノロジが使用される。たとえば、ＤＡＳコントローラ１２０のそれぞれがＳＳＤアレイ１１０内のキャッシュ・メモリ内にデータを格納するとき、そのデータが、ＳＳＤアレイ１１０の複数のＳＳＤにまたがってストライピングされるように、ＲＡＩＤレベル０を使用することができる。たとえば、ＲＡＩＤレベル１が使用される場合、ＤＡＳコントローラ１２０のそれぞれがＳＳＤアレイ１１０内のキャッシュ・メモリ内にデータを格納するとき、そのデータは、ＳＳＤアレイ１１０の複数のＳＳＤ内に複製される、すなわち、ミラーリングされる。ＳＳＤアレイ１１０のＳＳＤのうちの１つが故障した場合、ＳＳＤアレイ１１０を用いて実施されたＲＡＩＤテクノロジレベルが、データの回復を可能にする。このようにして、ＤＡＳシステム１００は、完全にキャッシュ・コヒーレントである。本発明は、ＳＳＤアレイ１１０のキャッシュ・メモリ内にキャッシングされるデータのキャッシュ・コヒーレンシを保証するのに使用されるＲＡＩＤレベルに関して限定されない。
【００３０】
また、ＳＳＤアレイ１１０は、必ずではないが通常、それぞれのＤＡＳコントローラ１２０によって使用されるそれぞれの部分に区分される。たとえば、合計Ｎ個のＤＡＳコントローラ１２０があり、Ｎが、１以上の正の整数であると仮定すると、ＳＳＤアレイ１１０の記憶容量は、Ｎ個の等しい部分に分割され、各部分は、それぞれのＤＡＳコントローラ１２０によって使用される。このようにＳＳＤアレイ１１０を区分すると、ＤＡＳコントローラ１２０がＳＳＤアレイ１１０にアクセスする際のアクセス衝突が回避される。しかし、ＤＡＳコントローラ１２０のうちの１つが故障した場合は、他のＤＡＳコントローラ１２０のうちの１つが、ＳＳＤアレイ１１０内に格納されている、故障したＤＡＳコントローラ１２０に関連するデータにアクセスすることができる。
【００３１】
当技術分野で既知のように、データには、たとえば、データのソースの識別（すなわち、ハッシュ・キャッシュ・タグ）、データ・ストリームの長さ、及びデータが変更されたか否か（すなわち、状況表示）など、データの属性を定義するメタデータが関連付けられる。ＤＡＳシステムでは、メタデータは、通常、ＤＡＳコントローラの内部のダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）に格納される。本発明の例示的一実施形態によれば、メタデータは、ＤＡＳコントローラ１２０のメモリ・デバイス１４０に格納され、対応するデータは、図４〜６を参照して上記で説明したように、ＳＳＤアレイ１１０のキャッシュ・メモリに格納される。メタデータを扱うこの例示的一実施形態を、これから図７を参照して説明する。
【００３２】
図７に、データはＳＳＤアレイ１１０内にキャッシングされるが、関連するメタデータはＤＡＳコントローラ１２０の内部のキャッシュ・メモリ内にキャッシングされる、例示的一実施形態による図４に示されたＤＡＳシステム１００のブロック図を示す。この実施形態によれば、ＤＡＳコントローラ１２０のうちの１つのＤＡＳコントローラ１２０のＣＰＵ１３０が、データをＳＳＤアレイ１１０のキャッシュ・メモリに格納するときに、対応するメタデータは、ＤＡＳコントローラ１２０のメモリ・デバイス１４０のキャッシュ・メモリ部分（図示せず）又はＤＡＳコントローラ１２０の他の何らかのメモリ・デバイス（図示せず）に格納される。さらに、メタデータのキャッシュ・コヒーレンシを提供するために、ＤＡＳコントローラ１２０内のキャッシュ・メモリに格納されるメタデータは、図７で隣接するＤＡＳコントローラ１２０の間を通る矢印によって示されるように、他のＤＡＳコントローラ１２０のうちの１つ又は複数のＤＡＳコントローラ１２０のキャッシュ・メモリ内にミラーリングされる。このようにして、ＤＡＳコントローラ１２０のうちの１つが故障した場合に、対応するメタデータを、そのメタデータがミラーリングされた、他のＤＡＳコントローラ１２０のキャッシュ・メモリから回復することができる。
【００３３】
図８に、データ及び関連するメタデータがＳＳＤアレイ１１０内にキャッシングされる、例示的一実施形態による図４に示されたＤＡＳシステム１００のブロック図を示す。ＳＳＤでは、データは、通常、所定の個数のバイト（Ｂ）、たとえばブロックあたり５２０Ｂのブロックで書き込まれる。ブロックのフォーマットは、情報技術規格国際委員会（ＩｎｔｅｒＮａｔｉｏｎａｌ  Ｃｏｍｍｉｔｔｅｅ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ  Ｓｔａｎｄａｒｄｓ、ＩＮＣＩＴＳ）の標準規格Ｔ１０によって規定される。標準規格Ｔ１０は、各データ・ブロックが、巡回冗長検査（ＣＲＣ）ビット、アプリケーションタグ・ビット、及び基準タグ・ビットなどの保護情報を含むデータ保全性フィールド（ｄａｔａ  ｉｎｔｅｇｒｉｔｙ  ｆｉｅｌｄ、ＤＩＦ）を含むことを規定する。標準規格Ｔ１０によって定義されたＤＩＦは、各ブロックの終りの８Ｂからなる。したがって、各ブロックは、５１２Ｂのデータ及び８ＢのＤＩＦからなる。この例示的実施形態によれば、各データ・ブロックの８ＢのＤＩＦは、そのデータ・ブロックに関連するメタデータを表すのに使用される。したがって、データ及びそれに関連するメタデータは、ＳＳＤアレイ１１０のキャッシュ・メモリ内に一緒に格納される。
【００３４】
データ及びそれに関連するメタデータを一緒にキャッシングすると、動作中の電源障害の場合に、データは更新されるがそれに関連するメタデータは更新されない又はその逆であることを保証する。たとえば、データ及びメタデータが、異なるメモリ・デバイス内に互いに独立にキャッシングされる場合、あるメモリ・デバイスの電源障害により、故障したメモリ・デバイスに格納されるデータ又はメタデータは更新されないが、電源障害をこうむらない他のメモリ・デバイスに格納されるデータ又はメタデータが更新される可能性がある。データ及びメタデータをＳＳＤアレイ１１０のキャッシュ・メモリに一緒にキャッシングすることによって、この問題が除去される。
【００３５】
この例示的実施形態によれば、ＳＳＤアレイ１１０のキャッシュ・メモリ内のキャッシュ・ラインは、６４ＫＢからなり、Ｋ＝１０２４である。所与のキャッシュ・ラインの各ブロックは、５１２Ｂのデータからなるので、各キャッシュ・ラインは、１２８個のブロックからなる（すなわち、（６４Ｂｘ１０２４）／５１２Ｂ＝１２８）。所与のキャッシュ・ラインの１２８個のブロックのそれぞれのＤＩＦは、８Ｂのメタデータからなる。しかし、キャッシュ・ラインごとに、約６４Ｂのメタデータしか必要でない。この６４Ｂのメタデータは、８Ｂ部分に分割される。したがって、所与のキャッシュ・ラインに使用される８ブロックのＤＩＦだけが、メタデータのために必要である。この例示的実施形態によれば、各１２８ブロック・キャッシュ・ラインの最初の８ブロックが、キャッシュ・ラインに含まれるデータに関連する８Ｂのメタデータに割り当てられる。冗長性を提供するために、同じ８Ｂのメタデータが、キャッシュ・ラインの次の８ブロックの８つのＤＩＦのそれぞれに複製される。６４Ｂのメタデータのハッシュが、キャッシュ・ラインの最後の８ブロックの８つのＤＩＦに含まれる。この手法は、キャッシュ・ラインに書き込まれる最初のブロック及び最後のブロックが、ハッシュによって互いに関連付けられるので、原子性を保証する。
【００３６】
図９に、図８に示されたＤＡＳコントローラ１２０によって実行されるＷＢキャッシング・アルゴリズムを表す流れ図を示す。このアルゴリズムを、図５、８、及び９を参照して説明する。ＤＡＳコントローラ１２０のそれぞれのＤＡＳコントローラのＣＰＵ１３０が、このＷＢキャッシング・アルゴリズムを実行する。しかし、簡略にするために、このアルゴリズムを、ＤＡＳコントローラ１２０のうちの１つを参照して説明するのみとする。サーバ又はワークステーション（図示せず）が、ＰＤ１２９に書き込まれるデータをＤＡＳコントローラ１２０に送るとき、ＤＡＳコントローラ１２０は、ブロック３０１によって示されるように、データ及びそれに関連するメタデータを受け取る。次に、ＣＰＵ１３０は、ブロック３０３によって示されるように、キャッシュ「ヒット」又はキャッシュ「ミス」のどちらが発生したかを判定するために、受け取られたデータを処理する。
【００３７】
ＣＰＵ１３０が、キャッシュ・ミスが発生したと判定した場合、ＣＰＵ１３０は、ブロック３０５によって示されるように、メタデータ・ハッシュを計算し、データ、メタデータ、及びメタデータ・ハッシュをＳＳＤアレイ１１０のキャッシュ・メモリに書き込ませる。メタデータ・ハッシュを計算するためのさまざまな既知のハッシング・アルゴリズムが存在する。任意の適切な既知のハッシング・アルゴリズムを、この目的に使用することができる。したがって、簡略にするために、メタデータ・ハッシュを計算するのに使用されるアルゴリズムについては、本明細書では説明しない。
【００３８】
データがＳＳＤアレイ１１０のキャッシュ・メモリに書き込まれた後のある時点で、ＣＰＵ１３０は、ブロック３０６によって示されるように、データ及びそれに関連するメタデータをＰＤ１２９内の物理アドレスに格納させる。ブロック３０３で、ＣＰＵ１３０が、キャッシュ・ヒットが発生したと判定した場合、ＣＰＵ１３０は、ブロック３０６によって表されるステップで、ＳＳＤアレイ１１０のキャッシュ・メモリ内に保持される対応するデータ及びメタデータを、ＳＳＤアレイ１１０内の対応する物理アドレスに格納させる。
【００３９】
図６及び９を参照して上記で説明したＷＢキャッシング・アルゴリズムを、さまざまな形で実施できることに留意されたい。このＷＢアルゴリズムは、通常は、ハードウェアのみで又はハードウェアとソフトウェア又はファームウェアとの組合せで、ＣＰＵ１３０内で実行される。この目的に使用されるソフトウェア命令又はファームウェア命令は、たとえばＤＡＳコントローラ１２０のメモリ・デバイス１４０内など、コンピュータ可読媒体内に格納される。
【００４０】
当業者は、上記で説明した実施形態に対して多くの変形を加えることができ、そのような変形形態のすべてが本発明の範囲内にあることを理解するであろう。たとえば、ＤＩＦを使用しないＳＳＤが、市場で入手可能である。そのようなＳＳＤは、データ、メタデータ、及びメタデータ・ハッシュをキャッシングするために本発明と共に使用するのに適する。本発明は、ＳＳＤアレイ１１０内で特定のタイプ又は構成のＳＳＤを使用することに限定されない。本発明は、ＤＡＳコントローラ１２０の構成に関しても限定されない。図５に示されたＤＡＳコントローラ１２０の構成は、本発明と共に使用するのに適するＤＡＳ構成の単なる一例である。
【００４１】
本発明を、上記では本発明の原理及び概念を実証するために例示的実施形態を参照して説明したことに留意されたい。当業者は、本明細書で説明された実施形態に対して多くの変更を加えることができ、そのような変更のすべてが本発明の範囲に含まれることを理解するであろう。
【図１】
2010282628.tif 000003
【図２】
2010282628.tif 000004
【図３】
2010282628.tif 000005
【図４】
2010282628.tif 000006
【図５】
2010282628.tif 000007
【図６】
2010282628.tif 000008
【図７】
2010282628.tif 000009
【図８】
2010282628.tif 000010
【図９】
2010282628.tif 000011
【外国語明細書】
2010282628.tif 000012
2010282628.tif 000013
2010282628.tif 000014
2010282628.tif 000015
2010282628.tif 000016
2010282628.tif 000017
2010282628.tif 000018
2010282628.tif 000019
2010282628.tif 000020
2010282628.tif 000021
2010282628.tif 000022
2010282628.tif 000023
2010282628.tif 000024
2010282628.tif 000025
2010282628.tif 000026
2010282628.tif 000027
2010282628.tif 000028
2010282628.tif 000029
2010282628.tif 000030
2010282628.tif 000031
2010282628.tif 000032
2010282628.tif 000033
2010282628.tif 000034
2010282628.tif 000035
2010282628.tif 000036
2010282628.tif 000037
2010282628.tif 000038
2010282628.tif 000039
2010282628.tif 000040
2010282628.tif 000041