JP2014038660A - ダイレクトアタッチト・ストレージ(das)システムでキャッシングされたデータの保全性を保護する方法及び装置 - Google Patents
ダイレクトアタッチト・ストレージ(das)システムでキャッシングされたデータの保全性を保護する方法及び装置 Download PDFInfo
- Publication number
- JP2014038660A JP2014038660A JP2013236874A JP2013236874A JP2014038660A JP 2014038660 A JP2014038660 A JP 2014038660A JP 2013236874 A JP2013236874 A JP 2013236874A JP 2013236874 A JP2013236874 A JP 2013236874A JP 2014038660 A JP2014038660 A JP 2014038660A
- Authority
- JP
- Japan
- Prior art keywords
- das
- data
- raid
- array
- cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
- G06F2212/262—Storage comprising a plurality of storage devices configured as RAID
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】本発明は、キャッシングされたデータの保全性を十分に保護し、DASシステムで使用される既知のキャッシュ・コヒーレンシ解決策の制限を克服する、DASシステムを提供することを目的とする。
【解決手段】DASシステムのDASコントローラの外部のSSDのアレイが、WBキャッシング動作を実行するためのWBキャッシュ・メモリとしてDASコントローラによって使用される、RAIDテクノロジを実施するDASシステムを提供する。WBキャッシュ・メモリとして外部SSDアレイを使用することにより、DASシステムの複雑さを大幅には増やさず、キャッシング動作の実行に利用される帯域幅の量を増やさずに、DASシステムが完全にキャッシュ・コヒーレントにすることが可能になる。さらに、WBキャッシュ・メモリとして外部SSDアレイを使用することにより、DASコントローラをミラーリングする必要がなくなる。
【選択図】図4
【解決手段】DASシステムのDASコントローラの外部のSSDのアレイが、WBキャッシング動作を実行するためのWBキャッシュ・メモリとしてDASコントローラによって使用される、RAIDテクノロジを実施するDASシステムを提供する。WBキャッシュ・メモリとして外部SSDアレイを使用することにより、DASシステムの複雑さを大幅には増やさず、キャッシング動作の実行に利用される帯域幅の量を増やさずに、DASシステムが完全にキャッシュ・コヒーレントにすることが可能になる。さらに、WBキャッシュ・メモリとして外部SSDアレイを使用することにより、DASコントローラをミラーリングする必要がなくなる。
【選択図】図4
Description
関連出願の相互参照
本願は、その全体が参照によって本明細書に組み込まれている、2009年6月8日に出願した米国仮出願第61/268,055号、名称「METHOD TO EFFICIENTLY USE SSD AS WB CACHE ELEMENT IN BOTH PRIVATE AND SHARED DAS CONFIGURATIONS」の優先権及び出願日の利益を主張するものである。
本願は、その全体が参照によって本明細書に組み込まれている、2009年6月8日に出願した米国仮出願第61/268,055号、名称「METHOD TO EFFICIENTLY USE SSD AS WB CACHE ELEMENT IN BOTH PRIVATE AND SHARED DAS CONFIGURATIONS」の優先権及び出願日の利益を主張するものである。
本発明は、全般的にはデータ・ストレージ・システムに関し、より具体的には、ダイレクトアタッチト・ストレージ(direct−attached storage、DAS)システム内にキャッシングされたデータの保全性を保護する方法及び装置に関する。
ストレージ・アレイ又はディスク・アレイは、複数の磁気ハード・ディスク・ドライブ(HDD)又は類似する永続ストレージ・ユニットを含むデータ・ストレージ・デバイスである。ストレージ・アレイは、大量のデータを効率的な形で格納することを可能にすることができる。サーバ又はワークステーションを、ストレージ・アレイに直接接続し、ストレージ・アレイがそのサーバ又はワークステーションにとってローカルになるようにすることができる。サーバ又はワークステーションがストレージ・アレイに直接接続される場合、そのストレージ・アレイは、通常、ダイレクトアタッチト・ストレージ(DAS)システムと呼ばれる。その代わりに、サーバ又はワークステーションを、ストレージ・アレイ・ネットワーク(storage array network、SAN)を介してストレージ・アレイにリモート接続することもできる。SANシステムでは、ストレージ・アレイはサーバ又はワークステーションにとってローカルではないが、アレイのディスク・ドライブは、サーバ又はワークステーションのオペレーティング・システム(OS)にはローカルに接続されているように見える。
DASシステム及びSANシステムは、しばしば、RAID(Redundant Array of Inexpensive(又はIndependent)Disks)システムとして構成される。RAIDシステムは、ストレージ信頼性を改善するため及び/又は入出力(I/O)性能を改善するために、ストレージ冗長性を使用する。一般に、RAIDシステムは、通常は物理ディスク・ドライブ(PD)と呼ばれる複数の磁気HDDを同時に使用して、より高いレベルの性能、信頼性、及び/又はより大きいデータ・ボリューム・サイズを達成する。句「RAID」は、一般に、複数のPDの間でデータを分割し、複製する、コンピュータ・データ・ストレージ方式を記述するのに使用される。RAIDシステムでは、1つ又は複数のPDが、1つのRAID仮想ディスク・ドライブ(VD)としてセットアップされる。RAID VDでは、データを複数のPDにまたがって分散させることができるが、VDは、ユーザ及びサーバ又はワークステーションのOSには、単一のディスクに見える。
RAIDシステムとして構成されたDASシステムでは、DASコントローラが、RAIDコントローラとして機能する。そのようなシステムでは、RAIDコントローラは、そのローカル・メモリの一部をキャッシュ・メモリとして使用する。キャッシュ・メモリは、PDに書き込まれるべきデータを一時的に格納するのに使用される。この目的に使用されるキャッシュ・メモリ構成の1タイプが、ライト・バック(WB)キャッシュ・メモリ構成として知られる。WBキャッシュ・メモリ構成では、キャッシュ・コマンドは、通常、データがキャッシュ・メモリに移動されるや否や、完了する。そのような構成では、キャッシングされたデータの保全性を維持することは、データが、キャッシングされた後にPDへの書込みのためにコミットされるためにフェールオーバー・イベント又はフェールバック・イベントが発生した場合、難題となり得る。したがって、フェールオーバー・イベント又はフェールバック・イベントの発生が、キャッシングされたデータの破壊をもたらさないことを保証するために、措置を講じなければならない。言い換えると、DASシステムは、キャッシュ・コヒーレンシを提供しなければならない。キャッシュ・コヒーレンシを提供するために、キャッシングされたデータは、通常、図1〜3を参照してこれから説明するように、別のメモリ・デバイス内で複製される。
図1に、RAIDテクノロジを実施する通常のDASシステム2のブロック図を示す。システム2は、サーバ3、RAIDコントローラ4、及びPCI(peripheral interconnect)バス5を含む。RAIDコントローラ4は、中央処理装置(CPU)6、メモリ・デバイス7、及びI/Oインターフェース・デバイス8を含む。メモリ・デバイス7のストレージ空間の一部は、キャッシュ・メモリとして使用される。代替案では、RAIDコントローラ4が、キャッシュ・メモリとして使用される別々のメモリ・デバイス(図示せず)を含むことができる。I/Oインターフェース・デバイス8は、SAS(Serial Attached SCSI)標準規格及び/又はSATA(Serial Advanced Technology Attachment)標準規格などの既知のデータ転送プロトコル標準規格に従ってデータ転送を実行するように構成される。I/Oインターフェース・デバイス8は、複数のPD 9との間でのデータの転送を制御する。RAIDコントローラ4は、PCIバス5を介して、サーバCPU 11及びサーバ・メモリ・デバイス12と通信する。サーバ・メモリ・デバイス12は、サーバCPU 11が実行するソフトウェア・プログラム及びデータを格納する。
通常の書込みアクション中に、サーバCPU 11は、PCIバス5を介してRAIDコントローラ4に書込み要求命令を送る。RAIDコントローラ4のCPU 6は、RAIDコントローラ4のメモリ・デバイス7内のキャッシュ・メモリにデータを一時的に格納させる。このデータは、その後、メモリ・デバイス7からI/Oインターフェース・デバイス8を介してPD 9のうちの1つ又は複数に転送される。メモリ・デバイス7は、RAID VDの仮想アドレスとPD 9の物理アドレスとの間のマッピングを実行するコア・ロジックを含む。RAIDコントローラ4のCPU 6は、システム2のRAIDレベルに従って、パリティ計算などの計算を実行する。システム2の現在のRAIDレベルがパリティを使用する場合には、I/Oインターフェース・デバイス8は、パリティ・ビットをPD 9のうちの1つ又は複数に格納させる。
通常の読取り動作中に、サーバCPU 11は、対応する読取り要求をPCIバス5を介してRAIDコントローラ4に送る。RAIDコントローラCPU 6は、メモリ・デバイス7に保持されたロジックを使用して、要求を処理し、要求されたデータがメモリ・デバイス7内のキャッシュ・メモリに保持されている場合には、要求されたデータをメモリ・デバイス7のキャッシュ・メモリから取り出す。要求されたデータがメモリ・デバイス7内のキャッシュ・メモリに保持されていない場合には、RAIDコントローラCPU 6は、要求されたデータをPD 9から取り出させる。取り出されたデータは、読取り要求を満たすために、PCIバス5を介してサーバCPU 11に転送される。
図2に、図1に示された複数のRAIDコントローラ4と、RAIDコントローラ4によって共有される図1に示されたPD 9のアレイとを含む、既知の共有DASシステム23のブロック図を示す。共有DASシステム23内でキャッシュ・コヒーレンシを提供するために、RAIDコントローラ4のうちの1つのメモリ・デバイス7内にキャッシングされたデータは、RAIDコントローラ4がキャッシュ・ミラーリングに関して対になるように、他のRAIDコントローラ4のうちの1つのRAIDコントローラ4のメモリ・デバイス7内に複製される、すなわちミラーリングされる。キャッシングされたデータの複製は、図2では矢印24によって表される。このタイプのキャッシュ・コヒーレンシ技法は、一般に有効であるが、フェールオーバー・イベント又はフェールバック・イベントが所与の対の両方のRAIDコントローラ4で発生する場合には、そのミラーリングされた対のキャッシングされたデータの保全性は、危険にさらされる。
図3に、キャッシュ・コヒーレンシが、それぞれのRAIDコントローラ4のメモリ・デバイス7内にキャッシングされたデータを他のRAIDコントローラ4それぞれのメモリ・デバイス7内に複製することによって提供される、図2に示された共有DASシステム23のブロック図を示す。キャッシングされたデータの複製は、図3では矢印24及び25によって表される。このタイプのキャッシュ・コヒーレンシ技法は、一般に有効であるが、そのような技法の物理的実装形態は、極端に複雑であり、大量の帯域幅を利用する。さらに、システム23がスケール・アウトされ、より多数のRAIDコントローラ4がシステム23に追加されるとき、システム23の複雑さ及びキャッシュ・ミラーリングに利用される帯域幅の量は、指数関数的に増える。これらの理由から、このキャッシュ・コヒーレンシ解決策は、ほとんどの場合に非実用的である。
DASシステムでのキャッシュ・コヒーレンシ問題に対するもう1つの解決策は、WBキャッシュ構成ではなくWTキャッシュ構成を使用することである。しかし、WBキャッシュ構成ではなくWTキャッシュ構成を使用すると、一般に、DASシステムのI/O性能を劣化させ、したがって、競争的な市場において多くのストレージ・アプリケーションにとって不適切である。キャッシュ・コヒーレンシ問題は、SANコントローラを使用して簡単に対処することができるが、そのような解決策は、相対的に高価であり、多くの場合に実施が不可能なほどに高価である。
したがって、キャッシングされたデータの保全性を十分に保護し、DASシステムで使用される既知のキャッシュ・コヒーレンシ解決策の上述の制限を克服する、DASシステムの必要が存在する。
本発明は、キャッシングされたデータの保全性を保護するDASシステム、方法、及びコンピュータ可読媒体を提供する。このDASシステムは、PDのRAIDアレイとして構成された複数の磁気HDDと、キャッシュ・メモリとして構成されたSSD(solid state disk)のアレイと、PDのRAIDアレイ及びSSDアレイに接続された少なくとも第1の及び第2のDASコントローラとを含む。各DASコントローラハ、CPU、ローカル・メモリ・デバイス、及びI/Oインターフェース・デバイスを有する。CPUのそれぞれ及びローカル・メモリ・デバイスのそれぞれは、PDのRAIDアレイのRAID構成と整合するRAIDテクノロジレベルを実行するように構成される。各CPUは、それぞれのDASコントローラ内で受け取られたデータをSSDアレイのキャッシュ・メモリに一時的に格納させ、その後、PDのRAIDアレイのPDのうちの1つ又は複数に格納させる、キャッシング・アルゴリズムを実行するように構成される。
DASシステム内でキャッシングされたデータの保全性を保護する方法は、第1のDASコントローラ内でデータを受け取ること、第1のDASコントローラ内で受け取られたデータをSSDアレイの1つ又は複数のSSDに一時的に格納させ、その後、PDのRAIDアレイとして構成された1つ又は複数の磁気HDDに格納させる、キャッシング・アルゴリズムを第1のDASコントローラのCPU内で実行すること、第2のDASコントローラ内でデータを受け取ること、ならびに第2のDASコントローラ内で受け取られたデータをSSDアレイ内の1つ又は複数のSSDに一時的に格納させ、その後、PDのRAIDアレイとして構成された磁気HDDのうちの1つ又は複数に格納させる、キャッシング・アルゴリズムを第2のDASコントローラのCPU内で実行することを含む。
コンピュータ可読媒体は、DASコントローラによって実行される、第1の命令セット及び第2の命令セットを含む。第1の命令セットは、DASコントローラでデータを受け取る。第2の命令セットは、第1のDASコントローラで受け取られたデータを、SSDアレイの1つ又は複数のSSDに一時的に格納させ、その後、PDのRAIDアレイとして構成された1つ又は複数の磁気HDDに格納させるキャッシング・アルゴリズムを第1のDASコントローラ内で実行する。
本発明の上記及び他の特徴及び利点は、以下の説明、図面、及び特許請求の範囲から明らかになる。
本発明によれば、DASシステムのDASコントローラの外部のSSD(solid state disk)のアレイが、DASコントローラにより、WBキャッシング動作を実行するためのWBキャッシュ・メモリとして使用される、RAIDテクノロジを実施するDASシステムが提供される。外部SSDアレイをWBキャッシュ・メモリとして使用すると、DASシステムの複雑さを大幅には増やさず、キャッシング動作を実行するために利用される帯域幅の量を増やさずに、DASシステムを完全にキャッシュ・コヒーレントにすることが可能になる。さらに、外部SSDアレイをWBキャッシュ・メモリとして使用すると、図1〜3を参照して上で説明したようにDASコントローラをミラーリングする必要がなくなる。
図4に、DASシステム100のSSDアレイ110が、DASシステム100の複数のDASコントローラ120によりWBキャッシュ・メモリとして共有される、例示的実施形態による本発明のDASシステム100のブロック図を示す。図5に、図4に示されたDASコントローラ120のうちの1つのブロック図を示す。DASシステム100のDASコントローラ120は、図1に示されたRAIDコントローラ4の構成と同一の又はこれに類似する構成を有する。DASコントローラ120のそれぞれは、キャッシング動作に関するものを除いて、RAIDコントローラ4が動作するのと同じように動作する。したがって、図1に示されたRAIDコントローラ4の場合と同様に、図4に示されたDASコントローラ120もそれぞれ、RAIDコントローラとして構成される。DASシステム100は、RAIDテクノロジを使用する。本発明は、DASシステム100内で使用されるRAIDのレベルに関して限定されない。
RAIDは、異なるシステム設計に対応する7つの基本レベルを有し、これらのレベルのいずれか1つ又は複数を、DASシステム100内で実施することができる。異なるRAIDレベルの簡単な説明をこれから行うが、これらのRAIDレベルは、当技術分野で周知である。通常はRAIDレベル0〜6と称する、7つの基本RAIDレベルは、次のとおりである。RAIDレベル0は、改善されたデータ信頼性及び高められたI/O性能を達成するためにストライピングを使用する。用語「ストライピング」は、単一のデータ・ファイルなど論理的に順次のデータが、フラグメント化され、ラウンドロビン形式で複数のPDに割り当てられることを意味する。したがって、データは、そのデータが書き込まれるとき、複数のPD上に「ストライピングされる」と言われる。ストライピングは、性能を改善し、追加のストレージ容量を提供する。RAIDレベル1は、パリティなしのミラーリングを使用する。用語「ミラーリング」は、データが継続的に使用可能であることを保証するために、データが別々のPD上にリアル・タイムで複製されることを意味する。このタイプの複製は、データ冗長性を提供する。RAIDレベル2は、冗長性及びストライピングを使用する。RAIDレベル2では、冗長性は、ハミング・コードの使用によって達成され、このハミング・コードは、PD上のビットにまたがって計算され、複数のPDに格納される。あるPDが故障した場合に、パリティ・ビットを使用して、データを再構成することができる。
RAIDレベル3システムは、バイトレベル・ストライピングを、インターリーブされたパリティ・ビット及び専用パリティPDと組み合わせて使用する。バイトレベル・ストライピング及び冗長性の使用は、改善された性能をもたらし、システムにフォールト・トレランスを与える。RAIDレベル3システムは、パリティなしで動作を継続することができ、パリティPDが故障した場合に、性能ペナルティをこうむらない。RAIDレベル4は、RAIDレベル4システムがバイトレベル又はワード・レベルのストライピングではなくブロックレベルのストライピングを使用することを除いて、RAIDレベル3と本質的に同一である。各ストライプは、比較的大きいので、単一のファイルを1ブロックに格納することができる。各PDは独立に動作し、多数の異なるI/O要求を、並列に処理することができる。誤り検出は、ブロック・レベル・パリティ・ビット・インターリービングを使用することによって達成される。インターリーブされたパリティ・ビットは、別々の単一のパリティPDに格納される。
RAIDレベル5は、ストライピングを分散パリティと組み合わせて使用する。分散パリティを実施するには、システムが動作するために1つを除くすべてのPDが存在しなければならない。PDのうちのいずれか1つが故障すると、PDの交換が必要となる。しかし、PDのうちの単一のPDが故障しても、システムの故障は起こらない。RAIDレベル6は、ストライピングを二重分散パリティと組み合わせて使用する。RAIDレベル6システムは、少なくとも4つのPDの使用を必要とし、PDのうちの2つは、分散パリティ・ビットを格納するのに使用される。このシステムは、2つのPDが故障した場合でも動作し続けることができる。二重パリティは、各VDがより多数のPDから構成されるシステムで、ますます重要になる。単一パリティを使用するRAIDレベルシステムは、故障したドライブがリビルドされるまで、データ消失に対して脆弱である。RAIDレベル6システムでは、二重パリティを使用することにより、他のVDのうちの1つのPDが、第1のの故障したPDのリビルド完了前に故障した場合に、故障したPDを有するVDを、データの消失の危険を冒さずにリビルドすることが可能になる。
もう一度図5を参照すると、DASコントローラ120は、CPU130C、メモリ・デバイス140、及びI/Oインターフェース・デバイス150を含む。I/Oインターフェース・デバイス150は、PD129との間でのデータの転送を制御する。I/Oインターフェース・デバイス150は、通常、たとえばSAS標準規格及び/又はSATA標準規格ならびにその変形などの既知のデータ転送プロトコル標準規格に従ってデータ転送を実行するように構成されるが、他の既知のデータ転送プロトコルならびに所有権付きのデータ転送プロトコルをこの目的に使用することもできる。
DASシステム100の動作を、これから図4及び5を参照して説明する。通常の書込み動作中に、DASコントローラ120のCPU130は、PD129のうちの1つ又は複数に書き込まれるデータを外部サーバ又はワークステーション(図示せず)から受け取る。DASコントローラCPU130は、SSDアレイ110をWBキャッシュ・メモリとして使用して、PD129に書き込まれるデータを一時的に格納する。SSD110でデータをWBキャッシングするプロセスを、下記で図6を参照してより詳細に説明する。データがSSD110にWBキャッシングされた後のある時点で、DASコントローラCPU130は、キャッシングされたデータをSSD110から転送させ、PD129のうちの1つ又は複数に格納させる。メモリ・デバイス140は、RAID VDの仮想アドレスとPD129の物理アドレスとの間のマッピングを実行するコア・ロジックを含む。DASコントローラ120は、キャッシングされたデータをPD129の対応する物理アドレスに格納させる。DASコントローラCPU130は、DASシステム100のRAIDレベルに従って、パリティ計算などの計算をも実行する。たとえば、DASシステム100のRAIDレベルがパリティを使用する場合、DASコントローラCPU130は、パリティ・ビットを計算し、I/Oインターフェース・デバイス150は、そのパリティ・ビットをPD129のうちの1つ又は複数に格納させる。
通常の読取り動作中に、DASコントローラCPU130は、外部サーバ又はワークステーション(図示せず)から読取り要求を受け取り、メモリ・デバイス140内に保持されたロジックを使用することによって、その読取り要求を処理して、データをそこから読み取るべきPD129のうちの1つ又は複数のPDの物理アドレスを決定する。次に、DASコントローラCPU130は、要求されたデータを、そのデータがPD129内に存在するアドレスから取り出させ、外部サーバ又はワークステーション(図示せず)に送らせる。メモリ・デバイス140の一部又はDASコントローラ120内の他の何らかのメモリ・デバイス(図示せず)を、読取りキャッシュ・メモリとして使用することができ、その場合、CPU130は、要求されたデータが読取りキャッシュ・メモリ内に保持されているとCPU130が判定した場合に、PD129からではなく、読取りキャッシュ・メモリからデータを読み取る。
図6に、例示的一実施形態による、DASコントローラ120のうちの1つのDASコントローラ120のCPU130によって実行されるWBキャッシング・アルゴリズムを表す流れ図を示す。各DASコントローラ120のCPU130が、このWBキャッシング・アルゴリズムを実行する。しかし、簡略にするために、このアルゴリズムを、DASコントローラ120のうちの1つを参照して説明するのみとする。サーバ又はワークステーション(図示せず)が、PD129に書き込まれるデータをDASコントローラ120に送ると、DASコントローラ120は、ブロック201によって示されるように、そのデータを受け取る。次に、CPU130は、ブロック203によって示されるように、キャッシュ「ヒット」又はキャッシュ「ミス」のどちらが発生したかを判定するために、受け取られたデータを処理する。キャッシュ「ヒット」は、データが現在はSSD110内のキャッシュ・メモリに保持されているとCPU130が判定したことを意味する。キャッシュ「ミス」は、データが現在はキャッシュ・メモリに保持されていないとCPU130が判定したことを意味する。
CPU130が、キャッシュ・ミスが発生したと判定した場合、CPU130は、ブロック205によって示されるように、データをSSDアレイ110のキャッシュ・メモリに書き込ませる。データがSSDアレイ110のキャッシュ・メモリに書き込まれた後のある時点で、CPU130は、ブロック206によって示されるように、データをPD129内の物理アドレスに格納させる。ブロック203で、CPU130が、キャッシュ・ヒットが発生したと判定した場合、CPU130は、ブロック206によって表されるステップで、SSDアレイ110のキャッシュ・メモリ内に保持された対応するデータを、SSDアレイ110内の対応する物理アドレスに格納させる。
図1〜3を参照して上記で説明した既知のキャッシュ・コヒーレンシ方法とは対照的に、本発明によれば、キャッシュ・コヒーレンシは、SSDアレイ110のあるRAIDテクノロジレベルを使用することによって提供される。具体的に言うと、DASコントローラ120が、SSDアレイ110内のキャッシュ・メモリにデータを格納するとき、そのデータがキャッシングされるSSDアレイ110のSSDが故障の場合にデータを回復できることを保証するために、RAIDテクノロジが使用される。たとえば、DASコントローラ120のそれぞれがSSDアレイ110内のキャッシュ・メモリ内にデータを格納するとき、そのデータが、SSDアレイ110の複数のSSDにまたがってストライピングされるように、RAIDレベル0を使用することができる。たとえば、RAIDレベル1が使用される場合、DASコントローラ120のそれぞれがSSDアレイ110内のキャッシュ・メモリ内にデータを格納するとき、そのデータは、SSDアレイ110の複数のSSD内に複製される、すなわち、ミラーリングされる。SSDアレイ110のSSDのうちの1つが故障した場合、SSDアレイ110を用いて実施されたRAIDテクノロジレベルが、データの回復を可能にする。このようにして、DASシステム100は、完全にキャッシュ・コヒーレントである。本発明は、SSDアレイ110のキャッシュ・メモリ内にキャッシングされるデータのキャッシュ・コヒーレンシを保証するのに使用されるRAIDレベルに関して限定されない。
また、SSDアレイ110は、必ずではないが通常、それぞれのDASコントローラ120によって使用されるそれぞれの部分に区分される。たとえば、合計N個のDASコントローラ120があり、Nが、1以上の正の整数であると仮定すると、SSDアレイ110の記憶容量は、N個の等しい部分に分割され、各部分は、それぞれのDASコントローラ120によって使用される。このようにSSDアレイ110を区分すると、DASコントローラ120がSSDアレイ110にアクセスする際のアクセス衝突が回避される。しかし、DASコントローラ120のうちの1つが故障した場合は、他のDASコントローラ120のうちの1つが、SSDアレイ110内に格納されている、故障したDASコントローラ120に関連するデータにアクセスすることができる。
当技術分野で既知のように、データには、たとえば、データのソースの識別(すなわち、ハッシュ・キャッシュ・タグ)、データ・ストリームの長さ、及びデータが変更されたか否か(すなわち、状況表示)など、データの属性を定義するメタデータが関連付けられる。DASシステムでは、メタデータは、通常、DASコントローラの内部のダイナミック・ランダム・アクセス・メモリ(DRAM)に格納される。本発明の例示的一実施形態によれば、メタデータは、DASコントローラ120のメモリ・デバイス140に格納され、対応するデータは、図4〜6を参照して上記で説明したように、SSDアレイ110のキャッシュ・メモリに格納される。メタデータを扱うこの例示的一実施形態を、これから図7を参照して説明する。
図7に、データはSSDアレイ110内にキャッシングされるが、関連するメタデータはDASコントローラ120の内部のキャッシュ・メモリ内にキャッシングされる、例示的一実施形態による図4に示されたDASシステム100のブロック図を示す。この実施形態によれば、DASコントローラ120のうちの1つのDASコントローラ120のCPU130が、データをSSDアレイ110のキャッシュ・メモリに格納するときに、対応するメタデータは、DASコントローラ120のメモリ・デバイス140のキャッシュ・メモリ部分(図示せず)又はDASコントローラ120の他の何らかのメモリ・デバイス(図示せず)に格納される。さらに、メタデータのキャッシュ・コヒーレンシを提供するために、DASコントローラ120内のキャッシュ・メモリに格納されるメタデータは、図7で隣接するDASコントローラ120の間を通る矢印によって示されるように、他のDASコントローラ120のうちの1つ又は複数のDASコントローラ120のキャッシュ・メモリ内にミラーリングされる。このようにして、DASコントローラ120のうちの1つが故障した場合に、対応するメタデータを、そのメタデータがミラーリングされた、他のDASコントローラ120のキャッシュ・メモリから回復することができる。
図8に、データ及び関連するメタデータがSSDアレイ110内にキャッシングされる、例示的一実施形態による図4に示されたDASシステム100のブロック図を示す。SSDでは、データは、通常、所定の個数のバイト(B)、たとえばブロックあたり520Bのブロックで書き込まれる。ブロックのフォーマットは、情報技術規格国際委員会(InterNational Committee on Information Technology Standards、INCITS)の標準規格T10によって規定される。標準規格T10は、各データ・ブロックが、巡回冗長検査(CRC)ビット、アプリケーションタグ・ビット、及び基準タグ・ビットなどの保護情報を含むデータ保全性フィールド(data integrity field、DIF)を含むことを規定する。標準規格T10によって定義されたDIFは、各ブロックの終りの8Bからなる。したがって、各ブロックは、512Bのデータ及び8BのDIFからなる。この例示的実施形態によれば、各データ・ブロックの8BのDIFは、そのデータ・ブロックに関連するメタデータを表すのに使用される。したがって、データ及びそれに関連するメタデータは、SSDアレイ110のキャッシュ・メモリ内に一緒に格納される。
データ及びそれに関連するメタデータを一緒にキャッシングすると、動作中の電源障害の場合に、データは更新されるがそれに関連するメタデータは更新されない又はその逆であることを保証する。たとえば、データ及びメタデータが、異なるメモリ・デバイス内に互いに独立にキャッシングされる場合、あるメモリ・デバイスの電源障害により、故障したメモリ・デバイスに格納されるデータ又はメタデータは更新されないが、電源障害をこうむらない他のメモリ・デバイスに格納されるデータ又はメタデータが更新される可能性がある。データ及びメタデータをSSDアレイ110のキャッシュ・メモリに一緒にキャッシングすることによって、この問題が除去される。
この例示的実施形態によれば、SSDアレイ110のキャッシュ・メモリ内のキャッシュ・ラインは、64KBからなり、K=1024である。所与のキャッシュ・ラインの各ブロックは、512Bのデータからなるので、各キャッシュ・ラインは、128個のブロックからなる(すなわち、(64Bx1024)/512B=128)。所与のキャッシュ・ラインの128個のブロックのそれぞれのDIFは、8Bのメタデータからなる。しかし、キャッシュ・ラインごとに、約64Bのメタデータしか必要でない。この64Bのメタデータは、8B部分に分割される。したがって、所与のキャッシュ・ラインに使用される8ブロックのDIFだけが、メタデータのために必要である。この例示的実施形態によれば、各128ブロック・キャッシュ・ラインの最初の8ブロックが、キャッシュ・ラインに含まれるデータに関連する8Bのメタデータに割り当てられる。冗長性を提供するために、同じ8Bのメタデータが、キャッシュ・ラインの次の8ブロックの8つのDIFのそれぞれに複製される。64Bのメタデータのハッシュが、キャッシュ・ラインの最後の8ブロックの8つのDIFに含まれる。この手法は、キャッシュ・ラインに書き込まれる最初のブロック及び最後のブロックが、ハッシュによって互いに関連付けられるので、原子性を保証する。
図9に、図8に示されたDASコントローラ120によって実行されるWBキャッシング・アルゴリズムを表す流れ図を示す。このアルゴリズムを、図5、8、及び9を参照して説明する。DASコントローラ120のそれぞれのDASコントローラのCPU130が、このWBキャッシング・アルゴリズムを実行する。しかし、簡略にするために、このアルゴリズムを、DASコントローラ120のうちの1つを参照して説明するのみとする。サーバ又はワークステーション(図示せず)が、PD129に書き込まれるデータをDASコントローラ120に送るとき、DASコントローラ120は、ブロック301によって示されるように、データ及びそれに関連するメタデータを受け取る。次に、CPU130は、ブロック303によって示されるように、キャッシュ「ヒット」又はキャッシュ「ミス」のどちらが発生したかを判定するために、受け取られたデータを処理する。
CPU130が、キャッシュ・ミスが発生したと判定した場合、CPU130は、ブロック305によって示されるように、メタデータ・ハッシュを計算し、データ、メタデータ、及びメタデータ・ハッシュをSSDアレイ110のキャッシュ・メモリに書き込ませる。メタデータ・ハッシュを計算するためのさまざまな既知のハッシング・アルゴリズムが存在する。任意の適切な既知のハッシング・アルゴリズムを、この目的に使用することができる。したがって、簡略にするために、メタデータ・ハッシュを計算するのに使用されるアルゴリズムについては、本明細書では説明しない。
データがSSDアレイ110のキャッシュ・メモリに書き込まれた後のある時点で、CPU130は、ブロック306によって示されるように、データ及びそれに関連するメタデータをPD129内の物理アドレスに格納させる。ブロック303で、CPU130が、キャッシュ・ヒットが発生したと判定した場合、CPU130は、ブロック306によって表されるステップで、SSDアレイ110のキャッシュ・メモリ内に保持される対応するデータ及びメタデータを、SSDアレイ110内の対応する物理アドレスに格納させる。
図6及び9を参照して上記で説明したWBキャッシング・アルゴリズムを、さまざまな形で実施できることに留意されたい。このWBアルゴリズムは、通常は、ハードウェアのみで又はハードウェアとソフトウェア又はファームウェアとの組合せで、CPU130内で実行される。この目的に使用されるソフトウェア命令又はファームウェア命令は、たとえばDASコントローラ120のメモリ・デバイス140内など、コンピュータ可読媒体内に格納される。
当業者は、上記で説明した実施形態に対して多くの変形を加えることができ、そのような変形形態のすべてが本発明の範囲内にあることを理解するであろう。たとえば、DIFを使用しないSSDが、市場で入手可能である。そのようなSSDは、データ、メタデータ、及びメタデータ・ハッシュをキャッシングするために本発明と共に使用するのに適する。本発明は、SSDアレイ110内で特定のタイプ又は構成のSSDを使用することに限定されない。本発明は、DASコントローラ120の構成に関しても限定されない。図5に示されたDASコントローラ120の構成は、本発明と共に使用するのに適するDAS構成の単なる一例である。
本発明を、上記では本発明の原理及び概念を実証するために例示的実施形態を参照して説明したことに留意されたい。当業者は、本明細書で説明された実施形態に対して多くの変更を加えることができ、そのような変更のすべてが本発明の範囲に含まれることを理解するであろう。
Claims (1)
- ダイレクトアタッチト・ストレージ(DAS)システムであって、
物理ディスク・ドライブ(PD)のRAIDアレイとして構成された複数の磁気ハード・ディスク・ドライブ(HDD)と、
キャッシュ・メモリとして構成されたSSDのアレイと、
PDの前記RAIDアレイ及び前記SSDアレイに接続された少なくとも第1の及び第2のDASコントローラとを含み、各DASコントローラは、中央処理装置(CPU)、ローカル・メモリ・デバイス、及び入出力(I/O)インターフェース・デバイスを有し、前記CPUのそれぞれ及び前記ローカル・メモリ・デバイスのそれぞれは、PDの前記RAIDアレイのRAID構成と整合するRAIDテクノロジレベルを実行するように構成され、前記CPUのそれぞれは、前記それぞれのDASコントローラ内で受け取られたデータが前記SSDアレイの前記キャッシュ・メモリに一時的に格納されるようにし、その後、PDの前記RAIDアレイの前記PDのうちの1つ又は複数に格納されるようにする、キャッシング・アルゴリズムを実行するように構成される、DASシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US26805509P | 2009-06-08 | 2009-06-08 | |
US61/268,055 | 2009-06-08 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010130841A Division JP5489868B2 (ja) | 2009-06-08 | 2010-06-08 | ダイレクトアタッチト・ストレージ(das)システムでキャッシングされたデータの保全性を保護する方法及び装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014038660A true JP2014038660A (ja) | 2014-02-27 |
Family
ID=42829597
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010130841A Expired - Fee Related JP5489868B2 (ja) | 2009-06-08 | 2010-06-08 | ダイレクトアタッチト・ストレージ(das)システムでキャッシングされたデータの保全性を保護する方法及び装置 |
JP2013236874A Withdrawn JP2014038660A (ja) | 2009-06-08 | 2013-11-15 | ダイレクトアタッチト・ストレージ(das)システムでキャッシングされたデータの保全性を保護する方法及び装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010130841A Expired - Fee Related JP5489868B2 (ja) | 2009-06-08 | 2010-06-08 | ダイレクトアタッチト・ストレージ(das)システムでキャッシングされたデータの保全性を保護する方法及び装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8732396B2 (ja) |
EP (1) | EP2264607A3 (ja) |
JP (2) | JP5489868B2 (ja) |
KR (1) | KR101345572B1 (ja) |
CN (1) | CN101982816B (ja) |
TW (1) | TWI451257B (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8495469B2 (en) | 2011-05-16 | 2013-07-23 | International Business Machines Corporation | Implementing enhanced IO data conversion with protection information model including parity format of data integrity fields |
US9921954B1 (en) * | 2012-08-27 | 2018-03-20 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method and system for split flash memory management between host and storage controller |
US9256384B2 (en) * | 2013-02-04 | 2016-02-09 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method and system for reducing write latency in a data storage system by using a command-push model |
FR3010598B1 (fr) * | 2013-09-06 | 2017-01-13 | Sagem Defense Securite | Procede de gestion de coherence de caches |
KR102146037B1 (ko) | 2013-11-14 | 2020-08-19 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 동작 방법 |
CN104199751A (zh) * | 2014-08-27 | 2014-12-10 | 山东超越数控电子有限公司 | 一种刀片服务器中备份冗余硬盘的系统识别方法 |
US11237727B2 (en) * | 2015-10-05 | 2022-02-01 | Weka.IO Ltd. | Electronic storage system |
US10025664B2 (en) | 2015-12-22 | 2018-07-17 | Western Digital Technologies, Inc. | Selective buffer protection |
CN107870731B (zh) | 2016-09-23 | 2021-07-27 | 伊姆西Ip控股有限责任公司 | 独立盘冗余阵列系统的管理方法和电子设备 |
US10976361B2 (en) * | 2018-12-20 | 2021-04-13 | Advantest Corporation | Automated test equipment (ATE) support framework for solid state device (SSD) odd sector sizes and protection modes |
CN112286625B (zh) * | 2020-09-11 | 2022-07-08 | 苏州浪潮智能科技有限公司 | 一种基于云平台多用户的镜像缓存状态管理方法及系统 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4476526A (en) * | 1981-11-27 | 1984-10-09 | Storage Technology Corporation | Cache buffered memory subsystem |
JP3181398B2 (ja) * | 1992-10-06 | 2001-07-03 | 三菱電機株式会社 | アレイ型記録装置 |
US5640506A (en) | 1995-02-15 | 1997-06-17 | Mti Technology Corporation | Integrity protection for parity calculation for raid parity cache |
US6321298B1 (en) | 1999-01-25 | 2001-11-20 | International Business Machines Corporation | Full cache coherency across multiple raid controllers |
US6574709B1 (en) | 1999-09-30 | 2003-06-03 | International Business Machine Corporation | System, apparatus, and method providing cache data mirroring to a data storage system |
JP2001222385A (ja) * | 2000-02-10 | 2001-08-17 | Hitachi Ltd | 記憶装置および情報処理システム |
US6578160B1 (en) | 2000-05-26 | 2003-06-10 | Emc Corp Hopkinton | Fault tolerant, low latency system resource with high level logging of system resource transactions and cross-server mirrored high level logging of system resource transactions |
JP2002023966A (ja) * | 2000-06-30 | 2002-01-25 | Toshiba Corp | 転送データを冗長化したディスクシステム |
US7127633B1 (en) | 2001-11-15 | 2006-10-24 | Xiotech Corporation | System and method to failover storage area network targets from one interface to another |
US7003688B1 (en) | 2001-11-15 | 2006-02-21 | Xiotech Corporation | System and method for a reserved memory area shared by all redundant storage controllers |
US7181581B2 (en) | 2002-05-09 | 2007-02-20 | Xiotech Corporation | Method and apparatus for mirroring data stored in a mass storage system |
JP2004021811A (ja) * | 2002-06-19 | 2004-01-22 | Hitachi Ltd | 不揮発メモリを使用したディスク制御装置 |
JP2004054845A (ja) * | 2002-07-24 | 2004-02-19 | Sony Corp | データ管理装置 |
US7043610B2 (en) | 2002-08-19 | 2006-05-09 | Aristos Logic Corporation | System and method for maintaining cache coherency without external controller intervention |
JP2005539309A (ja) * | 2002-09-16 | 2005-12-22 | ティギ・コーポレイション | 記憶システムアーキテクチャおよび多重キャッシュ装置 |
US7076606B2 (en) | 2002-09-20 | 2006-07-11 | Quantum Corporation | Accelerated RAID with rewind capability |
WO2004114116A1 (ja) | 2003-06-19 | 2004-12-29 | Fujitsu Limited | キャッシュ二重化方式におけるミラーキャッシュからの書き戻し方法 |
US20050066230A1 (en) * | 2003-09-23 | 2005-03-24 | Bean Robert George | Data reliabilty bit storage qualifier and logical unit metadata |
JP4383321B2 (ja) * | 2004-11-09 | 2009-12-16 | 富士通株式会社 | 記憶制御装置および外部記憶装置 |
JP4805660B2 (ja) * | 2005-02-08 | 2011-11-02 | 富士通株式会社 | ディスクライト抜け検出装置 |
JP2006268524A (ja) * | 2005-03-24 | 2006-10-05 | Fujitsu Ltd | 記憶装置、その制御方法及びプログラム |
US20060294300A1 (en) * | 2005-06-22 | 2006-12-28 | Seagate Technology Llc | Atomic cache transactions in a distributed storage system |
KR20070029358A (ko) * | 2005-09-09 | 2007-03-14 | 주식회사 태진인포텍 | 고속 메모리 기반의 스토리지 시스템 및 그 제어방법 |
US7444541B2 (en) | 2006-06-30 | 2008-10-28 | Seagate Technology Llc | Failover and failback of write cache data in dual active controllers |
CN101715575A (zh) | 2006-12-06 | 2010-05-26 | 弗森多系统公司(dba弗森-艾奥) | 采用数据管道管理数据的装置、系统和方法 |
JP4362134B2 (ja) * | 2007-02-09 | 2009-11-11 | 富士通株式会社 | データアクセス方法、チャネルアダプタ、データアクセス制御装置およびデータアクセスプログラム |
US20090063895A1 (en) * | 2007-09-04 | 2009-03-05 | Kurt Smith | Scaleable and maintainable solid state drive |
US7873878B2 (en) | 2007-09-24 | 2011-01-18 | International Business Machines Corporation | Data integrity validation in storage systems |
US7827439B2 (en) * | 2007-09-28 | 2010-11-02 | Symantec Corporation | System and method of redundantly storing and retrieving data with cooperating storage devices |
-
2010
- 2010-06-04 US US12/793,872 patent/US8732396B2/en active Active
- 2010-06-08 TW TW099118622A patent/TWI451257B/zh active
- 2010-06-08 EP EP10165293A patent/EP2264607A3/en not_active Withdrawn
- 2010-06-08 JP JP2010130841A patent/JP5489868B2/ja not_active Expired - Fee Related
- 2010-06-08 CN CN201010200765.1A patent/CN101982816B/zh active Active
- 2010-06-08 KR KR1020100053772A patent/KR101345572B1/ko not_active IP Right Cessation
-
2013
- 2013-11-15 JP JP2013236874A patent/JP2014038660A/ja not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
TWI451257B (zh) | 2014-09-01 |
JP2010282628A (ja) | 2010-12-16 |
US8732396B2 (en) | 2014-05-20 |
JP5489868B2 (ja) | 2014-05-14 |
EP2264607A2 (en) | 2010-12-22 |
CN101982816A (zh) | 2011-03-02 |
CN101982816B (zh) | 2015-04-08 |
US20100312960A1 (en) | 2010-12-09 |
KR101345572B1 (ko) | 2014-01-06 |
EP2264607A3 (en) | 2011-07-20 |
TW201107981A (en) | 2011-03-01 |
KR20100131949A (ko) | 2010-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5489868B2 (ja) | ダイレクトアタッチト・ストレージ(das)システムでキャッシングされたデータの保全性を保護する方法及び装置 | |
US10191676B2 (en) | Scalable storage protection | |
US10360119B2 (en) | Data recovery in a distributed storage system | |
US8209587B1 (en) | System and method for eliminating zeroing of disk drives in RAID arrays | |
US9535840B2 (en) | Parallel destaging with replicated cache pinning | |
US8156282B1 (en) | System and method for optimizing write operations in storage systems | |
US10452498B2 (en) | Fault tolerance for persistent main memory | |
US7647526B1 (en) | Reducing reconstruct input/output operations in storage systems | |
US20220137835A1 (en) | Systems and methods for parity-based failure protection for storage devices | |
US20150095696A1 (en) | Second-level raid cache splicing | |
US10691339B2 (en) | Methods for reducing initialization duration and performance impact during configuration of storage drives | |
US9921913B2 (en) | Flushing host cache data before rebuilding degraded redundant virtual disk | |
US9348525B2 (en) | Systems and methods for a storage array-managed initiator cache | |
US9830094B2 (en) | Dynamic transitioning of protection information in array systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20140225 |