(57)【要約】【課題】ハイブリッド媒体ストレージアーキテクチャにおいて、媒体のパフォーマンス特性を向上させること。【解決手段】ハイブリッド媒体ストレージアーキテクチャは、ハイブリッド記憶媒体として編成され、互いに協調し、ストレージシステムの全体的記憶空間を提供する複数の異なる記憶媒体を制御するように構成されたログ構造ファイルシステムを有する。ログ構造ファイルシステムは、データの初期配置、及びマイグレーションを実施すると共に、ハイブリッド記憶媒体の複数の記憶空間場所の間におけるデータのきめ細かな粒度で書込みアロケーションを実施し、それによって媒体のパフォーマンス特性を向上させるように構成される。【選択図】図１
2014041645.tif 000002
【特許請求の範囲】
【請求項１】
固体デバイス（ＳＳＤ）及びハードディスクドライブ（ＨＤＤ）を含むハイブリッド記憶媒体として編成され、互いに協働し、ストレージシステムの全体的記憶空間を提供する複数の記憶媒体と、
前記ハイブリッド記憶媒体の複数の記憶空間位置の間におけるデータの初期配置、前記ＳＳＤから前記ＨＤＤへの選択されたデータのマイグレーション、及び前記ハイブリッド記憶媒体の空き記憶空間位置の書込みアロケーションを実施することにより、前記ハイブリッド記憶媒体を制御するように構成された仮想化システムと
を備え、前記ＳＳＤからＨＤＤへの選択されたデータのマイグレーションは、
前記ＳＳＤに記憶された関連データを識別し、
前記関連データを前記仮想化システムの不揮発性ログ記憶装置（１４６）に読み出し、
コンシステンシー・モデル・イベントの際に、前記ＨＤＤの種々の領域を使用して、前記関連データをデータレイアウトフォーマットにしたがって前記ＨＤＤに記憶することを含み、
前記関連データは、特定のファイルブロック番号（ｆｂｎ）範囲内にある特定のファイルを意味し、
前記領域はそれぞれ、複数の連続したブロックからなる、ストレージシステム。
【請求項２】
前記仮想化システムは、ログ構造ファイルシステムである、請求項１に記載のストレージシステム。
【請求項３】
前記仮想化システムは、前記データを前記媒体の何れかに最初に書き込み、その後、手動施行を必要とせずに、前記媒体間においてブロック単位レベルで前記データを移動する前記仮想化システムによって処理されるデータのタイプに関連するヒューリスティック及びポリシーを実施するようにさらに構成され、
前記ヒューリスティック及びポリシーは、
ランダム書込み処理に関連するデータを前記ＳＳＤに最初に書き込み、
１以上のシーケンシャル書込みストリームに関連するデータを前記ＨＤＤに最初に書き込むことを含む、請求項１に記載のストレージシステム。
【請求項４】
前記ＨＤＤは、前記仮想化システムのデータレイアウトフォーマットに従って関連データの種々の領域に分割され、前記仮想化システムは、前記データが存在する前記ＨＤＤ上のブロック位置を指定することによって前記ＨＤＤの種々の領域内へのデータの配置を実施し、ログ構造技術を使用して、新たなデータを前記ＳＳＤの消去ブロックに書き込むことにより前記ＳＳＤのランダム書込み能力を向上させ、前記ＳＳＤと前記ＨＤＤの間においてブロック単位レベルでデータを移動させる、請求項１に記載のストレージシステム。
【請求項５】
前記仮想化システムと協働し、前記ＳＳＤ及び前記ＨＤＤに対するストレージオペレーションを制御するように構成されたＲＡＩＤモジュールであって、前記ＳＳＤを１以上のパリティグループとして編成し、パリティ計算、及び各グループのＳＳＤへのデータの配置に使用されるトポロジー情報を管理するように構成されたＲＡＩＤモジュールと、
各ＳＳＤのＳＳＤコントローラであって、前記ＳＳＤのサイズをデバイスブロックの数（ｄｂｎ）に換算したものを含むジオメトリ情報を前記ＲＡＩＤモジュールにエキスポートするように構成されたＳＳＤコントローラと
をさらに含み、
ｄｂｎは、前記ＳＳＤコントローラが前記ＲＡＩＤモジュールに提示する論理アドレスであり、前記ＳＳＤコントローラの変換論理回路による変換マッピングを受けて、前記ＳＳＤの物理アドレスに変換される、請求項１に記載のストレージシステム。
【請求項６】
前記変換論理回路は、ウェアレベリングを実施し、前記ＳＳＤの度重なる消去及び書込みに起因する前記ＳＳＤの故障を減らすように構成され、書込み処理による消去ブロックのアクセスに応答し、前記変換論理回路は、前記消去ブロックをＳＳＤ上の新たな位置へ移動させ、前記消去ブロックの以前の位置を後続の書込み処理によって再使用出来るようにする、請求項５に記載のストレージシステム。
【請求項７】
前記ＨＤＤは、複数の領域に分割され、各領域は、複数の連続したブロックからなり、
前記仮想化システムは、前記ＳＳＤに記憶されたデータコンテナに対する書込みアクセスを提供し、前記ＳＳＤアレイに対するランダムデータアクセス処理のサービスを可能にする第１のデータレイアウトフォーマットと、前記ＨＤＤに記憶された大きなデータコンテナに対する連続的な読出しアクセスを提供し、前記ＨＤＤアレイに記憶されたデータのサービスを可能にする第２のデータレイアウトフォーマットとを有する、請求項１に記載のストレージシステム。
【請求項８】
（ａ）ストレージシステムの仮想化システムにおいて、前記ストレージシステムに記憶されたデータコンテナに対する書込み命令を処理するステップと、
（ｂ）前記仮想化システムにおいて前記書込み命令を検査し、前記書込み命令に関連するデータのタイプを識別するステップであって、前記データのタイプが、ランダム書込みデータ、及び大きな連続した書込みストリームデータを含む、前記書込み命令に関連するデータのタイプを識別するステップと、
（ｃ）前記データのタイプがランダム書込みデータである場合、前記書込み命令に関連するランダム書込みデータを、ＳＳＤアレイの固体デバイスに最初に記憶するステップと、
（ｄ）前記データのタイプが大きなシーケンシャル書込みストリームデータである場合、前記書込み命令に関連する大きなシーケンシャル書込みストリームデータをＨＤＤアレイのハードディスクドライブ（ＨＤＤ）に記憶するステップと、
（ｅ）前記ＨＤＤを、各領域が複数の連続したブロックからなる複数の領域に分割するステップと、
（ｆ）前記ＳＳＤから関連データを前記仮想化システムの不揮発性ログ記憶装置（１４６）に読み出すステップと、
（ｇ）コンシステンシー・モデル・イベントの際に、前記ＨＤＤの種々の領域を使用して、前記関連データをデータレイアウトフォーマットにしたがって前記ＨＤＤに記憶するステップと
を含み、前記関連データは、特定のファイルブロック番号（ｆｂｎ）範囲内にある特定のファイルを意味する、方法。
【請求項９】
前記ＳＳＤに記憶された選択されたデータを前記ＨＤＤへ移動させるステップをさらに含み、前記選択されたデータを移動させるステップは、
前記ＳＳＤから前記選択されたデータを前記ストレージシステムのメモリに読み出すステップと、
読み出された前記選択されたデータを、前記ＨＤＤの１以上の領域に記憶するステップと
を含む、請求項８に記載の方法。
【請求項１０】
前記仮想化システムは、ログ構造ファイルシステムである、請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[関連出願]
本願発明は、２００８年２月１２日に出願された「HYBRID MEDIA STORAGE SYSTEM ARCHITECTURE」と題するキメル他による本件と同じ譲受人の同時係続の米国仮出願第６１／０２８，１０７号に基く優先権の利益を主張するものであり、この米国仮出願の内容は参照により本明細書に援用される。
【０００２】
本願発明は、２００９年２月１１日に出願された「CACHE-BASED STORAGE SYSTEM ARCHITECTURE」と題するクレイメン他による本件と同じ譲受人の同時係続の米国特許出願第［代理人文書整理番号１１２０５６−０４８８Ｕ］号にも関連する。
【０００３】
[発明の分野]
本願発明は、ストレージシステムに関し、特に、ストレージシステムのストレージアーキテクチャに関する。
【背景技術】
【０００４】
[発明の背景]
ストレージシステムは、不揮発性メモリ及びディスクのような書込み可能な永久記憶媒体におけるデータの編成に関連するストレージサービスを提供するコンピュータである。ストレージシステムは、情報配送のクライアント／サーバモデルに従って動作するように構成される場合があり、それによって多数のクライアント（例えば、アプリケーション）が、システムによって提供されるデータにアクセスすることが可能となる。ファイルシステムは通常、ファイルシステム上のデータを扱うストレージアーキテクチャ、並びにランダムアクセスパターン及びストリーミングアクセスパターンを有する種々のブロックフォーマットを採用している。ディスクは一般に、優れたストリーミング処理能力（例えば、大きな連続ブロックの読み出し、又は「トラック読み出し」）を備えているが、ランダムアクセス（すなわち、個々のディスクセクタの読出し、及び書込み）については、良好に機能しない。換言すれば、ディスクは、ストリーミングモード又はシーケンシャルモードにおいては非常に能率的に動作するが、小さなランダムアクセスブロックオペレーションは、ディスクの処理能力を実質的に低速化させることがある。
【０００５】
ストレージシステムのストレージアーキテクチャの処理能力を向上させる一つの方法は、ハイブリッド記憶媒体を使用することであり、これは例えば、固体デバイス（ＳＳＤ）のような比較的高価な電子記憶装置をハードディスクドライブ（ＨＤＤ）のような比較的安価な磁気記憶装置と混合し、システムの全体的な記憶空間を得ることによってなされる。通常、そのような従来のストレージシステムのユーザ又は管理者は、ＳＳＤに記憶することによって非常に大きな恩恵を受けることができる頻繁にアクセスされる（すなわち、「人気の有る」）データを識別し、分離する一方、残りのデータはＨＤＤに記憶している。しかしながら、そのような人気の有るデータの識別、及び分離は通常、手動で実施又は施行されるため、管理者による時間を要するほどの努力が必要となる。
【０００６】
さらに、そのような従来のシステムの管理者は通常、１以上のボリュームを作成するために、ＳＳＤ、及びＨＤＤの物理的レイアウトを構成するための種々の判断を実施し、各ボリュームは、データを編成するために使用されるボリュームブロック番号（ｖｂｎ）記憶空間の論理構成を有することになる。その後管理者は、データの静的割当て、すなわち固定割当てを採用するために種々の判断を実施する場合があり、例えば、第１の範囲のｖｂｎに関連するデータは、ＳＳＤに基く一群の記憶装置に置く一方、第２の範囲のｖｂｎに関連するデータは、ＨＤＤに基く別の一群の記憶装置に置く場合がある。しかしながら、そのような固定データ割当て判断の実施は、特に割当てに変更があったときに、時間を要し、高価なものとなる。
【発明の概要】
【課題を解決するだめの手段】
【０００７】
[発明の概要]
本発明は、ハイブリッド記憶媒体として編成され、互いに協働し、ストレージシステムの全体的記憶空間を提供する複数の異なる記憶媒体を制御するように構成された、ログ構造ファイルシステムを有するハイブリッド媒体ストレージアーキテクチャを提供することによって、従来技術の欠点を克服する。その目的のために、ログ構造ファイルシステムは、データの初期配置、及びマイグレーションを実施すると共に、ハイブリッド記憶媒体の種々の記憶空間位置の間におけるデータのきめ細かな粒度の書込みアロケーションを実施するように構成され、それによって、媒体のパフォーマンス特性を向上させる。ファイルシステムは、例えばデータのタイプに関連するヒューリスティック及びポリシーを定義し、実施することにより、異なる媒体の何れに対してもデータを初期配置（書込み）することができ、その後、きめ細かな粒度で、及び手動施行を必要とせずに、媒体間においてデータをマイグレーション（移動）することができる。
【０００８】
一実施形態において、ハイブリッド記憶媒体は、固体デバイス（ＳＳＤ）のような比較的高価な電子記憶媒体と、ハードディスクドライブ（ＨＤＤ）のような比較的安価な磁気記憶媒体とを含む。ＨＤＤは、ログ構造ファイルシステムのデータレイアウトフォーマットに従って、関連（ファイル）データの種々の領域に分割される。その後、ファイルシステムは、例えばデータを置くことが可能なＨＤＤ上の種々のブロック位置を指定することによって、ＨＤＤの種々の領域内へのデータの配置を実施することができる。さらに、ファイルシステムは、ログ構造技術を使用して、ＳＳＤのランダム書込み処理能力を向上させ、例えばＳＳＤとＨＤＤの間において、きめ細かな粒度でデータを移動させる。
【０００９】
本発明の上記の利点、及び他の利点は、添付の図面と併せて下記の説明を読むことにより、よりよく理解することができる。図面中の同じ参照符号は、同一の要素、又は機能的に類似の要素であることを示している。
【図面の簡単な説明】
【００１０】
【図１】本発明と共に有利に使用されるストレージシステムを含む環境を示す略ブロック図である。
【図２】本発明と共に有利に使用されるストレージオペレーティングシステムを示す略ブロック図である。
【図３】本発明のハイブリッド媒体ストレージアーキテクチャを示す略ブロック図である。
【図４】本発明によるストレージシステムのハイブリッド媒体・ストレージアーキテクチャの例示的動作手順を示すフロー図である。
【図５】本発明と共に有利に使用されるＲＡＩＤ集合体を示す略ブロック図である。
【発明を実施するための形態】
【００１１】
[例示的実施形態の詳細な説明]
図１は、本発明と共に有利に使用されるストレージシステムを含む環境１００を示す略ブロック図である。ストレージシステム１２０は、書込み可能な永久的電子又は磁気記憶媒体における情報の編成に関連するストレージサービスを提供するコンピュータである。その目的のために、ストレージシステム１２０は、システムバス１２５によって相互接続されたプロセッサ１２２、メモリ１２４、ネットワークアダプタ１２６、ストレージアダプタ１２８、及び不揮発性ログ記憶装置（ＮＶＬＯＧ）１４６を含む。ストレージシステム１２０は、仮想化システムを実施し、情報を例えばファイルや論理ユニット（ＬＵＮ）のようなデータコンテナの階層構造として電子記憶媒体及び磁気記憶媒体１４０、１５０上に論理編成するストレージオペレーティングシステム２００をさらに含む。
【００１２】
メモリ１２４は、本明細書に記載する種々の実施形態に関連するソフトウェアプログラム、及び関連データ構造を記憶するためにプロセッサ及びアダプタによりアドレス指定可能な種々の記憶場所を含む。さらに、プロセッサ及びアダプタは、そうしたソフトウェアプログラムを実行し、データ構造を操作するように構成された処理要素、及び／又は論理回路を含む場合がある。ストレージオペレーティングシステム２００は、その種々の部分が通常、メモリに常駐し、処理要素によって実行され、とりわけシステムにおいて実行されるソフトウェアプロセスを支援するストレージオペレーションを実施することにより、ストレージシステムを機能的に編成する。当業者には明らかなように、本明細書に記載する種々の実施形態に関連するプログラム命令の記憶及び実行には、他の処理手段、及び種々のコンピュータ読取可能媒体を含む他の記憶手段を使用してもよい。
【００１３】
ＮＶＬＯＧ１４６は例えば、バックアップバッテリー、又はストレージシステムに故障が発生したときに情報を保持する機能を備えた他の内蔵最終状態保持機能（例えば、不揮発性半導体メモリ）を有する固体の不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）アレイとして実施される電子記憶装置を含む。一実施形態において、ＮＶＬＯＧ１４６は、書込み命令のような特定のデータアクセス命令を一時的に記憶（ログに記録）するために使用される。そうした特定のデータアクセス命令は、当該命令に関連するデータを電子記憶媒体、及び／又は磁気記憶媒体に記憶する前に、例えばシステムのコンシステンシー・ポイント（ＣＰ）のようなコンシステンシー・モデル・イベントの際に、仮想化システムによって処理される。コンシステンシー・ポイントの一例は、１９９８年１０月６日に発行された「Method for Maintaining Consistent States of a File System and for Creating User-Accessible Read-Only Copies of a File System」と題するデビッド・ヒッツ他によるネットワーク・アプライアンス・インコーポレイテッドに譲渡された米国特許第５，８１９，２９２号に記載されており、この米国特許は、参照により本明細書に援用される。
【００１４】
ネットワークアダプタ１２６は、コンピュータネットワーク１６０を介してストレージシステム１２０をクライアント１１０に接続するために必要とされる物理的、電気的、又は信号的回路を含み、コンピュータネットワーク１６０は、ローカル・エリア・ネットワークのようなポイント・ツー・ポイント接続を含む場合がある。クライアント１１０は、データベースアプリケーションのようなアプリケーション１１２を実行するように構成された汎用コンピュータであってもよい。また、クライアント１１０は、情報配送のクライアント／サーバモデルに従って、ストレージシステム１２０との間で情報をやりとりする場合がある。すなわち、クライアントがストレージシステムにサービスを要求すると、ストレージシステムは、例えばネットワーク１６０を介してパケットをやりとりすることによって、クライアントから要求されたサービスの結果を返す場合がある。ファイル形態の情報をアクセスする場合、クライアントは、コモン・インターネット・ファイル・システム（ＣＩＦＳ）  ｏｖｅｒ  ＴＣＰ／ＩＰプロトコル、又はネットワーク・ファイル・システム（ＮＦＳ）  ｏｖｅｒ  ＴＣＰ／ＩＰプロトコルようなファイルベースのアクセスプロトコルを有するパケットを発行する場合がある。一方クライアントは、ＬＵＮ形態の情報をアクセスする場合、スモール・コンピュータ・システム・インタフェース（ＳＣＳＩ）  ｏｖｅｒ  ＴＣＰ／ＩＰ（ｉＳＣＳＩ）プロトコル、又はＳＣＳＩ  ｏｖｅｒ  ＦＣ（ＦＣＰ）プロトコルのようなブロックベースのアクセスプロトコルを有するパケットを発行する場合がある。
【００１５】
ストレージアダプタ１２８は、ストレージシステム上で実行されるストレージオペレーティングシステム２００と協働し、クライアントから要求された情報をアクセスする。情報は、例えばハードディスクドライブ（ＨＤＤ）として実施される磁気記憶媒体１５０、並びに、例えばストレージシステムに電力損失が発生したときにデータを保持することが可能な永久的記憶空間を提供するように構成された電子記憶媒体１４０に記憶される場合がある。従って、電子記憶媒体１４０は、バックアップバッテリ、又はアレイに何らかの電力損失が発生したときにメモリの最終状態を保持するための他の内蔵最終状態保持機能（例えば、フラッシュメモリ）を備えた、固体デバイス（ＳＳＤ）の大容量ランダムアクセスメモリアレイとして実施される場合がある。
【００１６】
一実施形態において、ＳＳＤのためのストレージアダプタは、ＨＤＤと共用される場合がある。ただし、当業者には分かるように、ＳＳＤとＨＤＤは別々のアダプタを有していてもよい。ストレージアダプタは、従来の高性能ファイバチャネル・シリアルリンク・トポロジーのようなＩ／Ｏ相互接続構成を介してＨＤＤ、及びＳＳＤに接続するための入出力（Ｉ／Ｏ）インタフェース回路を含む。ただし、当業者には分かるように、ＳＳＤ記憶装置は、ストレージアダプタの代わりに、例えばＰＣＩによって、より直接的に接続してもよい。情報は、ストレージアダプタによって読み出され、必要に応じてプロセッサ１２２（又は、アダプタ１２８）によって処理された後、システムバス１２５を介してネットワークアダプタ１２６へ転送され、そこで情報はパケットの形に整形され、クライアント１１０へと戻される。
【００１７】
図２は、本発明と共に有利に使用されるストレージオペレーティングシステム２００を示す略ブロック図である。ストレージオペレーティングシステムは、ネットワークドライバ層（例えば、イーサネットドライバ）、ネットワークプロトコル層（例えば、インターネットプロトコル層、並びにその支援搬送機構であるトランスポート・コントロール・プロトコル層、及びユーザ・データグラム・プロトコル層）、及び、ネットワーク・プロトコル・スタック２１０として構成されるファイルシステムプロトコルサーバ層（例えば、ＣＩＦＳサーバ、ＮＦＳサーバ等）を含む一連のソフトウェア層を含む。さらに、ストレージオペレーティングシステム２００は、ＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）プロトコルのような記憶媒体プロトコルを実施する媒体記憶層２２０と、例えばスモール・コンピュータ・システム・インタフェース（ＳＣＳＩ）プロトコルのような記憶媒体アクセスプロトコルを実施する媒体ドライバ層２３０とを含む。本明細書に記載するように、媒体記憶層２２０は、代替的にパリティ保護（ＲＡＩＤ）モジュールとして実施してもよく、ＲＡＩＤコントローラのような独立したハードウェア構成要素として実施してもよい。
【００１８】
記憶媒体ソフトウェア層をネットワークプロトコル層及びファイルシステムプロトコル層に橋渡しするのは、ログ構造ファイルシステム２４０のようなファイルシステムとして実施される場合がある仮想化システムである。ログ構造ファイルシステムは例えば、電子記憶媒体及び磁気記憶媒体１４０、１５０に対する読出し処理能力及び書込み処理能力を向上させる種々のデータレイアウト技術を実施する場合がある。例えば、後で詳しく説明するように、ログ構造ファイルシステム２４０は、媒体のパフォーマンス特性を向上させるために、異なる記憶媒体間におけるデータの配置、マイグレーション、及び書込みアロケーションを実施するように構成される場合がある。
【００１９】
本明細書において、「ストレージオペレーティングシステム」という用語は、一般に、データアクセスを管理するストレージ機能を実施するためにコンピュータ上で実行することが可能なコンピュータ実行可能コードを意味し、ストレージシステム１２０の場合、汎用オペレーティングシステムのデータアクセスセマンティックを実施する場合がある。また、ストレージオペレーティングシステムは、マイクロカーネルとして実施することも、ＵＮＩＸ（Ｒ）又はＷｉｎｄｏｗｓ  ＮＴ（Ｒ）のような汎用オペレーティングシステムで動作するアプリケーションプログラムとして実施することも、あるいは、本明細書に記載するようなストレージアプリケーション用に構成された構成変更機能を有する汎用オペレーティングシステムとして実施することもできる。
【００２０】
さらに、当業者には分かるように、本明細書に記載する発明は、如何なるタイプの特殊目的（例えば、ファイルサーバ、ファイラー、又はストレージサービスを提供するアプライアンス）のコンピュータにも、汎用コンピュータにも適用することができ、例えば、ストレージシステムとして実施され、又はストレージシステムを含むように実施されるスタンドアロンのコンピュータ、又はその一部にも適用することができる。さらに、本発明の教示は、限定はしないが、例えば、ネットワーク・アタッチト・ストレージ環境、ストレージ・エリア・ネットワーク、及びクライアント又はホストコンピュータに直接取り付けられるディスクアセンブリを含む種々のストレージシステムアーキテクチャに適合させることができる。従って、「ストレージシステム」という用語は、ストレージ機能を実施するように構成され、他の装置又はシステムに関連する任意のサブシステムだけでなく、そのような構成を含むものとして、広い意味で解釈すべきである。
【００２１】
本発明は、ハイブリッド記憶媒体として編成され、互いに協働し、ストレージシステムの全体的記憶空間を提供する複数の異なる記憶媒体を制御するように構成されたログ構造ファイルシステムを有するハイブリッド媒体ストレージアーキテクチャに関する。その目的のために、ログ構造ファイルシステムは、データの初期配置、及びマイグレーション、並びにハイブリッド記憶媒体の種々の記憶空間位置の間におけるデータのきめ細かな粒度で書込みアロケーションを実施するように構成され、それによって媒体のパフォーマンス特性を向上させる。ファイルシステムは、例えばデータのタイプに関連するヒューリスティック及びポリシーを定義し、実施することにより、異なる媒体の何れに対してもデータを初期配置（書込み）することができ、以後、媒体間においてきめ細かな粒度で、及び手動施行を必要とせずに、データをマイグレーション（移動）することができる。
【００２２】
一実施形態において、ハイブリッド記憶媒体は、比較的低速なディスク又はＨＤＤのアレイ（以後、「ＨＤＤアレイ」）を使用して構成された比較的安価な磁気記憶媒体１５０を含む。ハイブリッド記憶媒体は、不揮発性ＮＡＮＤフラッシュデバイス又はＳＳＤのアレイ（以後、「ＳＳＤアレイ」）を使用して構成された比較的高価な電子記憶媒体をさらに含む。フラッシュデバイスは例えば、優れた（ランダム）読出し処理能力を有するブロック指向のデバイスである。すなわち、フラッシュデバイスに対する読出し処理は、主にその記憶態様上の理由から、書込み処理に比べて実質的に高速である。ただし、当業者には分かるように、他のブロック指向の不揮発性電子デバイス又は磁気デバイスを、本発明の教示に従って使用してもよい。
【００２３】
フラッシュデバイスに記憶されたデータは、（例えば、読出し処理、及び書込み処理によって）ページ単位でアクセスされる。単位ページは、例えば４キロバイト（ｋＢ）であるが、他のページサイズ（例えば２ｋＢ）も、本発明と共に有利に使用することができる。ページ上に既に書き込まれたデータを書き換えるためには、ページを消去しなければならないが、消去単位は、複数（例えば、６４）のページからなるブロックである。すなわち、消去ブロックは、２５６ｋＢのサイズを有する。従って、デバイスに記憶されたデータにはページ単位でアクセス（読出し及び書込みすることが出来ても、デバイスのクリア又は消去は、ブロック単位で行われる。フラッシュデバイスの書込み処理能力が遅い理由は、デバイス上の空き空間の管理に関係している。すなわち、１ブロックのページに対する書込み処理が可能なだけの十分な記憶空間が無い場合、１ブロック分のページ全体を消去し、将来の割当てに備えて開放できるようにするために、デバイス内で、正規のデータを他のブロックへ移動させなければならない。フラッシュデバイスのこのような書込み処理は一般に、書込み処理能力が要求されるシステムにおけるフラッシュデバイスの有効性を制限する。本明細書に記載するログ構造ファイルシステムは、一つには、ＳＳＤアレイのフラッシュデバイスからの書込み処理能力を向上させるために使用される。
【００２４】
ハイブリッド媒体記憶アーキテクチャ
図３は、本発明のハイブリッド記憶媒体ストレージアーキテクチャ３００の構成を示す略ブロック図である。このアーキテクチャは、ＳＳＤアレイ３４０のＳＳＤ３３０、及びＨＤＤアレイ３５０のＨＤＤ３６０の動作を制御し、ストレージシステム１２０の全体的記憶空間を得るために、パリティ保護（ＲＡＩＤ）モジュール３２０の上に配置されたログ構造ファイルシステム２４０を含む。ストレージアダプタ１２８は、媒体（フラッシュ又はディスク）をアクセスするためのストレージプロトコルを実施する。一実施形態では、ＨＤＤアレイ３５０及び／又はＳＤＤアレイ３４０をアクセスするために使用される１以上のストレージアダプタ１２８が存在する場合がある。後で詳しく説明するように、ＳＳＤアレイ３４０の各ＳＳＤは、変換論理回路３３６を実施する独自の内部ＳＳＤコントローラ３３５を有する。すなわち、アレイ３４０の各ＳＳＤは、例えばＳＳＤコントローラ３３５によって提供される関連変換論理回路３３６を有する。
【００２５】
ＳＳＤコントローラ３３５は、ジオメトリ情報をＲＡＩＤモジュール３２０にエキスポートする。ジオメトリ情報は、例えば、デバイスのモデルタイプ、及び例えばモジュール３２０によって使用されるデバイスブロックの数（ｄｂｎ）に換算した場合のデバイスのサイズ（ブロック数）を含む場合がある。ＳＳＤアレイ３４０の場合、ｄｂｎは、例えばＳＳＤコントローラ３３５がＲＡＩＤモジュールに提示する論理アドレスであり、ＳＳＤ３３０内部の変換マッピングによって、フラッシュ物理アドレスに変換される。ＳＳＤコントローラは、例えば１セクタインタフェースあたり５１２バイトを提示する場合があるが、このサイズは、例えば４ｋＢのブロックサイズで行われるランダム書込みアクセスに合わせて最適化される場合がある。
【００２６】
上記のように、ログ構造ファイルシステム２４０は、電子記憶媒体１４０のＳＳＤアレイ３４０に対する読出し及び書込み処理能力、並びに磁気記憶媒体１５０のＨＤＤアレイ３５０に対する読出し及び書込み処理能力を向上させるデータレイアウト技術を実施する。例えば、ログ構造ファイルシステムは、ファイルのようなデータコンテナに対する高速書込みアクセスを可能にする第１のデータレイアウトフォーマットを有することにより、ＳＳＤアレイ３４０に対するランダム（及びシーケンシャル）データアクセス処理の能率的なサービス提供を可能にする。その目的のために、ファイルシステムは、例えばｗｒｉｔｅ  ａｎｙｗｈｅｒｅ技術の第１のセットを実施し、ＳＳＤアレイ３４０のＳＳＤ３３０上の空いている利用可能な空間内の任意の場所にデータを配置することを可能にする。
【００２７】
ファイルシステム２４０のｗｒｉｔｅ  ａｎｙｗｈｅｒｅ特性は、書込み処理能力を向上させるが、しばしばシーケンシャルデータを断片化させることがあり、断片化は、ＨＤＤ３６０のような特定の記憶媒体について処理能力の劣化として現れることがある。なぜなら、読出し処理（特に、シーケンシャル読出し処理）の際に、断片化されたデータをアクセスするための物理的位置決めが必要になるからである。ただし、この実施形態では、ＳＳＤアレイ３４０がＳＳＤ３３０から構成されているので、ランダムアクセスは一貫性を有する（すなわち、ＨＤＤを使用する場合のように、物理的位置決めに基かない）。従って、ログ構造ファイルシステム２４０は、ＳＳＤと協働し、アレイのシーケンシャル読出し処理能力を劣化させることなく書込み処理能力を向上させる、ＳＳＤアレイにとって理想的なデータレイアウトエンジンを提供する。
【００２８】
さらに、ログ構造ファイルシステム２４０は、ＨＤＤアレイ３５０に記憶されたデータに対する能率的なサービス提供を可能にするために、ＨＤＤに記憶された種々の大きなファイルに対する高速シーケンシャル読出しアクセスを可能にする第２のデータレイアウトフォーマットを有する。その目的のために、ファイルシステムは、例えば種々の技術の第２のセットを実施し、行列の次元により特徴付けられるＨＤＤ上のデータブロックのアレイを表現する例えば「テトリス」Ｉ／Ｏトランザクションのようなデータレイアウト構成を使用して、データをストリーミング形態でＨＤＤ３６０へ移動させる。そのようなＩ／Ｏトランザクションの一例は、２００７年４月３日に発行された「Method for Writing Contiguous Arrays of Stripes in a RAID Storage System Using Mapped Block Writes」と題するスティーブン・Ｒ・クレイマン他によるネットワーク・アプライアンス・インコーポレイテッドに譲渡された米国特許第７，２００，７１５号に記載されており、この米国特許は、参照により本明細書に援用される。ここで言う「次元」の一例は、各ＨＤＤ上の一つのトラック（すなわち、列次元）×ＲＡＩＤグループ幅（すなわち、行次元）であり、その場合トラックの深さが、例えば各ＨＤＤ上の「チャンク」（例えば、２６６ｋＢ）となる。とりわけ、テトリスＩ／Ｏトランザクションは、ＲＡＩＤグループの複数のストライプ（すなわち、２以上の行）にわたる場合がある。ファイルシステム２４０はさらに、ＳＳＤアレイ３４０の高速ランダム読出し実施能力を利用して、選択されたデータをストリーミング形態（例えば、テトリスＩ／Ｏトランザクションに従って）でＨＤＤアレイ３５０へマイグレーション、又は移動し、それによってＨＤＤの能力を向上させる。ＨＤＤアレイ３５０への大半のアクセスについてシーケンシャル形態、及びストリーミング形態でのＨＤＤアレイ３５０の動作を可能にすることによって、ハイブリッド媒体ストレージアーキテクチャ３００は、従来のストレージシステムに比べて低速で安価なＨＤＤを使用し、より広い帯域幅、及びより少ない待ち時間性能をクライアントアプリケーション１１２に提供する。
【００２９】
一実施形態において、ログ構造ファイルシステム２４０は、例えば４ｋＢブロックを使用したブロックベースのフォーマット表現を有するメッセージベースのシステムであって、インデックスノード（「ｉｎｏｄｅ」）を使用して、例えばファイルのようなデータコンテナを表現する。本明細書に記載するように、ログ構造ファイルシステムは、オブジェクト記憶（例えば、ファイルブロック番号）から物理記憶（例えば、物理ボリュームブロック番号）への自由なマッピングを実施する。媒体の空き記憶空間に書込みを行うための小さなアロケーション（例えば、４ｋＢ）を可能にするために、マッピングの粒度は、例えば、ブロック単位（「細かい粒度」）とされる。ただし、当業者に分かるように、ハイブリッド媒体ストレージアーキテクチャは、記憶装置において実施される如何なる種類のオブジェクトに対しても適用できるはずであり、ブロック単位の配置が可能となる細かい粒度を得るために十分なだけの変換を実施する。
【００３０】
ファイルシステムはさらに、例えば種々のデータ構造を使用して、ヒューリスティック及びポリシーについての情報を記憶すると共に、アレイの記憶装置上でのそのレイアウトを表すメタデータを記憶する。ファイルシステム２４０は、ＳＳＤアレイ３４０のＳＳＤ３３０及びＨＤＤアレイ３５０のＨＤＤ３６０のような記憶装置に記憶された情報に対するファイル単位のアクセスにおいて使用されるセマンティック機能を備える。さらに、ファイルシステムは、記憶された情報に対するブロック単位のアクセスにおいて使用されるボリューム管理機能を備える。すなわち、ファイルシステム２４０は、ファイルシステムセマンティック機能を有する他に、（i）記憶装置のアグレゲーション機能、（ii）記憶装置の記憶帯域幅のアグレゲーション機能、及び（iii）ミラーリング及び／又はパリティ（ＲＡＩＤ）のような信頼性保証機能のような機能も備えている。
【００３１】
後者に関し、ログ構造ファイルシステム２４０はさらに、例えば媒体記憶層２２０のパリティ保護（ＲＡＩＤ）モジュール３２０と協働し、ＳＳＤアレイ３４０及びＨＤＤアレイ３５０に対する種々のストレージオペレーションを制御する。ＳＳＤアレイ３４０の場合、例えばアレイのＳＳＤに関連する信頼性制御の階層が存在する。例えば、各ＳＳＤ３３０は、ページ単位で誤り訂正符号（ＥＣＣ）を有する場合がある。それによって、フラッシュブロック内のページについて、低レベルの信頼性制御が可能となる。複数のＳＳＤの中でフラッシュブロックを実施し、デバイスの幾つかが故障したときにエラーから復旧できるようにした場合、より高レベルの信頼性制御がさらに実現される。
【００３２】
この高レベルの信頼性制御は、例えば、ＲＡＩＤモジュール３２０により構成されるＲＡＩＤレベル実施形態のような冗長構成として実施される場合がある。情報の記憶は、１以上のＳＳＤ／ＨＤＤを含む１以上のストレージボリュームとして実施されることが好ましく、ＳＳＤ／ＨＤＤは互いに協働し、ボリューム（複数の場合もあり）上のボリュームブロック番号空間の全体的論理構成を規定する。その際、ＲＡＩＤモジュール３２０は、ボリューム内のＳＳＤ／ＨＤＤを１以上のパリティグループ（例えば、ＲＡＩＤグループ）として編成し、パリティ計算、及び各グループのＳＳＤ／ＨＤＤへのデータの配置に使用されるトポロジー情報を管理する。ＲＡＩＤモジュールはさらに、それらのＲＡＩＤグループを例えば、ＲＡＩＤ１、４、５、及び／又は６実施形態のような１以上のＲＡＩＤ実施形態に従って構成し、それによって、例えば１以上のＳＳＤ／ＨＤＤに対して故障のようなイベントが発生したときのＳＳＤ／ＨＤＤに対する保護を提供する。すなわち、ＲＡＩＤ実施形態は、ＲＡＩＤグループ内の所与の数のＳＳＤ／ＨＤＤにわたる「ストライプ状」のデータ書込み、及び当該ストライプ化されたデータに関する例えばパリティのような冗長情報の適切な記憶によって、データ記憶の信頼性／完全性を向上させる。
【００３３】
ＳＳＤアレイ３４０の場合、ＲＡＩＤモジュール３２０は例えば、複数のＳＳＤを１以上のパリティグループ（例えば、ＲＡＩＤグループ）として編成し、パリティ計算、及び各グループのデバイス上でのデータ配置に使用されるトポロジー情報を管理する。その目的のために、ＲＡＩＤモジュールは、データをＲＡＩＤグループの中に、ブロックのストライプとして編成する。その際、１つのストライプは、種々のＳＳＤにわたって対応する位置に配置された複数のフラッシュページを含む場合がある。すなわち、１つのストライプは、ＲＡＩＤグループ全体にわたって、ＳＳＤ０上の第１のページ０、及びＳＳＤ１上の第２のページ０等に分布する場合があり、パリティは、デバイスの種々のページに分散される場合がある。なお、他のＲＡＩＤグループ構成も可能であり、例えばファイル内の所定数のブロックごとに（例えば、８ブロックごとに）１つのブロックをパリティブロックにするような論理ＲＡＩＤ実施形態を使用することも可能である。
【００３４】
ボリュームは、仮想ボリュームとして実施され、例えばＳＳＤアレイ３４０、及びＨＤＤアレイ３５０の、１以上の集合体としてさらに編成される場合がある。集合体及び仮想ボリュームについては、「Extension of Write Anywhere File System Layout」と題するジョン・Ｋ・エドワード他によるネットワーク・アプライアンス・インコーポレイテッドに譲渡された米国特許第７，４０９，４９４号に記載されており、この米国特許は、参照により本明細書に援用される。簡単に言えば、集合体は、ＲＡＩＤグループのようなＳＳＤ／ＨＤＤの１以上のグループからなり、グループは、ファイルシステムによって、ストレージシステムの１以上の仮想ボリューム（ｖｖｏｌ）に分配される。各ｖｖｏｌは、ファイルシステムレイアウト実施形態の種々の技術を利用しながらも、「ポイント・イン・タイム」データイメージ（すなわち、スナップショット）オペレーション機能のような独自の論理的性質を有している。集合体は、独自の物理ボリュームブロック番号（ｐｖｂｎ）空間を有し、そのｐｖｂｎ空間の中に、ブロックアロケーション構造のようなメタデータを保持する。各ｖｖｏｌは、独自の仮想ボリュームブロック番号（ｖｖｂｎ）空間を有し、そのｖｖｂｎ空間の中に、ブロックアロケーション構造のようなメタデータを保持する。
【００３５】
各ｖｖｏｌには、そのｖｖｏｌにより使用中のあらゆるブロックを保持する集合内の「隠し」（ユーザにとってアクセス不可な）ファイルである、コンテナファイルが関連付けられる。ファイルシステム２４０は、ｖｖｏｌに対する処理を実施するとき、ＲＡＩＤモジュール３２０から提供されるトポロジー情報を使用して、ｖｖｂｎ（例えば、ｖｖｂｎ  Ｘ）をＳＳＤ／ＨＤＤ上のｄｂｎ位置に変換する。ｖｖｂｎは、コンテナファイル内のファイルブロック番号（ｆｂｎ）位置を識別し、コンテナファイル内のｆｂｎ  Ｘの位置において、ｖｖｏｌ内のｖｖｂｎ  Ｘを有するブロックを発見できるようにする。ファイルシステムは、コンテナファイルの間接ブロックを使用し、そのｆｂｎを集合体内の物理ｖｂｎ（ｐｖｂｎ）位置に変換する。その後、このブロックは、ＲＡＩＤモジュール３２０により供給されるトポロジー情報を使用して、記憶装置から読み出すことができる。
【００３６】
一実施形態において、ＲＡＩＤモジュール３２０は、データの書込みアロケーション、すなわち、ＳＳＤアレイ３４０、及びＨＤＤアレイ３５０のｖｖｂｎ記憶空間における空き空間、すなわち未割当て空間の探索を実施するときに、ファイルシステム２４０によって使用されるトポロジー情報をエキスポートする。トポロジー情報は例えば、ｐｖｂｎとｄｂｎの間のマッピングを含む。ＨＤＤアレイ３５０の場合、ＨＤＤは、ログ構造ファイルシステムの第２のデータレイアウトフォーマットに従って、関連（ファイル）データの領域に分割される。その後ファイルシステムは、後で詳しく説明するように、例えばデータが存在するＨＤＤ上のブロック位置を指定することによって、ＨＤＤの種々の領域内へのデータの配置を実施する場合がある。
【００３７】
具体的には、ログ構造ファイルシステム２４０の第２のレイアウトフォーマットは、関連ファイルデータをＨＤＤ上の種々の領域に配置する。各領域は、例えば連続したＨＤＤブロックによって表される所定量のＨＤＤ記憶空間を有する。書込みアロケーションを実施する際にログ構造ファイルシステムによって使用される構造を考慮したブロックアロケーションは、第２のデータレイアウトフォーマットでデータをアレイ３５０に書き込むことを可能にするサイズを有する。例えば、少なくとも２つの領域は、１セットの関連ファイルデータ（ファイルＡ、ファイルＡのスナップショット、ファイルＡの重複除外など）を保持するための連続した範囲のｆｂｎを有する。換言すれば、これらの領域は、ＨＤＤ３６０上の比較的連続的なｆｂｎの量によって特徴付けられる場合がある。この１セットの関連ファイルデータのいずれか一つに対してシーケンシャル読出し処理が実施される場合、そのデータのかなりの部分は、両方の領域から読み出される場合がある。
【００３８】
ＳＳＤアレイ３４０の場合、書込みアロケーションを実施する際にログ構造ファイルシステムによって使用される構造を考慮したブロックアロケーションは、例えば連続的順序のような第１のデータレイアウトフォーマットでデータをアレイに書き込むことを可能にするサイズを有する。その目的のために、ファイルシステム２４０は、例えば書込みアロケーションを実施し、ＳＳＤコントローラ３３５と協働する場合がある。ＳＳＤコントローラ３３５は、（例えば、２５６ｋＢ）フラッシュブロックに対する連続的書込みを確保する働きをする。フラッシュブロックが消去され、「開放された」ものとして指定された後（例えば、空きｖｖｂｎとして）、データは、フラッシュブロックにおける６４個の４ｋＢページ（例えば、ページ０からページ６３）を通して（ＣＰの書込み処理に従って）順番に書き込まれ、その時点で、次の空きフラッシュブロックが取得され、ページ０からページ６３まで順番に書込み処理が行われる場合がある。ファイルシステム２４０によって使用される例えば空きブロックマップのような会計構造は、例えばセグメントクリーニングプロセスによって管理され、一実施形態において、例えばブロック管理に関連して、ＳＳＤコントローラとの間で情報をやり取りする場合がある。
【００３９】
例えば、セグメントクリーニングは、フラッシュブロックに間接的にマッピングされた１以上の選択領域を開放するために実施される場合がある。有効データを有するそのような選択領域のページ（「有効ページ」）は、別の領域へ移動され、選択領域は、後続の再使用に備えて開放される。セグメントクリーニングは、断片化された空き空間を統合し、例えば基礎フラッシュブロックに対する、書込み能率を向上させる。このように、ファイルシステム２４０の動作を活用することにより、ＳＳＤアレイ３４０に対する例えばセグメントクリーニングのようなｗｒｉｔｅ  ａｎｙｗｈｅｒｅ機能を得ることができる。例えば、セグメントクリーニングプロセスは、ファイルシステム内で書込みアロケーターと共に動作するスキャナとして実施され、ＳＳＤを「クリーニング」（消去）するときに、バッファ及びｉｎｏｄｅツリーを走査する（調べる）場合がある。
【００４０】
変換マッピング
上記のように、変換マッピングは、ハイブリッド媒体ストレージアーキテクチャ３００の各ＳＳＤコントローラ３３５に関連する変換論理回路３３６によって実施される。ログ構造ファイルシステム２４０は、ＳＳＤアレイ３４０に対する書込みアロケーションを実施し、ＲＡＩＤモジュール３２０と協働し、アレイに対するストレージオペレーションを制御する。従って、書込みデータをアレイ３４０上のどこに置くべきかを判断するために、ｖｖｂｎとｄｂｎの間のマッピングが必要となる。その後、変換マッピングは、ｄｂｎを基礎ＳＳＤアレイのフラッシュページアドレスに変換（すなわち、マッピング）するように構成される。ＳＳＤのユーザに提示されるｄｂｎと、ＳＳＤアレイとの間に、直接的なマッピングではなく、そのような変換マッピングを作成する理由は、例えば、ウェアレベリング、及びランダム書込み処理能力の向上などである。
【００４１】
ウェアレベリング
大まかに言えば、ウェアレベリングは、デバイスの度重なる消去及び書込みに起因するＳＳＤ３３０の故障を減らすために行われる。その目的のために、デューティサイクルは、例えば、１粒度の消去ブロックごとに計算される。すなわち、ある消去ブロックが何度も消去され、再書込みされた場合、ＳＳＤ全体としては故障していなくても、各消去ブロックは故障する場合がある。本明細書において、ウェアレベリングとは、データがＳＳＤアレイ３４０に書き込まれる場所を、特に各ＳＳＤに書き込まれる場所を、絶え間なく移動させることを意味する。仮に、ＳＳＤアレイの一部の場所が、他の部分に比べて激しく使用されるようになった場合、ウェアレベリングは、頻繁にアクセスされるデータをそれらの場所に書き込むことを禁止し、頻繁にアクセスされないデータをそれらの場所に移動させる。そして、頻繁にアクセスされるデータは、アレイの他の場所へ書き込まれる場合がある。
【００４２】
従って、及び一実施形態において、ＳＳＤコントローラ３３５の変換論理回路（例えば、ＳＳＤの内部で実施され、又はＳＳＤアレイ上にソフトウェアとして実施される）は、消去ブロックマッピング粒度でウェアレベリングを実施するように構成される。一単位の消去ブロックが書込み処理によってアクセスされる度に、変換論理回路は、その消去ブロックをＳＳＤアレイ３４０内の新たな位置に書込み（移動させ）、後続の書込み処理による再使用に備えて、そのブロックの以前の位置を利用可能にする。消去ブロックの磨耗に従ってＳＳＤの記憶能力は失われるので、ウェアレベリングは、例えば、各置換可能ユニット（ＳＳＤ）の中で行われる。ウェアレベリングは、ＳＳＤよりも高いレベルで実施される場合もあるが、そのようなウェアレベリングは、ＳＳＤの単なる種々の部分に対して実施されないことが重要である。なぜなら、そのようなウェアレベリングは、別の時点で別の場所を磨耗させることがあるからである。要するに、デバイスの種々のブロックが、多かれ少なかれ同時に磨耗することを確保するためには、ウェアレベリングは、ＳＳＤ全体にわたるものであることが望ましい。
【００４３】
ランダム書込み処理能力
ＳＳＤの第１のブロック内の特定の幾つかのページに対する書込み処理に応答し、（i）第２のブロックを消去し、（ii）ページ上の第１のブロックの最初にある古いデータを第２のブロックへ移動させ、（iii）第２のブロック内の移動されたデータの後ろの連続した位置に新たなデータを書込み、（iv）古いデータの残りを第１のブロックから第２のブロックへ移動させることからなる、従来のウェアレベリングを仮定する。さらに、新たなデータは、４ｋＢの長さ（１ページ）であるものと仮定する。この書込み処理を実施するためには、新たに書き込まれるデータに比べてはるかに多くのデータ（例えば、２５６ｋＢ）が移動され、それによって、処理の能率は制限され、ＳＳＤの書込み処理能力も制限される。例えば、ＳＳＤが一秒あたり１００ＭＢの処理能力を備え、当該ＳＳＤに対して小さなランダムの４ｋＢ書込み処理が実施される場合、各ランダム書込み処理についてブロック全体をコピーしなければならないとすれば、ＳＳＤの書込み処理能力は、一秒当たり数メガバイトに制限される。
【００４４】
ハイブリッド媒体ストレージアーキテクチャ３００の変換マッピングをもっと能率的なものにするには、比較的大量の空き空間を有するブロックを探し出し、それらのブロックから不要なデータを消去し、ランダム書込み処理能力の向上を達成するログ構造技術が必要となる。従って、ＳＳＤコントローラ３３５の変換論理回路３３６は、消去ブロックの粒度（例えば、２５６ｋＢ）でのマッピングを行う代わりに、もっと小さな（「細かい」）粒度（例えば、４ｋＢ）でのマッピングを行う。例えば、新たなランダム書込みデータがＳＳＤに到着すると、変換論理回路は、比較的大量の空き空間を有する消去ブロックを探し出し、その消去ブロックから他のブロック（同じオフセットにあるもの、又はそのブロックの最初）へ、全ての有効データをコピーする。その後、ＳＳＤコントローラ３３５は、全ての新たなデータ（ｄｂｎであるか否かに関わらず）をその消去ブロックに書き込む。とりわけ、変換論理回路は、データ（及び、その位置）の内部マッピングを管理する。すなわち、変換論理回路３３６は、間接ブロックの対応ｄｂｎを調べ、対応ｄｂｎをＳＳＤアレイアドレスに変換し、さらに、期待ランダム書込み処理サイズ（例えば、４ｋＢ）と実質的に同じ粒度で変換を行う。
【００４５】
ログ構造レイアウト機能
本明細書に記載するハイブリッド媒体ストレージアーキテクチャは、頻繁にアクセスされる（「人気のある」）データを（フラッシュデバイス又はＳＳＤのような）比較的小さく比較的高速な記憶装置に置き、頻繁にはアクセスされない（「人気のない」）データを（ＳＡＴＡディスク又はＨＤＤのような）比較的大きく比較的低速な記憶装置に置くように構成される。その目的のために、特定のデータは、ログ構造レイアウト機能を使用して、ＳＤＤ／ＨＤＤハイブリッド記憶媒体上の特定の位置に、細かい粒度で自動的に配置される場合がある。本明細書において、ログ構造レイアウト機能とは、シーケンシャルアクセスを受けるデバイスにとって能率的なパターンでデータを書込むことを意味する。具体的には、ログ構造技術は、「時間局所性」を有する（すなわち、互いに近接した時間に実行され、例えばＣＰにおいて実行される）種々の書込み処理に関連するデータを、当該データがたとえクライアントから見たときにアドレス空間において「空間局所性」を有していない場合でも、変換を利用して、媒体上の「空間局所性」を有するレイアウトに変換する（例えば、テトリスＩ／Ｏトランザクションの結果として）。すなわち、クライアントは、そのデータをランダム化すべきものと考える。ただし、データは、ストレージシステムにおいて非常に近接した時間に受信され、又はストレージシステムによって一緒にデステージされたものであるから、より優れた書込み処理能力を装置から引き出すために、データは、装置上の近接する（すなわち、空間局所性を有する）永久記憶媒体に書き込まれる。
【００４６】
ログ構造機能を採用することによって、ハイブリッド媒体ストレージアーキテクチャは、無関係（ランダム）な書込み処理に関連するデータを、媒体からの書込み処理能力を引き出すために有効パターンを成すように媒体にフラッシュする（書き込む）ことができる（すなわち、ログ構造機能は、媒体への能率的な記憶を行うために、ランダム書込み処理をシーケンシャル書込み処理に変換する）。ＨＤＤの場合、可能な限り少ない回数のディスクの回転で、十分な量のデータが、ディスク上の種々の位置（例えば、ＲＡＩＤグループにおける各トラック）に書き込まれる（例えば、そのグループの種々のストライプにわたるデータ処理のコストを償却するために）。ＳＳＤの場合、データを一斉に書き込むことは余り適当ではなく、データは、一回の消去ブロック書込みサイクルでデータを書き込むことが可能な特定のシーケンス、すなわち順序で書き込まれることが望ましい。
【００４７】
ハイブリッド媒体ストレージアーキテクチャは、ログ構造ファイルシステムを使用して、ＳＳＤ上のデータに対するシーケンシャル読出し処理、及びＨＤＤ上のデータに対するシーケンシャル読出し処理を含む読出し処理能力の問題に対処する。ＳＳＤは、書込み能率に関しては、ディスクに類似する特性を有するが、読出し処理に関しては、ディスクに類似する特性を有しない（すなわち、ＳＳＤは、能率を高めるためには、大量のデータを一箇所に書き込まなければならない）。すなわち、フラッシュメモリのようなＳＳＤは、種々のページのランダム読出し処理の際に、同ページに対するシーケンシャル読出し処理と同じ処理能力を発揮する。また、読出し処理の場合、ＳＳＤは、実質的にフラッシュページ粒度でランダムアクセスされ、書込み処理の場合、ＳＳＤは、フラッシュブロック粒度でシーケンシャルアクセスされる。従って、ＳＳＤは一般に、良好な書込み処理能力を達成するためには局所性を必要とするが、良好な読出し処理能力を達成するために局所性を必要とすることはない。
【００４８】
データのマイグレーション
本発明の一態様によれば、ハイブリッド媒体ストレージアーキテクチャは、ストレージシステムのハイブリッド記憶媒体間におけるｖｖｂｎのマイグレーションを利用することができる。例えば、ログ構造ファイルシステム２４０が、ランダム書込み処理作業負荷サービスを提供し、最初に、関連ランダムデータをＳＳＤアレイ３４０のＳＳＤ３３０に置くものと仮定する。このとき、ＨＤＤアレイ３５０のＨＤＤ３６０上のランダムデータに対して割当てられた記憶空間は、何も無い場合がある。その後、そのランダムデータが「人気の無い」ものになると（すなわち、ある程度の時間にわたってアクセスされないと）、他の「人気の有る」データをＳＳＤに記憶することが望ましくなる。なお、「人気の無い」又は「人気のある」といったデータの分類は、例えば、そのデータが最後にアクセスされたときを示すポリシーによって決定される。もし、人気の無いデータを収容することが可能な以前に割当てられた記憶空間がＨＤＤ上に無い場合、ログ構造ファイルシステムは、そのような空間を割当て、例えばＨＤＤに関連するデータ構造を使用して、データをマイグレーション（移動）する。
【００４９】
具体的には、ファイルシステム２４０は、どのブロックをＳＳＤアレイ３４０のＳＳＤから移動させるべきか、及びどのパターンを使用して、それらのブロックをＨＤＤアレイのＨＤＤに書き込むべきかを決定する。一実施形態において、関連ファイルデータを有するブロックは、ＨＤＤ上の連続した範囲のｆｂｎを有する少なくとも２つの領域内に配置される。ログ構造ファイルシステムは、ＳＳＤ上の人気の無くなったブロックを識別すると、まずそのブロックの識別情報を決定し（すなわち、そのブロックが、特定ｆｂｎ範囲内の特定ファイルに関連するものと判断し）、その後、そのブロックに密接に関連する他のブロックのうち、同じく人気が無くなったものであって、かつ、例えばテトリスＩ／Ｏトランザクションにおいて一緒にＨＤＤへ移動させてもよいものが有るか否かを、（すなわち、ある領域内におけるブロックの編成について）判断する。とりわけ、これらの判断は、ＨＤＤのｄｂｎ空間に基いて行われるのではなく、ファイルシステムのｆｂｎ空間に基いて行われる。ＳＳＤからＨＤＤへブロックを移動させるためには、ｖｖｂｎとｐｖｂｎの間のブロックのマッピングを変更する。ただし、どのブロックを移動させるかの判断は、ブロックのｐｖｂｎに基いて行われるのではなく、ブロックのｆｂｎ、及びブロックを共有すること可能なファイル間の関係に基いて行われる。
【００５０】
ＳＳＤからＨＤＤへデータを移動すべきことが決定されると、ファイルシステム２４０は、例えば、自身のコンシステンシー・モデル・イベント（すなわち、ＣＰ）を使用して、データを移動させる。バックグラウンドプロセスは、ＳＳＤ上のデータを検査し、人気が無いこと（すなわち、ある程度の時間にわたってアクセスされていないこと）又は何らかの他のポリシーを理由として、どのデータを移動すべきかに関する判断を実施する。例えば、識別された人気の無いデータは、ＳＳＤから読み出され、メモリ１２４にロードされ、人気の無いデータをＨＤＤ上の適当な領域へ送るために、ＣＰが実施される。この適当な領域は、例えば後で詳しく説明するスナップショットの場合と同様に、ｆｂｎを含むタグ、及び同じブロックを共有することが可能な異なるファイル間の関係を使用して、決定される場合がある。ログ構造ファイルシステムは、例えば同じデータ構造を使用して、人気の無いデータをＨＤＤに書込み、同じデータ構造を使用して、ＳＳＤに記憶された関連ブロックを探索し、識別する。それらのデータ構造は、領域内のブロックの位置を示すｖｖｂｎ、及びｐｖｂｎを含む。とりわけ、データブロックのｖｖｂｎとｐｖｂｎの両方が、ｆｂｎ間接ブロックレベルで記憶される。
【００５１】
ＳＳＤアレイ３４０のＳＳＤにおいて、１以上の人気の無いデータブロックが識別され、不要なデータが除去された後、ＨＤＤアレイ３５０のＨＤＤへ移動されるものと仮定する。ただし、細かく見れば、開放されたＳＳＤブロック位置が再使用されるまで、データは、両方の位置（ＨＤＤとＳＳＤ）に存在する。メタデータに記憶されるｐｖｂｎは、ＳＳＤブロック位置を依然として参照していることがあるので、読出し処理は、このＳＳＤｐｖｂｎを読出し、所望のデータが依然としてそこに有ることを確かめることによって、「キャッシュヒット」からの有効な恩恵を受けることができる。重要な点は、ファイルメタデータに記憶されるｐｖｂｎは、パフォーマンスヒントであるのに対し、ｖｖｂｎは、ｐｖｂｎが所望のデータを既に参照していないときにデータを探すために使用される信頼出来る情報である点である。コンテナファイルメタデータは、ｖｖｂｎを信頼出来る情報にマッピングすることに留意すべきである。
【００５２】
換言すれば、ＳＳＤ上のあるｐｖｂｎにあるデータブロックから不要なデータを除去し、そのデータブロックをＨＤＤ上の別のｐｖｂｎへ移動させるとき、ファイルについての間接ブロックを変更し、ＨＤＤ上のｐｖｂｎを更新するまでには、特定の時間を要する。その間、間接ブロックは、依然として、そのデータブロックがＳＳＤにあることを示している（ｐｖｂｎによって）。従って、その間にファイルがアクセスされた場合、ファイルシステムは、たとえそのデータブロックの「正式」な位置がＨＤＤ上であったとしても、そのデータブロックをＳＳＤから読み出すことが出来る。ファイルシステムは、アーキテクチャのこの態様を利用して、ハイブリッド媒体ストレージシステムの種々の部分に、キャッシュに類似した動作をさせることができる。
【００５３】
例えば、ハイブリッド媒体ストレージアーキテクチャは、ランダム書込み処理を最適化するために、ＳＳＤ上に、ある量の空き空間を保持する場合がある。ただし、ＳＳＤ上のその空き空間のブロック位置をファイルシステムが上書きするまでは、それらのブロック位置にある古いデータは、依然として有効であり、アクセスすることができる。ハイブリッド媒体ストレージアーキテクチャは、ＳＳＤ上のこの空き記憶空間を使用して、ランダム書込み処理能力の向上を達成することができる。従って、ファイルシステムは、アーキテクチャのこの性質を利用して、ＨＤＤへのアクセスに伴う待ち時間（すなわち、ＨＤＤに対する１以上のＩ／Ｏ処理）を回避する。
【００５４】
別の例として、スナップショットが、ログ構造ファイルシステム２４０によって生成され、ＳＳＤアレイ３４０のＳＳＤに記憶されるものと仮定する。スナップショットの一例は、２００２年６月２７日に発行された「Instant Snapshot」と題するブレイク・ルイス他による米国特許出願公開第ＵＳ２００２／００８３０３７Ａ１号に記載されており、この出願は、参照により本明細書に援用される。データについてのｆｂｎとｖｖｂｎの間のマッピングは、いったんスナップショットとして撮影された後は、不変になる。ただし、ｖｖｂｎとｐｖｂｎの間のマッピングは、変更することができ、ハイブリッド媒体ストレージアーキテクチャは、この変更を利用して、スナップショットブロックの移動の抑制という従来技術の制限を克服することができる。すなわち、あるブロックがある位置にいったん記憶され、スナップショット化された後、その内容を上書きすることは出来ないので、そのスナップショットブロックは、以前に移動されたものではない。ただし、ｖｖｏｌに関連するｖｖｂｎとｐｖｂｎの間の変換は、スナップショットによって変更することが出来る。換言すれば、スナップショットは、ｆｂｎとｖｖｂｎの間の変換は不変にするが、ｖｖｂｎとｐｖｂｎの間の変換は変更可能な状態のままにする。この変換の変更可能レベルによって、例えばＳＳＤにある古いスナップショットデータをＨＤＤへ移動させる能力が得られ、それによって、新たなデータを記憶するために高価なＳＳＤ上の空間を空けることができ、新たなデータは、フラッシュ記憶装置の高いアクセス特性（例えば、１ギガバイト当たりのＩ／Ｏ）から恩恵を受けることができる。
【００５５】
ハイブリッド媒体ストレージシステムの動作
図４は、本発明によるストレージシステムのハイブリッド媒体ストレージアーキテクチャの例示的動作手順を示すフロー図である。手順４００は、ステップ４０２から開始され、ステップ４０４へ進み、そこで、クライアントによって、データコンテナ（例えば、ファイル）に対するデータアクセス要求、例えば、書込み命令が発行され、ストレージシステムにおいて受信される。ステップ４０６において、ログ構造ファイルシステムは、例えば書込み命令に関連する書込みデータを有するファイルに変更を加えることによって、書込み命令を処理する。
【００５６】
ステップ４０８において、ログ構造ファイルシステムは、書込み命令を検査し、例えばランダム書込みデータ、又は大きなシーケンシャル書込みストリームデータといったデータのタイプを識別し、そのデータを記憶する媒体を決定する。ステップ４１０において、ログ構造ファイルシステムは、ポリシー制御を実施し、そのデータを最初に比較的高速で高価なＳＳＤに（又は、比較的低速で安価なＨＤＤに直接）記憶すべきか否かを判断する（データのタイプに基いて）。なお、ファイルシステムは、ランダムアクセス処理に関連するデータが、最初にＳＳＤに記憶されるようにするためのヒューリスティックをさらに実施する場合がある。例えば、ＳＳＤに記憶するのにふさわしい候補となるデータタイプは、頻繁にアクセスされる性質と、ランダムにアクセスされる性質との両方を有する。もしデータが、ランダムにアクセスされないものであるか、又は人気の無いものである場合、そのデータは、ＨＤＤに記憶するのにふさわしい候補となる。なぜなら、そのデータに対するその後のアクセスは、ＳＳＤの高い処理能力特性を必要としないからである。例えば、ヒューリスティックは、大きなシーケンシャル書込みストリーム処理に関連するデータが、将来的にシーケンシャルアクセス（読出し、又は書込み）されるであろうことを示す場合があり、その場合、データはＨＤＤに直接記憶される。
【００５７】
もし、データをＨＤＤに直接記憶すべき旨の判断がなされた場合、ログ構造ファイルシステムは、ステップ４１２において、例えばシステムのコンシステンシー・モデル・イベント（ＣＰ）の際に、そのデータをＨＤＤに書き込む。そして、手順はステップ４２９において終了する。一方、データをＳＳＤに記憶すべき旨の判断がなされた場合、ログ構造ファイルシステムは、ステップ４１４において、ＣＰの際に、そのデータをＳＳＤに書き込む。その後、ステップ４１６において、ＳＳＤに記憶されたデータのタイプを分析し、ステップ４１８において、選択されたデータをＳＳＤからＨＤＤへ移動すべき旨の判断がなされる。ステップ４２０において、選択されたデータは、メモリに取り出され（読み出され）、ステップ４２２において、ファイルシステムは、ＣＰの際に、そのデータをＨＤＤの１以上の領域に記憶する（書き込む）。とりわけ、ファイルシステムは、本明細書に記載するハイブリッド媒体ストレージアーキテクチャのログ構造技術に従って、データのブロック粒状配置の概念を両方の媒体上に保持する。そして、手順はステップ４２９において終了する。
【００５８】
ストレージシステムのハイブリッド記憶媒体を制御するように構成されたログ構造ファイルシステムを有するハイブリッド媒体ストレージアーキテクチャの例示的実施形態について図示説明したが、本発明の思想及び範囲の中で、種々の他の変形及び修正を施すことも可能であるものと考えられる。例えば、一又は複数の実施形態において、アーキテクチャは、比較的大きなブロックサイズ／粒度を目的とする書込み処理を実施するように構成されたログ構造レイアウト機能を実施する場合があり、それによって、本明細書に記載するものより「低い能力」しか有しないＳＳＤからも、向上されたパフォーマンスを引き出すことができる。例えば、ログ構造書込みアロケーションを使用することにより、アーキテクチャは、大きな書込み処理サイズの場合に十分な空き空間を有するフラッシュ媒体の種々の領域を選択する書込みアロケーション方法を使用しながらも、空きブロックをきめ細かく追跡することができる。
【００５９】
さらに、本明細書に記載する例示的ストレージシステム構成は、「ＲＡＩＤ集合体」構成においてウェアレベリングを実施するための理想的な目的達成手段ではない場合もある。すなわち、本明細書に開示する例示的実施形態は、ＲＡＩＤモジュールを、一群のＲＡＩＤグループにつき１つのログ構造ファイルシステムのみを提供するものとして説明しているが、単一グループのＨＤＤ／ＳＳＤにわたる複数のファイルシステム及び複数のＬＵＮのロードバランスを取ることが望ましい場合もある。図５は、本発明と共に有利に使用されるＲＡＩＤ集合体を示す略ブロック図である。ＲＡＩＤ集合体５００は、例えば、複数の（例えば、ログ構造）ファイルシステム５２０を提供する機能を備えた設備である。すなわち、ＲＡＩＤ集合体は、複数の基礎デバイス（ＳＳＤ５４０、及び／又はＨＤＤ５５０）を集結する機能を備えた従来のＲＡＩＤコントローラとして動作し、基礎デバイスの記憶空間は、ＬＵＮのような複数のコンテナとしてファイルシステムに提示される。とりわけ、各置換ユニット（ＳＳＤ）が均等に磨耗するようにするために、（各ファイルシステム５２０における）ログ構造書込みアロケーションとは別に、（各ＳＳＤ５４０において）ウェアレベリングが実施される。従って、もし１以上のＳＳＤが、複数のファイルシステム間によって共有される場合、ファイルシステムレベルでウェアレベリングを実施することは適当でない。ファイルシステムレベルでウェアレベリングを実施することも可能ではあるが、システムにファイルシステムが１つしか存在しない場合、そのような構成では、アーキテクチャの規模を複数のファイルシステムへ拡大することは出来ないであろう。
【００６０】
上記の説明は、本発明の特定の実施形態に関するものである。しかしながら、当然ながら、記載した実施形態の一部又は全てを維持しつつも、記載した実施形態に対して他に種々の変形及び変更を施すことが可能である。例えば、当然ながら、本明細書に記載する構成要素、及び／又は構造は、コンピュータ上で実行されるプログラム命令を含むコンピュータ読取可能媒体としても、ハードウェアとしても、ファームウェアとして、あるいはそれらの組み合わせとしても実施することができる。従って、本明細書の説明は、単なる例として捉えるべきものであり、本発明の範囲を何ら制限するものではない。従って、添付の特許請求の範囲の目的は、そうした変形や変更もすべて、本発明の真の思想及び範囲に含めることにある。
【図１】
2014041645.tif 000003
【図２】
2014041645.tif 000004
【図３】
2014041645.tif 000005
【図４】
2014041645.tif 000006
【図５】
2014041645.tif 000007