(57)【要約】複数の高密度フラッシュデバイスから構成される大容量ストレージアレイを有するフラッシュベースのデータ保存ストレージシステムを提供する。フラッシュデバイスは、例えば、強固にパッケージングされ、比較的高密度のテープ又はディスクデバイスに比べて１立方インチあたり実質的により大きな容量を有する低電力高性能データ保存システムを提供するマルチレベルセル（ＭＬＣ）フラッシュデバイスである。フラッシュベースのデータ保存システムは、従来のデータ重複解除及び圧縮方法を使用して、データをコンパクトに記憶する場合がある。さらに、フラッシュベースの保存システムは、テープ及び／又はディスク保存システムに比べて小さな設置面積を有し、消費電力も少ない。【選択図】図３
2012525633.tif 000002
【特許請求の範囲】
【請求項１】
データ保存ストレージシステムであって、
ファイルシステムを含むストレージオペレーティングシステムを実行するように構成されたプロセッサに相互接続されたマルチレベルセルフラッシュデバイスのアレイを含み、前記ファイルシステムは、当該データ保存ストレージシステムに記憶すべきデータセットの受信に応答し、（１）受信されたデータセットを重複解除し、（２）受信されたデータセットを圧縮し、（３）受信されたデータセットを前記マルチレベルセルフラッシュのアレイに記憶するように構成される、データ保存ストレージシステム。
【請求項２】
前記ファイルシステムは、データの要求の受信に応答し、（４）前記マルチレベルセルフラッシュデバイスのうち要求されたデータを記憶している１以上のマルチレベルセルフラッシュデバイスを特定し、（５）特定されたマルチレベルセルフラッシュデバイスに電力を供給し、（６）前記特定されたマルチレベルセルフラッシュデバイスから前記要求されたデータを読み出し、（７）前記特定されたマルチレベルセルフラッシュデバイスから電力を取り除くようにさらに構成される、請求項１に記載のデータ保存ストレージシステム。
【請求項３】
前記ファイルシステムは、（８）読み出された前記要求されたデータを圧縮解除し、（９）前記読み出された要求されたデータを復元するようにさらに構成される、請求項２に記載のデータ保存ストレージシステム。
【請求項４】
前記データセットは、バックアップデータストリームを含む、請求項１に記載のデータ保存ストレージシステム。
【請求項５】
前記重複解除は、
前記受信されたデータセットを複数のブロックに切り分けるステップと、
前記複数のブロックのそれぞれについて署名を生成するステップと、
生成された署名が署名データベース中にあるか否かを判断するステップと、
前記生成された署名が前記署名データベース中にあるという判断に応答し、前記生成された署名を有するブロックを、前記生成された署名を有する、以前に記憶されたブロックへのポインタに置き換えるステップと、
前記生成された署名が前記署名データベース中にないという判断に応答し、前記生成された署名を前記署名データベースに入れ、前記生成された署名を有するブロックを記憶するステップと
を含む、請求項１に記載のデータ保存ストレージシステム。
【請求項６】
データ保存ストレージシステムであって、
ファイルシステムを含むストレージオペレーティングシステムを実行するように構成されたプロセッサに相互接続されたマルチレベルセルフラッシュデバイスのアレイを含み、前記プロセッサは、前記ストレージオペレーティングシステムからのコマンドに応答し、前記フラッシュデバイスのアレイへの電力を制御するように構成されたフラッシュコントローラに相互接続され、前記ファイルシステムは、（１）データセットを受信し、（２）受信されたデータセットを重複解除し、（３）重複解除されたデータセットを前記マルチレベルセルフラッシュデバイスのアレイに記憶するように構成される、データ保存ストレージシステム。
【請求項７】
前記ファイルシステムは、（４）前記マルチレベルセルフラッシュデバイスのアレイのうちデータアクセス要求により要求されたデータを記憶している一組のマルチレベルセルフラッシュデバイスを特定し、（５）前記要求されたデータを読み出し、（６）読み出された前記要求されたデータを復元し、（７）前記読み出された要求されたデータを返すようにさらに構成される、請求項６に記載のデータ保存ストレージシステム。
【請求項８】
前記マルチレベルセルフラッシュデバイスのアレイのうちデータアクセス要求により要求されたデータを記憶している一組のマルチレベルセルフラッシュデバイスは、読み出しに先立って、前記フラッシュコントローラにより、電源を投入される、請求項７に記載のデータ保存ストレージシステム。
【請求項９】
前記マルチレベルセルフラッシュデバイスのアレイのうちデータアクセス要求により要求されたデータを記憶している一組のマルチレベルセルフラッシュデバイスは、前記データアクセス要求により要求されたデータが読み出された後、電源を切断される、請求項７に記載のデータ保存ストレージシステム。
【請求項１０】
前記重複解除は、
前記受信されたデータセットを複数のブロックに切り分けるステップと、
前記複数のブロックのそれぞれについて署名を生成するステップと、
生成された署名が署名データベース中にあるか否かを判断するステップと、
前記生成された署名が前記署名データベース中にあるという判断に応答し、前記生成された署名を有するブロックを、前記生成された署名を有する、以前に記憶されたブロックへのポインタに置き換えるステップと、
前記生成された署名が前記署名データベース中にないという判断に応答し、前記生成された署名を前記署名データベースに入れ、前記生成された署名を有するブロックを記憶するステップと
を含む、請求項６に記載のデータ保存ストレージシステム。
【請求項１１】
データ保存ストレージシステムであって、
ファイルシステムを含むストレージオペレーティングシステムを実行するように構成されたプロセッサに相互接続されたマルチレベルセルフラッシュデバイスのアレイを含み、前記プロセッサは、前記ストレージオペレーティングシステムからのコマンドに応答し、前記フラッシュデバイスのアレイへの電力を制御するように構成されたフラッシュコントローラに相互接続され、前記ファイルシステムは、（１）データセットを受信し、（２）受信されたデータセットを圧縮し、（３）圧縮されたデータセットを前記マルチレベルセルフラッシュデバイスのアレイに記憶するように構成される、データ保存ストレージシステム。
【請求項１２】
前記ファイルシステムは、（４）前記マルチレベルセルフラッシュデバイスのアレイのうちデータアクセス要求により要求されたデータを記憶している一組のマルチレベルセルフラッシュデバイスを特定し、（５）前記要求されたデータを読み出し、（６）読み出された前記要求されたデータを圧縮解除し、（７）前記読み出された要求されたデータを返すようにさらに構成される、請求項１１に記載のデータ保存ストレージシステム。
【請求項１３】
データ保存ストレージシステムにおいて実行する方法であって、
前記データ保存ストレージシステムに記憶すべきデータセットを受信するステップと、
受信されたデータセットに対し、重複解除手順を実施するステップと、
重複解除されたデータセットを圧縮するステップと、
圧縮されたデータセットをマルチレベルセルフラッシュデバイスのアレイに記憶するステップと、
前記データ保存ストレージシステムのクライアントから、記憶されたデータに対する読み出し要求を受信するステップと、
コントローラにより、要求されたデータを記憶している一組のマルチレベルセルフラッシュデバイスを判定するステップと、
前記一組のマルチレベルセルフラッシュデバイスに電力を供給するステップと、
前記一組のマルチレベルセルフラッシュデバイスから前記要求されたデータを読み出すステップと、
読み出されたデータを圧縮解除するステップと、
圧縮解除されたデータを復元するステップと、
前記読み出し要求に応答するステップと、
前記一組のマルチレベルセルフラッシュデバイスへの電力を取り除くステップと
からなる方法。
【請求項１４】
前記重複解除手順は、受信されたデータセットを複数の所定サイズのブロックに切り分けることを含む、請求項１３に記載の方法。
【請求項１５】
前記データセットは、バックアップデータストリームを含む、請求項１３に記載の方法。
【請求項１６】
前記重複解除されたデータセットを圧縮するステップは、対称型圧縮技術を使用することを含む、請求項１３に記載の方法。
【請求項１７】
前記重複解除手順は、
前記受信されたデータセットを複数のブロックに切り分けるステップと、
前記複数のブロックのそれぞれについて署名を生成するステップと、
生成された署名が署名データベース中にあるか否かを判断するステップと、
前記生成された署名が前記署名データベース中にあるという判断に応答し、前記生成された署名を有するブロックを、前記生成された署名を有する、以前に記憶されたブロックへのポインタに置き換えるステップと、
前記生成された署名が前記署名データベース中にないという判断に応答し、前記生成された署名を前記署名データベースに入れ、前記生成された署名を有するブロックを記憶するステップと
を含む、請求項１３に記載の方法。
【請求項１８】
クライアントからデータ保存ストレージシステムに記憶すべきデータセットを受信するステップであって、前記データ保存ストレージシステムが、マルチレベルセルフラッシュデバイスのアレイを制御するように構成されたコントローラに相互接続されたプロセッサを含む、クライアントからデータ保存ストレージシステムに記憶すべきデータセットを受信するステップと、
前記プロセッサにおいて実行されるストレージオペレーティングシステムの１以上のモジュールにより、受信されたデータセットを重複解除するステップと、
前記コントローラにより、重複解除されたデータセットを前記マルチレベルセルフラッシュデバイスのアレイに記憶するステップと
からなる方法。
【請求項１９】
受信されたデータセットを圧縮するステップをさらに含む、請求項１８に記載の方法。
【請求項２０】
前記受信されたデータセットを圧縮するステップは、対称型圧縮技術を使用することを含む、請求項１９に記載の方法。
【請求項２１】
前記受信されたデータセットを重複解除するステップは、
前記受信されたデータセットを複数のブロックに切り分けるステップと、
前記複数のブロックのそれぞれについて署名を生成するステップと、
生成された署名が署名データベース中にあるか否かを判断するステップと、
前記生成された署名が前記署名データベース中にあるという判断に応答し、前記生成された署名を有するブロックを、前記生成された署名を有する、以前に記憶されたブロックへのポインタに置き換えるステップと、
前記生成された署名が前記署名データベース中にないという判断に応答し、前記生成された署名を前記署名データベースに入れ、前記生成された署名を有するブロックを記憶するステップと
を含む、請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[関連出願]
本発明は、２００９年４月３０日に出願されたフラッシュベースのデータ保存ストレージシステムに関するスティーブン・シー・ミラー他による米国仮特許出願第６１／１７４，２９５号に基づく優先権を主張するものであり、当該米国仮特許出願の内容は、参照により本明細書に援用される。
【０００２】
[発明の分野]
本発明は、ストレージシステムに関し、特に、データ保存ストレージシステムに関する。
【背景技術】
【０００３】
[発明の背景]
ストレージシステムは、不揮発性メモリ及びディスクのような書き込み可能な永久的記憶媒体上でのデータの編成に関連するストレージサービスを提供するコンピュータである。ストレージシステムは、情報配送のクライアント／サーバモデルにしたがって動作するように構成される場合があり、それによって多くのクライアント（例えば、アプリケーション）が、システムにより提供されるデータにアクセスすることが可能となる。ストレージシステムは一般に、データをファイルシステム形式とブロック形式の両方で提供するストレージアーキテクチャを採用し、ランダムアクセスパターンとストリーミングアクセスパターンの両方を備えている。ディスクは一般に、優れたストリーミング能力（例えば、大きなシーケンシャルブロックの読み出し、又は「トラック読出し」）を提供するが、ランダムアクセス（すなわち、個々のディスクセクタの読み出し及び書き込み）のときは、あまり良好に機能しない。換言すれば、ディスクは、ストリーミングモード又はシーケンシャルモードにおいて非常に効率的に動作するが、小さなランダムブロックオペレーションは、ディスクの能力を実質的に低下させることがある。
【０００４】
テープ又はディスクシステムのようなデータ保存ストレージシステムは通常、大型で低速のテープ又はディスクドライブから構成され、それらは、装置の寿命を超えてごくまれにアクセス（例えば、読出し又は書込み）されることがある。例えば、テープ又はディスク保存装置に記憶された情報は通常、単に、（１）保存された情報が依然として有効であることを確認するための整合性（一貫性）検査を実施するために、及び／又は（２）保存された情報を、例えば災害、又はコンプライアンスの目的で読み出すために、アクセスされる場合がある。また、テープ又はディスク保存システムは通常、当該システムを受け入れるための十分なフロア空間（設置面積）、安全性、及び／又は電力を提供する環境的に整備された領域に配置される。テープ保存システムの場合、例えば、大型のテープロボットは、テープドライブのアクセスに使用される機械的アームの旋回を可能にするために、相当な設置面積を消費し、すなわち必要とする。同様に、ディスク保存システムは、ディスクドライブの収容に使用されるキャビネットを受け入れるために相当な設置面積を消費し、すなわち必要とする。さらに、これらの保存システムのための整備された環境は、ドライブの信頼できる動作のために必要とされる相当な電力を提供ために使用される電源を含む。
【０００５】
テープ及びディスク保存システムは一般に、データをコンパクトに記憶するために、従来のデータ重複解除及び圧縮方法を採用している。こうしたシステムは通常、重複解除され、圧縮されたデータの種々の断片、又は部分を異なる記憶要素上に（例えば、異なるディスクスピンドル、又は異なるテープに）分散させるため、アクセス時にデータを再現するために、それらの分散された部分を収集する必要がある。データの種々の部分が異なる要素に分散される理由は、データは通常、保存システム上に単に蓄積されるだけでり、すなわち、削除されないからである。すなわち、コンプライアンス（例えば、財務記録、及び／又は医療記録）のために、生成され得るバージョンのデータは全て、長期間にわたって保持される。
【０００６】
重複解除の場合、データコンテナ（ファイル等）は、多数の部分にスライスされ、各部分は、その部分が保存システム上に以前に記憶されていたか否かを判断するために、検査される場合がある。例えば、ファイルの各部分について指紋を生成し、その指紋をデータベースから検索する場合がある。データベース上にその指紋が見付かった場合、そのデータベース上の指紋（すなわち、以前に記憶されたデータ）への参照のみが、記録される。一方、その指紋（ファイルの一部）がデータベース上になかった場合（以前に記憶されていなかった場合）、その部分は、システムに記憶され、場合によっては、システムの異なる要素上にも記憶される（その部分についての指紋は、データベースにも記憶される）。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特定バージョンの保存されたファイルを読み出すための要求が、保存システムに与えられた場合を仮定する。テープ保存システムの場合、ファイルの全部分を読み出すために、複数のテープを読み出さなければならない場合があり、これは時間を消費する。ディスク保存システムの場合、ファイルの全部分を読み出すために、多数のディスクドライブに電力を供給し、読み出さなければならない場合がある。但し、電源を投入し、一度に動作させることが可能なディスクの数には制限がある場合がある。また、全てのディスクを次々とアクセスするためには、有限の時間が必要となる。
【課題を解決するための手段】
【０００８】
[発明の概要]
本発明は、複数の高密度フラッシュデバイス、すなわち、小さなフォームファクタで大量のデータを記憶する能力を有するフラッシュデバイスから構成される大容量ストレージアレイを有するフラッシュベースのデータ保存ストレージシステムを提供することにより、従来技術の欠点を克服する。フラッシュデバイスは、例えば、比較的高密度のテープ又はディスクドライブに比べて１立方インチあたり実質的により大きな容量を有する低電力高性能データ保存システムを提供するように強固にパッケージングされたマルチレベルセル（ＭＬＣ）フラッシュデバイスである。フラッシュベースのデータ保存システムは、データをコンパクトに記憶するために、従来のデータ重複解除及び圧縮方法を使用するように構成される場合がある。但し、従来のテープ及びディスク保存システムとは違い、ＭＬＣフラッシュデバイスのアクセス能力は、実質的により高速である。なぜなら、記憶媒体が電子メモリであるからである。すなわち、電子メモリの場合、磁気ディスクドライブのようなスピンアップタイムは必要ない。すなわち、ＭＬＣデバイスに電力を供給し、データを読み出した後、デバイスへの電力の供給はオフにされる。フラッシュベースの保存システムの処理能力は、いかなる機械的又は電気的デバイスに基づくシステムに比べても、実質的に優れている。さらに、フラッシュベースの保存システムは、その設置面積が小さく、テープ及び／又はディスク保存システムに比べて少ない電力しか消費しない。
【発明の効果】
【０００９】
有利なことに、データ保存システムにおけるフラッシュデバイスの使用は、動作のために環境的に整備された領域を必要としない。すなわち、フラッシュデバイスは、テープ及び／又はディスク保存システムに比べて大きなフロア空間、及び／又は電力を必要することも、消費することもない固体半導体デバイスである。さらに、電力は、アクセスされるフラッシュデバイスへ供給するのみで足り、すなわち、システムの他の半導体デバイスは、オフにしたままであってよい。さらに、フラッシュベースの保存システムは、フラッシュデバイスに記憶されたデータへのランダムアクセスが高速かつ効率的であるため、ディスクドライブ保存システムに比べて高い能力を提供する。
【００１０】
動作において、データセットは、データ保存ストレージシステムに伝送される。受信されたデータセットは、例えばＭＬＣフラッシュデバイスのような電子記憶媒体のアレイに記憶される前に、重複解除され、圧縮される。データ保存ストレージシステムが、データアーカイブからデータを取り出す（読み出す）ためのデータアクセス要求を受け取ると、ストレージシステムはまず、要求されたデータが記憶されているデバイスを特定する。次に、特定されたデバイスの電源が投入され、そこからデータが読み出される。次に、そのデータは、要求元へ返される前に、圧縮解除され、復元される。その後、それらのデバイスの電源はオフにされる。
【００１１】
本発明の上記の、及び他の利点は、添付の図面と併せて下記の説明を参照することにより、より良好に理解することができる。図面において、同様の符号は、同一の、又は機能的に類似の要素を指している。
【図面の簡単な説明】
【００１２】
【図１】本発明の例示的実施形態に従って有利に使用される場合があるストレージシステムを含む環境を示す略ブロック図である。
【図２】本発明の例示的実施形態に従って有利に使用される場合があるストレージオペレーティングシステムを示す略ブロック図である。
【図３】本発明の例示的実施形態に従って有利に使用される場合があるストレージアーキテクチャの構成を示す略ブロック図である。
【図４】本発明の例示的実施形態に従ってデータ保存ストレージシステムにデータを記憶する手順の種々のステップの詳細を示すフロー図である。
【図５】本発明の例示的実施形態に従ってデータ重複解除を実施する手順の種々のステップの詳細を示すフロー図である。
【図６】本発明の例示的実施形態に従ってデータ保存ストレージシステムからデータを読み出す手順の種々のステップの詳細を示すフロー図である。
【発明を実施するための形態】
【００１３】
[例示的実施形態の詳細な説明]
Ａ．データ保存環境
図１は、本発明のデータ保存ストレージシステムを提供するように構成される場合があるストレージシステムを含む環境１００を示す略ブロック図である。ストレージシステム１２０は、書き込み可能な永久的電子及び磁気記憶媒体における情報の編成に関連するストレージサービスを提供するコンピュータである。その目的のために、ストレージシステム１２０は、システムバス１２５により相互接続されたプロセッサ１２２、メモリ１２４、ネットワークアダプタ１２６、ストレージアダプタ１２８、及び電子記憶媒体１４０を含む。ストレージシステム１２０はさらに、ストレージオペレーティングシステム２００を含み、ストレージオペレーティングシステム２００は、情報をファイル、及び論理ユニット（ＬＵＮ）のようなデータコンテナの階層構造として、電子及び磁気記憶媒体１４０、１５０上に論理編成するための仮想化システムを実施する。
【００１４】
メモリ１２４は、本明細書に記載される種々の実施形態に関連するソフトウェアプログラム、及びデータ構造を記憶するために、プロセッサ及びアダプタによりアドレス指定可能な種々の記憶位置を含む。さらに、プロセッサ、及びアダプタは、ソフトウェアプログラムを実行し、データ構造を操作するように構成された種々の処理要素、及び／又は論理回路を含む場合がある。ストレージオペレーティングシステム２００は、その種々の部分が通常、メモリに存在し、処理要素により実行され、とりわけ、システム上で実行されるソフトウェアプロセスをサポートする種々のストレージオペレーションを実施することにより、ストレージシステムを機能的に編成する。当業者には明らかなように、本明細書に記載される種々の実施形態に関連する種々のプログラム命令の記憶、及び実行には、種々のコンピュータ読取可能媒体のような、他の処理手段、及び他の記憶手段を使用してもよい。
【００１５】
電子記憶媒体１４０は、例えばストレージシステムへの電力供給が失われたときに、データを保持する能力を有する永久的記憶空間を提供するように構成される場合がある。したがって、電子記憶媒体１４０は、アレイへの何らかの電源喪失が発生した時に、メモリの最後の状態を保持するためのバックアップバッテリー、又は他の内蔵最終状態保持機能（例えば、フラッシュメモリ）を有する固体デバイス（ＳＳＤ）の大容量ランダムアクセスメモリアレイとして実施される場合がある。ＳＳＤは、フラッシュメモリデバイス（「フラッシュデバイス」）を含む場合があり、フラッシュメモリデバイスは、例えば、良好な読出し能力を有するブロック志向の半導体デバイスである。すなわち、フラッシュデバイスに対する読み出し処理は、書き込み処理に比べて実質的に高速である。その主な理由は、それらの記憶態様にある。フラッシュデバイスのタイプには、各セルに単一ビットを記憶するシングルレベルセル（ＳＬＣ）フラッシュデバイスと、各セルに複数ビット（例えば、２、３又は４ビット）を記憶するマルチレベルセル（ＭＬＣ）とがある。ＭＬＣフラッシュデバイスは、ＳＬＣデバイスに比べて高密度であるが、例えば磨耗が生じるまで、ＭＬＣフラッシュデバイスに絶え間なく書き込む能力は、ＳＬＣデバイスの場合に比べて実質的により大きく制限される。電子記憶媒体の種々の部分は、仮想化システムによって処理される例えば書き込み命令のような特定のデータアクセス命令を、例えばシステムのコンシステンシー・ポイント（ＣＰ）のようなコンシステンシー・モデル・イベントの際に、電子及び磁気記憶媒体に記憶されるまで、一時的に記憶（「ロギング」）するために使用される不揮発性ログ（ＮＶＬＯＧ１４６）として構成される場合がある。ＣＰについては、１９９８年１０月６日に発行された「Method for Maintaining Consistent States of a File System and for Creating User-Accessible Read-Only Copies of a File System」と題するデビット・ヒッツ他による米国特許第５、８１９，２９２号に記載されており、その内容は、参照により本明細書に援用される。さらに、本発明の例示的実施形態において、電子記憶媒体は、署名データベース１７０、及び、例えばファイル１７５として構成されるブロック参照カウントデータ構造を含む場合がある。署名データベース１７０、及びブロックカウント参照ファイル１７５は、例えば、データ保存ストレージシステムへ書き込まれるデータに対して、後で詳しく説明する重複解除処理を実施するために使用される。
【００１６】
ネットワークアダプタ１２６は、コンピュータネットワーク１６０を介してストレージシステム１２０をクライアント１１０に接続するために必要とされる機械的、電気的、及び信号的回路を含み、コンピュータネットワーク１６０は、ポイント・ツー・ポイント接続、又はローカル・エリア・ネットワークのような共有媒体を含む場合がある。クライアント１１０は、データベースアプリケーションのようなアプリケーション１１２を実行するように構成された汎用コンピュータであってもよい。また、クライアント１１０は、情報配送のクライアント／サーバモデルに従って、ストレージシステム１２０と情報をやりとりする場合がある。すなわち、クライアントが、ストレージシステムにサービスを要求すると、ストレージシステムは、ネットワーク１６０を介してパケットをやりとりすることにより、クライアントにより要求されたサービスの結果を返す場合がある。クライアントは、ファイルの形をした情報にアクセスする場合、ＴＣＰ／ＩＰを介して、コモン・インターネット・ファイル・システム（ＣＩＦＳ）プロトコル、又はネットワーク・ファイル・システム（ＮＦＳ）プロトコルのようなファイルベースのアクセスプロトコルを有する種々のパケットを発行する場合がある。あるいは、クライアントは、ｌｕｎ又は ブロックの形をした情報にアクセスする場合、「ＳＣＳＩ（Small Computer Systems Interface）ｏｖｅｒ  ＴＣＰ」（ｉＳＣＳＩ）プロトコル、「ＳＣＳＩ  ｏｖｅｒ  ＦＣ」（ＦＣＰ）プロトコル、又は「ＳＣＳＩ  ｏｖｅｒ  ＦＣ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ」（ＦＣｏＥ）プロトコルのようなブロックベースのアクセスプロトコルを有するパケットを発行する場合がある。
【００１７】
ストレージアダプタ１２８は、ストレージシステムにおいて実行されるストレージシステム２００と協働し、例えばハードディスクドライブ（ＨＤＤ）として実施される磁気記憶媒体１５０へのアクセスを管理する。ストレージアダプタは、従来の高性能ファイバチャネル・シリアルリンク・トポロジのようなＩ／Ｏ相互接続構成を介してＨＤＤと接続するための入出力（Ｉ／Ｏ）インタフェース回路を含む。情報は、ストレージアダプタにより読み出され、システムバス１２５を介してネットワークアダプタ１２６へ伝送される前に、必要に応じてプロセッサ１２２（又はアダプタ１２８）によって処理され、ネットワークアダプタ１２６において、情報は、パケットに成形され、クライアント１１０へ返される。例えば、データ保存ストレージシステムは、データの記憶に電子媒体を利用する場合がある。但し、代替実施形態では、ＨＤＤとＳＳＤのハイブリッド媒体を使用する場合もある。有利に使用可能なハイブリッド媒体アーキテクチャの一例は、２００８年２月１２日に出願された「Hybrid Media Storage System Architecture」と題するジェフリー・エス・キメル他による米国仮特許出願第６１／０２８，１０７号に記載されており、その内容は、参照により本明細書に援用される。
【００１８】
Ｂ．ストレージオペレーティングシステム
図２は、本発明に有利に使用することができるストレージオペレーティングシステム２００を示す略ブロック図である。ストレージオペレーティングシステムは、ネットワークドライバモジュール（例えば、イーサネットドライバ）、ネットワークプロトコルモジュール（例えば、イーサネットプロトコルモジュール、及びその支援搬送手段であるトランスポートコントロールプロトコルモジュール、及びユーザデータグラムダイアグラムプロトコルモジュール）、及びファイルシステムプロトコルサーバモジュール（例えば、ＣＩＦＳサーバ、ＮＦＳサーバ等）を含む、ネットワークプロトコルスタック２１０として編成された一連のモジュールを含む。さらに、ストレージオペレーティングシステム２００は、ＲＡＩＤ（Redundant Array of Independent or Inexpensive Disks）プロトコルのような記憶媒体プロトコルを実施する媒体記憶モジュール２２０と、ＳＣＳＩ（Small Computer Systems Interface）プロトコルのような記憶媒体アクセスプロトコルを実施する媒体ドライバモジュール２３０とを含む。本明細書に記載されるように、媒体記憶モジュール２２０は、代替的に、パリティ保護（ＲＡＩＤ）モジュールとして実施され、ＲＡＩＤコントローラのような独立したハードウェアコンポーネントとして実施される場合がある。
【００１９】
これらの記憶媒体ソフトウェアモジュールをネットワーク及びファイルシステムプロトコルモジュールに橋渡しするのは、ファイルシステム２４０として実施される場合がある仮想化システムである。いかなるタイプのファイルシステムを使用してもよいが、例示的実施形態として、ファイルシステム２４０は、データレイアウトフォーマットを使用し、本明細書に詳しく記載されるようなデータレイアウト技術を実施する場合がある。
【００２０】
本明細書において、「ストレージオペレーティングシステム」という用語は通常、データアクセスを管理するストレージ機能を実施するためにコンピュータ上で動作するコンピュータ実行可能コードを意味し、ストレージシステム１２０の場合、汎用オペレーティングシステムのデータアクセスセマンティックを実施する場合がある。また、ストレージオペレーティングシステムは、マイクロカーネルとして実施されても、あるいは、ＵＮＩＸ（登録商標）、Ｗｉｎｄｏｗｓ  ＮＴ（登録商標）又は変更可能な機能を有する汎用オペレーティングシステムの上で動作するアプリケーションプログラムとして実施されてもよく、当該機能は、本明細書に記載されるようなストレージアプリケーションのために構成される。
【００２１】
さらに、当業者には分かるように、本明細書に記載される発明は、ストレージシステムとして実施され、又はストレージシステムを含むスタンドアロンのコンピュータ、及びその一部を含む、いかなるタイプの特殊目的（例えば、ファイルサーバ、ファイラ、又はストレージサービスを提供するアプライアンス）のコンピュータにも、汎用コンピュータにも適用することが可能である。さらに、本発明の教示は、限定はしないが、ネットワーク・アタッチド・ストレージ環境、ストレージ・エリア・ネットワーク、及びクライアント又はホストコンピュータに直接取り付けられたディスクアセンブリを含む種々のストレージシステムアーキテクチャに適用することが可能である。従って、「ストレージシステム」という用語は、ストレージ機能を実施するように構成され、他の装置又はシステムに関連する任意のサブシステムの他に、それらの構成をも含むものとして、広い意味で解釈しなければならない。
【００２２】
フラッシュデバイスに記憶されるデータは、ページ単位でアクセスされる（例えば、読み出し命令又は書き込み命令により）。ページは例えば、４キロバイト（ＫＢ）のサイズであるが、他のページサイズ（例えば、２ＫＢ）も、本発明に有利に使用可能である。ページ上に以前に書き込まれたデータを書き換えるためには、そのページを消去しなければならないが、一実施形態において、消去の単位は、複数（例えば、６４）のページからなるブロック、すなわち、２５６ｋＢのサイズの「フラッシュブロック」とされる場合がある。したがって、デバイスに記憶されたデータをページ単位でアクセス（読み出し、及び書き込み）することは可能であるが、デバイスのクリーニング又は消去は、ブロック単位で行われる。フラッシュデバイスの書込み処理が遅い一つの理由は、デバイス中の空き空間の管理が必要な点にある。すなわち、１ブロックのページに対する書込み処理が可能となるだけの十分な記憶空間が無い場合、有効データをデバイス中の他のブロックへ移動させ、ブロック全体のうちの幾つかのページを消去し、将来の割り当てに備えて開放することが出来るようにしなければならない。フラッシュデバイスのそのような書込み動作は一般に、書き込み処理能力が必要とされるシステムにおいて、書き込みの効率を制限する。
【００２３】
Ｃ．ストレージアーキテクチャ
図３は、本発明のデータ保存ストレージシステムの一実施形態に従って使用される場合がある例示的な媒体記憶アーキテクチャ３００の構成を示す略ブロック図である。このアーキテクチャは、フラッシュアレイ３４０のＳＳＤの動作を制御し、ストレージシステム１２０の全体的記憶空間を提供するために、パリティ保護（ＲＡＩＤ）モジュール３２０の上に配置されたファイルシステム２４０を含む。フラッシュ（ＳＳＤ）コントローラ３３０は、そのそれぞれの媒体（フラッシュ、又はディスクのそれぞれ）にアクセスするためのストレージプロトコルを実施する。本明細書に詳しく記載されるように、アレイ３４０の各ＳＳＤは、例えばＳＳＤコントローラ３３０ａにより提供される関連変換モジュール３３５を含む。
【００２４】
ＳＳＤコントローラ３３０は、ジオメトリ情報をＲＡＩＤモジュール３２０にエキスポートする。ここで、ジオメトリ情報は、デバイスのモデルタイプ、及び例えばモジュール３２０により使用されるデバイスブロック番号（ｄｂｎ）に換算された、デバイスのサイズ（ブロック数）を含む。フラッシュアレイ３４０の場合、ｄｂｎは、例えば、ＳＳＤコントローラ３３０がＲＡＩＤモジュールに渡す論理アドレスであり、ＳＳＤの内部において、フラッシュ物理アドレスへの変換マッピングを受ける。ＳＳＤコントローラは、例えば、１セクタインタフェースあたり５１２バイトを提供し、セクタインタフェースは、例えば４ＫＢのブロックサイズにおけるランダム書き込みアクセスのために最適化される場合がある。
【００２５】
ファイルシステム２４０は、例えば、電子記憶媒体１４０のフラッシュアレイ３４０に対する読み出し及び書き込み処理能力を向上させるデータレイアウト技術を実施する。例えば、ファイルシステムは、ファイルのようなデータコンテナに対する高速書き込みアクセスを可能にするデータレイアウトフォーマットを使用し、それによって、フラッシュアレイ３４０に対するランダム（及びシーケンシャル）データアクセスオペレーションの効率的なサービス提供を可能にする。その目的のために、ファイルシステムは例えば、一組のＷｒｉｔｅ  Ａｎｙｗｈｅｒｅアルゴリズムを実施することにより、フラッシュアレイ３４０のＳＳＤ上の空きの利用可能空間における任意の場所へのデータの配置を可能にする場合がある。
【００２６】
フラッシュアレイ３４０は、例えばＳＳＤから構成されるため、ランダムアクセスは、安定している（すなわち、ＨＤＤのように機械的位置決めに基づくものではない）。したがって、ファイルシステム２４０は、ＳＳＤと協働し、アレイのシーケンシャル読み出し能力を低下させることなく書き込み処理能力を向上させる、フラッシュアレイ３４０のためのデータレイアウトエンジンを提供する。
【００２７】
一実施形態において、ファイルシステム２４０は、例えば４ＫＢブロックを使用するブロックベースのフォーマット表現を有し、インデックスノード（「ｉｎｏｄｅ」）を使用して例えばファイルのようなデータコンテナを表現する、メッセージベースのシステムである。本明細書において、ファイルシステムは、任意単位のオブジェクト記憶（例えば、ファイルブロック番号）から物理記憶（例えば、物理ボリュームブロック番号）へのマッピングを実施する。媒体の利用可能な記憶空間へ記入するための小さな割り当て（例えば、４ＫＢ）を可能にするために、マッピングの細粒度は、例えばブロック単位とされる。但し、当業者には分かるように、媒体記憶アーキテクチャは、ストレージ上で実施される如何なる種類のオブジェクトにも使用可能なものでなければならず、また、ブロック単位の配置が可能となる良好な細粒度を提供するだけの十分な変換を実施するものでなければならない。
【００２８】
また、ファイルシステムは、例えば種々のデータ構造を使用して、アレイの種々の記憶装置上における自身のレイアウトを表すメタデータを記憶する場合がある。ファイルシステム２４０は、フラッシュアレイ３４０のＳＳＤのような記憶装置に記憶された情報に対するファイルベースのアクセスに使用されるセマンティック機能を提供する。さらに、ファイルシステムは、記憶された情報に対するブロックベースのアクセスに使用されるボリューム管理機能を提供する。すなわち、ファイルシステム２４０は、ファイルシステムセマンティックを提供する他に、（１）記憶装置のアグレゲーション、（２）装置の記憶帯域幅のアグレゲーション、（３）ミラーリング、及び／又はパリティ（ＲＡＩＤ）のような信頼性保証、及び（４）シンプロビジョン（Thin-Provision）のような種々の機能を提供する。
【００２９】
後者に関し、ファイルシステム２４０は、例えば媒体記憶モジュール２２０の、パリティ保護（ＲＡＩＤ）モジュール３２０とさらに協働し、フラッシュアレイ３４０に対するストレージオペレーションを制御する。フラッシュアレイ３４０の場合、アレイのＳＳＤに例示的に関連する信頼性制御の階層がある。例えば、各ＳＳＤは、ページ単位で誤り訂正符号（ＥＣＣ）機能を内蔵している。その結果、フラッシュブロック内のページについて、低レベルの信頼性制御が得られる。それらの装置のうちの１以上が故障したときにエラーからの復旧を可能にするために、複数のＳＳＤ内においてフラッシュブロックを実施する場合、さらに高レベルの信頼性制御がさらに実施される。
【００３０】
高レベルの信頼性制御は、例えば、ＲＡＩＤモジュール３２０により設定されるＲＡＩＤレベル実施形態のような冗長構成として実施される。情報の記憶は、好ましくは、ボリューム（複数可）上のボリュームブロック番号空間の全体的論理構成を定義するように互いに協働する１以上のＳＳＤを含む１以上のストレージボリュームとして実施される。ここで、ＲＡＩＤモジュール３２０は、ボリューム内のＳＳＤを、１以上のパリティグループ（例えば、ＲＡＩＤグループ）として編成し、パリティ計算、及び各グループのＳＳＤへのデータの配置に使用されるトポロジー情報を管理する。ＲＡＩＤモジュールはさらに、例えば、ＲＡＩＤ１、４、５、及び／又は６実施形態のような１以上のＲＡＩＤ実施形態に従ってＲＡＩＤグループを構成し、それによって、例えば１以上のＳＳＤに故障が発生した時、ＳＳＤに対する保護を提供する。すなわち、ＲＡＩＤ実施形態は、ＲＡＩＤグループにおける所与の数のＳＳＤにわたるデータ「ストライプ」の書込み、及びストライプ化データに関する例えばパリティのような冗長情報の適切な記憶により、データ記憶の信頼性／完全性を向上させる。
【００３１】
フラッシュアレイ３４０の場合、ＲＡＩＤモジュール３２０は例えば、複数のＳＳＤを１以上のパリティグループ（例えば、ＲＡＩＤグループ）として編成し、パリティ計算、及び各グループの装置へのデータの配置に使用されるトポロジー情報を管理する。その目的のために、ＲＡＩＤモジュールは、データをＲＡＩＤグループ内にブロックのストライプとしてさらに編成する。その際、１つのストライプは、複数のＳＳＤにわたって対応する位置にあるフラッシュページを含む場合がある。すなわち、１つのストライプは、ＲＡＩＤグループ全体にわたって、ＳＳＤ０上の第１のページ０、ＳＳＤ１上の第２のページ０、等に広がる場合があり、パリティは、装置の種々のページにわたって分散される場合がある。なお、ファイル内の所定数のブロック（例えば、８つのブロック）ごとに１つのブロックをパリティブロックとする論理ＲＡＩＤ実施形態が得られるような他のＲＡＩＤグループ構成も可能である。
【００３２】
ボリュームは、仮想ボリュームとして実施される場合があり、例えばフラッシュアレイ３４０及びディスクアレイ３５０の１以上のアグレゲートとしてさらに編成される場合がある。アグレゲート及び仮想ボリュームについては、２００８年８月５日に発行された「Extension of Write Anywhere File System Layout」と題するジョン・ケイ・エドワード他による米国特許第７，４０９，４９４号に記載されており、その内容は、参照により本明細書に援用される。簡単に言えば、アグレゲートは、ファイルシステムによってストレージシステムの１以上の仮想ボリューム（ｖｖｏｌ）に分配されるＲＡＩＤグループのようなＳＳＤの１以上のグループを含む。各ｖｖｏｌは、ファイルシステムレイアウト実施形態のアルゴリズムを利用しつつ、「ポイント・イン・タイム」データイメージ（すなわち、スナップショット）オペレーション機能のような、独自の論理的性質を有する。アグレゲートは、独自の物理的ボリュームブロック番号（ｐｖｂｎ）空間を有し、そのｐｖｂｎ空間の中に、ブロックアロケーション構造のようなメタデータを保持する。各ｖｖｏｌは、独自の仮想ブロック番号（ｖｖｂｎ）空間を有し、そのｖｖｂｎ空間の中に、ブロックアロケーション構造のようなメタデータを保持する。
【００３３】
各ｖｖｏｌは、ｖｖｏｌにより使用中のあらゆるブロックを保持するアグレゲート中の「隠し」ファイル（ユーザにとってアクセス不能）であるコンテナファイルに関連する場合がある。ファイルシステム２４０は、ｖｖｏｌ上で動作する場合、ＲＡＩＤモジュール３２０により提供されるトポロジー情報を使用して、ｖｖｂｎ（例えば、ｖｖｂｎ  Ｘ）をＳＳＤ上のｄｂｎ位置に変換する。ｖｖｂｎは、そのｖｖｏｌ上におけるｖｖｂｎ  Ｘを有するブロックが、コンテナファイル中のｆｂｎ  Ｘの位置において見付けることが出来るように、コンテナファイル中のファイルブロック番号（ｆｂｎ）位置を特定する。ファイルシステムは、コンテナファイルの間接ブロックを使用して、そのｆｂｎをアグレゲート内の物理的ｖｂｎ（ｐｖｂｎ）位置に変換し、その後、そのブロックは、ＲＡＩＤモジュール３２０により供給されるトポロジー情報を使用して、記憶装置から読み出すことができる。
【００３４】
例示的実施形態において、ＲＡＩＤモジュール３２０は、データの書き込みアロケーションを実施するときに、すなわち、フラッシュアレイ３４０のｖｖｂｎ記憶空間における空きの未割り当て空間を探すときにファイルシステム２４０により使用すべきトポロジー情報をエキスポートする。このトポロジー情報は、例えば、ｐｖｂｎからｄｂｎへのマッピングを含む。
【００３５】
フラッシュアレイ３４０の場合、書き込みアロケーションを実施するためにファイルシステムにより使用されるブロックアロケーションアカウンティング構造は、第１のデータレイアウトフォーマットを成すような、例えば逐次的順序による、アレイへのデータの書き込みが可能となるようなサイズを有する。その目的のために、ファイルシステム２４０は、アレイ３４０において、例えば２５６ＫＢフラッシュブロック単位で、順番に書き込みアロケーションを実施する。すなわち、フラッシュアレイにおけるｖｖｂｎは、例えば、２５６ＫＢフラッシュブロックにマッピングされる。フラッシュブロックが、ストレージオペレーティングシステムによって消去され、「空き」として（例えば、空きｖｖｂｎとして）指定された後、データは、フラッシュブロックにおける６４個の４ＫＢページ（例えば、ページ０からページ６３）に順番に書き込むことができ（ＣＰの書き込み命令に従って）、その時点で、次の空きフラッシュブロックがアクセスされ、書き込み処理は、ページ０からページ６３まで順番に発生する。ファイルシステム２４０により使用される、例えば空きブロックマップのようなアカウンティング構造２７５は、例えば、セグメントクリーニングプロセス２７０により管理され、アロケーションに使用可能な空きフラッシュブロックを示す。
【００３６】
例えば、セグメントクリーニングは、フラッシュブロックに間接的にマッピングされる１以上の選択された領域を開放するために実施される。有効データ（「有効ページ」）を含むそれらの選択された領域のページは、異なる領域へ移動され、選択された領域は、後続の再使用に備えて開放される。セグメントクリーニングは、断片化された空き空間を統合し、例えば基礎となるフラッシュブロックに対する書き込み処理能力を向上させる。このように、ファイルシステム２４０の動作を活用することで、フラッシュアレイ３４０に対するセグメント・クリーニングのようなＷｒｉｔｅ  Ａｎｙｗｈｅｒｅ機能が得られる。例えば、セグメントクリーニングプロセス２７０は、ＳＳＤを「クリーニング」（クリア）するときに、ファイルシステム内の書き込みアロケータと協働し、バッファ及びｉｎｏｄｅツリーを順番に検査する（歩く）スキャナとして実施される場合がある。
【００３７】
Ｄ．データ保存の処理
本発明の種々の実施形態によれば、複数のフラッシュデバイスから構成される大容量ストレージアレイを有するフラッシュベースのデータ保存ストレージシステムが得られる。フラッシュデバイスは、例えば小さなフォームファクタとなるように、強固にパッケージングされ、テープドライブ又はディスクドライブに比べて１立方インチあたりより多くの容量を有する低電力高性能データ保存システムを提供するマルチレベルセル（ＭＬＣ）フラッシュデバイスである。フラッシュベースのデータ保存システムは、データをコンパクトに記憶するために、従来のデータ重複解除及び圧縮方法を利用するように構成される場合がある。但し、従来のテープ及びディスクアーカイブシステムとは違い、ＭＬＣフラッシュデバイスのアクセス処理能力は、より高速である。なぜなら、記憶媒体が電子メモリであるからである。すなわち、電子メモリの場合、磁気ディスクドライブに必要とされるようなスピンアップタイムは必要ない。すなわち、電力がＭＬＣデバイスに供給され、データが読み出された後、デバイスへの電力の供給はオフにされる。フラッシュベースの保存システムの処理能力は、いかなる機械的又は電子的デバイスに基づくシステムよりも優れている。さらに、フラッシュベースの保存システムは、その設置面積が小さく、テープ及び／又はディスク保存システムに比べて電力の消費も少ない。
【００３８】
有利なことに、データ保存システムにおけるフラッシュデバイスの使用は、動作のために、環境的に整備された領域を必要としない。すなわち、フラッシュデバイスは、テープ及び／又はディスク保存システムに比べて、大きなフロア空間、及び／又は電力を必要とせず、それらを消費することもない固体半導体デバイスである。さらに、電力は、アクセスされるフラッシュデバイスへ供給するのみで足り、すなわち、システムの他の半導体デバイスへの電力は、オフのままにすることができる。さらに、フラッシュベースの保存システムは、ディスクドライブ保存システムに比べて高い処理能力を提供する。なぜなら、フラッシュデバイスに記憶されたデータへのランダムアクセスは、高速かつ効率的であるからである。
【００３９】
動作において、データセットは、例えばクライアント１１０からデータ保存システムへ伝送される。受信されたデータセットは、例えばＭＬＣフラッシュデバイスのような電子記憶媒体のアレイに記憶される前に、データ保存ストレージシステムにより重複解除及び圧縮される。データ保存ストレージシステムが、データアーカイブからデータを取り出す（読み出す）ためのデータアクセス要求を受け取ると、ＳＳＤコントローラ３３０はまず、要求されたデータが記憶されているデバイスを特定する。次に、ＳＳＤコントローラ３３０により、特定されたデバイスの電源が投入され、そこからデータが読み出される。次に、データは、要求元へ返される前に、圧縮解除され、復元される。その後、それらのデバイスの電源はオフにされる。
【００４０】
図４は、本発明の例示的実施形態に従ってデータをデータ保存ストレージシステムに記憶する手順の種々のステップの詳細を示すフロー図である。手順４００は、ステップ４０５から開始され、ステップ４１０へ進み、そこで、データアーカイブに記憶すべき新たなデータセットが受信される。例えば、この新たなデータセットは、例えばファイルシステムのバックアップイメージのような長期記憶のために、データアーカイブに記憶される。データセットは、データ保存ストレージシステムに対する従来のファイル転送プロトコル、及び／又はデータバックアッププロトコルを使用して受信される場合がある。例示的実施形態として、受信されたデータセットは、次に、後で図５を参照して下で説明されるステップ５００において重複解除される。なお、代替実施形態として、データセットは、重複解除されない場合もあり、及び／又は手順５００に記載したもの以外の技術を使用して重複解除される場合もある。したがって、重複解除されるデータセットの説明は、単なる例として解釈すべきである。
【００４１】
データセットの重複解除が完了した後、ステップ４１５において、次にデータセットは、圧縮される。データセットは、如何なる圧縮技術を使用して圧縮されてもよく、例えば、ＺＩＰ、ＬＺＷ等を使用して圧縮される場合がある。なお、代替実施形態として、データセットは、圧縮されない場合もある。従って、データセットの圧縮に関する説明は、単なる例として解釈すべきである。次に、ステップ４２０において、重複解除され圧縮されたデータセットは、データ保存ストレージシステムの種々のＳＳＤに記憶される。そして、手順はステップ４２５において終了する。
【００４２】
図５は、本発明の例示的実施形態によるデータ重複解除手順５００の種々のステップの詳細を示すフロー図である。手順５００は、ステップ５０５から開始され、ステップ５１０へ進み、そこで新たなデータセットが、例えばデータ保存ストレージシステムによって受信される。例示的実施形態において、受信されたデータセットは、データ保存ストレージシステムに対する新たなテープバックアップデータストリームを含む場合がある。例えば、ファイルシステム２４０は、下で説明される例示的な重複解除技術を実施する。但し、本発明の代替実施形態では、任意の重複解除技術が使用される場合があることに留意すべきである。したがって、本明細書に記載される重複解除技術は、単なる例として解釈すべきである。
【００４３】
新たなデータセットの受信に応答し、ステップ５１５において、ファイルシステム２４０は、そのデータセットを複数のブロックに切り分ける（分割する）。ファイルシステム２４０は、任意の許容可能な形のデータ分割を使用して、データセットを切り分けることができる。例示的な実施形態において、ファイルシステム２４０は、データを例えば３２ＫＢのサイズの固定サイズのブロックに切り分ける。但し、代替実施形態では、更に別の、及び／又は異なるサイズが使用される場合もあることに留意すべきである。また、本発明は、データセットからデータのブロックを生成する他の技術と共に使用される場合がある。したがって、固定サイズのブロックの使用に関する説明は、単なる例として解釈すべきである。
【００４４】
次に、ステップ５２０において、ブロックの署名が生成される。例えば、この署名は、ブロックの中に含まれるデータをハッシュ化し、得られたハッシュ値を署名として使用することにより生成される場合がある。当業者には明らかなように、衝突を避けるために、すなわち、異なる内容を持つブロックが、同じハッシュ値にハッシュ化されることを避けるために、強いハッシュ関数を選択しなければならない。但し、代替実施形態では、署名を生成するために異なる技術が使用される場合もあることに留意すべきである。したがって、ブロック内のデータのハッシュ化に関する説明は、単なる例として解釈すべきである。
【００４５】
ブロックの署名の生成が完了した後、ステップ５２５において、ファイルシステム２４０は、生成された署名が署名データベース１７０の中にあるか否かを判断する。これは、例えば、従来のハッシュテーブルルックアップ技術を使用して達成される場合がある。署名が署名データベース中に記憶されていなかった場合、手順５００は、ステップ５３０へ分岐し、そこでファイルシステム２４０は、その署名を署名データベースにロードする。署名が署名データベース中になかった場合、その署名に関連するブロックは、以前に記憶されてなく、すなわち、これが、そのブロックの最初の発生である。さらに、ステップ５３２において、そのブロックが記憶される。ステップ５３５において、データセット中にさらに別のブロックがあるか否かの判断がなされる。まだ別のブロックがある場合、手順５００は、ステップ５２０へループバックし、そこでファイルシステム２４０は、データセット中の次のブロックの署名を生成する。そうでなければ、手順５００は、ステップ５４０において終了する。
【００４６】
一方、生成された署名が署名データベース２７０中にあった場合、ステップ５４５において、ファイルシステム２４０は、到来するデータセット中のブロックを、以前に記憶されたブロックへのポインタに置き換える。すなわち、ファイルシステム２４０は、重複データブロックを以前に記憶されたデータブロックへのポインタに置き換えることにより、データの重複を解消する。例えば、データストリームＡＢＡは、重複解除の結果、ＡＢ＜以前に記憶されたＡへのポインタ＞となる場合がある。ポインタのサイズは一般に１ブロックのサイズよりも実質的に小さいため（一般に数桁程度）、記憶空間の実質的節約が図られる。次に、ステップ５５０において、ファイルシステム２４０は、カウンタファイル１７５を参照するために、そのブロック中の適当なカウンタをインクリメントする。
【００４７】
手順はステップ５３５へと続き、データセット中にさらに別のブロックがあるか否かの判断がなされる。データセット中にさらに別のブロックがなければ、手順は、ステップ５３５において終了する。一方、さらに別のブロックがある場合、手順は、ステップ５２０へループバックする。図６は、本発明の例示的実施形態に従ってデータ保存ストレージシステムからデータを読み出す手順６００の種々のステップの詳細を示すフロー図である。手順６００は、ステップ６０５から開始され、ステップ６１０へと続き、そこで、クライアントから、データ保存ストレージシステムに記憶されたデータの読み出しを求めるデータアクセス要求が受信される。次に、ステップ６１５において、要求されたデータを記憶しているストレージシステム中のＳＳＤが特定される。次に、ステップ６２０において、特定されたＳＳＤに電力が供給される。ＭＬＣ  ＳＳＤの機能を利用することで、電力をＳＳＤに供給する必要があるのは、ＳＳＤに対するＩ／Ｏ処理が行われている間のみとなる。その結果、本発明の例示的実施形態によれば、データ保存ストレージシステムの全体的な電力要件は、劇的に低減される。
【００４８】
ステップ６２５において、要求されたデータは、特定されたＳＳＤから読み出される。この読み出しオペレーションは、ＭＬＣ  ＳＳＤのための従来の読み出し技術を使用して実施される場合がある。次に、ステップ６３０において、読み出されたデータが圧縮解除される。この圧縮解除は、例えば、手順４００のステップ４１５からの圧縮を反転させる技術を使用する。すなわち、同じ圧縮技術が、圧縮解除にも使用される。当業者には明らかなように、これは、例えば、対称、非対称といった圧縮のタイプによって変わる場合がある。もしデータセットがデータ保存ストレージシステムに最初に記憶されたときに暗号化されなかった場合、データを圧縮解除する必要はなく、ステップ６３０は省略される場合がある。
【００４９】
さらに、ステップ６３５において、読み出されたデータは復元される。重複解除は、データセットがデータ保存ストレージシステムに最初に書き込まれるときの任意選択的ステップであるから、ステップ６３５は任意選択なものである。次に、ステップ６４０において、要求されたデータ、すなわち、今や圧縮解除され、復元された形（すなわち、元の形）を有する要求されたデータは、クライアントへ返される。これは、例えば、要求されたデータをネットワーク１６０を介して転送するための適当な要求を、ネットワークプロトコルスタック２１０により生成することによって達成される場合がある。電源を投入されたＳＳＤは、その後、ステップ６４５において、電源をオフにされる。その後、手順６００は、ステップ６５０において終了する。
【００５０】
上記の説明は、本発明の特定の実施形態に関するものである。しかしながら、明らかなように、それらの利点の一部または全部を維持しながら、記載した実施形態に対し、他の変更、及び修正を加えることも可能である。例えば、本明細書に記載した種々の構成要素、及び／又は構造は、コンピュータ上で実行されるプログラム命令を有するコンピュータ読取可能媒体を含むソフトウェアとして実施することも、ハードウェアとして実施することも、ファームウェアとして実施することも、あるいはそれらの組み合わせとして実施することも可能であることは、明確に予期される。さらに、各モジュールは、プログラマブルプロセッサにおいて実行されるソフトウェアとして実施される場合も、ハードウェアとして実施される場合も、あるいは、ハードウェアとソフトウェアの組み合わせとして実施される場合もある。すなわち、代替実施形態において、モジュールは、例えば、マイクロプロセッサ、又は、例えばプログラマブルゲートアレイ又は特定用途向け集積回路（ＡＳＩＣ）のようなコントローラの中に実現される論理回路として実施される場合がある。したがって、本明細書の説明は、単なる例として解釈すべきであり、本発明の範囲を制限するものではない。したがって、添付の特許請求の範囲の目的は、そのような変更や修正も全て、本発明の真の思想及び範囲の中に収めるようにカバーすることにある。
【図１】
2012525633.tif 000003
【図２】
2012525633.tif 000004
【図３】
2012525633.tif 000005
【図４】
2012525633.tif 000006
【図５】
2012525633.tif 000007
【図６】
2012525633.tif 000008
【手続補正書】
【提出日】平成24年5月14日(2012.5.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ保存ストレージシステムであって、
ファイルシステムを含むストレージオペレーティングシステムを実行するように構成されたプロセッサに相互接続されたマルチレベルセルフラッシュデバイスのアレイを含み、前記ファイルシステムは、当該データ保存ストレージシステムに記憶すべきデータセットの受信に応答し、（１）受信されたデータセットを重複解除し、前記されたデータセットを複数の所定サイズのブロックに切り分け、前記複数の所定サイズのブロックのうちの重複データブロックを、前記マルチレベルセルフラッシュデバイスの１以上に以前に記憶されたデータブロックへのポインタに置き換え、（２）重複解除された受信されたデータセットを圧縮し、（３）前記重複解除された受信されたデータセットを前記マルチレベルセルフラッシュデバイスのアレイに記憶し、前記マルチレベルセルフラッシュデバイスのアレイのうちのアクセスされていないマルチレベルセルフラッシュデバイスの電源をオフにし、それによって当該データ保存ストレージシステムの電力消費を低減するように構成される、データ保存ストレージシステム。
【請求項２】
前記ファイルシステムは、データの要求の受信に応答し、（４）前記マルチレベルセルフラッシュデバイスのうち前記要求されたデータを記憶している１以上のマルチレベルセルフラッシュデバイスを特定し、（５）特定されたマルチレベルセルフラッシュデバイスに電力を供給し、（６）前記特定されたマルチレベルセルフラッシュデバイスから前記要求されたデータを読み出し、（７）前記特定されたマルチレベルセルフラッシュデバイスから電力を取り除くようにさらに構成される、請求項１に記載のデータ保存ストレージシステム。
【請求項３】
前記ファイルシステムは、（８）前記読み出された要求されたデータを圧縮解除し、（９）前記読み出された要求されたデータを復元するようにさらに構成される、請求項２に記載のデータ保存ストレージシステム。
【請求項４】
前記データセットは、バックアップデータストリームを含む、請求項１に記載のデータ保存ストレージシステム。
【請求項５】
前記重複解除は、
前記受信されたデータセットを複数のブロックに切り分けるステップと、
前記複数のブロックのそれぞれについて署名を生成するステップと、
前記生成された署名が署名データベース中にあるか否かを判断するステップと、
前記生成された署名が前記署名データベース中にあるという判断に応答し、前記生成された署名を有するブロックを、前記生成された署名を有する以前に記憶されたブロックへのポインタに置き換えるステップと、
前記生成された署名が前記署名データベース中にないという判断に応答し、前記生成された署名を前記署名データベースに入れ、前記生成された署名を有するブロックを記憶するステップと
を含む、請求項１に記載のデータ保存ストレージシステム。
【請求項６】
データ保存ストレージシステムにおいて実行する方法であって、
前記データ保存ストレージシステムに記憶すべきデータセットを受信するステップと、
前記受信されたデータセットに対し、重複解除手順を実施するステップと、
前記重複解除されたデータセットを圧縮するステップと、
前記圧縮されたデータセットをマルチレベルセルフラッシュデバイスのアレイに記憶するステップと、
前記データ保存ストレージシステムのクライアントから、前記記憶されたデータに対する読み出し要求を受信するステップと、
コントローラにより、前記要求されたデータを記憶している一組のマルチレベルセルフラッシュデバイスを判定するステップと、
前記一組のマルチレベルセルフラッシュデバイスに電力を供給するステップと、
前記一組のマルチレベルセルフラッシュデバイスから前記要求されたデータを読み出すステップと、
前記読み出されたデータを圧縮解除するステップと、
前記圧縮解除されたデータを復元するステップと、
前記読み出し要求に応答するステップと、
前記一組のマルチレベルセルフラッシュデバイスへの電力を取り除くステップと
からなる方法。
【請求項７】
前記重複解除手順は、前記受信されたデータセットを複数の所定サイズのブロックに切り分けることを含む、請求項６に記載の方法。
【請求項８】
前記データセットは、バックアップデータストリームを含む、請求項１３に記載の方法。
【請求項９】
前記重複解除されたデータセットを圧縮するステップは、対称型圧縮技術を使用することを含む、請求項６に記載の方法。
【請求項１０】
前記重複解除手順は、
前記受信されたデータセットを複数のブロックに切り分けるステップと、
前記複数のブロックのそれぞれについて署名を生成するステップと、
前記生成された署名が署名データベース中にあるか否かを判断するステップと、
前記生成された署名が前記署名データベース中にあるという判断に応答し、前記生成された署名を有するブロックを、前記生成された署名を有する以前に記憶されたブロックへのポインタに置き換えるステップと、
前記生成された署名が前記署名データベース中にないという判断に応答し、前記生成された署名を前記署名データベースに入れ、前記生成された署名を有するブロックを記憶するステップと
を含む、請求項６に記載の方法。
【国際調査報告】
2012525633.tif 000009
2012525633.tif 000010