(57)【要約】ここに紹介する技術により、ファイルシステム内データセットのフラグメンテーションによりファイルシステムの読み出しパフォーマンスに重大な影響を与えることもなく、ファイルシステムのための重複排除のオペレーションが可能になる。当該技術は、ファイルシステムのホストとなるストレージサーバにより、データセットへ重複排除のオペレーションを実行することの結果としてファイルシステム内に格納されるデータセットに取り込まれるフラグメンテーションのレベルを判定することを含む。ストレージサーバは続いて、フラグメンテーションのレベルを閾値と比較し、フラグメンテーションのレベルを閾値と比較することの結果に基づいて重複排除のオペレーションを実行するかどうかを判定する。閾値は、ファイルシステムのデータセット内のフラグメンテーションの受入可能なレベルを表す。
2015513741.tif 000002
【特許請求の範囲】
【請求項１】
データセットへの重複排除のオペレーションの結果としてストレージサーバによりデータセットに取り込まれるフラグメンテーションのレベルを、ストレージサーバにより計算するステップと、
前記計算するステップの結果に基づいて重複排除のオペレーションを実行するかどうかを、ストレージサーバにより判定するステップと
を含む方法。
【請求項２】
重複排除のオペレーションを実行するかどうかを判定するために、フラグメンテーションのレベルを閾値と、ストレージサーバにより比較するステップを
更に含む請求項１に記載の方法。
【請求項３】
フラグメンテーションのレベルを判定するステップが、
重複排除のオペレーションの後にデータセットにアクセスするのに必要な読み出しのオペレーションの数を計算するステップと、
理想データセットにアクセスするのに必要な読み出しのオペレーションの数を計算するステップと、
重複排除の後にデータセットにアクセスするのに必要な読み出しのオペレーションの数と理想データセットにアクセスするのに必要な読み出しのオペレーションの数とに基づいて、フラグメンテーションのレベルを表す、フラグメンテーションのインデクスを計算するステップであって、重複排除のオペレーションを実行するかどうかを判定するステップがフラグメンテーションのインデクスに基づくものである、ステップと
を含む、請求項１に記載の方法。
【請求項４】
フラグメンテーションのインデクスは、重複排除のオペレーションの後にデータセットにアクセスするための読み出しのオペレーションの数と、理想データセットにアクセスするのに必要な読み出しのオペレーションの数との比率である、請求項３に記載の方法。
【請求項５】
重複排除のオペレーションの後にデータセットにアクセスするのに必要な読み出しのオペレーションの数を計算するステップは、
重複排除のオペレーションで共有されるべきデータセット内の複数のブロックの各々のための、ドナーブロックのアドレスを判定するステップと、
重複排除のオペレーションの後のデータセットのブロックの各々のためのアドレスを含むアドレスリストを作成するステップと、
ストレージデバイス上で発生する順序でアドレスリスト内のアドレスをソートするステップと、
アドレスリストから、重複排除のオペレーションの後にデータセットにアクセスするのに必要な読み出しのオペレーションの数を計算するステップと
を含む、請求項３に記載の方法。
【請求項６】
閾値が、データセットのためのフラグメンテーションの最大限の受入可能なレベルを表す、請求項２に記載の方法。
【請求項７】
更に、フラグメンテーションのレベルが閾値より低いことを判定することに応答して、重複排除のオペレーションを実行するステップを含む、請求項２に記載の方法。
【請求項８】
更に、フラグメンテーションのレベルが閾値より高いことを判定することに応答して、重複排除のオペレーションを実行しないことを含む、請求項２に記載の方法。
【請求項９】
閾値はユーザのインプットに基づいて設定される、請求項２に記載の方法。
【請求項１０】
ストレージサーバ上に格納されるデータセットに取り込まれるフラグメンテーションのレベルを表すフラグメンテーションのインデクスを、データセットに関して重複排除のオペレーションを実行することの結果として、計算するステップであって、フラグメンテーションのインデクスは、重複排除のオペレーションの後にデータセットにアクセスするのに必要な読み出しのオペレーションの数と、理想データセットにアクセスするのに必要な読み出しのオペレーションの数との比率である、ステップと、
重複排除のオペレーションを実行するかどうかを判定するために、フラグメンテーションのインデクスを閾値と比較するステップと、
比較するステップの結果に基づいて重複排除のオペレーションを実行するステップと
を含む、方法。
【請求項１１】
更に、
重複排除のオペレーションで共有されるべきデータセット内の複数のブロックの各々のための、ドナーブロックのアドレスを判定するステップと、
重複排除のオペレーションの後のデータセットの各々のブロックのためのアドレスを含むアドレスリストを作成するステップと、
ストレージデバイス上で発生する順序でアドレスリスト内のアドレスをソートするステップと、
アドレスリストから、重複排除のオペレーションの後にデータセットにアクセスするのに必要な読み出しのオペレーションの数を計算するステップと
を含む、請求項１０に記載の方法。
【請求項１２】
閾値が、データセットのためのフラグメンテーションの最大限の受入可能なレベルを表す、請求項１０に記載の方法。
【請求項１３】
更に、フラグメンテーションのインデクスが閾値より低いことを判定することに応答して、重複排除のオペレーションを実行するステップを含む、請求項１０に記載の方法。
【請求項１４】
更に、フラグメンテーションのインデクスが閾値より高いことを判定することに応答して、重複排除のオペレーションを実行しないことを含む、請求項１０に記載の方法。
【請求項１５】
閾値はユーザのインプットに基づいて設定される、請求項１０に記載の方法。
【請求項１６】
プロセッサと、
前記プロセッサと連結するメモリであって、前記プロセッサにより実行されるとき前記プロセッサに複数のオペレーションを実行させる命令を格納する、メモリと
を含み、
オペレーションは、
データセットへの重複排除のオペレーションの結果としてストレージサーバによりデータセットに取り込まれるフラグメンテーションのレベルを計算するステップと、
前記計算するステップの結果に基づいて重複排除のオペレーションを実行するかどうかを判定するステップと
を含む、ストレージサーバ。
【請求項１７】
前記オペレーションは、重複排除のオペレーションを実行するかどうかを判定するために、フラグメンテーションのレベルを閾値と比較するステップを
更に含む請求項１６に記載のストレージサーバ。
【請求項１８】
フラグメンテーションのレベルを判定するステップが、
重複排除のオペレーションの後にデータセットにアクセスするのに必要な読み出しのオペレーションの数を計算するステップと、
理想データセットにアクセスするのに必要な読み出しのオペレーションの数を計算するステップと、
重複排除の後にデータセットにアクセスするのに必要な読み出しのオペレーションの数と理想データセットにアクセスするのに必要な読み出しのオペレーションの数とに基づいて、フラグメンテーションのレベルを表す、フラグメンテーションのインデクスを計算するステップと
を含む、請求項１６に記載のストレージサーバ。
【請求項１９】
フラグメンテーションのインデクスは、重複排除のオペレーションの後にデータセットにアクセスするための読み出しのオペレーションの数と、理想データセットにアクセスするのに必要な読み出しのオペレーションの数との比率である、請求項１８に記載のストレージサーバ。
【請求項２０】
重複排除のオペレーションの後にデータセットにアクセスするのに必要な読み出しのオペレーションの数を計算するステップは、
重複排除のオペレーションで共有されるべきデータセット内の複数のブロックの各々のための、ドナーブロックのアドレスを判定するステップと、
重複排除のオペレーションの後のデータセットの各々のブロックのためのアドレスを含むアドレスリストを作成するステップと、
ストレージデバイス上で発生する順序でアドレスリスト内のアドレスをソートするステップと、
アドレスリストから、重複排除のオペレーションの後にデータセットにアクセスするのに必要な読み出しのオペレーションの数を計算するステップと
を含む、請求項１８に記載のストレージサーバ。
【請求項２１】
閾値が、データセットのためのフラグメンテーションの最大限の受入可能なレベルを表す、請求項１７に記載のストレージサーバ。
【請求項２２】
前記オペレーションが更に、フラグメンテーションのレベルが閾値より低いことを判定することに応答して、重複排除のオペレーションを実行するステップを含む、請求項１７に記載のストレージサーバ。
【請求項２３】
前記オペレーションが更に、フラグメンテーションのレベルが閾値より高いことを判定することに応答して、重複排除のオペレーションを実行しないことを含む、請求項１７に記載のストレージサーバ。
【請求項２４】
閾値はユーザのインプットに基づいて設定される、請求項１７に記載のストレージサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願への相互参照
本願は、２０１２年２月２９日出願の米国特許出願第１３／４０８０５１号（特許文献１）の優先権を主張するものであり、該出願は参照の上全体としてこの明細書に組み込まれる。
【０００２】
発明の分野
本願についての少なくとも一つの実施形態は、ストレージサーバに格納されるデータの重複排除に関し、特に、重複排除のプロセスにて、データセットに取り入れられるフラグメンテーションのレベルをコントロールすることに関する。
【背景技術】
【０００３】
背景
ストレージコントローラは、一つ以上のホストの代わりにデータを格納し検索するのに用いられる物理的処理デバイスである。ネットワークストレージコントローラは、ネットワーク上で一つ以上のクライアントをサーブするストレージサーバとして動作するように、磁気若しくは光学ストレージベースのディスク、テープ若しくはフラッシュメモリなどの、大容量記憶装置のセット内にデータを格納して管理するように、（例えば、ハードウエア、ソフトウエア、ファームウエア、若しくはそれらの任意の組み合わせにより）構成され得る。
【０００４】
大容量記憶装置は、データが格納され得る一連のアドレス可能な場所を提供する。テープドライブなどの装置は、順次のオーダでアクセスされるべき格納場所を許容するに過ぎないが、ハードディスクやフラッシュはランダムアクセスを許容する。大容量記憶装置は、或る所望の特性を備える単体のデバイスのより高い層への印象を与えるように、組み合わされ得る。例えば、レイド（ＲＡＩＤ）（「レイドアレイ」）は、データ拡散された二つ以上のハードディスクを含み、これにより、転送速度の増大、フォールトトレラントの改善、若しくはストレージキャパシティの増大を取得する。レイドアレイ内の種々のデバイス上におけるデータの配置（並びに、エラー検出及び訂正情報の計算及び格納）は、ハードウエア及び／又はソフトウエアにより管理され得る。
【０００５】
多数の現代のデータ処理システムは、膨大な量のデータを消費し及び／又は生成する。ハードディスクドライブなどの大容量記憶装置は、このデータを格納するのに用いられる。これらの処理システムにより消費され生成されるデータ量に追随するために、大容量記憶装置の格納容量、及び／又は大容量記憶装置上のスペース利用の効率性が、増加されればよい。大容量記憶装置上のスペース利用の効率性を増加する一つの方法は、大容量記憶装置上に格納された冗長データを除去する重複排除のオペレーションを実行することである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願第１３／４０８０５１号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、重複排除は、ディスク上の連続ブロックとして前に格納されたデータセット内にフラグメンテーションを取り込んでしまうことが多い。個々のアドレス可能な場所は、通常、多重データバイトを保持することができる。それら場所は「ブロック」と称される。データセットのデータブロックが、読み出し順から外れて、分離され、及び／又は格納されているとき、データセットは「断片化されている」と言われる。フラグメント化（断片化）されたデータセットを読み出すプロセスは、データセットに対応するデータブロックの内容を取得するのに、ストレージシステムに対して多重の読み出しオペレーションを実行することを強いることがある。大容量記憶装置の多数のタイプの機械的性質は、それらの速度を、システムの潜在的処理速度の何分の一かに制限してしまうことがある。特に、データセットがフラグメント化（断片化）されてデータセットを検索するのに多数の読み出しオペレーションを要求する場合はそうである。重複排除により生じるフラグメンテーションは、ストレージシステムのパフォーマンスに悪影響を与え得るので、多数のストレージシステムユーザは重複排除のオペレーションを無効にしてしまい、従って重複排除の空間節約の利点から得るものが無い。
【０００８】
従って、重複排除の間に取り込まれるフラグメンテーションの効果と、ユーザに所望されるストレージシステムのパフォーマンスとの間をバランスさせる技術が、必要とされている。
【課題を解決するための手段】
【０００９】
本明細書で紹介される技術により、ファイルシステム内データセットのフラグメンテーションによりファイルシステムの読み出しパフォーマンスに重大な影響を与えることもなく、ファイルシステムのための重複排除のオペレーションが可能になる。一つの実施形態では、ファイルシステムのホストとなるストレージサーバが、データセットへ重複排除のオペレーションを実行することの結果としてファイルシステム内に格納されるデータセットに取り込まれるフラグメンテーションのレベルを判定する。ストレージサーバは続いて、フラグメンテーションのレベルを閾値と比較し、比較の結果に基づいて重複排除のオペレーションを実行するかどうかを判定する。閾値は、ファイルシステムのデータセット内のフラグメンテーションの受入可能なレベルを表す。
【００１０】
一つの実施形態では、ファイルシステム内に格納されるデータセットのフラグメンテーションのレベルは、データセットに関して重複排除のオペレーションを実行した後に、データセットにアクセスする読み出しのオペレーションの数をカウントする先読みを実行し、重複排除の後の読み出しのオペレーションの数の、理想データセットにアクセスするための読み出しのオペレーションの数に対する比率である、フラグメンテーションのインデクスを計算することにより、判定される。理想データセットは、連続物理データブロック内に格納され、最小限数の読み出しのオペレーションでアクセスされ得るものである。フラグメンテーションのインデクスは、重複排除のオペレーションによるフラグメンテーションの増加の表示である。
【００１１】
重複排除のオペレーションの後に、データセットを表す物理ボリュームブロックナンバ（ＰＶＢＮ）のリストを判定し、ＰＶＢＮのリストをソートし、更にブロックの連続グループの数をカウントすることにより、ストレージサーバは、重複排除のオペレーションを実行した後に、デーラセットにアクセスするための読み出しのオペレーションの数を計算できる。
【００１２】
上記にて略記された技術の他の形態は、添付の図面及び以下の発明の詳細な説明から明白であろう。
【図面の簡単な説明】
【００１３】
本発明についての一つ以上の実施形態は例示として示されるのであり、添付の図面の図に制限されない。なお同一符号は同要素を示す。
【図１】図１はネットワークシステムの例を示す。
【図２】図２は一つ以上のネットワークストレージサーバを実装できるストレージコントローラの例を示す図である。
【図３】図３は概略、ストレージサーバ内のストレージオペレ-ティングシステムのアークティクチャの例を示す。
【図４Ａ】図４Ａはファイルシステム内のファイルのためのバッファツリーのブロック線図表示である。
【図４Ｂ】図４Ｂは、重複排除プロセスがファイルシステム上で実行された後の、ファイルシステム内のファイルのためのバッファツリーのブロック線図表示である。
【図５】図５は重複排除のオペレーションを実行するかどうかを判定するプロセスのフロー図である。
【図６】図６はデータセットに関して重複排除のオペレーションを実行することで取り込まれるフラグメンテーションのレベルを判定するプロセスのフロー図である。
【図７】図７は重複排除のオペレーションを実行するに先立ち、重複排除にデータセットにアクセスする読み出しオペレーションの数を計算するためのプロセスのフロー図である。
【発明を実施するための形態】
【００１４】
「実施形態」、「一つの実施形態」などの本明細書の表現は、記載する特定の特徴、構造若しくは特性が、本発明の少なくとも一つの実施形態に含まれる、ということを意味する。本明細書におけるそれらフレーズの発生は、全て同じ実施形態に言及するものでは無い。
【００１５】
図１はネットワークストレージシステムの例を示し、該ネットワークストレージシステムは、複数のクライアントシステム１０４、ストレージサーバ１０８、並びに、クライアントとストレージサーバ１０８を接続するネットワーク１０６を含む。図１に示すように、ストレージサーバ１０８は、大容量記憶サブシステム１０５内の、ディスクなどの多数の大容量記憶装置１１２と結合する。一方で、大容量記憶装置１１２の一部若しくは全ては、フラッシュメモリ、半導体ドライブ（ＳＳＤ）、テープストレージなどの、他のタイプのストレージであってもよい。しかしながら、記載を促進すべく、ストレージデバイス１１２は本明細書ではディスクであると想定する。
【００１６】
ストレージサーバ１０８は、例えば、ネッタップ（ＮｅｔＡｐｐ（登録商標））から入手可能であるＦＡＳシリーズのストレージサーバプロダクトの一つであればよい。クライアントシステム１０４はネットワーク１０６を介してストレージサーバ１０８に接続されるが、該ネットワーク１０６は、例えば、ローカルエリアネットワーク（ＬＡＮ）若しくはワイドエリアネットワーク（ＷＡＮ）などの、パケット交換方式のネットワークであればよい。更に、ストレージサーバ１０８は、スイッチング構造（図示せず）を介してディスク１１２に接続され得るが、該スイッチング構造は、例えば、光ファイバー分散データインタフェース（ＦＤＤＩ）であってもよい。留意すべきことは、ネットワークデータストレージ環境の内部にて、他のどの適切な数のストレージサーバ及び／若しくは大容量記憶装置、並びに／又は、他のどの適切なネットワーク技術が、採用されてもよい、ということである。
【００１７】
ストレージサーバ１０８は、ディスク１１２上のストレージスペースの一部若しくは全てを、従来の方式でクライアントシステム１０４に利用可能にすることができる。例えば、ディスク１１２の各々は、個別のディスク、多重ディスク（例えば、レイドグループ）若しくは他のどの適切な大容量記憶装置として、実装されてもよい。大容量記憶サブシステム１０５内の情報の格納は、物理ストレージディスク１１２のコレクションを含む、一つ以上のストレージボリュームとして実装可能であり、該物理ストレージディスク１１２のコレクションは、協働して、ボリューム上のボリュームブロックナンバ（ＢＶＮ）スペースの全体の論理配置を規定する。個々のボリュームは一般的に、但し必然では無いが、それ自身のファイルシステムと関連する。
【００１８】
ボリューム／ファイルシステムと関連するディスクは、通常一つ以上のグループとして構造化され、個々のグループはレイド（ＲＡＩＤ）として動作し得る。ＲＡＩＤ−４レベルの実装などの、多くのＲＡＩＤ実装は、ＲＡＩＤグループ内の所与の数の物理ディスクに亘るデータ「ストライプ」の冗長書き込みと、ストライプされたデータに関するパリティ情報の適宜の格納とを介して、データストレージの信頼性／インテグリティを向上する。ＲＡＩＤ実装の実例は、ＲＡＩＤ−４レベル実装である。但し、当然のことながらＲＡＩＤ実装の他のタイプ及びレベルが本明細書に記載の技術に従って用いられてもよい。一つ以上のＲＡＩＤグループは共に集合体を形成する。集合体は一つ以上のボリュームを含んでもよい。
【００１９】
図２は、一つ以上のネットワークストレージサーバ、例えば、図１のストレージサーバを実装し得るストレージコントローラのハードウエアアーキテクチャの例を示す図である。ストレージサーバは、大容量記憶サブシステム１０５のディスク１１２などの大容量記憶装置上の、情報のストレージ、構造、及び検索に関する、ストレージサービスを提供する処理システムである。実例では、ストレージサーバ１０８は、一つ以上のプロセッサを含むプロセッササブシステム２１０を含む。ストレージサーバ１０８は更に、メモリ２２０、ネットワークアダプタ２４０、及びストレージアダプタ２５０を含み、これら全ては相互接続２６０により相互接続される。
【００２０】
ストレージサーバ１０８は、ストレージマネジャと称されるハイレベルモジュールを実装してディスク１１２上の一つ以上のファイルシステムでデータを論理的に構成するのが好ましい、ストレージオペレーティングシステム２３０を実行する、シングル若しくはマルチプロセッサストレージサーバとして、実現され得る。
【００２１】
例示のメモリ２２０は、本明細書で紹介する技術に関連する、ソフトウエアプログラムコード及びデータを格納するため、プロセッサ２１０及びアダプタ２４０、２５０によりアドレス可能であるストレージの場所を含む。プロセッサ２１０及びアダプタは、ソフトウエアコードを実行しデータ構造を操作するように構成された処理エレメント及び／又は論理回路を含み得る。ストレージオペレーティングシステム２３０は、その一部が通常メモリに常駐し処理エレメントにより実行されるが、（とりわけ）ストレージサーバ１０８により提供されるストレージサービスのサポートでストレージオペレーションを起動することにより、ストレージサーバ１０８を機能的に構成する。種々のコンピュータ読み取り可能ストレージメディアを含む、他の処理及びメモリの導入物は、本明細書で紹介する技術に関連するプログラム命令を格納し実行するのに用いられ得ることは、当業者には明白であろう。
【００２２】
ネットワークアダプタ２４０は、ポイントツーポイントリンク、ワイドエリアネットワーク、パブリックネットワークにて実装される仮想プライベートネットワーク、若しくは共用ローカルエリアネットワークに亘って、一つ以上のクライアント１０４、若しくは他のストレージサーバと、ストレージサーバ１０８を連結する、複数のポートを含む。よってネットワークアダプタ２４０は、機械的コンポーネント、更には、ストレージサーバ１０８をネットワーク１０６に接続するのに必要とされる電気及びシグナル伝達回路を含んでもよい。例示のように、ネットワーク１０６は、イーサネット（登録商標）若しくはファイバチャネルネットワークとして、実現され得る。個々のクライアント１０４は、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）などの、予め規定されたプロトコルに従ってデータのパケット若しくはフレームを交換することにより、ネットワーク１０６に亘ってストレージサーバ１０８と通信できる。
【００２３】
ストレージアダプタ２５０は、ストレージオペレーティングシステム２３０と協働して、クライアント１０４により要求される情報にアクセスする。情報は、書き込み可能ストレージメディアの付属アレイのどのタイプに格納されてもよく、この書き込み可能ストレージメディアの付属アレイは、磁気ディスク若しくはテープ、光学ディスク（例えば、ＣＤ−ＲＯＭ若しくはＤＶＤ）、フラッシュメモリ、半導体ドライブ（ＳＳＤ）、電子ランダムアクセスメモリ（ＲＡＭ）、データ及びパリティ情報を含む情報を格納するように調整されたマイクロエレクトロメカニカル及び／又は他の任意の類似のメディア、などである。しかしながら、本明細書に例示するにあたっては、情報はディスク１１２に格納される。ストレージアダプタ２５０は、従来の高性能のファイバチャネルリンクトポロジなどの、Ｉ／Ｏ相互接続アレンジメントに亘ってディスクと連結する、インプット／アウトプット（Ｉ／Ｏ）インタフェース回路を備える複数のポートを含む。
【００２４】
ストレージオペレーティングシステム２３０は、ディスク１１２に格納されるデータへのクライアントアクセスを促進する。ある実施形態では、ストレージオペレーティングシステム２３０は、一つ以上の仮想モジュールと協働するライトエニウエアファイルシステムを実装してディスク１１２により提供される格納スペースを「仮想化する」。ある実施形態では、ストレージオペレーティングシステム２３０のストレージマネジャ３１０（図３）エレメントは、ディスク１１２上で名前付きディレクトリ及びファイルの階層構造として、情報を論理的に構成する。個々の「オンディスク」ファイルは、情報を格納するように構成されたディスクブロックのセットとして実装され得る。本明細書で用いるように、「ファイル」の用語はデータに関する任意のコンテナを意味する。仮想モジュールにより、ストレージマネジャ３１０は、名前付き論理ユニットナンバ（ＬＵＮ）としてエクスポートされる、ディスク上のブロックの階層構造として更に情報を論理的に構成し得る。
【００２５】
図３は、ストレージサーバ１０８内で利用するストレージオペレーティングシステム２３０のアーキテクチャの例を概略示す。一つの実施形態では、ストレージオペレーティングシステム２３０は、ライトエニウエアファイルシステム（ＷＡＦＬ（商標））を実装する、ＮｅｔＡｐｐ（登録商標），Ｉｎｃ．，Ｓｕｎｎｙｖａｌｅから入手可能なＮｅｔＡｐｐ（登録商標）ＤａｔａＯＮＴＡＰ（商標）オペレーティングシステムであればよい。しかしながら、本明細書に記載の技術に従って利用するために、他のストレージオペレーティングシステムが、別途設計されても拡張されてもよい。
【００２６】
ストレージオペレーティングシステム２３０は、ソフトウエア及び／若しくはファームウエアでプログラムされたプログラム可能回路として、若しくは、特別に設計された非プログラム可能回路（即ち、ハードウエア）として、又は、それらの組み合わせとして、実装され得る。例示の実施形態では、ストレージオペレーティングシステム２３０は、複数のモジュール、若しくはレイヤを含む。これらのレイヤはストレージマネジャ３１０を含み、該ストレージマネジャ３１０は、ストレージオペレーティングシステム２３０のコア機能要素である。ストレージマネジャ３１０は、ストレージサーバ１０８により管理されるデータに関してストラクチャ（例えば、一つ以上のファイルシステム）を課し、クライアント１０４からの読み出し及び書き込みリクエストを使用可能にする。
【００２７】
ストレージサーバにネットワーク１０６に亘って（例えば、クライアント１０４と）通信させるために、ストレージオペレーティングシステム２３０は、論理的にはストレージマネジャ３１０の下で、マルチプロトコルレイヤ３２０及びネットワークアクセスレイヤ３３０も含む。マルチプロトコルレイヤ３２０は、ネットワークファイルシステムズ（ＮＦＳ）、コモンインターネットファイルシステム（ＣＩＦＳ）、ハイパーテキストトランスファプロトコル（ＨＴＴＰ）、インターネットスモールコンピュータシステムインタフェース（ｉＳＣＳＩ）、及び／又はバックアップ／ミラーリングプロトコルなどの、種々のより高レベルのネットワークプロトコルを実装するのであり、これにより、ディスク１１２上に格納されるデータをユーザ及び／又はアプリケーションプログラムに利用可能にする。ネットワークアクセスレイヤ３３０は、イーサネット（登録商標）、インターネットプロトコル（ＩＰ）、ＴＣＰ／ＩＰ、ファイバチャネルプロトコル及び／又はユーザデータグラムプロトコル／インターネットプロトコル（ＵＤＰ／ＩＰ）などの、ネットワークに亘って通信するための一つ以上のより低レベルのプロトコルを実装する、一つ以上のネットワークドライバを含む。
【００２８】
更に、デバイスにストレージサブシステム（例えば、ストレージサブシステム１０５）と通信させるために、ストレージオペレーティングシステム２３０は、論理的にはストレージマネジャ３１０の下で、ストレージアクセスレイヤ３４０及び関連ストレージドライバレイヤ３５００を含む。ストレージアクセスレイヤ３４０は、ＲＡＩＤ−４、ＲＡＩＤ−５若しくはＲＡＩＤ  ＤＰ（登録商標）などの、より高レベルのストレージ冗長アルゴリズムを実装する。ストレージドライバレイヤ３５０は、ファイバチャネルプロトコルやスモールコンピュータシステムインタフェース（ＳＣＳＩ）などの、より低レベルのストレージデバイスアクセスプロトコルを実装する。
【００２９】
更に、読み出し若しくは書き込みオペレーションに関連する、クライアントインタフェースからストレージインタフェースへの、ストレージオペレーティングシステム２３０を介するデータフローのパス３６０も、図３に示す。よって、ストレージマネジャ３１０は、ストレージアクセスレイヤ３４０及びストレージドライバレイヤ３５０を介してストレージサブシステム１０５にアクセスする。クライアント１０４は、情報デリバリのクライアント／サーバモデルに従ってストレージサーバと相互作用できる。即ち、ネットワーク１０６に亘ってパケットを交換することによって、クライアント１０４はストレージサーバ１０８のサービスを要求し、ストレージサーバはクライアントにより要求されたサービスの結果を戻すことができる。ファイル及びディレクトリのフォームで情報にアクセスするときＴＣＰ／ＩＰに亘ってＣＩＦＳやＮＦＳなどのファイルベースのアクセスプロトコルを用いることにより、クライアントはパケットを発行し得る。一方で、ブロックのフォームで情報にアクセスするときｉＳＣＳＩ及びＳＣＳＩなどのブロックベースのアクセスプロトコルを用いることにより、クライアントはパケットを発行し得る。
【００３０】
一つの実施形態にて、ストレージマネジャ３１０は、ディスク１１２などのストレージデバイス上に格納される情報へのアスセスにて用いるために、論理ボリュームマネジメントを提供するメッセージベースのファイルシステムを実装する。即ち、ファイルシステム意味論を提供することに加えて、ストレージマネジャ３１０は、重複排除及び圧縮のオペレーションなどの、更なる格納効率機能を提供する。ストレージマネジャ３１０は、例えば、４キロバイト（ｋＢ）のブロックを用いて、及び、ファイル及び（生成タイム、アクセス許可、サイズ及びブロックの場所などの）ファイル属性を識別するためにインデクスノード（ｉｎｏｄｅ）を用いて、ブロックベースであるオンディスクフォーマットの表現を備えるＷＡＦＬファイルシステム（以下では、概略「ライトエニウエアファイルシステム」と言う）を実装できる。ファイルシステムは、そのファイルシステムのレイアウトを記述するメタデータを格納するファイルを利用する。これらのメタデータは、とりわけ、ｉｎｏｄｅファイルを含む。
【００３１】
操作上、クライアント１０４からの要求は、コンピュータネットワーク１０６に亘って、及び、ネットワークアダプタ２４０にて受信されるストレージサーバ１０８上に、パケットとして転送される。（レイヤ３３０の）ネットワークドライバは、パケットを有し、適切であれば、ストレージマネジャ３１０に転送するに先立ち更なる処理のためにマルチプルプロトコルレイヤ上へそれを通過する。ここで、ストレージマネジャは、ディスク１１２から、要求されたデータをロードする（検索する）オペレーションを生成する。続いてストレージマネジャは、ファイルｉｎｏｄｅを含むメッセージストラクチャをＲＡＩＤシステムに通過する。ファイルｉｎｏｄｅは、ディスク識別子及びディスクブロックナンバにマップされ、ディスクドライバシステム３５０の適切なドライバ（例えば、ＳＣＳＩドライバ）に送信される。ディスクドライバは、特定されたディスク１１２からのディスクブロックナンバにアクセスし、ストレージサーバによる処理のために、要求されたデータブロックをメモリ２２０内にロードする。要求の完了に際して、ストレージサーバ（及びオペレ-ティングシステム）はネットワーク１０６に亘ってクライアント１０４にリプライを返す。
【００３２】
図３にはシングルユニットとして示されているが、ストレージオペレーティングシステム２３０は、分散型アーキテクチャを有してもよい。例えば、マルチプルプロトコルレイヤ３２０及びネットワークアクセスレイヤ３３０がＮ−モジュール（例えば、Ｎ−ブレード）に含まれ、ストレージマネジャ３１０、ストレージアクセスレイヤ３４０及びストレージドライバレイヤ３５０が独立のＤ−モジュール（例えば、Ｄ−ブレード）に含まれてもよい。そのような場合、Ｎ−モジュール及びＤ−モジュール（図示せず）はある形式の物理相互接続を介して相互に（及び、他のＮ−及びＤ−モジュールとも）通信し、全体としてストレージサーバノードを形成する。そのようなストレージサーバノードは、一つ以上の他のストレージサーバと接続して高度に拡張性のあるストレージサーバクラスタを形成してもよい。
【００３３】
図４Ａは、ファイルシステム内のファイルのためのバッファツリーのブロック図表現である。ファイルシステム内の個々のファイルはｉｎｏｄｅを割り当てられる。図４Ａは、例えば、ｉｎｏｄｅ４０２−ａ及び４０２−ｂで表されファイルシステム内に格納される、二つのファイルを含む。個々のｉｎｏｄｅ４０２は、例えば、ポインタを用いて、Ｌｅｖｅｌ１（Ｌ１）間接ブロック４０４を参照する。個々の間接ブロック４０４は、少なくとも一つの物理ボリュームブロックナンバ（ＰＶＢＮ）４１０を格納する。個々のＰＶＢＮ４１０は、例えば、ポインタを用いて、大容量記憶装置４０８内の物理ブロック４０６を参照する。図４Ａに示すように、個々のＰＶＢＮ４１０は、固有の物理ブロック４０６を参照する。例えば、ＰＶＢＮ４１０−ｂは、物理ブロック４０６−ｂを参照する。ファイルのサイズ及びレイアウトに依存して、間接ブロックの更なるレベル（例えば、レベル２、レベル３）が存在し得ることに留意されたい。
【００３４】
図４Ｂは、重複排除のプロセスがファイルシステム上で実行された後の、ファイルシステム内のファイルのためのバッファツリーのブッロク図表現である。図４Ｂで表されるファイルは、図４Ａからのものに対応する。重複排除のオペレーションは、前に簡単に述べたように、ファイルシステム内の冗長データを除去し格納する更なるデータのスペースを作成する。基本的に、重複排除は重複ブロックを除去し、ファイルシステム内に固有のブロックのみを格納し、プロセス内で小量の更なるメタデータを作成する。この更なるメタデータは、ストレージマネジャ３１０により利用され要求に応じてデータを配置する。一つの実施形態では、メタデータは、ファイルシステム内部のあらゆるブロックのための、（例えば、ＳＨＡ−２５６に基づく）ハッシュ値若しくは「フィンガプリント」値を含む。重複排除のプロセスの間、データブロックのためのハッシュ値は、ファイルシステム内に格納されるブロックの他のハッシュ値と対比され、一致が見出されると（即ち、ブッロクが同一であると）、冗長データは、二つ以上のブロックの間で物理ブロックの一つを共有することにより除去される。
【００３５】
例えば、ｉｎｏｄｅ４０２−ａ及び４０２−ｂにより表される図４Ａのファイルを考慮して、データブロック４１０−ｃ、４１０−ｄ及び４１０−ｆが、それらのハッシュ値の比較後、同一と判定されれば、ディスク上に三つのブロックを維持する代わりに、重複排除の後一つのブロックが共有され得る。このブロックの共有は図４Ｂで表される。図４Ｂの例では、ＰＶＢＮ４１０−ｄは、ドナーに指定され、ＰＶＢＮ４１０−ｃ及び４１０−ｆは受容器に指定される。受容器ＰＶＢＮにより最早参照されない下部の物理ブロック（即ち、ブロック４０６−ｃ及び４０６−ｆ）はリリースされ、更なるデータを格納するのにストレージマネジャ３１０により用いられ得る。
【００３６】
重複排除のオペレーションは、ファイルシステム内にフラグメンテーションを取り込んでしまうことが多い。図４Ａに示すように、ストレージマネジャ３１０は、ブロックを逐次的方法でファイルに割り当て（即ち、４０６−ａ、４０６−ｂ、４０６−ｃ）ストレージシステムの読み出しパフォーマンスを向上させる。ファイルのブロックが隣接しているとき、ファイルは、ファイルブロックを配置するための、比較的時間消費する検索オペレーションを要求すること無く、単一の読み出しオペレーションによりアクセスされ得る。重複排除のオペレーションが、残りのファイルと隣接しないデータブロックを共有するとき、図４Ｂに示すように、ブロックの順次レイアウトは壊れる。ｉｎｏｄｅ４０２−ａは、断片化されたブロック（即ち、非隣接ブロック４０６−ａ、４０６−ｂ及び４０６−ｄ）を参照するので、全体ファイルにアクセスするには多重読み出しのオペレーションが実行されねばならない。
【００３７】
例えば、ファイルの読み出しがファイルを検索することにおける顕著な遅延となってしまう重複排除から、ファイルが非常に断片化するとき、ストレージシステムの性能判断が、重複排除のスペース節約の利点よりも上回るポイントがある。この貧弱な読み出し性能は、データに頻繁にアクセスしなければならないストレージシステム（例えば、一次ストレージシステム）には受け入れられるものではない。よって、重複排除を完全に無効にしなければならないということもなく重複排除により生じるフラグメンテーションをコントロールするために、ストレージマネジャ３１０は、重複排除を実行するに先立ち読み出し性能が低下する程度を判定して、この判定に基づいて重複排除のオペレーションを実行するかどうか決定できる。
【００３８】
一つの実施形態では、ストレージシステムのユーザ（例えば、ストレージアドミニストレータ）は、重複排除のオペレーションを実行するに当たり受入可能なフラグメンテーションのレベルを選択できる。例えば、ストレージシステムが補助ストレージのために利用されユーザがストレージシステムへのリード／ライトアクセスが不定期なものになることが分かっていれば、ユーザは、最大限のスペース節約に向けて重複排除のオペレーションをセットし、フラグメンテーションによる読み出し性能を潜在的に犠牲にできる。しかしながら、ストレージシステムが主要ストレージのために利用されユーザがストレージシステムへのリード／ライトアクセスが頻繁なものになることが分かっていれば、ユーザは、最大限のパフォーマンスに向けて重複排除のオペレーションをセットでき、フラグメンテーションによるストレージシステムの読み出し性能に殆ど若しくは全く影響を与えないならば重複排除が実行されるに過ぎない。同様に、ストレージの節約と性能を様々なレベルでバランスする中間のセッティングもあり得る。
【００３９】
図５は、重複排除のオペレーションを実行するかどうかを判定するプロセスのフロー図である。本明細書に記載のプロセスは、フローチャート内の一連のオペレーションとして構成される。しかしながら、当然ながら、これらのプロセスに関連するオペレーションの少なくとも一部は、同じ全体技術を実行しつつも、潜在的に、再順序付けされ、補完され、若しくは代用され得る。
【００４０】
プロセス５００はステップ５０２で始まり、ステップ５０２では、ファイルシステム内に格納されるファイルにつき重複排除のオペレーションを実行することにより取り込まれるフラグメンテーションのレベルを、ストレージマネジャ３１０が判定する。実際に重複排除のオペレーションを実行しなければならないということもなく、フラグメンテーションのレベルが判定される。ステップ５０２にて判定されるフラグメンテーションのレベルは、重複排除のオペレーションが実行されたならば予想され得る読み出し性能を示す。フラグメンテーションのレベルを判定することは、図６及び図７を参照して以下により詳細に記載される。
【００４１】
ステップ５０４では、フラグメンテーションのレベルは、ストレージマネジャ３１ＩＩより閾値と対比される。前述のように、閾値はストレージシステムのユーザにより判定可能であり、ストレージシステムの使用目的に依存し得る。例えば、主要ストレージとして用いられるストレージシステムに対する閾値は、補助若しくはバックアップストレージのために用いられるストレージシステムに対する閾値と比較して、相対的に低くなる。一つの実施形態では、比較的低い閾値は、ストレージシステムのユーザが、重複排除により取り込まれるフラグメンテーションに関連し得るパフォーマンス遅延により敏感である、ということを示す。フラグメンテーションのレベルがどのように計算されるかに拠るが、ある実施形態では、フラグメンテーションのレベルが所与の閾値より低いかどうか比較が為されるのがこのましい。
【００４２】
図５の例では、ファイルのフラグメンテーションのレベルが、閾値より高いと判定されれば、プロセスはステップ５０８に移行し、ステップ５０８ではストレージマネジャ３１０は、重複排除のオペレーションが実行されるべきでは無いと判定する。しかしながら、ファイルのフラグメンテーションのレベルが閾値より高くないならば、プロセスはステップ５０６に移行し、ステップ５０６ではストレージマネジャ３１０は、重複排除のオペレーションが実行されるべきであると判定する。重複排除のプロセスそれ自身は本開示と密接な関係にあるわけではなく、重複排除に関するどの周知の適切な方法が採用されてもよい。図５のプロセスはファイルシステム内の個々のファイルに対して繰り返され、重複排除のオペレーションを実行するかどうかを判定する。重複排除のオペレーションは継続的に実行されてもよいし周期的に実行されてもよい。
【００４３】
図６は、ファイルに関して重複排除のオペレーションを実行することで取り込まれるフラグメンテーションのレベルを判定するプロセスのフロー図である。プロセス６００は図５のステップ５０２の一つの例示の形態である。プロセスはステップ６０２にて始まり、そのステップ６０２ではストレージマネジャ３１０が、重複排除のオペレーションが実行された後に、ファイルにアクセスするのに必要である読み出しのオペレーションの数を計算する。このプロセスは、図７を参照して以下でより詳細に記載する。
【００４４】
ステップ６０４では、ストレージマネジャ３１０は、理想ファイルにアクセスするのに必要である読み出しのオペレーションの数を計算する。理想ファイルは、連続物理データブロックに格納され最低数の読み出しのオペレーションでアクセスされ得るものである。一つの実施形態では、ファイルにアクセスするのに必要である読み出しのオペレーションの数は、先読みのオペレーションを実行することにより判定され得る。先読みのオペレーションは、物理ストレージからブロックをフェッチし、ブロックをメモリ内に格納する。ストレージマネジャは、ファイルにアクセスするのに必要である読み出しのオペレーションの数として、先読みのオペレーションを実行するのに必要である読み出しのオペレーションの数を利用し得る。
【００４５】
一つの実施形態では、ストレージマネジャ３１０により、６４までの連続のディスクブロックのセグメント内のストレージシステムに書き込みができ、読み出しのオペレーションが６４までの連続のブロックのセグメント上で実行され得る。よって、例えば、２５６の連続のディスクブロックから成る理想ファイルに対して、ストレージマネジャ３１０は、全体ファイルをフェッチする四つの読み出しのオペレーションを実行する。しかしながら、重複排除のオペレーションにより取り込まれるフラグメンテーションの後、この同じ先読みは、より高い数の読み出しのオペレーションを要求してもよい。
【００４６】
ステップ６０６では、重複排除のオペレーションの後、ストレージマネジャ３１０はファイルのフラグメンテーションのインデクスを計算する。フラグメンテーションのインデクスは、理想ファイルのフラグメンテーションに関する重複排除の後、ファイルのフラグメンテーションのレベルの表示である。上記からの理想の２５６ブロックの例を用いると、ファイルが連続であることから理想ファイルのための先読みが四つの読み出しのオペレーションを取り、フラグメンテーションが取り込まれたことから重複排除の後先読みが１６の読み出しのオペレーションを取るならば、ファイルのフラグメンテーションのインデクスは４となる。このフラグメンテーションのインデクスは、例えば、図５のステップ５０４にて閾値に対比され、重複排除のオペレーションを実行するかどうか判定するのに用いられ得る。
【００４７】
図７は、重複排除のオペレーションを実行するのに先立ち、重複排除の後にファイルにアクセスするための読み出しのオペレーションの数を計算するためのプロセスのフロー図である。プロセス７００は、図６のステップ６０２の一つの例示の実施形態である。ステップ７０２にて、ストレージマネジャ３１０は、重複排除のオペレーションで用いられるドナーブロックの全てに対するＰＶＢＮを配置する。前述のように、ストレージシステムは、ファイルシステム内の個々のブロックのためのハッシュ値若しくはフィンガプリントによりデータ構造を維持する。（通常ブロック「シェアリング」と称される）ドナーブロックで、ファイル内のどのブロックが置換され得るか判定するに当たり、ストレージマネジャ３１０は、ファイルの個々のブロックのためのハッシュ値を、ファイルシステム内の他のファイルの格納されたハッシュ値と比較する。
【００４８】
可能なドナーブロックが配置された後、ステップ７０４にて、ファイルの論理ブロックをＰＶＢＮと実際に関連付けること無く、ストレージマネジャ３１０は、オリジナルファイルの個々のＰＶＢＮを、ファイルの表すＰＶＢＮのリスト内のその対応するドナーブロックと置き換える。ステップ７０６にて、続いてストレージマネジャは、ＰＶＢＮのリストをソートし、ディスク上のブロックのレイアウトを表示する。ステップ７０８にて、ソーとされたＰＶＢＮから、ストレージマネジャ３１０は、重複排除の後、ファイルにアクセスするのに必要である読み出しのオペレーションの数を計算し得る。一つの実施形態では、ストレージマネジャ３１０は、ＰＶＢＮリスト内の連続のブロックのグループをカウントすることにより、読み出しのオペレーションの数を計算する。例えば、連続のブロックの１６個のグループがあれば、ストレージマネジャ３１０は、重複排除の後にファイルにアクセスするのに１６の読み出しのオペレーションが必要とされることを判定する。
【００４９】
上記にて紹介した技術は、プログラムされたプログラム可能回路により実装可能であり、若しくは、ソフトウエア及び／若しくはファームウエアにより構成可能であり、又は、全体として特定用途の「ハードワイヤードの」回路により、若しくは、それらの様式の組み合わせにより実装可能である。（あるとすれば）それらの特定用途の回路は、例えば、一つ以上の特定用途向け集積回路（ＡＳＩＣ）、プログラム可能論理回路（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などの形式であればよい。
【００５０】
本明細書で紹介する技術を実装するのに用いるソフトウエア若しくはハードウエアは、機械読み取り可能ストレージ媒体上に格納されてもよく、更に、一つ以上の汎用の若しくは特定用途のプログラム可能マイクロプロセッサにより実行されてもよい。本明細書で用語が用いられる「機械読み取り可能媒体」は、機械（ここでの機械は、例えば、コンピュータ、ネットワークデバイス、携帯電話、個人用デジタル補助装置（ＰＤＡ）、製造ツール、一つ以上のプロセッサを伴うどんなデバイスでも、よい。）によりアクセス可能な形式で情報を格納できる、どんなメカニズムでもよい。例えば、機械読み取り可能媒体は、記録可能／非記録可能媒体（例えば、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ装置など）を含む。
【００５１】
本明細書で用いられる用語「論理」は、例えば、特定用途のハードワイヤード回路、プログラム可能回路と用いられるソフトウエア及び／若しくはファームウエア、又は、それらの組み合わせを、含み得る。
【００５２】
特定の例示の実施形態を参照して、本発明を記載したが、本発明は記載の実施形態に限定されるのではなく、添付の特許請求の範囲の精神及び範囲の限度で修正及び変更により実行され得る。従って、明細書及び図面は、限定の意味では無く例示の意味で考慮されるべきである。
【符号の説明】
【００５３】
１０４・・・クライアント、１０６・・・ネットワーク、１０８・・・ストレージサーバ、２１０・・・プロセッサ、２３０・・・オペレーティングシステム、２４０・・・ネットワークアダプタ、２５０・・・ストレージアダプタ。
【図１】
2015513741.tif 000003
【図２】
2015513741.tif 000004
【図３】
2015513741.tif 000005
【図４Ａ】
2015513741.tif 000006
【図４Ｂ】
2015513741.tif 000007
【図５】
2015513741.tif 000008
【図６】
2015513741.tif 000009
【図７】
2015513741.tif 000010
【国際調査報告】
2015513741.tif 000011
2015513741.tif 000012