(57)【要約】ファイルアクセスストレージに使用する、圧縮ファイルを作成し、読み出し、書き込む方法およびシステムに関する。原ファイルの圧縮データは、複数の圧縮ユニットにパッキングされ、圧縮ファイルとして記憶される。一つ以上の対応する圧縮ユニットは、圧縮ファイルのデフラグ構成を維持しながらファイル全体を復元する必要なく読み出されるおよび／または更新される。
2007535068.tif 000002
【特許請求の範囲】
【請求項１】
ファイルアクセスストレージに使用する、記憶するために圧縮ファイルを作成する方法であって、
ａ）原ファイルを圧縮して圧縮データを生成するステップであって、前記原ファイルのデータ（クラスタ）の少なくとも一つの固定サイズ部分は、順に処理されて、少なくとも一つの固定サイズ圧縮論理ユニット（ＣＬＵ）に分割される対応する圧縮セクションとされるステップと、
ｂ）前記圧縮ファイルとしての前記圧縮データの記憶を促進するステップであって、前記圧縮ファイルは、前記原ファイルのクラスタに対応する圧縮セクションと、固有のファイル記述子を有するヘッダとを含むステップと、
ｃ）前記圧縮セクションを記述する少なくとも一つのレコードを有するセクションテーブルを作成するステップであって、前記レコードは、前記圧縮セクションに対応するＣＬＵに関する情報と、前記ＣＬＵに関連する記憶場所ポインタとを少なくとも保持するステップとを、備える方法。
【請求項２】
前記クラスタは予め定められた等しいサイズを有する請求項１記載の方法。
【請求項３】
クラスタのサイズは、前記クラスタに含まれるデータのタイプに応じて予め定められたサイズのリストから選択される、請求項１記載の方法。
【請求項４】
クラスタは、前記クラスタに含まれるデータのタイプに応じて圧縮アルゴリズムで処理される、請求項１記載の方法。
【請求項５】
前記圧縮ファイルは、前記対応するクラスタの非圧縮データを収容する少なくとも一つのセクションを含む、請求項１記載の方法。
【請求項６】
クラスタの前記処理は、取得可能な圧縮比の評価と、および、前記圧縮比が所定の基準を満たす場合にだけ前記圧縮セクション内での圧縮データの生成とを含む、請求項１記載の方法。
【請求項７】
前記圧縮ファイルの前記ヘッダは、少なくとも一つのクラスタが圧縮セクションに処理されたか否かを示す情報を保持する、請求項１記載の方法。
【請求項８】
前記圧縮ファイルの前記ヘッダは前記原ファイルのサイズに関する情報を保持する、請求項１記載の方法。
【請求項９】
前記圧縮セクションを記載する前記レコードは等しい予め定められたサイズを有する、請求項１記載の方法。
【請求項１０】
前記圧縮セクションのレコードは、前記圧縮セクションが圧縮データを含むかを示す情報を保持する、請求項１記載の方法。
【請求項１１】
ファイルの圧縮は、前記ファイルが所定の基準を満たす場合にだけ提供される、請求項１記載の方法。
【請求項１２】
前記セクションテーブルは前記圧縮ファイルの一部を形成する、請求項１記載の方法。
【請求項１３】
前記セクションテーブルは前記圧縮ファイルに含まれる最後の圧縮セクションに後続する位置に記憶される、請求項１２記載の方法。
【請求項１４】
前記セクションテーブルは関連する圧縮ファイル以外のファイルの一部を形成する、請求項１記載の方法。
【請求項１５】
最後の圧縮セクションにおける最後のＣＬＵのサイズは、前記ＣＬＵに記憶される圧縮データの実際のサイズによって定められる、請求項１記載の方法。
【請求項１６】
請求項１に従って圧縮されたファイルに記憶されるデータを読み出す方法であって、
ａ）読み出すべきデータを有する第１の圧縮セクションのシリアル番号を判定するステップと、
ｂ）セクションテーブルを参照して前記圧縮セクションに対応するＣＬＵおよびその記憶場所を判定するステップと、
ｃ）前記圧縮セクションからの前記クラスタの復元を促進するステップと、を備える方法。
【請求項１７】
前記読み出すべきデータの範囲が前記復元されたクラスタのサイズを超える場合には、前記読み出すべきデータ全てが復元されるまでステップｂ）およびｃ）を、シリアル番号を１だけインクリメントした圧縮セクションに対して繰り返すステップを更に備える、請求項１６記載の方法。
【請求項１８】
請求項１に従って圧縮されるファイルに対して所与のデータ範囲でデータを書き込む方法であって、
ａ）元のセクションを構成する更新されるべきデータを有する第１の圧縮セクションのシリアル番号を判定するステップと、
ｂ）セクションテーブルを参照して前記元の圧縮セクションに対応するＣＬＵおよびその記憶場所を判定するステップと、
ｃ）前記元の圧縮セクションからのクラスタの復元を促進するステップと、
ｄ）前記クラスタ内の更新するデータのオフセットを計算し、要求されるデータ範囲の更新を促進するステップと、
ｅ）前記更新された圧縮セクションに前記更新されたクラスタを圧縮するステップと、
ｆ）前記更新された圧縮セクションで前記元の圧縮セクションへの上書きを促進するステップと、
ｇ）セクションテーブルを更新するステップと、を備える方法。
【請求項１９】
書き込むべきデータの範囲が復元されたクラスタのサイズを超える場合には、書き込むべき必要なデータ全てが復元されるまでステップｂ）乃至ｇ）を、シリアル番号を１だけインクリメントした圧縮セクションに対して繰り返すステップを更に備える、請求項１８記載の方法。
【請求項２０】
前記圧縮ファイルへのデータの書き込み中に解放された自由ＣＬＵのリストを扱うステップであって、前記リストは、ファイルが閉じられるまでファイルに関連する全てのセッション中に扱われるステップを更に備える、請求項１８記載の方法。
【請求項２１】
元のＮ０と更新されたＮｕの圧縮セクションに必要なＣＬＵの数を比較し、
ａ）Ｎ０＝Ｎｕの場合、更新された圧縮セクションに対応するＣＬＵで元の圧縮セクションに対応する全てのＣＬＵを上書きすること、
ｂ）Ｎ０＞Ｎｕの場合、更新された圧縮セクションに対応するＣＬＵで元の圧縮セクションに対応するＮｕのＣＬＵを上書きし、解放されるＣＬＵに関する自由ＣＬＵのリストを更新すること、
ｃ）Ｎ０＜Ｎｕ＜Ｎ０＋Ｎｆ（Ｎｆは自由ＣＬＵのリスト中のＣＬＵの数）の場合、更新された圧縮セクションに対応するＣＬＵで元の圧縮セクションに対応する全てのＣＬＵを上書きし、更新された圧縮セクションに対応する残りのＣＬＵを自由ＣＬＵのリストに含まれるＣＬＵに書き込むこと、
ｄ）Ｎ０＋Ｎｆ＜Ｎｕの場合、更新された圧縮セクションに対応するＣＬＵで元の圧縮セクションに対応する全てのＣＬＵを上書きし、更新された圧縮セクションに対応するＣＬＵを自由ＣＬＵのリストに含まれるＣＬＵに書き込み、次の自由な記憶場所に更新された圧縮セクションに対応する残りのＣＬＵを連続的に書き込むこと、
のいずれかを促進するステップを更に備える、請求項２０記載の方法。
【請求項２２】
ａ）ファイルを閉じる前に自由ＣＬＵのリストを確認するステップと、
ｂ）前記リストが空でない場合には、前記圧縮セクションに含まれるＣＬＵの中の最も高い記憶場所ポインタを有するＣＬＵ（第１のＣＬＵ）を定めるステップと、
ｃ）前記第１のＣＬＵからより低い記憶場所ポインタを有する自由ＣＬＵ（第２のＣＬＵ）への圧縮データの移動を促進するステップと、
ｄ）前記第２のＣＬＵを属する圧縮セクションに割り当て、前記第１のＣＬＵを自由ＣＬＵのリストに割り当てるステップと、
ｅ）圧縮セクションに含まれる全てのＣＬＵの記憶場所ポインタが自由ＣＬＵのリストに含まれるどのＣＬＵのポインタよりも低くなるまでステップｂ）−ｄ）を繰り返すステップと、
ｆ）セクションテーブルを更新するステップと、を備える請求項２０記載の方法。
【請求項２３】
ファイルアクセスストレージに使用する、圧縮ファイルとして記憶された原ファイルを読み出す方法であって、前記圧縮データが前記原ファイルのデータ（クラスタ）の固定サイズの部分に対応する一つ以上の圧縮セクションにパッキングされ、前記圧縮セクションが固定サイズの圧縮論理ユニット（ＣＬＵ）に分割され、
ａ）読み出すべきデータを有する第１の圧縮セクションのシリアル番号を判定するステップと、
ｂ）前記圧縮セクションに対応するＣＬＵおよび記憶場所に関する情報を保持するセクションテーブルを参照して、読み出すべき圧縮データの記憶場所を判定するステップと、
ｃ）前記圧縮セクションからの前記クラスタの復元を促進するステップと、を備える方法。
【請求項２４】
前記読み出すべきデータの範囲が前記復元されたクラスタのサイズを超える場合には、前記読み出すべきデータ全てが復元されるまでステップｂ）およびｃ）を、シリアル番号を１だけインクリメントした圧縮セクションに対して繰り返すステップを更に備える、請求項２３記載の方法。
【請求項２５】
ファイルアクセスストレージに使用する、圧縮データとして記憶されるファイルに対して所与のデータ範囲でデータを書き込む方法であって、前記圧縮データが前記原ファイルのデータ（クラスタ）の固定サイズの部分に対応する一つ以上の圧縮セクションにパッキングされ、前記圧縮セクションが固定サイズの圧縮論理ユニット（ＣＬＵ）に分割され、
ａ）元のセクションを構成する更新されるべきデータを有する第１の圧縮セクションのシリアル番号を判定するステップと、
ｂ）前記圧縮セクションに対応するＣＬＵおよび記憶場所に関する情報を保持するセクションテーブルを参照して更新されるべき圧縮データの記憶場所を判定するステップと、
ｃ）前記元の圧縮セクションからのクラスタの復元を促進するステップと、
ｄ）前記クラスタ内の更新するデータのオフセットを計算し、所与のデータ範囲の更新を促進するステップと、
ｅ）前記更新された圧縮セクションに前記更新されたクラスタを圧縮するステップと、
ｆ）前記更新された圧縮セクションで前記元の圧縮セクションへの上書きを促進するステップと、
ｇ）セクションテーブルを更新するステップと、を備える方法。
【請求項２６】
書き込むべきデータの範囲が復元されたクラスタのサイズを超える場合には、書き込むべき必要なデータ全てが復元されるまでステップｂ）乃至ｇ）を、シリアル番号を１だけインクリメントした圧縮セクションに対して繰り返すステップを更に備える、請求項２５記載の方法。
【請求項２７】
前記圧縮ファイルへのデータの書き込み中に解放された自由ＣＬＵのリストを扱うステップであって、前記リストは、ファイルが閉じられるまでファイルに関連する全てのセッション中に扱われる、ステップを更に備える、請求項２５記載の方法。
【請求項２８】
元のＮ０と更新されたＮｕの圧縮セクションに必要なＣＬＵの数を比較し、
ａ）Ｎ０＝Ｎｕの場合、更新された圧縮セクションに対応するＣＬＵで元の圧縮セクションに対応する全てのＣＬＵを上書きすること、
ｂ）Ｎ０＞Ｎｕの場合、更新された圧縮セクションに対応するＣＬＵで元の圧縮セクションに対応するＮｕのＣＬＵを上書きし、解放されるＣＬＵに関する自由ＣＬＵのリストを更新すること、
ｃ）Ｎ０＜Ｎｕ＜Ｎ０＋Ｎｆ（Ｎｆは自由ＣＬＵのリスト中のＣＬＵの数）の場合、更新された圧縮セクションに対応するＣＬＵで元の圧縮セクションに対応する全てのＣＬＵを上書きし、更新された圧縮セクションに対応する残りのＣＬＵを自由ＣＬＵのリストに含まれるＣＬＵに書き込むこと、
ｄ）Ｎ０＋Ｎｆ＜Ｎｕの場合、更新された圧縮セクションに対応するＣＬＵで元の圧縮セクションに対応する全てのＣＬＵを上書きし、更新された圧縮セクションに対応するＣＬＵを自由ＣＬＵのリストに含まれるＣＬＵに書き込み、次の自由な記憶場所に更新された圧縮セクションに対応する残りのＣＬＵを連続的に書き込むこと、
のいずれかを促進するステップをさらに備える、請求項２７記載の方法。
【請求項２９】
ａ）ファイルを閉じる前に自由ＣＬＵのリストを確認するステップと、
ｂ）前記リストが空でない場合には、前記圧縮セクションに含まれるＣＬＵの中の最も高い記憶場所ポインタを有するＣＬＵ（第１のＣＬＵ）を定めるステップと、
ｃ）前記第１のＣＬＵからより低い記憶場所ポインタを有する自由ＣＬＵ（第２のＣＬＵ）への圧縮データの移動を促進するステップと、
ｄ）前記第２のＣＬＵを属する圧縮セクションに割り当て、前記第１のＣＬＵを自由ＣＬＵのリストに割り当てるステップと、
ｅ）圧縮セクションに含まれる全てのＣＬＵの記憶場所ポインタが自由ＣＬＵのリストに含まれるどのＣＬＵのポインタよりも低くなるまでステップｂ）−ｄ）を繰り返すステップと、
ｆ）セクションテーブルを更新するステップと、を備える請求項２７記載の方法。
【請求項３０】
前記圧縮ファイルのデフラグ構成を維持するステップを更に備える、請求項１記載の方法。
【請求項３１】
前記圧縮ファイルのデフラグ構成を維持するステップを更に備える、請求項２３記載の方法。
【請求項３２】
前記圧縮ファイルのデフラグ構成を維持するステップを更に備える、請求項２５記載の方法。
【請求項３３】
ファイルアクセスストレージは、ネットワーク接続ストレージ（ＮＡＳ）である、請求項１記載の方法。
【請求項３４】
ファイルアクセスストレージは、ネットワーク接続ストレージ（ＮＡＳ）である、請求項２３記載の方法。
【請求項３５】
ファイルアクセスストレージは、ネットワーク接続ストレージ（ＮＡＳ）である、請求項２５記載の方法。
【請求項３６】
前記原ファイルに含まれるデータを暗号化するステップを更に備える、請求項１記載の方法。
【請求項３７】
記憶するためにファイルを圧縮するシステムであって、
ａ）原ファイルを圧縮し圧縮データを生成するサブシステムであって、前記原ファイルのデータ（クラスタ）の固定サイズ部分は、順に処理されて、少なくとも一つの固定サイズ圧縮論理ユニット（ＣＬＵ）に分割される対応する圧縮セクションとされるサブシステムと、
ｂ）圧縮ファイルとしての圧縮データの記憶を促進するサブシステムであって、前記圧縮ファイルは、前記原ファイルのクラスタに対応する圧縮セクションと、固有のファイル記述子を有するヘッダとを含むサブシステムと、
ｃ）前記圧縮セクションを記述する少なくとも一つのレコードを有するセクションテーブルを作成するサブシステムであって、前記レコードは、圧縮セクションに対応するＣＬＵと、前記ＣＬＵに関連する記憶場所ポインタに関する情報とを保持するサブシステムと、を備えるシステム。
【請求項３８】
ファイルアクセスストレージに使用する、記憶するために圧縮ファイルを作成する方法ステップを実行するために機械によって実行可能な命令のプログラムを具現化する、機械によって読み出し可能なプログラムストレージデバイスであって、
ａ）原ファイルを圧縮して圧縮データを生成するステップであって、前記原ファイルのデータ（クラスタ）の少なくとも一つの固定サイズ部分は、順に処理されて、少なくとも一つの固定サイズ圧縮論理ユニット（ＣＬＵ）に分割される対応する圧縮セクションとされるステップと、
ｂ）前記圧縮ファイルとしての前記圧縮データの記憶を促進するステップであって、前記圧縮ファイルは、前記原ファイルのクラスタに対応する圧縮セクションと、固有のファイル記述子を有するヘッダとを含むステップと、
ｃ）圧縮セクションのレコードを有するセクションテーブルを作成するステップであって、前記レコードは、前記圧縮セクションに対応するＣＬＵに関する情報と、前記ＣＬＵに属する記憶場所ポインタとを少なくとも保持するステップと、を備えるプログラムストレージデバイス。
【請求項３９】
ファイルアクセスストレージに使用する、記憶するために圧縮ファイルを作成する方法を具現化する、コンピュータ読み出し可能プログラムコードを有するコンピュータで使用可能な媒体を備えるコンピュータプログラムプロダクトであって、
ａ）コンピュータに原ファイルを圧縮させて圧縮データを生成させるコンピュータ読み取り可能プログラムコードであって、前記原ファイルのデータ（クラスタ）の少なくとも一つの固定サイズ部分は、順に処理されて、少なくとも一つの固定サイズ圧縮論理ユニット（ＣＬＵ）に分割される対応する圧縮セクションとされるコンピュータ読み出し可能プログラムコードと、
ｂ）コンピュータに前記圧縮ファイルとしての前記圧縮データの記憶を促進するコンピュータ読み出し可能プログラムコードであって、前記圧縮ファイルは、前記原ファイルのクラスタに対応する圧縮セクションと、固有のファイル記述子を有するヘッダとを含むコンピュータ読み出し可能プログラムコードと、
ｃ）コンピュータに圧縮セクションのレコードを有するセクションテーブルを作成させるコンピュータ読み出し可能プログラムコードであって、前記レコードは、前記圧縮セクションに対応するＣＬＵに関する情報と、前記ＣＬＵに属する記憶場所ポインタと、を少なくとも保持するコンピュータ読み出し可能プログラムコードと、を備えるコンピュータプログラムプロダクト。
【請求項４０】
記憶するためにファイルを圧縮する方法であって、圧縮ファイルのデフラグ構成を維持しながら圧縮データへの直接アクセスを促進する方法。
【請求項４１】
ファイルアクセスストレージに使用する、圧縮データとして記憶されるファイルにファイルを書き込む方法であって、原ファイルの前記圧縮データは一つ以上の圧縮ユニットにパッキングされ、前記圧縮ユニットのデフラグ構成を維持しながらファイル全体を復元することなく一つ以上の対応する圧縮ユニットの更新を促進する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶データへのネットワークアクセスをサポートするネットワークインフラストラクチャデバイスに関し、特に、ファイルシステムプロトコルによるファイルシステムでの圧縮データの圧縮および操作を促進する方法および装置に関する。
【背景技術】
【０００２】
現在のビジネス環境では、全てのタイプのビジネスデータがビジネスの成功にとって益々重要になってきている。ビジネスにより生成される、情報資産の共有、管理および保護の方法を定めたデータの著しい増加および複雑性が、情報ストレージの需要を後押ししている。
【０００３】
典型的には、どの技術も構造も全ての組織の全ての要求に取り組むことはできない。主なストレージ技術は、ＥＭＣによる白書（非特許文献１）に記載され、基本的には、接続のタイプ（直接取付型ストレージ（ＤＡＳ）、ＩＰまたはチャネルネットワーク）によって、また、データがアクセスされる方法によって識別される。データアクセスの方法と関連して、ブロックアクセス、ファイルアクセスおよびオブジェクトアクセスといったストレージデバイスの構造の三つの基本的なタイプを考える。
【０００４】
ブロックアクセス構造では、サーバ／クライアントとストレージデバイスとの間の通信は、ブロックで実行され、つまり、情報はディスクからブロック毎に直接的に引き出される。オペレーションシステムは、各情報がディスク上のどこにあるかを把握している一方、ストレージデバイスは通常、デバイス上でデータを整理するために使用されるファイルシステムを認識していない。読み出しまたは書き込みが必要となると、ディスク上のどこにデータの各ブロックが存在し、どのようにしてひとまとめにするかを知っているプロセッサによってディスクのデータは直接的にアクセスされる。ブロックアクセスストレージ技術の例としてＤＡＳ（直接取付型ストレージ）、ＳＡＮ（ストレージ領域ネットワーク）およびブロックストレージオーバＩＰ（例えば、ＦＣＩＰ、ｉＦＣＰ、ｉＳＣＳＩ等）が挙げられる。
【０００５】
ファイルアクセスでは、サーバまたはクライアントは物理的な場所ではなく名前でファイルを要求することが必要である。その結果、ストレージデバイスは、通常、ファイルシステムを作成、維持および更新するためにファイルをデータのブロックにマッピングすることを担う。ファイルサーバは、ファイルを読み出しまたは書き込む要求を受信し、「密かに」ブロックアクセスを行う。ファイルアクセスストレージ技術の例として、ＮＡＳ（ＮＦＳ、ＣＩＦＳ、ＨＴＴＰ等のプロトコルによるネットワーク接続ストレージ）およびＭＰＦＳ（マルチパスファイルサービング）が挙げられる。ファイルアクセスストレージは、例えば、汎用ファイル、ウェブアプリケーション、エンジニアリングアプリケーション（例えば、ＣＡＤ、ＣＡＭ、ソフトウェア開発等）、画像および３Ｄデータ処理、マルチメディアストリーミング等のために実行される。
【０００６】
オブジェクトアクセスは、ブロック、フィイルおよびストレージのトポロジーに関する全ての詳細をアプリケーションから隠すことによってデータアクセスを更に簡略化する。オブジェクトアクセスは、コンテンツ管理アプリケーションで一体化されるＡＰＩ上で実行される。オブジェクトアクセスストレージ技術の例としてＣＡＳ（コンテンツアドレスストレージ）が挙げられる。
【０００７】
ストレージデバイスのより効率的な使用は、データを記憶する前に圧縮することで実現される。データ圧縮技法は、ストレージデバイスの容量および送信時間をそれぞれ減少させるよう記憶されまたは送信されるべきデータ量を減少させるために使用される。圧縮は、例えば、非特許文献２に記載されている標準的な圧縮アルゴリズム等の様々な圧縮アルゴリズムを用いて実現される。透過的に圧縮を実行すること、つまり、データが既存のアプリケーションを変更することなく使用されることが重要である。いずれの場合においても、元のデータが再構成され、アプリケーションにアクセス可能となるよう対応する解凍技法を提供することが必要である。圧縮データを更新する場合、特に、データの比較的小部分を更新する場合、ブロックまたはファイル全体を解凍し再圧縮することは一般的に非効率的である。
【０００８】
記憶および記憶データのアクセスの最適化の様々な実行は、例えば、以下の特許公報に開示される。
【０００９】
特許文献１（Franaszek）は、メモリの断片化を減少する一方でメモリの再編の必要性を回避するように可変長のオブジェクトを記憶するシステムおよび方法を開示する。可変長オブジェクトの残余は、最良適合または第一適合ベースで別の可変長オブジェクトからの残余とストレージの固定サイズのブロックを共有するよう割り当てられる（ブロックを共有する二つの残余はルームメートと称される）。一方の残余がブロックの一方の端部に記憶され、他方の残余はブロックの他方の端部に記憶される。ストレージのブロックを共有する可変長オブジェクトは、同じ集団（cohort）から選択される。それにより、オブジェクト間では何らかの関連性がある。この関連性は、例えば、オブジェクトが同じページからまたは多数のページにわたって何らかの線形順序にあることを含む。ある集団の可変長オブジェクトに関する情報、例えば、オブジェクトがルームメートを有するか否かは、メモリに記憶される。
【００１０】
特許文献２（Yoshida et al.）は、圧縮データを記憶する方法および装置を開示する。ここでは、圧縮ファイルは、圧縮管理テーブルの位置を示す情報を有するヘッダと、圧縮されたコードと、元のレコードそれぞれの圧縮されたコードの記憶場所を示す情報を保持する圧縮管理表とよりなる。
【００１１】
特許文献３（Morris et al.）は、バックアップサブシステムにおけるストレージ要件を減少させ、セグメント化された圧縮フォーマットにおいてサーバ上で基本ファイルが維持される送信帯域幅に対する負荷を減少させる方法および手段を開示する。ファイルがクライアントで変更されると、ファイルはサーバに送信され、基本ファイル全体を解凍することなく、差分関数を用いてファイルのセグメント化された圧縮基本バージョンと比較される。圧縮基本フィイルとファイルの変更バージョンとの間の差であるデルタファイルが作成され、バックアップシステムの一部である記憶媒体に記憶される。
【００１２】
特許文献４（Bolan et al.）は、システムストレージ階層において区別可能な場所で圧縮データがシステム管理されるリソースとなるよう、システムの時系列パラメータに基づいてデータの圧縮および解凍を制御するシステムを開示する。プロセッサレジスタはキャッシュにより支持され、キャッシュはメインストレージにより支持され、メインストレージは解凍ディスクストレージにより支持され、解凍ディスクストレージは圧縮ディスクストレージ、テープ等によって支持される。データは、解凍形態から圧縮形態に移行し、システムの時系列パラメータに基づいてデータライフサイクルに応じてシステム制御下でストレージ階層を通じて移され、または、任意には、要求に応じて、データは最初に作成され記憶され、データはシステム制御下で後に圧縮され、データがアクセスされると、要求に応じてセグメント毎に解凍され、その幾らか後に、データは次に参照されるまでシステム制御下で再び圧縮される。大きいデータオブジェクトはセグメント化され、圧縮はより使用頻度が低いデータに適用される。
【００１３】
特許文献５（Obara et al.）は、ディスクストレージシステムを開示する。ここでは、キャッシュメモリに記憶されるべきデータは、データが所属するトラックブロックと関連付けられた二つのキャッシュブロックをそれぞれが有する複数のデータブロックに分割されて圧縮され、それにより、読みやすい方法でディスクストレージシステムのキャッシュメモリに複数の圧縮レコードが記憶される。圧縮後のそれぞれのデータブロックは、一つのまたは複数のキャッシュブロックに記憶される。データブロックに対するイントラックアドレスから各キャッシュブロックを取り出す情報は、キャッシュメモリに対する取り出し情報の一部として記憶される。レコードにおけるそれぞれのデータブロックが読み出されると、圧縮データブロックを記憶するキャッシュブロックは、データブロックのイントラックアドレスおよび取り出し情報に基づいて判定される。
【００１４】
特許文献６（Faulkner et al.）は、仮想メモリシステムを用いたデータ圧縮および解凍の組み合わせを開示する。データが圧縮フォーマットでストレージデバイスに記憶されるいわゆる、埋め込み型システムを含む幾つかのコンピュータシステムが記載されている。中央処理ユニット（ＣＰＵ）によるデータに対する要求に応答して、仮想メモリシステムはまず、要求されたデータが、解凍データが記憶されている部分でもありＣＰＵがアクセス可能であるメインメモリの部分に存在するか否かを判定する。要求されたデータがメインメモリの解凍部分に存在しないがストレージデバイスにおいて圧縮フォーマットで存在する場合、データは、デマンドページング操作を通じてメインメモリの解凍部分に転送される。デマンドページング操作中、圧縮データは解凍される。同様に、データがメインメモリの解凍部分からページアウトされ、当該データは保存されなくてはならない場合、当該データは圧縮データのストレージデバイスに記憶される前に圧縮される。
【００１５】
特許文献７（Cowart et al.）は、圧縮ファイルの記憶および取り出し方法を開示する。この方法は、コンパクトディスク読み出し専用メモリから直接的に圧縮ファイルを取り出すためにファイル割り付けテーブルを動的に生成することを伴う。
【００１６】
特許文献８（Pham et al.）は、クライアントコンピュータシステムのファイルシステムとネットワークデータストレージとの間のデータの確実なアクセスおよび転送をサポートするセキュアネットワークファイルアクセス機器を開示する。クライアントコンピュータシステム上に設けられ、確実なネットワークファイルアクセス機器によってモニタリングされるエージェントは、ネットワークデータストレージに発信されるファイルシステム要求に対してクライアントコンピュータシステムの認証を確実にする。セキュアネットワークファイルアクセス機器は、クライアントコンピュータシステムとネットワークデータストレージとの間のネットワークインフラストラクチャに設けられ、適格なアクセスポリシーを適用し、ファイルシステム要求に対して選択的に通過させる。セキュアネットワークファイルアクセス機器は、暗号鍵ストレージを保持し、暗号鍵を対応するシステムファイルと関連付けて、セキュアネットワークファイルアクセス機器を通じてネットワークデータストレージに転送されまたはそこから読み出されるファイルデータを暗号化および復号化する。
【００１７】
特許文献９（Benveniste et al.）は、情報を記憶する方法およびシステムを開示し、メインメモリ圧縮情報をメモリ圧縮ディスクに記憶することを含み、ページはメインメモリ圧縮情報を解凍することなく個別に記憶され取り出される。
【００１８】
特許文献１０（Negishi et al.）は、ネットワーク上でＮＡＳサーバとクライアントとの間に介在し、所定のクライアントから送られるＮＡＳサーバに対する操作要求を一時的に保持する、フロントエンドサーバを開示する。フロントエンドサーバは、ＮＡＳサーバで記憶されるデータファイル間の相関に関する情報を保持し、当該情報に基づいてクライアントから受信する操作要求を最適化し、ＮＡＳサーバに操作要求を送信する。
【特許文献１】米国特許第5,761,536号明細書
【特許文献２】米国特許第5,813,011号明細書
【特許文献３】米国特許第5,813,017号明細書
【特許文献４】米国特許第6,092,071号明細書
【特許文献５】米国特許第6,115,787号明細書
【特許文献６】米国特許第6,349,375号明細書
【特許文献７】米国特許第6,584,520号明細書
【特許文献８】米国特許第6,678,828号明細書
【特許文献９】米国特許出願公開第2004/030,813号明細書
【特許文献１０】米国特許出願公開第2005/021,657号明細書
【非特許文献１】"Leveraging Networked storage for your business", 2003, www.emc.com/pdf/products/networkedstorage/leveraging net storage.pdf
【非特許文献２】J. Ziv and A. Lempel, "A Universal Algorithm For Sequential Data Compression," IEEE Transactions on Information Theory, IT-23, pp. 337-343 (1997)
【発明の開示】
【００１９】
記憶および取り出し能力を損なうことなく、且つ、ユーザが圧縮／解凍操作並びに圧縮データの記憶場所を認識する必要性を有することなく、ファイルアクセスストレージシステムに使用する新しい圧縮ストレージのシステムおよび方法を提供することがこの技術において必要である。本発明は、幾つかの態様において、圧縮記憶ファイルにおけるデータへのランダムアクセスを促進し、ファイル全体を解凍することなく圧縮データの操作を可能にする新規の解決策を提供することを目的とする。
【００２０】
本発明のある態様では、ファイルアクセスストレージに使用する、圧縮ファイルの作成、読み出しおよび書き込みの方法およびシステムが提供され、上記方法およびシステムは、圧縮ファイルのデフラグを維持しながら圧縮データへの直接アクセスを促進する。
【００２１】
本発明のある態様によると、上記方法は、
原ファイルを圧縮して圧縮データを生成するステップであって、原ファイルのデータ（クラスタ）の少なくとも一つの固定サイズ部分は、順に処理されて、少なくとも一つの固定サイズ圧縮論理ユニット（ＣＬＵ）に分割される対応する圧縮セクションとされる、ステップと、
圧縮ファイルとしての圧縮データの記憶を促進するステップであって、圧縮ファイルは、原ファイルのクラスタに対応する圧縮セクションと、固有のファイル記述子を有するヘッダとを含む、ステップと、
圧縮セクションを記述する少なくとも一つのレコードを有するセクションテーブルを作成するステップであって、上記レコードは圧縮セクションに対応するＣＬＵに関する情報と上記ＣＬＵに関連する記憶場所ポインタとを少なくとも保持する、ステップと、を備える。
【００２２】
上述のように圧縮されるファイルに保存されるデータの読み出しのために、上記方法は更に、
読み出すべきデータを有する第１の圧縮セクションのシリアル番号を判定するステップと、
セクションテーブルを参照して上記圧縮セクションに対応するＣＬＵおよびその記憶場所を判定するステップと、
上記圧縮セクションからクラスタを復元するステップと、
読み出すべきデータの範囲が復元されたクラスタのサイズを超える場合には、読み出すべきデータ全てが復元されるまでステップｂ）およびｃ）を、シリアル番号を１だけインクリメントした圧縮セクションに対して繰り返すステップと、を備える。
【００２３】
上述のように圧縮されるファイルへのデータの書き込みのために、上記方法は更に、
更新されるべき（元のセクション）データを有する第１の圧縮セクションのシリアル番号を判定するステップと、
セクションテーブルを参照して上記元の圧縮セクションに対応するＣＬＵおよびその記憶場所を判定するステップと、
上記元の圧縮セクションからクラスタを復元するステップと、
上記クラスタ内の更新するデータのオフセットを計算し、要求されるデータ範囲の更新を促進するステップと、
更新された圧縮セクションに更新されたクラスタを圧縮するステップと、
上記更新された圧縮セクションで上記元の圧縮セクションの上書きを促進するステップと、
セクションテーブルを更新するステップと、
書き込むべきデータの範囲が復元されたクラスタのサイズを超える場合には、書き込むべき必要なデータ全てが復元されるまでステップｂ）乃至ｇ）を、シリアル番号を１だけインクリメントした圧縮セクションに対して繰り返すステップと、を備える。
【００２４】
本発明の更なる態様によると、この方法は、圧縮ファイルへのデータの書き込み中に解放される自由ＣＬＵのリストを扱うステップを含み、上記リストは、ファイルが閉じられるまでファイルに関連する全てのセッション中に扱われる。当該方法は、更に、上記元のＮ０と更新されたＮｕの圧縮セクションに必要なＣＬＵの数を比較し、
・Ｎ０＝Ｎｕの場合、更新された圧縮セクションに対応するＣＬＵで元の圧縮セクションに対応する全てのＣＬＵを上書きすること、
・Ｎ０＞Ｎｕの場合、更新された圧縮セクションに対応するＣＬＵで元の圧縮セクションに対応するＮｕ個のＣＬＵを上書きし、解放されるＣＬＵに関する自由ＣＬＵのリストを更新すること、
・Ｎ０＜Ｎｕ＜Ｎ０＋Ｎｆ（Ｎｆは自由ＣＬＵリスト中のＣＬＵの数）の場合、更新された圧縮セクションに対応するＣＬＵで元の圧縮セクションに対応する全てのＣＬＵを上書きし、更新された圧縮セクションに対応する残りのＣＬＵを自由ＣＬＵのリストに含まれるＣＬＵに書き込むこと、
・Ｎ０＋Ｎｆ＜Ｎｕの場合、更新された圧縮セクションに対応するＣＬＵで元の圧縮セクションに対応する全てのＣＬＵを上書きし、更新された圧縮セクションに対応するＣＬＵを自由ＣＬＵのリストに含まれるＣＬＵに書き込み、次の自由な記憶場所に更新された圧縮セクションに対応する残りのＣＬＵを連続的に書き込むこと、
のいずれかを促進することを含む。
【００２５】
本発明の更なる態様によると、この方法は、ファイルを閉じる前に自由ＣＬＵのリストを確認するステップを更に含み、空でない場合には、
・圧縮セクションに含まれるＣＬＵの中で最も高い記憶場所ポインタを有するＣＬＵ（第１のＣＬＵ）を定め、
・上記第１のＣＬＵからより低い記憶場所ポインタを有する自由ＣＬＵ（第２のＣＬＵ）への圧縮データの移動を促進し、
・上記第２のＣＬＵを関連する圧縮セクションに割り当て、上記第１のＣＬＵを自由ＣＬＵのリストに割り当て、
・圧縮セクションに含まれる全てのＣＬＵの記憶場所ポインタが自由ＣＬＵのリストに含まれるどのＣＬＵのポインタよりも低くなるまでステップｂ）−ｄ）を繰り返す。
【００２６】
本発明の更なる態様によると、記憶するためにファイルを圧縮するシステムは、
原ファイルを圧縮して圧縮データを生成するサブシステムであって、原ファイルのデータ（クラスタ）の少なくとも一つの固定サイズ部分は、順に処理されて、少なくとも一つの固定サイズ圧縮論理ユニット（ＣＬＵ）に分割される対応する圧縮セクションとされる、サブシステムと、
圧縮ファイルとしての圧縮データの記憶を促進するサブシステムであって、圧縮ファイルは原ファイルのクラスタに対応する圧縮セクションおよび固有のファイル記述子を有するヘッダとを含む、サブシステムと、
全ての圧縮セクションのレコードを有するセクションテーブルを作成するステップであって、上記レコードのそれぞれは、圧縮セクションに対応するＣＬＵに関する情報と上記ＣＬＵに関連する記憶場所ポインタとを保持する、サブシステムと、を備える。
【００２７】
本発明によるシステムは好適にプログラムされたコンピュータでもよいことは理解されるべきである。同様にして、本発明は、本発明の方法を実行するためにコンピュータによって読み出されるコンピュータプログラムに関する。本発明は、更に、本発明の方法を実行するために機械によって実行可能な命令のプログラムを明白に具現化する機械読み出し可能メモリに関する。
【発明を実施するための最良の形態】
【００２８】
本発明を理解し、それが実際にどのようにして実行されるかを知るために、添付の図面を参照して非制限的な例のみにより好ましい実施の形態を説明する。
【００２９】
以下の詳細な説明では、本発明の完全な理解を提供するために多数の特定の詳細を記載する。しかしながら、当業者には本発明がこれらの特定の詳細を有することなく実行され得ることが理解されるであろう。加えて、周知の方法、手順、構成要素および回路は、本発明の説明を不明瞭にしないよう詳細には説明しない。
【００３０】
特に記載しない限り、以下の説明から明らかとなるように、明細書中に用いる「処理」、「演算」、「計算」、「判定」等といった用語は、コンピュータまたは演算システム、あるいは、演算システムのレジスタおよび／またはメモリ内の物理的な、例えば電子的な数量によって表されるデータを、演算システムのメモリ、レジスタもしくは他の情報記憶装置または表示装置内の物理的な量として同様に表される他のデータに操作および／または変換するプロセッサまたは同様の演算装置の作用および／または処理を意味する。
【００３１】
本発明の実施の形態は、操作を実行するプロセッサ、コンピュータ、装置、システム、サブシステム、モジュール、ユニット、デバイス（単独であるいは複数で）といった用語を用いる。これは、所望の目的のために特別に構成されてもよく、あるいは、コンピュータに記憶されるコンピュータプログラムによって選択的に作動または再設定される汎用コンピュータを有してもよい。このようなコンピュータプログラムは、フロッピー（登録商標）ディスク、光学ディスク、ＣＤ−ＲＯＭ、光磁気ディスク、読み取り専用メモリ（ＲＯＭ）、電気コンピュータ読み取り可能記憶媒体にランダムアクセスメモリ（ＲＡＭ）、電気的にプログラム可能な読み取り専用メモリ（ＥＰＲＯＭ）電気的に消去可能且つプログラム可能な読み取り専用メモリ（ＥＥＰＲＯＭ）、磁気もしくは光学カードを含む全てのタイプのディスク、または、電子指示を記憶することに適し、コンピュータシステムバスに接続することができる全ての他のタイプの媒体等のコンピュータ読み取り可能記憶媒体に記憶されるが、これらに制限されない。
【００３２】
本願記載の処理／デバイス（または上述の同様の用語）および表示装置は、特に記載しない限り、如何なる特定のコンピュータまたは他の装置にも本質的に関連しない。様々な汎用システムは、本願記載の教示に応じたプログラムに使用され、または、所望の方法を実行するためにより特殊な装置を構成することが便利となる。これらの様々なシステムに対する所望の構成を以下に記載する。更に、本発明の実施の形態は、特定のプログラミング言語を参照して説明されない。様々なプログラミング言語が本願記載の本発明の教示を実行するために使用され得ることが理解されるであろう。
【００３３】
これを念頭において、技術において公知の典型的なＮＡＳストレージネットワーク構造の概略図を例示する図１に注目する。クライアント１１および／またはサーバ１２からのファイルは、ファイルストレージデバイス１４にＩＰネットワーク１３を介して転送される。ファイルストレージデバイスは、特殊ＮＡＳファイルサーバ、汎用ファイルサーバ、ＳＡＮストレージ装置、ストリームストレージ等でもよい。ＩＰネットワークは、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、その組み合わせ等でもよい。
【００３４】
図２ａを参照するに、本発明のある実施の形態によるＮＡＳストレージネットワーク構造の概略図を例示する。サーバ１２および／またはクライアント１１とファイルストレージデバイス１４との間の通信はプラットホーム２０を介する。プラットホーム２０は、一つ以上のクライアント／サーバを接続するクライアント／サーバインタフェース２１と、一つ以上のファイルストレージデバイスとのブリッジ／プロキシ接続のためのファイルストレージインタフェース２２とを備える。プラットホーム２０は、選択されたトランザクションではプロキシとして機能し、それにより、制御トランザクションに対するスループット、および、データトランザクションに対するプロキシを保持する。プラットホーム２０は、全ての物理的インタフェース（例えば、イーサネット（登録商標）、ファイバチャネル等）をサポートし、例えば、冗長性、ミラーリング、スナップショット、フェールオーバ、ロールバック、管理等のストレージデバイス特徴を保存する。プラットホームは、既存のネットワークインフラストラクチャと継ぎ目なく一体化される。以下に説明する圧縮およびアクセス機能を実施するために、典型的には、プラットホームが、ファイル自体より上の全てのレベルにおいて変更を必要としない。ユーザは、圧縮および解凍の操作並びに圧縮データの記憶場所を考慮する必要がない。
【００３５】
記憶前の圧縮されるべきファイルに対する「書き込み」操作中、クライアント１１および／またはサーバ１２からのファイルは、ネットワーク１３を通ってプラットホーム２０に流れ、プラットホームによって圧縮され、ファイルストレージデバイス１４にて書き込まれる。異なる種類のデータ（例えば、テキスト、画像、音声等）を含むファイルは、異なるアルゴリズムによって圧縮される（例えば、http://www.data-compression.com参照）。「読み出し」操作は逆方向に実行され、つまり、必要なファイルはプラットホームによって取り出され、解凍（要求されるデータ範囲に応じて部分的にあるいは全体的に）され、適当なクライアント／サーバに送られる。以下に、図３乃至図９を参照して本発明のある態様による圧縮／解凍操作を更に説明する。図２ｂは、クライアント／サーバから受信されるファイルがネットワーク１３を介して転送される前にプラットホームで圧縮され書き込まれる場合の本発明の他の実施の形態によるストレージ構造を例示する。
【００３６】
ある実施の形態では、プラットホーム２０は、暗号化、認証等のセキュリティ機能も提供する。
【００３７】
プラットホーム２０は、透過的な方法によりクライアント／サーバとファイルストレージデバイスとの間で、選択されたトランザクション（典型的には、ファイルのコピー、ファイルの削除、ファイル名を変える、スナップショット等の制御関連のトランザクション）を転送する一方で、データ関連のトランザクション（例えば、開く、閉じる、読み出し、書き込み、作成等）、および、例えば、ディレクトリリストコマンド等の幾つかの制御関連のトランザクションに介入するよう構成される。
【００３８】
本発明のある実施の形態では、プラットホームは、プラットホーム２０を介さずにファイルストレージデバイス１４に先験的に記憶される圧縮されていないファイルを圧縮するよう構成されてもよい。プラットホームは、予め定められた基準のファイルに従ってストレージデバイスから全てのまたは選択されたファイルを抽出し、それらを本発明に従って圧縮し、圧縮された形態でストレージデバイスに書き換えてもよい。
【００３９】
本発明のある実施の形態では、プラットホーム２０は、予め定められた基準（例えば、サイズ、ＩＰアドレス、ディレクトリ、ファイルタイプ）に従って選択通過したファイルだけを圧縮するよう構成されてもよい。
【００４０】
原ファイル（または、その関連部分）は、ファイルストレージデバイス１４への書き込み中または書き込み前にプラットホーム２０によって圧縮される。同様にして、ファイル（またはその関連部分）は、ファイルストレージデバイス１４からの読み出し中または読み出し後にプラットホーム２０によって解凍される。本発明の幾つかの実施の形態では、ファイルは圧縮された状態でプラットホーム２０とファイルストレージデバイス１４との間を転送され、例えば、原ファイルはプラットホーム内で圧縮されて書き込まれ、結果として生ずる圧縮ファイルがファイルストレージデバイスに更に転送される、および／または、圧縮ファイルがプラットホーム内での更なる読み出し／書き込み操作のためにファイルストレージデバイスから受信される。
【００４１】
本発明は、図１および図２を参照して説明した特定のネットワーク構造によって制限されないことに注意する。当業者には、本発明がＮＡＳ、あるいは、ＩＰまたはチャネルベースの通信を有するファイルアクセスストレージサブネットワークに基づく全てのネットワークに同様に適用可能であることが容易に理解されるであろう。プラットホーム２０（またはその一部）の機能は、幾つかのプラットホーム間で分散されている、または、他のストレージネットワーク要素（例えば、ファイルサーバ、企業スイッチ等）内で一体化されている、スタンドアローン型サーバ（図２参照）で実行されてもよい。
【００４２】
図３は、本発明のある実施の形態によるプラットホーム２０の概略的な機能ブロック図である。
【００４３】
入力／出力ブロック３１の主な機能は、ソケットハンドリングであり、同ブロックはＩＰ通信の完全性に対して責任を担う。Ｉ／Ｏブロック３１は、新しいＴＣＰパケットを受信し、それをアンパッキングし、セッションマネージャ３２に移行する。このブロック３１は、セッションマネージャからもデータを取得し、それをＴＣＰ構成にパッキングし、要求アドレスに送る。
【００４４】
セッションは、「ファイルを開く」といった要求によって開始し、同じＩＰアドレス（ユーザ）から受信する「ファイルを閉じる」といった要求によって終了する。セッションマネージャ３２は、例えば、ソースＩＰアドレス等の全てのセッションのプライベートデータ、使用中の全てのファイルインスタンス、セッションカウンタ、セッションステータス、使用中のバッファに対する全てのインスタンス等を保持する。セッションマネージャは、「ファイルブロック」も扱い、切断時に全ての関連するリソースを解放する。セッションマネージャ３２は、受信したパケットのフィルタ処理のためにディスパッチャ３３にセッションタスクをロードする。ディスパッチャは、ＣＩＦＳ／ＮＦＳマネージャ３４にＣＩＦＳ／ＮＦＳパケットを送り、全ての他のパケットを手付かずのままＩ／Ｏブロックに（セッションマネージャを介して）送り返す。ＣＩＦＳ／ＮＦＳマネージャ３４は、これに応じてＣＩＦＳおよびＮＦＳトランザクションを統合し、データ関連のトランザクション（例えば、開く、読み出す、書き込む、閉じる等）をファイルマネージャ３５に要求し、本発明のある実施の形態による圧縮／解凍操作を圧縮／解凍ブロック３７に要求する。一般的には、圧縮アルゴリズムは、圧縮効率性と性能パラメータとのトレードオフによって特徴付けられる幾つかの圧縮レベルを有する。圧縮ブロック３７は、最適圧縮レベルを選択し、入力／出力ブロック３１（および／またはＣＰＵ利用）によって現在扱われるソケットの数に圧縮比を調節する。選択された圧縮レベルの情報は、データの圧縮部分に保持される。ファイルマネージャ３５は、ファイルの完全性と操作とに対する責任を担う。ファイルマネージャ３５は、ファイルに関連する全ての要求を組み合わせて、ファイルマニピュレーションの共有を可能にする。圧縮／解凍ブロック３７は、バッファから読み出し、解凍することができ、更に、ＣＬＵＳを圧縮し書き込むことができる。メモリバッファリソースは、ＣＩＦＳ／ＮＦＳマネージャに接続されるバッファマネージャ３６によって管理される。完全性マネージャ３８は、Ｉ／Ｏブロック、セッションマネージャ、バッファマネージャおよびファイルマネージャに接続され、プラットホームにおける全ての処理の同期および全体的な制御に対する責任を担う。
【００４５】
当業者には、本発明が図３の構成によって制限されず、同等のおよび／または変更された機能が別の方法で統合あるいは分割され得ることは容易に理解されるであろう。
【００４６】
図４は、本発明のある実施の形態による原ファイルおよび圧縮ファイルの概略図である。圧縮されていない原ファイル４１は、略等しい所定のサイズを有するデータ部分４３（以降クラスタと称する）にセグメント化される。これらのクラスタは、ファイルに対する入力／出力トランザクション中に圧縮／解凍操作の原子要素として機能する。クラスタへの原ファイルのセグメント化は、圧縮処理中に「オンザフライで」提供され、所定のサイズを有する次の部分４３それぞれは圧縮を施されるクラスタを構成する。本発明のある実施の形態では、セグメント化は、圧縮前に行われてもよい。原ファイルの最後の部分のサイズは、クラスタの所定のサイズ以下でもよく、いずれの場合でも当該部分は完全なクラスタのサイズを有するかのように扱われる。クラスタのサイズは設定可能であり、クラスタがより大きいと処理オーバーヘッドがより低くなり圧縮比がより高くなり、クラスタがより小さいとアクセスがより効率的になるが処理オーバーヘッドがより高くなる。更に、クラスタのサイズは、各ファイルセッションの圧縮／解凍がメモリにおいて利用可能なクラスタを少なくとも一つ必要とし、性能が同時セッションの数を定めるため、利用可能なクラスタ利用可能なメモリと要求される性能に依存する。クラスタの数は、（原ファイルのサイズをクラスタのサイズで割算した）整数値、あるいは、余りがある場合には、それに１を加算した値に等しい。
【００４７】
代替的には、本発明のある他の実施の形態では、クラスタのサイズは、例えば、データのタイプ（例えば、テキスト、画像、音声、合成等）による所定の基準に応じて変化する。例えば、各データのタイプは、所定のサイズのクラスタを有し、圧縮中プラットホームは原ファイルの圧縮部分で優位を占めるデータのタイプに応じて適当なサイズのクラスタを選択してもよい。
【００４８】
各ファイル内クラスタ４３（例えば、図４では４３Ａ−４３Ｃ）は、対応する圧縮セクション４６’（例えば、図４では４６Ａ−４６Ｃ）に圧縮される。同じサイズを有するクラスタは、必然的に結果として、各クラスタにおけるデータの性質および圧縮アルゴリズムに依存して異なるサイズの圧縮セクションを生成する。クラスタ圧縮の比が所定の値未満である場合、圧縮ファイルにおける対応する圧縮セクションは当該クラスタからの圧縮されていないデータを有する場合もある。例えば、所与のクラスタにおける原データが元のクラスタサイズの少なくともＸ％（例えば、９５％）に圧縮されると、無視できる圧縮比により、対応するセクションは圧縮データの代わりに原クラスタデータを受けることになる。
【００４９】
本発明のある実施の形態では、圧縮処理は、適応能力を含み、内容に応じて各クラスタに最適圧縮アルゴリズム（例えば、優位を占める音声、テキスト、画像等のデータを有するクラスタに最適な異なる圧縮アルゴリズム）を提供する。
【００５０】
本発明のある実施の形態では、各圧縮ファイル４４はヘッダ４５と、幾つかの圧縮セクション４６と、セクションテーブル４７とを有する。圧縮ファイルのヘッダ４５は、固有のファイル記述子、原ファイル４１のサイズ、および、ファイルがプラットホーム２０によって処理されたか否かを示す署名（所定の値未満の取得可能な圧縮比によりプラットホームによって圧縮されていないファイルについても同様）を有する。
【００５１】
圧縮ファイル内の圧縮セクションの数は、クラスタの数に等しい。本発明のある実施の形態では、圧縮セクション４６におけるデータは所定のサイズを全て有する圧縮論理ユニット（ＣＬＵ）４８に記憶される（例えば、図４では、圧縮論理ユニット４８Ａ０−４８Ａ２はクラスタ４３Ａに対応する圧縮セクション４６Ａに対応する）。所定のＣＬＵサイズは設定可能であり、ＣＬＵがより大きいとオーバーヘッドが低くなり、ＣＬＵがより小さいと分解能がより高くなる。更に、本発明のある実施の形態では、ＣＬＵサイズは最大および／または最適ＣＩＦＳ／ＮＦＳパケット長に調節されてもよい。
【００５２】
圧縮セクション内のＣＬＵの数は、（圧縮セクションのサイズをＣＬＵのサイズで割算した）整数値、あるいは、余りがある場合には、それに１を加算した値に等しい。圧縮セクションにおける最後のＣＬＵは、部分的に満たされている（例えば、図４において４８−Ａ２、４８−Ｃ１）。このようなＣＬＵは満たされたＣＬＵと同様に扱われる。本発明のある実施の形態では、最後の圧縮セクション（例えば、図４において４８−Ｃ１によって例示される）における最後のＣＬＵは特別な方法で扱われる、即ち、部分的に満たされた場合に（以下に図９を参照して更に説明する）、正確な圧縮サイズに切られる。
【００５３】
ＣＬＵは、メモリにおいてセグメントの仮想シーケンスによって形成される圧縮ファイルの仮想部分として考えられる。ＣＬＵと割り当てられたメモリセグメントとの間の関係は、以下に図１１を参照して更に説明される。
【００５４】
セクションテーブル４７は、全ての圧縮セクション４６のレコードを有し、圧縮セクションそれぞれに対応するＣＬＵをどこで見つけるかを特定する。レコードは、各圧縮セクション（以降、セクションレコードと称する）に対して、セクションが圧縮されたか否かを示す署名、圧縮セクションの全体的なサイズ、セクションに含まれる全てのＣＬＵに関連するポインタのリストを有する。任意には、レコードは、対応するクラスタの圧縮中に使用される圧縮アルゴリズムの表示、および、クラスタのサイズ（所定の基準に対して可変）を有する。好ましくは、セクションテーブル４７は、圧縮ファイルの終わりに配置される。なぜなら、その長さはファイルのコンテンツが更新されると変化するためである（更に例示するように、セクションテーブルの長さは、圧縮セクションの数、従って、クラスタの数に比例する）。
【００５５】
図５は、例示的なファイルのセクションテーブルの典型的な構成を非制限的な例により例示する。
【００５６】
この例示的なファイル５０（更なる例でも参照する）は、元のサイズが３ＭＢ＋４１３ビットであり、所定のクラスタサイズが１Ｍであり、ＣＬＵサイズが６０Ｋである。従って、原ファイルは４個のクラスタを含む（１ＭＢのクラスタが３個と、部分的に満たされているが完全なクラスタとして扱われるクラスタが１個）。
【００５７】
ある圧縮セクションのレコード５１は、署名５２と、セクション５３のサイズと、幾つかのエントリ５４とを有する。セクションレコードの各エントリ５４は、圧縮セクションに含まれるＣＬＵの一つに関する情報を有する。セクションテーブルは、物理的な場所と論理ＣＬＵ＃との関係を有する。
【００５８】
例示的なファイル５０のクラスタは、例えば、３０１１２３、４３２１１１、１２０４２３、および、１０３４２バイトのそれぞれのサイズを有する圧縮セクションに圧縮される。ＣＬＵの長さ６０Ｋであることは６１４４０バイトを意味し、セクション＃０は５個の割り付けられたＣＬＵ（［３０１１２３／６１４４０］＋１）を有し、セクション＃１は８個の割り付けられたＣＬＵ（［４３２１１１／６１４４０］＋１）を有し、セクション＃２は２個の割り付けられたＣＬＵ（［１２０４２３／６１４４０］＋１）を有し、セクション＃３は１個の割り付けられたＣＬＵ（［１０３４２／６１４４０］＋１）を有する。合計で、圧縮ファイルは１６個のＣＬＵ（合計サイズは１５×６１４４０バイト＋１０３４２バイト）、固定長ヘッダ（例えば、署名に対する４バイト、ファイルＩＤ（固有記述子）に対する１６バイト、および元のサイズに関する情報に対する４バイト）、および、４個のセクションレコードを有するセクションテーブルを有する。
【００５９】
例示的なファイル５０は新しい圧縮ファイルとして作成された場合、ＣＬＵは順に割り付けられる。例えば、
最初に、ポインタ１、２、３、４、５を有する５個のＣＬＵがセクション０に割り付けられ、
次に、ポインタ６、７、８、９、１０、１１、１２、１３を有する８個のＣＬＵがセクション１に割り付けられ、
次に、ポインタ１４、１５を有する２個のＣＬＵがセクション２に割り付けられ、
次に、ポインタ１６を有する１個のＣＬＵがセクション３に割り付けられる。
【００６０】
ファイル内のＣＬＵの配分は更新後に変更されてもよい（以下に図８乃至図１１を参照して更に説明する）。例えば、
ポインタ１、４、５、６、９を有するＣＬＵがセクション０に割り付けられ、
ポインタ２、３、７、１０、１１、１２、１５、１４を有するＣＬＵがセクション１に割り付けられ、
ポインタ８、１３を有するＣＬＵがセクション２に割り付けられ、
ポインタ１６を有するＣＬＵがセクション３に割り付けられる。
【００６１】
（本例では、更新は圧縮セクションのサイズに対して影響を及ぼさない）。
【００６２】
ファイルが新しい圧縮ファイルとして作成されると、ＣＬＵの仮想（論理）シーケンスがＣＬＵに対応するディスクセグメントの物理的シーケンスと同じである。更新されたファイルでは、ＣＬＵの仮想（論理）シーケンスは、ＣＬＵに対応するディスクセグメントの物理的シーケンスと異なる場合もある。例えば、上述の例では、第１のクラスタの第２のＣＬＵは物理的セグメント＃２に最初に位置していたが、更新後、物理的セグメント＃４に位置する。各ＣＬＵはメモリにおけるセグメントに割り当てられ、対応するセグメントは、ＣＬＵの長さを加算しセグメントシリアル番号を乗算したヘッダ４５の長さのオフセットに書き込まれる。例えば、上述の例示的なファイルでは、第１のクラスタの第２のＣＬＵが物理的セグメント＃２に位置する場合、記憶場所メモリにおいて２×６１４４０バイトを加算したヘッダのオフセット２４バイトに書き込まれる。更新後に当該ＣＬＵが物理的セグメント＃４に位置すると、そのオフセットはヘッダに４×６１４４０バイトを加算した２４バイトとなる。
【００６３】
本発明のある実施の形態では、各セクションレコードのエントリの数は一定であり、クラスタを記憶するに必要となるＣＬＵの最大数に対応し、従って、各セクションレコードのサイズはセクションに設けられるＣＬＵの実際の数に関わらず一定であり、使用中でないエントリには特別なマークが設けられる。セクションレコードにおけるエントリの数はクラスタのサイズをＣＬＵのサイズで分割し、１を加算した整数値に等しい。
【００６４】
クラスタの所定のサイズが１ＭＢであり、ＣＬＵの所定のサイズが６０Ｋの例示的な例では、圧縮セクションの各レコードはそれぞれが４バイトを有する１７個のエントリ（１ＭＢ／６０Ｋ＋１の整数値）を有する。圧縮セクション＃０の例示するセクションレコード５０は、対応するＣＬＵの物理的な場所に関する情報、および、１２個の空のエントリ（例えば、−１とマーキングされる）を含む５個のエントリを有する。セクションレコードのサイズは７２バイトである（圧縮セクションおよび署名のサイズに関する情報に対して４バイト＋１７エントリ×４バイト）。セクションテーブルの全体的なサイズは２８８バイト（各セクションレコードに対して４圧縮セクション×７２バイト）である。
【００６５】
本発明のある実施の形態では、圧縮データはセクションテーブル４７とは別個に記憶されてもよい。セクションテーブルは、圧縮データと同じ記憶スペース内の別のファイルに、または、例えば、プラットホーム２０の、異なる、場合によっては物理的に遠隔な記憶スペースに記憶されてもよい。プラットホーム２０は、読み出し／書き込み操作中の圧縮データと対応するセクションテーブルとの間の関連付けを促進するように構成されなくてはならない。
【００６６】
図６乃至図１１は、本発明のある実施の形態による圧縮ファイルに対して実行される入力／出力操作を例示する。プラットホーム２０が、原ファイル（例えば、ＤＩＲ、ＳＴＡＴ等）のサイズに関するコマンドに介入し、対応する圧縮ファイルのヘッダのサイズを維持し、上記データを要求があると供給する。従って、例えば、ファイルサイズがＸ（原ファイルの状態）で圧縮状態（ディスクに記憶された状態）でＹ（＜Ｘ）を有するファイルを考える。特定の特徴により、ヘッダに記憶されるファイルのサイズは、Ｘ（原ファイルのサイズ）であり、ＤＩＲ、ＳＴＡＴ等のシステムコマンドを考える限り完全に透過性を維持する。
【００６７】
本発明のある実施の形態による圧縮された特定のファイルを開くための入来要求を受信すると（ユーザはファイルが圧縮されていることに気付かない場合もある）、プラットホーム２０は当該要求をＮＡＳシステム（ストレージデバイス１４）に転送し、ファイル管理に対する鍵として機能する「ハンドル」応答（または、ファイルが見つからない場合には「ヌル」）を受信する。「ハンドル」の受信に続いて、プラットホーム２０はファイルＩＤ（固有のファイル記述子）を含むヘッダ４５および対応する原ファイルのサイズを読み出す。プラットホーム２０がファイルに関連する同時のセッションが存在するか否かをファイルＩＤ毎に確認する。「ノー」である場合、プラットホームは、固有のファイル記述子と原ファイルのサイズとを含むファイルブロックを生成する。ファイルが既に使用中の場合、プラットホームは、既存のファイルブロックに追加的なセッションを追加する。「ハンドル」は、ファイル操作に対する以下の要求とプラットホームに送られるようユーザに戻される。
【００６８】
ファイルを開く操作は、圧縮ファイルのセクションテーブル４７を読み出し、ファイルに対応する全てのＣＬＵの情報を得ることを含む。ファイルが開かれた瞬間から閉じられるまで、プラットホームはファイルのＣＬＵ構成およびファイル内の全てのバイトのオフセットを認識している。
【００６９】
図６を参照するに、本発明のある実施の形態による圧縮ファイルを作成する一般化されたフローチャートを例示する。この処理は、入来作成要求によって開始される。プラットホーム２０は、ファイルストレージデバイス１４に発出要求を生成し（６０）、確認後、ファイルストレージデバイスで圧縮ファイルのヘッダに書き込み始める（６１）。図４に記載したように、ヘッダは、ファイル記述子、未圧縮の原ファイルのサイズ、および、ファイルがプラットホーム２０によって処理されたことを示す署名を含む。次のステップ（６２）では、プラットホームは、原ファイルの最初の固定サイズの部分（クラスタ）をサイズＸを有する圧縮セクションに処理する。（圧縮は、任意の適当な市販のまたは特殊なアルゴリズムの補助で提供される）。プラットホームは、第１のＣＬＵに対する最初の自由記憶場所を定め、ファイルストレージデバイスでの記憶について当該ＣＬＵおよび後続するＣＬＵへの圧縮セクションの連続的な書き込み（６３）を開始して扱い、セクションテーブルにレコードされるべき処理中に占有されるＣＬＵのポインタを準備する（６４）。プラットホームは、ファイル全体のデータが圧縮形態で書き込まれるまで次のクラスタに対して処理を繰り返し（６５）、セクションテーブルが作成される（６６）。本発明のある実施の形態では、セクションテーブルは、圧縮ファイル外で記憶されてもよい。
【００７０】
図７を参照するに、本発明のある実施の形態による圧縮ファイルに対する読み出し操作の一般化されたフローチャートが示される。
【００７１】
読み出し操作は、入力パラメータ（例えば、ファイルハンドル、シーク番号（データオフセット）、および、データ長Ｙ）および出力パラメータ（例えば、ターゲットバッファアドレス）を有する入来読み出し要求で開始される（７０）。入来読み出し要求は、オフセット（原ファイルにおける）と、読み出すデータの範囲Ｙとを識別する。プラットホーム２０は、読み出すべき第１のクラスタ（以降、開始クラスタと称する）のシリアル番号を（オフセットをクラスタで割算した）整数値、あるいは、余りがある場合には、それに１を加算した値として計算する（７１）。読み出すべきクラスタの数は、（読み出すべきデータの範囲をクラスタのサイズで割算した）整数値に１を加算した値として定義される。その結果、プラットホームは、読み出すべきクラスタに一対一に対応して圧縮セクションを定め、発出読み出し要求を生成する（７２）。要求は、圧縮ファイル（ヘッダおよびセクションテーブル）のメタデータに基づき、読み出すべき圧縮セクションに対応するＣＬＵを指す。本発明のある実施の形態では、圧縮ファイルの終わりに配置されるセクションテーブルのオフセットは、圧縮ファイルのサイズ−クラスタの数×セクションレコードの固定サイズにより簡単に計算される。
【００７２】
他の実施の形態では、プラットホームは、圧縮データと別のファイルに保存されている対応するメタデータとの間の関連付けを促進するよう構成される。
【００７３】
本発明のある実施の形態では、発出読み出し要求は、読み出すべきデータの範囲全てを特定して送られてもよい。あるいは、図７に示すように、読み出し要求全体がステップ毎に扱われ、読み出し操作に対して、プラットホームはクラスタのサイズに略等しいバッファを維持してもよい。第１の発出読み出し要求は、開始クラスタの圧縮セクションに含まれるＣＬＵに対するポインタを有する。開始クラスタに対応する圧縮セクション全体は読み出され（７３）、プラットホームによってターゲットバッファに解凍される（７４）。次のステップでは、プラットホームは、クラスタ内の要求されるオフセットを計算し（７５）、要求されるデータをコピーし（７６）、アプリケーションに送る。コピーするデータの必要な長さは次の通りに計算される。
長さ＝最小｛データ範囲Ｙ；（クラスタのサイズ−オフセットｍｏｄクラスタのサイズ）｝
【００７４】
データ範囲Ｙがクラスタのサイズを超えると、操作が繰り返される（７７）。
【００７５】
例えば、例示的なファイル５０を参照するに、要求は、オフセット１ＭＢ＋１３４０から２０バイトの長さのファイルデータを読み出すことである。読み出しは、第２のクラスタから始まり、従って、要求されるデータが二番目の圧縮セクションから始まる圧縮ファイルに含まれる。セクションテーブルのオフセットは、圧縮ファイルらクラスタの数（４）×セクションレコードのサイズ（７２バイト）として定義される。セクションテーブルにおける二番目の圧縮セクションのレコードは、ポインタ２、３、７、１０、１１、１２、１５、１４を有するＣＬＵを含む。従って、これらのＣＬＵは、プラットホーム２０における一時的なバッファに読み出され、プラットホームにおいて１ＭＢのバッファに解凍される。バッファオフセット１３４０からの２０バイトはターゲット（ユーザの）バッファに移動される。コピーするデータの必要な長さは、２０バイトである（２０バイトと（１ＭＢ−１３４０バイト）の最小値に等しい）。他の要求は同じオフセットから２ＭＢの長さのファイルデータを読み出すことである場合、操作は、三番目、四番目の圧縮セクションに対して同様に繰り返され、開始クラスタからコピーするデータの必要な長さは１ＭＢ−１３４０バイトとなる（２ＭＢと（１ＭＢ−１３４０バイト）の最小値に等しい）。
【００７６】
図８を参照するに、本発明のある実施の形態による圧縮ファイルに対する書き込み操作の一般化されたフローチャートが示される。入来書き込み要求（８０）は、オフセット（原ファイルにおける）と書き込むべきデータの範囲Ｙを識別する。プラットホーム２０は、更新されるべき（上書きすべき）一番目のクラスタのシリアル番号を（オフセットをクラスタのサイズで割算した）整数値、あるいは、余りがある場合にはそれに１を加算した値として計算する（８１）。上書きすべきクラスタの数は、（書き込むべきデータの範囲をクラスタのサイズで割算した）整数値あるいは、余りがある場合にはそれに１を加算した値として定義する。その結果、プラットホームは上書きする圧縮セクションを定め、図７を参照して説明した方法と同様に発出読み出し要求を生成する。開始クラスタに対応する圧縮セクション全体が読み出され（８２）、プラットホームによってバッファに解凍（８３）された後、プラットホームは、図７を参照して説明したように、クラスタ内の要求されるオフセットを計算（８４）し、要求されるデータ範囲を更新する（上書きする）（８５）。続いて、プラットホームは、更新されたクラスタを圧縮し（８６）、セクションテーブルを更新し、圧縮ファイルに新しい圧縮セクションを書き込む（８７）ことを要求する。データ範囲Ｙがクラスタのサイズを超える場合、操作は、後続するクラスタに対して繰り返される（８８）。処理が終わると、プラットホームはセクションテーブルを更新する（８９）。
【００７７】
上述した通り、本発明のある実施の形態では、要求されるデータの記憶場所は、直接的にアクセスされ、従って、読み出し／更新（および同様の）操作は、ファイル全体でなく必要なデータ範囲を含むクラスタだけを復元することを必要とする。
【００７８】
典型的には、ファイルの更新により、割り付けられたストレージで不使用スペースが生ずるため、断片化を生ずる。図９および図１０は、本発明のある実施の形態によるＣＬＵ管理の断片化扱いアルゴリズムを示す。図９は、本発明のある実施の形態による圧縮セクション（図８のステップ８７）に対する書き込み／更新操作中のＣＬＵ管理のアルゴリズムを示す。更新された圧縮セクションを書き込む前に、プラットホームは、更新された圧縮セクションと古い圧縮セクションに必要なＣＬＵの数を比較する（９１）。ＣＬＵの数が変化していない場合、プラットホーム２０は、古い圧縮セクションに対応する全てのＣＬＵに対して更新された圧縮セクションを順に書き込むことを要求する（９２）。要求されるＣＬＵの新しい数が古い数未満である場合、圧縮セクションは、古い圧縮セクションに対応するＣＬＵの部分に順に書き込まれる。解放されたＣＬＵに関する情報は、ファイルが閉じられるまでプラットホーム２０によって扱われる自由ＣＬＵの特別なリスト（キュー）に更新される（９３）。要求されるＣＬＵの数が古い数よりも大きい場合、圧縮セクションは古い圧縮セクションに対応する全てのＣＬＵ順に書き込まれ（９４）、続いて、自由ＣＬＵのキューから取得したＣＬＵに対して書き込まれる（９５）。更なるＣＬＵが必要な場合には、プラットホームはファイル（＃ｎ）に割り付けられた最後のＣＬＵを定め、（ｎ＋１）の数から始まるＣＬＵに対して順に書き込むことを要求し（９６）、割り付けられたＣＬＵのリストはこれに応じて更新される（９７）。
【００７９】
本発明のある実施の形態では、最後の圧縮セクション（図４の４８−Ｃ１によって示される）における最後のＣＬＵは、特別な方法で扱われ、即ち、部分的に満たされている場合に正確な圧縮サイズに切られる。セクションテーブルは、ヘッダ長＋（Ｎ−１）×ＣＬＵサイズ＋ＳＬのオフセットに対して書き込まれ、このとき、Ｎは割り付けられたＣＬＵの合計であり、ＳＬは最後のＣＬＵにおける圧縮データのサイズである。
【００８０】
図１０は、本発明のある実施の形態による、ファイルを閉じる操作中のＣＬＵ管理のアルゴリズムを示す。
【００８１】
ファイルを閉じる（１０２）前に、プラットホームは、自由ＣＬＵのリストが空か否かを確認する（１０１）。リスト中にまだＣＬＵが存在する場合、プラットホーム２０は使用中のＣＬＵの中から最も高い記憶場所ポインタを有するＣＬＵを定める。上記ＣＬＵに含まれる圧縮データは、より低いポインタで自由ＣＬＵに転送され（１０３）、空になったＣＬＵは自由ＣＬＵのリストに追加される。当該処理は、使用中のＣＬＵの全てのポインタが自由ＣＬＵのリストにあるどのＣＬＵのポインタよりも低くなるまで繰り返される（１０４）。セクションテーブルは、これに応じて更新される（１０５）。このような更新は、上記ＣＬＵの書き換え毎に、書き換え処理全体の終わりで、または、他の所定の基準に応じて行われる。処理が終わると、ファイルは閉じられ、自由ＣＬＵは解放される（１０６）。上述の処理に対する自由ＣＬＵの選択は、異なるアルゴリズムに従って提供されてもよい。例えば、本発明のある実施の形態では、最も高い記憶場所ポインタを有するＣＬＵからの上記圧縮データは、最も低い記憶場所ポインタを有する自由ＣＬＵに転送されてもよい。
【００８２】
図１１ａ乃至図１１ｃを参照するに、本発明のある実施の形態によるＣＬＵと割り当てられたディスクメモリセグメントとの間の関係が示される。図１１ａは、新しい圧縮ファイルとして作成されたときの図５に示す例示的なファイル５０を示す。ＣＬＵの仮想（論理）シーケンスは、ＣＬＵに対応するディスクセグメントの物理的シーケンスと同じである（ＣＬＵ内の数は対応するディスクメモリセグメントへのポインタを示す）。図１１ｂは、図５を参照して説明した更新された例示的なファイルのように圧縮セクションのサイズが変更されていない更新された圧縮ファイル内のＣＬＵの新しい配分を示す。ＣＬＵの仮想（論理）シーケンスは、ファイルのデフラグ構成（de-fragmented structure）を維持しつつ、ＣＬＵに対応するディスクセグメントの物理的なシーケンスとは異なる。図１１ｃは、更新された例示的な圧縮ファイル５０内のＣＬＵのデフラグ配分を示し、二番目の圧縮セクションのサイズは４３２１１１から２００１００バイトへの更新後に変更されている。例えば、更新オフセットが１ＭＢ＋３１４バイトの場合、第１の圧縮セクションは更新中に影響を及ぼされない。二番目の圧縮セクションの新しいサイズは、４ＣＬＵ（「２００１００／６１４４０」＋１）の割り付けだけを必要とする。ここで、図１１ｂに示すように、更新前には、第２の圧縮セクションは８個のＣＬＵ（番号２、３、７、１０、１１、１２、１５および１６）を収容している。図９を参照して説明したように、プラットホーム２０は、圧縮セクション（本例では２、３、７、１０）から最初の４個のＣＬＵに対して更新された二番目の圧縮セクションを書き込み、ポインタ１１、１２、１５および１６を有するＣＬＵを自由ＣＬＵのリストに送る。三番目および四番目の圧縮セクションもこの特定の更新中は影響を及ぼされない。図１０を参照して説明したように、プラットホーム２０は、ファイルを閉じる前に自由ＣＬＵのリストが空か否かを確認する。本例では、リストは、記憶場所ポインタ１１、１２、１５および１６を有するＣＬＵを含む。図１０を参照して説明したように、プラットホームは、ポインタ１３を有するＣＬＵからポインタ１１を有するＣＬＵに圧縮データを書き換え、ポインタ１６を有するＣＬＵからポインタ１２を有するＣＬＵに圧縮データを書き換え、ポインタ１３乃至１６を有するＣＬＵを解放する。従って、更新されたファイルは、デフラグのない１２個の割り付けられたＣＬＵを有する。
【００８３】
本発明は、図６乃至図１１を参照して説明したプラットホーム１２とストレージデバイス１４との間の特定の入来／発出通信に限定されないことに注意する。当業者には、本発明がネットワーク構造およびプラットホーム２０の機能の実行方法によって全ての他の通信にも同様に適用可能であることが理解されるであろう。例えば、圧縮ファイルが内部プラットホームリソースに書き込まれおよび／または読み出される場合、発出要求を生成する必要はない。同様にして、プラットホーム機能がストレージリソースと一体化されている場合には発出要求の必要性はない。追加的な要件（例えば、確実なアクセス、データ保全性等）は、プラットホームとファイルストレージデバイスとの間の通信並びにネットワークリソース全体をより複雑にする。
【００８４】
本発明は、本願に記載するあるいは図面に例示する説明にその適用が制限されないことは理解されるであろう。本発明の他の実施の形態も可能であり、様々な方法で実行され実施されてもよい。従って、本願で用いる表現および用語が、説明目的であり、制限的として解釈されてはならない。当業者には、本開示が基づく概念が、本発明の幾つかの目的を実行するための他の構成、方法およびシステムを設計する基礎となることは理解されるであろう。
【００８５】
当業者には、添付の特許請求の範囲に定められる範囲から逸脱することなく上述の説明したような本発明の実施の形態に様々な変更および変化が行われてもよいことは容易に理解されるであろう。
【図面の簡単な説明】
【００８６】
【図１】当該技術において公知の典型的なＮＡＳストレージネットワーク構造の概略的なブロック図
【図２ａ】本発明のある実施の形態によるＮＡＳストレージネットワーク構造の概略的なブロック図
【図２ｂ】本発明のある実施の形態によるＮＡＳストレージネットワーク構造の概略的なブロック図
【図３】本発明のある実施の形態によるシステム機能構造の概略的なブロック図
【図４】本発明のある実施の形態による原ファイルおよび圧縮ファイルの略図
【図５】本発明のある実施の形態によるセクションテーブルの例示的な構成を示す図
【図６】本発明のある実施の形態による圧縮ファイルを作成する操作の一般化されたフローチャート
【図７】本発明のある実施の形態による圧縮ファイルに対する読み出し操作の一般化されたフローチャート
【図８】本発明のある実施の形態による圧縮ファイルに対する書き込み操作の一般化されたフローチャート
【図９】本発明のある実施の形態による圧縮セクションに対する書き込み操作のシーケンスを例示する一般化されたフローチャート
【図１０】ファイルに対する閉じる操作中のＣＬＵ管理の一般化されたフローチャート
【図１１ａ】本発明のある実施の形態によるＣＬＵと割り当てられたディスクメモリセグメントとの間の関係を示す略図
【図１１ｂ】本発明のある実施の形態によるＣＬＵと割り当てられたディスクメモリセグメントとの間の関係を示す略図
【図１１ｃ】本発明のある実施の形態によるＣＬＵと割り当てられたディスクメモリセグメントとの間の関係を示す略図
【図１】
2007535068.tif 000003
【図２ａ】
2007535068.tif 000004
【図２ｂ】
2007535068.tif 000005
【図３】
2007535068.tif 000006
【図４】
2007535068.tif 000007
【図５】
2007535068.tif 000008
【図６】
2007535068.tif 000009
【図７】
2007535068.tif 000010
【図８】
2007535068.tif 000011
【図９】
2007535068.tif 000012
【図１０】
2007535068.tif 000013
【図１１ａ】
2007535068.tif 000014
【図１１ｂ】
2007535068.tif 000015
【図１１ｃ】
2007535068.tif 000016
【国際調査報告】
2007535068.tif 000017
2007535068.tif 000018