(57)【特許請求の範囲】
【請求項１】
１以上のストレージプロトコルで動作可能なストレージ装置内に保存するために論理データオブジェクトを変換する方法において、
各リクエストに応じて、前記ストレージ装置内にヘッダと所定サイズの複数の収容セクションとを有する変換済み論理データオブジェクトを生成するステップと、
多様なサイズを有し前記変換済み論理データオブジェクトに対応する複数のデータチャンクを受信するステップと、
前記複数のデータチャンクを処理するステップであって、前記処理は前記複数のデータチャンクの各々を圧縮して複数の平文の圧縮データチャンクを得るステップと、さらに前記複数の平文の圧縮データチャンクの各々を暗号化して複数の処理済みデータチャンクを作成するステップとを含む、ステップと、
前記複数の変換済みデータチャンクを前記複数の収容セクションに、前記複数のデータチャンクが受信された順番で連続的に収容するステップと、
変換された前記論理データオブジェクトと前記複数の収容セクションに収容されたデータ間のマッピングを行うステップとを含み、
前記圧縮は、適応型辞書（adaptive dictionary）の補助で提供され、同じ収容セクションに収容された複数の処理済みデータチャンクは同じ辞書の補助で圧縮され同じ鍵の補助で暗号化されることを特徴とする方法。
【請求項２】
請求項１記載の方法において、前記暗号化と圧縮の処理は同時に統合され、協働して自律的に命令のセットを実行し、処理のシーケンスの保存および複数の処理済みデータチャンクの収容を容易にする方法で提供されることを特徴とする方法。
【請求項３】
請求項１記載の方法において、前記マッピングは、前記変換済み論理データオブジェクトの一部を構成する１以上のインデックスセクションの補助で提供され、前記インデックスセクションは少なくとも、１以上の収容セクションに収容された複数の処理済みデータチャンクに関する情報と、前記複数の収容セクションに関する物理的な保存場所のインジケーションとを保持する１以上のエントリを含むことを特徴とする方法。
【請求項４】
請求項１記載の方法において、所定のサイズは、前記複数の収容セクションの各々と等しいことを特徴とする方法。
【請求項５】
請求項１記載の方法において、前記複数の収容セクションの各々のサイズは、所定の条件に基づいて所定のサイズのリストから選択されることを特徴とする方法。
【請求項６】
請求項１記載の方法において、前記変換済み論理データオブジェクトのヘッダは、前記変換済み論理データオブジェクトのユニークな識別子と、前記変換済み論理データオブジェクトのサイズに関する情報とを含むことを特徴とする方法。
【請求項７】
請求項１記載の方法において、前記複数の処理済みデータチャンクは、ログ形式で収容されることを特徴とする方法。
【請求項８】
請求項７記載の方法において、処理済みデータチャンクのログは、変換済み論理データオブジェクト内の処理済みデータチャンクのオフセットに関する情報を含むログヘッダと、前記処理済みデータチャンクのサイズと、前記ログとこのログを収容する収容セクションを結びつける識別子とを具えることを特徴とする方法。
【請求項９】
請求項７記載の方法において、前記変換済み論理データオブジェクトは、１以上のインデックスセクションを具え、当該セクションは１以上の収容セクションに関連する１以上のエントリを具え、前記エントリは前記１以上の収容セクションの物理的な保存場所への１以上のインジケータと前記複数の収容セクションに収容された各ログに関する１以上のログレコードとを具え、前記処理済み論理データオブジェクト内のデータと前記収容セクションに収容されたデータ間のマッピングを容易にする情報を具えることを特徴とする方法。
【請求項１０】
請求項１記載の方法において、各収容セクションは、前記収容セクションのそれぞれの物理的な位置の使用／再使用状態を示すフラグを伴い、各処理済みデータチャンクは、当該処理済みデータチャンクを収容する収容セクションと同じフラグを伴うことを特徴とする方法。
【請求項１１】
請求項３記載の方法において、前記変換済み論理データオブジェクトが第１のインデックスセクションへのインジケータを含み、各インデックスセクションは、もしある場合に次の連続するインデックスセクションへのインジケータを含むことを特徴とする方法。
【請求項１２】
請求項１の方法の各ステップを実行するよう構成されたことを特徴とする、ストレージネットワークで動作する通信機器。
【請求項１３】
請求項１の方法の各ステップを実行するよう構成されたことを特徴とする、ストレージネットワークで動作するストレージ装置。
【請求項１４】
システムに機能的に接続されたストレージ装置に保存するために論理データオブジェクトを変換しうるシステムであって、請求項１の方法の各ステップを実行するよう構成されたことを特徴とするシステム。
【請求項１５】
請求項１の方法に従って作成される変換済み論理データオブジェクトにデータ範囲を書き込む方法であって、
各リクエストに応じて、前記複数のチャンクを圧縮して複数の平文の圧縮データ着を得て、さらに前記複数の平文の圧縮チャンクを暗号化して複数の処理済みデータチャンクを作成するステップと、
前記複数の処理済みデータチャンクを、これらとその前に収容するために受け取った処理済みデータチャンクの順番に従って連続的に収容するステップと、
前記マッピングを、前記範囲内のデータと前記変換済み論理オブジェクトに収容された前記複数の処理済みデータチャンクから読み出されるデータとの一対一の関係を実現する方法で更新するステップとを具えることを特徴とする方法。
【請求項１６】
請求項１５記載の方法において、アクティブな収容セクションに含まれる空きスペースに依存して、新たな処理済みデータチャンクがアクティブな収容セクションおよび／または新たな収容セクションに収容されることを特徴とする方法。
【請求項１７】
請求項１５記載の方法において、前記マッピングを更新するステップが、
ａ）すべての新規な処理済みデータチャンクに関する情報を追加するステップであって、前記情報は処理済みの各データチャンクのオフセットとサイズに関するステップと、
ｂ）前記範囲に対応するデータのライブおよび／または古いかに関する前に取得された情報を更新するステップとを具えることを特徴とする方法。
【請求項１８】
請求項３の方法に従って作成される変換済み論理オブジェクトからデータ範囲を読み出す方法であって、
各リクエストに応じて、前記範囲内のデータに関するインデックスセクション内で作成されおよび／または最後に更新されたすべてのエントリを検出するステップと、
前記検出されたエントリに対応する前記複数の収容セクションの１つを逆変換し、前記エントリから提供されるマッピングに応じて読み出すべきデータを抽出するステップと、
前記範囲からすべてのデータを抽出するまで、前記検出されたエントリに対応する前記複数の収容セクション内の１またはそれ以上の収容セクションについて前記逆変換を繰り返すステップと、
前記抽出したデータを前記範囲における順番にしたがって配列するステップとを具えることを特徴とする方法。
【請求項１９】
少なくとも１のストレージプロトコルで動作するストレージ装置内に保存するために論理データオブジェクトを変換しうるシステムであって、
ヘッダと複数の予め規定されたサイズの収容セクションとを具える変換済み論理データオブジェクトを前記ストレージ装置内に作成する手段と、
多様なサイズを有し前記変換済み論理データオブジェクトに対応する複数のデータチャンクを受信する手段と、
前記複数のデータチャンクの各々を処理する手段であって、前記処理は前記複数のデータチャンクの各々を圧縮して複数の平文の圧縮データチャンクを得るステップと、さらに前記複数の平文の圧縮データチャンクの各々を暗号化して複数の処理済みデータチャンクを作成するステップとを含む、手段と、
前記処理済みデータチャンクを前記複数の収容セクションに、前記データチャンクが受信された順番で連続的に収容するのを容易にする手段と、
前記論理データオブジェクト内のデータと前記複数の収容セクションに収容されたデータ間のマッピングを行う手段とを具え、
前記圧縮は、適応型辞書（adaptive dictionary）の補助で提供され、同じ収容セクションに収容された複数の処理済みデータチャンクは同じ辞書の補助で圧縮され同じ鍵の補助で暗号化されることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算システムに関し、特に、演算システムおよびそのネットワークに保存されるべき論理データオブジェクトを変換しうる方法およびシステムに関する。
【背景技術】
【０００２】
現在のビジネス環境では、ビジネスの成功には全種類のビジネスデータがより一層重要なものとなっている。ビジネスで生成されたデータの圧倒的な成長や複雑さが情報ストレージの要求となり、これが情報資産のシェアリング、管理、および保護の方法を規定する。
【０００３】
通常、単一の技術または設計では、様々な組織の要求のすべてに対処できない。主ストレージが、例えば、ＥＭＣによるWhite Paper "Leveraging Networked storage for your business"、２００３年３月、米国、に開示されており、これは基本的にデータがアクセスされる位置、接続タイプ（イントラ−コンピュータストレージ、ダイレクトアタッチドストレージ（ＤＡＳ）、ＩＰ、チャネルネットワーク等）、および方法により規定される。ストレージ設計にはデータアクセス方法に関して考慮すべき３つの基本タイプがある：ブロックアクセス、ファイルアクセス、オブジェクトアクセスである。
【０００４】
ブロックモードアクセス構造では、サーバ／クライアントとストレージ媒体間の通信はブロック毎に行われる：情報はディスクからブロックごとに直接抽出される。管理システムがディスク状の情報の各ピースがどこにあるかのトラックを保持し、一方でストレージ媒体は通常、デバイス上のデータを管理するのに用いられるファイルシステムを自覚しない。データの読み込みや更新が必要になったら、データは、データの各ブロックがディスク上のどこにあるかとアクセス方法を知るプロセッサにより、ディスクから直接アクセスされる。ブロックモードアクセスストレージ技術の例はＤＡＳ（ダイレクトアタッチドストレージ）、ＳＡＮ（ストレージエリアネットワーク）、ブロックストレージオーバーＩＰ（例えばＦＣＩＰ、ｉＦＣＰ、ｉＳＣＳＩ等）、イントラメモリストレージ等である。
【０００５】
ファイルアクセスには、サーバかクライアントが物理的な位置ではなく名前でファイルを要求する必要がある。結果として、ストレージ媒体（外部ストレージ装置またはコンピュータ内のストレージユニット）は通常、ファイルシステムの作成、維持、更新のためにデータブロックごとにファイルをマッピングする機能を有し、このブロックアクセスは「舞台裏」で行われる。ファイルアクセスストレージ技術の例は、ＮＡＳ（ＮＦＳ、ＣＩＦＳ、ＨＴＴＰ等のプロトコルを有するネットワークアタッチドストレージ）、ＭＰＦＳ（マルチパスファイル管理）、イントラコンピュータファイルストレージ等である。このファイルアクセスストレージは、例えば、汎用ファイル、ウェブアプリケーション、エンジニアリングアプリケーション（例えばＣＡＤ、ＣＡＭ、ソフトウェア開発等）、イメージングと３Ｄデータ処理、マルチメディアストリーミング等のために実装される。
【０００６】
オブジェクトアクセスは、ブロック、ファイル、およびアプリケーションからのストレージトポロジの詳細のすべてを隠すことによりデータアクセスをさらに単純化する。このオブジェクトアクセスは、コンテンツ管理アプリケーションにおいてＡＰＩ統合により生じる。オブジェクトアクセスストレージ技術の例は、ＣＡＳ（コンテンツアドレスドストレージ）である。
【０００７】
論理データオブジェクト（データファイル、イメージファイル、データブロック等）は、送信および／または保存のために変換される。この変換は、圧縮、暗号化、符号化、転換等、および／またはこれらの組み合わせを含む。例えば、データ圧縮技術を用いて保存や送信されるデータの量を減らして、ストレージ容量や転送時間をそれぞれ低減したりできる。圧縮は異なる圧縮アルゴリズムを用いて実現でき、例えば、J. ZivとA. Lempelによる「A Universal Algorithm For Sequential Data Compression」IEEE Transactions on Information Theory, IT-23, pp 337-343 (1997)に記載のような標準的な圧縮アルゴリズムがある。
【０００８】
データ保存用の圧縮や保存データへのアクセスのさまざまな実装が、例えば以下の特許文献に開示されている：
米国特許番号５，８１３，０１１（Yoshida et al.）「Storage of a compressed file containing its own compression omanagement table」；
米国特許番号５，８１３，０１７（Morris et al.）「System and method for reducing storage requirement in backup subsystems utilizing segmented compression and diffrencing」；
米国特許番号５，９５６，５０４（Jagadish et al.）「Method and system for compressing a data stream in a database log so as to permit recovery of only selected portions of the data stream」；
米国特許番号６，０９２，０７１（Bolan et al.）「Dedicated input/output processor method and apparatus for access and storage of compressed data」；
米国特許番号６，１１５，７８７（Obara et al.）「Disc storage system having cache memory which stores compressed data」；
米国特許番号６，３４９，３７５（Faulkner et al.）「Compression of data in read only storage and embedded systems」；
米国特許番号６，４４９，６８９（Corcoran et al.）「System and method for efficiently storing compressed data on a hard disk drive」；
米国特許番号６，５３２，１２１（Rust et al.）「Compression algorithm with embedded meta-data for partial record operation augmented with expansion joints」；
米国特許出願番号２００２／０７８２４１（Vidal et al.）「Method of accelerating media transfer」；
米国特許出願番号２００４／０３０，８１３（Benveniste et al.）「Method and system for storing memory compressed data onto memory compressed disks」；
米国特許出願番号２００４／０５４，８５８（Sashikanth et al.）「Method and mechanism for on-line data compression and in-place updates」；
米国特許出願番号２００６／２３０，０１４（Amit et al.）「Method and system for compression of files for storage and operation on compressed files」；
米国特許出願番号２００６／１９０，６４３（Amit et al.）「Method and system for compression of data for block mode access storage」
【０００９】
平文で保存されたデータは潜在的に不正利用（例えば不正アクセス、不正使用、盗用等）可能であり、この分野で知られる境界および／またはアクセス管理の解決策（例えばファイアウォール、仮想プライベートネットワーク、ＬＵＮ、マスキング制御、およびＳＡＮストレージネットワークにおけるゾーニング）は未だセキュリティの脆弱性を有する。保存されるデータを符号化するとセキュリティの驚異を低減すると考えられるが、このような符号化はこの分野で知られる異なるアルゴリズムを用いて提供される。データのアクセス性と管理性への影響を最小限とする保存データの符号化を用いる場合の問題は従来技術で認識されており、例えば以下の多様なシステムが解決策を提供すべく開発されている：
米国特許番号５，２３５，６４１（Kakuse et al.）「File encryption method and file cryptographic system」；
米国特許出願番号２００４／１５３，６４２（Avida et al.）「Encryption based security system for network storage」；
米国特許出願番号２００５／２０４，１５４（Osaki et al.）「Method and apparatus for cryptographic conversion in a data storage system」；
【００１０】
論理データオブジェクトの圧縮とその符号化を組み合わせた問題もまた従来技術で認識されており、以下の多様なシステムが解決策として提供されている：
米国特許番号５，２８５，４９７（Thatcher）「Methods and apparatus for scrambling and unscrambling compressed data streams」；
米国特許番号６，１２２，３７８（Yoshiura et al.）「Method and device for compressing and ciphering data」；
米国特許番号６，１５４，５４２（Crandall）「Method and apparatus for simultaneously encrypting and compressing data」；
米国特許番号６，１５７，７２０（Yoshiura et al.）「Method and apparatus for encrypting data」；
米国特許出願番号２００４／２１８，７６０（Chaudhuri）「System and method for data encryption and compression」；
米国特許出願番号２００４／２６４，６９８（Oda）「Data encrypting device, data decoding device, image data storing device and image forming apparatus」；
ドイツ特許出願２，３１５，５７５（Mansour et al.）「Encryption circuit in I/O subsystem」
【発明の概要】
【００１１】
本発明の特定の態様によると、１以上のストレージプロトコルおよびそのシステムを備えるストレージ装置に保存される未処理の論理データオブジェクトを圧縮する方法が提供される。この方法は：
−各リクエストに応じて、ヘッダと１以上の予め規定されたサイズに割り当てられた圧縮セクションとを具える圧縮された論理データオブジェクトをストレージ装置内に作成するステップと；
−１またはそれ以上の連続的に取得される、前記未処理の圧縮論理データオブジェクトに対応する未処理データのチャンク（chunks）を処理して処理済みデータチャンクを生成するステップであって、前記処理済みデータチャンクは前記処理の結果物である圧縮データを含むステップと；
−前記処理済みデータチャンクを、前記チャンクが受け取られた順番に従って前記圧縮セクションに連続的に収容するステップと；
−前記未処理の論理データオブジェクトと前記圧縮セクションに収容されたデータ間のマッピングを促進するステップとを具える。
【００１２】
本発明のさらなる態様によると、前記マッピングは、前記圧縮論理データオブジェクトの一部を構成する１以上のインデックスセクションの補助で提供され、前記インデックスセクションは、１以上の圧縮セクションに収容された処理済みデータチャンクと、前記圧縮セクションに関する物理ストレージの位置の指示とに関する情報を少なくとも有する１以上のエントリを具える。
【００１３】
本発明のさらなる態様によると、前記圧縮は、適応性の辞書の補助で提供され、同じ圧縮セクションに収容されたデータチャンクは同じ辞書の補助で圧縮される。異なる圧縮セクションに収容されたデータチャンクは、異なる辞書の補助で圧縮される。
【００１４】
本発明のさらなる態様によると、処理済みデータチャンクはすべて、各圧縮動作をリセットすることなく各ストレージバッファに流される（flush）べき各処理のペンディングの出力をすべて実行（enabling）するように、前記ストレージの位置へ移動される。
【００１５】
本発明のさらなる態様によると、前記処理済みデータチャンクはログ形式で収容され、ここで処理済みデータチャンクのログは、未処理論理データオブジェクト内の未処理データチャンクのオフセット（offset）に関する情報を含むログヘッダと、前記未処理チャンクのサイズと、前記ログとこのログを収容する圧縮セクションの関係を示す識別子とを具える。
【００１６】
本発明のさらなる態様によると、前記インデックスセクションは、１以上の圧縮セクションに関連する１以上のエントリを具え、前記エントリは、前記圧縮セクションの物理的なストレージ位置へのインジケータ（indicator）と、前記圧縮セクションに収容された各ログに関する１またはそれ以上のログレコードとを具え、さらに前記未処理論理データオブジェクトと前記圧縮セクションに収容されたデータ間のマッピングを促進する情報を具える。
【００１７】
本発明のさらなる態様によると、各圧縮セクションは、前記圧縮セクションのそれぞれの物理的な位置の使用／再使用状態を示すフラグを伴い、各処理済みデータチャンクは、当該チャンクを収容する圧縮セクションについて同じフラグを伴う。
【００１８】
本発明の他の態様によると、圧縮論理データオブジェクトにデータ範囲を書き込む方法が提供され、この方法は：
−各リクエストに応じて、前記データ範囲に対応する未処理データの１またはそれ以上の連続的に取得されるチャンクを処理するステップであって、ここで処理されるデータチャンクの１以上が前記処理により得られる圧縮データを含むステップと、
−前記処理済みデータチャンクを、これらとその前に受け取ったチャンクの順番に従って連続的に収容するステップと、
−前記マッピングを、前記範囲内のデータと前記圧縮論理オブジェクトに収容された前記データチャンクから読み出されるデータとの一対一の関係を促進する方法で更新するステップとを具える。
【００１９】
本発明のさらなる態様によると、前記インデックスセクションを更新する方法が：
−すべての新規なデータチャンクに関する情報を追加するステップであって、前記情報は未処理の各データチャンクのオフセットとサイズに関するステップと、
−前に取得された生存に関する情報および／または前記範囲に対応する古いデータを更新するステップとを具える。
【００２０】
本発明のさらなる態様によると、圧縮論理オブジェクトからのデータ範囲を読み出す方法が提供され、この方法は：
−各リクエストに応じて、作成されおよび／または前記範囲内のデータに関するインデックスセクション内で最後に更新されたすべてのエントリを検出するステップと；
−前記検出されたエントリに対応する前記圧縮セクションの１つを解凍し、前記エントリから提供されるマッピングに応じて読み出すべきデータを抽出するステップと；
−前記範囲からすべてのデータを抽出するまで、前記検出されたエントリに対応する１またはそれ以上の圧縮セクションについて上記ステップを繰り返すステップと；
−前記抽出したデータを前記範囲における順番にしたがって配列するステップとを具える。
【００２１】
本発明のさらなる態様によると、圧縮論理データオブジェクトの最適化方法が提供され、この方法は：
−所定のパーセント以上の古いデータを含む１またはそれ以上の圧縮セクションを特定し、古い圧縮セクションとするステップと；
−前記特定された古いセクションを解凍しライブデータを抽出するステップと；
−前記抽出したライブデータを圧縮して１またはそれ以上の新たな処理済みチャンクとしてアクティブセクションに連続的に収容するステップと；
−前記古い圧縮セクションを前記圧縮論理データオブジェクトから解放するステップとを具える。
【００２２】
本発明の別の態様によると、圧縮論理データオブジェクトのリカバリ方法が提供され、この方法は：
−論理データオブジェクトを開くときにリカバリステータスを認識したらリカバリ処理を開始するステップと；
−変換された論理オブジェクトを１またはそれ以上のマッピングされていない圧縮セクションを検出すべく検証するステップであって、前記マッピングされていない圧縮セクションは１以上のマッピングされていない処理済みデータチャンクを具えるステップと；
−最後に処理されたデータチャンクから開始して反対のフラグのデータチャンクが見つかるまで、前記マッピングされていない圧縮セクションに含まれる前記処理済みデータチャンクを逆の順序で連続的に解凍するステップと；
−前記解凍されたチャンクを再処理するステップと；
−前記処理済み解凍データチャンクに対応する１またはそれ以上のエントリでインデックスセクションを作成するステップと；
−リカバリ成功の表示を提供するステップとを具える。
【００２３】
本発明の別の態様によると、少なくとも１のストレージプロトコルで動作するストレージ装置内に未処理論理データオブジェクトを保存すべく圧縮する方法が提供され、この方法は：
−各リクエストに応じて、ヘッダと１以上の予め規定されたサイズに割り当てられた圧縮セクションとを具える圧縮された論理データオブジェクトを前記ストレージ装置内に作成するステップと；
−１またはそれ以上の連続的に取得される、前記未処理の圧縮論理データオブジェクトに対応する未処理データのチャンク（chunks）を圧縮して処理済みデータチャンクを生成するステップと；
−この処理済みデータチャンクを、前記チャンクが受け取られた順番に従って前記圧縮セクションに連続的に収容するステップであって、前記圧縮セクションは前記論理データオブジェクトの入出力トランザクションにおける圧縮／解凍動作の原子要素であるステップとを具える。
【００２４】
前記方法はさらに、各圧縮セクションが、解凍されたら前記圧縮により得られるデータと、前記圧縮で得られる前記セクションに収容された各未処理データチャンク内のデータとの実質的な同一となるようにするステップを具える。
【００２５】
本発明の別の態様によると、ストレージネットワークで運用可能であり上記方法を実行するよう構成されたシステムが提供される。このシステムは、通信装置、ストレージ装置、および、保存用に未処理論理データオブジェクトを圧縮でき直列方法で前記ストレージ装置に機能的に連結されたスタンドアロン型システムであって保存データに関して透過型ブリッジとして動作するシステム、等の一部であってよい。
【００２６】
本発明の別の態様によると、少なくとも１のストレージプロトコルで動作するストレージ装置内に未処理論理データオブジェクトを保存すべく圧縮しうるシステムが提供され、このシステムは、
−ヘッダと１以上の予め規定されたサイズに割り当てられた圧縮セクションとを具える圧縮された論理データオブジェクトを前記ストレージ装置内に作成する手段と；
−１またはそれ以上の連続的に取得される、前記未処理の圧縮論理データオブジェクトに対応する未処理データのチャンク（chunks）を処理して処理済みデータチャンクを生成する手段であって、前記処理済みデータチャンクの少なくとも１は前記処理の結果物である圧縮データを含む手段と；
−前記処理済みデータチャンクを、前記チャンクが受け取られた順番に従って前記圧縮セクションに連続的に収容するステップと；
−前記未処理の論理データオブジェクトと前記圧縮セクションに収容されたデータ間のマッピングを促進する手段とを具える。
【図面の簡単な説明】
【００２７】
本発明を理解し、どのように実施されるかを見るために、非限定的な例としてのみ、いくつかの実施例について添付の図面を参照しながら以下に説明する。
【図１】図１は、従来技術としての典型的なストレージネットワーク構造の概略ブロック図である。
【図２】図２ａ、２ｂは、本発明の特定の実施例にかかる未処理かつ圧縮された論理データオブジェクトの概略図である。
【図３】図３ａ、３ｂは、本発明の特定の実施例にかかる平文と暗号化された論理データオブジェクトの概略図である。
【図４】図４ａ−４ｄは、本発明の特定の実施例にかかる、オリジナルと圧縮／暗号化された論理データオブジェクトを示す概略図である。
【図５】図５は、本発明の特定の実施例にかかる論理データオブジェクト変換を示す概略図である。
【図６】図６ａ、６ｂは、本発明の特定の実施例にかかる論理データオブジェクトの更新と変換を示す概略図である。
【図７】図７は、本発明の特定の実施例にかかる、変換された論理データオブジェクトを作成する汎用フローチャートである。
【図８】図８は、本発明の特定の実施例にかかる処理済み論理データオブジェクトが変換されていない形態と変換された形態で収容された概略図である。
【図９】図９は、本発明の特定の実施例にかかる変換済み論理データオブジェクトの書き込み動作の汎用フローチャートである。
【図１０】図１０は、本発明の特定の実施例にかかる変換済み論理データオブジェクトの読み出し動作の汎用フローチャートである。
【図１１】図１１ａは、本発明の特定の実施例にかかる特定の時間における読み出し動作を一般化したフローチャートである。図１１ｂは、本発明の特定の実施例にかかる、他無スタンプを有するインデックスセクションの概略図である。
【図１２】図１２ａ、１２ｂは、本発明の特定の実施例にかかる符号化変換の非限定的な例の概略図である。
【図１３】図１３は、本発明の特定の実施例にかかる変換システムの機能的ブロック概略図である。
【発明を実施するための形態】
【００２８】
以下の詳細な説明において、多くの具体的な詳細が本発明の完全な理解を得るために記載される。しかしながら、当業者であれば本発明はこれらの特定の詳細なしに実施しうることを理解するであろう。別の例では、公知の方法、処理、要素、および回路は、本発明を不明瞭にしないように詳述されていない。図面と説明では、同一の参照番号は異なる実施例や構成でも共通であることを示す。
【００２９】
他に明記しない限り、以下の説明から明らかなように、本明細書中で例えば「処理する」「演算する」「算出する」「決定する」「生成する」「作成する」等の語は、コンピュータまたはコンピュータシステムや、演算システムのレジスタおよび／またはメモリ内の電子的などの物理的な量に表されるデータを、同様に演算システムのメモリやレジスタまたはこのような他の情報の保存、転送、または表示装置内の物理量に表される他のデータにマニピュレートおよび／または変換するプロセッサまたは類似の電子演算装置の動作および／またはプロセスをいう。
【００３０】
本発明の実施例では、本書における動作を実行するのにプロセッサ、コンピュータ、装置、システム、サブシステム、モジュール、ユニット、デバイス等の語を用いる（単数または複数で）。これは特に所望の目的用に構成されたものであってもよいし、またはコンピュータ内に保存されたコンピュータプログラムにより選択的にアクティベートまたは再構成される汎用コンピュータを具えてもよい。このようなコンピュータプログラムは、例えば、限定しないが光ディスク、ＣＤ−ＲＯＭ、磁気光ディスクを含む様々な種類のディスク、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、電気的プログラム可能なリードオンリーメモリ（ＥＰＲＯＭ）、電気的に消去とプログラム可能なリードオンリーメモリ（ＥＥＰＲＯＭ）、磁気または光学カード、または電子的な命令を保存するのに適しコンピュータのシステムバスに接続可能な様々な媒体などのコンピュータ可読媒体に保存される。
【００３１】
本書に記載のプロセス／デバイス（または上記の類似物）およびディスプレイは、特に他に明記しない限り、特定のコンピュータまたは他の装置に本来的に関連するものではない。様々な汎用システムを、本書の示唆にしたがったプログラムとともに用いることができるし、所望の方法を実行するのにより特化した装置を構成した方が便利かもしれない。これらのシステムの多様性に即した所望の構成は、以下に説明される。さらに、本発明の実施例は特に具体的なプログラム言語で記載されていない。多様なプログラム言語を用いて本書に記載した本発明の教示を実現することができる。
【００３２】
背景技術で引用した文献は、本発明に適用可能な多くの符号化・圧縮理論を教示する。このため、これらの出願の内容全体が、適切な追加の教唆または大体構成、構造、および／または技術的背景に適した状態で、参照により組み込まれる。
【００３３】
この特許明細書において「基準」の語は、様々な複合的な基準をカバーすると広く解釈されるべきであり、例えば、いくつかの基準および／またはその組み合わせを含む。
【００３４】
この特許明細書において「論理データオブジェクト（ＬＯ）」の語は、演算システムで用いられ１のユニットとして扱われる複数のデータユニットの様々な種類およびグラニュール数（granularities）を含むべく広く解釈されるべきである（例えばデータファイル、アーカイブファイル、イメージファイル、データベースファイル、メモリデータブロック、ストリームデータブロック等）。
【００３５】
これを念頭に、図１に注目すると、従来の典型的なストレージネットワーク構造の概略図が示されている。クライアント１１および／またはサーバ１２からの論理データオブジェクト（ＬＯ）は、ネットワーク１３を介してストレージ装置１４（例えば、特化したＮＡＳファイルサーバ、汎用ファイルサーバ、ＳＡＮストレージ、ストリームストレージ装置等）に転送される。このネットワークは、データ転送を実現するための１またはそれ以上の通信装置１５（例えばスイッチ、ルータ、ブリッジ等）を具える。図示するネットワークのストレージは全体または部分的に、ブロックモードアクセスおよび／またはファイルモードアクセスストレージプロトコルを用いるよう実装されている。ファイルモードアクセスでは、論理データオブジェクト（ＬＯ）は複数ファイルで構成され、ネットワークはＩＰネットワーク（例えば、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、またはその組み合わせ等）である。ブロックモードアクセスの実施例では、論理データオブジェクトはデータブロックから構成され、ネットワークは、例えばファイバチャネルまたはｉＳＣＳＩプロトコルを実装するストレージエリアネットワーク（ＳＡＮ）である。特定の実施例では、ストレージ装置１４ａはサーバ１２にブロックモードアクセスストレージプロトコル（例えばＳＣＳＩ、ファイバチャネル等）を介して直接接続される。このようなダイレクトアクセスストレージは、例えば、内部取り付け型ローカルディスクドライブや、外部取り付け型ＲＡＩＤ（redundant array of independent disks）またはＪＢＯＤ（just a bunch of disks）等を含む。
【００３６】
論理データオブジェクトの少なくとも一部は、変換された形式で保存される（例えば、圧縮形式および／または符号化形式）。したがって、これらはクライアント／サーバとストレージ間の場所にある物理的または論理的な通信ルート上で変換（圧縮／解凍、および／または、符号化／復号化）される。この変換またはその一部は、例えば、サーバ１２，通信装置１５、クライアント／サーバとストレージ装置に機能的に連結された変換システム１６、またはストレージ装置１４により提供される。通常、符号化に用いられる安全鍵は符号化および／または保存を行う装置とは別に保持され、これらは転送プラットフォーム１６に機能的に接続された鍵保持プラットフォーム１７で保管される。同様に、符号化テーブルや変換プロセスに含まれる外部データは、処理および／またはストレージ装置とは別に保管される。
【００３７】
本発明は、図１に記載の具体的な構造に限定されないことに留意されたい。当業者は、本発明を同様に、コンピュータが送る論理データオブジェクトへのアクセス要求と適切な変換データの保存場所の間の物理的および／または論理的な経路で１以上の論理データオブジェクトを変換する様々な演算システムや様々なストレージネットワーク構造に適用可能であることを理解し、この場合に変換（例えば圧縮および／または符号化）と保存が同じ物理的位置で提供される実施例を含む。
【００３８】
図２ａ−２ｂ、３ａ−３ｂ、４ａ−４ｄは、本発明の特定の実施例にかかるオリジナルと変換済みの論理データオブジェクトを示す概略図である。この変換は、圧縮、符号化、暗号化、コンバージョン等、および／またはこれらの組み合わせを含む。図２ａ−２ｂに記載の変換は論理データオブジェクトの圧縮であり、図３ａ−３ｂは論理データオブジェクトの符号化であり、図４ａ−４ｄに記載の変換は圧縮と符号化の組み合わせを含む。説明目的のためだけに、以下の記載は変換システム１６により論理データオブジェクトを処理し、処理済みデータをストレージ装置１４へ書き込み、逆変換（例えば復号化や解凍等）すべきデータをストレージ装置から読み出し、変換システム１６によりこれらを逆変換することに関する。しかしながら、本発明は同様の方法で、コンピュータが送るＬＯへのアクセスに関するリクエスト（例えば、開く、読み出す、書き込む等）と適切な変換済みデータの保管場所の間の物理的および／または論理的なルート（当該ルートの終点を含む）に機能的に配置された様々な目的の装置により提供される変換／逆変換に適用してもよい。この変換システムの開示された機能は、異なる方法で提供されてもよい。例えば、変換システム１６は、「とりわけ」前記装置の１またはそれ以上に組み込まれてもよく、変換システムの機能は１またはそれ以上の専用の基盤に実装されてもよく、１以上の装置の別のモジュール間に（完全または部分的に）配分等されてもよい。この統合は異なる方法で提供されてもよいし、ソフトウェアおよび／またはファームウェアおよび／またはハードウェアで実装されてもよい。この統合は、様々なストレージネットワーク要素（例えば、ファイルサーバ、エンタープライズおよびネットワークスイッチ、ルータ、ストレージ装置等）等で提供されてもよい。
【００３９】
また、本発明は同様に、前記ルート上の様々な装置のメモリに処理済みデータを書き込み、変換されたＬＯ全体またはその部分を保存すべく保存場所に送信可能であり、同様に読み出されるべき変換済みデータを保存場所から前記ルート上の様々な装置に送って逆変換させることができる。
【００４０】
単に説明目的のため、以下の記述は、適用型辞書ベースのデータ圧縮アルゴリズム（例えばＬｅｍｐｅｌ−Ｚｉｖ）に関する。本発明はこのアルゴリズムに限定するものではないが、同様に、様々な他の連続データ圧縮アルゴリズムに適用可能である。この適用型辞書ベースの圧縮アルゴリズムを用いる実施例の利点は、圧縮／解凍パフォーマンスを稼げることにある。
【００４１】
また単に説明目的におため、以下の説明は秘密鍵対称アルゴリズムを用いるブロック暗号に関する（例えば、ＩＤＥＡ−国際データ符号化アルゴリズム）。ただし本発明はこのアルゴリズムに限定されるものではなく、同様に、平文データのブロックを複数セグメントに崩して、このブロックの各平文セグメントを暗号テキストのセグメントに変換する他の様々な対称または非対称の符号化アルゴリズムに適用可能である。
【００４２】
図２ａ、３ａ、４ａ、４ｂは、ファイルモードアクセスに関する本発明の特定の実施例にかかる論理データオブジェクトのオリジナルと変換済みを示す概略図である。変換システム１６は、ファイル呼び出し動作（ファイルアクセスに関するリクエスト）と同様にいくつかの制御トランザクション（例えばファイル終了設定）を傍受し、特定のトランザクションのプロキシとして動作する（例えば、大部分の制御トランザクションのスループットを維持し、データトランザクションと特定の制御トランザクションを代理する）。この変換システムは、傍受されたファイルアクセスに関するリクエストに対応する処理データの配信、処理済みデータをストレージ媒体に１以上の変換済みファイルとして保存するファイルシステムと、および／またはそのなかで通信を実現し、および／または傍受したファイルリクエストに対応する処理済みデータの少なくとも一部の逆変換を実現可能である。保存処理されるファイルへの「書き込み」動作では、変換システム１６はネットワーク１３を通してクライアント１１および／またはサーバ１２から前記ファイルに対応するデータを受け取り、このデータを変換してファイルストレージ装置１４で書き込みを実現する。「読み出し」動作は、逆方向に処理され、要求されたファイルは変換システムにより取得され、逆変換され（要求されたデータ範囲に応じて部分的または全体的に）、適切なクライアント／サーバに送られる。適切であれば、変換システムは、変換プロセスに含まれる外部データ（例えば、変換に用いられる安全鍵および／または安全値または他のメタデータ）を取得するための外部プラットフォーム（例えば鍵保持プラットフォーム１７）と通信可能である。
【００４３】
図２ｂ、３ｂ、４ｃ、４ｄは、ブロックモードアクセスに関する本発明の特定の実施例にかかる論理データオブジェクトのオリジナルと変換済みを示す概略図である。この分野で周知のように、通常のストレージシステムとネットワークは、ストレージの分割管理を認識可能である。１のストレージディスクまたはディスクセットを、観念的に論理ユニットに分割できる。このストレージ論理ユニット（ＬＵ）は、直接的にボリュームドライブ、ホストアプリケーション、ストレージ装置等に対応し、物理ストレージの論理的表現（representative）を構成する。各論理ユニットは、論理ユニット番号として知られるアドレスを有し、これによりユニークに特定できるようになる。ユーザはＬＵＮがディスクドライブか、複数のディスクドライブか、１のディスクドライブのパーティションか、これらの組み合わせかを指定することができる。本発明の特定の実施例では１以上のＬＵが変換データを収容し、一方で変換システムは、ストレージ論理ユニットに関して、ストレージ論理ユニットに保存されたデータの非変換形式（すなわちオリジナルデータ）を仮想的に表すよう構成された対応する仮想論理ユニット（ＶＬＵ）を作成し、ストレージ論理ユニットに向けたデータアクセスに関するリクエストを傍受して前記リクエストを前記仮想論理ユニットにアドレスし、仮想論理ユニットにおいて変換済みデータとその非変換仮想表現の間のマッピングを実行する。したがって、本発明の特定の態様によると、コンピュータのオペレーティングシステム（ＯＳ）は、非変換データ（オリジナルＬＯ）の仮想表現としてＶＬＵに関することとなる。
【００４４】
ＶＬＵとＬＵのサイズ比は予め定められてもよいし、および／または変換プロセス中に調整されてもよい。例えば、圧縮変換に関する図２ｂを参照して詳述するように、ＬＵとＶＬＵのサイズ比は所望の圧縮レートに応じて定められ（例えば、仮想論理ユニットのサイズは、圧縮される未処理データの見積もりサイズに対応し、実質的にストレージ論理ユニットのサイズの量である）、現実の圧縮比に対応して調節されてもよい。
【００４５】
単に説明目的のため、以下の記載は、オリジナルデータの各チャンクが到着時に変換され、実質的にキャッシュにデータを保持することなく他の受信されたチャンクの処理とは独立して、変換形式で保存場所に書き込まれる特定の実施例に関する。同様に本発明は、例えば、受け取られたチャンクが処理の前および／またはストレージ装置への書き込み前に組み合わされ（例えばサイズ基準に応じて）分割される場合にも適用可能である。変換されるべきデータのサイズと、１のポーションとして書き込まれるべき変換済みデータのサイズ（および／または１のポーションとして書き込まれるオリジナルデータのサイズ）は、特定の基準によって構成可能である（例えば、変換システムおよび／またはストレージ装置のＩ／Ｏバッファのサイズ、変換エンジンの特性、設定可能なランタイム、ストレージネットワークの特性、入出力トラフィックの種類等）。変換システムは、保存場所への書き込みデータの確認を異なるモードで行ってもよく、例えば各書き込みポーション毎、所定／設定可能なポーション数毎、所定／設定可能なランタイム毎等であり、例えばストレージネットワークのプロトコルやそのトラフィックに依存する。また、本発明の特定の実施例では（例えば図７を参照してさらに詳述する）、特定の基準に合致するデータチャンクが、変換の失敗または変換処理の省略により非変換形式で保存される。
【００４６】
これを念頭に、図２ａに注目すると、ファイルモードアクセスに関する本発明の特定の実施例にかかる未処理かつ圧縮された論理データオブジェクトの概略図が示されている。非圧縮ＬＯ（図示の実施例における未処理ファイル２０１）に含まれるデータのチャンク（２０２−１〜２０２−６）が、連続的に処理された圧縮データチャンク（２０７−１〜２０７−６）となり所定サイズのブロック２０５−１〜２０５−２に収容される（以降に圧縮セクション（ＣＳ）と称す）。図７に詳細を示すように、処理済みデータのいくつかのチャンクは、特定の基準に合致しない場合に非圧縮形式で収容される（例えば、得られる圧縮比が所定の値以下である場合等）。
【００４７】
前記圧縮セクションは、ファイルの入出力トランザクション中に圧縮／解凍の原子要素として作用する。圧縮処理は、圧縮セクションの解凍と、圧縮の結果として前記セクションに収容されたオリジナルデータとの間の実質的な同一性を可能とするように提供される（例えば、図示の実施例では圧縮セクション２０５−１の解凍で得られるデータは、チャンク２０２−１、２０１−２、および２０１−３に含まれるオリジナルデータと実質同一である）。
【００４８】
圧縮セクションのサイズは設定可能である；圧縮セクションが大きいと処理オーバーヘッドが低く圧縮比が高くなり、圧縮セクションが小さいと効率的なアクセスが可能となるが処理オーバーヘッドが高くなる。圧縮セクションのサイズは、特定の時間に関する基準に応じて予め規定されてもよい（例えば、圧縮すべきデータを圧縮するのにかかる予定時間が、実質的に圧縮セクションのサイズの大きさとなる等）。
【００４９】
本発明の特定の実施例では、予め定められるセクションのサイズは、すべての圧縮セクションで等しい（例えば、非限定的な実施例では、圧縮セクションは１ＭＢに等しいサイズをもつ）。代替的に、本発明の特定の実施例では、予め規定されるサイズは異なる圧縮セクションで異なる。例えば、データ（例えばテキスト、画像、音声、組み合わせ等）または論理データオブジェクトの種類毎に圧縮セクションの予め規定されたサイズに対応し、変換システムは圧縮時に圧縮セクションの適切なサイズを圧縮される未処理ファイルのそれぞれの部分を占めるデータ種類（またはＬＯの種類）に応じて選択してもよい。任意で、圧縮プロセスは、例えば異なる圧縮セクションに収容された圧縮データチャンクに最適化した圧縮アルゴリズムを提供する適応能力を具えてもよい（例えば、音声、テキスト、画像等のセクションに最も適した異なる圧縮アルゴリズム）。
【００５０】
圧縮セクションに収容される圧縮データの現実の合計サイズは、図９を参照して後述するように、圧縮セクションに予め定めたサイズより小さい。
【００５１】
本発明の特定の実施例によると、処理済みのチャンク（２０７−１〜２０７−６）は、各入力チャンク（２０２−１〜２０２−６）の受け取り順に圧縮セクションに収容され、この収容はログ形式、ジャーナル形式、または連続収容の他の形式で提供されてもよい。圧縮されたＬＯ（図の実施例では圧縮ファイル２０３）は、ヘッド２０４と、１以上のインデックスセクション（ＩＳ）２０６とを具える。圧縮ファイルのヘッダ２０４は、ユニークなファイル記述子と、このファイルが現在開かれているか（またはリカバリ状態か）を示すフラグと、未処理ファイル２０１のサイズに関する情報と、任意で、このファイルが変換システム１６により処理されたかを示すサイン（例えば得られる圧縮比が所定の値以下であるため、特定の基準に合わず変換システムにより圧縮されていないファイルも）等を具える。本発明の特定の実施例では、ヘッダは固定の長さを有する。このヘッダとインデックスセクションは、図５−１０を参照して詳述される。
【００５２】
本発明の別の実施例では（圧縮／解凍機能がストレージ装置等と一体化している特定の実施例）、ヘッダ２０４またはそのいかなる部分や組み合わせが、ファイルシステムの一部を構成する。例えば、特定のファイルシステムに用いられるファイル識別子（例えばノードＩＤ）が、圧縮ファイルのユニークなファイル記述子として用いることができ、ファイルシステム内のファイルレコードは、例えば未処理ファイルのサイズに関する情報や前記サイン等の更なるフィールドを具えるように変更されている。そのインデックスセクションまたは部分もまた、ファイルシステムの一部を構成する。
【００５３】
図２ｂは、ブロックモードアクセスの本発明の特定の実施例にかかる未処理かつ圧縮された論理データオブジェクトの概略図である。未圧縮（未処理）のＬＯに含まれるデータのチャンクは連続的に圧縮データチャンクへと処理され（２１７−１〜２１７−６）、予め規定されたサイズかつ図２ａで説明した圧縮セクションと同様に、ブロック２１５−１〜２１５−２（以降は圧縮セクションと称す。）に収容される。処理済みデータチャンク（２１７−１〜２１７−６）に対応する前記未圧縮のチャンクは、データチャンク（２１２−１〜２１２−６）としてＶＬＵ２１１に仮想的に表現される。圧縮セクションは、データブロックの入出力トランザクション（データアクセスに関するリクエスト）中に圧縮／解凍動作の原子要素として作用する。ＶＬＵとＬＵのサイズ比は、特定の基準（例えば、圧縮データブロックを占めるデータ種別、前記データに得られる最大または最小圧縮比）に応じて予め規定してもよいし、圧縮プロセス中に調整されてもよい。非限定的な実施例では、本発明の特定の実施例において見積もられるＶＬＵとＬＵのサイズ比は電子メールで約３、テキスト形式データでは８等になる。具体的なケースでは、圧縮データと未処理データの実際の比は見積もられた比よりも低くなりうる（および／または、なる）。この差は、ストレージ論理ユニットのオーバーフローの原因となり、コンピュータのオペレーティングシステム（ＯＳ）が、ＬＵが実際に一杯となったときにＶＬＵにまだ空いたスペースがあることを示すこととなる。したがって、変換システム１６は、オーバーフローイベントの発生を検出するよう構成され（例えば、現実の圧縮レートとＬＵの空きスペースを検出することにより）、ＬＵの空き容量が特定の基準に合わない（例えば、予め規定されたサイズより小さい）場合にストレージ論理ユニットを拡大する。変換システムはさらに、前記ＬＵの拡大の失敗を検出するよう構成され（例えば、追加のディスクスペースが取得できなかったり、ストレージ装置がダイナミックＬＵ変更をサポートしていないため）、ＬＵのアクセス状態を「リードオンリー」に変更し、ＬＵの空き容量が上記基準に合致するまでこの状態を保持する。同様に、この変換システムは、圧縮データと未処理データの現実の比が見積もられる比より高い場合に、ＬＵの空きスペースを解放するよう構成されてもよい。
【００５４】
図２ａを参照して説明したのと同様に、圧縮されたチャンクは、各入力チャンクの受け取り順に従って圧縮セクション内に収容され、この収容はログ形式、ジャーナル形式、または他の連続収容形式で提供される。圧縮されたＬＯ（ＬＵ２１３）は、ヘッダ２１４と、１以上の圧縮セクション２１５と、インデックスセクション２１６と、空きスペース２１８とを有する。ヘッダ２１４は、論理ユニット番号（ＬＵＮ）を含むユニークな記述子と、仮想論理ユニット（ＶＬＵ）のサイズと、ＬＵのサイズと（任意）、オープン／リカバリフラッグと、保存データの少なくとも一部が変換システム１６により処理されたかを示すサイン等を含む。このヘッダの長さは一定である（例えば非限定的な例では２４バイトであり、４バイトが前記サイン、１６バイトが前記ユニークな識別子、４バイトが対応する仮想論理ユニットのサイズに関する情報）。
【００５５】
本発明の他の実施例では（例えば、圧縮／解凍機能はストレージ装置と一体化される等の特定の実施例）、ヘッダ２１４またはそのいずれかの部分およびその組み合わせはディスク属性の一部を構成し、インデックスセクション２１６がディスク属性の一部を構成してもよい。
【００５６】
したがって、オリジナルの論理データオブジェクト（ＬＯ）に含まれる様々な種類のデータのチャンクは、連続的に圧縮され、予め規定されたサイズの１またはそれ以上の圧縮セクションに受け取り順に収容される。この圧縮処理は、解凍されたときの圧縮セクションと、圧縮で得られる前記セクションに収容されたオリジナルデータが実質同一となるように構成される。同じ圧縮セクションに収容されたチャンクは、同じ辞書を用いて圧縮される。図６でさらに詳述するように、インデックスセクションの情報は、オリジナルのデータ範囲と解凍後にログから読み出されるデータが一対一の関係となるようにする。圧縮されたデータチャンクは、圧縮動作をリセットすることなく出力（ストレージ）バッファに流されるべきすべてのペンディングの出力を実現する「同期フラッシュ（sync-flush）」モードで保存場所に移動される。したがって、この圧縮バッファの同期フラッシュにより、データの完全性を実現しつつ圧縮セクション内で同じ辞書の使用を可能となる。同期フラッシュは様々な方法で実施されてもよく、これらのいくつかがこの分野で知られている（例えば、ＺＬＩＢ圧縮ライブラリで提供されるデフレート／インフレート機能にＺ＿ＳＹＮＣ＿ＦＬＵＳＨパラメータを適用することによる、ＺＬＩＢ．Ｈ−「ｚｌｉｂ」汎用圧縮ライブラリのインタフェース、バージョン１．２．３、２００５年７月１８日、著作権（Ｃ）１９９５−２００５Jean-Loup Gailly and Mark Adler）。
【００５７】
本発明の特定の実施例では、圧縮されるデータの最初のｋバイトは辞書として使用される。同じ辞書がさらに、処理／圧縮される連続データの最初と以降のチャンク全部の圧縮に用いられ、この辞書は例えばＬｅｍｐｅｌ−Ｚｉｖアルゴリズムで処理されたデータにしたがって調整される。プロセスは、圧縮データの合計サイズが圧縮セクションの予め規定されたサイズとなるまで継続される。圧縮データの次のチャンクは、次の圧縮セクションに収容される。次のチャンクの最初のｋバイトは、次の圧縮セクションに収容されるデータを圧縮するのに用いられる辞書を更新するのに用いられる。本発明の特定の実施例では、新たな圧縮セクションにおいて開始される新たな圧縮シーケンスは、直前のシーケンスと同じ初期圧縮辞書を用いてもよい。
【００５８】
本発明の特定の実施例では、異なる圧縮セクションのデータに対応する複数の辞書は、適切な圧縮セクションへの一定のポインタを含む全体の辞書として保持されてもよい。この全体辞書は、１以上のインデックスセクションに収容されてもよいし、異なるインデックスセクションおよび／または圧縮セクション間に分配されてもよい。代替的に、辞書はそれぞれ１以上の圧縮セクションに対応するいくつかの個別に管理される辞書に分割されてもよい。インデックスセクションの特定の実施例では、当該インデックスセクションに付随する圧縮セクションのデータのみに対応する１以上の辞書を収容する。いくつかの実施例では、各圧縮セクションが当該セクションに保存されるデータに関連する１の辞書を含む。
【００５９】
本発明の特定の実施例では、未処理データの受け取られた部分がそれぞれ、受け取られ、処理され、所定の基準に合致する場合に圧縮され、殆どキャッシュ内にデータを保持することなく、かつ他の受信部分の処理とは独立して保存場所に書き込まれる。本発明の別の実施例では、いくつかの受け取られた部分が一緒に処理され、１つの圧縮部分としてストレージに書き込まれる。
【００６０】
本発明の特定の実施例の利点は、比較的小さなデータチャンクを処理し書き込めるなかで、比較的大きなデータ量（圧縮セクション）に対する圧縮機能を得られることであり、同時に同じ適応性辞書を用いるデータチャンクの連続圧縮により実現する向上した圧縮比を得られることである。
【００６１】
図３ａは、ファイルモードアクセスの本発明の特定の実施例にかかるオリジナルと暗号化した論理データオブジェクトの概略図である。平文ＬＯ（図の実施例では平文ファイル３０１）に含まれるデータのチャンク（３０２−１〜３０２−４）は、連続的に処理されて暗号化データチャンク（３０７−１〜３０７−４）となり、ブロック３０５−１、３０５−２に収容される（以降は予め規定されたサイズの暗号化セクション（ＥＳ）と称す）。図７を参照して詳述するが、処理済みデータのいくつかのチャンクは、所定の基準に合わない場合には非暗号化形式で収容される。
【００６２】
図２ａ、２ｂを参照して記載した圧縮セクションと同様に、この暗号化セクションは、ファイルの入出力トランザクションにおいて暗号化／復号化動作の原子要素として作用する。暗号化セクションのサイズは調整可能であり、暗号化セクションが小さいと効率的にアクセスできるが処理オーバーヘッドが高くなる。本発明の特定の実施例では、予め規定されるサイズは、すべての暗号化セクションで同じであってもよい（例えば非限定的な実施例では、暗号化セクションは１ＭＢである）。代替的に、本発明の特定の実施例では、暗号化セクションの所定サイズは変化してもよい。例えば、それぞれの種類のデータが暗号化セクションの所定サイズに対応し、変換システムは暗号化中に、暗号化される平文ファイルの各チャンク（またはチャンク群）を占めるデータ種類に応じて暗号化セクションの適切なサイズを選択する。
【００６３】
本発明の特定の実施例によると、処理／暗号化されたチャンク（３０７−１〜３０７−４）は、平文データの各チャンクの受け取り順に従って暗号化セクションに収容され、この収容はログ形式、ジャーナル形式等で行われる。暗号化されたＬＯ（図の実施例では暗号化ファイル３０３）は、ヘッダ３０４と、１またはそれ以上の暗号化セクション３０５と、１またはそれ以上のインデックスセクション（ＩＳ）３０６とを具える。暗号化ファイルのヘッダ３０４は、ユニークなファイル識別子と、このファイルが現在開いているか（またはリカバリ状態か）を示すフラグと、平文ファイル３０１に関する情報と、任意で、このファイルが変換システム１６により処理されたかを示すサインとを具える（例えば所定の許可マーク、所定のファイル種別等の所定の基準に合わないとして変換システムにより暗号化されなかったファイルについても）。本発明の特定の実施例では、ヘッダの長さは固定である。このヘッダとインデックスセクションは、図５−１０を参照して詳述される。
【００６４】
本発明の他の実施例（暗号化／復号化機能がストレージ装置に組み込まれている等の特定の実施例）では、ヘッダ３０４またはその一部およびその組み合わせは、ファイルシステムの一部を構成してもよい。例えば、特定のファイルシステムに用いられるファイル識別子（例えばノードＩＤ）は、暗号化ファイルのユニークなファイル識別子として用いられてもよく、ファイルシステム内のファイルレコードは変更されて例えば平文テキストのサイズに関する情報や前記サイン等の新たなフィールドを具えてもよい。
【００６５】
図３ｂは、ブロックモードアクセスの本発明の特定の実施例にかかる平文と暗号化された論理データオブジェクトの概略図である。平文ＬＯに含まれるデータのチャンクは連続的に暗号化データチャンクへと処理され（３１７−１〜３１７−６）、予め規定されたサイズかつ図２ａで説明した圧縮セクションと同様に、受け取り順にブロック３１５−１、３１５−２（以降は暗号化セクションと称す）に収容される。処理済みデータチャンク（３１７−１〜３１７−４）に対応する前記平文チャンクは、データチャンク（３１２−１〜２１２−４）としてＶＬＵ３１１に仮想的に表現される。
【００６６】
暗号化されたＬＯ（ＬＵ３１３）は、ヘッダ３１４と、１またはそれ以上の暗号化セクション３１５と、インデックスセクション３１６と、空きスペース３１８とを有する。ヘッダ３１４は、論理ユニット番号（ＬＵＮ）を含むユニークな記述子と、仮想論理ユニット（ＶＬＵ）のサイズと、ＬＵのサイズと（任意）、オープン／リカバリフラッグと、保存データの少なくとも一部が変換システム１６により処理されたかを示すサイン等を含む。このヘッダとインデックスセクションは、図５−１０を参照して詳述される。
【００６７】
本発明の他の実施例では（例えば、暗号化／復号化機能はストレージ装置と一体化される等の特定の実施例）、ヘッダ３１４またはそのいずれかの部分およびその組み合わせはディスク属性の一部を構成し、および／または、インデックスセクション３１６がディスク属性の一部を構成する。
【００６８】
したがって、オリジナルの論理データオブジェクト（ＬＯ）に含まれる様々な種類のデータのチャンクは、連続的に暗号化され、予め規定されたサイズの１またはそれ以上の圧縮セクションに受け取り順に収容される。
【００６９】
この暗号化処理は、復号化されたときの暗号化セクションと、暗号化で得られる前記セクションに収容された平文データが実質同一となるように構成される。
【００７０】
ブロック暗号化アルゴリズムが、受信チャンクの平文データを固定サイズのセグメント（例えば１６バイト）に崩し、このチャンクの各平文セグメントを固定サイズＢの暗号化セグメントへと暗号化する。図の実施例では、変換システムは、暗号化セグメントが前記固定サイズＢに必要な場合に（例えばパディングデータを入れることにより）ラウンド可能である。連続データの最初と次のチャンクは同じ安全鍵を用いて暗号化され、１の暗号化セクションに収容される。このプロセスは、暗号化データの合計サイズが実質的に暗号化セクションの予め規定されたサイズとなるまで継続される。暗号化データの次のチャンクは、次の暗号化セクションに収容される。異なる暗号化セクションのデータは、同じか異なる安全鍵を用いて暗号化されてもよい。また、図６を参照して詳述するように、インデックスセクションの情報は、オリジナルのデータ範囲の各地点と復号化後にログから読み出されるデータが一対一の関係となるようにする。
【００７１】
この暗号化プロセスは、図１２ａ、１２ｂを参照してさらに詳述される。
【００７２】
図４ａ−４ｂは、ファイルモードアクセスの本発明の特定の実施例にかかる論理データオブジェクトのオリジナルと変換済みを示す概略図であり、この変換は圧縮と暗号化を含んでいる。
【００７３】
オリジナルのＬＯ（図の実施例のオリジナルファイル４０１）に含まれるデータのチャンク（図４ａの４０２−１〜４０２−４）は、連続的にデータチャンク（図４ｂの４０８−１〜４０８−４）に変換され、予め規定されたサイズのブロック４０６−１、４０６−２に収容される。図２ａ−２ｂで説明した圧縮セクションや、図３ａ−３ｂで説明した暗号化セクションと同様に、これらのブロックはファイルの入出力トランザクション中に圧縮／解凍および暗号化／復号化の原子要素として作用する。以下の説明において、「収容セクション（ＡＳ）」の語は、変換されたデータチャンク（上述した圧縮セクションや暗号化セクションを含む）を収容すべく構成された様々な保存ブロックであって、本発明の特定の実施例にかかる変換／逆変換の動作の原子要素として動作するものを含む。この収容セクションの予め規定されるサイズは等しくてもよいし、代替的に、変換処理中に変換システムが予め規定される基準に従って特定の収容セクションの規定サイズを選択してもよい。
【００７４】
オリジナルのデータチャンク（４０１−１〜４０２−４）を保存データチャンク（４０８−１〜４０８−４）に変換するには２つの処理を含む。１）オリジナルのチャンクを圧縮データチャンク（４０３−１〜４０３−４）へと圧縮するステップと、２）圧縮データチャンク（４０３−１〜４０３−４）を暗号化して、収容される暗号化チャンク（４０４−１〜４０４−４）とするステップである。このプロセスは同期され並行に行われ、すなわち圧縮と暗号化のプロセスが時間に関して同格であり（同期プロセス）、それぞれ圧縮と暗号化に関する命令の自律セットを同時に実行し（並列プロセス）、圧縮の間、暗号化と収容はオリジナルのチャンクの連続性を維持するように行われる。
【００７５】
図４ａに示す実施例では、プロセスの同期は、圧縮プロセスで処理される各出力チャンクは、暗号化プロセスの入力チャンクとなることを特徴とする。したがって、圧縮され暗号化されたデータチャンクは、オリジナルのデータチャンクの連続性に対応する。例えば、オリジナルのチャンク４０２−１〜４０２−３から圧縮チャンク４０３−１〜４０３−３への圧縮、およびこれで得られるチャンクの暗号化チャンク２０４−１〜２０４−３への暗号化は、それぞれｔｓ１−ｔｓ３の時点で開始される。図の実施例では、オリジナルのチャンク４０２−４から圧縮チャンク４０３−４への圧縮は、ｔｓ４で終了し、圧縮チャンク４０３−３から暗号化チャンク４０４−３への暗号化はこの時点では終了していない。連続的な圧縮チャンク４０３−４から暗号化チャンク４０４−４への暗号化は、チャンク４０４−３が暗号化された後に開始される（チャンク４０３−４の圧縮が終了したｔｓ３からΔｔの遅延を伴う）。
【００７６】
本発明の特定の実施例では、オリジナルデータの受信チャンクはそれぞれ圧縮され、殆どキャッシュにデータを保持することなく、他の受信チャンクの処理とは自律して暗号化のために送られる。本発明の別の実施例では、受信チャンクはセグメント化され、あるいはいくつかの受信チャンクがまとめて圧縮され、１の圧縮チャンクとしてさらに暗号化される。
【００７７】
図７を参照して後述するように、所定の基準に合うチャンクの処理は圧縮のみ、または暗号化のみ、あるいはそのいずれでなくてもよく、処理と収容の期間中のチャンクのシーケンスが、受信チャンクのシーケンスに対応して保持されることに注意されたい。
【００７８】
本発明は図示の同期方法に限定されるものではなく、同様に、同時に圧縮し暗号化するプロセスの他の様々な形式に適用可能であり、この同時性によりデータチャンクの連続性が保存される。
【００７９】
図４ｂに示すように、処理済みのチャンク（４０４−１〜４０４−４）は、オリジナルデータの各チャンクの受け取り順に収容セクション（保存チャンク４０８−１〜４０８−４）に書き込まれる。変換されたＬＯ（図の実施例では圧縮され暗号化されたファイル４０９）は、ヘッダ４０５と、１またはそれ以上の収容セクション４０６と、１またはそれ以上のインデックスセクション（ＩＳ）とを具える。変換ファイルのヘッダ４０５は、ユニークなファイル識別子と、このファイルが現在開いているか（またはリカバリ状態か）を示すフラグと、オリジナルのファイル４０１のサイズに関する情報と、任意で、このファイルが変換システム１６により処理されたかを示すサインとを具える（例えば所定の許可マーク、所定のファイル種別、所定の圧縮比等の所定の基準に合わないとして変換システムにより暗号化および／または圧縮されなかったファイルについても）。本発明の特定の実施例では、ヘッダの長さは固定である。このヘッダとインデックスセクションは、図５−１０を参照して詳述される。
【００８０】
本発明の他の実施例（暗号化／復号化、および／または、圧縮／解凍機能がストレージ装置に組み込まれている等の特定の実施例）では、ヘッダ４０５またはその一部およびその組み合わせは、ファイルシステムの一部を構成してもよい。例えば、特定のファイルシステムに用いられるファイル識別子（例えばノードＩＤ）は、暗号化ファイルのユニークなファイル識別子として用いられてもよく、ファイルシステム内のファイルレコードは変更されて例えばオリジナルのサイズに関する情報や前記サイン等の新たなフィールドを具えてもよい。インデックスセクションやその部分もまた、ファイルシステムの一部を構成してもよい。
【００８１】
図４ｃ−４ｄは、ブロックモードアクセスの本発明の特定の実施例にかかるオリジナルと圧縮と暗号化された論理データオブジェクトの概略図である。オリジナルのＬＯに含まれるデータのチャンクは連続的に暗号化データチャンクへと処理され（図４ｄの４１８−１〜４１８−４）、受け取り順に収容セクション４１６−１、４１６−２に収容される。変換済みデータチャンク（４１８−１〜４１８−４）に対応するオリジナルデータチャンクは、図４ｃに示すデータチャンク（４１２−１〜４１２−４）としてＶＬＵ４１１に仮想的に表現される。
【００８２】
図４ａ、４ｂを参照して説明した実施例と同様に、オリジナルのデータチャンク（４１２−１〜４１２−４）を保存データチャンク（４１８−１〜４１８−４）に変換するには２つの同時並行処理を含む。１）オリジナルのチャンクを圧縮データチャンク（４１３−１〜４１３−４）へと圧縮するステップと、２）圧縮データチャンク（４１３−１〜４１３−４）を暗号化して、収容される暗号化チャンク（４１４−１〜４１４−４）とするステップである。したがって、圧縮と暗号化のプロセスが時間に関して同格であり、それぞれ圧縮と暗号化に関する命令の自律セットを実行し、ここで圧縮と暗号化は、オリジナルのチャンクの連続性を維持するように行われる。これらプロセスの同期は、圧縮プロセスで処理される各出力チャンクが暗号化プロセスの入力チャンクとなることを特徴とする。したがって、圧縮され暗号化されたデータチャンクの連続性は、オリジナルのデータチャンクの連続性に対応する。
【００８３】
図４ｄに示すように、処理済みのチャンク（４１４−１〜４１４−４）は、オリジナルデータの各チャンクの受け取り順に収容セクション（保存チャンク４１８−１〜４１８−４）に書き込まれる。変換されたＬＯ（圧縮され暗号化されたデータを含むＬＵ４１９）は、ヘッダ４１５と、１またはそれ以上の収容セクション４１６と、１またはそれ以上のインデックスセクション（ＩＳ）４１７と、空きスペース４２０とを具える。ヘッダ４１５は、論理ユニット番号（ＬＵＮ）を含むユニークなファイル識別子と、ストレージ論理ユニットのサイズと（任意）、オープン／リカバリフラグと、この保存データの少なくとも一部が変換システム１６により処理されたかを示すサイン等を含む。
【００８４】
本発明の他の実施例では（例えば、暗号化／復号化、および／または、圧縮／解凍機能がストレージ装置と一体化される等の特定の実施例）、ヘッダ４１５またはそのいずれかの部分およびその組み合わせはディスク属性の一部を構成し、インデックスセクション４１７がディスク属性の一部を構成してもよい。
【００８５】
したがって、オリジナルの論理データオブジェクト（ＬＯ）に含まれる様々な種類のデータのチャンクは、連続的に変換され、１またはそれ以上の収容セクションに受け取り順に収容され、この変換は圧縮と暗号化プロセスを含む。チャンクの圧縮は、図２ａ−２ｂに記載の圧縮変換と同様に行われる。圧縮されるデータの最初のｋバイトは辞書として使用される。同じ辞書が、圧縮される連続データの最初と次のチャンクの圧縮に用いられ、この辞書は例えばＬｅｍｐｅｌ−Ｚｉｖアルゴリズムで処理されたデータにしたがって調整される。プロセスは、（暗号化後に）特定の収容セクションに収容されるすべてのチャンクについて継続される（収容セクションの選択は図９を参照してさらに詳述される）。次の収容セクションに収容されるオリジナルデータの次のチャンクの最初のｋバイトは、次の収容セクションに収容されるデータを圧縮するのに用いられる辞書を更新するのに用いられる。本発明の特定の実施例では、新たな圧縮セクションにおいて開始される新たな圧縮シーケンスは、直前のシーケンスと同じ初期圧縮辞書を用いてもよい。
【００８６】
所定の基準に合う圧縮チャンクはそれぞれ、図３ａ−３ｂを参照して説明したのと同様の方法で、各収容セクションに保存される前にさらに暗号化される。ブロック暗号化アルゴリズムが、圧縮済みチャンクの平文データを固定サイズのセグメントに崩す。最初と次の圧縮済みチャンクは同じ安全鍵を用いて暗号化され、１の適切な収容セクションに収容される。このプロセスは、暗号化データの合計サイズが実質的に収容セクションの予め規定されたサイズとなるまで継続される。次の暗号化チャンクは、次の収容セクションに収容される。異なる収容セクションに収容されるデータは、同じか異なる安全鍵を用いて暗号化される。この暗号化プロセスはさらに図１２ａ−１２ｂを参照して詳述される。本発明の特定の実施例では、システムは１またはそれ以上の圧縮済みデータチャンクでパディングデータ（例えばランダムキャラクタ、ブランク、ゼロ等）を入れて、ブロック暗号の入力がセグメントサイズの丁度倍数となるようにする。復号化時に、変換システムは解凍前にこのパディングデータを除去する。
【００８７】
図５は、本発明の特定の実施例にかかる変換済みの論理データオブジェクトを示す概略図である。非限定的な実施例として、図２ａ−ｂ、３ａ−ｂ、４ａ−ｄに詳述されているが、オリジナルの論理データオブジェクト（ＬＯ）に含まれる様々な種類のデータのチャンクは変換され、受け取り順に予め規定されたサイズの１またはそれ以上の収容セクション（５０５Ａ−５０５Ｆ）に連続的に収容される。この収容セクションは、論理データオブジェクトの入出力トランザクション（データアクセスに関するリクエスト）中に変換／逆変換動作の原子要素として作用する。この変換プロセスは、逆変換されたときの収容セクションと、変換で得られる前記セクションに収容されたオリジナルデータが実質同一となるように構成される。
【００８８】
変換済みのＬＯ５０３は、ヘッダ５０４と、１またはそれ以上の収容セクション（５０５Ａ〜５０５Ｆ）と、１またはそれ以上のインデックスセクション（５０６Ａ、５０６Ｂ）とを具える。このインデックスセクションは、変換済みＬＯが１の収容セクションのみをもつ場合に不要である。
【００８９】
連続的に収容される変換済みデータチャンクに加え、この収容セクションは、ユニークな識別子を有する（通常は収容セクションのヘッダ内に有する）。この収容セクションに属する物理ストレージの場所の表示が、収容セクション自体（例えばヘッダ内）および／またはインデックスセクションに保存される。変換に含まれる外部データに関する情報（例えば、鍵のＩＤ、鍵の物理位置へのポインタ、鍵に関するメタデータ等の、収容セクションに含まれるデータチャンクの暗号化に用いた安全鍵に関する情報）が、収容セクション自体（このセクションのヘッダ内）および／またはインデックスセクションおよび／またはヘッダ５０４に保存される。
【００９０】
本発明の特定の実施例では、各収容セクションに、この収容セクション内（例えばヘッダ内）および／またはインデックスセクションに保存されこのセクションの使用／再使用を示すフラグ（ビットフラグ１または０）が割り当てられている。したがって、１のセクション内の各変換済みチャンクはセクションと同じフラグを有する。新たな物理的な位置に収容されたとき、この収容セクションはフラグ０となる。別の収容セクションにより以前用いられた物理的位置に収容されたら、この収容セクションのフラグは、上書きされる前記別の収容セクションのフラグと逆となる。したがって、ある物理位置に書き込まれる新たな変換済みデータチャンクは、当該物理位置に収容されている直前の古いデータチャンクと異なり、古い（上書きされる）収容セクションが異なるフラグとなるようにする。この処理はさらに、図９を参照して詳述される。
【００９１】
単に説明目的のために、以下の説明はログ形式で収容される変換済みデータチャンクで説明する（以降はログという）。ただし本発明はログ形式に限定されるものではなく、同様に、処理済みデータチャンクを連続的に収容する他の様々な形式に適用可能である。
【００９２】
変換済みデータに加え、各ログは、論理データオブジェクト内のオリジナルのチャンクデータのオフセットに関する情報（通常はログのヘッダに保持される）と、前記オリジナルチャンクのサイズと、このログを収容する収容セクションとこのログを関連付ける識別子（例えば、対応する収容セクションＩＤに加え、上述したように当該セクションの物理位置の使用／再使用を示すフラグ等）とを有する。この情報またはその一部は、変換されおよび／または変換されない形式で保存される。図１２ａ−１２ｂを参照して暗号化の場合を詳述するように、このログはまた、変換に関する情報（すなわち初期ベクトル、鍵ＩＤ等）を具える。
【００９３】
本発明の特定の実施例において、傍受された制御トランザクション（例えば「ファイル端部を設定」／切り捨て（truncate））が、各変換済みデータチャンクに連続するとともにデータサイズ領域にゼロの値を有するログとして、収容セクションに書き込まれる。
【００９４】
インデックスセクション５０６は、１以上の収容セクションに付随する１以上のエントリを具え、このエントリは収容セクションの物理的な保存場所へのポインタ（または他のインジケータ）と、収容セクションに収容される各ログに関するレコード（例えば、オリジナル／更新されたＬＯのオフセットとサイズ、収容セクションとの関連、ログに割り当てられた１またはそれ以上のフラグ等）を具え、前記レコードは以降に「ログレコード」と称される。任意で、このエントリは、例えば収容セクションに収容されたログの少なくとも一部が暗号化されていない、圧縮されていない、あるいはそれ以外でも変換されていない形式のデータを含むか否かのサイン、収容セクションに割り当てられた１またはそれ以上のフラグ、セクションの圧縮に用いられる辞書、セクション内で用いられる安全鍵に関する情報、前記収容セクションの収容のフリーサイズ、暗号化、圧縮、および／または変換時に用いられる他のアルゴリズム（可変の場合）等を含む。本発明の特定の実施例では、インデックスセクションは等しく予め規定されたサイズである。
【００９５】
本発明の特定の実施例では、エントリは、唯一の、各ログに対して最も更新されたログレコードを有する。別の実施例では、図１１ａ−１１ｂで詳述するように、エントリは同じログについて更新されたレコードと古いレコードを有する。
【００９６】
インデックスセクション５０６を作成および／または更新するにはいくつかの方法がある。例えば、最初のインデックスセクションは、変換された論理データオブジェクトの作成時に実質的に作成され、以降のインデックスセクションは（もしあれば）、現在の（アクティブな）インデックスセクションに新たなエントリを収容する空きスペースがない場合に作成される。代替的に、最初および／または以降のインデックスセクションは、対応する収容セクションをその情報に基づいて保存した一定時間後であるが、論理データオブジェクトが閉じる前に作成される。対応するエントリは、保存された論理オブジェクトのすべての更新と同時に、あるいは収容セクションに含まれるデータに基づいて所定の送らせた時間に（例えば新たな収容セクションの開始時）、ただし論理データオブジェクトが閉じる前に、書き込まれ／更新される。失敗した場合、インデックスセクションは収容セクションに含まれる情報に基づいて復元され、これは図１０を参照して後述される。
【００９７】
本発明の特定の実施例では、ヘッダ５０４が最初のインデックスセクションの物理位置へのインジケータ（例えばポインタ）を具え、各インデックスセクションは次の連続するインデックスセクションへのインジケータを有する。このインジケータは、連続するインデックスセクションを接続する１またはそれ以上のリンク５０７から構成される。任意で、ヘッダ５０４はまた、最初の収容セクションへのインジケータを含み、各収容セクションが次の連続する収容セクションへのインジケータを有する。このインジケータは、連続する収容セクションを接続する１またはそれ以上のリンクから構成される。
【００９８】
本発明の特定の実施例の利点は、様々なサイズのデータチャンクを変換し書き込む能力であり、予め規定された収容セクションを用いて逆変換と読み出しが行われる。
【００９９】
図６ａ−ｂを参照すると、更新プロセスにおける論理データオブジェクトのオリジナルと変換済みの概略図がシメされている。
【０１００】
図６ａに示す例では、オリジナルのＬＯを構成するデータ６０１−１、６０１−２、６０１−３が、対応する連続ログ６０８−１、６０８−２、６０８−３に変換され、収容セクション６０５−１に収容される。インデックスセクション６０６−１は、前記収容セクションとそのログに関する情報を含む。非限定的な例では、図のインデックスセクションは、物理位置へのポインタ（ＱＷＯＲＤ）を有する収容セクションＩＤと、このセクションに収容された変換済みチャンクに対応するオリジナルデータの各チャンクのオフセット（ＱＷＯＲＤ）と長さ（ＷＯＲＤ）を有する各レコードのリストとを具える。通常、インデックスセクションはまた、次のインデックスセクションのインジケータ（例えばＩＤ）を具える。
【０１０１】
インデックスセクションの情報の例は、ログ６０８−１へと変換されたデータが範囲ＡＢに対応し（オフセットＡ、長さＬ１）；ログ６０８−２に変換されたデータが範囲ＢＣに対応し（オフセットＢ、長さＬ２）；ログ６０８−３に変換されたデータが範囲ＣＤに対応する（オフセットＣ、長さＬ３）ことを意味する。
【０１０２】
図６ｂは、長さＬ４の新規データチャンク６０１−４がオフセットＣ１から始まるオリジナルのＬＯに置換する場合であって、（Ｃ１＋Ｌ４）＝Ｅ＜Ｄである場合の例を示す。新たなデータチャンクは、セクションにこの新たなログを収容するのに十分な空きスペースがある場合に、前の変換ログ（以降にアクティブな収容セクションと称す）を収容する収容セクションに収容される。そうでない場合、実施例に示すように、新たな収容セクション６０５−２が開かれて新たなログ６０８−４が収容される。以前に収容されていたログは変更せずに保持され、一方でインデックスセクション６０６−１が、オリジナルデータ範囲の各地点と逆変換後のログから読み出されるデータとの間の一対一の関係が実現するように更新される。特定の実施例ではインデックスセクションは最後に更新されたログレコードのみを含み、他の実施例ではインデックスセクションは古いレコードと、新旧レコード間の差異の特別なマーキングとを含む。更新されたレコードに加え古いレコードを保持すると、例えば図１１で後述する継続的なデータ保護などの特定のアプリケーションに有用である。
【０１０３】
図６ｂに示す実施例では、インデックスセクションは最後に更新されたレコードのみを有する。インデックスセクションの更新情報は、更新された範囲ＡＤは以下の変換ログのデータに対応することを意味する：範囲ＡＢは収容セクション＃１の物理位置Ｘのログ６０８−１から逆変換されるデータに対応し、範囲ＢＣ１は収容セクション＃１の物理位置Ｘのログ６０８−２から逆変換されるデータの一部（すなわちオフセットＢ、長さＬ２１）に対応し、更新された範囲Ｃ１Ｅは収容セクション＃２の物理位置Ｙの新たなログ６０８−４に対応し、範囲ＥＤは収容セクション＃１の物理位置Ｘのログ６０８−３のデータの一部（すなわちオフセットＥ、長さＬ３１）に対応する。図の実施例では、ログ６０８−１と６０８−４に含まれるデータは生きており、これに対しログ６０８−２（すなわち範囲Ｃ１Ｃ）と６０８−３（すなわち範囲ＣＥ）は古い。インデックスセクションの更新は、図９を参照してさらに説明される。
【０１０４】
図７を参照すると、本発明の特定の実施例にかかる変換済み論理データオブジェクトを作成する一般化されたフローチャートである。７１０でＬＯを保存するリクエストを受けると、変換システムは変換済みＬＯのヘッダを適切な収容場所に書き込み（例えば、前に保存した論理データオブジェクトの隣に）、処理済みデータを収容するために最初の収容セクションを割り当てる。最初のヘッダのレコードは、変換ステータスの表示を含む（例えば、変換が「処理中」であることを意味するフラグ「ＯＮ」や、任意で、変換プロセスに含まれる別のプロセス余の別のフラグ等）。この変換システムはまた、７１２で変換されるデータチャンクに関する情報を用意する（例えば、オフセット、データサイズ等）。
【０１０５】
本発明の特定の実施例によると、変換システムは、変換中に合致すべき所定の基準を保持するよう構成される。この基準は論理データオブジェクト、データチャンクおよび／または収容セクション、および／またはその変換動作またはその一部の特性に関する。この基準は、例えば、１のログとして変換されるデータの最大長Ｌｍａｘ；および／または１のログとして変換される受信オリジナルデータの最大時間Ｔｍａｘ；オリジナルと変換済みデータおよび／またはＬＯの特定の関係（例えば、最小見積もり比または現実の圧縮比；データおよび／またはＬＯの予め規定された種別および／または形式）等を含む。
【０１０６】
本発明の特定の実施例では、所定の基準は、見積りまたは実際のデータチャンクおよび／または論理データオブジェクト全体の変換時間（例えば最大、見積もり、または実際の、データチャンクの変換（またはそのステップ））に関する。この基準に関する変換時間は、オペレーショナルシステムのタイムアウト、ストレージネットワークおよび／またはストレージ装置の特性、求められる信頼性等により制限される。いくつかの実施例では、この基準は例えば、データチャンクの実際の変換時間であり、別の実施例ではこの基準は例えば、チャンクサイズおよび／またはデータ種別および／または圧縮アルゴリズムおよび／または他の特性やデータチャンクの予想される変換時間の見積もりが可能なこれらの組み合わせでもよい。したがって、この基準と比較するために取得されるチャンクの特性により、予想される変換時間または実際に測定された変換時間の見積もりが可能となる。１より多いプロセス（例えば圧縮と暗号化）を含む変換について、変換時間の基準は、それぞれ個別のプロセス、および／または変換プロセス全体に関する。
【０１０７】
変換システムはさらに、変換されるデータチャンクが所定の基準に合致する場合に７１３を検証する。この検証は、チャンクおよび／または収容セクションおよび／または変換動作の特定の特性を取得し、これらを前記基準と比較する。この特性は、例えば、チャンクの特定のパラメータを特定し（例えば、論理オブジェクトの種類、認証マーク、サイズ等）、および／または観察できる特性（例えばサイズ、データ種別等）に基づいて予想される変換結果を見積もり、および／または実際の変換（またはその一部）を実行し結果を確認することにより得られる。
【０１０８】
基準に合致したら、変換システムはデータチャンクに７１４を処理し、変換済み形式のデータを含むログとして収容セクションに収容する。前に準備したログ関連情報（オフセット、サイズ等）は、変換済みおよび／または未変換形式でログ内に書き込まれる。前記情報はまた、ログ内に含まれるデータの形式の表示（例えばフラグ）を含んでもよい（例えば、変換済み、未変換、部分的に変換済み）。
【０１０９】
基準が合わなかったら（例えば、未処理データチャンクが、例えば３０ミリ秒を越える期間で変換されたり変換されうる場合、および／またはオリジナルサイズのＸ％（例えば９５％）以下に圧縮できない場合等）、変換システムは７１５で、非変換形式のデータを含むログとして収容セクションにデータチャンクを収容する。１より多いプロセスを含む変換では、データチャンクは部分的に変換された形式で収容される。例えば、図４の実施例に戻ると、オリジナルのチャンク４０２−４を圧縮チャンク４０３−４へ圧縮するのはｔｓ４で終了し、一方で圧縮チャンク４０３−３を暗号化チャンク４０４−３へと暗号化する暗号化はこの時間では終わらない。特定の実施例では、変換システムは、各データチャンクの圧縮の終了と暗号化の開始の間の遅延がゼロとなるよう変換時間に関する基準をサポートするよう構成される（および／または変換プロセス全体に制限時間を設ける）。このケースでは、変換システムは、圧縮済みチャンク４０３−３の暗号化を停止し（または開始せず）、各チャンク４０８−３を部分的に変換された形式で収容する。代替的に、変換システムはチャンクの圧縮を省略し（例えば、すべてのデータの暗号化が殊更に求められる場合）、チャンク４０２−３に含まれる非圧縮データを暗号化し、各チャンクを部分的に変換された形式で収容してもよい。
【０１１０】
変換時間に関する基準にしたがって処理することの利点は、論理データオブジェクトを所定期間内に変換できることであり、したがって、例えばデータの一体性、アクセス性、および利用可能性等を保持しつつオンライン変換を促進することができる。
【０１１１】
例えば１のログとして変換されるデータの最大長Ｌｍａｘ、および／または１のログとして変換される受信オリジナルデータの最大時間Ｔｍａｘの所定基準に合致するには、変換システムは受信データ範囲を区分化し、各セグメントを個別のチャンクとして処理するよう構成される。
【０１１２】
当業者は、本発明の特定の実施例において、所定基準に合致するかを検証する動作７１３を省略し（および／または基準を「すべてのチャンク」と設定する）、したがってすべてのデータチャンクが変換システムにより変換されるよう構成されてもよいことをすぐに理解する。
【０１１３】
与えられたデータチャンクの処理が完了した後（７１４または７１５）、圧縮システムは、インデックスセクションに記録するログ関連情報を用意する。
【０１１４】
この変換システムはさらに、未処理論理データオブジェクトが処理されていないデータを含む場合に７１６をチェックし、７１７を繰り返して以下の１以上が達成されるまで次のデータチャンクを処理する：ａ）ＬＯ内の全データが処理済みとなる；ｂ）アクティブな収容セクションに次の変換済みデータチャンクを収容するのに十分な空きスペースがない。変換システムは７１８でインデックスセクションを更新し、クライアント１１および／またはサーバ１２に確認を送り、新たなＡＳを開始したら、保護がＡＳレベルに提供される場合に前の収容セクションのデータへのアクセス保護を解除する。このインデックスセクションの更新は、新たなＡＳの配置および／またはＬＯの閉鎖および／または他の予め定められたルールに従って、確認とほぼ並行に行われる。
【０１１５】
図９で後述するように、アクティブな収容セクションの空きスペースが次のデータチャンクを収容するのに不十分である場合（例えば、ターゲットバッファのオーバフローで書き込み動作が失敗したり、前記空きスペースより予想されるログサイズの見積もりが大きかったり、空きスペースが処理されるデータチャンクまたはその一部のサイズより小さかったりする等）であって、ＬＯの全データが未だ処理されていない場合、変換システムは新たな収容セクションを割り当て、新たなデータチャンクの動作７１９を繰り返す。すべてのデータが処理されたら、変換システムはＬＯのアクセス保護を解除する（この保護がＬＯ全体にかけられている場合）。
【０１１６】
インデックスセクションのエントリは、各収容セクションに収容されたデータの変換済み／未変換／部分的に変換済みの形式の表示を含む。この表示は、収容セクション全体および／または収容された各ログについて提供される。このヘッダは、変換済みＬＯの状態に対応する表示を設けてなる。本発明の特定の実施例では、この表示は、収容セクションに収容されたデータの形式に関わらず、処理が「完了」したことを示す「ＯＦＦ」フラグ（または類似の表示）である。本発明の別の実施例では、「ＯＦＦ」フラグは、圧縮済みＬＯに含まれる収容セクションのすべてが変換済み形式のデータを収容する場合にのみ；この時点でヘッダ内のフラグ（または他の表示）が「ＯＮ」に維持されるか処理が完了した特別の表示を得るまで、提供されるが、未だいくつかのデータは変換されず、あるいは部分的に変換される。
【０１１７】
本発明の特定の実施例はさらに、１以上の収容セクションに収容された変換されていないか部分的に変換されたデータの繰り延べされた変換を具えてもよい。このような繰り延べ変換は、予め規定された／設定可能なタイムスケジュール（例えば、非ワーキング時間に）、予め規定されたイベント毎（例えば、アドミニストレータのリクエスト、予め定められ／設定可能な期間所定のＬＯにアクセス関連リクエストがない場合、利用可能なネットワーク帯域幅が予め規定され／設定可能な基準に合致する等）に従って提供されてもよい。
【０１１８】
図７を参照して説明されるプロセスは、同様に既存の論理データオブジェクトの更新にも適用可能である。
【０１１９】
本発明の特定の実施例では、基準はネガティブでもよく、例えばデータチャンクはデフォルトで所定基準（例えばデータ種別および／またはアプリケーション）に合致するまで、変換されていないか部分的に変換された形式で収容されてもよい。このような実施例の実装が、圧縮変換に関する非限定的な例として図８に示されている。
【０１２０】
８１０でＬＯを保存するリクエストを受信したら、変換システムは８１１で変換済みＬＯのヘッダを適切な保存場所に書き込み、最初の収容セクションが処理済みデータを収容するよう割り当てる。最初のヘッダのレコードは、変換ステータスの表示を含む（例えば、変換が「処理中」であることを意味するフラグ「ＯＮ」や、任意で、変換プロセスに含まれる別のプロセス余の別のフラグ等）。この変換システムはまた、８１２で収容されるデータチャンクに関する情報を用意する（例えば、オフセット、データサイズ等）。変換システムはさらに、８１３でデータチャンクを非圧縮形式のデータを含むログとして収容セクションに書き込む。任意で、動作８１３の前に、変換システムは、データチャンクが書き込み前に圧縮を必要とする予め規定された基準に合致するかを検証してもよい（義務またはさらなる基準に応じて）。変換システムはさらに、収容済みデータチャンクの全体サイズがＡＳのサイズに合致するようデータパディングを行ってもよい。
【０１２１】
変換システムはさらに、８１４で未処理論理データオブジェクトが未処理データを含むかを確認し、８１５でインデックスセクションを更新し、クライアント１１および／またはサーバ１２に確認を送る。このプロセスは８１６で、ＬＯ内の全データが処理され１またはそれ以上の収容セクションに収容され（８１７、８１６）、これにより本発明の特定の実施例にかかる変換済み論理データオブジェクトとなるまで、次のデータに繰り返される。
【０１２２】
インデックスセクションのログレコードは、収容されたログ内のデータの圧縮／非圧縮形式の表示を含み、同様に、この表示は収容セクション全体に提供されてもよい。変換システムは、非圧縮データを含む１またはそれ以上のＡＳを見つけるべく収容セクションを走査し、収容データの圧縮を行い、８１８で圧縮データを新たに割り当てたＡＳに収容する。古い収容セクションは８１８で解放され、これは図５を参照して前述されている。
【０１２３】
図９を参照すると、本発明の特定の実施例にかかる変換済み論理データオブジェクト（ＬＯ）の書き込み動作を一般化したフローチャートが示されている。「書き込み」リクエスト９０がＬＯ内のオフセットと書き込みデータの範囲Ｌを特定する。変換システムは、割り当てられた収容セクションがあるかを確認し、見つからなければ、９１でアクティブな収容セクションを割り当てる（最後のログを収容するＡＳ）。さらに、変換システムは、データ幅が１のログとして変換されるオリジナルデータの予め規定された最大長Ｌｍａｘを越えないかを確認し、オフセット、長さ、および変換されるデータを含むレコードを作成し、このレコードに割り当てられたＡＳのフラグに対応するフラグを付与し、２９で前記レコードを変換する（例えば、圧縮、暗号化、圧縮＆暗号化等）。特定の変換に適用可能であれば、圧縮は同じ辞書を用いて行われ、および／または暗号化は以前のデータチャンクと同じ暗号化鍵を用いて行われる。
【０１２４】
得られるログは、最後がこのログを収容するのに十分の空きスペースを有する場合に、９３でアクティブな収容セクションに書き込まれる。安全鍵に関する情報（もしあれば）（またはこの変換に伴う他の外部データ）はそれぞれログ内および／または収容セクション（例えばセクションのヘッダ）および／またはインデックスセクションに暗号化されない形式で保存される。
【０１２５】
空きスペースが不十分である場合（例えば、目標バッファのオーバーフローで書き込み動作失敗、予想されるログサイズの見積もりが空きスペースより大きい等）、変換システムは９４で新たな収容セクションを割り当てる。この新たなＡＳの割り当ては、図５で説明したように物理位置を付与してフラグを付与することを含む。新たなＡＳを割り当てる本発明の特定の実施例はまた、現在アクティブなＡＳ内の前記セクションへのポインタの書き込みを含む。
【０１２６】
アクティブなＡＳの空きスペースがログ全体を収容するのに不十分であるが、所定の基準には合致する場合（例えば、所定サイズ以上であったり、必要なスペース全体の所定割合以上である場合等）、変換システムは９５でオリジナルのチャンクを２つの部分に分割し、２つのログとして処理し、一方をアクティブなＡＳに書き込んで他方を新たなＡＳに書き込む。本発明の特定の実施例では、変換システムは、逆変換し（例えばアクティブなＡＳを復号化および／または解凍する）、そうでなくてもアクティブなＡＳに収容されるオリジナルデータの全体サイズを算出または見積もり、追加されるべきオリジナルデータのサイズを見積もり、これによりデータ全体の変換されたサイズが予め規定されたＡＳのサイズと実質的に合致し、したがってアクティブなＡＳを最大限埋めた分割が可能となる。
【０１２７】
アクティブなＡＳの空きスペースが前記基準に合致しない場合、ログ全体が９６で新たな収容セクションに書き込まれる。本発明の特定の実施例では、新たなＡＳの最初のログへの書き込みの後に、収容されるログの全体サイズがＡＳの予め規定されたサイズと等しくなるように、前のアクティブなＡＳが全体的および／または仮想的に最後のログの長さを「修正」したものとしてマークされる。
【０１２８】
このログが保管場所に書き込まれた後に、変換システムは９７でクライアント１１および／またはサーバ１２に確認を送る。９８でインデクスセクションの更新が、新たなＡＳの割り当ておよび／またはＬＯの閉鎖および／または他の所定のルールに従って、確認と実質的に並行して行われる。
【０１２９】
書き込まれるデータ範囲Ｌが１のログとして変換されるオリジナルデータの予め規定された最大長Ｌｍａｘを越える場合、変換システムはＬｍａｘにしたがってオリジナルデータをセグメント化し、書き込まれるデータ全部が処理され収容セクションに収容されるまで、セグメント化された各データチャンクについてプロセスを繰り返す。同様に、書き込まれるデータ範囲を受信した時間が１のログとして変換されるオリジナルデータの予め規定された受信時間Ｔｍａｘを越える場合、変換システムはデータ範囲ＬをＴｍａｘにしたがってセグメント化し、セグメント化されたチャンクそれぞれについてプロセスを繰り返す。
【０１３０】
インデックスセクションの更新は、新たなログに関するログレコードの追加と、したがって、対応する範囲に含まれるライブおよび／または古いデータに関する前のログレコードの更新を含む。この新たなログレコードは、前記ログに変換されるオリジナルのチャンクのオフセット（ＰｏｓＬ）とサイズ（ＳｉｚｅＬ）に関する情報と、同様に、同定（identification）と、任意で、対応する収容セクションのフラグを含む。適切なログレコードの更新は、以下の手続にしたがって行われる：
１）インデックスセクションのすべてのログレコード（ＰＯＳ、Ｓｉｚｅ）を見て、Ｐｏｓ≦ＰｏｓＬ＜Ｐｏｓ＋ＳｉｚｅＬの位置（Ｐｏｓ）を含むログレコードを探し：
ａ．見つかった場合に、そのログレコードを（Ｐｏｓ，ＰｏｓＬ−Ｐｏｓ）に更新し、２）へ進む；
ｂ．見つからない場合に、更新を終了する
２）ＳｉｚｅＬをＳｉｚｅ−ＰｏｓＬ−Ｐｏｓと比較し：
ａ．大きい場合に、ＰｏｓＬ≦Ｐｏｓ１＜ＰｏｓＬ＋ＳｉｚｅＬのすべてのログレコード（Ｐｏｓ１，Ｓｉｚｅ１）を探す。これらのログレコードのなかから、最大位置をもつログレコードを探し、これを（ＰｏｓＬ＋ＳｉｚｅＬ，ＳｉｚｅＬ−（ＳｉｚｅＬ−Ｐｏｓ１））に更新し、前記ログレコードの他のログを削除して更新を終了する。
ｂ．小さい場合に、（ＰｏｓＬ＋ＳｉｚｅＬ，Ｓｉｚｅ−（ＰｏｓＬ＋ＳｉｚｅＬ−Ｐｏｓ））のログレコードを追加して更新を終了する。
ｃ．等しい場合、更新を終了する。
【０１３１】
当業者は、本発明を同様に他の様々なインデックスセクション更新処理に適用してオリジナル範囲のデータとログから逆変換されるデータ間の一対一の関係を実現することを直ちに理解するであろう。例えば、この更新は以下の帰納的な処置にしたがって行われてもよい：
１）位置（ＰｏｓＬ）とサイズ（ＳｉｚｅＬ）を有する新たなログレコードを用意する。
２）インデックスセクションのすべてのログレコード（Ｐｏｓ、Ｓｉｚｅ）を見て、Ｐｏｓ≦ＰｏｓＬ＜Ｐｏｓ＋ＳｉｚｅＬの位置（Ｐｏｓ）を含むログレコードを探し：
ａ．見つかった場合に、そのログレコードを（Ｐｏｓ，ＰｏｓＬ−Ｐｏｓ）に更新し、３）へ進む；
ｂ．見つからない場合に、インデックステーブルに（ＰｏｓＬ，ＳｉｚｅＬ）を追加し、更新を終了する
２）ＳｉｚｅＬをＳｉｚｅ−ＰｏｓＬ−Ｐｏｓと比較し：
ａ．大きい場合に、（ＰｏｓＬ，Ｓｉｚｅ−ＰｏｓＬ−Ｐｏｓ）のログレコードを追加する。ＰｏｓＬを新たなＰｏｓＬ１＝Ｐｏｓ＋Ｓｉｚｅに変更し、ＳｉｚｅＬを新たなＳｉｚｅＬ１＝ＳｉｚｅＬ−（ＰｏｓＬ１−ＰｏｓＬ）に変更し、２）に戻る。
ｂ．小さい場合に、ログレコード（ＰｏｓＬ，ＳｉｚｅＬ）と（ＰｏｓＬ＋ＳｉｚｅＬ，Ｓｉｚｅ−（ＰｏｓＬ＋ＳｉｚｅＬ−Ｐｏｓ）を追加し、更新を終了する。
ｃ．等しい場合、ログレコード（ＰｏｓＬ，ＳｉｚｅＬ）を追加し、更新を終了する。
【０１３２】
本発明の特定の実施例の利点は、既に書き込まれたデータを復号化および／または解凍またはそうでなくとも逆変換することなく新たなデータを書き込むこと、および／またはそうでなくても書き込まれたデータを再書き込みすることができることにある。新たなデータのみが変換され収容され、これに伴いインデックスセクションが更新されて、変換された論理データオブジェクトを読み出す補助となるよう構成される。
【０１３３】
図１０を参照すると、本発明の特定の実施例にかかる変換済み論理データオブジェクト（ＬＯ）の読み出し動作を一般化したフローチャートが示されている。
【０１３４】
この読み出し動作は、ＬＯ内のデータのオフセットと読み出すデータの範囲を指定した読み出しリクエスト１００で開始される。変換システム１６は、すべてのインデックスセクションをアドレスし（例えば、最後のセクションや現在開いているセクションから開始したり、すべてを一緒に開いたりする等）、１０１でこの範囲内にあるデータに関連する最後に更新されたエントリをすべて検索する。図５で詳述したように、インデックスセクション内で最後に更新されたエントリは、この範囲のデータと変換済みデータチャンク（ログ）から抽出されるライブデータ（通常更新済み）との一対一の関係を実現する。したがって、変換システムは、見つかったエントリに対応する収容セクションの一つを１０２で連続的に逆変換し（例えば、復号化、解凍等）、８３で必要なデータを見つける。本発明の特定の実施例では、１０２は、読み出される範囲の一番最後にあるデータを含む収容セクションから開始される。１０４で、この範囲からのすべてのデータが見つかるまで次の収容セクションに動作１０２−１０３が繰り返される。見つかったデータは１０５でこの範囲内での順番にしたがって整列される。データが整ったら、これらは１０６でアプリケーションに送られる。
【０１３５】
本発明の特定の実施例では、保存された変換済み論理オブジェクトが最適化されてもよい。この最適化は、収容セクションを走査して（例えば、インデックスセクション内を分析する等により）、古いデータが予め規定されたパーセント（例えば９０％）以上の１またはそれ以上のＡＳを検索することにより行われる。このようなＡＳは逆変換され、ライブデータが抽出されて変換されアクティブな収容セクションに新たなログとして保存され、そして古い収容セクションが解放される。変換システムは解放された収容セクションのリストを保持し、対応する物理的な位置を新たな収容セクションを割り当てるときに使用する。図５で述べたように、新たに割り当てられたＡＳとそのログは、古い収容セクションとは反対のフラグを有する。前記最適化は、論理オブジェクトを閉じる際、予め規定されたスケジュール毎、予め規定されたイベント等で行われる。
【０１３６】
本発明の特定の実施例の利点は、収容セクションに含まれる情報に応じてインデックスセクションをリカバリ（および／または作成）できることである。例えば、開く論理データオブジェクトのリカバリフラグが「ＯＮ」である場合、変換システムはリカバリプロセスを開始する。このリカバリプロセスは、変換済み論理オブジェクトが１またはそれ以上のインデックスされていない収容セクション（すなわち、収容セクションが１以上のインデックスセクションに対応するレコードを有する１以上のログを有さない）を含むかを確認することから開始される。
【０１３７】
リカバリの間、このようなインデックスされていないＡＳのログは、最後のログから逆の順番で、反対のフラグ（すなわち、古く、解放されたＡＳに属し古いデータを含むログ）が見つかるまで連続的に逆変換される。変換システムは、逆変換されたログに対応するエントリを作成し、これらをメモリに保存し、および／またはインデックスセクションに書き込む。これらのログは再び変換（transformed back）され（および／または、リカバリされた収容セクションが読み出しデータを含む場合は、一次的に逆変換、例えば復号化、解凍等されたまま保持される）、リカバリフラグは「ＯＦＦ」に切り換えられる。
【０１３８】
例えば、新たなログが対応するインデックスセクションのログレコードとともに作成されたが、他の適切なエントリがまだ更新されないような場合に、エラーが生じうる。このような変換済み論理オブジェクトを読み出すとき、変換システムはデータ間の不整合を検出し（この範囲の同じ地点に１より多いエントリ）、直近に更新されたエントリ（同じ範囲に関する一番最近のログに対応する）にしたがってインデックスセクションを修正する。
【０１３９】
図１１ａを参照すると、具体的な読み出し時点におけるデータリクエストに応答する読み出し動作を一般化した図面である。図２−９で説明したように、新たなデータチャンクが変換され、逆変換および／またはそれ以外の既に書き込まれたデータの再書き込みを行うことなくストレージに書き込まれ、これにしたがってインデックスセクションが更新される。インデックスセクションの各エントリは、主要セクションの物理的な保存場所へのポインタ（または他のインジケータ）と、１以上のログレコードを含む。また前述したように、最後に更新されたレコードと同時に、このエントリは同じログに関する前に更新された（および／またはオリジナルの）レコードと、古いレコードと更新されたレコード間の差異の特別なマーキングとを含む。本発明の特定の実施例によると、各ログレコードは、当該ログレコードの更新時を示すタイムスタンプと、当該ログレコードに関して読み出されるデータのオフセットと長さを有するか添付されており、このエントリは同じログに関し異なるタイムスタンプを有する１またはそれ以上のログレコードを含む。このような技術の利点は、データに対して行われた変更とその時間のすべてを保有できる機能にあり、これによりユーザまたはアドミニストレータは所望の時点または時間範囲を特定ことにより履歴データにアクセスすることができる。
【０１４０】
読み出し動作は、アクセスする時点を示し読み出されるデータのオフセットと長さをそれぞれ指定した読み出しリクエスト１１０から開始される。変換システム１６は、すべてのインデックスセクションをアドレスし（例えば、最後のセクションや現在開いているセクションから開始したり、すべてを一緒に開いたりする等）、１１１で対応するエントリ、すなわちこの範囲内にあるデータに関連し指定された時間Ｔ以前のタイムスタンプを有するログレコードを具えるエントリを検索する。変換システムはさらに、１１２で前記対応するエントリ／ログから最後に更新されたエントリ／ログを選択し、１１３で選択されたエントリに対応する収容セクションの一つ連続的に逆変換し（例えば、復号化、解凍等）、１１４で必要なデータを見つけて、キャッシュに保存する。１１５で、この範囲から所望の時点に対応するデータデータのすべてが見つかるまで次の収容セクションについて１１３−１１４の動作が繰り返される。見つかったデータは１１６でこの範囲内での順番にしたがって整列される。データが整ったら、これらは１１７でアプリケーションに送られる。
【０１４１】
同様に読み出し動作はいくつかの所望時点から同時に行われてもよい。上述した実施例はオリジナルデータの異なるバージョンの読み出しが可能であるが、オリジナルデータ範囲の各時点と逆変換後のログから読み出されるデータとの一対一の関係が保持されていることに注意されたい。
【０１４２】
変換システムはさらに、図１０で述べたものと同様の方法で、保存された変換済み論理オブジェクトを最適化してもよい。この最適化は、インデックスセクション内のエントリを分析して、１またはそれ以上の古いＡＳ、すなわち所定基準に合致するタイムスタンプを有するデータが予め規定されたパーセント（例えば９０％）以上のものを検索することにより行われる。この基準は時間に関連するもの（例えば、予め規定され、および／または予め設定された時間以前のタイムスタンプ）、オリジナルデータの同じ時間に関連するタイムスタンプの数（すなわち、タイムスタンプが３つ以上、したがって過去に変更保存がないこと）、および／または所定のイベント（例えば、保存データの完全バックアップを行う）等がある。このような古いＡＳは逆変換され、ライブデータが抽出されて変換され、付随するタイムスタンプを保持しつつアクティブな収容セクションに新たなログとして保存され、そして古い収容セクションが解放される。前記最適化は、論理オブジェクトを閉じる際、予め規定されたスケジュール毎、予め規定されたイベント等で行われる。
【０１４３】
図１１ｂを参照すると、本発明の特定の実施例にかかる、タイムスタンプを有する図６ｂに示すインデックスセクションの概略図が示されている。
【０１４４】
図６ａ−ｂに示されているように、オリジナルのＬＯを構成するデータ６０１−１、６０１−２、６０１−３は、連続ログ６０８−１、６０８−２、６０８−３に変換され、収容セクション＃１に収容される。長さＬ４の新たなデータチャンク６０１−４が、オフセットＣ１から始まるオリジナルのＬＯに置換し、ここで（Ｃ１＋Ｌ４）＝Ｅ＜Ｄである。図１ｂに示すインデックスセクションは、タイムスタンプを有するログレコードを有し、範囲ＡＢ（オフセットＡ、長さＬ１）を示すログレコードが１１：００に収容されたログ６０８−１に変換され、範囲ＢＣ（オフセットＢ、長さＬ２）が１１：０１に収容されたログ６０８−２に、範囲ＣＤ（オフセットＣ、長さＬ３）が１１：１６に収容されたログ６０８−３に変換される。１２：０３に更新範囲Ｃ１Ｅ（オフセットＣ１、長さＬ４）に対応するログ６０８−４が収容され、その後関連するログレコードの更新が続く。したがって、ログ６０８−２と６０８−３のログレコードは１２：０３に更新される。この更新されたログレコードは、ログ６０８−２がオフセットＢ、長さＬ２１に対応するライブデータを含み、ログ６０８−３がオフセット＃、長さＬ３１に対応するライブデータを含むことを意味する。読み出し要求が、例えば、所望時間１２：３０を含む場合、変換システムは１２：３０以下のタイムスタンプのすべてのログレコードを検索し、どのデータが所望の時点に関連するかを示す最後に更新されたレコード（６０８−１−１、６０８−２−２、６０８−３−２、６０８−４２）を選択する。読み出し要求の所望時間が例えば１１：１０である場合、変換システムは１１：１０以下のタイムスタンプのログレコードを検索し、したがって最後に更新されたもの（６０８−１−１、６０８−２−１）を選択する。
【０１４５】
図１２ａを参照すると、本発明の特定の実施例にかかる平文チャンク（例えば、オリジナルのチャンク、圧縮済みチャンク、それ以外の変換済みチャンク）の暗号化の非限定的な実施例を示す概略図である。図の実施例では、変換システムは、平文チャンクを固定サイズＡの複数セグメントに崩し（必要な場合に、セグメントは前記固定サイズに丸められる）、チャンクの各平文セグメントを暗号化して固定サイズＢの暗号化セグメントとし、必要に応じて、この暗号化セグメントを丸めて固定サイズＢとする。図の実施例では、Ａ＝Ｂ＝１６バイトである。丸める際に、変換システムはデータセグメントのサイズ要求を満たすようパディングデータを入れる（例えば、ランダムキャラクタ、ブランク、ゼロ、ヌル）。このような実施例では、収容セクションのサイズは固定サイズＢの倍数となる。
【０１４６】
図３−６に詳細に示すように、同じ収容セクションに収容されたログは、同じ安全鍵を用いて暗号化される。このセキュリティは、例えば初期化ベクトル（initialization vector：ＩＶ）など異なるログで追加の暗号変化を導入するとさらに向上する。この初期化ベクトルは、平文ブロックシーケンスの暗号化の初期化アルゴリズムとして用いられる秘密でない連続変数である。したがって、本発明の特定の実施例では、変換システムは圧縮済みチャンクを暗号化したログへと暗号化するための安全鍵とともに用いる初期化ベクトルを取得する（例えば、ランダムナンバーとして生成する）よう構成されている。このＩＶは、各ログのヘッダに収容されている。
【０１４７】
非限定的な実施例では、変換システムは、合衆国全国科学技術情報システム（ＮＩＳＴ）によりこの分野で知られる改良暗号化基準（Advanced Encryption Standard：ＡＥＳ）を実装してもよい。このＡＥＳアルゴリズムは、１２８、１９２、２５６ビットの暗号化キーを用いて、１２８ビットのブロックデータを暗号化／復号化することができる。この分野で知られるように、ＡＥＳアルゴリズムの特定のモードは、暗号化キーでの暗号化の前に、最初のチャンクに線形に追加（ＸＯＲ）されるか平文の前に含まれる初期化ベクトル（ＩＶ）を用いることができる。したがって、変換システムは、各収容セクションの最初のログ用に初期化ベクトルを生成（例えばランダムに）し、さらにＸＯＲ動作を適用することにより連続ログにＩＶを生成可能に構成される。
【０１４８】
収容セクションは暗号化／復号化動作の原子要素として作用するため、最初のＩＶと安全鍵に関する情報は、特定の実施例では、収容セクションのヘッダに保持され、ログのヘッダに収容される必要がない。
【０１４９】
図１２ａの非限定的な例に示すように、平文チャンク（例えばオリジナルのチャンク、圧縮済みチャンク、それ以外の変換チャンク等）１２０１−１（サイズ３３バイト）、１２０１−２（サイズ５０バイト）、および１２０１−３（サイズ１７バイト）は、同じ鍵を用いて各連続ログ１２０７−１（サイズ４８バイト、１５バイトのパディングデータ＋ヘッダを含む）、１２０７−２（サイズ６４バイト、１４バイトのパディングデータ＋ヘッダを含む）、および１２０７−３（サイズ３２バイト、１５バイトのパディングデータ＋ヘッダを含む）へと暗号化され、収容セクション１２０５−１に収容される。図示するように、ログ内の暗号化データのサイズは、１６の倍数となるように丸められる。各ログは、各ログに暗号化されたオリジナルデータの実際のサイズに関する情報と、任意で、各初期化ベクトルと暗号化する前のチャンクのサイズ（オリジナルのチャンクと異なる場合）とを（例えばログヘッダ内に）有する。この暗号鍵と最初の初期化ベクトルに関する情報は収容セクション（例えばＡＳヘッダ）、および／またはインデックスセクションおよび／または変換済み論理データオブジェクトのヘッダ１２０４に保存される。
【０１５０】
図１２ｂに示す本発明の特定の実施例によると、平文チャンク１２０１−１（サイズ３３バイト）、１２０１−２（サイズ５０バイト）、および１２０１−３（サイズ１７バイト）は、図１２ａと同じ暗号化エンジンにより暗号化されるが、暗号化ログ内のパディングデータを実質的に排除しうる方法でなされる。最初の平文チャンクは２つの部分に分割され、第１の部分を以降に「プライマリデータ」と称し、これはオフセットから開始しデータセグメントサイズ要求（例えば１６バイトの倍数）を満たす連続データを含み、第２の部分は前記セグメントサイズ以下の残りのデータであって、以降は「テイルデータ」と称する（図の実施例では１６バイト以下）。第１の部分は、図３−６に記載した方法で暗号化され収容セクションに収容され、各ログを以降に「プライマリログ」と称する。テイルデータの第２の部分は別の連続チャンクとして処理され、１つのログ（以降は「テイルログ」と称す）として暗号化形式で（または暗号化せずに）収容セクションに収容される。この収容セクションのログ１２２１は、分割チャンク１２１１に対応しており、太字イタリック体の数字はそれぞれのデータサイズを示す。
【０１５１】
次のチャンクを処理するとき、暗号化システムは、テイルログから平文のテイルデータを取得し、このテイルデータを前記次のチャンクの最初に追加し、生成した組み合わせを上述の方法でプライマリデータとテイルデータに分割し、その後プライマリログ内のプライマリデータとテイルログ内のテイルデータを同じ安全鍵を用いて暗号化する。新たなプライマリログは、前のプライマリログの後の位置に収容される。ログに収容される平文データの合計の実際のサイズは、それぞれ更新される（この実施例では８３バイト）。各平文データの合計の実際のサイズは、収容セクションおよび／または暗号化した論理データオブジェクトのヘッダに保存され維持される。プライマリログの暗号化データのサイズが平文プライマリデータのサイズと等しいため、各平文データの実際のサイズに関する情報をログ内に保持する必要がない。安全鍵と最初の初期化ベクトルに関する情報は、暗号化セクション（例えばＡＳヘッダ）および／またはインデックスセクションおよび／または暗号化論理データオブジェクトのヘッダ１２０４に保存される。
【０１５２】
このプロセスは、収容セクションに十分な収容スペースがあるまでそれぞれ次のチャンクに繰り返され、例えば収容セクションのログ１２２２はチャンク１２１１および分割チャンク１２１２に対応し、一方でプライマリログ１２３２は前のプライマリログ１２３１の続きとして位置づけられる。収容セクションのログ１２２３は、チャンク１２１１、チャンク１２１２、および分割チャンク１２１３に対応し、一方でプライマリログ１２３３は前のプライマリログ１２３２の続きとして位置づけられる。したがって、収容セクションは、１（またはゼロ）のテイルログが続くプライマリログのシーケンスを具える。
【０１５３】
保存される平文チャンクを暗号化ログとして処理する方法は、同様の方法で暗号化チャンクを連続的な収容を含むストレージの論理データオブジェクトの暗号化方法およびシステムにも適用可能であることに留意されたい。
【０１５４】
図１３は、本発明の特定の実施例にかかる変換システム１６の概略機能ブロック図である。この変換システムは、セッションマネージャ１３２に接続されたクライアント入出力（Ｉ／Ｏ）ブロック１３１を具える。このＩ／Ｏブロックは、データアクセス関連リクエスト（例えば、読み出し、書き込み、ファイル端部設定／トランケート等）を受け、これをセッションマネージャに送る。
【０１５５】
あるセッションは、論理データオブジェクトへのアクセス要求（例えば、ＳＣＳＩ  ＬＵＮ容量リクエストコマンドのようなＬＵＮ容量リクエスト、オープンファイルリクエスト等）により開始し、同じＩＰアドレス（ユーザ）から遮断リクエストを受けると終了する（例えば、「ＬＵＮディスコネクト」、「ファイルクローズ」等）。セッションマネージャ１３２は、このセッションのプライベートデータのすべて、例えばソースセッションアドレス、セッションカウンタ、セッションステータス、使用バッファのすべて等を保持する。セッションマネージャはまた、論理データオブジェクトが開かれたときにすべての関連リソースをブロックし、前記リソースを分離すべく遮断する。セッションマネージャは、当該セッションマネージャに機能的に接続されたディスパッチャ１３３にすべてのリクエストを転送する。このディスパッチャ１３３は論理データオブジェクトマネージャ１３４と、バッファマネージャ１３５と、変換ユニット１３６とに機能的に接続している。本発明の特定の実施例によると、ディスパッチャ１３３は、データ関連トランザクション（例えば読み出し、書き込み、ファイル端部設定等）について論理データオブジェクトマネージャ１３４と通信し、変換動作について変換ユニット１３６と通信する。
【０１５６】
変換ユニットは、データを圧縮、暗号化、および／またはそれ以外の変換し、これらをストレージＩ／Ｏ１３８を通して物理ディスクに送り、同様にストレージＩ／Ｏを通して物理ディスクからデータを読み出し、各バッファを逆変換（復号化および／または解凍）し、任意で、オリジナルおよび／または部分的に変換されたデータチャンクをさらに処理するためにセグメント化し、および／または組み合わせることができる。この変換ユニットは、所定の変換動作について１またはそれ以上の変換ブロックを具えてもよく（例えば、暗号化／復号化ブロック１３６−２に機能的に接続された圧縮−解凍ブロック１３６−１）、前記ブロック間でデータ転送および必要な同期を実現すべく構成されている。この変換ユニットはまた、「容量ステータス」に応答して、オリジナルの論理データオブジェクトのサイズ（およびストレージの空き容量）を報告するよう構成されている。
【０１５７】
変換ユニット１３６はまた、変換プロセスに含まれるデータに関する外部情報を保存する１またはそれ以上の外部プラットフォームと通信し（例えば、鍵および／またはそのメタデータを受け取るための安全鍵等）、これらの情報を受信し、必要なデータ（例えば鍵ＩＤを抽出あるいは生成してこれらを管理するよう構成されている。受信した情報は一次的に、変換システム内の信頼されたメモリに収容され、変換ユニットのブロックは前記情報の管理を実行してもよい（例えば、特定のポリシーにしたがって特定期間前記メモリに所定の鍵を収容する管理）。本発明の特定の実施例では、暗号化／復号化ブロック１３６−２はさらに、暗号化に用いる１またはそれ以上の暗号初期化ベクトルを生成してもよい（例えば安全鍵と一緒に）。
【０１５８】
論理データオブジェクトマネージャ１３４は、異なる論理データオブジェクトおよびその部分による命令とメモリシェアリングを担う。
【０１５９】
バッファマネージャ１３５は、メモリバッファリソースを管理し、他のブロックの動作用のメモリバッファの割り当ておよび解放を担当する。変換システムはさらに、前記セッションマネージャに結合された保全マネージャ１３７と、バッファマネージャと、データブロックマネージャとを具える。この保全マネージャは、例えば論理データオブジェクトの完全性を維持等するように、変換システムの全プロセスの同期と通常管理を担当する。これはまた、メモリバッファからストレージ物理Ｉ／Ｏインタフェース１３８を通した物理ディスクへのフラッシングと、必要な場合にディスクからの読み出しを担当する。
【０１６０】
当業者であれば、本発明は図１３の構成に限定されるものではなく、他の方法で同等および／または変更した機能を併合するか分割し、ソフトウェア、ファームウェア、ハードウェア、またはその様々な組み合わせで実現しうることを直ちに理解するであろう。
【０１６１】
本発明は、本明細書の説明および図面に記載された応用例に限定されるものではない。本発明は、他の実施例に適用可能であり、様々な方法で実践され実現されうるものである。したがって、本書における語句および用語は説明目的であって、限定として認識されるべきではないことに注意すべきである。これにより、当業者はこの開示の基になる理念を、本発明の様々な目的を実現するための他の構造、方法、およびシステムの設計の礎とすることができる。
【０１６２】
また、本発明のシステムは適切にプログラムされたコンピュータであってもよい。同様に、本発明は、本発明の方法を実行するコンピュータ読み取り可能なコンピュータプログラムをも企図している。本発明はさらに、本発明の方法を実行する機械実行型の命令のプログラムを具現的に有する機械読み取り可能なメモリを企図している。
【０１６３】
当業者は、添付のクレームに規定された範囲を逸脱することなく、上述した本発明の実施例に様々な変更や変化を施すことができることを理解するであろう。
【図１】
0005623562.tif 000002
【図２ａ】
0005623562.tif 000003
【図２ｂ】
0005623562.tif 000004
【図３ａ】
0005623562.tif 000005
【図３ｂ】
0005623562.tif 000006
【図４ａ】
0005623562.tif 000007
【図４ｂ】
0005623562.tif 000008
【図４ｃ】
0005623562.tif 000009
【図４ｄ】
0005623562.tif 000010
【図５】
0005623562.tif 000011
【図６】
0005623562.tif 000012
【図７】
0005623562.tif 000013
【図８】
0005623562.tif 000014
【図９】
0005623562.tif 000015
【図１０】
0005623562.tif 000016
【図１１ａ】
0005623562.tif 000017
【図１１ｂ】
0005623562.tif 000018
【図１２ａ】
0005623562.tif 000019
【図１２ｂ】
0005623562.tif 000020
【図１３】
0005623562.tif 000021