ストレージ用論理データオブジェクトの変換方法およびシステム
【課題】ストレージ装置内に論理データオブジェクトを圧縮して保存する方法およびシステムであって、作成、読み出し、書き込み、最適化、および保存を行う。
【解決手段】オリジナルファイル201の圧縮は、ヘッダ204と1以上の予め規定されたサイズに割り当てられた圧縮セクション202−1〜202−6とを具える圧縮ファイル203をストレージ装置内に作成するステップと、1またはそれ以上の連続的に取得されるオリジナルファイル201に対応する未処理データのチャンク202−1〜202−6を圧縮して処理済みデータチャンク207−1〜207−6を生成するステップと、この処理済みデータチャンクを、チャンクが受け取られた順番に従って圧縮セクション205−1〜205−2に連続的に収容するステップであって、圧縮セクションはオリジナルファイルの入出力トランザクションにおける圧縮/解凍動作の原子要素であるステップとを具える。
【解決手段】オリジナルファイル201の圧縮は、ヘッダ204と1以上の予め規定されたサイズに割り当てられた圧縮セクション202−1〜202−6とを具える圧縮ファイル203をストレージ装置内に作成するステップと、1またはそれ以上の連続的に取得されるオリジナルファイル201に対応する未処理データのチャンク202−1〜202−6を圧縮して処理済みデータチャンク207−1〜207−6を生成するステップと、この処理済みデータチャンクを、チャンクが受け取られた順番に従って圧縮セクション205−1〜205−2に連続的に収容するステップであって、圧縮セクションはオリジナルファイルの入出力トランザクションにおける圧縮/解凍動作の原子要素であるステップとを具える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算システムに関し、特に、演算システムおよびそのネットワークに保存されるべき論理データオブジェクトを変換しうる方法およびシステムに関する。
【背景技術】
【0002】
現在のビジネス環境では、ビジネスの成功には全種類のビジネスデータがより一層重要なものとなっている。ビジネスで生成されたデータの圧倒的な成長や複雑さが情報ストレージの要求となり、これが情報資産のシェアリング、管理、および保護の方法を規定する。
【0003】
通常、単一の技術または設計では、様々な組織の要求のすべてに対処できない。主ストレージが、例えば、EMCによるWhite Paper "Leveraging Networked storage for your business"、2003年3月、米国、に開示されており、これは基本的にデータがアクセスされる位置、接続タイプ(イントラ−コンピュータストレージ、ダイレクトアタッチドストレージ(DAS)、IP、チャネルネットワーク等)、および方法により規定される。ストレージ設計にはデータアクセス方法に関して考慮すべき3つの基本タイプがある:ブロックアクセス、ファイルアクセス、オブジェクトアクセスである。
【0004】
ブロックモードアクセス構造では、サーバ/クライアントとストレージ媒体間の通信はブロック毎に行われる:情報はディスクからブロックごとに直接抽出される。管理システムがディスク状の情報の各ピースがどこにあるかのトラックを保持し、一方でストレージ媒体は通常、デバイス上のデータを管理するのに用いられるファイルシステムを自覚しない。データの読み込みや更新が必要になったら、データは、データの各ブロックがディスク上のどこにあるかとアクセス方法を知るプロセッサにより、ディスクから直接アクセスされる。ブロックモードアクセスストレージ技術の例はDAS(ダイレクトアタッチドストレージ)、SAN(ストレージエリアネットワーク)、ブロックストレージオーバーIP(例えばFCIP、iFCP、iSCSI等)、イントラメモリストレージ等である。
【0005】
ファイルアクセスには、サーバかクライアントが物理的な位置ではなく名前でファイルを要求する必要がある。結果として、ストレージ媒体(外部ストレージ装置またはコンピュータ内のストレージユニット)は通常、ファイルシステムの作成、維持、更新のためにデータブロックごとにファイルをマッピングする機能を有し、このブロックアクセスは「舞台裏」で行われる。ファイルアクセスストレージ技術の例は、NAS(NFS、CIFS、HTTP等のプロトコルを有するネットワークアタッチドストレージ)、MPFS(マルチパスファイル管理)、イントラコンピュータファイルストレージ等である。このファイルアクセスストレージは、例えば、汎用ファイル、ウェブアプリケーション、エンジニアリングアプリケーション(例えばCAD、CAM、ソフトウェア開発等)、イメージングと3Dデータ処理、マルチメディアストリーミング等のために実装される。
【0006】
オブジェクトアクセスは、ブロック、ファイル、およびアプリケーションからのストレージトポロジの詳細のすべてを隠すことによりデータアクセスをさらに単純化する。このオブジェクトアクセスは、コンテンツ管理アプリケーションにおいてAPI統合により生じる。オブジェクトアクセスストレージ技術の例は、CAS(コンテンツアドレスドストレージ)である。
【0007】
論理データオブジェクト(データファイル、イメージファイル、データブロック等)は、送信および/または保存のために変換される。この変換は、圧縮、暗号化、符号化、転換等、および/またはこれらの組み合わせを含む。例えば、データ圧縮技術を用いて保存や送信されるデータの量を減らして、ストレージ容量や転送時間をそれぞれ低減したりできる。圧縮は異なる圧縮アルゴリズムを用いて実現でき、例えば、J. ZivとA. Lempelによる「A Universal Algorithm For Sequential Data Compression」IEEE Transactions on Information Theory, IT-23, pp 337-343 (1997)に記載のような標準的な圧縮アルゴリズムがある。
【0008】
データ保存用の圧縮や保存データへのアクセスのさまざまな実装が、例えば以下の特許文献に開示されている:
米国特許番号5,813,011(Yoshida et al.)「Storage of a compressed file containing its own compression omanagement table」;
米国特許番号5,813,017(Morris et al.)「System and method for reducing storage requirement in backup subsystems utilizing segmented compression and diffrencing」;
米国特許番号5,956,504(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」;
米国特許番号6,092,071(Bolan et al.)「Dedicated input/output processor method and apparatus for access and storage of compressed data」;
米国特許番号6,115,787(Obara et al.)「Disc storage system having cache memory which stores compressed data」;
米国特許番号6,349,375(Faulkner et al.)「Compression of data in read only storage and embedded systems」;
米国特許番号6,449,689(Corcoran et al.)「System and method for efficiently storing compressed data on a hard disk drive」;
米国特許番号6,532,121(Rust et al.)「Compression algorithm with embedded meta-data for partial record operation augmented with expansion joints」;
米国特許出願番号2002/078241(Vidal et al.)「Method of accelerating media transfer」;
米国特許出願番号2004/030,813(Benveniste et al.)「Method and system for storing memory compressed data onto memory compressed disks」;
米国特許出願番号2004/054,858(Sashikanth et al.)「Method and mechanism for on-line data compression and in-place updates」;
米国特許出願番号2006/230,014(Amit et al.)「Method and system for compression of files for storage and operation on compressed files」;
米国特許出願番号2006/190,643(Amit et al.)「Method and system for compression of data for block mode access storage」
【0009】
平文で保存されたデータは潜在的に不正利用(例えば不正アクセス、不正使用、盗用等)可能であり、この分野で知られる境界および/またはアクセス管理の解決策(例えばファイアウォール、仮想プライベートネットワーク、LUN、マスキング制御、およびSANストレージネットワークにおけるゾーニング)は未だセキュリティの脆弱性を有する。保存されるデータを符号化するとセキュリティの驚異を低減すると考えられるが、このような符号化はこの分野で知られる異なるアルゴリズムを用いて提供される。データのアクセス性と管理性への影響を最小限とする保存データの符号化を用いる場合の問題は従来技術で認識されており、例えば以下の多様なシステムが解決策を提供すべく開発されている:
米国特許番号5,235,641(Kakuse et al.)「File encryption method and file cryptographic system」;
米国特許出願番号2004/153,642(Avida et al.)「Encryption based security system for network storage」;
米国特許出願番号2005/204,154(Osaki et al.)「Method and apparatus for cryptographic conversion in a data storage system」;
【0010】
論理データオブジェクトの圧縮とその符号化を組み合わせた問題もまた従来技術で認識されており、以下の多様なシステムが解決策として提供されている:
米国特許番号5,285,497(Thatcher)「Methods and apparatus for scrambling and unscrambling compressed data streams」;
米国特許番号6,122,378(Yoshiura et al.)「Method and device for compressing and ciphering data」;
米国特許番号6,154,542(Crandall)「Method and apparatus for simultaneously encrypting and compressing data」;
米国特許番号6,157,720(Yoshiura et al.)「Method and apparatus for encrypting data」;
米国特許出願番号2004/218,760(Chaudhuri)「System and method for data encryption and compression」;
米国特許出願番号2004/264,698(Oda)「Data encrypting device, data decoding device, image data storing device and image forming apparatus」;
ドイツ特許出願2,315,575(Mansour et al.)「Encryption circuit in I/O subsystem」
【発明の概要】
【0011】
本発明の特定の態様によると、1以上のストレージプロトコルおよびそのシステムを備えるストレージ装置に保存される未処理の論理データオブジェクトを圧縮する方法が提供される。この方法は:
−各リクエストに応じて、ヘッダと1以上の予め規定されたサイズに割り当てられた圧縮セクションとを具える圧縮された論理データオブジェクトをストレージ装置内に作成するステップと;
−1またはそれ以上の連続的に取得される、前記未処理の圧縮論理データオブジェクトに対応する未処理データのチャンク(chunks)を処理して処理済みデータチャンクを生成するステップであって、前記処理済みデータチャンクは前記処理の結果物である圧縮データを含むステップと;
−前記処理済みデータチャンクを、前記チャンクが受け取られた順番に従って前記圧縮セクションに連続的に収容するステップと;
−前記未処理の論理データオブジェクトと前記圧縮セクションに収容されたデータ間のマッピングを促進するステップとを具える。
【0012】
本発明のさらなる態様によると、前記マッピングは、前記圧縮論理データオブジェクトの一部を構成する1以上のインデックスセクションの補助で提供され、前記インデックスセクションは、1以上の圧縮セクションに収容された処理済みデータチャンクと、前記圧縮セクションに関する物理ストレージの位置の指示とに関する情報を少なくとも有する1以上のエントリを具える。
【0013】
本発明のさらなる態様によると、前記圧縮は、適応性の辞書の補助で提供され、同じ圧縮セクションに収容されたデータチャンクは同じ辞書の補助で圧縮される。異なる圧縮セクションに収容されたデータチャンクは、異なる辞書の補助で圧縮される。
【0014】
本発明のさらなる態様によると、処理済みデータチャンクはすべて、各圧縮動作をリセットすることなく各ストレージバッファに流される(flush)べき各処理のペンディングの出力をすべて実行(enabling)するように、前記ストレージの位置へ移動される。
【0015】
本発明のさらなる態様によると、前記処理済みデータチャンクはログ形式で収容され、ここで処理済みデータチャンクのログは、未処理論理データオブジェクト内の未処理データチャンクのオフセット(offset)に関する情報を含むログヘッダと、前記未処理チャンクのサイズと、前記ログとこのログを収容する圧縮セクションの関係を示す識別子とを具える。
【0016】
本発明のさらなる態様によると、前記インデックスセクションは、1以上の圧縮セクションに関連する1以上のエントリを具え、前記エントリは、前記圧縮セクションの物理的なストレージ位置へのインジケータ(indicator)と、前記圧縮セクションに収容された各ログに関する1またはそれ以上のログレコードとを具え、さらに前記未処理論理データオブジェクトと前記圧縮セクションに収容されたデータ間のマッピングを促進する情報を具える。
【0017】
本発明のさらなる態様によると、各圧縮セクションは、前記圧縮セクションのそれぞれの物理的な位置の使用/再使用状態を示すフラグを伴い、各処理済みデータチャンクは、当該チャンクを収容する圧縮セクションについて同じフラグを伴う。
【0018】
本発明の他の態様によると、圧縮論理データオブジェクトにデータ範囲を書き込む方法が提供され、この方法は:
−各リクエストに応じて、前記データ範囲に対応する未処理データの1またはそれ以上の連続的に取得されるチャンクを処理するステップであって、ここで処理されるデータチャンクの1以上が前記処理により得られる圧縮データを含むステップと、
−前記処理済みデータチャンクを、これらとその前に受け取ったチャンクの順番に従って連続的に収容するステップと、
−前記マッピングを、前記範囲内のデータと前記圧縮論理オブジェクトに収容された前記データチャンクから読み出されるデータとの一対一の関係を促進する方法で更新するステップとを具える。
【0019】
本発明のさらなる態様によると、前記インデックスセクションを更新する方法が:
−すべての新規なデータチャンクに関する情報を追加するステップであって、前記情報は未処理の各データチャンクのオフセットとサイズに関するステップと、
−前に取得された生存に関する情報および/または前記範囲に対応する古いデータを更新するステップとを具える。
【0020】
本発明のさらなる態様によると、圧縮論理オブジェクトからのデータ範囲を読み出す方法が提供され、この方法は:
−各リクエストに応じて、作成されおよび/または前記範囲内のデータに関するインデックスセクション内で最後に更新されたすべてのエントリを検出するステップと;
−前記検出されたエントリに対応する前記圧縮セクションの1つを解凍し、前記エントリから提供されるマッピングに応じて読み出すべきデータを抽出するステップと;
−前記範囲からすべてのデータを抽出するまで、前記検出されたエントリに対応する1またはそれ以上の圧縮セクションについて上記ステップを繰り返すステップと;
−前記抽出したデータを前記範囲における順番にしたがって配列するステップとを具える。
【0021】
本発明のさらなる態様によると、圧縮論理データオブジェクトの最適化方法が提供され、この方法は:
−所定のパーセント以上の古いデータを含む1またはそれ以上の圧縮セクションを特定し、古い圧縮セクションとするステップと;
−前記特定された古いセクションを解凍しライブデータを抽出するステップと;
−前記抽出したライブデータを圧縮して1またはそれ以上の新たな処理済みチャンクとしてアクティブセクションに連続的に収容するステップと;
−前記古い圧縮セクションを前記圧縮論理データオブジェクトから解放するステップとを具える。
【0022】
本発明の別の態様によると、圧縮論理データオブジェクトのリカバリ方法が提供され、この方法は:
−論理データオブジェクトを開くときにリカバリステータスを認識したらリカバリ処理を開始するステップと;
−変換された論理オブジェクトを1またはそれ以上のマッピングされていない圧縮セクションを検出すべく検証するステップであって、前記マッピングされていない圧縮セクションは1以上のマッピングされていない処理済みデータチャンクを具えるステップと;
−最後に処理されたデータチャンクから開始して反対のフラグのデータチャンクが見つかるまで、前記マッピングされていない圧縮セクションに含まれる前記処理済みデータチャンクを逆の順序で連続的に解凍するステップと;
−前記解凍されたチャンクを再処理するステップと;
−前記処理済み解凍データチャンクに対応する1またはそれ以上のエントリでインデックスセクションを作成するステップと;
−リカバリ成功の表示を提供するステップとを具える。
【0023】
本発明の別の態様によると、少なくとも1のストレージプロトコルで動作するストレージ装置内に未処理論理データオブジェクトを保存すべく圧縮する方法が提供され、この方法は:
−各リクエストに応じて、ヘッダと1以上の予め規定されたサイズに割り当てられた圧縮セクションとを具える圧縮された論理データオブジェクトを前記ストレージ装置内に作成するステップと;
−1またはそれ以上の連続的に取得される、前記未処理の圧縮論理データオブジェクトに対応する未処理データのチャンク(chunks)を圧縮して処理済みデータチャンクを生成するステップと;
−この処理済みデータチャンクを、前記チャンクが受け取られた順番に従って前記圧縮セクションに連続的に収容するステップであって、前記圧縮セクションは前記論理データオブジェクトの入出力トランザクションにおける圧縮/解凍動作の原子要素であるステップとを具える。
【0024】
前記方法はさらに、各圧縮セクションが、解凍されたら前記圧縮により得られるデータと、前記圧縮で得られる前記セクションに収容された各未処理データチャンク内のデータとの実質的な同一となるようにするステップを具える。
【0025】
本発明の別の態様によると、ストレージネットワークで運用可能であり上記方法を実行するよう構成されたシステムが提供される。このシステムは、通信装置、ストレージ装置、および、保存用に未処理論理データオブジェクトを圧縮でき直列方法で前記ストレージ装置に機能的に連結されたスタンドアロン型システムであって保存データに関して透過型ブリッジとして動作するシステム、等の一部であってよい。
【0026】
本発明の別の態様によると、少なくとも1のストレージプロトコルで動作するストレージ装置内に未処理論理データオブジェクトを保存すべく圧縮しうるシステムが提供され、このシステムは、
−ヘッダと1以上の予め規定されたサイズに割り当てられた圧縮セクションとを具える圧縮された論理データオブジェクトを前記ストレージ装置内に作成する手段と;
−1またはそれ以上の連続的に取得される、前記未処理の圧縮論理データオブジェクトに対応する未処理データのチャンク(chunks)を処理して処理済みデータチャンクを生成する手段であって、前記処理済みデータチャンクの少なくとも1は前記処理の結果物である圧縮データを含む手段と;
−前記処理済みデータチャンクを、前記チャンクが受け取られた順番に従って前記圧縮セクションに連続的に収容するステップと;
−前記未処理の論理データオブジェクトと前記圧縮セクションに収容されたデータ間のマッピングを促進する手段とを具える。
【図面の簡単な説明】
【0027】
本発明を理解し、どのように実施されるかを見るために、非限定的な例としてのみ、いくつかの実施例について添付の図面を参照しながら以下に説明する。
【図1】図1は、従来技術としての典型的なストレージネットワーク構造の概略ブロック図である。
【図2】図2a、2bは、本発明の特定の実施例にかかる未処理かつ圧縮された論理データオブジェクトの概略図である。
【図3】図3a、3bは、本発明の特定の実施例にかかる平文と暗号化された論理データオブジェクトの概略図である。
【図4】図4a−4dは、本発明の特定の実施例にかかる、オリジナルと圧縮/暗号化された論理データオブジェクトを示す概略図である。
【図5】図5は、本発明の特定の実施例にかかる論理データオブジェクト変換を示す概略図である。
【図6】図6a、6bは、本発明の特定の実施例にかかる論理データオブジェクトの更新と変換を示す概略図である。
【図7】図7は、本発明の特定の実施例にかかる、変換された論理データオブジェクトを作成する汎用フローチャートである。
【図8】図8は、本発明の特定の実施例にかかる処理済み論理データオブジェクトが変換されていない形態と変換された形態で収容された概略図である。
【図9】図9は、本発明の特定の実施例にかかる変換済み論理データオブジェクトの書き込み動作の汎用フローチャートである。
【図10】図10は、本発明の特定の実施例にかかる変換済み論理データオブジェクトの読み出し動作の汎用フローチャートである。
【図11】図11aは、本発明の特定の実施例にかかる特定の時間における読み出し動作を一般化したフローチャートである。図11bは、本発明の特定の実施例にかかる、他無スタンプを有するインデックスセクションの概略図である。
【図12】図12a、12bは、本発明の特定の実施例にかかる符号化変換の非限定的な例の概略図である。
【図13】図13は、本発明の特定の実施例にかかる変換システムの機能的ブロック概略図である。
【発明を実施するための形態】
【0028】
以下の詳細な説明において、多くの具体的な詳細が本発明の完全な理解を得るために記載される。しかしながら、当業者であれば本発明はこれらの特定の詳細なしに実施しうることを理解するであろう。別の例では、公知の方法、処理、要素、および回路は、本発明を不明瞭にしないように詳述されていない。図面と説明では、同一の参照番号は異なる実施例や構成でも共通であることを示す。
【0029】
他に明記しない限り、以下の説明から明らかなように、本明細書中で例えば「処理する」「演算する」「算出する」「決定する」「生成する」「作成する」等の語は、コンピュータまたはコンピュータシステムや、演算システムのレジスタおよび/またはメモリ内の電子的などの物理的な量に表されるデータを、同様に演算システムのメモリやレジスタまたはこのような他の情報の保存、転送、または表示装置内の物理量に表される他のデータにマニピュレートおよび/または変換するプロセッサまたは類似の電子演算装置の動作および/またはプロセスをいう。
【0030】
本発明の実施例では、本書における動作を実行するのにプロセッサ、コンピュータ、装置、システム、サブシステム、モジュール、ユニット、デバイス等の語を用いる(単数または複数で)。これは特に所望の目的用に構成されたものであってもよいし、またはコンピュータ内に保存されたコンピュータプログラムにより選択的にアクティベートまたは再構成される汎用コンピュータを具えてもよい。このようなコンピュータプログラムは、例えば、限定しないが光ディスク、CD−ROM、磁気光ディスクを含む様々な種類のディスク、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、電気的プログラム可能なリードオンリーメモリ(EPROM)、電気的に消去とプログラム可能なリードオンリーメモリ(EEPROM)、磁気または光学カード、または電子的な命令を保存するのに適しコンピュータのシステムバスに接続可能な様々な媒体などのコンピュータ可読媒体に保存される。
【0031】
本書に記載のプロセス/デバイス(または上記の類似物)およびディスプレイは、特に他に明記しない限り、特定のコンピュータまたは他の装置に本来的に関連するものではない。様々な汎用システムを、本書の示唆にしたがったプログラムとともに用いることができるし、所望の方法を実行するのにより特化した装置を構成した方が便利かもしれない。これらのシステムの多様性に即した所望の構成は、以下に説明される。さらに、本発明の実施例は特に具体的なプログラム言語で記載されていない。多様なプログラム言語を用いて本書に記載した本発明の教示を実現することができる。
【0032】
背景技術で引用した文献は、本発明に適用可能な多くの符号化・圧縮理論を教示する。このため、これらの出願の内容全体が、適切な追加の教唆または大体構成、構造、および/または技術的背景に適した状態で、参照により組み込まれる。
【0033】
この特許明細書において「基準」の語は、様々な複合的な基準をカバーすると広く解釈されるべきであり、例えば、いくつかの基準および/またはその組み合わせを含む。
【0034】
この特許明細書において「論理データオブジェクト(LO)」の語は、演算システムで用いられ1のユニットとして扱われる複数のデータユニットの様々な種類およびグラニュール数(granularities)を含むべく広く解釈されるべきである(例えばデータファイル、アーカイブファイル、イメージファイル、データベースファイル、メモリデータブロック、ストリームデータブロック等)。
【0035】
これを念頭に、図1に注目すると、従来の典型的なストレージネットワーク構造の概略図が示されている。クライアント11および/またはサーバ12からの論理データオブジェクト(LO)は、ネットワーク13を介してストレージ装置14(例えば、特化したNASファイルサーバ、汎用ファイルサーバ、SANストレージ、ストリームストレージ装置等)に転送される。このネットワークは、データ転送を実現するための1またはそれ以上の通信装置15(例えばスイッチ、ルータ、ブリッジ等)を具える。図示するネットワークのストレージは全体または部分的に、ブロックモードアクセスおよび/またはファイルモードアクセスストレージプロトコルを用いるよう実装されている。ファイルモードアクセスでは、論理データオブジェクト(LO)は複数ファイルで構成され、ネットワークはIPネットワーク(例えば、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、またはその組み合わせ等)である。ブロックモードアクセスの実施例では、論理データオブジェクトはデータブロックから構成され、ネットワークは、例えばファイバチャネルまたはiSCSIプロトコルを実装するストレージエリアネットワーク(SAN)である。特定の実施例では、ストレージ装置14aはサーバ12にブロックモードアクセスストレージプロトコル(例えばSCSI、ファイバチャネル等)を介して直接接続される。このようなダイレクトアクセスストレージは、例えば、内部取り付け型ローカルディスクドライブや、外部取り付け型RAID(redundant array of independent disks)またはJBOD(just a bunch of disks)等を含む。
【0036】
論理データオブジェクトの少なくとも一部は、変換された形式で保存される(例えば、圧縮形式および/または符号化形式)。したがって、これらはクライアント/サーバとストレージ間の場所にある物理的または論理的な通信ルート上で変換(圧縮/解凍、および/または、符号化/復号化)される。この変換またはその一部は、例えば、サーバ12,通信装置15、クライアント/サーバとストレージ装置に機能的に連結された変換システム16、またはストレージ装置14により提供される。通常、符号化に用いられる安全鍵は符号化および/または保存を行う装置とは別に保持され、これらは転送プラットフォーム16に機能的に接続された鍵保持プラットフォーム17で保管される。同様に、符号化テーブルや変換プロセスに含まれる外部データは、処理および/またはストレージ装置とは別に保管される。
【0037】
本発明は、図1に記載の具体的な構造に限定されないことに留意されたい。当業者は、本発明を同様に、コンピュータが送る論理データオブジェクトへのアクセス要求と適切な変換データの保存場所の間の物理的および/または論理的な経路で1以上の論理データオブジェクトを変換する様々な演算システムや様々なストレージネットワーク構造に適用可能であることを理解し、この場合に変換(例えば圧縮および/または符号化)と保存が同じ物理的位置で提供される実施例を含む。
【0038】
図2a−2b、3a−3b、4a−4dは、本発明の特定の実施例にかかるオリジナルと変換済みの論理データオブジェクトを示す概略図である。この変換は、圧縮、符号化、暗号化、コンバージョン等、および/またはこれらの組み合わせを含む。図2a−2bに記載の変換は論理データオブジェクトの圧縮であり、図3a−3bは論理データオブジェクトの符号化であり、図4a−4dに記載の変換は圧縮と符号化の組み合わせを含む。説明目的のためだけに、以下の記載は変換システム16により論理データオブジェクトを処理し、処理済みデータをストレージ装置14へ書き込み、逆変換(例えば復号化や解凍等)すべきデータをストレージ装置から読み出し、変換システム16によりこれらを逆変換することに関する。しかしながら、本発明は同様の方法で、コンピュータが送るLOへのアクセスに関するリクエスト(例えば、開く、読み出す、書き込む等)と適切な変換済みデータの保管場所の間の物理的および/または論理的なルート(当該ルートの終点を含む)に機能的に配置された様々な目的の装置により提供される変換/逆変換に適用してもよい。この変換システムの開示された機能は、異なる方法で提供されてもよい。例えば、変換システム16は、「とりわけ」前記装置の1またはそれ以上に組み込まれてもよく、変換システムの機能は1またはそれ以上の専用の基盤に実装されてもよく、1以上の装置の別のモジュール間に(完全または部分的に)配分等されてもよい。この統合は異なる方法で提供されてもよいし、ソフトウェアおよび/またはファームウェアおよび/またはハードウェアで実装されてもよい。この統合は、様々なストレージネットワーク要素(例えば、ファイルサーバ、エンタープライズおよびネットワークスイッチ、ルータ、ストレージ装置等)等で提供されてもよい。
【0039】
また、本発明は同様に、前記ルート上の様々な装置のメモリに処理済みデータを書き込み、変換されたLO全体またはその部分を保存すべく保存場所に送信可能であり、同様に読み出されるべき変換済みデータを保存場所から前記ルート上の様々な装置に送って逆変換させることができる。
【0040】
単に説明目的のため、以下の記述は、適用型辞書ベースのデータ圧縮アルゴリズム(例えばLempel−Ziv)に関する。本発明はこのアルゴリズムに限定するものではないが、同様に、様々な他の連続データ圧縮アルゴリズムに適用可能である。この適用型辞書ベースの圧縮アルゴリズムを用いる実施例の利点は、圧縮/解凍パフォーマンスを稼げることにある。
【0041】
また単に説明目的におため、以下の説明は秘密鍵対称アルゴリズムを用いるブロック暗号に関する(例えば、IDEA−国際データ符号化アルゴリズム)。ただし本発明はこのアルゴリズムに限定されるものではなく、同様に、平文データのブロックを複数セグメントに崩して、このブロックの各平文セグメントを暗号テキストのセグメントに変換する他の様々な対称または非対称の符号化アルゴリズムに適用可能である。
【0042】
図2a、3a、4a、4bは、ファイルモードアクセスに関する本発明の特定の実施例にかかる論理データオブジェクトのオリジナルと変換済みを示す概略図である。変換システム16は、ファイル呼び出し動作(ファイルアクセスに関するリクエスト)と同様にいくつかの制御トランザクション(例えばファイル終了設定)を傍受し、特定のトランザクションのプロキシとして動作する(例えば、大部分の制御トランザクションのスループットを維持し、データトランザクションと特定の制御トランザクションを代理する)。この変換システムは、傍受されたファイルアクセスに関するリクエストに対応する処理データの配信、処理済みデータをストレージ媒体に1以上の変換済みファイルとして保存するファイルシステムと、および/またはそのなかで通信を実現し、および/または傍受したファイルリクエストに対応する処理済みデータの少なくとも一部の逆変換を実現可能である。保存処理されるファイルへの「書き込み」動作では、変換システム16はネットワーク13を通してクライアント11および/またはサーバ12から前記ファイルに対応するデータを受け取り、このデータを変換してファイルストレージ装置14で書き込みを実現する。「読み出し」動作は、逆方向に処理され、要求されたファイルは変換システムにより取得され、逆変換され(要求されたデータ範囲に応じて部分的または全体的に)、適切なクライアント/サーバに送られる。適切であれば、変換システムは、変換プロセスに含まれる外部データ(例えば、変換に用いられる安全鍵および/または安全値または他のメタデータ)を取得するための外部プラットフォーム(例えば鍵保持プラットフォーム17)と通信可能である。
【0043】
図2b、3b、4c、4dは、ブロックモードアクセスに関する本発明の特定の実施例にかかる論理データオブジェクトのオリジナルと変換済みを示す概略図である。この分野で周知のように、通常のストレージシステムとネットワークは、ストレージの分割管理を認識可能である。1のストレージディスクまたはディスクセットを、観念的に論理ユニットに分割できる。このストレージ論理ユニット(LU)は、直接的にボリュームドライブ、ホストアプリケーション、ストレージ装置等に対応し、物理ストレージの論理的表現(representative)を構成する。各論理ユニットは、論理ユニット番号として知られるアドレスを有し、これによりユニークに特定できるようになる。ユーザはLUNがディスクドライブか、複数のディスクドライブか、1のディスクドライブのパーティションか、これらの組み合わせかを指定することができる。本発明の特定の実施例では1以上のLUが変換データを収容し、一方で変換システムは、ストレージ論理ユニットに関して、ストレージ論理ユニットに保存されたデータの非変換形式(すなわちオリジナルデータ)を仮想的に表すよう構成された対応する仮想論理ユニット(VLU)を作成し、ストレージ論理ユニットに向けたデータアクセスに関するリクエストを傍受して前記リクエストを前記仮想論理ユニットにアドレスし、仮想論理ユニットにおいて変換済みデータとその非変換仮想表現の間のマッピングを実行する。したがって、本発明の特定の態様によると、コンピュータのオペレーティングシステム(OS)は、非変換データ(オリジナルLO)の仮想表現としてVLUに関することとなる。
【0044】
VLUとLUのサイズ比は予め定められてもよいし、および/または変換プロセス中に調整されてもよい。例えば、圧縮変換に関する図2bを参照して詳述するように、LUとVLUのサイズ比は所望の圧縮レートに応じて定められ(例えば、仮想論理ユニットのサイズは、圧縮される未処理データの見積もりサイズに対応し、実質的にストレージ論理ユニットのサイズの量である)、現実の圧縮比に対応して調節されてもよい。
【0045】
単に説明目的のため、以下の記載は、オリジナルデータの各チャンクが到着時に変換され、実質的にキャッシュにデータを保持することなく他の受信されたチャンクの処理とは独立して、変換形式で保存場所に書き込まれる特定の実施例に関する。同様に本発明は、例えば、受け取られたチャンクが処理の前および/またはストレージ装置への書き込み前に組み合わされ(例えばサイズ基準に応じて)分割される場合にも適用可能である。変換されるべきデータのサイズと、1のポーションとして書き込まれるべき変換済みデータのサイズ(および/または1のポーションとして書き込まれるオリジナルデータのサイズ)は、特定の基準によって構成可能である(例えば、変換システムおよび/またはストレージ装置のI/Oバッファのサイズ、変換エンジンの特性、設定可能なランタイム、ストレージネットワークの特性、入出力トラフィックの種類等)。変換システムは、保存場所への書き込みデータの確認を異なるモードで行ってもよく、例えば各書き込みポーション毎、所定/設定可能なポーション数毎、所定/設定可能なランタイム毎等であり、例えばストレージネットワークのプロトコルやそのトラフィックに依存する。また、本発明の特定の実施例では(例えば図7を参照してさらに詳述する)、特定の基準に合致するデータチャンクが、変換の失敗または変換処理の省略により非変換形式で保存される。
【0046】
これを念頭に、図2aに注目すると、ファイルモードアクセスに関する本発明の特定の実施例にかかる未処理かつ圧縮された論理データオブジェクトの概略図が示されている。非圧縮LO(図示の実施例における未処理ファイル201)に含まれるデータのチャンク(202−1〜202−6)が、連続的に処理された圧縮データチャンク(207−1〜207−6)となり所定サイズのブロック205−1〜205−2に収容される(以降に圧縮セクション(CS)と称す)。図7に詳細を示すように、処理済みデータのいくつかのチャンクは、特定の基準に合致しない場合に非圧縮形式で収容される(例えば、得られる圧縮比が所定の値以下である場合等)。
【0047】
前記圧縮セクションは、ファイルの入出力トランザクション中に圧縮/解凍の原子要素として作用する。圧縮処理は、圧縮セクションの解凍と、圧縮の結果として前記セクションに収容されたオリジナルデータとの間の実質的な同一性を可能とするように提供される(例えば、図示の実施例では圧縮セクション205−1の解凍で得られるデータは、チャンク202−1、201−2、および201−3に含まれるオリジナルデータと実質同一である)。
【0048】
圧縮セクションのサイズは設定可能である;圧縮セクションが大きいと処理オーバーヘッドが低く圧縮比が高くなり、圧縮セクションが小さいと効率的なアクセスが可能となるが処理オーバーヘッドが高くなる。圧縮セクションのサイズは、特定の時間に関する基準に応じて予め規定されてもよい(例えば、圧縮すべきデータを圧縮するのにかかる予定時間が、実質的に圧縮セクションのサイズの大きさとなる等)。
【0049】
本発明の特定の実施例では、予め定められるセクションのサイズは、すべての圧縮セクションで等しい(例えば、非限定的な実施例では、圧縮セクションは1MBに等しいサイズをもつ)。代替的に、本発明の特定の実施例では、予め規定されるサイズは異なる圧縮セクションで異なる。例えば、データ(例えばテキスト、画像、音声、組み合わせ等)または論理データオブジェクトの種類毎に圧縮セクションの予め規定されたサイズに対応し、変換システムは圧縮時に圧縮セクションの適切なサイズを圧縮される未処理ファイルのそれぞれの部分を占めるデータ種類(またはLOの種類)に応じて選択してもよい。任意で、圧縮プロセスは、例えば異なる圧縮セクションに収容された圧縮データチャンクに最適化した圧縮アルゴリズムを提供する適応能力を具えてもよい(例えば、音声、テキスト、画像等のセクションに最も適した異なる圧縮アルゴリズム)。
【0050】
圧縮セクションに収容される圧縮データの現実の合計サイズは、図9を参照して後述するように、圧縮セクションに予め定めたサイズより小さい。
【0051】
本発明の特定の実施例によると、処理済みのチャンク(207−1〜207−6)は、各入力チャンク(202−1〜202−6)の受け取り順に圧縮セクションに収容され、この収容はログ形式、ジャーナル形式、または連続収容の他の形式で提供されてもよい。圧縮されたLO(図の実施例では圧縮ファイル203)は、ヘッド204と、1以上のインデックスセクション(IS)206とを具える。圧縮ファイルのヘッダ204は、ユニークなファイル記述子と、このファイルが現在開かれているか(またはリカバリ状態か)を示すフラグと、未処理ファイル201のサイズに関する情報と、任意で、このファイルが変換システム16により処理されたかを示すサイン(例えば得られる圧縮比が所定の値以下であるため、特定の基準に合わず変換システムにより圧縮されていないファイルも)等を具える。本発明の特定の実施例では、ヘッダは固定の長さを有する。このヘッダとインデックスセクションは、図5−10を参照して詳述される。
【0052】
本発明の別の実施例では(圧縮/解凍機能がストレージ装置等と一体化している特定の実施例)、ヘッダ204またはそのいかなる部分や組み合わせが、ファイルシステムの一部を構成する。例えば、特定のファイルシステムに用いられるファイル識別子(例えばノードID)が、圧縮ファイルのユニークなファイル記述子として用いることができ、ファイルシステム内のファイルレコードは、例えば未処理ファイルのサイズに関する情報や前記サイン等の更なるフィールドを具えるように変更されている。そのインデックスセクションまたは部分もまた、ファイルシステムの一部を構成する。
【0053】
図2bは、ブロックモードアクセスの本発明の特定の実施例にかかる未処理かつ圧縮された論理データオブジェクトの概略図である。未圧縮(未処理)のLOに含まれるデータのチャンクは連続的に圧縮データチャンクへと処理され(217−1〜217−6)、予め規定されたサイズかつ図2aで説明した圧縮セクションと同様に、ブロック215−1〜215−2(以降は圧縮セクションと称す。)に収容される。処理済みデータチャンク(217−1〜217−6)に対応する前記未圧縮のチャンクは、データチャンク(212−1〜212−6)としてVLU211に仮想的に表現される。圧縮セクションは、データブロックの入出力トランザクション(データアクセスに関するリクエスト)中に圧縮/解凍動作の原子要素として作用する。VLUとLUのサイズ比は、特定の基準(例えば、圧縮データブロックを占めるデータ種別、前記データに得られる最大または最小圧縮比)に応じて予め規定してもよいし、圧縮プロセス中に調整されてもよい。非限定的な実施例では、本発明の特定の実施例において見積もられるVLUとLUのサイズ比は電子メールで約3、テキスト形式データでは8等になる。具体的なケースでは、圧縮データと未処理データの実際の比は見積もられた比よりも低くなりうる(および/または、なる)。この差は、ストレージ論理ユニットのオーバーフローの原因となり、コンピュータのオペレーティングシステム(OS)が、LUが実際に一杯となったときにVLUにまだ空いたスペースがあることを示すこととなる。したがって、変換システム16は、オーバーフローイベントの発生を検出するよう構成され(例えば、現実の圧縮レートとLUの空きスペースを検出することにより)、LUの空き容量が特定の基準に合わない(例えば、予め規定されたサイズより小さい)場合にストレージ論理ユニットを拡大する。変換システムはさらに、前記LUの拡大の失敗を検出するよう構成され(例えば、追加のディスクスペースが取得できなかったり、ストレージ装置がダイナミックLU変更をサポートしていないため)、LUのアクセス状態を「リードオンリー」に変更し、LUの空き容量が上記基準に合致するまでこの状態を保持する。同様に、この変換システムは、圧縮データと未処理データの現実の比が見積もられる比より高い場合に、LUの空きスペースを解放するよう構成されてもよい。
【0054】
図2aを参照して説明したのと同様に、圧縮されたチャンクは、各入力チャンクの受け取り順に従って圧縮セクション内に収容され、この収容はログ形式、ジャーナル形式、または他の連続収容形式で提供される。圧縮されたLO(LU213)は、ヘッダ214と、1以上の圧縮セクション215と、インデックスセクション216と、空きスペース218とを有する。ヘッダ214は、論理ユニット番号(LUN)を含むユニークな記述子と、仮想論理ユニット(VLU)のサイズと、LUのサイズと(任意)、オープン/リカバリフラッグと、保存データの少なくとも一部が変換システム16により処理されたかを示すサイン等を含む。このヘッダの長さは一定である(例えば非限定的な例では24バイトであり、4バイトが前記サイン、16バイトが前記ユニークな識別子、4バイトが対応する仮想論理ユニットのサイズに関する情報)。
【0055】
本発明の他の実施例では(例えば、圧縮/解凍機能はストレージ装置と一体化される等の特定の実施例)、ヘッダ214またはそのいずれかの部分およびその組み合わせはディスク属性の一部を構成し、インデックスセクション216がディスク属性の一部を構成してもよい。
【0056】
したがって、オリジナルの論理データオブジェクト(LO)に含まれる様々な種類のデータのチャンクは、連続的に圧縮され、予め規定されたサイズの1またはそれ以上の圧縮セクションに受け取り順に収容される。この圧縮処理は、解凍されたときの圧縮セクションと、圧縮で得られる前記セクションに収容されたオリジナルデータが実質同一となるように構成される。同じ圧縮セクションに収容されたチャンクは、同じ辞書を用いて圧縮される。図6でさらに詳述するように、インデックスセクションの情報は、オリジナルのデータ範囲と解凍後にログから読み出されるデータが一対一の関係となるようにする。圧縮されたデータチャンクは、圧縮動作をリセットすることなく出力(ストレージ)バッファに流されるべきすべてのペンディングの出力を実現する「同期フラッシュ(sync-flush)」モードで保存場所に移動される。したがって、この圧縮バッファの同期フラッシュにより、データの完全性を実現しつつ圧縮セクション内で同じ辞書の使用を可能となる。同期フラッシュは様々な方法で実施されてもよく、これらのいくつかがこの分野で知られている(例えば、ZLIB圧縮ライブラリで提供されるデフレート/インフレート機能にZ_SYNC_FLUSHパラメータを適用することによる、ZLIB.H−「zlib」汎用圧縮ライブラリのインタフェース、バージョン1.2.3、2005年7月18日、著作権(C)1995−2005Jean-Loup Gailly and Mark Adler)。
【0057】
本発明の特定の実施例では、圧縮されるデータの最初のkバイトは辞書として使用される。同じ辞書がさらに、処理/圧縮される連続データの最初と以降のチャンク全部の圧縮に用いられ、この辞書は例えばLempel−Zivアルゴリズムで処理されたデータにしたがって調整される。プロセスは、圧縮データの合計サイズが圧縮セクションの予め規定されたサイズとなるまで継続される。圧縮データの次のチャンクは、次の圧縮セクションに収容される。次のチャンクの最初のkバイトは、次の圧縮セクションに収容されるデータを圧縮するのに用いられる辞書を更新するのに用いられる。本発明の特定の実施例では、新たな圧縮セクションにおいて開始される新たな圧縮シーケンスは、直前のシーケンスと同じ初期圧縮辞書を用いてもよい。
【0058】
本発明の特定の実施例では、異なる圧縮セクションのデータに対応する複数の辞書は、適切な圧縮セクションへの一定のポインタを含む全体の辞書として保持されてもよい。この全体辞書は、1以上のインデックスセクションに収容されてもよいし、異なるインデックスセクションおよび/または圧縮セクション間に分配されてもよい。代替的に、辞書はそれぞれ1以上の圧縮セクションに対応するいくつかの個別に管理される辞書に分割されてもよい。インデックスセクションの特定の実施例では、当該インデックスセクションに付随する圧縮セクションのデータのみに対応する1以上の辞書を収容する。いくつかの実施例では、各圧縮セクションが当該セクションに保存されるデータに関連する1の辞書を含む。
【0059】
本発明の特定の実施例では、未処理データの受け取られた部分がそれぞれ、受け取られ、処理され、所定の基準に合致する場合に圧縮され、殆どキャッシュ内にデータを保持することなく、かつ他の受信部分の処理とは独立して保存場所に書き込まれる。本発明の別の実施例では、いくつかの受け取られた部分が一緒に処理され、1つの圧縮部分としてストレージに書き込まれる。
【0060】
本発明の特定の実施例の利点は、比較的小さなデータチャンクを処理し書き込めるなかで、比較的大きなデータ量(圧縮セクション)に対する圧縮機能を得られることであり、同時に同じ適応性辞書を用いるデータチャンクの連続圧縮により実現する向上した圧縮比を得られることである。
【0061】
図3aは、ファイルモードアクセスの本発明の特定の実施例にかかるオリジナルと暗号化した論理データオブジェクトの概略図である。平文LO(図の実施例では平文ファイル301)に含まれるデータのチャンク(302−1〜302−4)は、連続的に処理されて暗号化データチャンク(307−1〜307−4)となり、ブロック305−1、305−2に収容される(以降は予め規定されたサイズの暗号化セクション(ES)と称す)。図7を参照して詳述するが、処理済みデータのいくつかのチャンクは、所定の基準に合わない場合には非暗号化形式で収容される。
【0062】
図2a、2bを参照して記載した圧縮セクションと同様に、この暗号化セクションは、ファイルの入出力トランザクションにおいて暗号化/復号化動作の原子要素として作用する。暗号化セクションのサイズは調整可能であり、暗号化セクションが小さいと効率的にアクセスできるが処理オーバーヘッドが高くなる。本発明の特定の実施例では、予め規定されるサイズは、すべての暗号化セクションで同じであってもよい(例えば非限定的な実施例では、暗号化セクションは1MBである)。代替的に、本発明の特定の実施例では、暗号化セクションの所定サイズは変化してもよい。例えば、それぞれの種類のデータが暗号化セクションの所定サイズに対応し、変換システムは暗号化中に、暗号化される平文ファイルの各チャンク(またはチャンク群)を占めるデータ種類に応じて暗号化セクションの適切なサイズを選択する。
【0063】
本発明の特定の実施例によると、処理/暗号化されたチャンク(307−1〜307−4)は、平文データの各チャンクの受け取り順に従って暗号化セクションに収容され、この収容はログ形式、ジャーナル形式等で行われる。暗号化されたLO(図の実施例では暗号化ファイル303)は、ヘッダ304と、1またはそれ以上の暗号化セクション305と、1またはそれ以上のインデックスセクション(IS)306とを具える。暗号化ファイルのヘッダ304は、ユニークなファイル識別子と、このファイルが現在開いているか(またはリカバリ状態か)を示すフラグと、平文ファイル301に関する情報と、任意で、このファイルが変換システム16により処理されたかを示すサインとを具える(例えば所定の許可マーク、所定のファイル種別等の所定の基準に合わないとして変換システムにより暗号化されなかったファイルについても)。本発明の特定の実施例では、ヘッダの長さは固定である。このヘッダとインデックスセクションは、図5−10を参照して詳述される。
【0064】
本発明の他の実施例(暗号化/復号化機能がストレージ装置に組み込まれている等の特定の実施例)では、ヘッダ304またはその一部およびその組み合わせは、ファイルシステムの一部を構成してもよい。例えば、特定のファイルシステムに用いられるファイル識別子(例えばノードID)は、暗号化ファイルのユニークなファイル識別子として用いられてもよく、ファイルシステム内のファイルレコードは変更されて例えば平文テキストのサイズに関する情報や前記サイン等の新たなフィールドを具えてもよい。
【0065】
図3bは、ブロックモードアクセスの本発明の特定の実施例にかかる平文と暗号化された論理データオブジェクトの概略図である。平文LOに含まれるデータのチャンクは連続的に暗号化データチャンクへと処理され(317−1〜317−6)、予め規定されたサイズかつ図2aで説明した圧縮セクションと同様に、受け取り順にブロック315−1、315−2(以降は暗号化セクションと称す)に収容される。処理済みデータチャンク(317−1〜317−4)に対応する前記平文チャンクは、データチャンク(312−1〜212−4)としてVLU311に仮想的に表現される。
【0066】
暗号化されたLO(LU313)は、ヘッダ314と、1またはそれ以上の暗号化セクション315と、インデックスセクション316と、空きスペース318とを有する。ヘッダ314は、論理ユニット番号(LUN)を含むユニークな記述子と、仮想論理ユニット(VLU)のサイズと、LUのサイズと(任意)、オープン/リカバリフラッグと、保存データの少なくとも一部が変換システム16により処理されたかを示すサイン等を含む。このヘッダとインデックスセクションは、図5−10を参照して詳述される。
【0067】
本発明の他の実施例では(例えば、暗号化/復号化機能はストレージ装置と一体化される等の特定の実施例)、ヘッダ314またはそのいずれかの部分およびその組み合わせはディスク属性の一部を構成し、および/または、インデックスセクション316がディスク属性の一部を構成する。
【0068】
したがって、オリジナルの論理データオブジェクト(LO)に含まれる様々な種類のデータのチャンクは、連続的に暗号化され、予め規定されたサイズの1またはそれ以上の圧縮セクションに受け取り順に収容される。
【0069】
この暗号化処理は、復号化されたときの暗号化セクションと、暗号化で得られる前記セクションに収容された平文データが実質同一となるように構成される。
【0070】
ブロック暗号化アルゴリズムが、受信チャンクの平文データを固定サイズのセグメント(例えば16バイト)に崩し、このチャンクの各平文セグメントを固定サイズBの暗号化セグメントへと暗号化する。図の実施例では、変換システムは、暗号化セグメントが前記固定サイズBに必要な場合に(例えばパディングデータを入れることにより)ラウンド可能である。連続データの最初と次のチャンクは同じ安全鍵を用いて暗号化され、1の暗号化セクションに収容される。このプロセスは、暗号化データの合計サイズが実質的に暗号化セクションの予め規定されたサイズとなるまで継続される。暗号化データの次のチャンクは、次の暗号化セクションに収容される。異なる暗号化セクションのデータは、同じか異なる安全鍵を用いて暗号化されてもよい。また、図6を参照して詳述するように、インデックスセクションの情報は、オリジナルのデータ範囲の各地点と復号化後にログから読み出されるデータが一対一の関係となるようにする。
【0071】
この暗号化プロセスは、図12a、12bを参照してさらに詳述される。
【0072】
図4a−4bは、ファイルモードアクセスの本発明の特定の実施例にかかる論理データオブジェクトのオリジナルと変換済みを示す概略図であり、この変換は圧縮と暗号化を含んでいる。
【0073】
オリジナルのLO(図の実施例のオリジナルファイル401)に含まれるデータのチャンク(図4aの402−1〜402−4)は、連続的にデータチャンク(図4bの408−1〜408−4)に変換され、予め規定されたサイズのブロック406−1、406−2に収容される。図2a−2bで説明した圧縮セクションや、図3a−3bで説明した暗号化セクションと同様に、これらのブロックはファイルの入出力トランザクション中に圧縮/解凍および暗号化/復号化の原子要素として作用する。以下の説明において、「収容セクション(AS)」の語は、変換されたデータチャンク(上述した圧縮セクションや暗号化セクションを含む)を収容すべく構成された様々な保存ブロックであって、本発明の特定の実施例にかかる変換/逆変換の動作の原子要素として動作するものを含む。この収容セクションの予め規定されるサイズは等しくてもよいし、代替的に、変換処理中に変換システムが予め規定される基準に従って特定の収容セクションの規定サイズを選択してもよい。
【0074】
オリジナルのデータチャンク(401−1〜402−4)を保存データチャンク(408−1〜408−4)に変換するには2つの処理を含む。1)オリジナルのチャンクを圧縮データチャンク(403−1〜403−4)へと圧縮するステップと、2)圧縮データチャンク(403−1〜403−4)を暗号化して、収容される暗号化チャンク(404−1〜404−4)とするステップである。このプロセスは同期され並行に行われ、すなわち圧縮と暗号化のプロセスが時間に関して同格であり(同期プロセス)、それぞれ圧縮と暗号化に関する命令の自律セットを同時に実行し(並列プロセス)、圧縮の間、暗号化と収容はオリジナルのチャンクの連続性を維持するように行われる。
【0075】
図4aに示す実施例では、プロセスの同期は、圧縮プロセスで処理される各出力チャンクは、暗号化プロセスの入力チャンクとなることを特徴とする。したがって、圧縮され暗号化されたデータチャンクは、オリジナルのデータチャンクの連続性に対応する。例えば、オリジナルのチャンク402−1〜402−3から圧縮チャンク403−1〜403−3への圧縮、およびこれで得られるチャンクの暗号化チャンク204−1〜204−3への暗号化は、それぞれts1−ts3の時点で開始される。図の実施例では、オリジナルのチャンク402−4から圧縮チャンク403−4への圧縮は、ts4で終了し、圧縮チャンク403−3から暗号化チャンク404−3への暗号化はこの時点では終了していない。連続的な圧縮チャンク403−4から暗号化チャンク404−4への暗号化は、チャンク404−3が暗号化された後に開始される(チャンク403−4の圧縮が終了したts3からΔtの遅延を伴う)。
【0076】
本発明の特定の実施例では、オリジナルデータの受信チャンクはそれぞれ圧縮され、殆どキャッシュにデータを保持することなく、他の受信チャンクの処理とは自律して暗号化のために送られる。本発明の別の実施例では、受信チャンクはセグメント化され、あるいはいくつかの受信チャンクがまとめて圧縮され、1の圧縮チャンクとしてさらに暗号化される。
【0077】
図7を参照して後述するように、所定の基準に合うチャンクの処理は圧縮のみ、または暗号化のみ、あるいはそのいずれでなくてもよく、処理と収容の期間中のチャンクのシーケンスが、受信チャンクのシーケンスに対応して保持されることに注意されたい。
【0078】
本発明は図示の同期方法に限定されるものではなく、同様に、同時に圧縮し暗号化するプロセスの他の様々な形式に適用可能であり、この同時性によりデータチャンクの連続性が保存される。
【0079】
図4bに示すように、処理済みのチャンク(404−1〜404−4)は、オリジナルデータの各チャンクの受け取り順に収容セクション(保存チャンク408−1〜408−4)に書き込まれる。変換されたLO(図の実施例では圧縮され暗号化されたファイル409)は、ヘッダ405と、1またはそれ以上の収容セクション406と、1またはそれ以上のインデックスセクション(IS)とを具える。変換ファイルのヘッダ405は、ユニークなファイル識別子と、このファイルが現在開いているか(またはリカバリ状態か)を示すフラグと、オリジナルのファイル401のサイズに関する情報と、任意で、このファイルが変換システム16により処理されたかを示すサインとを具える(例えば所定の許可マーク、所定のファイル種別、所定の圧縮比等の所定の基準に合わないとして変換システムにより暗号化および/または圧縮されなかったファイルについても)。本発明の特定の実施例では、ヘッダの長さは固定である。このヘッダとインデックスセクションは、図5−10を参照して詳述される。
【0080】
本発明の他の実施例(暗号化/復号化、および/または、圧縮/解凍機能がストレージ装置に組み込まれている等の特定の実施例)では、ヘッダ405またはその一部およびその組み合わせは、ファイルシステムの一部を構成してもよい。例えば、特定のファイルシステムに用いられるファイル識別子(例えばノードID)は、暗号化ファイルのユニークなファイル識別子として用いられてもよく、ファイルシステム内のファイルレコードは変更されて例えばオリジナルのサイズに関する情報や前記サイン等の新たなフィールドを具えてもよい。インデックスセクションやその部分もまた、ファイルシステムの一部を構成してもよい。
【0081】
図4c−4dは、ブロックモードアクセスの本発明の特定の実施例にかかるオリジナルと圧縮と暗号化された論理データオブジェクトの概略図である。オリジナルのLOに含まれるデータのチャンクは連続的に暗号化データチャンクへと処理され(図4dの418−1〜418−4)、受け取り順に収容セクション416−1、416−2に収容される。変換済みデータチャンク(418−1〜418−4)に対応するオリジナルデータチャンクは、図4cに示すデータチャンク(412−1〜412−4)としてVLU411に仮想的に表現される。
【0082】
図4a、4bを参照して説明した実施例と同様に、オリジナルのデータチャンク(412−1〜412−4)を保存データチャンク(418−1〜418−4)に変換するには2つの同時並行処理を含む。1)オリジナルのチャンクを圧縮データチャンク(413−1〜413−4)へと圧縮するステップと、2)圧縮データチャンク(413−1〜413−4)を暗号化して、収容される暗号化チャンク(414−1〜414−4)とするステップである。したがって、圧縮と暗号化のプロセスが時間に関して同格であり、それぞれ圧縮と暗号化に関する命令の自律セットを実行し、ここで圧縮と暗号化は、オリジナルのチャンクの連続性を維持するように行われる。これらプロセスの同期は、圧縮プロセスで処理される各出力チャンクが暗号化プロセスの入力チャンクとなることを特徴とする。したがって、圧縮され暗号化されたデータチャンクの連続性は、オリジナルのデータチャンクの連続性に対応する。
【0083】
図4dに示すように、処理済みのチャンク(414−1〜414−4)は、オリジナルデータの各チャンクの受け取り順に収容セクション(保存チャンク418−1〜418−4)に書き込まれる。変換されたLO(圧縮され暗号化されたデータを含むLU419)は、ヘッダ415と、1またはそれ以上の収容セクション416と、1またはそれ以上のインデックスセクション(IS)417と、空きスペース420とを具える。ヘッダ415は、論理ユニット番号(LUN)を含むユニークなファイル識別子と、ストレージ論理ユニットのサイズと(任意)、オープン/リカバリフラグと、この保存データの少なくとも一部が変換システム16により処理されたかを示すサイン等を含む。
【0084】
本発明の他の実施例では(例えば、暗号化/復号化、および/または、圧縮/解凍機能がストレージ装置と一体化される等の特定の実施例)、ヘッダ415またはそのいずれかの部分およびその組み合わせはディスク属性の一部を構成し、インデックスセクション417がディスク属性の一部を構成してもよい。
【0085】
したがって、オリジナルの論理データオブジェクト(LO)に含まれる様々な種類のデータのチャンクは、連続的に変換され、1またはそれ以上の収容セクションに受け取り順に収容され、この変換は圧縮と暗号化プロセスを含む。チャンクの圧縮は、図2a−2bに記載の圧縮変換と同様に行われる。圧縮されるデータの最初のkバイトは辞書として使用される。同じ辞書が、圧縮される連続データの最初と次のチャンクの圧縮に用いられ、この辞書は例えばLempel−Zivアルゴリズムで処理されたデータにしたがって調整される。プロセスは、(暗号化後に)特定の収容セクションに収容されるすべてのチャンクについて継続される(収容セクションの選択は図9を参照してさらに詳述される)。次の収容セクションに収容されるオリジナルデータの次のチャンクの最初のkバイトは、次の収容セクションに収容されるデータを圧縮するのに用いられる辞書を更新するのに用いられる。本発明の特定の実施例では、新たな圧縮セクションにおいて開始される新たな圧縮シーケンスは、直前のシーケンスと同じ初期圧縮辞書を用いてもよい。
【0086】
所定の基準に合う圧縮チャンクはそれぞれ、図3a−3bを参照して説明したのと同様の方法で、各収容セクションに保存される前にさらに暗号化される。ブロック暗号化アルゴリズムが、圧縮済みチャンクの平文データを固定サイズのセグメントに崩す。最初と次の圧縮済みチャンクは同じ安全鍵を用いて暗号化され、1の適切な収容セクションに収容される。このプロセスは、暗号化データの合計サイズが実質的に収容セクションの予め規定されたサイズとなるまで継続される。次の暗号化チャンクは、次の収容セクションに収容される。異なる収容セクションに収容されるデータは、同じか異なる安全鍵を用いて暗号化される。この暗号化プロセスはさらに図12a−12bを参照して詳述される。本発明の特定の実施例では、システムは1またはそれ以上の圧縮済みデータチャンクでパディングデータ(例えばランダムキャラクタ、ブランク、ゼロ等)を入れて、ブロック暗号の入力がセグメントサイズの丁度倍数となるようにする。復号化時に、変換システムは解凍前にこのパディングデータを除去する。
【0087】
図5は、本発明の特定の実施例にかかる変換済みの論理データオブジェクトを示す概略図である。非限定的な実施例として、図2a−b、3a−b、4a−dに詳述されているが、オリジナルの論理データオブジェクト(LO)に含まれる様々な種類のデータのチャンクは変換され、受け取り順に予め規定されたサイズの1またはそれ以上の収容セクション(505A−505F)に連続的に収容される。この収容セクションは、論理データオブジェクトの入出力トランザクション(データアクセスに関するリクエスト)中に変換/逆変換動作の原子要素として作用する。この変換プロセスは、逆変換されたときの収容セクションと、変換で得られる前記セクションに収容されたオリジナルデータが実質同一となるように構成される。
【0088】
変換済みのLO503は、ヘッダ504と、1またはそれ以上の収容セクション(505A〜505F)と、1またはそれ以上のインデックスセクション(506A、506B)とを具える。このインデックスセクションは、変換済みLOが1の収容セクションのみをもつ場合に不要である。
【0089】
連続的に収容される変換済みデータチャンクに加え、この収容セクションは、ユニークな識別子を有する(通常は収容セクションのヘッダ内に有する)。この収容セクションに属する物理ストレージの場所の表示が、収容セクション自体(例えばヘッダ内)および/またはインデックスセクションに保存される。変換に含まれる外部データに関する情報(例えば、鍵のID、鍵の物理位置へのポインタ、鍵に関するメタデータ等の、収容セクションに含まれるデータチャンクの暗号化に用いた安全鍵に関する情報)が、収容セクション自体(このセクションのヘッダ内)および/またはインデックスセクションおよび/またはヘッダ504に保存される。
【0090】
本発明の特定の実施例では、各収容セクションに、この収容セクション内(例えばヘッダ内)および/またはインデックスセクションに保存されこのセクションの使用/再使用を示すフラグ(ビットフラグ1または0)が割り当てられている。したがって、1のセクション内の各変換済みチャンクはセクションと同じフラグを有する。新たな物理的な位置に収容されたとき、この収容セクションはフラグ0となる。別の収容セクションにより以前用いられた物理的位置に収容されたら、この収容セクションのフラグは、上書きされる前記別の収容セクションのフラグと逆となる。したがって、ある物理位置に書き込まれる新たな変換済みデータチャンクは、当該物理位置に収容されている直前の古いデータチャンクと異なり、古い(上書きされる)収容セクションが異なるフラグとなるようにする。この処理はさらに、図9を参照して詳述される。
【0091】
単に説明目的のために、以下の説明はログ形式で収容される変換済みデータチャンクで説明する(以降はログという)。ただし本発明はログ形式に限定されるものではなく、同様に、処理済みデータチャンクを連続的に収容する他の様々な形式に適用可能である。
【0092】
変換済みデータに加え、各ログは、論理データオブジェクト内のオリジナルのチャンクデータのオフセットに関する情報(通常はログのヘッダに保持される)と、前記オリジナルチャンクのサイズと、このログを収容する収容セクションとこのログを関連付ける識別子(例えば、対応する収容セクションIDに加え、上述したように当該セクションの物理位置の使用/再使用を示すフラグ等)とを有する。この情報またはその一部は、変換されおよび/または変換されない形式で保存される。図12a−12bを参照して暗号化の場合を詳述するように、このログはまた、変換に関する情報(すなわち初期ベクトル、鍵ID等)を具える。
【0093】
本発明の特定の実施例において、傍受された制御トランザクション(例えば「ファイル端部を設定」/切り捨て(truncate))が、各変換済みデータチャンクに連続するとともにデータサイズ領域にゼロの値を有するログとして、収容セクションに書き込まれる。
【0094】
インデックスセクション506は、1以上の収容セクションに付随する1以上のエントリを具え、このエントリは収容セクションの物理的な保存場所へのポインタ(または他のインジケータ)と、収容セクションに収容される各ログに関するレコード(例えば、オリジナル/更新されたLOのオフセットとサイズ、収容セクションとの関連、ログに割り当てられた1またはそれ以上のフラグ等)を具え、前記レコードは以降に「ログレコード」と称される。任意で、このエントリは、例えば収容セクションに収容されたログの少なくとも一部が暗号化されていない、圧縮されていない、あるいはそれ以外でも変換されていない形式のデータを含むか否かのサイン、収容セクションに割り当てられた1またはそれ以上のフラグ、セクションの圧縮に用いられる辞書、セクション内で用いられる安全鍵に関する情報、前記収容セクションの収容のフリーサイズ、暗号化、圧縮、および/または変換時に用いられる他のアルゴリズム(可変の場合)等を含む。本発明の特定の実施例では、インデックスセクションは等しく予め規定されたサイズである。
【0095】
本発明の特定の実施例では、エントリは、唯一の、各ログに対して最も更新されたログレコードを有する。別の実施例では、図11a−11bで詳述するように、エントリは同じログについて更新されたレコードと古いレコードを有する。
【0096】
インデックスセクション506を作成および/または更新するにはいくつかの方法がある。例えば、最初のインデックスセクションは、変換された論理データオブジェクトの作成時に実質的に作成され、以降のインデックスセクションは(もしあれば)、現在の(アクティブな)インデックスセクションに新たなエントリを収容する空きスペースがない場合に作成される。代替的に、最初および/または以降のインデックスセクションは、対応する収容セクションをその情報に基づいて保存した一定時間後であるが、論理データオブジェクトが閉じる前に作成される。対応するエントリは、保存された論理オブジェクトのすべての更新と同時に、あるいは収容セクションに含まれるデータに基づいて所定の送らせた時間に(例えば新たな収容セクションの開始時)、ただし論理データオブジェクトが閉じる前に、書き込まれ/更新される。失敗した場合、インデックスセクションは収容セクションに含まれる情報に基づいて復元され、これは図10を参照して後述される。
【0097】
本発明の特定の実施例では、ヘッダ504が最初のインデックスセクションの物理位置へのインジケータ(例えばポインタ)を具え、各インデックスセクションは次の連続するインデックスセクションへのインジケータを有する。このインジケータは、連続するインデックスセクションを接続する1またはそれ以上のリンク507から構成される。任意で、ヘッダ504はまた、最初の収容セクションへのインジケータを含み、各収容セクションが次の連続する収容セクションへのインジケータを有する。このインジケータは、連続する収容セクションを接続する1またはそれ以上のリンクから構成される。
【0098】
本発明の特定の実施例の利点は、様々なサイズのデータチャンクを変換し書き込む能力であり、予め規定された収容セクションを用いて逆変換と読み出しが行われる。
【0099】
図6a−bを参照すると、更新プロセスにおける論理データオブジェクトのオリジナルと変換済みの概略図がシメされている。
【0100】
図6aに示す例では、オリジナルのLOを構成するデータ601−1、601−2、601−3が、対応する連続ログ608−1、608−2、608−3に変換され、収容セクション605−1に収容される。インデックスセクション606−1は、前記収容セクションとそのログに関する情報を含む。非限定的な例では、図のインデックスセクションは、物理位置へのポインタ(QWORD)を有する収容セクションIDと、このセクションに収容された変換済みチャンクに対応するオリジナルデータの各チャンクのオフセット(QWORD)と長さ(WORD)を有する各レコードのリストとを具える。通常、インデックスセクションはまた、次のインデックスセクションのインジケータ(例えばID)を具える。
【0101】
インデックスセクションの情報の例は、ログ608−1へと変換されたデータが範囲ABに対応し(オフセットA、長さL1);ログ608−2に変換されたデータが範囲BCに対応し(オフセットB、長さL2);ログ608−3に変換されたデータが範囲CDに対応する(オフセットC、長さL3)ことを意味する。
【0102】
図6bは、長さL4の新規データチャンク601−4がオフセットC1から始まるオリジナルのLOに置換する場合であって、(C1+L4)=E<Dである場合の例を示す。新たなデータチャンクは、セクションにこの新たなログを収容するのに十分な空きスペースがある場合に、前の変換ログ(以降にアクティブな収容セクションと称す)を収容する収容セクションに収容される。そうでない場合、実施例に示すように、新たな収容セクション605−2が開かれて新たなログ608−4が収容される。以前に収容されていたログは変更せずに保持され、一方でインデックスセクション606−1が、オリジナルデータ範囲の各地点と逆変換後のログから読み出されるデータとの間の一対一の関係が実現するように更新される。特定の実施例ではインデックスセクションは最後に更新されたログレコードのみを含み、他の実施例ではインデックスセクションは古いレコードと、新旧レコード間の差異の特別なマーキングとを含む。更新されたレコードに加え古いレコードを保持すると、例えば図11で後述する継続的なデータ保護などの特定のアプリケーションに有用である。
【0103】
図6bに示す実施例では、インデックスセクションは最後に更新されたレコードのみを有する。インデックスセクションの更新情報は、更新された範囲ADは以下の変換ログのデータに対応することを意味する:範囲ABは収容セクション#1の物理位置Xのログ608−1から逆変換されるデータに対応し、範囲BC1は収容セクション#1の物理位置Xのログ608−2から逆変換されるデータの一部(すなわちオフセットB、長さL21)に対応し、更新された範囲C1Eは収容セクション#2の物理位置Yの新たなログ608−4に対応し、範囲EDは収容セクション#1の物理位置Xのログ608−3のデータの一部(すなわちオフセットE、長さL31)に対応する。図の実施例では、ログ608−1と608−4に含まれるデータは生きており、これに対しログ608−2(すなわち範囲C1C)と608−3(すなわち範囲CE)は古い。インデックスセクションの更新は、図9を参照してさらに説明される。
【0104】
図7を参照すると、本発明の特定の実施例にかかる変換済み論理データオブジェクトを作成する一般化されたフローチャートである。710でLOを保存するリクエストを受けると、変換システムは変換済みLOのヘッダを適切な収容場所に書き込み(例えば、前に保存した論理データオブジェクトの隣に)、処理済みデータを収容するために最初の収容セクションを割り当てる。最初のヘッダのレコードは、変換ステータスの表示を含む(例えば、変換が「処理中」であることを意味するフラグ「ON」や、任意で、変換プロセスに含まれる別のプロセス余の別のフラグ等)。この変換システムはまた、712で変換されるデータチャンクに関する情報を用意する(例えば、オフセット、データサイズ等)。
【0105】
本発明の特定の実施例によると、変換システムは、変換中に合致すべき所定の基準を保持するよう構成される。この基準は論理データオブジェクト、データチャンクおよび/または収容セクション、および/またはその変換動作またはその一部の特性に関する。この基準は、例えば、1のログとして変換されるデータの最大長Lmax;および/または1のログとして変換される受信オリジナルデータの最大時間Tmax;オリジナルと変換済みデータおよび/またはLOの特定の関係(例えば、最小見積もり比または現実の圧縮比;データおよび/またはLOの予め規定された種別および/または形式)等を含む。
【0106】
本発明の特定の実施例では、所定の基準は、見積りまたは実際のデータチャンクおよび/または論理データオブジェクト全体の変換時間(例えば最大、見積もり、または実際の、データチャンクの変換(またはそのステップ))に関する。この基準に関する変換時間は、オペレーショナルシステムのタイムアウト、ストレージネットワークおよび/またはストレージ装置の特性、求められる信頼性等により制限される。いくつかの実施例では、この基準は例えば、データチャンクの実際の変換時間であり、別の実施例ではこの基準は例えば、チャンクサイズおよび/またはデータ種別および/または圧縮アルゴリズムおよび/または他の特性やデータチャンクの予想される変換時間の見積もりが可能なこれらの組み合わせでもよい。したがって、この基準と比較するために取得されるチャンクの特性により、予想される変換時間または実際に測定された変換時間の見積もりが可能となる。1より多いプロセス(例えば圧縮と暗号化)を含む変換について、変換時間の基準は、それぞれ個別のプロセス、および/または変換プロセス全体に関する。
【0107】
変換システムはさらに、変換されるデータチャンクが所定の基準に合致する場合に713を検証する。この検証は、チャンクおよび/または収容セクションおよび/または変換動作の特定の特性を取得し、これらを前記基準と比較する。この特性は、例えば、チャンクの特定のパラメータを特定し(例えば、論理オブジェクトの種類、認証マーク、サイズ等)、および/または観察できる特性(例えばサイズ、データ種別等)に基づいて予想される変換結果を見積もり、および/または実際の変換(またはその一部)を実行し結果を確認することにより得られる。
【0108】
基準に合致したら、変換システムはデータチャンクに714を処理し、変換済み形式のデータを含むログとして収容セクションに収容する。前に準備したログ関連情報(オフセット、サイズ等)は、変換済みおよび/または未変換形式でログ内に書き込まれる。前記情報はまた、ログ内に含まれるデータの形式の表示(例えばフラグ)を含んでもよい(例えば、変換済み、未変換、部分的に変換済み)。
【0109】
基準が合わなかったら(例えば、未処理データチャンクが、例えば30ミリ秒を越える期間で変換されたり変換されうる場合、および/またはオリジナルサイズのX%(例えば95%)以下に圧縮できない場合等)、変換システムは715で、非変換形式のデータを含むログとして収容セクションにデータチャンクを収容する。1より多いプロセスを含む変換では、データチャンクは部分的に変換された形式で収容される。例えば、図4の実施例に戻ると、オリジナルのチャンク402−4を圧縮チャンク403−4へ圧縮するのはts4で終了し、一方で圧縮チャンク403−3を暗号化チャンク404−3へと暗号化する暗号化はこの時間では終わらない。特定の実施例では、変換システムは、各データチャンクの圧縮の終了と暗号化の開始の間の遅延がゼロとなるよう変換時間に関する基準をサポートするよう構成される(および/または変換プロセス全体に制限時間を設ける)。このケースでは、変換システムは、圧縮済みチャンク403−3の暗号化を停止し(または開始せず)、各チャンク408−3を部分的に変換された形式で収容する。代替的に、変換システムはチャンクの圧縮を省略し(例えば、すべてのデータの暗号化が殊更に求められる場合)、チャンク402−3に含まれる非圧縮データを暗号化し、各チャンクを部分的に変換された形式で収容してもよい。
【0110】
変換時間に関する基準にしたがって処理することの利点は、論理データオブジェクトを所定期間内に変換できることであり、したがって、例えばデータの一体性、アクセス性、および利用可能性等を保持しつつオンライン変換を促進することができる。
【0111】
例えば1のログとして変換されるデータの最大長Lmax、および/または1のログとして変換される受信オリジナルデータの最大時間Tmaxの所定基準に合致するには、変換システムは受信データ範囲を区分化し、各セグメントを個別のチャンクとして処理するよう構成される。
【0112】
当業者は、本発明の特定の実施例において、所定基準に合致するかを検証する動作713を省略し(および/または基準を「すべてのチャンク」と設定する)、したがってすべてのデータチャンクが変換システムにより変換されるよう構成されてもよいことをすぐに理解する。
【0113】
与えられたデータチャンクの処理が完了した後(714または715)、圧縮システムは、インデックスセクションに記録するログ関連情報を用意する。
【0114】
この変換システムはさらに、未処理論理データオブジェクトが処理されていないデータを含む場合に716をチェックし、717を繰り返して以下の1以上が達成されるまで次のデータチャンクを処理する:a)LO内の全データが処理済みとなる;b)アクティブな収容セクションに次の変換済みデータチャンクを収容するのに十分な空きスペースがない。変換システムは718でインデックスセクションを更新し、クライアント11および/またはサーバ12に確認を送り、新たなASを開始したら、保護がASレベルに提供される場合に前の収容セクションのデータへのアクセス保護を解除する。このインデックスセクションの更新は、新たなASの配置および/またはLOの閉鎖および/または他の予め定められたルールに従って、確認とほぼ並行に行われる。
【0115】
図9で後述するように、アクティブな収容セクションの空きスペースが次のデータチャンクを収容するのに不十分である場合(例えば、ターゲットバッファのオーバフローで書き込み動作が失敗したり、前記空きスペースより予想されるログサイズの見積もりが大きかったり、空きスペースが処理されるデータチャンクまたはその一部のサイズより小さかったりする等)であって、LOの全データが未だ処理されていない場合、変換システムは新たな収容セクションを割り当て、新たなデータチャンクの動作719を繰り返す。すべてのデータが処理されたら、変換システムはLOのアクセス保護を解除する(この保護がLO全体にかけられている場合)。
【0116】
インデックスセクションのエントリは、各収容セクションに収容されたデータの変換済み/未変換/部分的に変換済みの形式の表示を含む。この表示は、収容セクション全体および/または収容された各ログについて提供される。このヘッダは、変換済みLOの状態に対応する表示を設けてなる。本発明の特定の実施例では、この表示は、収容セクションに収容されたデータの形式に関わらず、処理が「完了」したことを示す「OFF」フラグ(または類似の表示)である。本発明の別の実施例では、「OFF」フラグは、圧縮済みLOに含まれる収容セクションのすべてが変換済み形式のデータを収容する場合にのみ;この時点でヘッダ内のフラグ(または他の表示)が「ON」に維持されるか処理が完了した特別の表示を得るまで、提供されるが、未だいくつかのデータは変換されず、あるいは部分的に変換される。
【0117】
本発明の特定の実施例はさらに、1以上の収容セクションに収容された変換されていないか部分的に変換されたデータの繰り延べされた変換を具えてもよい。このような繰り延べ変換は、予め規定された/設定可能なタイムスケジュール(例えば、非ワーキング時間に)、予め規定されたイベント毎(例えば、アドミニストレータのリクエスト、予め定められ/設定可能な期間所定のLOにアクセス関連リクエストがない場合、利用可能なネットワーク帯域幅が予め規定され/設定可能な基準に合致する等)に従って提供されてもよい。
【0118】
図7を参照して説明されるプロセスは、同様に既存の論理データオブジェクトの更新にも適用可能である。
【0119】
本発明の特定の実施例では、基準はネガティブでもよく、例えばデータチャンクはデフォルトで所定基準(例えばデータ種別および/またはアプリケーション)に合致するまで、変換されていないか部分的に変換された形式で収容されてもよい。このような実施例の実装が、圧縮変換に関する非限定的な例として図8に示されている。
【0120】
810でLOを保存するリクエストを受信したら、変換システムは811で変換済みLOのヘッダを適切な保存場所に書き込み、最初の収容セクションが処理済みデータを収容するよう割り当てる。最初のヘッダのレコードは、変換ステータスの表示を含む(例えば、変換が「処理中」であることを意味するフラグ「ON」や、任意で、変換プロセスに含まれる別のプロセス余の別のフラグ等)。この変換システムはまた、812で収容されるデータチャンクに関する情報を用意する(例えば、オフセット、データサイズ等)。変換システムはさらに、813でデータチャンクを非圧縮形式のデータを含むログとして収容セクションに書き込む。任意で、動作813の前に、変換システムは、データチャンクが書き込み前に圧縮を必要とする予め規定された基準に合致するかを検証してもよい(義務またはさらなる基準に応じて)。変換システムはさらに、収容済みデータチャンクの全体サイズがASのサイズに合致するようデータパディングを行ってもよい。
【0121】
変換システムはさらに、814で未処理論理データオブジェクトが未処理データを含むかを確認し、815でインデックスセクションを更新し、クライアント11および/またはサーバ12に確認を送る。このプロセスは816で、LO内の全データが処理され1またはそれ以上の収容セクションに収容され(817、816)、これにより本発明の特定の実施例にかかる変換済み論理データオブジェクトとなるまで、次のデータに繰り返される。
【0122】
インデックスセクションのログレコードは、収容されたログ内のデータの圧縮/非圧縮形式の表示を含み、同様に、この表示は収容セクション全体に提供されてもよい。変換システムは、非圧縮データを含む1またはそれ以上のASを見つけるべく収容セクションを走査し、収容データの圧縮を行い、818で圧縮データを新たに割り当てたASに収容する。古い収容セクションは818で解放され、これは図5を参照して前述されている。
【0123】
図9を参照すると、本発明の特定の実施例にかかる変換済み論理データオブジェクト(LO)の書き込み動作を一般化したフローチャートが示されている。「書き込み」リクエスト90がLO内のオフセットと書き込みデータの範囲Lを特定する。変換システムは、割り当てられた収容セクションがあるかを確認し、見つからなければ、91でアクティブな収容セクションを割り当てる(最後のログを収容するAS)。さらに、変換システムは、データ幅が1のログとして変換されるオリジナルデータの予め規定された最大長Lmaxを越えないかを確認し、オフセット、長さ、および変換されるデータを含むレコードを作成し、このレコードに割り当てられたASのフラグに対応するフラグを付与し、29で前記レコードを変換する(例えば、圧縮、暗号化、圧縮&暗号化等)。特定の変換に適用可能であれば、圧縮は同じ辞書を用いて行われ、および/または暗号化は以前のデータチャンクと同じ暗号化鍵を用いて行われる。
【0124】
得られるログは、最後がこのログを収容するのに十分の空きスペースを有する場合に、93でアクティブな収容セクションに書き込まれる。安全鍵に関する情報(もしあれば)(またはこの変換に伴う他の外部データ)はそれぞれログ内および/または収容セクション(例えばセクションのヘッダ)および/またはインデックスセクションに暗号化されない形式で保存される。
【0125】
空きスペースが不十分である場合(例えば、目標バッファのオーバーフローで書き込み動作失敗、予想されるログサイズの見積もりが空きスペースより大きい等)、変換システムは94で新たな収容セクションを割り当てる。この新たなASの割り当ては、図5で説明したように物理位置を付与してフラグを付与することを含む。新たなASを割り当てる本発明の特定の実施例はまた、現在アクティブなAS内の前記セクションへのポインタの書き込みを含む。
【0126】
アクティブなASの空きスペースがログ全体を収容するのに不十分であるが、所定の基準には合致する場合(例えば、所定サイズ以上であったり、必要なスペース全体の所定割合以上である場合等)、変換システムは95でオリジナルのチャンクを2つの部分に分割し、2つのログとして処理し、一方をアクティブなASに書き込んで他方を新たなASに書き込む。本発明の特定の実施例では、変換システムは、逆変換し(例えばアクティブなASを復号化および/または解凍する)、そうでなくてもアクティブなASに収容されるオリジナルデータの全体サイズを算出または見積もり、追加されるべきオリジナルデータのサイズを見積もり、これによりデータ全体の変換されたサイズが予め規定されたASのサイズと実質的に合致し、したがってアクティブなASを最大限埋めた分割が可能となる。
【0127】
アクティブなASの空きスペースが前記基準に合致しない場合、ログ全体が96で新たな収容セクションに書き込まれる。本発明の特定の実施例では、新たなASの最初のログへの書き込みの後に、収容されるログの全体サイズがASの予め規定されたサイズと等しくなるように、前のアクティブなASが全体的および/または仮想的に最後のログの長さを「修正」したものとしてマークされる。
【0128】
このログが保管場所に書き込まれた後に、変換システムは97でクライアント11および/またはサーバ12に確認を送る。98でインデクスセクションの更新が、新たなASの割り当ておよび/またはLOの閉鎖および/または他の所定のルールに従って、確認と実質的に並行して行われる。
【0129】
書き込まれるデータ範囲Lが1のログとして変換されるオリジナルデータの予め規定された最大長Lmaxを越える場合、変換システムはLmaxにしたがってオリジナルデータをセグメント化し、書き込まれるデータ全部が処理され収容セクションに収容されるまで、セグメント化された各データチャンクについてプロセスを繰り返す。同様に、書き込まれるデータ範囲を受信した時間が1のログとして変換されるオリジナルデータの予め規定された受信時間Tmaxを越える場合、変換システムはデータ範囲LをTmaxにしたがってセグメント化し、セグメント化されたチャンクそれぞれについてプロセスを繰り返す。
【0130】
インデックスセクションの更新は、新たなログに関するログレコードの追加と、したがって、対応する範囲に含まれるライブおよび/または古いデータに関する前のログレコードの更新を含む。この新たなログレコードは、前記ログに変換されるオリジナルのチャンクのオフセット(PosL)とサイズ(SizeL)に関する情報と、同様に、同定(identification)と、任意で、対応する収容セクションのフラグを含む。適切なログレコードの更新は、以下の手続にしたがって行われる:
1)インデックスセクションのすべてのログレコード(POS、Size)を見て、Pos≦PosL<Pos+SizeLの位置(Pos)を含むログレコードを探し:
a.見つかった場合に、そのログレコードを(Pos,PosL−Pos)に更新し、2)へ進む;
b.見つからない場合に、更新を終了する
2)SizeLをSize−PosL−Posと比較し:
a.大きい場合に、PosL≦Pos1<PosL+SizeLのすべてのログレコード(Pos1,Size1)を探す。これらのログレコードのなかから、最大位置をもつログレコードを探し、これを(PosL+SizeL,SizeL−(SizeL−Pos1))に更新し、前記ログレコードの他のログを削除して更新を終了する。
b.小さい場合に、(PosL+SizeL,Size−(PosL+SizeL−Pos))のログレコードを追加して更新を終了する。
c.等しい場合、更新を終了する。
【0131】
当業者は、本発明を同様に他の様々なインデックスセクション更新処理に適用してオリジナル範囲のデータとログから逆変換されるデータ間の一対一の関係を実現することを直ちに理解するであろう。例えば、この更新は以下の帰納的な処置にしたがって行われてもよい:
1)位置(PosL)とサイズ(SizeL)を有する新たなログレコードを用意する。
2)インデックスセクションのすべてのログレコード(Pos、Size)を見て、Pos≦PosL<Pos+SizeLの位置(Pos)を含むログレコードを探し:
a.見つかった場合に、そのログレコードを(Pos,PosL−Pos)に更新し、3)へ進む;
b.見つからない場合に、インデックステーブルに(PosL,SizeL)を追加し、更新を終了する
2)SizeLをSize−PosL−Posと比較し:
a.大きい場合に、(PosL,Size−PosL−Pos)のログレコードを追加する。PosLを新たなPosL1=Pos+Sizeに変更し、SizeLを新たなSizeL1=SizeL−(PosL1−PosL)に変更し、2)に戻る。
b.小さい場合に、ログレコード(PosL,SizeL)と(PosL+SizeL,Size−(PosL+SizeL−Pos)を追加し、更新を終了する。
c.等しい場合、ログレコード(PosL,SizeL)を追加し、更新を終了する。
【0132】
本発明の特定の実施例の利点は、既に書き込まれたデータを復号化および/または解凍またはそうでなくとも逆変換することなく新たなデータを書き込むこと、および/またはそうでなくても書き込まれたデータを再書き込みすることができることにある。新たなデータのみが変換され収容され、これに伴いインデックスセクションが更新されて、変換された論理データオブジェクトを読み出す補助となるよう構成される。
【0133】
図10を参照すると、本発明の特定の実施例にかかる変換済み論理データオブジェクト(LO)の読み出し動作を一般化したフローチャートが示されている。
【0134】
この読み出し動作は、LO内のデータのオフセットと読み出すデータの範囲を指定した読み出しリクエスト100で開始される。変換システム16は、すべてのインデックスセクションをアドレスし(例えば、最後のセクションや現在開いているセクションから開始したり、すべてを一緒に開いたりする等)、101でこの範囲内にあるデータに関連する最後に更新されたエントリをすべて検索する。図5で詳述したように、インデックスセクション内で最後に更新されたエントリは、この範囲のデータと変換済みデータチャンク(ログ)から抽出されるライブデータ(通常更新済み)との一対一の関係を実現する。したがって、変換システムは、見つかったエントリに対応する収容セクションの一つを102で連続的に逆変換し(例えば、復号化、解凍等)、83で必要なデータを見つける。本発明の特定の実施例では、102は、読み出される範囲の一番最後にあるデータを含む収容セクションから開始される。104で、この範囲からのすべてのデータが見つかるまで次の収容セクションに動作102−103が繰り返される。見つかったデータは105でこの範囲内での順番にしたがって整列される。データが整ったら、これらは106でアプリケーションに送られる。
【0135】
本発明の特定の実施例では、保存された変換済み論理オブジェクトが最適化されてもよい。この最適化は、収容セクションを走査して(例えば、インデックスセクション内を分析する等により)、古いデータが予め規定されたパーセント(例えば90%)以上の1またはそれ以上のASを検索することにより行われる。このようなASは逆変換され、ライブデータが抽出されて変換されアクティブな収容セクションに新たなログとして保存され、そして古い収容セクションが解放される。変換システムは解放された収容セクションのリストを保持し、対応する物理的な位置を新たな収容セクションを割り当てるときに使用する。図5で述べたように、新たに割り当てられたASとそのログは、古い収容セクションとは反対のフラグを有する。前記最適化は、論理オブジェクトを閉じる際、予め規定されたスケジュール毎、予め規定されたイベント等で行われる。
【0136】
本発明の特定の実施例の利点は、収容セクションに含まれる情報に応じてインデックスセクションをリカバリ(および/または作成)できることである。例えば、開く論理データオブジェクトのリカバリフラグが「ON」である場合、変換システムはリカバリプロセスを開始する。このリカバリプロセスは、変換済み論理オブジェクトが1またはそれ以上のインデックスされていない収容セクション(すなわち、収容セクションが1以上のインデックスセクションに対応するレコードを有する1以上のログを有さない)を含むかを確認することから開始される。
【0137】
リカバリの間、このようなインデックスされていないASのログは、最後のログから逆の順番で、反対のフラグ(すなわち、古く、解放されたASに属し古いデータを含むログ)が見つかるまで連続的に逆変換される。変換システムは、逆変換されたログに対応するエントリを作成し、これらをメモリに保存し、および/またはインデックスセクションに書き込む。これらのログは再び変換(transformed back)され(および/または、リカバリされた収容セクションが読み出しデータを含む場合は、一次的に逆変換、例えば復号化、解凍等されたまま保持される)、リカバリフラグは「OFF」に切り換えられる。
【0138】
例えば、新たなログが対応するインデックスセクションのログレコードとともに作成されたが、他の適切なエントリがまだ更新されないような場合に、エラーが生じうる。このような変換済み論理オブジェクトを読み出すとき、変換システムはデータ間の不整合を検出し(この範囲の同じ地点に1より多いエントリ)、直近に更新されたエントリ(同じ範囲に関する一番最近のログに対応する)にしたがってインデックスセクションを修正する。
【0139】
図11aを参照すると、具体的な読み出し時点におけるデータリクエストに応答する読み出し動作を一般化した図面である。図2−9で説明したように、新たなデータチャンクが変換され、逆変換および/またはそれ以外の既に書き込まれたデータの再書き込みを行うことなくストレージに書き込まれ、これにしたがってインデックスセクションが更新される。インデックスセクションの各エントリは、主要セクションの物理的な保存場所へのポインタ(または他のインジケータ)と、1以上のログレコードを含む。また前述したように、最後に更新されたレコードと同時に、このエントリは同じログに関する前に更新された(および/またはオリジナルの)レコードと、古いレコードと更新されたレコード間の差異の特別なマーキングとを含む。本発明の特定の実施例によると、各ログレコードは、当該ログレコードの更新時を示すタイムスタンプと、当該ログレコードに関して読み出されるデータのオフセットと長さを有するか添付されており、このエントリは同じログに関し異なるタイムスタンプを有する1またはそれ以上のログレコードを含む。このような技術の利点は、データに対して行われた変更とその時間のすべてを保有できる機能にあり、これによりユーザまたはアドミニストレータは所望の時点または時間範囲を特定ことにより履歴データにアクセスすることができる。
【0140】
読み出し動作は、アクセスする時点を示し読み出されるデータのオフセットと長さをそれぞれ指定した読み出しリクエスト110から開始される。変換システム16は、すべてのインデックスセクションをアドレスし(例えば、最後のセクションや現在開いているセクションから開始したり、すべてを一緒に開いたりする等)、111で対応するエントリ、すなわちこの範囲内にあるデータに関連し指定された時間T以前のタイムスタンプを有するログレコードを具えるエントリを検索する。変換システムはさらに、112で前記対応するエントリ/ログから最後に更新されたエントリ/ログを選択し、113で選択されたエントリに対応する収容セクションの一つ連続的に逆変換し(例えば、復号化、解凍等)、114で必要なデータを見つけて、キャッシュに保存する。115で、この範囲から所望の時点に対応するデータデータのすべてが見つかるまで次の収容セクションについて113−114の動作が繰り返される。見つかったデータは116でこの範囲内での順番にしたがって整列される。データが整ったら、これらは117でアプリケーションに送られる。
【0141】
同様に読み出し動作はいくつかの所望時点から同時に行われてもよい。上述した実施例はオリジナルデータの異なるバージョンの読み出しが可能であるが、オリジナルデータ範囲の各時点と逆変換後のログから読み出されるデータとの一対一の関係が保持されていることに注意されたい。
【0142】
変換システムはさらに、図10で述べたものと同様の方法で、保存された変換済み論理オブジェクトを最適化してもよい。この最適化は、インデックスセクション内のエントリを分析して、1またはそれ以上の古いAS、すなわち所定基準に合致するタイムスタンプを有するデータが予め規定されたパーセント(例えば90%)以上のものを検索することにより行われる。この基準は時間に関連するもの(例えば、予め規定され、および/または予め設定された時間以前のタイムスタンプ)、オリジナルデータの同じ時間に関連するタイムスタンプの数(すなわち、タイムスタンプが3つ以上、したがって過去に変更保存がないこと)、および/または所定のイベント(例えば、保存データの完全バックアップを行う)等がある。このような古いASは逆変換され、ライブデータが抽出されて変換され、付随するタイムスタンプを保持しつつアクティブな収容セクションに新たなログとして保存され、そして古い収容セクションが解放される。前記最適化は、論理オブジェクトを閉じる際、予め規定されたスケジュール毎、予め規定されたイベント等で行われる。
【0143】
図11bを参照すると、本発明の特定の実施例にかかる、タイムスタンプを有する図6bに示すインデックスセクションの概略図が示されている。
【0144】
図6a−bに示されているように、オリジナルのLOを構成するデータ601−1、601−2、601−3は、連続ログ608−1、608−2、608−3に変換され、収容セクション#1に収容される。長さL4の新たなデータチャンク601−4が、オフセットC1から始まるオリジナルのLOに置換し、ここで(C1+L4)=E<Dである。図1bに示すインデックスセクションは、タイムスタンプを有するログレコードを有し、範囲AB(オフセットA、長さL1)を示すログレコードが11:00に収容されたログ608−1に変換され、範囲BC(オフセットB、長さL2)が11:01に収容されたログ608−2に、範囲CD(オフセットC、長さL3)が11:16に収容されたログ608−3に変換される。12:03に更新範囲C1E(オフセットC1、長さL4)に対応するログ608−4が収容され、その後関連するログレコードの更新が続く。したがって、ログ608−2と608−3のログレコードは12:03に更新される。この更新されたログレコードは、ログ608−2がオフセットB、長さL21に対応するライブデータを含み、ログ608−3がオフセット#、長さL31に対応するライブデータを含むことを意味する。読み出し要求が、例えば、所望時間12:30を含む場合、変換システムは12:30以下のタイムスタンプのすべてのログレコードを検索し、どのデータが所望の時点に関連するかを示す最後に更新されたレコード(608−1−1、608−2−2、608−3−2、608−42)を選択する。読み出し要求の所望時間が例えば11:10である場合、変換システムは11:10以下のタイムスタンプのログレコードを検索し、したがって最後に更新されたもの(608−1−1、608−2−1)を選択する。
【0145】
図12aを参照すると、本発明の特定の実施例にかかる平文チャンク(例えば、オリジナルのチャンク、圧縮済みチャンク、それ以外の変換済みチャンク)の暗号化の非限定的な実施例を示す概略図である。図の実施例では、変換システムは、平文チャンクを固定サイズAの複数セグメントに崩し(必要な場合に、セグメントは前記固定サイズに丸められる)、チャンクの各平文セグメントを暗号化して固定サイズBの暗号化セグメントとし、必要に応じて、この暗号化セグメントを丸めて固定サイズBとする。図の実施例では、A=B=16バイトである。丸める際に、変換システムはデータセグメントのサイズ要求を満たすようパディングデータを入れる(例えば、ランダムキャラクタ、ブランク、ゼロ、ヌル)。このような実施例では、収容セクションのサイズは固定サイズBの倍数となる。
【0146】
図3−6に詳細に示すように、同じ収容セクションに収容されたログは、同じ安全鍵を用いて暗号化される。このセキュリティは、例えば初期化ベクトル(initialization vector:IV)など異なるログで追加の暗号変化を導入するとさらに向上する。この初期化ベクトルは、平文ブロックシーケンスの暗号化の初期化アルゴリズムとして用いられる秘密でない連続変数である。したがって、本発明の特定の実施例では、変換システムは圧縮済みチャンクを暗号化したログへと暗号化するための安全鍵とともに用いる初期化ベクトルを取得する(例えば、ランダムナンバーとして生成する)よう構成されている。このIVは、各ログのヘッダに収容されている。
【0147】
非限定的な実施例では、変換システムは、合衆国全国科学技術情報システム(NIST)によりこの分野で知られる改良暗号化基準(Advanced Encryption Standard:AES)を実装してもよい。このAESアルゴリズムは、128、192、256ビットの暗号化キーを用いて、128ビットのブロックデータを暗号化/復号化することができる。この分野で知られるように、AESアルゴリズムの特定のモードは、暗号化キーでの暗号化の前に、最初のチャンクに線形に追加(XOR)されるか平文の前に含まれる初期化ベクトル(IV)を用いることができる。したがって、変換システムは、各収容セクションの最初のログ用に初期化ベクトルを生成(例えばランダムに)し、さらにXOR動作を適用することにより連続ログにIVを生成可能に構成される。
【0148】
収容セクションは暗号化/復号化動作の原子要素として作用するため、最初のIVと安全鍵に関する情報は、特定の実施例では、収容セクションのヘッダに保持され、ログのヘッダに収容される必要がない。
【0149】
図12aの非限定的な例に示すように、平文チャンク(例えばオリジナルのチャンク、圧縮済みチャンク、それ以外の変換チャンク等)1201−1(サイズ33バイト)、1201−2(サイズ50バイト)、および1201−3(サイズ17バイト)は、同じ鍵を用いて各連続ログ1207−1(サイズ48バイト、15バイトのパディングデータ+ヘッダを含む)、1207−2(サイズ64バイト、14バイトのパディングデータ+ヘッダを含む)、および1207−3(サイズ32バイト、15バイトのパディングデータ+ヘッダを含む)へと暗号化され、収容セクション1205−1に収容される。図示するように、ログ内の暗号化データのサイズは、16の倍数となるように丸められる。各ログは、各ログに暗号化されたオリジナルデータの実際のサイズに関する情報と、任意で、各初期化ベクトルと暗号化する前のチャンクのサイズ(オリジナルのチャンクと異なる場合)とを(例えばログヘッダ内に)有する。この暗号鍵と最初の初期化ベクトルに関する情報は収容セクション(例えばASヘッダ)、および/またはインデックスセクションおよび/または変換済み論理データオブジェクトのヘッダ1204に保存される。
【0150】
図12bに示す本発明の特定の実施例によると、平文チャンク1201−1(サイズ33バイト)、1201−2(サイズ50バイト)、および1201−3(サイズ17バイト)は、図12aと同じ暗号化エンジンにより暗号化されるが、暗号化ログ内のパディングデータを実質的に排除しうる方法でなされる。最初の平文チャンクは2つの部分に分割され、第1の部分を以降に「プライマリデータ」と称し、これはオフセットから開始しデータセグメントサイズ要求(例えば16バイトの倍数)を満たす連続データを含み、第2の部分は前記セグメントサイズ以下の残りのデータであって、以降は「テイルデータ」と称する(図の実施例では16バイト以下)。第1の部分は、図3−6に記載した方法で暗号化され収容セクションに収容され、各ログを以降に「プライマリログ」と称する。テイルデータの第2の部分は別の連続チャンクとして処理され、1つのログ(以降は「テイルログ」と称す)として暗号化形式で(または暗号化せずに)収容セクションに収容される。この収容セクションのログ1221は、分割チャンク1211に対応しており、太字イタリック体の数字はそれぞれのデータサイズを示す。
【0151】
次のチャンクを処理するとき、暗号化システムは、テイルログから平文のテイルデータを取得し、このテイルデータを前記次のチャンクの最初に追加し、生成した組み合わせを上述の方法でプライマリデータとテイルデータに分割し、その後プライマリログ内のプライマリデータとテイルログ内のテイルデータを同じ安全鍵を用いて暗号化する。新たなプライマリログは、前のプライマリログの後の位置に収容される。ログに収容される平文データの合計の実際のサイズは、それぞれ更新される(この実施例では83バイト)。各平文データの合計の実際のサイズは、収容セクションおよび/または暗号化した論理データオブジェクトのヘッダに保存され維持される。プライマリログの暗号化データのサイズが平文プライマリデータのサイズと等しいため、各平文データの実際のサイズに関する情報をログ内に保持する必要がない。安全鍵と最初の初期化ベクトルに関する情報は、暗号化セクション(例えばASヘッダ)および/またはインデックスセクションおよび/または暗号化論理データオブジェクトのヘッダ1204に保存される。
【0152】
このプロセスは、収容セクションに十分な収容スペースがあるまでそれぞれ次のチャンクに繰り返され、例えば収容セクションのログ1222はチャンク1211および分割チャンク1212に対応し、一方でプライマリログ1232は前のプライマリログ1231の続きとして位置づけられる。収容セクションのログ1223は、チャンク1211、チャンク1212、および分割チャンク1213に対応し、一方でプライマリログ1233は前のプライマリログ1232の続きとして位置づけられる。したがって、収容セクションは、1(またはゼロ)のテイルログが続くプライマリログのシーケンスを具える。
【0153】
保存される平文チャンクを暗号化ログとして処理する方法は、同様の方法で暗号化チャンクを連続的な収容を含むストレージの論理データオブジェクトの暗号化方法およびシステムにも適用可能であることに留意されたい。
【0154】
図13は、本発明の特定の実施例にかかる変換システム16の概略機能ブロック図である。この変換システムは、セッションマネージャ132に接続されたクライアント入出力(I/O)ブロック131を具える。このI/Oブロックは、データアクセス関連リクエスト(例えば、読み出し、書き込み、ファイル端部設定/トランケート等)を受け、これをセッションマネージャに送る。
【0155】
あるセッションは、論理データオブジェクトへのアクセス要求(例えば、SCSI LUN容量リクエストコマンドのようなLUN容量リクエスト、オープンファイルリクエスト等)により開始し、同じIPアドレス(ユーザ)から遮断リクエストを受けると終了する(例えば、「LUNディスコネクト」、「ファイルクローズ」等)。セッションマネージャ132は、このセッションのプライベートデータのすべて、例えばソースセッションアドレス、セッションカウンタ、セッションステータス、使用バッファのすべて等を保持する。セッションマネージャはまた、論理データオブジェクトが開かれたときにすべての関連リソースをブロックし、前記リソースを分離すべく遮断する。セッションマネージャは、当該セッションマネージャに機能的に接続されたディスパッチャ133にすべてのリクエストを転送する。このディスパッチャ133は論理データオブジェクトマネージャ134と、バッファマネージャ135と、変換ユニット136とに機能的に接続している。本発明の特定の実施例によると、ディスパッチャ133は、データ関連トランザクション(例えば読み出し、書き込み、ファイル端部設定等)について論理データオブジェクトマネージャ134と通信し、変換動作について変換ユニット136と通信する。
【0156】
変換ユニットは、データを圧縮、暗号化、および/またはそれ以外の変換し、これらをストレージI/O138を通して物理ディスクに送り、同様にストレージI/Oを通して物理ディスクからデータを読み出し、各バッファを逆変換(復号化および/または解凍)し、任意で、オリジナルおよび/または部分的に変換されたデータチャンクをさらに処理するためにセグメント化し、および/または組み合わせることができる。この変換ユニットは、所定の変換動作について1またはそれ以上の変換ブロックを具えてもよく(例えば、暗号化/復号化ブロック136−2に機能的に接続された圧縮−解凍ブロック136−1)、前記ブロック間でデータ転送および必要な同期を実現すべく構成されている。この変換ユニットはまた、「容量ステータス」に応答して、オリジナルの論理データオブジェクトのサイズ(およびストレージの空き容量)を報告するよう構成されている。
【0157】
変換ユニット136はまた、変換プロセスに含まれるデータに関する外部情報を保存する1またはそれ以上の外部プラットフォームと通信し(例えば、鍵および/またはそのメタデータを受け取るための安全鍵等)、これらの情報を受信し、必要なデータ(例えば鍵IDを抽出あるいは生成してこれらを管理するよう構成されている。受信した情報は一次的に、変換システム内の信頼されたメモリに収容され、変換ユニットのブロックは前記情報の管理を実行してもよい(例えば、特定のポリシーにしたがって特定期間前記メモリに所定の鍵を収容する管理)。本発明の特定の実施例では、暗号化/復号化ブロック136−2はさらに、暗号化に用いる1またはそれ以上の暗号初期化ベクトルを生成してもよい(例えば安全鍵と一緒に)。
【0158】
論理データオブジェクトマネージャ134は、異なる論理データオブジェクトおよびその部分による命令とメモリシェアリングを担う。
【0159】
バッファマネージャ135は、メモリバッファリソースを管理し、他のブロックの動作用のメモリバッファの割り当ておよび解放を担当する。変換システムはさらに、前記セッションマネージャに結合された保全マネージャ137と、バッファマネージャと、データブロックマネージャとを具える。この保全マネージャは、例えば論理データオブジェクトの完全性を維持等するように、変換システムの全プロセスの同期と通常管理を担当する。これはまた、メモリバッファからストレージ物理I/Oインタフェース138を通した物理ディスクへのフラッシングと、必要な場合にディスクからの読み出しを担当する。
【0160】
当業者であれば、本発明は図13の構成に限定されるものではなく、他の方法で同等および/または変更した機能を併合するか分割し、ソフトウェア、ファームウェア、ハードウェア、またはその様々な組み合わせで実現しうることを直ちに理解するであろう。
【0161】
本発明は、本明細書の説明および図面に記載された応用例に限定されるものではない。本発明は、他の実施例に適用可能であり、様々な方法で実践され実現されうるものである。したがって、本書における語句および用語は説明目的であって、限定として認識されるべきではないことに注意すべきである。これにより、当業者はこの開示の基になる理念を、本発明の様々な目的を実現するための他の構造、方法、およびシステムの設計の礎とすることができる。
【0162】
また、本発明のシステムは適切にプログラムされたコンピュータであってもよい。同様に、本発明は、本発明の方法を実行するコンピュータ読み取り可能なコンピュータプログラムをも企図している。本発明はさらに、本発明の方法を実行する機械実行型の命令のプログラムを具現的に有する機械読み取り可能なメモリを企図している。
【0163】
当業者は、添付のクレームに規定された範囲を逸脱することなく、上述した本発明の実施例に様々な変更や変化を施すことができることを理解するであろう。
【技術分野】
【0001】
本発明は、演算システムに関し、特に、演算システムおよびそのネットワークに保存されるべき論理データオブジェクトを変換しうる方法およびシステムに関する。
【背景技術】
【0002】
現在のビジネス環境では、ビジネスの成功には全種類のビジネスデータがより一層重要なものとなっている。ビジネスで生成されたデータの圧倒的な成長や複雑さが情報ストレージの要求となり、これが情報資産のシェアリング、管理、および保護の方法を規定する。
【0003】
通常、単一の技術または設計では、様々な組織の要求のすべてに対処できない。主ストレージが、例えば、EMCによるWhite Paper "Leveraging Networked storage for your business"、2003年3月、米国、に開示されており、これは基本的にデータがアクセスされる位置、接続タイプ(イントラ−コンピュータストレージ、ダイレクトアタッチドストレージ(DAS)、IP、チャネルネットワーク等)、および方法により規定される。ストレージ設計にはデータアクセス方法に関して考慮すべき3つの基本タイプがある:ブロックアクセス、ファイルアクセス、オブジェクトアクセスである。
【0004】
ブロックモードアクセス構造では、サーバ/クライアントとストレージ媒体間の通信はブロック毎に行われる:情報はディスクからブロックごとに直接抽出される。管理システムがディスク状の情報の各ピースがどこにあるかのトラックを保持し、一方でストレージ媒体は通常、デバイス上のデータを管理するのに用いられるファイルシステムを自覚しない。データの読み込みや更新が必要になったら、データは、データの各ブロックがディスク上のどこにあるかとアクセス方法を知るプロセッサにより、ディスクから直接アクセスされる。ブロックモードアクセスストレージ技術の例はDAS(ダイレクトアタッチドストレージ)、SAN(ストレージエリアネットワーク)、ブロックストレージオーバーIP(例えばFCIP、iFCP、iSCSI等)、イントラメモリストレージ等である。
【0005】
ファイルアクセスには、サーバかクライアントが物理的な位置ではなく名前でファイルを要求する必要がある。結果として、ストレージ媒体(外部ストレージ装置またはコンピュータ内のストレージユニット)は通常、ファイルシステムの作成、維持、更新のためにデータブロックごとにファイルをマッピングする機能を有し、このブロックアクセスは「舞台裏」で行われる。ファイルアクセスストレージ技術の例は、NAS(NFS、CIFS、HTTP等のプロトコルを有するネットワークアタッチドストレージ)、MPFS(マルチパスファイル管理)、イントラコンピュータファイルストレージ等である。このファイルアクセスストレージは、例えば、汎用ファイル、ウェブアプリケーション、エンジニアリングアプリケーション(例えばCAD、CAM、ソフトウェア開発等)、イメージングと3Dデータ処理、マルチメディアストリーミング等のために実装される。
【0006】
オブジェクトアクセスは、ブロック、ファイル、およびアプリケーションからのストレージトポロジの詳細のすべてを隠すことによりデータアクセスをさらに単純化する。このオブジェクトアクセスは、コンテンツ管理アプリケーションにおいてAPI統合により生じる。オブジェクトアクセスストレージ技術の例は、CAS(コンテンツアドレスドストレージ)である。
【0007】
論理データオブジェクト(データファイル、イメージファイル、データブロック等)は、送信および/または保存のために変換される。この変換は、圧縮、暗号化、符号化、転換等、および/またはこれらの組み合わせを含む。例えば、データ圧縮技術を用いて保存や送信されるデータの量を減らして、ストレージ容量や転送時間をそれぞれ低減したりできる。圧縮は異なる圧縮アルゴリズムを用いて実現でき、例えば、J. ZivとA. Lempelによる「A Universal Algorithm For Sequential Data Compression」IEEE Transactions on Information Theory, IT-23, pp 337-343 (1997)に記載のような標準的な圧縮アルゴリズムがある。
【0008】
データ保存用の圧縮や保存データへのアクセスのさまざまな実装が、例えば以下の特許文献に開示されている:
米国特許番号5,813,011(Yoshida et al.)「Storage of a compressed file containing its own compression omanagement table」;
米国特許番号5,813,017(Morris et al.)「System and method for reducing storage requirement in backup subsystems utilizing segmented compression and diffrencing」;
米国特許番号5,956,504(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」;
米国特許番号6,092,071(Bolan et al.)「Dedicated input/output processor method and apparatus for access and storage of compressed data」;
米国特許番号6,115,787(Obara et al.)「Disc storage system having cache memory which stores compressed data」;
米国特許番号6,349,375(Faulkner et al.)「Compression of data in read only storage and embedded systems」;
米国特許番号6,449,689(Corcoran et al.)「System and method for efficiently storing compressed data on a hard disk drive」;
米国特許番号6,532,121(Rust et al.)「Compression algorithm with embedded meta-data for partial record operation augmented with expansion joints」;
米国特許出願番号2002/078241(Vidal et al.)「Method of accelerating media transfer」;
米国特許出願番号2004/030,813(Benveniste et al.)「Method and system for storing memory compressed data onto memory compressed disks」;
米国特許出願番号2004/054,858(Sashikanth et al.)「Method and mechanism for on-line data compression and in-place updates」;
米国特許出願番号2006/230,014(Amit et al.)「Method and system for compression of files for storage and operation on compressed files」;
米国特許出願番号2006/190,643(Amit et al.)「Method and system for compression of data for block mode access storage」
【0009】
平文で保存されたデータは潜在的に不正利用(例えば不正アクセス、不正使用、盗用等)可能であり、この分野で知られる境界および/またはアクセス管理の解決策(例えばファイアウォール、仮想プライベートネットワーク、LUN、マスキング制御、およびSANストレージネットワークにおけるゾーニング)は未だセキュリティの脆弱性を有する。保存されるデータを符号化するとセキュリティの驚異を低減すると考えられるが、このような符号化はこの分野で知られる異なるアルゴリズムを用いて提供される。データのアクセス性と管理性への影響を最小限とする保存データの符号化を用いる場合の問題は従来技術で認識されており、例えば以下の多様なシステムが解決策を提供すべく開発されている:
米国特許番号5,235,641(Kakuse et al.)「File encryption method and file cryptographic system」;
米国特許出願番号2004/153,642(Avida et al.)「Encryption based security system for network storage」;
米国特許出願番号2005/204,154(Osaki et al.)「Method and apparatus for cryptographic conversion in a data storage system」;
【0010】
論理データオブジェクトの圧縮とその符号化を組み合わせた問題もまた従来技術で認識されており、以下の多様なシステムが解決策として提供されている:
米国特許番号5,285,497(Thatcher)「Methods and apparatus for scrambling and unscrambling compressed data streams」;
米国特許番号6,122,378(Yoshiura et al.)「Method and device for compressing and ciphering data」;
米国特許番号6,154,542(Crandall)「Method and apparatus for simultaneously encrypting and compressing data」;
米国特許番号6,157,720(Yoshiura et al.)「Method and apparatus for encrypting data」;
米国特許出願番号2004/218,760(Chaudhuri)「System and method for data encryption and compression」;
米国特許出願番号2004/264,698(Oda)「Data encrypting device, data decoding device, image data storing device and image forming apparatus」;
ドイツ特許出願2,315,575(Mansour et al.)「Encryption circuit in I/O subsystem」
【発明の概要】
【0011】
本発明の特定の態様によると、1以上のストレージプロトコルおよびそのシステムを備えるストレージ装置に保存される未処理の論理データオブジェクトを圧縮する方法が提供される。この方法は:
−各リクエストに応じて、ヘッダと1以上の予め規定されたサイズに割り当てられた圧縮セクションとを具える圧縮された論理データオブジェクトをストレージ装置内に作成するステップと;
−1またはそれ以上の連続的に取得される、前記未処理の圧縮論理データオブジェクトに対応する未処理データのチャンク(chunks)を処理して処理済みデータチャンクを生成するステップであって、前記処理済みデータチャンクは前記処理の結果物である圧縮データを含むステップと;
−前記処理済みデータチャンクを、前記チャンクが受け取られた順番に従って前記圧縮セクションに連続的に収容するステップと;
−前記未処理の論理データオブジェクトと前記圧縮セクションに収容されたデータ間のマッピングを促進するステップとを具える。
【0012】
本発明のさらなる態様によると、前記マッピングは、前記圧縮論理データオブジェクトの一部を構成する1以上のインデックスセクションの補助で提供され、前記インデックスセクションは、1以上の圧縮セクションに収容された処理済みデータチャンクと、前記圧縮セクションに関する物理ストレージの位置の指示とに関する情報を少なくとも有する1以上のエントリを具える。
【0013】
本発明のさらなる態様によると、前記圧縮は、適応性の辞書の補助で提供され、同じ圧縮セクションに収容されたデータチャンクは同じ辞書の補助で圧縮される。異なる圧縮セクションに収容されたデータチャンクは、異なる辞書の補助で圧縮される。
【0014】
本発明のさらなる態様によると、処理済みデータチャンクはすべて、各圧縮動作をリセットすることなく各ストレージバッファに流される(flush)べき各処理のペンディングの出力をすべて実行(enabling)するように、前記ストレージの位置へ移動される。
【0015】
本発明のさらなる態様によると、前記処理済みデータチャンクはログ形式で収容され、ここで処理済みデータチャンクのログは、未処理論理データオブジェクト内の未処理データチャンクのオフセット(offset)に関する情報を含むログヘッダと、前記未処理チャンクのサイズと、前記ログとこのログを収容する圧縮セクションの関係を示す識別子とを具える。
【0016】
本発明のさらなる態様によると、前記インデックスセクションは、1以上の圧縮セクションに関連する1以上のエントリを具え、前記エントリは、前記圧縮セクションの物理的なストレージ位置へのインジケータ(indicator)と、前記圧縮セクションに収容された各ログに関する1またはそれ以上のログレコードとを具え、さらに前記未処理論理データオブジェクトと前記圧縮セクションに収容されたデータ間のマッピングを促進する情報を具える。
【0017】
本発明のさらなる態様によると、各圧縮セクションは、前記圧縮セクションのそれぞれの物理的な位置の使用/再使用状態を示すフラグを伴い、各処理済みデータチャンクは、当該チャンクを収容する圧縮セクションについて同じフラグを伴う。
【0018】
本発明の他の態様によると、圧縮論理データオブジェクトにデータ範囲を書き込む方法が提供され、この方法は:
−各リクエストに応じて、前記データ範囲に対応する未処理データの1またはそれ以上の連続的に取得されるチャンクを処理するステップであって、ここで処理されるデータチャンクの1以上が前記処理により得られる圧縮データを含むステップと、
−前記処理済みデータチャンクを、これらとその前に受け取ったチャンクの順番に従って連続的に収容するステップと、
−前記マッピングを、前記範囲内のデータと前記圧縮論理オブジェクトに収容された前記データチャンクから読み出されるデータとの一対一の関係を促進する方法で更新するステップとを具える。
【0019】
本発明のさらなる態様によると、前記インデックスセクションを更新する方法が:
−すべての新規なデータチャンクに関する情報を追加するステップであって、前記情報は未処理の各データチャンクのオフセットとサイズに関するステップと、
−前に取得された生存に関する情報および/または前記範囲に対応する古いデータを更新するステップとを具える。
【0020】
本発明のさらなる態様によると、圧縮論理オブジェクトからのデータ範囲を読み出す方法が提供され、この方法は:
−各リクエストに応じて、作成されおよび/または前記範囲内のデータに関するインデックスセクション内で最後に更新されたすべてのエントリを検出するステップと;
−前記検出されたエントリに対応する前記圧縮セクションの1つを解凍し、前記エントリから提供されるマッピングに応じて読み出すべきデータを抽出するステップと;
−前記範囲からすべてのデータを抽出するまで、前記検出されたエントリに対応する1またはそれ以上の圧縮セクションについて上記ステップを繰り返すステップと;
−前記抽出したデータを前記範囲における順番にしたがって配列するステップとを具える。
【0021】
本発明のさらなる態様によると、圧縮論理データオブジェクトの最適化方法が提供され、この方法は:
−所定のパーセント以上の古いデータを含む1またはそれ以上の圧縮セクションを特定し、古い圧縮セクションとするステップと;
−前記特定された古いセクションを解凍しライブデータを抽出するステップと;
−前記抽出したライブデータを圧縮して1またはそれ以上の新たな処理済みチャンクとしてアクティブセクションに連続的に収容するステップと;
−前記古い圧縮セクションを前記圧縮論理データオブジェクトから解放するステップとを具える。
【0022】
本発明の別の態様によると、圧縮論理データオブジェクトのリカバリ方法が提供され、この方法は:
−論理データオブジェクトを開くときにリカバリステータスを認識したらリカバリ処理を開始するステップと;
−変換された論理オブジェクトを1またはそれ以上のマッピングされていない圧縮セクションを検出すべく検証するステップであって、前記マッピングされていない圧縮セクションは1以上のマッピングされていない処理済みデータチャンクを具えるステップと;
−最後に処理されたデータチャンクから開始して反対のフラグのデータチャンクが見つかるまで、前記マッピングされていない圧縮セクションに含まれる前記処理済みデータチャンクを逆の順序で連続的に解凍するステップと;
−前記解凍されたチャンクを再処理するステップと;
−前記処理済み解凍データチャンクに対応する1またはそれ以上のエントリでインデックスセクションを作成するステップと;
−リカバリ成功の表示を提供するステップとを具える。
【0023】
本発明の別の態様によると、少なくとも1のストレージプロトコルで動作するストレージ装置内に未処理論理データオブジェクトを保存すべく圧縮する方法が提供され、この方法は:
−各リクエストに応じて、ヘッダと1以上の予め規定されたサイズに割り当てられた圧縮セクションとを具える圧縮された論理データオブジェクトを前記ストレージ装置内に作成するステップと;
−1またはそれ以上の連続的に取得される、前記未処理の圧縮論理データオブジェクトに対応する未処理データのチャンク(chunks)を圧縮して処理済みデータチャンクを生成するステップと;
−この処理済みデータチャンクを、前記チャンクが受け取られた順番に従って前記圧縮セクションに連続的に収容するステップであって、前記圧縮セクションは前記論理データオブジェクトの入出力トランザクションにおける圧縮/解凍動作の原子要素であるステップとを具える。
【0024】
前記方法はさらに、各圧縮セクションが、解凍されたら前記圧縮により得られるデータと、前記圧縮で得られる前記セクションに収容された各未処理データチャンク内のデータとの実質的な同一となるようにするステップを具える。
【0025】
本発明の別の態様によると、ストレージネットワークで運用可能であり上記方法を実行するよう構成されたシステムが提供される。このシステムは、通信装置、ストレージ装置、および、保存用に未処理論理データオブジェクトを圧縮でき直列方法で前記ストレージ装置に機能的に連結されたスタンドアロン型システムであって保存データに関して透過型ブリッジとして動作するシステム、等の一部であってよい。
【0026】
本発明の別の態様によると、少なくとも1のストレージプロトコルで動作するストレージ装置内に未処理論理データオブジェクトを保存すべく圧縮しうるシステムが提供され、このシステムは、
−ヘッダと1以上の予め規定されたサイズに割り当てられた圧縮セクションとを具える圧縮された論理データオブジェクトを前記ストレージ装置内に作成する手段と;
−1またはそれ以上の連続的に取得される、前記未処理の圧縮論理データオブジェクトに対応する未処理データのチャンク(chunks)を処理して処理済みデータチャンクを生成する手段であって、前記処理済みデータチャンクの少なくとも1は前記処理の結果物である圧縮データを含む手段と;
−前記処理済みデータチャンクを、前記チャンクが受け取られた順番に従って前記圧縮セクションに連続的に収容するステップと;
−前記未処理の論理データオブジェクトと前記圧縮セクションに収容されたデータ間のマッピングを促進する手段とを具える。
【図面の簡単な説明】
【0027】
本発明を理解し、どのように実施されるかを見るために、非限定的な例としてのみ、いくつかの実施例について添付の図面を参照しながら以下に説明する。
【図1】図1は、従来技術としての典型的なストレージネットワーク構造の概略ブロック図である。
【図2】図2a、2bは、本発明の特定の実施例にかかる未処理かつ圧縮された論理データオブジェクトの概略図である。
【図3】図3a、3bは、本発明の特定の実施例にかかる平文と暗号化された論理データオブジェクトの概略図である。
【図4】図4a−4dは、本発明の特定の実施例にかかる、オリジナルと圧縮/暗号化された論理データオブジェクトを示す概略図である。
【図5】図5は、本発明の特定の実施例にかかる論理データオブジェクト変換を示す概略図である。
【図6】図6a、6bは、本発明の特定の実施例にかかる論理データオブジェクトの更新と変換を示す概略図である。
【図7】図7は、本発明の特定の実施例にかかる、変換された論理データオブジェクトを作成する汎用フローチャートである。
【図8】図8は、本発明の特定の実施例にかかる処理済み論理データオブジェクトが変換されていない形態と変換された形態で収容された概略図である。
【図9】図9は、本発明の特定の実施例にかかる変換済み論理データオブジェクトの書き込み動作の汎用フローチャートである。
【図10】図10は、本発明の特定の実施例にかかる変換済み論理データオブジェクトの読み出し動作の汎用フローチャートである。
【図11】図11aは、本発明の特定の実施例にかかる特定の時間における読み出し動作を一般化したフローチャートである。図11bは、本発明の特定の実施例にかかる、他無スタンプを有するインデックスセクションの概略図である。
【図12】図12a、12bは、本発明の特定の実施例にかかる符号化変換の非限定的な例の概略図である。
【図13】図13は、本発明の特定の実施例にかかる変換システムの機能的ブロック概略図である。
【発明を実施するための形態】
【0028】
以下の詳細な説明において、多くの具体的な詳細が本発明の完全な理解を得るために記載される。しかしながら、当業者であれば本発明はこれらの特定の詳細なしに実施しうることを理解するであろう。別の例では、公知の方法、処理、要素、および回路は、本発明を不明瞭にしないように詳述されていない。図面と説明では、同一の参照番号は異なる実施例や構成でも共通であることを示す。
【0029】
他に明記しない限り、以下の説明から明らかなように、本明細書中で例えば「処理する」「演算する」「算出する」「決定する」「生成する」「作成する」等の語は、コンピュータまたはコンピュータシステムや、演算システムのレジスタおよび/またはメモリ内の電子的などの物理的な量に表されるデータを、同様に演算システムのメモリやレジスタまたはこのような他の情報の保存、転送、または表示装置内の物理量に表される他のデータにマニピュレートおよび/または変換するプロセッサまたは類似の電子演算装置の動作および/またはプロセスをいう。
【0030】
本発明の実施例では、本書における動作を実行するのにプロセッサ、コンピュータ、装置、システム、サブシステム、モジュール、ユニット、デバイス等の語を用いる(単数または複数で)。これは特に所望の目的用に構成されたものであってもよいし、またはコンピュータ内に保存されたコンピュータプログラムにより選択的にアクティベートまたは再構成される汎用コンピュータを具えてもよい。このようなコンピュータプログラムは、例えば、限定しないが光ディスク、CD−ROM、磁気光ディスクを含む様々な種類のディスク、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、電気的プログラム可能なリードオンリーメモリ(EPROM)、電気的に消去とプログラム可能なリードオンリーメモリ(EEPROM)、磁気または光学カード、または電子的な命令を保存するのに適しコンピュータのシステムバスに接続可能な様々な媒体などのコンピュータ可読媒体に保存される。
【0031】
本書に記載のプロセス/デバイス(または上記の類似物)およびディスプレイは、特に他に明記しない限り、特定のコンピュータまたは他の装置に本来的に関連するものではない。様々な汎用システムを、本書の示唆にしたがったプログラムとともに用いることができるし、所望の方法を実行するのにより特化した装置を構成した方が便利かもしれない。これらのシステムの多様性に即した所望の構成は、以下に説明される。さらに、本発明の実施例は特に具体的なプログラム言語で記載されていない。多様なプログラム言語を用いて本書に記載した本発明の教示を実現することができる。
【0032】
背景技術で引用した文献は、本発明に適用可能な多くの符号化・圧縮理論を教示する。このため、これらの出願の内容全体が、適切な追加の教唆または大体構成、構造、および/または技術的背景に適した状態で、参照により組み込まれる。
【0033】
この特許明細書において「基準」の語は、様々な複合的な基準をカバーすると広く解釈されるべきであり、例えば、いくつかの基準および/またはその組み合わせを含む。
【0034】
この特許明細書において「論理データオブジェクト(LO)」の語は、演算システムで用いられ1のユニットとして扱われる複数のデータユニットの様々な種類およびグラニュール数(granularities)を含むべく広く解釈されるべきである(例えばデータファイル、アーカイブファイル、イメージファイル、データベースファイル、メモリデータブロック、ストリームデータブロック等)。
【0035】
これを念頭に、図1に注目すると、従来の典型的なストレージネットワーク構造の概略図が示されている。クライアント11および/またはサーバ12からの論理データオブジェクト(LO)は、ネットワーク13を介してストレージ装置14(例えば、特化したNASファイルサーバ、汎用ファイルサーバ、SANストレージ、ストリームストレージ装置等)に転送される。このネットワークは、データ転送を実現するための1またはそれ以上の通信装置15(例えばスイッチ、ルータ、ブリッジ等)を具える。図示するネットワークのストレージは全体または部分的に、ブロックモードアクセスおよび/またはファイルモードアクセスストレージプロトコルを用いるよう実装されている。ファイルモードアクセスでは、論理データオブジェクト(LO)は複数ファイルで構成され、ネットワークはIPネットワーク(例えば、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、またはその組み合わせ等)である。ブロックモードアクセスの実施例では、論理データオブジェクトはデータブロックから構成され、ネットワークは、例えばファイバチャネルまたはiSCSIプロトコルを実装するストレージエリアネットワーク(SAN)である。特定の実施例では、ストレージ装置14aはサーバ12にブロックモードアクセスストレージプロトコル(例えばSCSI、ファイバチャネル等)を介して直接接続される。このようなダイレクトアクセスストレージは、例えば、内部取り付け型ローカルディスクドライブや、外部取り付け型RAID(redundant array of independent disks)またはJBOD(just a bunch of disks)等を含む。
【0036】
論理データオブジェクトの少なくとも一部は、変換された形式で保存される(例えば、圧縮形式および/または符号化形式)。したがって、これらはクライアント/サーバとストレージ間の場所にある物理的または論理的な通信ルート上で変換(圧縮/解凍、および/または、符号化/復号化)される。この変換またはその一部は、例えば、サーバ12,通信装置15、クライアント/サーバとストレージ装置に機能的に連結された変換システム16、またはストレージ装置14により提供される。通常、符号化に用いられる安全鍵は符号化および/または保存を行う装置とは別に保持され、これらは転送プラットフォーム16に機能的に接続された鍵保持プラットフォーム17で保管される。同様に、符号化テーブルや変換プロセスに含まれる外部データは、処理および/またはストレージ装置とは別に保管される。
【0037】
本発明は、図1に記載の具体的な構造に限定されないことに留意されたい。当業者は、本発明を同様に、コンピュータが送る論理データオブジェクトへのアクセス要求と適切な変換データの保存場所の間の物理的および/または論理的な経路で1以上の論理データオブジェクトを変換する様々な演算システムや様々なストレージネットワーク構造に適用可能であることを理解し、この場合に変換(例えば圧縮および/または符号化)と保存が同じ物理的位置で提供される実施例を含む。
【0038】
図2a−2b、3a−3b、4a−4dは、本発明の特定の実施例にかかるオリジナルと変換済みの論理データオブジェクトを示す概略図である。この変換は、圧縮、符号化、暗号化、コンバージョン等、および/またはこれらの組み合わせを含む。図2a−2bに記載の変換は論理データオブジェクトの圧縮であり、図3a−3bは論理データオブジェクトの符号化であり、図4a−4dに記載の変換は圧縮と符号化の組み合わせを含む。説明目的のためだけに、以下の記載は変換システム16により論理データオブジェクトを処理し、処理済みデータをストレージ装置14へ書き込み、逆変換(例えば復号化や解凍等)すべきデータをストレージ装置から読み出し、変換システム16によりこれらを逆変換することに関する。しかしながら、本発明は同様の方法で、コンピュータが送るLOへのアクセスに関するリクエスト(例えば、開く、読み出す、書き込む等)と適切な変換済みデータの保管場所の間の物理的および/または論理的なルート(当該ルートの終点を含む)に機能的に配置された様々な目的の装置により提供される変換/逆変換に適用してもよい。この変換システムの開示された機能は、異なる方法で提供されてもよい。例えば、変換システム16は、「とりわけ」前記装置の1またはそれ以上に組み込まれてもよく、変換システムの機能は1またはそれ以上の専用の基盤に実装されてもよく、1以上の装置の別のモジュール間に(完全または部分的に)配分等されてもよい。この統合は異なる方法で提供されてもよいし、ソフトウェアおよび/またはファームウェアおよび/またはハードウェアで実装されてもよい。この統合は、様々なストレージネットワーク要素(例えば、ファイルサーバ、エンタープライズおよびネットワークスイッチ、ルータ、ストレージ装置等)等で提供されてもよい。
【0039】
また、本発明は同様に、前記ルート上の様々な装置のメモリに処理済みデータを書き込み、変換されたLO全体またはその部分を保存すべく保存場所に送信可能であり、同様に読み出されるべき変換済みデータを保存場所から前記ルート上の様々な装置に送って逆変換させることができる。
【0040】
単に説明目的のため、以下の記述は、適用型辞書ベースのデータ圧縮アルゴリズム(例えばLempel−Ziv)に関する。本発明はこのアルゴリズムに限定するものではないが、同様に、様々な他の連続データ圧縮アルゴリズムに適用可能である。この適用型辞書ベースの圧縮アルゴリズムを用いる実施例の利点は、圧縮/解凍パフォーマンスを稼げることにある。
【0041】
また単に説明目的におため、以下の説明は秘密鍵対称アルゴリズムを用いるブロック暗号に関する(例えば、IDEA−国際データ符号化アルゴリズム)。ただし本発明はこのアルゴリズムに限定されるものではなく、同様に、平文データのブロックを複数セグメントに崩して、このブロックの各平文セグメントを暗号テキストのセグメントに変換する他の様々な対称または非対称の符号化アルゴリズムに適用可能である。
【0042】
図2a、3a、4a、4bは、ファイルモードアクセスに関する本発明の特定の実施例にかかる論理データオブジェクトのオリジナルと変換済みを示す概略図である。変換システム16は、ファイル呼び出し動作(ファイルアクセスに関するリクエスト)と同様にいくつかの制御トランザクション(例えばファイル終了設定)を傍受し、特定のトランザクションのプロキシとして動作する(例えば、大部分の制御トランザクションのスループットを維持し、データトランザクションと特定の制御トランザクションを代理する)。この変換システムは、傍受されたファイルアクセスに関するリクエストに対応する処理データの配信、処理済みデータをストレージ媒体に1以上の変換済みファイルとして保存するファイルシステムと、および/またはそのなかで通信を実現し、および/または傍受したファイルリクエストに対応する処理済みデータの少なくとも一部の逆変換を実現可能である。保存処理されるファイルへの「書き込み」動作では、変換システム16はネットワーク13を通してクライアント11および/またはサーバ12から前記ファイルに対応するデータを受け取り、このデータを変換してファイルストレージ装置14で書き込みを実現する。「読み出し」動作は、逆方向に処理され、要求されたファイルは変換システムにより取得され、逆変換され(要求されたデータ範囲に応じて部分的または全体的に)、適切なクライアント/サーバに送られる。適切であれば、変換システムは、変換プロセスに含まれる外部データ(例えば、変換に用いられる安全鍵および/または安全値または他のメタデータ)を取得するための外部プラットフォーム(例えば鍵保持プラットフォーム17)と通信可能である。
【0043】
図2b、3b、4c、4dは、ブロックモードアクセスに関する本発明の特定の実施例にかかる論理データオブジェクトのオリジナルと変換済みを示す概略図である。この分野で周知のように、通常のストレージシステムとネットワークは、ストレージの分割管理を認識可能である。1のストレージディスクまたはディスクセットを、観念的に論理ユニットに分割できる。このストレージ論理ユニット(LU)は、直接的にボリュームドライブ、ホストアプリケーション、ストレージ装置等に対応し、物理ストレージの論理的表現(representative)を構成する。各論理ユニットは、論理ユニット番号として知られるアドレスを有し、これによりユニークに特定できるようになる。ユーザはLUNがディスクドライブか、複数のディスクドライブか、1のディスクドライブのパーティションか、これらの組み合わせかを指定することができる。本発明の特定の実施例では1以上のLUが変換データを収容し、一方で変換システムは、ストレージ論理ユニットに関して、ストレージ論理ユニットに保存されたデータの非変換形式(すなわちオリジナルデータ)を仮想的に表すよう構成された対応する仮想論理ユニット(VLU)を作成し、ストレージ論理ユニットに向けたデータアクセスに関するリクエストを傍受して前記リクエストを前記仮想論理ユニットにアドレスし、仮想論理ユニットにおいて変換済みデータとその非変換仮想表現の間のマッピングを実行する。したがって、本発明の特定の態様によると、コンピュータのオペレーティングシステム(OS)は、非変換データ(オリジナルLO)の仮想表現としてVLUに関することとなる。
【0044】
VLUとLUのサイズ比は予め定められてもよいし、および/または変換プロセス中に調整されてもよい。例えば、圧縮変換に関する図2bを参照して詳述するように、LUとVLUのサイズ比は所望の圧縮レートに応じて定められ(例えば、仮想論理ユニットのサイズは、圧縮される未処理データの見積もりサイズに対応し、実質的にストレージ論理ユニットのサイズの量である)、現実の圧縮比に対応して調節されてもよい。
【0045】
単に説明目的のため、以下の記載は、オリジナルデータの各チャンクが到着時に変換され、実質的にキャッシュにデータを保持することなく他の受信されたチャンクの処理とは独立して、変換形式で保存場所に書き込まれる特定の実施例に関する。同様に本発明は、例えば、受け取られたチャンクが処理の前および/またはストレージ装置への書き込み前に組み合わされ(例えばサイズ基準に応じて)分割される場合にも適用可能である。変換されるべきデータのサイズと、1のポーションとして書き込まれるべき変換済みデータのサイズ(および/または1のポーションとして書き込まれるオリジナルデータのサイズ)は、特定の基準によって構成可能である(例えば、変換システムおよび/またはストレージ装置のI/Oバッファのサイズ、変換エンジンの特性、設定可能なランタイム、ストレージネットワークの特性、入出力トラフィックの種類等)。変換システムは、保存場所への書き込みデータの確認を異なるモードで行ってもよく、例えば各書き込みポーション毎、所定/設定可能なポーション数毎、所定/設定可能なランタイム毎等であり、例えばストレージネットワークのプロトコルやそのトラフィックに依存する。また、本発明の特定の実施例では(例えば図7を参照してさらに詳述する)、特定の基準に合致するデータチャンクが、変換の失敗または変換処理の省略により非変換形式で保存される。
【0046】
これを念頭に、図2aに注目すると、ファイルモードアクセスに関する本発明の特定の実施例にかかる未処理かつ圧縮された論理データオブジェクトの概略図が示されている。非圧縮LO(図示の実施例における未処理ファイル201)に含まれるデータのチャンク(202−1〜202−6)が、連続的に処理された圧縮データチャンク(207−1〜207−6)となり所定サイズのブロック205−1〜205−2に収容される(以降に圧縮セクション(CS)と称す)。図7に詳細を示すように、処理済みデータのいくつかのチャンクは、特定の基準に合致しない場合に非圧縮形式で収容される(例えば、得られる圧縮比が所定の値以下である場合等)。
【0047】
前記圧縮セクションは、ファイルの入出力トランザクション中に圧縮/解凍の原子要素として作用する。圧縮処理は、圧縮セクションの解凍と、圧縮の結果として前記セクションに収容されたオリジナルデータとの間の実質的な同一性を可能とするように提供される(例えば、図示の実施例では圧縮セクション205−1の解凍で得られるデータは、チャンク202−1、201−2、および201−3に含まれるオリジナルデータと実質同一である)。
【0048】
圧縮セクションのサイズは設定可能である;圧縮セクションが大きいと処理オーバーヘッドが低く圧縮比が高くなり、圧縮セクションが小さいと効率的なアクセスが可能となるが処理オーバーヘッドが高くなる。圧縮セクションのサイズは、特定の時間に関する基準に応じて予め規定されてもよい(例えば、圧縮すべきデータを圧縮するのにかかる予定時間が、実質的に圧縮セクションのサイズの大きさとなる等)。
【0049】
本発明の特定の実施例では、予め定められるセクションのサイズは、すべての圧縮セクションで等しい(例えば、非限定的な実施例では、圧縮セクションは1MBに等しいサイズをもつ)。代替的に、本発明の特定の実施例では、予め規定されるサイズは異なる圧縮セクションで異なる。例えば、データ(例えばテキスト、画像、音声、組み合わせ等)または論理データオブジェクトの種類毎に圧縮セクションの予め規定されたサイズに対応し、変換システムは圧縮時に圧縮セクションの適切なサイズを圧縮される未処理ファイルのそれぞれの部分を占めるデータ種類(またはLOの種類)に応じて選択してもよい。任意で、圧縮プロセスは、例えば異なる圧縮セクションに収容された圧縮データチャンクに最適化した圧縮アルゴリズムを提供する適応能力を具えてもよい(例えば、音声、テキスト、画像等のセクションに最も適した異なる圧縮アルゴリズム)。
【0050】
圧縮セクションに収容される圧縮データの現実の合計サイズは、図9を参照して後述するように、圧縮セクションに予め定めたサイズより小さい。
【0051】
本発明の特定の実施例によると、処理済みのチャンク(207−1〜207−6)は、各入力チャンク(202−1〜202−6)の受け取り順に圧縮セクションに収容され、この収容はログ形式、ジャーナル形式、または連続収容の他の形式で提供されてもよい。圧縮されたLO(図の実施例では圧縮ファイル203)は、ヘッド204と、1以上のインデックスセクション(IS)206とを具える。圧縮ファイルのヘッダ204は、ユニークなファイル記述子と、このファイルが現在開かれているか(またはリカバリ状態か)を示すフラグと、未処理ファイル201のサイズに関する情報と、任意で、このファイルが変換システム16により処理されたかを示すサイン(例えば得られる圧縮比が所定の値以下であるため、特定の基準に合わず変換システムにより圧縮されていないファイルも)等を具える。本発明の特定の実施例では、ヘッダは固定の長さを有する。このヘッダとインデックスセクションは、図5−10を参照して詳述される。
【0052】
本発明の別の実施例では(圧縮/解凍機能がストレージ装置等と一体化している特定の実施例)、ヘッダ204またはそのいかなる部分や組み合わせが、ファイルシステムの一部を構成する。例えば、特定のファイルシステムに用いられるファイル識別子(例えばノードID)が、圧縮ファイルのユニークなファイル記述子として用いることができ、ファイルシステム内のファイルレコードは、例えば未処理ファイルのサイズに関する情報や前記サイン等の更なるフィールドを具えるように変更されている。そのインデックスセクションまたは部分もまた、ファイルシステムの一部を構成する。
【0053】
図2bは、ブロックモードアクセスの本発明の特定の実施例にかかる未処理かつ圧縮された論理データオブジェクトの概略図である。未圧縮(未処理)のLOに含まれるデータのチャンクは連続的に圧縮データチャンクへと処理され(217−1〜217−6)、予め規定されたサイズかつ図2aで説明した圧縮セクションと同様に、ブロック215−1〜215−2(以降は圧縮セクションと称す。)に収容される。処理済みデータチャンク(217−1〜217−6)に対応する前記未圧縮のチャンクは、データチャンク(212−1〜212−6)としてVLU211に仮想的に表現される。圧縮セクションは、データブロックの入出力トランザクション(データアクセスに関するリクエスト)中に圧縮/解凍動作の原子要素として作用する。VLUとLUのサイズ比は、特定の基準(例えば、圧縮データブロックを占めるデータ種別、前記データに得られる最大または最小圧縮比)に応じて予め規定してもよいし、圧縮プロセス中に調整されてもよい。非限定的な実施例では、本発明の特定の実施例において見積もられるVLUとLUのサイズ比は電子メールで約3、テキスト形式データでは8等になる。具体的なケースでは、圧縮データと未処理データの実際の比は見積もられた比よりも低くなりうる(および/または、なる)。この差は、ストレージ論理ユニットのオーバーフローの原因となり、コンピュータのオペレーティングシステム(OS)が、LUが実際に一杯となったときにVLUにまだ空いたスペースがあることを示すこととなる。したがって、変換システム16は、オーバーフローイベントの発生を検出するよう構成され(例えば、現実の圧縮レートとLUの空きスペースを検出することにより)、LUの空き容量が特定の基準に合わない(例えば、予め規定されたサイズより小さい)場合にストレージ論理ユニットを拡大する。変換システムはさらに、前記LUの拡大の失敗を検出するよう構成され(例えば、追加のディスクスペースが取得できなかったり、ストレージ装置がダイナミックLU変更をサポートしていないため)、LUのアクセス状態を「リードオンリー」に変更し、LUの空き容量が上記基準に合致するまでこの状態を保持する。同様に、この変換システムは、圧縮データと未処理データの現実の比が見積もられる比より高い場合に、LUの空きスペースを解放するよう構成されてもよい。
【0054】
図2aを参照して説明したのと同様に、圧縮されたチャンクは、各入力チャンクの受け取り順に従って圧縮セクション内に収容され、この収容はログ形式、ジャーナル形式、または他の連続収容形式で提供される。圧縮されたLO(LU213)は、ヘッダ214と、1以上の圧縮セクション215と、インデックスセクション216と、空きスペース218とを有する。ヘッダ214は、論理ユニット番号(LUN)を含むユニークな記述子と、仮想論理ユニット(VLU)のサイズと、LUのサイズと(任意)、オープン/リカバリフラッグと、保存データの少なくとも一部が変換システム16により処理されたかを示すサイン等を含む。このヘッダの長さは一定である(例えば非限定的な例では24バイトであり、4バイトが前記サイン、16バイトが前記ユニークな識別子、4バイトが対応する仮想論理ユニットのサイズに関する情報)。
【0055】
本発明の他の実施例では(例えば、圧縮/解凍機能はストレージ装置と一体化される等の特定の実施例)、ヘッダ214またはそのいずれかの部分およびその組み合わせはディスク属性の一部を構成し、インデックスセクション216がディスク属性の一部を構成してもよい。
【0056】
したがって、オリジナルの論理データオブジェクト(LO)に含まれる様々な種類のデータのチャンクは、連続的に圧縮され、予め規定されたサイズの1またはそれ以上の圧縮セクションに受け取り順に収容される。この圧縮処理は、解凍されたときの圧縮セクションと、圧縮で得られる前記セクションに収容されたオリジナルデータが実質同一となるように構成される。同じ圧縮セクションに収容されたチャンクは、同じ辞書を用いて圧縮される。図6でさらに詳述するように、インデックスセクションの情報は、オリジナルのデータ範囲と解凍後にログから読み出されるデータが一対一の関係となるようにする。圧縮されたデータチャンクは、圧縮動作をリセットすることなく出力(ストレージ)バッファに流されるべきすべてのペンディングの出力を実現する「同期フラッシュ(sync-flush)」モードで保存場所に移動される。したがって、この圧縮バッファの同期フラッシュにより、データの完全性を実現しつつ圧縮セクション内で同じ辞書の使用を可能となる。同期フラッシュは様々な方法で実施されてもよく、これらのいくつかがこの分野で知られている(例えば、ZLIB圧縮ライブラリで提供されるデフレート/インフレート機能にZ_SYNC_FLUSHパラメータを適用することによる、ZLIB.H−「zlib」汎用圧縮ライブラリのインタフェース、バージョン1.2.3、2005年7月18日、著作権(C)1995−2005Jean-Loup Gailly and Mark Adler)。
【0057】
本発明の特定の実施例では、圧縮されるデータの最初のkバイトは辞書として使用される。同じ辞書がさらに、処理/圧縮される連続データの最初と以降のチャンク全部の圧縮に用いられ、この辞書は例えばLempel−Zivアルゴリズムで処理されたデータにしたがって調整される。プロセスは、圧縮データの合計サイズが圧縮セクションの予め規定されたサイズとなるまで継続される。圧縮データの次のチャンクは、次の圧縮セクションに収容される。次のチャンクの最初のkバイトは、次の圧縮セクションに収容されるデータを圧縮するのに用いられる辞書を更新するのに用いられる。本発明の特定の実施例では、新たな圧縮セクションにおいて開始される新たな圧縮シーケンスは、直前のシーケンスと同じ初期圧縮辞書を用いてもよい。
【0058】
本発明の特定の実施例では、異なる圧縮セクションのデータに対応する複数の辞書は、適切な圧縮セクションへの一定のポインタを含む全体の辞書として保持されてもよい。この全体辞書は、1以上のインデックスセクションに収容されてもよいし、異なるインデックスセクションおよび/または圧縮セクション間に分配されてもよい。代替的に、辞書はそれぞれ1以上の圧縮セクションに対応するいくつかの個別に管理される辞書に分割されてもよい。インデックスセクションの特定の実施例では、当該インデックスセクションに付随する圧縮セクションのデータのみに対応する1以上の辞書を収容する。いくつかの実施例では、各圧縮セクションが当該セクションに保存されるデータに関連する1の辞書を含む。
【0059】
本発明の特定の実施例では、未処理データの受け取られた部分がそれぞれ、受け取られ、処理され、所定の基準に合致する場合に圧縮され、殆どキャッシュ内にデータを保持することなく、かつ他の受信部分の処理とは独立して保存場所に書き込まれる。本発明の別の実施例では、いくつかの受け取られた部分が一緒に処理され、1つの圧縮部分としてストレージに書き込まれる。
【0060】
本発明の特定の実施例の利点は、比較的小さなデータチャンクを処理し書き込めるなかで、比較的大きなデータ量(圧縮セクション)に対する圧縮機能を得られることであり、同時に同じ適応性辞書を用いるデータチャンクの連続圧縮により実現する向上した圧縮比を得られることである。
【0061】
図3aは、ファイルモードアクセスの本発明の特定の実施例にかかるオリジナルと暗号化した論理データオブジェクトの概略図である。平文LO(図の実施例では平文ファイル301)に含まれるデータのチャンク(302−1〜302−4)は、連続的に処理されて暗号化データチャンク(307−1〜307−4)となり、ブロック305−1、305−2に収容される(以降は予め規定されたサイズの暗号化セクション(ES)と称す)。図7を参照して詳述するが、処理済みデータのいくつかのチャンクは、所定の基準に合わない場合には非暗号化形式で収容される。
【0062】
図2a、2bを参照して記載した圧縮セクションと同様に、この暗号化セクションは、ファイルの入出力トランザクションにおいて暗号化/復号化動作の原子要素として作用する。暗号化セクションのサイズは調整可能であり、暗号化セクションが小さいと効率的にアクセスできるが処理オーバーヘッドが高くなる。本発明の特定の実施例では、予め規定されるサイズは、すべての暗号化セクションで同じであってもよい(例えば非限定的な実施例では、暗号化セクションは1MBである)。代替的に、本発明の特定の実施例では、暗号化セクションの所定サイズは変化してもよい。例えば、それぞれの種類のデータが暗号化セクションの所定サイズに対応し、変換システムは暗号化中に、暗号化される平文ファイルの各チャンク(またはチャンク群)を占めるデータ種類に応じて暗号化セクションの適切なサイズを選択する。
【0063】
本発明の特定の実施例によると、処理/暗号化されたチャンク(307−1〜307−4)は、平文データの各チャンクの受け取り順に従って暗号化セクションに収容され、この収容はログ形式、ジャーナル形式等で行われる。暗号化されたLO(図の実施例では暗号化ファイル303)は、ヘッダ304と、1またはそれ以上の暗号化セクション305と、1またはそれ以上のインデックスセクション(IS)306とを具える。暗号化ファイルのヘッダ304は、ユニークなファイル識別子と、このファイルが現在開いているか(またはリカバリ状態か)を示すフラグと、平文ファイル301に関する情報と、任意で、このファイルが変換システム16により処理されたかを示すサインとを具える(例えば所定の許可マーク、所定のファイル種別等の所定の基準に合わないとして変換システムにより暗号化されなかったファイルについても)。本発明の特定の実施例では、ヘッダの長さは固定である。このヘッダとインデックスセクションは、図5−10を参照して詳述される。
【0064】
本発明の他の実施例(暗号化/復号化機能がストレージ装置に組み込まれている等の特定の実施例)では、ヘッダ304またはその一部およびその組み合わせは、ファイルシステムの一部を構成してもよい。例えば、特定のファイルシステムに用いられるファイル識別子(例えばノードID)は、暗号化ファイルのユニークなファイル識別子として用いられてもよく、ファイルシステム内のファイルレコードは変更されて例えば平文テキストのサイズに関する情報や前記サイン等の新たなフィールドを具えてもよい。
【0065】
図3bは、ブロックモードアクセスの本発明の特定の実施例にかかる平文と暗号化された論理データオブジェクトの概略図である。平文LOに含まれるデータのチャンクは連続的に暗号化データチャンクへと処理され(317−1〜317−6)、予め規定されたサイズかつ図2aで説明した圧縮セクションと同様に、受け取り順にブロック315−1、315−2(以降は暗号化セクションと称す)に収容される。処理済みデータチャンク(317−1〜317−4)に対応する前記平文チャンクは、データチャンク(312−1〜212−4)としてVLU311に仮想的に表現される。
【0066】
暗号化されたLO(LU313)は、ヘッダ314と、1またはそれ以上の暗号化セクション315と、インデックスセクション316と、空きスペース318とを有する。ヘッダ314は、論理ユニット番号(LUN)を含むユニークな記述子と、仮想論理ユニット(VLU)のサイズと、LUのサイズと(任意)、オープン/リカバリフラッグと、保存データの少なくとも一部が変換システム16により処理されたかを示すサイン等を含む。このヘッダとインデックスセクションは、図5−10を参照して詳述される。
【0067】
本発明の他の実施例では(例えば、暗号化/復号化機能はストレージ装置と一体化される等の特定の実施例)、ヘッダ314またはそのいずれかの部分およびその組み合わせはディスク属性の一部を構成し、および/または、インデックスセクション316がディスク属性の一部を構成する。
【0068】
したがって、オリジナルの論理データオブジェクト(LO)に含まれる様々な種類のデータのチャンクは、連続的に暗号化され、予め規定されたサイズの1またはそれ以上の圧縮セクションに受け取り順に収容される。
【0069】
この暗号化処理は、復号化されたときの暗号化セクションと、暗号化で得られる前記セクションに収容された平文データが実質同一となるように構成される。
【0070】
ブロック暗号化アルゴリズムが、受信チャンクの平文データを固定サイズのセグメント(例えば16バイト)に崩し、このチャンクの各平文セグメントを固定サイズBの暗号化セグメントへと暗号化する。図の実施例では、変換システムは、暗号化セグメントが前記固定サイズBに必要な場合に(例えばパディングデータを入れることにより)ラウンド可能である。連続データの最初と次のチャンクは同じ安全鍵を用いて暗号化され、1の暗号化セクションに収容される。このプロセスは、暗号化データの合計サイズが実質的に暗号化セクションの予め規定されたサイズとなるまで継続される。暗号化データの次のチャンクは、次の暗号化セクションに収容される。異なる暗号化セクションのデータは、同じか異なる安全鍵を用いて暗号化されてもよい。また、図6を参照して詳述するように、インデックスセクションの情報は、オリジナルのデータ範囲の各地点と復号化後にログから読み出されるデータが一対一の関係となるようにする。
【0071】
この暗号化プロセスは、図12a、12bを参照してさらに詳述される。
【0072】
図4a−4bは、ファイルモードアクセスの本発明の特定の実施例にかかる論理データオブジェクトのオリジナルと変換済みを示す概略図であり、この変換は圧縮と暗号化を含んでいる。
【0073】
オリジナルのLO(図の実施例のオリジナルファイル401)に含まれるデータのチャンク(図4aの402−1〜402−4)は、連続的にデータチャンク(図4bの408−1〜408−4)に変換され、予め規定されたサイズのブロック406−1、406−2に収容される。図2a−2bで説明した圧縮セクションや、図3a−3bで説明した暗号化セクションと同様に、これらのブロックはファイルの入出力トランザクション中に圧縮/解凍および暗号化/復号化の原子要素として作用する。以下の説明において、「収容セクション(AS)」の語は、変換されたデータチャンク(上述した圧縮セクションや暗号化セクションを含む)を収容すべく構成された様々な保存ブロックであって、本発明の特定の実施例にかかる変換/逆変換の動作の原子要素として動作するものを含む。この収容セクションの予め規定されるサイズは等しくてもよいし、代替的に、変換処理中に変換システムが予め規定される基準に従って特定の収容セクションの規定サイズを選択してもよい。
【0074】
オリジナルのデータチャンク(401−1〜402−4)を保存データチャンク(408−1〜408−4)に変換するには2つの処理を含む。1)オリジナルのチャンクを圧縮データチャンク(403−1〜403−4)へと圧縮するステップと、2)圧縮データチャンク(403−1〜403−4)を暗号化して、収容される暗号化チャンク(404−1〜404−4)とするステップである。このプロセスは同期され並行に行われ、すなわち圧縮と暗号化のプロセスが時間に関して同格であり(同期プロセス)、それぞれ圧縮と暗号化に関する命令の自律セットを同時に実行し(並列プロセス)、圧縮の間、暗号化と収容はオリジナルのチャンクの連続性を維持するように行われる。
【0075】
図4aに示す実施例では、プロセスの同期は、圧縮プロセスで処理される各出力チャンクは、暗号化プロセスの入力チャンクとなることを特徴とする。したがって、圧縮され暗号化されたデータチャンクは、オリジナルのデータチャンクの連続性に対応する。例えば、オリジナルのチャンク402−1〜402−3から圧縮チャンク403−1〜403−3への圧縮、およびこれで得られるチャンクの暗号化チャンク204−1〜204−3への暗号化は、それぞれts1−ts3の時点で開始される。図の実施例では、オリジナルのチャンク402−4から圧縮チャンク403−4への圧縮は、ts4で終了し、圧縮チャンク403−3から暗号化チャンク404−3への暗号化はこの時点では終了していない。連続的な圧縮チャンク403−4から暗号化チャンク404−4への暗号化は、チャンク404−3が暗号化された後に開始される(チャンク403−4の圧縮が終了したts3からΔtの遅延を伴う)。
【0076】
本発明の特定の実施例では、オリジナルデータの受信チャンクはそれぞれ圧縮され、殆どキャッシュにデータを保持することなく、他の受信チャンクの処理とは自律して暗号化のために送られる。本発明の別の実施例では、受信チャンクはセグメント化され、あるいはいくつかの受信チャンクがまとめて圧縮され、1の圧縮チャンクとしてさらに暗号化される。
【0077】
図7を参照して後述するように、所定の基準に合うチャンクの処理は圧縮のみ、または暗号化のみ、あるいはそのいずれでなくてもよく、処理と収容の期間中のチャンクのシーケンスが、受信チャンクのシーケンスに対応して保持されることに注意されたい。
【0078】
本発明は図示の同期方法に限定されるものではなく、同様に、同時に圧縮し暗号化するプロセスの他の様々な形式に適用可能であり、この同時性によりデータチャンクの連続性が保存される。
【0079】
図4bに示すように、処理済みのチャンク(404−1〜404−4)は、オリジナルデータの各チャンクの受け取り順に収容セクション(保存チャンク408−1〜408−4)に書き込まれる。変換されたLO(図の実施例では圧縮され暗号化されたファイル409)は、ヘッダ405と、1またはそれ以上の収容セクション406と、1またはそれ以上のインデックスセクション(IS)とを具える。変換ファイルのヘッダ405は、ユニークなファイル識別子と、このファイルが現在開いているか(またはリカバリ状態か)を示すフラグと、オリジナルのファイル401のサイズに関する情報と、任意で、このファイルが変換システム16により処理されたかを示すサインとを具える(例えば所定の許可マーク、所定のファイル種別、所定の圧縮比等の所定の基準に合わないとして変換システムにより暗号化および/または圧縮されなかったファイルについても)。本発明の特定の実施例では、ヘッダの長さは固定である。このヘッダとインデックスセクションは、図5−10を参照して詳述される。
【0080】
本発明の他の実施例(暗号化/復号化、および/または、圧縮/解凍機能がストレージ装置に組み込まれている等の特定の実施例)では、ヘッダ405またはその一部およびその組み合わせは、ファイルシステムの一部を構成してもよい。例えば、特定のファイルシステムに用いられるファイル識別子(例えばノードID)は、暗号化ファイルのユニークなファイル識別子として用いられてもよく、ファイルシステム内のファイルレコードは変更されて例えばオリジナルのサイズに関する情報や前記サイン等の新たなフィールドを具えてもよい。インデックスセクションやその部分もまた、ファイルシステムの一部を構成してもよい。
【0081】
図4c−4dは、ブロックモードアクセスの本発明の特定の実施例にかかるオリジナルと圧縮と暗号化された論理データオブジェクトの概略図である。オリジナルのLOに含まれるデータのチャンクは連続的に暗号化データチャンクへと処理され(図4dの418−1〜418−4)、受け取り順に収容セクション416−1、416−2に収容される。変換済みデータチャンク(418−1〜418−4)に対応するオリジナルデータチャンクは、図4cに示すデータチャンク(412−1〜412−4)としてVLU411に仮想的に表現される。
【0082】
図4a、4bを参照して説明した実施例と同様に、オリジナルのデータチャンク(412−1〜412−4)を保存データチャンク(418−1〜418−4)に変換するには2つの同時並行処理を含む。1)オリジナルのチャンクを圧縮データチャンク(413−1〜413−4)へと圧縮するステップと、2)圧縮データチャンク(413−1〜413−4)を暗号化して、収容される暗号化チャンク(414−1〜414−4)とするステップである。したがって、圧縮と暗号化のプロセスが時間に関して同格であり、それぞれ圧縮と暗号化に関する命令の自律セットを実行し、ここで圧縮と暗号化は、オリジナルのチャンクの連続性を維持するように行われる。これらプロセスの同期は、圧縮プロセスで処理される各出力チャンクが暗号化プロセスの入力チャンクとなることを特徴とする。したがって、圧縮され暗号化されたデータチャンクの連続性は、オリジナルのデータチャンクの連続性に対応する。
【0083】
図4dに示すように、処理済みのチャンク(414−1〜414−4)は、オリジナルデータの各チャンクの受け取り順に収容セクション(保存チャンク418−1〜418−4)に書き込まれる。変換されたLO(圧縮され暗号化されたデータを含むLU419)は、ヘッダ415と、1またはそれ以上の収容セクション416と、1またはそれ以上のインデックスセクション(IS)417と、空きスペース420とを具える。ヘッダ415は、論理ユニット番号(LUN)を含むユニークなファイル識別子と、ストレージ論理ユニットのサイズと(任意)、オープン/リカバリフラグと、この保存データの少なくとも一部が変換システム16により処理されたかを示すサイン等を含む。
【0084】
本発明の他の実施例では(例えば、暗号化/復号化、および/または、圧縮/解凍機能がストレージ装置と一体化される等の特定の実施例)、ヘッダ415またはそのいずれかの部分およびその組み合わせはディスク属性の一部を構成し、インデックスセクション417がディスク属性の一部を構成してもよい。
【0085】
したがって、オリジナルの論理データオブジェクト(LO)に含まれる様々な種類のデータのチャンクは、連続的に変換され、1またはそれ以上の収容セクションに受け取り順に収容され、この変換は圧縮と暗号化プロセスを含む。チャンクの圧縮は、図2a−2bに記載の圧縮変換と同様に行われる。圧縮されるデータの最初のkバイトは辞書として使用される。同じ辞書が、圧縮される連続データの最初と次のチャンクの圧縮に用いられ、この辞書は例えばLempel−Zivアルゴリズムで処理されたデータにしたがって調整される。プロセスは、(暗号化後に)特定の収容セクションに収容されるすべてのチャンクについて継続される(収容セクションの選択は図9を参照してさらに詳述される)。次の収容セクションに収容されるオリジナルデータの次のチャンクの最初のkバイトは、次の収容セクションに収容されるデータを圧縮するのに用いられる辞書を更新するのに用いられる。本発明の特定の実施例では、新たな圧縮セクションにおいて開始される新たな圧縮シーケンスは、直前のシーケンスと同じ初期圧縮辞書を用いてもよい。
【0086】
所定の基準に合う圧縮チャンクはそれぞれ、図3a−3bを参照して説明したのと同様の方法で、各収容セクションに保存される前にさらに暗号化される。ブロック暗号化アルゴリズムが、圧縮済みチャンクの平文データを固定サイズのセグメントに崩す。最初と次の圧縮済みチャンクは同じ安全鍵を用いて暗号化され、1の適切な収容セクションに収容される。このプロセスは、暗号化データの合計サイズが実質的に収容セクションの予め規定されたサイズとなるまで継続される。次の暗号化チャンクは、次の収容セクションに収容される。異なる収容セクションに収容されるデータは、同じか異なる安全鍵を用いて暗号化される。この暗号化プロセスはさらに図12a−12bを参照して詳述される。本発明の特定の実施例では、システムは1またはそれ以上の圧縮済みデータチャンクでパディングデータ(例えばランダムキャラクタ、ブランク、ゼロ等)を入れて、ブロック暗号の入力がセグメントサイズの丁度倍数となるようにする。復号化時に、変換システムは解凍前にこのパディングデータを除去する。
【0087】
図5は、本発明の特定の実施例にかかる変換済みの論理データオブジェクトを示す概略図である。非限定的な実施例として、図2a−b、3a−b、4a−dに詳述されているが、オリジナルの論理データオブジェクト(LO)に含まれる様々な種類のデータのチャンクは変換され、受け取り順に予め規定されたサイズの1またはそれ以上の収容セクション(505A−505F)に連続的に収容される。この収容セクションは、論理データオブジェクトの入出力トランザクション(データアクセスに関するリクエスト)中に変換/逆変換動作の原子要素として作用する。この変換プロセスは、逆変換されたときの収容セクションと、変換で得られる前記セクションに収容されたオリジナルデータが実質同一となるように構成される。
【0088】
変換済みのLO503は、ヘッダ504と、1またはそれ以上の収容セクション(505A〜505F)と、1またはそれ以上のインデックスセクション(506A、506B)とを具える。このインデックスセクションは、変換済みLOが1の収容セクションのみをもつ場合に不要である。
【0089】
連続的に収容される変換済みデータチャンクに加え、この収容セクションは、ユニークな識別子を有する(通常は収容セクションのヘッダ内に有する)。この収容セクションに属する物理ストレージの場所の表示が、収容セクション自体(例えばヘッダ内)および/またはインデックスセクションに保存される。変換に含まれる外部データに関する情報(例えば、鍵のID、鍵の物理位置へのポインタ、鍵に関するメタデータ等の、収容セクションに含まれるデータチャンクの暗号化に用いた安全鍵に関する情報)が、収容セクション自体(このセクションのヘッダ内)および/またはインデックスセクションおよび/またはヘッダ504に保存される。
【0090】
本発明の特定の実施例では、各収容セクションに、この収容セクション内(例えばヘッダ内)および/またはインデックスセクションに保存されこのセクションの使用/再使用を示すフラグ(ビットフラグ1または0)が割り当てられている。したがって、1のセクション内の各変換済みチャンクはセクションと同じフラグを有する。新たな物理的な位置に収容されたとき、この収容セクションはフラグ0となる。別の収容セクションにより以前用いられた物理的位置に収容されたら、この収容セクションのフラグは、上書きされる前記別の収容セクションのフラグと逆となる。したがって、ある物理位置に書き込まれる新たな変換済みデータチャンクは、当該物理位置に収容されている直前の古いデータチャンクと異なり、古い(上書きされる)収容セクションが異なるフラグとなるようにする。この処理はさらに、図9を参照して詳述される。
【0091】
単に説明目的のために、以下の説明はログ形式で収容される変換済みデータチャンクで説明する(以降はログという)。ただし本発明はログ形式に限定されるものではなく、同様に、処理済みデータチャンクを連続的に収容する他の様々な形式に適用可能である。
【0092】
変換済みデータに加え、各ログは、論理データオブジェクト内のオリジナルのチャンクデータのオフセットに関する情報(通常はログのヘッダに保持される)と、前記オリジナルチャンクのサイズと、このログを収容する収容セクションとこのログを関連付ける識別子(例えば、対応する収容セクションIDに加え、上述したように当該セクションの物理位置の使用/再使用を示すフラグ等)とを有する。この情報またはその一部は、変換されおよび/または変換されない形式で保存される。図12a−12bを参照して暗号化の場合を詳述するように、このログはまた、変換に関する情報(すなわち初期ベクトル、鍵ID等)を具える。
【0093】
本発明の特定の実施例において、傍受された制御トランザクション(例えば「ファイル端部を設定」/切り捨て(truncate))が、各変換済みデータチャンクに連続するとともにデータサイズ領域にゼロの値を有するログとして、収容セクションに書き込まれる。
【0094】
インデックスセクション506は、1以上の収容セクションに付随する1以上のエントリを具え、このエントリは収容セクションの物理的な保存場所へのポインタ(または他のインジケータ)と、収容セクションに収容される各ログに関するレコード(例えば、オリジナル/更新されたLOのオフセットとサイズ、収容セクションとの関連、ログに割り当てられた1またはそれ以上のフラグ等)を具え、前記レコードは以降に「ログレコード」と称される。任意で、このエントリは、例えば収容セクションに収容されたログの少なくとも一部が暗号化されていない、圧縮されていない、あるいはそれ以外でも変換されていない形式のデータを含むか否かのサイン、収容セクションに割り当てられた1またはそれ以上のフラグ、セクションの圧縮に用いられる辞書、セクション内で用いられる安全鍵に関する情報、前記収容セクションの収容のフリーサイズ、暗号化、圧縮、および/または変換時に用いられる他のアルゴリズム(可変の場合)等を含む。本発明の特定の実施例では、インデックスセクションは等しく予め規定されたサイズである。
【0095】
本発明の特定の実施例では、エントリは、唯一の、各ログに対して最も更新されたログレコードを有する。別の実施例では、図11a−11bで詳述するように、エントリは同じログについて更新されたレコードと古いレコードを有する。
【0096】
インデックスセクション506を作成および/または更新するにはいくつかの方法がある。例えば、最初のインデックスセクションは、変換された論理データオブジェクトの作成時に実質的に作成され、以降のインデックスセクションは(もしあれば)、現在の(アクティブな)インデックスセクションに新たなエントリを収容する空きスペースがない場合に作成される。代替的に、最初および/または以降のインデックスセクションは、対応する収容セクションをその情報に基づいて保存した一定時間後であるが、論理データオブジェクトが閉じる前に作成される。対応するエントリは、保存された論理オブジェクトのすべての更新と同時に、あるいは収容セクションに含まれるデータに基づいて所定の送らせた時間に(例えば新たな収容セクションの開始時)、ただし論理データオブジェクトが閉じる前に、書き込まれ/更新される。失敗した場合、インデックスセクションは収容セクションに含まれる情報に基づいて復元され、これは図10を参照して後述される。
【0097】
本発明の特定の実施例では、ヘッダ504が最初のインデックスセクションの物理位置へのインジケータ(例えばポインタ)を具え、各インデックスセクションは次の連続するインデックスセクションへのインジケータを有する。このインジケータは、連続するインデックスセクションを接続する1またはそれ以上のリンク507から構成される。任意で、ヘッダ504はまた、最初の収容セクションへのインジケータを含み、各収容セクションが次の連続する収容セクションへのインジケータを有する。このインジケータは、連続する収容セクションを接続する1またはそれ以上のリンクから構成される。
【0098】
本発明の特定の実施例の利点は、様々なサイズのデータチャンクを変換し書き込む能力であり、予め規定された収容セクションを用いて逆変換と読み出しが行われる。
【0099】
図6a−bを参照すると、更新プロセスにおける論理データオブジェクトのオリジナルと変換済みの概略図がシメされている。
【0100】
図6aに示す例では、オリジナルのLOを構成するデータ601−1、601−2、601−3が、対応する連続ログ608−1、608−2、608−3に変換され、収容セクション605−1に収容される。インデックスセクション606−1は、前記収容セクションとそのログに関する情報を含む。非限定的な例では、図のインデックスセクションは、物理位置へのポインタ(QWORD)を有する収容セクションIDと、このセクションに収容された変換済みチャンクに対応するオリジナルデータの各チャンクのオフセット(QWORD)と長さ(WORD)を有する各レコードのリストとを具える。通常、インデックスセクションはまた、次のインデックスセクションのインジケータ(例えばID)を具える。
【0101】
インデックスセクションの情報の例は、ログ608−1へと変換されたデータが範囲ABに対応し(オフセットA、長さL1);ログ608−2に変換されたデータが範囲BCに対応し(オフセットB、長さL2);ログ608−3に変換されたデータが範囲CDに対応する(オフセットC、長さL3)ことを意味する。
【0102】
図6bは、長さL4の新規データチャンク601−4がオフセットC1から始まるオリジナルのLOに置換する場合であって、(C1+L4)=E<Dである場合の例を示す。新たなデータチャンクは、セクションにこの新たなログを収容するのに十分な空きスペースがある場合に、前の変換ログ(以降にアクティブな収容セクションと称す)を収容する収容セクションに収容される。そうでない場合、実施例に示すように、新たな収容セクション605−2が開かれて新たなログ608−4が収容される。以前に収容されていたログは変更せずに保持され、一方でインデックスセクション606−1が、オリジナルデータ範囲の各地点と逆変換後のログから読み出されるデータとの間の一対一の関係が実現するように更新される。特定の実施例ではインデックスセクションは最後に更新されたログレコードのみを含み、他の実施例ではインデックスセクションは古いレコードと、新旧レコード間の差異の特別なマーキングとを含む。更新されたレコードに加え古いレコードを保持すると、例えば図11で後述する継続的なデータ保護などの特定のアプリケーションに有用である。
【0103】
図6bに示す実施例では、インデックスセクションは最後に更新されたレコードのみを有する。インデックスセクションの更新情報は、更新された範囲ADは以下の変換ログのデータに対応することを意味する:範囲ABは収容セクション#1の物理位置Xのログ608−1から逆変換されるデータに対応し、範囲BC1は収容セクション#1の物理位置Xのログ608−2から逆変換されるデータの一部(すなわちオフセットB、長さL21)に対応し、更新された範囲C1Eは収容セクション#2の物理位置Yの新たなログ608−4に対応し、範囲EDは収容セクション#1の物理位置Xのログ608−3のデータの一部(すなわちオフセットE、長さL31)に対応する。図の実施例では、ログ608−1と608−4に含まれるデータは生きており、これに対しログ608−2(すなわち範囲C1C)と608−3(すなわち範囲CE)は古い。インデックスセクションの更新は、図9を参照してさらに説明される。
【0104】
図7を参照すると、本発明の特定の実施例にかかる変換済み論理データオブジェクトを作成する一般化されたフローチャートである。710でLOを保存するリクエストを受けると、変換システムは変換済みLOのヘッダを適切な収容場所に書き込み(例えば、前に保存した論理データオブジェクトの隣に)、処理済みデータを収容するために最初の収容セクションを割り当てる。最初のヘッダのレコードは、変換ステータスの表示を含む(例えば、変換が「処理中」であることを意味するフラグ「ON」や、任意で、変換プロセスに含まれる別のプロセス余の別のフラグ等)。この変換システムはまた、712で変換されるデータチャンクに関する情報を用意する(例えば、オフセット、データサイズ等)。
【0105】
本発明の特定の実施例によると、変換システムは、変換中に合致すべき所定の基準を保持するよう構成される。この基準は論理データオブジェクト、データチャンクおよび/または収容セクション、および/またはその変換動作またはその一部の特性に関する。この基準は、例えば、1のログとして変換されるデータの最大長Lmax;および/または1のログとして変換される受信オリジナルデータの最大時間Tmax;オリジナルと変換済みデータおよび/またはLOの特定の関係(例えば、最小見積もり比または現実の圧縮比;データおよび/またはLOの予め規定された種別および/または形式)等を含む。
【0106】
本発明の特定の実施例では、所定の基準は、見積りまたは実際のデータチャンクおよび/または論理データオブジェクト全体の変換時間(例えば最大、見積もり、または実際の、データチャンクの変換(またはそのステップ))に関する。この基準に関する変換時間は、オペレーショナルシステムのタイムアウト、ストレージネットワークおよび/またはストレージ装置の特性、求められる信頼性等により制限される。いくつかの実施例では、この基準は例えば、データチャンクの実際の変換時間であり、別の実施例ではこの基準は例えば、チャンクサイズおよび/またはデータ種別および/または圧縮アルゴリズムおよび/または他の特性やデータチャンクの予想される変換時間の見積もりが可能なこれらの組み合わせでもよい。したがって、この基準と比較するために取得されるチャンクの特性により、予想される変換時間または実際に測定された変換時間の見積もりが可能となる。1より多いプロセス(例えば圧縮と暗号化)を含む変換について、変換時間の基準は、それぞれ個別のプロセス、および/または変換プロセス全体に関する。
【0107】
変換システムはさらに、変換されるデータチャンクが所定の基準に合致する場合に713を検証する。この検証は、チャンクおよび/または収容セクションおよび/または変換動作の特定の特性を取得し、これらを前記基準と比較する。この特性は、例えば、チャンクの特定のパラメータを特定し(例えば、論理オブジェクトの種類、認証マーク、サイズ等)、および/または観察できる特性(例えばサイズ、データ種別等)に基づいて予想される変換結果を見積もり、および/または実際の変換(またはその一部)を実行し結果を確認することにより得られる。
【0108】
基準に合致したら、変換システムはデータチャンクに714を処理し、変換済み形式のデータを含むログとして収容セクションに収容する。前に準備したログ関連情報(オフセット、サイズ等)は、変換済みおよび/または未変換形式でログ内に書き込まれる。前記情報はまた、ログ内に含まれるデータの形式の表示(例えばフラグ)を含んでもよい(例えば、変換済み、未変換、部分的に変換済み)。
【0109】
基準が合わなかったら(例えば、未処理データチャンクが、例えば30ミリ秒を越える期間で変換されたり変換されうる場合、および/またはオリジナルサイズのX%(例えば95%)以下に圧縮できない場合等)、変換システムは715で、非変換形式のデータを含むログとして収容セクションにデータチャンクを収容する。1より多いプロセスを含む変換では、データチャンクは部分的に変換された形式で収容される。例えば、図4の実施例に戻ると、オリジナルのチャンク402−4を圧縮チャンク403−4へ圧縮するのはts4で終了し、一方で圧縮チャンク403−3を暗号化チャンク404−3へと暗号化する暗号化はこの時間では終わらない。特定の実施例では、変換システムは、各データチャンクの圧縮の終了と暗号化の開始の間の遅延がゼロとなるよう変換時間に関する基準をサポートするよう構成される(および/または変換プロセス全体に制限時間を設ける)。このケースでは、変換システムは、圧縮済みチャンク403−3の暗号化を停止し(または開始せず)、各チャンク408−3を部分的に変換された形式で収容する。代替的に、変換システムはチャンクの圧縮を省略し(例えば、すべてのデータの暗号化が殊更に求められる場合)、チャンク402−3に含まれる非圧縮データを暗号化し、各チャンクを部分的に変換された形式で収容してもよい。
【0110】
変換時間に関する基準にしたがって処理することの利点は、論理データオブジェクトを所定期間内に変換できることであり、したがって、例えばデータの一体性、アクセス性、および利用可能性等を保持しつつオンライン変換を促進することができる。
【0111】
例えば1のログとして変換されるデータの最大長Lmax、および/または1のログとして変換される受信オリジナルデータの最大時間Tmaxの所定基準に合致するには、変換システムは受信データ範囲を区分化し、各セグメントを個別のチャンクとして処理するよう構成される。
【0112】
当業者は、本発明の特定の実施例において、所定基準に合致するかを検証する動作713を省略し(および/または基準を「すべてのチャンク」と設定する)、したがってすべてのデータチャンクが変換システムにより変換されるよう構成されてもよいことをすぐに理解する。
【0113】
与えられたデータチャンクの処理が完了した後(714または715)、圧縮システムは、インデックスセクションに記録するログ関連情報を用意する。
【0114】
この変換システムはさらに、未処理論理データオブジェクトが処理されていないデータを含む場合に716をチェックし、717を繰り返して以下の1以上が達成されるまで次のデータチャンクを処理する:a)LO内の全データが処理済みとなる;b)アクティブな収容セクションに次の変換済みデータチャンクを収容するのに十分な空きスペースがない。変換システムは718でインデックスセクションを更新し、クライアント11および/またはサーバ12に確認を送り、新たなASを開始したら、保護がASレベルに提供される場合に前の収容セクションのデータへのアクセス保護を解除する。このインデックスセクションの更新は、新たなASの配置および/またはLOの閉鎖および/または他の予め定められたルールに従って、確認とほぼ並行に行われる。
【0115】
図9で後述するように、アクティブな収容セクションの空きスペースが次のデータチャンクを収容するのに不十分である場合(例えば、ターゲットバッファのオーバフローで書き込み動作が失敗したり、前記空きスペースより予想されるログサイズの見積もりが大きかったり、空きスペースが処理されるデータチャンクまたはその一部のサイズより小さかったりする等)であって、LOの全データが未だ処理されていない場合、変換システムは新たな収容セクションを割り当て、新たなデータチャンクの動作719を繰り返す。すべてのデータが処理されたら、変換システムはLOのアクセス保護を解除する(この保護がLO全体にかけられている場合)。
【0116】
インデックスセクションのエントリは、各収容セクションに収容されたデータの変換済み/未変換/部分的に変換済みの形式の表示を含む。この表示は、収容セクション全体および/または収容された各ログについて提供される。このヘッダは、変換済みLOの状態に対応する表示を設けてなる。本発明の特定の実施例では、この表示は、収容セクションに収容されたデータの形式に関わらず、処理が「完了」したことを示す「OFF」フラグ(または類似の表示)である。本発明の別の実施例では、「OFF」フラグは、圧縮済みLOに含まれる収容セクションのすべてが変換済み形式のデータを収容する場合にのみ;この時点でヘッダ内のフラグ(または他の表示)が「ON」に維持されるか処理が完了した特別の表示を得るまで、提供されるが、未だいくつかのデータは変換されず、あるいは部分的に変換される。
【0117】
本発明の特定の実施例はさらに、1以上の収容セクションに収容された変換されていないか部分的に変換されたデータの繰り延べされた変換を具えてもよい。このような繰り延べ変換は、予め規定された/設定可能なタイムスケジュール(例えば、非ワーキング時間に)、予め規定されたイベント毎(例えば、アドミニストレータのリクエスト、予め定められ/設定可能な期間所定のLOにアクセス関連リクエストがない場合、利用可能なネットワーク帯域幅が予め規定され/設定可能な基準に合致する等)に従って提供されてもよい。
【0118】
図7を参照して説明されるプロセスは、同様に既存の論理データオブジェクトの更新にも適用可能である。
【0119】
本発明の特定の実施例では、基準はネガティブでもよく、例えばデータチャンクはデフォルトで所定基準(例えばデータ種別および/またはアプリケーション)に合致するまで、変換されていないか部分的に変換された形式で収容されてもよい。このような実施例の実装が、圧縮変換に関する非限定的な例として図8に示されている。
【0120】
810でLOを保存するリクエストを受信したら、変換システムは811で変換済みLOのヘッダを適切な保存場所に書き込み、最初の収容セクションが処理済みデータを収容するよう割り当てる。最初のヘッダのレコードは、変換ステータスの表示を含む(例えば、変換が「処理中」であることを意味するフラグ「ON」や、任意で、変換プロセスに含まれる別のプロセス余の別のフラグ等)。この変換システムはまた、812で収容されるデータチャンクに関する情報を用意する(例えば、オフセット、データサイズ等)。変換システムはさらに、813でデータチャンクを非圧縮形式のデータを含むログとして収容セクションに書き込む。任意で、動作813の前に、変換システムは、データチャンクが書き込み前に圧縮を必要とする予め規定された基準に合致するかを検証してもよい(義務またはさらなる基準に応じて)。変換システムはさらに、収容済みデータチャンクの全体サイズがASのサイズに合致するようデータパディングを行ってもよい。
【0121】
変換システムはさらに、814で未処理論理データオブジェクトが未処理データを含むかを確認し、815でインデックスセクションを更新し、クライアント11および/またはサーバ12に確認を送る。このプロセスは816で、LO内の全データが処理され1またはそれ以上の収容セクションに収容され(817、816)、これにより本発明の特定の実施例にかかる変換済み論理データオブジェクトとなるまで、次のデータに繰り返される。
【0122】
インデックスセクションのログレコードは、収容されたログ内のデータの圧縮/非圧縮形式の表示を含み、同様に、この表示は収容セクション全体に提供されてもよい。変換システムは、非圧縮データを含む1またはそれ以上のASを見つけるべく収容セクションを走査し、収容データの圧縮を行い、818で圧縮データを新たに割り当てたASに収容する。古い収容セクションは818で解放され、これは図5を参照して前述されている。
【0123】
図9を参照すると、本発明の特定の実施例にかかる変換済み論理データオブジェクト(LO)の書き込み動作を一般化したフローチャートが示されている。「書き込み」リクエスト90がLO内のオフセットと書き込みデータの範囲Lを特定する。変換システムは、割り当てられた収容セクションがあるかを確認し、見つからなければ、91でアクティブな収容セクションを割り当てる(最後のログを収容するAS)。さらに、変換システムは、データ幅が1のログとして変換されるオリジナルデータの予め規定された最大長Lmaxを越えないかを確認し、オフセット、長さ、および変換されるデータを含むレコードを作成し、このレコードに割り当てられたASのフラグに対応するフラグを付与し、29で前記レコードを変換する(例えば、圧縮、暗号化、圧縮&暗号化等)。特定の変換に適用可能であれば、圧縮は同じ辞書を用いて行われ、および/または暗号化は以前のデータチャンクと同じ暗号化鍵を用いて行われる。
【0124】
得られるログは、最後がこのログを収容するのに十分の空きスペースを有する場合に、93でアクティブな収容セクションに書き込まれる。安全鍵に関する情報(もしあれば)(またはこの変換に伴う他の外部データ)はそれぞれログ内および/または収容セクション(例えばセクションのヘッダ)および/またはインデックスセクションに暗号化されない形式で保存される。
【0125】
空きスペースが不十分である場合(例えば、目標バッファのオーバーフローで書き込み動作失敗、予想されるログサイズの見積もりが空きスペースより大きい等)、変換システムは94で新たな収容セクションを割り当てる。この新たなASの割り当ては、図5で説明したように物理位置を付与してフラグを付与することを含む。新たなASを割り当てる本発明の特定の実施例はまた、現在アクティブなAS内の前記セクションへのポインタの書き込みを含む。
【0126】
アクティブなASの空きスペースがログ全体を収容するのに不十分であるが、所定の基準には合致する場合(例えば、所定サイズ以上であったり、必要なスペース全体の所定割合以上である場合等)、変換システムは95でオリジナルのチャンクを2つの部分に分割し、2つのログとして処理し、一方をアクティブなASに書き込んで他方を新たなASに書き込む。本発明の特定の実施例では、変換システムは、逆変換し(例えばアクティブなASを復号化および/または解凍する)、そうでなくてもアクティブなASに収容されるオリジナルデータの全体サイズを算出または見積もり、追加されるべきオリジナルデータのサイズを見積もり、これによりデータ全体の変換されたサイズが予め規定されたASのサイズと実質的に合致し、したがってアクティブなASを最大限埋めた分割が可能となる。
【0127】
アクティブなASの空きスペースが前記基準に合致しない場合、ログ全体が96で新たな収容セクションに書き込まれる。本発明の特定の実施例では、新たなASの最初のログへの書き込みの後に、収容されるログの全体サイズがASの予め規定されたサイズと等しくなるように、前のアクティブなASが全体的および/または仮想的に最後のログの長さを「修正」したものとしてマークされる。
【0128】
このログが保管場所に書き込まれた後に、変換システムは97でクライアント11および/またはサーバ12に確認を送る。98でインデクスセクションの更新が、新たなASの割り当ておよび/またはLOの閉鎖および/または他の所定のルールに従って、確認と実質的に並行して行われる。
【0129】
書き込まれるデータ範囲Lが1のログとして変換されるオリジナルデータの予め規定された最大長Lmaxを越える場合、変換システムはLmaxにしたがってオリジナルデータをセグメント化し、書き込まれるデータ全部が処理され収容セクションに収容されるまで、セグメント化された各データチャンクについてプロセスを繰り返す。同様に、書き込まれるデータ範囲を受信した時間が1のログとして変換されるオリジナルデータの予め規定された受信時間Tmaxを越える場合、変換システムはデータ範囲LをTmaxにしたがってセグメント化し、セグメント化されたチャンクそれぞれについてプロセスを繰り返す。
【0130】
インデックスセクションの更新は、新たなログに関するログレコードの追加と、したがって、対応する範囲に含まれるライブおよび/または古いデータに関する前のログレコードの更新を含む。この新たなログレコードは、前記ログに変換されるオリジナルのチャンクのオフセット(PosL)とサイズ(SizeL)に関する情報と、同様に、同定(identification)と、任意で、対応する収容セクションのフラグを含む。適切なログレコードの更新は、以下の手続にしたがって行われる:
1)インデックスセクションのすべてのログレコード(POS、Size)を見て、Pos≦PosL<Pos+SizeLの位置(Pos)を含むログレコードを探し:
a.見つかった場合に、そのログレコードを(Pos,PosL−Pos)に更新し、2)へ進む;
b.見つからない場合に、更新を終了する
2)SizeLをSize−PosL−Posと比較し:
a.大きい場合に、PosL≦Pos1<PosL+SizeLのすべてのログレコード(Pos1,Size1)を探す。これらのログレコードのなかから、最大位置をもつログレコードを探し、これを(PosL+SizeL,SizeL−(SizeL−Pos1))に更新し、前記ログレコードの他のログを削除して更新を終了する。
b.小さい場合に、(PosL+SizeL,Size−(PosL+SizeL−Pos))のログレコードを追加して更新を終了する。
c.等しい場合、更新を終了する。
【0131】
当業者は、本発明を同様に他の様々なインデックスセクション更新処理に適用してオリジナル範囲のデータとログから逆変換されるデータ間の一対一の関係を実現することを直ちに理解するであろう。例えば、この更新は以下の帰納的な処置にしたがって行われてもよい:
1)位置(PosL)とサイズ(SizeL)を有する新たなログレコードを用意する。
2)インデックスセクションのすべてのログレコード(Pos、Size)を見て、Pos≦PosL<Pos+SizeLの位置(Pos)を含むログレコードを探し:
a.見つかった場合に、そのログレコードを(Pos,PosL−Pos)に更新し、3)へ進む;
b.見つからない場合に、インデックステーブルに(PosL,SizeL)を追加し、更新を終了する
2)SizeLをSize−PosL−Posと比較し:
a.大きい場合に、(PosL,Size−PosL−Pos)のログレコードを追加する。PosLを新たなPosL1=Pos+Sizeに変更し、SizeLを新たなSizeL1=SizeL−(PosL1−PosL)に変更し、2)に戻る。
b.小さい場合に、ログレコード(PosL,SizeL)と(PosL+SizeL,Size−(PosL+SizeL−Pos)を追加し、更新を終了する。
c.等しい場合、ログレコード(PosL,SizeL)を追加し、更新を終了する。
【0132】
本発明の特定の実施例の利点は、既に書き込まれたデータを復号化および/または解凍またはそうでなくとも逆変換することなく新たなデータを書き込むこと、および/またはそうでなくても書き込まれたデータを再書き込みすることができることにある。新たなデータのみが変換され収容され、これに伴いインデックスセクションが更新されて、変換された論理データオブジェクトを読み出す補助となるよう構成される。
【0133】
図10を参照すると、本発明の特定の実施例にかかる変換済み論理データオブジェクト(LO)の読み出し動作を一般化したフローチャートが示されている。
【0134】
この読み出し動作は、LO内のデータのオフセットと読み出すデータの範囲を指定した読み出しリクエスト100で開始される。変換システム16は、すべてのインデックスセクションをアドレスし(例えば、最後のセクションや現在開いているセクションから開始したり、すべてを一緒に開いたりする等)、101でこの範囲内にあるデータに関連する最後に更新されたエントリをすべて検索する。図5で詳述したように、インデックスセクション内で最後に更新されたエントリは、この範囲のデータと変換済みデータチャンク(ログ)から抽出されるライブデータ(通常更新済み)との一対一の関係を実現する。したがって、変換システムは、見つかったエントリに対応する収容セクションの一つを102で連続的に逆変換し(例えば、復号化、解凍等)、83で必要なデータを見つける。本発明の特定の実施例では、102は、読み出される範囲の一番最後にあるデータを含む収容セクションから開始される。104で、この範囲からのすべてのデータが見つかるまで次の収容セクションに動作102−103が繰り返される。見つかったデータは105でこの範囲内での順番にしたがって整列される。データが整ったら、これらは106でアプリケーションに送られる。
【0135】
本発明の特定の実施例では、保存された変換済み論理オブジェクトが最適化されてもよい。この最適化は、収容セクションを走査して(例えば、インデックスセクション内を分析する等により)、古いデータが予め規定されたパーセント(例えば90%)以上の1またはそれ以上のASを検索することにより行われる。このようなASは逆変換され、ライブデータが抽出されて変換されアクティブな収容セクションに新たなログとして保存され、そして古い収容セクションが解放される。変換システムは解放された収容セクションのリストを保持し、対応する物理的な位置を新たな収容セクションを割り当てるときに使用する。図5で述べたように、新たに割り当てられたASとそのログは、古い収容セクションとは反対のフラグを有する。前記最適化は、論理オブジェクトを閉じる際、予め規定されたスケジュール毎、予め規定されたイベント等で行われる。
【0136】
本発明の特定の実施例の利点は、収容セクションに含まれる情報に応じてインデックスセクションをリカバリ(および/または作成)できることである。例えば、開く論理データオブジェクトのリカバリフラグが「ON」である場合、変換システムはリカバリプロセスを開始する。このリカバリプロセスは、変換済み論理オブジェクトが1またはそれ以上のインデックスされていない収容セクション(すなわち、収容セクションが1以上のインデックスセクションに対応するレコードを有する1以上のログを有さない)を含むかを確認することから開始される。
【0137】
リカバリの間、このようなインデックスされていないASのログは、最後のログから逆の順番で、反対のフラグ(すなわち、古く、解放されたASに属し古いデータを含むログ)が見つかるまで連続的に逆変換される。変換システムは、逆変換されたログに対応するエントリを作成し、これらをメモリに保存し、および/またはインデックスセクションに書き込む。これらのログは再び変換(transformed back)され(および/または、リカバリされた収容セクションが読み出しデータを含む場合は、一次的に逆変換、例えば復号化、解凍等されたまま保持される)、リカバリフラグは「OFF」に切り換えられる。
【0138】
例えば、新たなログが対応するインデックスセクションのログレコードとともに作成されたが、他の適切なエントリがまだ更新されないような場合に、エラーが生じうる。このような変換済み論理オブジェクトを読み出すとき、変換システムはデータ間の不整合を検出し(この範囲の同じ地点に1より多いエントリ)、直近に更新されたエントリ(同じ範囲に関する一番最近のログに対応する)にしたがってインデックスセクションを修正する。
【0139】
図11aを参照すると、具体的な読み出し時点におけるデータリクエストに応答する読み出し動作を一般化した図面である。図2−9で説明したように、新たなデータチャンクが変換され、逆変換および/またはそれ以外の既に書き込まれたデータの再書き込みを行うことなくストレージに書き込まれ、これにしたがってインデックスセクションが更新される。インデックスセクションの各エントリは、主要セクションの物理的な保存場所へのポインタ(または他のインジケータ)と、1以上のログレコードを含む。また前述したように、最後に更新されたレコードと同時に、このエントリは同じログに関する前に更新された(および/またはオリジナルの)レコードと、古いレコードと更新されたレコード間の差異の特別なマーキングとを含む。本発明の特定の実施例によると、各ログレコードは、当該ログレコードの更新時を示すタイムスタンプと、当該ログレコードに関して読み出されるデータのオフセットと長さを有するか添付されており、このエントリは同じログに関し異なるタイムスタンプを有する1またはそれ以上のログレコードを含む。このような技術の利点は、データに対して行われた変更とその時間のすべてを保有できる機能にあり、これによりユーザまたはアドミニストレータは所望の時点または時間範囲を特定ことにより履歴データにアクセスすることができる。
【0140】
読み出し動作は、アクセスする時点を示し読み出されるデータのオフセットと長さをそれぞれ指定した読み出しリクエスト110から開始される。変換システム16は、すべてのインデックスセクションをアドレスし(例えば、最後のセクションや現在開いているセクションから開始したり、すべてを一緒に開いたりする等)、111で対応するエントリ、すなわちこの範囲内にあるデータに関連し指定された時間T以前のタイムスタンプを有するログレコードを具えるエントリを検索する。変換システムはさらに、112で前記対応するエントリ/ログから最後に更新されたエントリ/ログを選択し、113で選択されたエントリに対応する収容セクションの一つ連続的に逆変換し(例えば、復号化、解凍等)、114で必要なデータを見つけて、キャッシュに保存する。115で、この範囲から所望の時点に対応するデータデータのすべてが見つかるまで次の収容セクションについて113−114の動作が繰り返される。見つかったデータは116でこの範囲内での順番にしたがって整列される。データが整ったら、これらは117でアプリケーションに送られる。
【0141】
同様に読み出し動作はいくつかの所望時点から同時に行われてもよい。上述した実施例はオリジナルデータの異なるバージョンの読み出しが可能であるが、オリジナルデータ範囲の各時点と逆変換後のログから読み出されるデータとの一対一の関係が保持されていることに注意されたい。
【0142】
変換システムはさらに、図10で述べたものと同様の方法で、保存された変換済み論理オブジェクトを最適化してもよい。この最適化は、インデックスセクション内のエントリを分析して、1またはそれ以上の古いAS、すなわち所定基準に合致するタイムスタンプを有するデータが予め規定されたパーセント(例えば90%)以上のものを検索することにより行われる。この基準は時間に関連するもの(例えば、予め規定され、および/または予め設定された時間以前のタイムスタンプ)、オリジナルデータの同じ時間に関連するタイムスタンプの数(すなわち、タイムスタンプが3つ以上、したがって過去に変更保存がないこと)、および/または所定のイベント(例えば、保存データの完全バックアップを行う)等がある。このような古いASは逆変換され、ライブデータが抽出されて変換され、付随するタイムスタンプを保持しつつアクティブな収容セクションに新たなログとして保存され、そして古い収容セクションが解放される。前記最適化は、論理オブジェクトを閉じる際、予め規定されたスケジュール毎、予め規定されたイベント等で行われる。
【0143】
図11bを参照すると、本発明の特定の実施例にかかる、タイムスタンプを有する図6bに示すインデックスセクションの概略図が示されている。
【0144】
図6a−bに示されているように、オリジナルのLOを構成するデータ601−1、601−2、601−3は、連続ログ608−1、608−2、608−3に変換され、収容セクション#1に収容される。長さL4の新たなデータチャンク601−4が、オフセットC1から始まるオリジナルのLOに置換し、ここで(C1+L4)=E<Dである。図1bに示すインデックスセクションは、タイムスタンプを有するログレコードを有し、範囲AB(オフセットA、長さL1)を示すログレコードが11:00に収容されたログ608−1に変換され、範囲BC(オフセットB、長さL2)が11:01に収容されたログ608−2に、範囲CD(オフセットC、長さL3)が11:16に収容されたログ608−3に変換される。12:03に更新範囲C1E(オフセットC1、長さL4)に対応するログ608−4が収容され、その後関連するログレコードの更新が続く。したがって、ログ608−2と608−3のログレコードは12:03に更新される。この更新されたログレコードは、ログ608−2がオフセットB、長さL21に対応するライブデータを含み、ログ608−3がオフセット#、長さL31に対応するライブデータを含むことを意味する。読み出し要求が、例えば、所望時間12:30を含む場合、変換システムは12:30以下のタイムスタンプのすべてのログレコードを検索し、どのデータが所望の時点に関連するかを示す最後に更新されたレコード(608−1−1、608−2−2、608−3−2、608−42)を選択する。読み出し要求の所望時間が例えば11:10である場合、変換システムは11:10以下のタイムスタンプのログレコードを検索し、したがって最後に更新されたもの(608−1−1、608−2−1)を選択する。
【0145】
図12aを参照すると、本発明の特定の実施例にかかる平文チャンク(例えば、オリジナルのチャンク、圧縮済みチャンク、それ以外の変換済みチャンク)の暗号化の非限定的な実施例を示す概略図である。図の実施例では、変換システムは、平文チャンクを固定サイズAの複数セグメントに崩し(必要な場合に、セグメントは前記固定サイズに丸められる)、チャンクの各平文セグメントを暗号化して固定サイズBの暗号化セグメントとし、必要に応じて、この暗号化セグメントを丸めて固定サイズBとする。図の実施例では、A=B=16バイトである。丸める際に、変換システムはデータセグメントのサイズ要求を満たすようパディングデータを入れる(例えば、ランダムキャラクタ、ブランク、ゼロ、ヌル)。このような実施例では、収容セクションのサイズは固定サイズBの倍数となる。
【0146】
図3−6に詳細に示すように、同じ収容セクションに収容されたログは、同じ安全鍵を用いて暗号化される。このセキュリティは、例えば初期化ベクトル(initialization vector:IV)など異なるログで追加の暗号変化を導入するとさらに向上する。この初期化ベクトルは、平文ブロックシーケンスの暗号化の初期化アルゴリズムとして用いられる秘密でない連続変数である。したがって、本発明の特定の実施例では、変換システムは圧縮済みチャンクを暗号化したログへと暗号化するための安全鍵とともに用いる初期化ベクトルを取得する(例えば、ランダムナンバーとして生成する)よう構成されている。このIVは、各ログのヘッダに収容されている。
【0147】
非限定的な実施例では、変換システムは、合衆国全国科学技術情報システム(NIST)によりこの分野で知られる改良暗号化基準(Advanced Encryption Standard:AES)を実装してもよい。このAESアルゴリズムは、128、192、256ビットの暗号化キーを用いて、128ビットのブロックデータを暗号化/復号化することができる。この分野で知られるように、AESアルゴリズムの特定のモードは、暗号化キーでの暗号化の前に、最初のチャンクに線形に追加(XOR)されるか平文の前に含まれる初期化ベクトル(IV)を用いることができる。したがって、変換システムは、各収容セクションの最初のログ用に初期化ベクトルを生成(例えばランダムに)し、さらにXOR動作を適用することにより連続ログにIVを生成可能に構成される。
【0148】
収容セクションは暗号化/復号化動作の原子要素として作用するため、最初のIVと安全鍵に関する情報は、特定の実施例では、収容セクションのヘッダに保持され、ログのヘッダに収容される必要がない。
【0149】
図12aの非限定的な例に示すように、平文チャンク(例えばオリジナルのチャンク、圧縮済みチャンク、それ以外の変換チャンク等)1201−1(サイズ33バイト)、1201−2(サイズ50バイト)、および1201−3(サイズ17バイト)は、同じ鍵を用いて各連続ログ1207−1(サイズ48バイト、15バイトのパディングデータ+ヘッダを含む)、1207−2(サイズ64バイト、14バイトのパディングデータ+ヘッダを含む)、および1207−3(サイズ32バイト、15バイトのパディングデータ+ヘッダを含む)へと暗号化され、収容セクション1205−1に収容される。図示するように、ログ内の暗号化データのサイズは、16の倍数となるように丸められる。各ログは、各ログに暗号化されたオリジナルデータの実際のサイズに関する情報と、任意で、各初期化ベクトルと暗号化する前のチャンクのサイズ(オリジナルのチャンクと異なる場合)とを(例えばログヘッダ内に)有する。この暗号鍵と最初の初期化ベクトルに関する情報は収容セクション(例えばASヘッダ)、および/またはインデックスセクションおよび/または変換済み論理データオブジェクトのヘッダ1204に保存される。
【0150】
図12bに示す本発明の特定の実施例によると、平文チャンク1201−1(サイズ33バイト)、1201−2(サイズ50バイト)、および1201−3(サイズ17バイト)は、図12aと同じ暗号化エンジンにより暗号化されるが、暗号化ログ内のパディングデータを実質的に排除しうる方法でなされる。最初の平文チャンクは2つの部分に分割され、第1の部分を以降に「プライマリデータ」と称し、これはオフセットから開始しデータセグメントサイズ要求(例えば16バイトの倍数)を満たす連続データを含み、第2の部分は前記セグメントサイズ以下の残りのデータであって、以降は「テイルデータ」と称する(図の実施例では16バイト以下)。第1の部分は、図3−6に記載した方法で暗号化され収容セクションに収容され、各ログを以降に「プライマリログ」と称する。テイルデータの第2の部分は別の連続チャンクとして処理され、1つのログ(以降は「テイルログ」と称す)として暗号化形式で(または暗号化せずに)収容セクションに収容される。この収容セクションのログ1221は、分割チャンク1211に対応しており、太字イタリック体の数字はそれぞれのデータサイズを示す。
【0151】
次のチャンクを処理するとき、暗号化システムは、テイルログから平文のテイルデータを取得し、このテイルデータを前記次のチャンクの最初に追加し、生成した組み合わせを上述の方法でプライマリデータとテイルデータに分割し、その後プライマリログ内のプライマリデータとテイルログ内のテイルデータを同じ安全鍵を用いて暗号化する。新たなプライマリログは、前のプライマリログの後の位置に収容される。ログに収容される平文データの合計の実際のサイズは、それぞれ更新される(この実施例では83バイト)。各平文データの合計の実際のサイズは、収容セクションおよび/または暗号化した論理データオブジェクトのヘッダに保存され維持される。プライマリログの暗号化データのサイズが平文プライマリデータのサイズと等しいため、各平文データの実際のサイズに関する情報をログ内に保持する必要がない。安全鍵と最初の初期化ベクトルに関する情報は、暗号化セクション(例えばASヘッダ)および/またはインデックスセクションおよび/または暗号化論理データオブジェクトのヘッダ1204に保存される。
【0152】
このプロセスは、収容セクションに十分な収容スペースがあるまでそれぞれ次のチャンクに繰り返され、例えば収容セクションのログ1222はチャンク1211および分割チャンク1212に対応し、一方でプライマリログ1232は前のプライマリログ1231の続きとして位置づけられる。収容セクションのログ1223は、チャンク1211、チャンク1212、および分割チャンク1213に対応し、一方でプライマリログ1233は前のプライマリログ1232の続きとして位置づけられる。したがって、収容セクションは、1(またはゼロ)のテイルログが続くプライマリログのシーケンスを具える。
【0153】
保存される平文チャンクを暗号化ログとして処理する方法は、同様の方法で暗号化チャンクを連続的な収容を含むストレージの論理データオブジェクトの暗号化方法およびシステムにも適用可能であることに留意されたい。
【0154】
図13は、本発明の特定の実施例にかかる変換システム16の概略機能ブロック図である。この変換システムは、セッションマネージャ132に接続されたクライアント入出力(I/O)ブロック131を具える。このI/Oブロックは、データアクセス関連リクエスト(例えば、読み出し、書き込み、ファイル端部設定/トランケート等)を受け、これをセッションマネージャに送る。
【0155】
あるセッションは、論理データオブジェクトへのアクセス要求(例えば、SCSI LUN容量リクエストコマンドのようなLUN容量リクエスト、オープンファイルリクエスト等)により開始し、同じIPアドレス(ユーザ)から遮断リクエストを受けると終了する(例えば、「LUNディスコネクト」、「ファイルクローズ」等)。セッションマネージャ132は、このセッションのプライベートデータのすべて、例えばソースセッションアドレス、セッションカウンタ、セッションステータス、使用バッファのすべて等を保持する。セッションマネージャはまた、論理データオブジェクトが開かれたときにすべての関連リソースをブロックし、前記リソースを分離すべく遮断する。セッションマネージャは、当該セッションマネージャに機能的に接続されたディスパッチャ133にすべてのリクエストを転送する。このディスパッチャ133は論理データオブジェクトマネージャ134と、バッファマネージャ135と、変換ユニット136とに機能的に接続している。本発明の特定の実施例によると、ディスパッチャ133は、データ関連トランザクション(例えば読み出し、書き込み、ファイル端部設定等)について論理データオブジェクトマネージャ134と通信し、変換動作について変換ユニット136と通信する。
【0156】
変換ユニットは、データを圧縮、暗号化、および/またはそれ以外の変換し、これらをストレージI/O138を通して物理ディスクに送り、同様にストレージI/Oを通して物理ディスクからデータを読み出し、各バッファを逆変換(復号化および/または解凍)し、任意で、オリジナルおよび/または部分的に変換されたデータチャンクをさらに処理するためにセグメント化し、および/または組み合わせることができる。この変換ユニットは、所定の変換動作について1またはそれ以上の変換ブロックを具えてもよく(例えば、暗号化/復号化ブロック136−2に機能的に接続された圧縮−解凍ブロック136−1)、前記ブロック間でデータ転送および必要な同期を実現すべく構成されている。この変換ユニットはまた、「容量ステータス」に応答して、オリジナルの論理データオブジェクトのサイズ(およびストレージの空き容量)を報告するよう構成されている。
【0157】
変換ユニット136はまた、変換プロセスに含まれるデータに関する外部情報を保存する1またはそれ以上の外部プラットフォームと通信し(例えば、鍵および/またはそのメタデータを受け取るための安全鍵等)、これらの情報を受信し、必要なデータ(例えば鍵IDを抽出あるいは生成してこれらを管理するよう構成されている。受信した情報は一次的に、変換システム内の信頼されたメモリに収容され、変換ユニットのブロックは前記情報の管理を実行してもよい(例えば、特定のポリシーにしたがって特定期間前記メモリに所定の鍵を収容する管理)。本発明の特定の実施例では、暗号化/復号化ブロック136−2はさらに、暗号化に用いる1またはそれ以上の暗号初期化ベクトルを生成してもよい(例えば安全鍵と一緒に)。
【0158】
論理データオブジェクトマネージャ134は、異なる論理データオブジェクトおよびその部分による命令とメモリシェアリングを担う。
【0159】
バッファマネージャ135は、メモリバッファリソースを管理し、他のブロックの動作用のメモリバッファの割り当ておよび解放を担当する。変換システムはさらに、前記セッションマネージャに結合された保全マネージャ137と、バッファマネージャと、データブロックマネージャとを具える。この保全マネージャは、例えば論理データオブジェクトの完全性を維持等するように、変換システムの全プロセスの同期と通常管理を担当する。これはまた、メモリバッファからストレージ物理I/Oインタフェース138を通した物理ディスクへのフラッシングと、必要な場合にディスクからの読み出しを担当する。
【0160】
当業者であれば、本発明は図13の構成に限定されるものではなく、他の方法で同等および/または変更した機能を併合するか分割し、ソフトウェア、ファームウェア、ハードウェア、またはその様々な組み合わせで実現しうることを直ちに理解するであろう。
【0161】
本発明は、本明細書の説明および図面に記載された応用例に限定されるものではない。本発明は、他の実施例に適用可能であり、様々な方法で実践され実現されうるものである。したがって、本書における語句および用語は説明目的であって、限定として認識されるべきではないことに注意すべきである。これにより、当業者はこの開示の基になる理念を、本発明の様々な目的を実現するための他の構造、方法、およびシステムの設計の礎とすることができる。
【0162】
また、本発明のシステムは適切にプログラムされたコンピュータであってもよい。同様に、本発明は、本発明の方法を実行するコンピュータ読み取り可能なコンピュータプログラムをも企図している。本発明はさらに、本発明の方法を実行する機械実行型の命令のプログラムを具現的に有する機械読み取り可能なメモリを企図している。
【0163】
当業者は、添付のクレームに規定された範囲を逸脱することなく、上述した本発明の実施例に様々な変更や変化を施すことができることを理解するであろう。
【特許請求の範囲】
【請求項1】
1以上のストレージプロトコルで動作するストレージ装置に保存すべく論理データオブジェクトを変換する方法であって、当該方法が:
各リクエストに応じて、ヘッダと予め規定されたサイズの複数の収容セクションとを具える変換された論理データオブジェクトを前記ストレージ装置内に作成するステップと;
複数のデータチャンクを処理して複数の処理済みデータチャンクを生成するステップであって、前記複数の処理済みデータチャンクはそれぞれ前記処理の結果である変換データを含むステップと;
前記複数の処理済みデータチャンクを、前記複数のデータチャンクが受け取られた順番に従って前記複数の収容セクションに連続的に収容するステップと;
前記論理データオブジェクトと前記複数の収容セクションに収容されたデータ間のマッピングを行うステップとを具えることを特徴とする方法。
【請求項2】
請求項1記載の方法において、前記処理は、1より多いデータ変換技術を含むことを特徴とする方法。
【請求項3】
請求項2記載の方法において、2以上のデータ変換技術が同時に統合され、協働して自律的に命令のセットを実行し、処理および複数の処理済みデータチャンクの収容のシーケンスの保存を容易にする方法で提供されることを特徴とする方法。
【請求項4】
請求項1記載の方法において、前記処理が、前記論理データオブジェクトの変換に対応して前記複数のデータチャンクを圧縮して複数の平文の圧縮データチャンクを得るステップと、さらに前記複数の平文の圧縮データチャンクを暗号化して、複数の処理済みデータチャンクを作成するステップとを含むことを特徴とする方法。
【請求項5】
1以上のストレージプロトコルで動作可能なストレージ装置内に保存するために論理データオブジェクトを変化する方法において、当該方法が:
各リクエストに応じて、前記ストレージ装置内にヘッダと所定サイズの複数の収容セクションとを有する変換済み論理データオブジェクトを生成するステップと、
多様なサイズを有し前記変換済み論理データオブジェクトに対応する複数のデータチャンクを受信するステップと、
前記複数のデータチャンクを変換して、複数の変換済みデータチャンクを作成するステップと、
前記複数の変換済みデータチャンクを前記複数の収容セクションに、前記複数のデータチャンクが受信された順番で連続的に収容するステップであって、前記複数の収容セクションは前記論理データオブジェクトの入出力トランザクションにおいて変換/逆変換の原子要素として作用する、ステップとを含むことを特徴とする方法。
【請求項6】
請求項5記載の方法において、さらに、各収容セクションについて、逆変換された場合に前記収容セクションから取得できるデータと、前記変換の結果として前記セクションに収容された各々の変換済みデータチャンク内のデータとが実質的に同一となるようにするステップを含むことを特徴とする方法。
【請求項7】
請求項5記載の方法において、前記変換は、1より多いデータ変換技術を含むことを特徴とする方法。
【請求項8】
請求項7記載の方法において、2以上のデータ変換技術が同時に統合され、協働して自律的に命令のセットを実行し、処理のシーケンスの保存および複数の処理済みデータチャンクの収容を容易にする方法で提供されることを特徴とする方法。
【請求項9】
1以上のストレージプロトコルで動作可能なストレージ装置内に保存するために論理データオブジェクトを変化する方法において、当該方法が:
各リクエストに応じて、前記ストレージ装置内にヘッダと所定サイズの複数の収容セクションとを有する変換済み論理データオブジェクトを生成するステップと、
多様なサイズを有し前記変換済み論理データオブジェクトに対応する複数のデータチャンクを受信するステップと、
前記複数のデータチャンクを処理するステップであって、前記処理は前記複数のデータチャンクの各々を圧縮して複数の平文の圧縮データチャンクを得るステップと、さらに前記複数の平文の圧縮データチャンクの各々を暗号化して複数の処理済みデータチャンクを作成するステップとを含む、ステップと、
前記複数の変換済みデータチャンクを前記複数の収容セクションに、前記複数のデータチャンクが受信された順番で連続的に収容するステップと、
変換された前記論理データオブジェクトと前記複数の収容セクションに収容されたデータ間のマッピングを行うステップとを含むことを特徴とする方法。
【請求項10】
請求項9記載の方法において、前記暗号化と圧縮の処理は同時に統合され、協働して自律的に命令のセットを実行し、処理のシーケンスの保存および複数の処理済みデータチャンクの収容を容易にする方法で提供されることを特徴とする方法。
【請求項11】
請求項9記載の方法において、前記マッピングは、前記変換済み論理データオブジェクトの一部を構成する1以上のインデックスセクションの補助で提供され、前記インデックスセクションは少なくとも、1以上の収容セクションに収容された複数の処理済みデータチャンクに関する情報と、前記複数の収容セクションに関する物理的な保存場所のインジケーションとを保持する1以上のエントリを含むことを特徴とする方法。
【請求項12】
請求項9記載の方法において、所定のサイズは、前記複数の収容セクションの各々と等しいことを特徴とする方法。
【請求項13】
請求項9記載の方法において、前記複数の収容セクションの各々のサイズは、所定の条件に基づいて所定のサイズのリストから選択されることを特徴とする方法。
【請求項14】
請求項9記載の方法において、前記圧縮は、適応型辞書(adaptive dictionary)の補助で提供され、同じ収容セクションに収容された複数の処理済みデータチャンクは同じ辞書の補助で圧縮され同じ鍵の補助で暗号化されることを特徴とする方法。
【請求項15】
請求項9記載の方法において、前記変換済み論理データオブジェクトのヘッダは、前記変換済み論理データオブジェクトのユニークな識別子と、前記変換済み論理データオブジェクトのサイズに関する情報とを含むことを特徴とする方法。
【請求項16】
請求項9記載の方法において、前記複数の処理済みデータチャンクは、ログ形式で収容されることを特徴とする方法。
【請求項17】
請求項16記載の方法において、処理済みデータチャンクのログは、変換済み論理データオブジェクト内の処理済みデータチャンクのオフセットに関する情報を含むログヘッダと、前記処理済みデータチャンクのサイズと、前記ログとこのログを収容する収容セクションを結びつける識別子とを具えることを特徴とする方法。
【請求項18】
請求項16記載の方法において、前記変換済み論理データオブジェクトは、1以上のインデックスセクションを具え、当該セクションは1以上の収容セクションに関連する1以上のエントリを具え、前記エントリは前記1以上の収容セクションの物理的な保存場所への1以上のインジケータと前記複数の収容セクションに収容された各ログに関する1以上のログレコードとを具え、前記処理済み論理データオブジェクト内のデータと前記収容セクションに収容されたデータ間のマッピングを容易にする情報を具えることを特徴とする方法。
【請求項19】
請求項9記載の方法において、各収容セクションは、前記収容セクションのそれぞれの物理的な位置の使用/再使用状態を示すフラグを伴い、各処理済みデータチャンクは、当該処理済みデータチャンクを収容する収容セクションと同じフラグを伴うことを特徴とする方法。
【請求項20】
請求項11記載の方法において、前記変換済み論理データオブジェクトが第1のインデックスセクションへのインジケータを含み、各インデックスセクションは、もしある場合に次の連続するインデックスセクションへのインジケータを含むことを特徴とする方法。
【請求項21】
請求項9の方法ステージを実行するよう構成されたことを特徴とする、ストレージネットワークで動作する通信機器。
【請求項22】
請求項9の方法ステージを実行するよう構成されたことを特徴とする、ストレージネットワークで動作するストレージ装置。
【請求項23】
システムに機能的に接続されたストレージ装置に保存するために論理データオブジェクトを変換しうるシステムであって、請求項9の方法ステージを実行するよう構成されたことを特徴とするシステム。
【請求項24】
請求項9記載の方法において、少なくともファイルアクセスストレージプロトコルで動作可能であることを特徴とする方法。
【請求項25】
請求項9記載の方法において、少なくともブロックモードアクセスストレージプロトコルで動作可能であることを特徴とする方法。
【請求項26】
請求項9に従って作成される変換済み論理データオブジェクトにデータ範囲を書き込む方法であって:
各リクエストに応じて、前記複数のチャンクを圧縮して複数の平文の圧縮データ着を得て、さらに前記複数の平文の圧縮チャンクを暗号化して複数の処理済みデータチャンクを作成するステップと、
前記複数の処理済みデータチャンクを、これらとその前に収容するために受け取った処理済みデータチャンクの順番に従って連続的に収容するステップと、
前記マッピングを、前記範囲内のデータと前記変換済み論理オブジェクトに収容された前記複数の処理済みデータチャンクから読み出されるデータとの一対一の関係を実現する方法で更新するステップとを具えることを特徴とする方法。
【請求項27】
請求項26記載の方法において、アクティブな収容セクションに含まれる空きスペースに依存して、新たな処理済みデータチャンクがアクティブな収容セクションおよび/または新たな収容セクションに収容されることを特徴とする方法。
【請求項28】
請求項26記載の方法において、前記マッピングを更新するステップが:
a)すべての新規な処理済みデータチャンクに関する情報を追加するステップであって、前記情報は処理済みの各データチャンクのオフセットとサイズに関するステップと、
b)前記範囲に対応するデータのライブおよび/または古いかに関する前に取得された情報を更新するステップとを具えることを特徴とする方法。
【請求項29】
請求項11に従って作成される変換済み論理オブジェクトからデータ範囲を読み出す方法であって、当該方法が:
各リクエストに応じて、前記範囲内のデータに関するインデックスセクション内で作成されおよび/または最後に更新されたすべてのエントリを検出するステップと;
前記検出されたエントリに対応する前記複数の収容セクションの1つを逆変換し、前記エントリから提供されるマッピングに応じて読み出すべきデータを抽出するステップと;
前記範囲からすべてのデータを抽出するまで、前記検出されたエントリに対応する前記複数の収容セクション内の1またはそれ以上の収容セクションについて前記逆変換を繰り返すステップと;
前記抽出したデータを前記範囲における順番にしたがって配列するステップとを具えることを特徴とする方法。
【請求項30】
少なくとも1のストレージプロトコルで動作するストレージ装置内に保存するために論理データオブジェクトを変換しうるシステムであって:
ヘッダと複数の予め規定されたサイズの収容セクションとを具える変換済み論理データオブジェクトを前記ストレージ装置内に作成する手段と;
多様なサイズを有し前記変換済み論理データオブジェクトに対応する複数のデータチャンクを受信する手段と、
前記複数のデータチャンクの各々を処理する手段であって、前記処理は前記複数のデータチャンクの各々を圧縮して複数の平文の圧縮データチャンクを得るステップと、さらに前記複数の平文の圧縮データチャンクの各々を暗号化して複数の処理済みデータチャンクを作成するステップとを含む、手段と、
前記処理済みデータチャンクを前記複数の収容セクションに、前記データチャンクが受信された順番で連続的に収容するのを容易にする手段と、
前記論理データオブジェクト内のデータと前記複数の収容セクションに収容されたデータ間のマッピングを行う手段とを具えることをことを特徴とするシステム。
【請求項31】
少なくとも1のストレージプロトコルで動作するストレージ装置内に保存するために論理データオブジェクトを変換する方法を実行するための機械により実行可能な命令のプログラムを搭載した機械読み取り可能なプログラムストレージ装置であって、前記方法が:
各リクエストに応じて、ヘッダと予め規定されたサイズの複数の収容セクションとを具える変換済み論理データオブジェクトを前記ストレージ装置内に作成するステップと;
多様なサイズを有し前記変換済み論理データオブジェクトに対応する複数のデータチャンクを受信するステップと、
前記複数のデータチャンクを連続的に処理するステップであって、前記処理は前記複数のデータチャンクの各々を圧縮して複数の平文の圧縮データチャンクを得るステップと、さらに前記複数の平文の圧縮データチャンクの各々を暗号化して保存用の複数の処理済みデータチャンクを作成するステップとを含む、ステップと、
前記複数の変換済みデータチャンクを前記複数の収容セクションに、前記複数のデータチャンクが受信された順番で連続的に収容するステップと、
変換された前記論理データオブジェクト内のデータと前記複数の収容セクションに収容されたデータ間のマッピングを行うステップとを含むことを特徴とする方法。
【請求項32】
少なくとも1のストレージプロトコルで動作するストレージ装置内に保存するために論理データオブジェクトを変換するコンピュータ読み取り可能なプログラムコードを有するコンピュータ利用可能な媒体を具えるコンピュータプログラム製品であって:
各リクエストに応じて、ヘッダと複数の予め規定されたサイズの収容セクションとを具える変換済み論理データオブジェクトを前記ストレージ装置内に作成するステップを前記コンピュータに実行させるコンピュータ読み取り可能なプログラムコードと;
多様なサイズを有し前記変換済み論理データオブジェクトに対応する複数のデータチャンクを受信するステップを前記コンピュータに実行させるコンピュータ読み取り可能なプログラムコードと;
複数のデータチャンクを処理するステップであって、前記処理は前記複数のデータチャンクの各々を圧縮して複数の平文の圧縮データチャンクを得るステップと、さらに前記複数の平文の圧縮データチャンクの各々を暗号化して保存用の複数の処理済みデータチャンクを作成するステップとを含む、ステップを前記コンピュータに実行させるコンピュータ読み取り可能なプログラムコードと;
前記複数の変換済みデータチャンクを前記複数の収容セクションに、前記複数のデータチャンクが受信された順番で連続的に収容するステップを前記コンピュータに実行させるコンピュータ読み取り可能なプログラムコードと;
変換された前記論理データオブジェクト内のデータと前記複数の収容セクションに収容されたデータ間のマッピングを行うステップ前記コンピュータに実行させるコンピュータ読み取り可能なプログラムコードとを具えることを特徴とするコンピュータプログラム製品。
【請求項1】
1以上のストレージプロトコルで動作するストレージ装置に保存すべく論理データオブジェクトを変換する方法であって、当該方法が:
各リクエストに応じて、ヘッダと予め規定されたサイズの複数の収容セクションとを具える変換された論理データオブジェクトを前記ストレージ装置内に作成するステップと;
複数のデータチャンクを処理して複数の処理済みデータチャンクを生成するステップであって、前記複数の処理済みデータチャンクはそれぞれ前記処理の結果である変換データを含むステップと;
前記複数の処理済みデータチャンクを、前記複数のデータチャンクが受け取られた順番に従って前記複数の収容セクションに連続的に収容するステップと;
前記論理データオブジェクトと前記複数の収容セクションに収容されたデータ間のマッピングを行うステップとを具えることを特徴とする方法。
【請求項2】
請求項1記載の方法において、前記処理は、1より多いデータ変換技術を含むことを特徴とする方法。
【請求項3】
請求項2記載の方法において、2以上のデータ変換技術が同時に統合され、協働して自律的に命令のセットを実行し、処理および複数の処理済みデータチャンクの収容のシーケンスの保存を容易にする方法で提供されることを特徴とする方法。
【請求項4】
請求項1記載の方法において、前記処理が、前記論理データオブジェクトの変換に対応して前記複数のデータチャンクを圧縮して複数の平文の圧縮データチャンクを得るステップと、さらに前記複数の平文の圧縮データチャンクを暗号化して、複数の処理済みデータチャンクを作成するステップとを含むことを特徴とする方法。
【請求項5】
1以上のストレージプロトコルで動作可能なストレージ装置内に保存するために論理データオブジェクトを変化する方法において、当該方法が:
各リクエストに応じて、前記ストレージ装置内にヘッダと所定サイズの複数の収容セクションとを有する変換済み論理データオブジェクトを生成するステップと、
多様なサイズを有し前記変換済み論理データオブジェクトに対応する複数のデータチャンクを受信するステップと、
前記複数のデータチャンクを変換して、複数の変換済みデータチャンクを作成するステップと、
前記複数の変換済みデータチャンクを前記複数の収容セクションに、前記複数のデータチャンクが受信された順番で連続的に収容するステップであって、前記複数の収容セクションは前記論理データオブジェクトの入出力トランザクションにおいて変換/逆変換の原子要素として作用する、ステップとを含むことを特徴とする方法。
【請求項6】
請求項5記載の方法において、さらに、各収容セクションについて、逆変換された場合に前記収容セクションから取得できるデータと、前記変換の結果として前記セクションに収容された各々の変換済みデータチャンク内のデータとが実質的に同一となるようにするステップを含むことを特徴とする方法。
【請求項7】
請求項5記載の方法において、前記変換は、1より多いデータ変換技術を含むことを特徴とする方法。
【請求項8】
請求項7記載の方法において、2以上のデータ変換技術が同時に統合され、協働して自律的に命令のセットを実行し、処理のシーケンスの保存および複数の処理済みデータチャンクの収容を容易にする方法で提供されることを特徴とする方法。
【請求項9】
1以上のストレージプロトコルで動作可能なストレージ装置内に保存するために論理データオブジェクトを変化する方法において、当該方法が:
各リクエストに応じて、前記ストレージ装置内にヘッダと所定サイズの複数の収容セクションとを有する変換済み論理データオブジェクトを生成するステップと、
多様なサイズを有し前記変換済み論理データオブジェクトに対応する複数のデータチャンクを受信するステップと、
前記複数のデータチャンクを処理するステップであって、前記処理は前記複数のデータチャンクの各々を圧縮して複数の平文の圧縮データチャンクを得るステップと、さらに前記複数の平文の圧縮データチャンクの各々を暗号化して複数の処理済みデータチャンクを作成するステップとを含む、ステップと、
前記複数の変換済みデータチャンクを前記複数の収容セクションに、前記複数のデータチャンクが受信された順番で連続的に収容するステップと、
変換された前記論理データオブジェクトと前記複数の収容セクションに収容されたデータ間のマッピングを行うステップとを含むことを特徴とする方法。
【請求項10】
請求項9記載の方法において、前記暗号化と圧縮の処理は同時に統合され、協働して自律的に命令のセットを実行し、処理のシーケンスの保存および複数の処理済みデータチャンクの収容を容易にする方法で提供されることを特徴とする方法。
【請求項11】
請求項9記載の方法において、前記マッピングは、前記変換済み論理データオブジェクトの一部を構成する1以上のインデックスセクションの補助で提供され、前記インデックスセクションは少なくとも、1以上の収容セクションに収容された複数の処理済みデータチャンクに関する情報と、前記複数の収容セクションに関する物理的な保存場所のインジケーションとを保持する1以上のエントリを含むことを特徴とする方法。
【請求項12】
請求項9記載の方法において、所定のサイズは、前記複数の収容セクションの各々と等しいことを特徴とする方法。
【請求項13】
請求項9記載の方法において、前記複数の収容セクションの各々のサイズは、所定の条件に基づいて所定のサイズのリストから選択されることを特徴とする方法。
【請求項14】
請求項9記載の方法において、前記圧縮は、適応型辞書(adaptive dictionary)の補助で提供され、同じ収容セクションに収容された複数の処理済みデータチャンクは同じ辞書の補助で圧縮され同じ鍵の補助で暗号化されることを特徴とする方法。
【請求項15】
請求項9記載の方法において、前記変換済み論理データオブジェクトのヘッダは、前記変換済み論理データオブジェクトのユニークな識別子と、前記変換済み論理データオブジェクトのサイズに関する情報とを含むことを特徴とする方法。
【請求項16】
請求項9記載の方法において、前記複数の処理済みデータチャンクは、ログ形式で収容されることを特徴とする方法。
【請求項17】
請求項16記載の方法において、処理済みデータチャンクのログは、変換済み論理データオブジェクト内の処理済みデータチャンクのオフセットに関する情報を含むログヘッダと、前記処理済みデータチャンクのサイズと、前記ログとこのログを収容する収容セクションを結びつける識別子とを具えることを特徴とする方法。
【請求項18】
請求項16記載の方法において、前記変換済み論理データオブジェクトは、1以上のインデックスセクションを具え、当該セクションは1以上の収容セクションに関連する1以上のエントリを具え、前記エントリは前記1以上の収容セクションの物理的な保存場所への1以上のインジケータと前記複数の収容セクションに収容された各ログに関する1以上のログレコードとを具え、前記処理済み論理データオブジェクト内のデータと前記収容セクションに収容されたデータ間のマッピングを容易にする情報を具えることを特徴とする方法。
【請求項19】
請求項9記載の方法において、各収容セクションは、前記収容セクションのそれぞれの物理的な位置の使用/再使用状態を示すフラグを伴い、各処理済みデータチャンクは、当該処理済みデータチャンクを収容する収容セクションと同じフラグを伴うことを特徴とする方法。
【請求項20】
請求項11記載の方法において、前記変換済み論理データオブジェクトが第1のインデックスセクションへのインジケータを含み、各インデックスセクションは、もしある場合に次の連続するインデックスセクションへのインジケータを含むことを特徴とする方法。
【請求項21】
請求項9の方法ステージを実行するよう構成されたことを特徴とする、ストレージネットワークで動作する通信機器。
【請求項22】
請求項9の方法ステージを実行するよう構成されたことを特徴とする、ストレージネットワークで動作するストレージ装置。
【請求項23】
システムに機能的に接続されたストレージ装置に保存するために論理データオブジェクトを変換しうるシステムであって、請求項9の方法ステージを実行するよう構成されたことを特徴とするシステム。
【請求項24】
請求項9記載の方法において、少なくともファイルアクセスストレージプロトコルで動作可能であることを特徴とする方法。
【請求項25】
請求項9記載の方法において、少なくともブロックモードアクセスストレージプロトコルで動作可能であることを特徴とする方法。
【請求項26】
請求項9に従って作成される変換済み論理データオブジェクトにデータ範囲を書き込む方法であって:
各リクエストに応じて、前記複数のチャンクを圧縮して複数の平文の圧縮データ着を得て、さらに前記複数の平文の圧縮チャンクを暗号化して複数の処理済みデータチャンクを作成するステップと、
前記複数の処理済みデータチャンクを、これらとその前に収容するために受け取った処理済みデータチャンクの順番に従って連続的に収容するステップと、
前記マッピングを、前記範囲内のデータと前記変換済み論理オブジェクトに収容された前記複数の処理済みデータチャンクから読み出されるデータとの一対一の関係を実現する方法で更新するステップとを具えることを特徴とする方法。
【請求項27】
請求項26記載の方法において、アクティブな収容セクションに含まれる空きスペースに依存して、新たな処理済みデータチャンクがアクティブな収容セクションおよび/または新たな収容セクションに収容されることを特徴とする方法。
【請求項28】
請求項26記載の方法において、前記マッピングを更新するステップが:
a)すべての新規な処理済みデータチャンクに関する情報を追加するステップであって、前記情報は処理済みの各データチャンクのオフセットとサイズに関するステップと、
b)前記範囲に対応するデータのライブおよび/または古いかに関する前に取得された情報を更新するステップとを具えることを特徴とする方法。
【請求項29】
請求項11に従って作成される変換済み論理オブジェクトからデータ範囲を読み出す方法であって、当該方法が:
各リクエストに応じて、前記範囲内のデータに関するインデックスセクション内で作成されおよび/または最後に更新されたすべてのエントリを検出するステップと;
前記検出されたエントリに対応する前記複数の収容セクションの1つを逆変換し、前記エントリから提供されるマッピングに応じて読み出すべきデータを抽出するステップと;
前記範囲からすべてのデータを抽出するまで、前記検出されたエントリに対応する前記複数の収容セクション内の1またはそれ以上の収容セクションについて前記逆変換を繰り返すステップと;
前記抽出したデータを前記範囲における順番にしたがって配列するステップとを具えることを特徴とする方法。
【請求項30】
少なくとも1のストレージプロトコルで動作するストレージ装置内に保存するために論理データオブジェクトを変換しうるシステムであって:
ヘッダと複数の予め規定されたサイズの収容セクションとを具える変換済み論理データオブジェクトを前記ストレージ装置内に作成する手段と;
多様なサイズを有し前記変換済み論理データオブジェクトに対応する複数のデータチャンクを受信する手段と、
前記複数のデータチャンクの各々を処理する手段であって、前記処理は前記複数のデータチャンクの各々を圧縮して複数の平文の圧縮データチャンクを得るステップと、さらに前記複数の平文の圧縮データチャンクの各々を暗号化して複数の処理済みデータチャンクを作成するステップとを含む、手段と、
前記処理済みデータチャンクを前記複数の収容セクションに、前記データチャンクが受信された順番で連続的に収容するのを容易にする手段と、
前記論理データオブジェクト内のデータと前記複数の収容セクションに収容されたデータ間のマッピングを行う手段とを具えることをことを特徴とするシステム。
【請求項31】
少なくとも1のストレージプロトコルで動作するストレージ装置内に保存するために論理データオブジェクトを変換する方法を実行するための機械により実行可能な命令のプログラムを搭載した機械読み取り可能なプログラムストレージ装置であって、前記方法が:
各リクエストに応じて、ヘッダと予め規定されたサイズの複数の収容セクションとを具える変換済み論理データオブジェクトを前記ストレージ装置内に作成するステップと;
多様なサイズを有し前記変換済み論理データオブジェクトに対応する複数のデータチャンクを受信するステップと、
前記複数のデータチャンクを連続的に処理するステップであって、前記処理は前記複数のデータチャンクの各々を圧縮して複数の平文の圧縮データチャンクを得るステップと、さらに前記複数の平文の圧縮データチャンクの各々を暗号化して保存用の複数の処理済みデータチャンクを作成するステップとを含む、ステップと、
前記複数の変換済みデータチャンクを前記複数の収容セクションに、前記複数のデータチャンクが受信された順番で連続的に収容するステップと、
変換された前記論理データオブジェクト内のデータと前記複数の収容セクションに収容されたデータ間のマッピングを行うステップとを含むことを特徴とする方法。
【請求項32】
少なくとも1のストレージプロトコルで動作するストレージ装置内に保存するために論理データオブジェクトを変換するコンピュータ読み取り可能なプログラムコードを有するコンピュータ利用可能な媒体を具えるコンピュータプログラム製品であって:
各リクエストに応じて、ヘッダと複数の予め規定されたサイズの収容セクションとを具える変換済み論理データオブジェクトを前記ストレージ装置内に作成するステップを前記コンピュータに実行させるコンピュータ読み取り可能なプログラムコードと;
多様なサイズを有し前記変換済み論理データオブジェクトに対応する複数のデータチャンクを受信するステップを前記コンピュータに実行させるコンピュータ読み取り可能なプログラムコードと;
複数のデータチャンクを処理するステップであって、前記処理は前記複数のデータチャンクの各々を圧縮して複数の平文の圧縮データチャンクを得るステップと、さらに前記複数の平文の圧縮データチャンクの各々を暗号化して保存用の複数の処理済みデータチャンクを作成するステップとを含む、ステップを前記コンピュータに実行させるコンピュータ読み取り可能なプログラムコードと;
前記複数の変換済みデータチャンクを前記複数の収容セクションに、前記複数のデータチャンクが受信された順番で連続的に収容するステップを前記コンピュータに実行させるコンピュータ読み取り可能なプログラムコードと;
変換された前記論理データオブジェクト内のデータと前記複数の収容セクションに収容されたデータ間のマッピングを行うステップ前記コンピュータに実行させるコンピュータ読み取り可能なプログラムコードとを具えることを特徴とするコンピュータプログラム製品。
【図1】
【図2a】
【図2b】
【図3a】
【図3b】
【図4a】
【図4b】
【図4c】
【図4d】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11a】
【図11b】
【図12a】
【図12b】
【図13】
【図2a】
【図2b】
【図3a】
【図3b】
【図4a】
【図4b】
【図4c】
【図4d】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11a】
【図11b】
【図12a】
【図12b】
【図13】
【公開番号】特開2013−101672(P2013−101672A)
【公開日】平成25年5月23日(2013.5.23)
【国際特許分類】
【出願番号】特願2013−10629(P2013−10629)
【出願日】平成25年1月23日(2013.1.23)
【分割の表示】特願2009−512773(P2009−512773)の分割
【原出願日】平成19年5月31日(2007.5.31)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【復代理人】
【識別番号】110001302
【氏名又は名称】特許業務法人北青山インターナショナル
【公開日】平成25年5月23日(2013.5.23)
【国際特許分類】
【出願日】平成25年1月23日(2013.1.23)
【分割の表示】特願2009−512773(P2009−512773)の分割
【原出願日】平成19年5月31日(2007.5.31)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【復代理人】
【識別番号】110001302
【氏名又は名称】特許業務法人北青山インターナショナル
[ Back to top ]