(57)【要約】  本発明の一実施形態は、識別子を使用してアクセスされるコンテンツユニットのコンテナ化を目的とする。ファイルシステムは、ファイルシステムに格納され得るファイルの数に対して、過度に制限的である制限を課すことがある。そのため、一実施形態では、複数のコンテンツユニットが、ファイルシステム内の、コンテナファイルと呼ばれる単一ファイルに格納され得る。各コンテンツユニットは識別子を関連付けられている。アクセス用エンティティが、以前に格納したコンテンツユニットに対するアクセスを要求し、コンテンツユニットについて識別子を提供するとき、識別子を使用して、コンテンツユニットが格納されるコンテナファイルが探索され得る。
2008544397.tif 000002
【特許請求の範囲】
【請求項１】
ファイルシステム内のコンテンツユニットを管理する方法であって、
第１コンテンツユニットであって、第１コンテンツユニットのコンテンツに少なくとも部分的に基づいて計算される第１コンテンツアドレスを有する、第１コンテンツユニットを格納するための第１要求を受信する工程と、
前記第１要求に応答して、前記第１コンテンツユニットを前記ファイルシステム内のファイルに格納する工程と、
第２コンテンツユニットであって、第２コンテンツユニットのコンテンツに少なくとも部分的に基づいて計算される第２コンテンツアドレスを有する、第２コンテンツユニットを格納するための第２要求を受信する工程と、
前記第２要求に応答して、前記第２コンテンツユニットを前記ファイルに格納する工程と、を含む方法。
【請求項２】
前記ファイルシステムは、複数のディレクトリを有するタイムベースディレクトリ構造(time-based directory structure)を含み、前記複数のディレクトリはそれぞれ、ある期間に対応し、前記ファイルは、前記第１および第２要求が受信された期間に対応する前記複数のディレクトリのうちの１つのディレクトリに格納される請求項１に記載の方法。
【請求項３】
前記第１要求は、前記第１コンテンツユニットを格納する格納システムから受信され、前記第１コンテンツアドレスは、前記格納システム上への前記第１コンテンツユニットの格納時間に関連する時間を指示するタイムスタンプを含む請求項２に記載の方法。
【請求項４】
前記第１要求に応答して、前記タイムスタンプにおいて指示される前記時間を含む期間に対応する前記複数のディレクトリのうちの１つのディレクトリを確定する工程と、
前記タイムスタンプにおいて指示される時間を含む期間に対応する前記複数のディレクトリのうちの１つのディレクトリ内に、前記第１コンテンツユニットを格納する前記ファイルの指示を格納する工程と、をさらに含む請求項３に記載の方法。
【請求項５】
前記第１要求に応答して、識別子を前記第１コンテンツユニットに関連付ける作業をさらに含む請求項４に記載の方法。
【請求項６】
前記識別子は前記第１コンテンツアドレスである請求項５に記載の方法。
【請求項７】
前記第１要求を受信したという肯定応答として前記識別子を戻す作業をさらに含む請求項５に記載の方法。
【請求項８】
前記第１コンテンツユニットにアクセスするための第３要求であって、前記識別子を使用して前記第１コンテンツユニットを識別する、第３要求を受信する作業と、
前記第１コンテンツユニットを格納する前記ファイルの前記指示を、前記識別子を使用して探索する作業と、
前記第１コンテンツユニットを格納する前記ファイルを、前記指示に基づいて探索する作業と、
前記ファイルにおいて前記第１コンテンツユニットを探索する作業と、
前記第３要求に応答して前記第１コンテンツユニットを戻す作業とをさらに含む請求項５に記載の方法。
【請求項９】
前記ファイルは、前記第１および第２要求が受信された時間を含む期間に対応する請求項３に記載の方法。
【請求項１０】
前記ファイルは、前記ファイルが格納される前記複数のディレクトリのうちの前記１つのディレクトリの前記期間によって包含される期間に対応する請求項３に記載の方法。
【請求項１１】
前記第１要求は、前記第１コンテンツユニットを格納する格納システムからの、前記第１コンテンツユニットを複製するための要求である請求項１に記載の方法。
【請求項１２】
索引ファイル内に前記第１コンテンツユニットについてのエントリを作成する作業をさらに含み、前記エントリは、前記第１コンテンツユニットを格納する前記ファイルを識別し、前記索引ファイルは、前記第１コンテンツユニットについての索引時間に対応する前記複数のディレクトリのうちの１つのディレクトリに格納される請求項２に記載の方法。
【請求項１３】
前記第１要求は、前記第１コンテンツユニットを格納する格納システムからの、前記第１コンテンツユニットを複製するための要求であり、前記索引時間は、前記格納システム上への前記第１コンテンツユニットの格納時間に関連する時間である請求項１２に記載の方法。
【請求項１４】
前記索引時間は、前記第１要求の受信時間に関連する時間である請求項１２に記載の方法。
【請求項１５】
前記索引時間は、前記第１コンテンツユニットの前記コンテンツアドレスから導出される時間である請求項１２に記載の方法。
【請求項１６】
前記第１コンテンツユニットの前記コンテンツアドレスから導出される前記時間は、前記第１コンテンツユニットのコンテンツに基づく前記コンテンツアドレスの一部(a portion)から導出される請求項１５に記載の方法。
【請求項１７】
第３コンテンツユニットを格納するための第３要求であって、前記第１コンテンツユニットと同じコンテンツユニットを有する、第３要求を受信する作業と、
前記第１および第３コンテンツユニットが、同じコンテンツを有することを判定する作業と、
前記第１および第３コンテンツユニットが、同じコンテンツを有することを判定することに応答して、前記第３コンテンツユニットを格納することを拒否する作業とをさらに含む請求項１に記載の方法。
【請求項１８】
前記第３コンテンツユニットにアクセスするための第４要求を受信する作業と、
前記第４要求に応答して、前記第１コンテンツユニットを戻す作業とをさらに含む請求項１７に記載の方法。
【請求項１９】
コンピュータシステム上で実行されると、ファイルシステム内のコンテンツユニットを管理する方法を実施する、命令をエンコードされた少なくとも１つのコンピュータ読取可能媒体であって、
第１コンテンツユニットであって、第１コンテンツユニットのコンテンツに少なくとも部分的に基づいて計算される第１コンテンツアドレスを有する、第１コンテンツユニットを格納するための第１要求を受信する作業と、
前記第１要求に応答して、前記第１コンテンツユニットを前記ファイルシステム内のファイルに格納する作業と、
第２コンテンツユニットであって、第２コンテンツユニットのコンテンツに少なくとも部分的に基づいて計算される第２コンテンツアドレスを有する、第２コンテンツユニットを格納するための第２要求を受信する作業と、
前記第２要求に応答して、前記第２コンテンツユニットを前記ファイルに格納する作業
とを含む少なくとも１つのコンピュータ読取可能媒体。
【請求項２０】
前記ファイルシステムは、複数のディレクトリを有するタイムベースディレクトリ構造を含み、前記複数のディレクトリはそれぞれ、ある期間に対応し、前記ファイルは、前記第１および第２要求が受信された期間に対応する前記複数のディレクトリのうちの１つのディレクトリに格納される請求項１９に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項２１】
前記第１要求は、前記第１コンテンツユニットを格納する格納システムから受信され、前記第１コンテンツアドレスは、前記格納システム上への前記第１コンテンツユニットの格納時間に関連する時間を指示するタイムスタンプを含む請求項２０に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項２２】
前記方法は、
前記第１要求に応答して、前記タイムスタンプにおいて指示される前記時間を含む期間に対応する前記複数のディレクトリのうちの１つのディレクトリを確定する作業と、
前記タイムスタンプにおいて指示される前記時間を含む期間に対応する前記複数のディレクトリのうちの前記１つのディレクトリ内に、前記第１コンテンツユニットを格納する前記ファイルの指示を格納する作業とをさらに含む請求項２１に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項２３】
前記方法は、
前記第１要求に応答して、識別子を前記第１コンテンツユニットに関連付ける作業をさらに含む請求項２２に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項２４】
前記識別子は前記第１コンテンツアドレスである請求項２３に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項２５】
前記方法は、
前記第１要求を受信したという肯定応答として前記識別子を戻す作業をさらに含む請求項２３に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項２６】
前記方法は、
前記第１コンテンツユニットにアクセスするための第３要求であって、前記識別子を使用して前記第１コンテンツユニットを識別する、第３要求を受信する作業と、
前記第１コンテンツユニットを格納する前記ファイルの前記指示を、前記識別子を使用して探索する作業と、
前記第１コンテンツユニットを格納する前記ファイルを、前記指示に基づいて探索する作業と、
前記ファイルにおいて前記第１コンテンツユニットを探索する作業と、
前記第３要求に応答して前記第１コンテンツユニットを戻す作業とをさらに含む請求項２３に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項２７】
前記ファイルは、前記第１および第２要求が受信された時間を含む期間に対応する請求項２１に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項２８】
前記ファイルは、前記ファイルが格納される前記複数のディレクトリのうちの前記１つのディレクトリの前記期間によって包含される期間に対応する請求項２１に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項２９】
前記第１要求は、前記第１コンテンツユニットを格納する格納システムからの、前記第１コンテンツユニットを複製するための要求である請求項１９に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項３０】
前記方法は、
索引ファイル内に前記第１コンテンツユニットについてのエントリを作成する作業をさらに含み、前記エントリは、前記第１コンテンツユニットを格納する前記ファイルを識別し、前記索引ファイルは、前記第１コンテンツユニットについての索引時間に対応する前記複数のディレクトリのうちの１つのディレクトリに格納される請求項２０に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項３１】
前記第１要求は、前記第１コンテンツユニットを格納する格納システムからの、前記第１コンテンツユニットを複製するための要求であり、前記索引時間は、前記格納システム上への前記第１コンテンツユニットの格納時間に関連する時間である請求項３０に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項３２】
前記索引時間は、前記第１要求の受信時間に関連する時間である請求項３０に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項３３】
前記索引時間は、前記第１コンテンツユニットの前記コンテンツアドレスから導出される時間である請求項３０に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項３４】
前記第１コンテンツユニットの前記コンテンツアドレスから導出される前記時間は、前記第１コンテンツユニットのコンテンツに基づく前記コンテンツアドレスの一部から導出される請求項３３に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項３５】
前記方法は、
第３コンテンツユニットであって、第１コンテンツユニットと同じコンテンツユニットを有する、第３コンテンツユニットを格納するための第３要求を受信する作業と、
前記第１および第３コンテンツユニットが、同じコンテンツを有することを判定する作業と、
前記第１および第３コンテンツユニットが、同じコンテンツを有することを判定することに応答して、前記第３コンテンツユニットを格納することを拒否する作業とをさらに含む請求項１９に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項３６】
前記方法は、
前記第３コンテンツユニットにアクセスするための第４要求を受信する作業と、
前記第４要求に応答して、前記第１コンテンツユニットを戻す作業とをさらに含む請求項３５に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項３７】
ファイルシステム内のコンテンツユニットを管理するコンピュータであって、
少なくとも１つの入力と、
前記少なくとも１つの入力に結合する少なくとも１つのコントローラであって、
第１コンテンツユニットであって、第１コンテンツユニットのコンテンツに少なくとも部分的に基づいて計算される第１コンテンツアドレスを有する、第１コンテンツユニットを格納するための第１要求を、前記入力を介して受信し、
前記第１要求に応答して、前記第１コンテンツユニットを前記ファイルシステム内のファイルに格納し、
第２コンテンツユニットであって、第２コンテンツユニットのコンテンツに少なくとも部分的に基づいて計算される第２コンテンツアドレスを有する、第２コンテンツユニッ
トを格納するための第２要求を、前記入力を介して受信し、
前記第２要求に応答して、前記第２コンテンツユニットを前記ファイルに格納する、少なくとも１つのコントローラとを備えるコンピュータ。
【請求項３８】
前記ファイルシステムは、複数のディレクトリを有するタイムベースディレクトリ構造を含み、前記複数のディレクトリはそれぞれ、ある期間に対応し、前記ファイルは、前記第１および第２要求が受信された期間に対応する前記複数のディレクトリのうちの１つのディレクトリに格納される請求項３７に記載のコンピュータ。
【請求項３９】
前記第１要求は、前記第１コンテンツユニットを格納する格納システムから受信され、前記第１コンテンツアドレスは、前記格納システム上への前記第１コンテンツユニットの格納時間に関連する時間を指示するタイムスタンプを含む請求項３８に記載のコンピュータ。
【請求項４０】
前記少なくとも１つのコントローラは、
前記第１要求に応答して、前記タイムスタンプにおいて指示される前記時間を含む期間に対応する前記複数のディレクトリのうちの１つのディレクトリを確定し、
前記タイムスタンプにおいて指示される前記時間を含む期間に対応する前記複数のディレクトリのうちの前記１つのディレクトリ内に、前記第１コンテンツユニットを格納する前記ファイルの指示を格納する請求項３９に記載のコンピュータ。
【請求項４１】
前記少なくとも１つのコントローラは、
前記第１要求に応答して、識別子を前記第１コンテンツユニットに関連付ける請求項４０に記載のコンピュータ。
【請求項４２】
前記識別子は前記第１コンテンツアドレスである請求項４１に記載のコンピュータ。
【請求項４３】
前記少なくとも１つのコントローラは、
前記第１要求を受信したという肯定応答として前記識別子を戻す請求項４１に記載のコンピュータ。
【請求項４４】
前記少なくとも１つのコントローラは、
前記第１コンテンツユニットにアクセスするための第３要求であって、前記識別子を使用して前記第１コンテンツユニットを識別する、第３要求を、前記入力を介して受信し、
前記第１コンテンツユニットを格納する前記ファイルの前記指示を、前記識別子を使用して探索し、
前記第１コンテンツユニットを格納する前記ファイルを、前記指示に基づいて探索し、
前記ファイルにおいて前記第１コンテンツユニットを探索し、
前記第３要求に応答して前記第１コンテンツユニットを戻す請求項４１に記載のコンピュータ。
【請求項４５】
前記ファイルは、前記第１および第２要求が受信された時間を含む期間に対応する請求項３９に記載のコンピュータ。
【請求項４６】
前記ファイルは、前記ファイルが格納される前記複数のディレクトリのうちの前記１つのディレクトリの前記期間によって包含される期間に対応する請求項３９に記載のコンピュータ。
【請求項４７】
前記第１要求は、前記第１コンテンツユニットを格納する格納システムからの、前記第１コンテンツユニットを複製するための要求である請求項３７に記載のコンピュータ。
【請求項４８】
前記少なくとも１つのコントローラは、
索引ファイル内に前記第１コンテンツユニットについてのエントリを作成し、前記エントリは、前記第１コンテンツユニットを格納する前記ファイルを識別し、前記索引ファイルは、前記第１コンテンツユニットについての索引時間に対応する前記複数のディレクトリのうちの１つのディレクトリに格納される請求項３８に記載のコンピュータ。
【請求項４９】
前記第１要求は、前記第１コンテンツユニットを格納する格納システムからの、前記第１コンテンツユニットを複製するための要求であり、前記索引時間は、前記格納システム上への前記第１コンテンツユニットの格納時間に関連する時間である請求項４８に記載のコンピュータ。
【請求項５０】
前記索引時間は、前記第１要求の受信時間に関連する時間である請求項４８に記載のコンピュータ。
【請求項５１】
前記索引時間は、前記第１コンテンツユニットの前記コンテンツアドレスから導出される時間である請求項４８に記載のコンピュータ。
【請求項５２】
前記第１コンテンツユニットの前記コンテンツアドレスから導出される前記時間は、前記第１コンテンツユニットのコンテンツに基づく前記コンテンツアドレスの一部から導出される請求項５１に記載のコンピュータ。
【請求項５３】
前記少なくとも１つのコントローラは、
第３コンテンツユニットであって、前記第１コンテンツユニットと同じコンテンツユニットを有する、第３コンテンツユニットを格納するための第３要求を受信し、
前記第１および第３コンテンツユニットが、同じコンテンツを有することを判定し、
前記第１および第３コンテンツユニットが、同じコンテンツを有することを判定することに応答して、前記第３コンテンツユニットを格納することを拒否する請求項３７に記載のコンピュータ。
【請求項５４】
前記少なくとも１つのコントローラは、
前記第３コンテンツユニットにアクセスするための第４要求を、前記入力を介して受信し、
前記第４要求に応答して、前記第１コンテンツユニットを戻す請求項５３に記載のコンピュータ。
【請求項５５】
前記少なくとも１つのコントローラは、
第１コンテンツユニットであって、第１コンテンツユニットのコンテンツに少なくとも部分的に基づいて計算される第１コンテンツアドレスを有する、第１コンテンツユニットを格納するための第１要求を、前記入力を介して受信する手段と、
前記第１要求に応答して、前記第１コンテンツユニットを前記ファイルシステム内のファイルに格納する手段と、
第２コンテンツユニットであって、第２コンテンツユニットのコンテンツに少なくとも部分的に基づいて計算される第２コンテンツアドレスを有する、第２コンテンツユニットを格納するための第２要求を、前記入力を介して受信する手段と、
前記第２要求に応答して、前記第２コンテンツユニットを前記ファイルに格納する手段とをさらに備える請求項３７に記載のコンピュータ。
【請求項５６】
コンテンツユニットであって、コンテンツユニットのコンテンツに少なくとも部分的に基づくコンテンツアドレスを有する、コンテンツユニットにアクセスする方法であって、
前記コンテンツユニットは、ファイルシステム内のファイルに格納され、方法は、
前記コンテンツユニットにアクセスするための要求を受信する作業であって、前記要求は、識別子を使用してコンテンツユニットを識別し、前記コンテンツユニットが格納される前記ファイルは、少なくとも１つの付加的なコンテンツユニットを格納し、前記少なくとも１つの付加的なコンテンツユニットは、前記コンテンツユニットのコンテンツに少なくとも部分的に基づくコンテンツアドレスを有する、要求を受信する作業と、
前記コンテンツユニットが格納されるファイルを、前記識別子を使用して探索する作業と、
前記コンテンツユニットが格納されるファイルにおいて前記コンテンツユニットを探索する作業とを含む方法。
【請求項５７】
前記要求に応答して前記コンテンツユニットを戻す作業をさらに含む請求項５６に記載の方法。
【請求項５８】
前記要求は読取要求である請求項５７に記載の方法。
【請求項５９】
前記要求はクエリ要求である請求項５６に記載の方法。
【請求項６０】
前記ファイルシステムは、複数のディレクトリを有するタイムベースディレクトリ構造を含み、前記複数のディレクトリはそれぞれ、ある期間に対応し、前記ファイルは、前記コンテンツユニットが前記ファイルシステムに格納された期間に対応する前記複数のディレクトリのうちの１つのディレクトリに格納される請求項５７に記載の方法。
【請求項６１】
前記コンテンツユニットについての前記コンテンツアドレスはタイムスタンプを含む請求項６６に記載の方法。
【請求項６２】
前記コンテンツユニットは、前記コンテンツユニットを格納する格納システムからの複製によって、前記ファイルシステムに格納され、前記タイムスタンプは、前記コンテンツユニットが前記格納システムに格納された時間に対応する請求項６１に記載の方法。
【請求項６３】
前記タイムスタンプは、前記コンテンツユニットが前記ファイルシステムに格納された時間に対応する請求項６１に記載の方法。
【請求項６４】
前記ファイルシステムは、階層ファイルシステムであり、前記複数のディレクトリは、少なくとも１つのルートディレクトリ、および、それぞれが親ディレクトリを有する複数の非ルートディレトリを備える階層ツリーで配列され、前記木の中の前記複数のディレクトリのうちの少なくとも１つのディレクトリは、それぞれの親ディレクトリに対応する期間によって包含される期間に対応する請求項６２に記載の方法。
【請求項６５】
前記タイムスタンプによって指示される時間に対応する、前記複数のディレクトリのうちの少なくとも１つのディレクトリは、前記ファイルのロケーションを指示する情報を含む索引ファイルを格納する請求項６４に記載の方法。
【請求項６６】
前記コンテンツユニットが格納されるファイルを探索する作業は、
前記タイムスタンプを使用する作業であって、それによって、前記索引ファイルを探索する、使用する作業と、
前記索引ファイルを使用する作業であって、それによって、前記ファイルの前記ロケーションを確定する、使用する作業とをさらに含む請求項６５に記載の方法。
【請求項６７】
前記要求は、格納時間を識別する時間基準を指定するタイムベースクエリ要求であり、
前記ファイルを探索する作業は、
前記時間基準を使用する作業であって、それによって、前記時間基準によって識別される前記格納時間を包含する期間に対応するディレクトリを識別する、使用する作業と、
前記識別されたディレクトリに格納されたコンテンツユニットを識別する作業とをさらに含む請求項６５に記載の方法。
【請求項６８】
削除要求が、前記識別されたコンテンツユニットの任意のコンテンツユニットについて受信されたかどうかを判定する作業と、
削除要求がそれについて受信されなかった前記識別されたコンテンツユニットの指示を戻す作業とをさらに含む請求項６７に記載の方法。
【請求項６９】
コンピュータシステム上で実行されると、コンテンツユニットであって、コンテンツユニットのコンテンツに少なくとも部分的に基づくコンテンツアドレスを有する、コンテンツユニットにアクセスする方法を実施する、命令をエンコードされた少なくとも１つのコンピュータ読取可能媒体であって、前記方法は、
前記コンテンツユニットにアクセスするための要求を受信する作業であって、前記要求は、識別子を使用して前記コンテンツユニットを識別し、前記コンテンツユニットが格納されるファイルは、少なくとも１つの付加的なコンテンツユニットを格納し、前記少なくとも１つの付加的なコンテンツユニットは、前記コンテンツユニットのコンテンツに少なくとも部分的に基づくコンテンツアドレスを有する、要求を受信する作業と、
前記コンテンツユニットが格納されるファイルを、前記識別子を使用して探索する作業と、
前記コンテンツユニットが格納されるファイルにおいて前記コンテンツユニットを探索する作業とを含む少なくとも１つのコンピュータ読取可能媒体。
【請求項７０】
前記方法は、
前記要求に応答して前記コンテンツユニットを戻す作業をさらに含む請求項６９に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項７１】
前記要求は読取要求である請求項７０に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項７２】
前記要求はクエリ要求である請求項６９に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項７３】
前記ファイルシステムは、複数のディレクトリを有するタイムベースディレクトリ構造を含み、前記複数のディレクトリはそれぞれ、ある期間に対応し、前記ファイルは、前記コンテンツユニットが前記ファイルシステム内に格納された期間に対応する前記複数のディレクトリのうちの１つのディレクトリに格納される請求項６９に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項７４】
前記コンテンツユニットについての前記コンテンツアドレスは、タイムスタンプを含む請求項７３に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項７５】
前記コンテンツユニットは、前記コンテンツユニットを格納する格納システムからの複製によって、前記ファイルシステムに格納され、前記タイムスタンプは、前記コンテンツユニットが前記格納システムに格納された時間に対応する請求項７４に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項７６】
前記タイムスタンプは、前記コンテンツユニットが前記ファイルシステムに格納された
時間に対応する請求項７４に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項７７】
前記ファイルシステムは、階層ファイルシステムであり、前記複数のディレクトリは、少なくとも１つのルートディレクトリ、および、それぞれが親ディレクトリを有する複数の非ルートディレトリを備える階層ツリーで配列され、前記木の中の前記複数のディレクトリのうちの少なくとも１つのディレクトリは、それぞれの親ディレクトリに対応する期間によって包含される期間に対応する請求項７５に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項７８】
前記タイムスタンプによって指示される時間に対応する、前記複数のディレクトリのうちの少なくとも１つのディレクトリは、前記ファイルのロケーションを指示する情報を含む索引ファイルを格納する請求項７７に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項７９】
前記コンテンツユニットが格納されるファイルを探索する作業は、
前記タイムスタンプを使用する作業であって、それによって、前記索引ファイルを探索する、使用する作業と、
前記索引ファイルを使用する作業であって、それによって、前記ファイルの前記ロケーションを確定する、使用する作業とをさらに含む請求項７８に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項８０】
前記要求は、格納時間を識別する時間基準を指定するタイムベースクエリ要求であり、前記ファイルを探索する作業は、
前記時間基準を使用する作業であって、それによって、前記時間基準によって識別される前記格納時間を包含する期間に対応するディレクトリを識別する、使用する作業と、
前記識別されたディレクトリに格納されたコンテンツユニットを識別する作業とをさらに含む請求項７８に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項８１】
削除要求が、前記識別されたコンテンツユニットの任意のコンテンツユニットについて受信されたかどうかを判定する作業と、
削除要求がそれについて受信されなかった前記識別されたコンテンツユニットの指示を戻す作業とをさらに含む請求項８０に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項８２】
コンテンツユニットであって、コンテンツユニットのコンテンツに少なくとも部分的に基づくコンテンツアドレスを有する、コンテンツユニットにアクセスするコンピュータであって、前記コンテンツユニットはファイルシステム内のファイルに格納され、コンピュータは、
入力と、
前記入力に結合する少なくとも１つのコントローラであって、
前記コンテンツユニットにアクセスするための要求を、前記入力を介して受信し、前記要求は、識別子を使用して前記コンテンツユニットを識別し、前記コンテンツユニットが格納されるファイルは、少なくとも１つの付加的なコンテンツユニットを格納し、前記少なくとも１つの付加的なコンテンツユニットは、前記コンテンツユニットのコンテンツに少なくとも部分的に基づくコンテンツアドレスを有し、
前記コンテンツユニットが格納されるファイルを、前記識別子を使用して探索し、
前記コンテンツユニットが格納されるファイルにおいて前記コンテンツユニットを探索する、少なくとも１つのコントローラとを備えるコンピュータ。
【請求項８３】
前記少なくとも１つのコントローラは、
前記要求に応答して前記コンテンツユニットを戻す請求項８２に記載のコンピュータ。
【請求項８４】
前記要求は読取要求である請求項８２に記載のコンピュータ。
【請求項８５】
前記要求はクエリ要求である請求項８２に記載のコンピュータ。
【請求項８６】
前記ファイルシステムは、複数のディレクトリを有するタイムベースディレクトリ構造を含み、前記複数のディレクトリはそれぞれ、ある期間に対応し、前記ファイルは、前記コンテンツユニットが前記ファイルシステムに格納された期間に対応する前記複数のディレクトリのうちの１つのディレクトリに格納される請求項８２に記載のコンピュータ。
【請求項８７】
前記コンテンツユニットについての前記コンテンツアドレスはタイムスタンプである請求項８６に記載のコンピュータ。
【請求項８８】
前記コンテンツユニットは、前記コンテンツユニットを格納する格納システムからの複製によって、前記ファイルシステムに格納され、前記タイムスタンプは、前記コンテンツユニットが前記格納システムに格納された時間に対応する請求項８７に記載のコンピュータ。
【請求項８９】
前記タイムスタンプは、前記コンテンツユニットが前記ファイルシステムに格納された時間に対応する請求項８７に記載のコンピュータ。
【請求項９０】
前記ファイルシステムは、階層ファイルシステムであり、前記複数のディレクトリは、少なくとも１つのルートディレクトリ、および、それぞれが親ディレクトリを有する複数の非ルートディレトリを備える階層ツリーで配列され、前記木の中の前記複数のディレクトリのうちの少なくとも１つのディレクトリは、それぞれの親ディレクトリに対応する期間によって包含される期間に対応する請求項８８に記載のコンピュータ。
【請求項９１】
前記タイムスタンプによって指示される時間に対応する、前記複数のディレクトリのうちの少なくとも１つのディレクトリは、前記ファイルのロケーションを指示する情報を含む索引ファイルを格納する請求項９０に記載のコンピュータ。
【請求項９２】
前記少なくとも１つのコントローラは、
前記タイムスタンプを使用して、前記索引ファイルを探索し、
前記索引ファイルを使用して、前記ファイルの前記ロケーションを確定する請求項９１に記載のコンピュータ。
【請求項９３】
前記要求は、格納時間を識別する時間基準を指定するタイムベースクエリ要求であり、前記少なくとも１つのコントローラは、
前記時間基準を使用して、前記時間基準によって識別される前記格納時間を包含する期間に対応するディレクトリを識別し、
前記識別されたディレクトリに格納されたコンテンツユニットを識別する請求項９１に記載のコンピュータ。
【請求項９４】
前記少なくとも１つのコントローラは、
削除要求が、前記識別されたコンテンツユニットの任意のコンテンツユニットについて受信されたかどうかを判定し、
削除要求がそれについて受信されなかった前記識別されたコンテンツユニットの指示を戻す請求項９３に記載のコンピュータ。
【請求項９５】
前記少なくとも１つのコントローラは、
前記コンテンツユニットにアクセスするための要求を、前記入力を介して受信する手段であって、前記要求は、識別子を使用して前記コンテンツユニットを識別し、前記コンテンツユニットが格納されるファイルは、少なくとも１つの付加的なコンテンツユニットを格納し、前記少なくとも１つの付加的なコンテンツユニットは、前記コンテンツユニットのコンテンツに少なくとも部分的に基づくコンテンツアドレスを有する、受信する手段と、
前記コンテンツユニットが格納されるファイルを、前記識別子を使用して探索する手段と、
前記コンテンツユニットが格納されるファイルにおいて前記コンテンツユニットを探索する手段とをさらに備える請求項８２に記載のコンピュータ。
【請求項９６】
複数のレベルを有する階層ツリーで配列される複数のディレクトリを有する階層ファイルシステム内にコンテンツユニットを格納する方法であって、前記複数のレベルはそれぞれ、ある時間の単位に対応し、前記階層ツリーは、少なくとも１つのルートディレクトリ、および、それぞれが親ディレクトリを有する複数の非ルートディレトリを備え、前記木の中の前記複数のディレクトリのうちの少なくとも１つのディレクトリは、それぞれの親ディレクトリに対応する期間によって包含される期間に対応し、方法は、
コンテンツユニットが、前記ファイルシステム内への格納のために受信されるレートを確定する作業と、
コンテンツユニットが、格納のために受信される前記レートに基づいて、前記ファイルシステム内のどこにコンテンツユニットを格納するかを動的に確定する作業を含む方法。
【請求項９７】
前記ファイルシステム内のどこにコンテンツユニットを格納するかを確定する作業は、
コンテンツユニットが受信される前記レートを確定する作業が実施されるときに、前記階層ファイルシステム内の最低既存レベルに対応する前記時間の単位より短い時間の追加の単位に対応するレベルで、コンテンツユニットが格納されるべきであることを判定する作業をさらに含む請求項９６に記載の方法。
【請求項９８】
前記時間の追加の単位に対応する少なくとも１つのディレクトリを、前記階層ファイルシステムに動的に追加する作業と、
前記少なくとも１つのディレクトリ内に少なくとも１つのコンテンツユニットを格納する作業とをさらに含む請求項９７に記載の方法。
【請求項９９】
コンテンツユニットを格納する前記複数のレベルのうちの１つのレベルを選択する作業と、
前記複数のレベルのうちの前記選択された１つのレベルにおける少なくとも１つのディレクトリ内に少なくとも１つのコンテンツユニットを格納する作業とをさらに含む請求項９８に記載の方法。
【請求項１００】
前記複数のレベルのうちの前記選択された１つのレベルにおける前記少なくとも１つのディレクトリは、前記少なくとも１つのコンテンツユニットを格納するための要求が受信された期間に対応するディレクトリである請求項９９に記載の方法。
【請求項１０１】
前記少なくとも１つのコンテンツユニットを格納する作業は、
前記少なくとも１つのディレクトリ内のファイルに前記少なくとも１つのコンテンツユニットを格納する作業をさらに含み、前記少なくとも１つのファイルは、少なくとも１つの追加のコンテンツユニットを格納する請求項９９に記載の方法。
【請求項１０２】
前記少なくとも１つのコンテンツユニットは、前記コンテンツユニットのコンテンツに
少なくとも部分的に基づいて計算されるコンテンツアドレスに関連する請求項１００に記載の方法。
【請求項１０３】
前記コンテンツアドレスはタイムスタンプを含む請求項１０２に記載の方法。
【請求項１０４】
実行されると、複数のレベルを有する階層ツリーで配列される複数のディレクトリを有する階層ファイルシステム内にコンテンツユニットを格納する方法を実施する、命令をエンコードされた少なくとも１つのコンピュータ読取可能媒体であって、前記複数のレベルはそれぞれ、ある時間の単位に対応し、前記階層ツリーは、少なくとも１つのルートディレクトリ、および、それぞれが親ディレクトリを有する複数の非ルートディレトリを備え、前記木の中の前記複数のディレクトリのうちの少なくとも１つのディレクトリは、それぞれの親ディレクトリに対応する期間によって包含される期間に対応し、前記方法は、
コンテンツユニットが、前記ファイルシステム内への格納のために受信されるレートを確定する作業と、
コンテンツユニットが、格納のために受信される前記レートに基づいて、前記ファイルシステム内のどこにコンテンツユニットを格納するかを動的に確定する作業を含む少なくとも１つのコンピュータ読取可能媒体。
【請求項１０５】
前記ファイルシステム内のどこにコンテンツユニットを格納するかを確定する作業は、
コンテンツユニットが受信される前記レートを確定する作業が実施されるときに、前記階層ファイルシステム内の最低既存レベルに対応する前記時間の単位より短い時間の追加の単位に対応するレベルで、コンテンツユニットが格納されるべきであることを判定する作業をさらに含む請求項１０４に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項１０６】
前記方法は、
前記時間の追加の単位に対応する少なくとも１つのディレクトリを、前記階層ファイルシステムに動的に追加する作業と、
前記少なくとも１つのディレクトリ内に少なくとも１つのコンテンツユニットを格納する作業とをさらに含む請求項１０５に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項１０７】
前記方法は、
コンテンツユニットを格納する前記複数のレベルのうちの１つのレベルを選択する作業と、
前記複数のレベルのうちの前記選択された１つのレベルにおける少なくとも１つのディレクトリ内に、少なくとも１つのコンテンツユニットを格納する作業とをさらに含む請求項１０６に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項１０８】
前記複数のレベルのうちの前記選択された１つのレベルにおける前記少なくとも１つのディレクトリは、前記少なくとも１つのコンテンツユニットを格納するための要求が受信された期間に対応するディレクトリである請求項１０７に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項１０９】
前記少なくとも１つのコンテンツユニットを格納する作業は、
前記少なくとも１つのディレクトリ内のファイルに前記少なくとも１つのコンテンツユニットを格納する作業をさらに含み、前記少なくとも１つのファイルは、少なくとも１つの追加のコンテンツユニットを格納する請求項１０７に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項１１０】
前記少なくとも１つのコンテンツユニットは、前記コンテンツユニットのコンテンツに
少なくとも部分的に基づいて計算されるコンテンツアドレスに関連する請求項１０９に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項１１１】
前記コンテンツアドレスはタイムスタンプを含む請求項１１０に記載の少なくとも１つのコンピュータ読取可能媒体。
【請求項１１２】
複数のレベルを有する階層ツリーで配列される複数のディレクトリを有する階層ファイルシステム内にコンテンツユニットを格納するコンピュータであって、前記複数のレベルはそれぞれ、ある時間の単位に対応し、前記階層ツリーは、少なくとも１つのルートディレクトリ、および、それぞれが親ディレクトリを有する複数の非ルートディレトリを備え、前記木の中の前記複数のディレクトリのうちの少なくとも１つのディレクトリは、それぞれの親ディレクトリに対応する期間によって包含される期間に対応し、コンピュータは、
入力と、
前記入力に結合する少なくとも１つのコントローラであって、
コンテンツユニットが、前記ファイルシステム内への格納のために前記入力を通して受信されるレートを確定し、
コンテンツユニットが、格納のために受信される前記レートに基づいて、前記ファイルシステム内のどこにコンテンツユニットを格納するかを動的に確定する、少なくとも１つのコントローラとを備えるコンピュータ。
【請求項１１３】
前記少なくとも１つのコントローラは、
コンテンツユニットが受信される前記レートを確定する作業が実施されるときに、前記階層ファイルシステム内の最低既存レベルに対応する前記時間の単位より短い時間の追加の単位に対応するレベルで、コンテンツユニットが格納されるべきであることを判定する請求項１１２に記載のコンピュータ。
【請求項１１４】
前記少なくとも１つのコントローラは、
前記時間の追加の単位に対応する少なくとも１つのディレクトリを前記階層ファイルシステムに動的に追加し、
前記少なくとも１つのディレクトリ内に少なくとも１つのコンテンツユニットを格納する請求項１１３に記載のコンピュータ。
【請求項１１５】
前記少なくとも１つのコントローラは、
コンテンツユニットを格納する前記複数のレベルのうちの１つのレベルを選択し、
前記複数のレベルのうちの前記選択された１つのレベルにおける少なくとも１つのディレクトリ内に少なくとも１つのコンテンツユニットを格納する請求項１１４に記載のコンピュータ。
【請求項１１６】
前記複数のレベルのうちの前記選択された１つのレベルにおける前記少なくとも１つのディレクトリは、前記少なくとも１つのコンテンツユニットを格納するための要求が受信された期間に対応するディレクトリである請求項１１５に記載のコンピュータ。
【請求項１１７】
前記少なくとも１つのコントローラは、
前記少なくとも１つのディレクトリ内のファイルに前記少なくとも１つのコンテンツユニットを格納し、前記少なくとも１つのファイルは、少なくとも１つの追加のコンテンツユニットを格納する請求項１１５に記載のコンピュータ。
【請求項１１８】
前記少なくとも１つのコンテンツユニットは、前記コンテンツユニットのコンテンツに少なくとも部分的に基づいて計算されるコンテンツアドレスに関連する請求項１１７に記
載のコンピュータ。
【請求項１１９】
前記コンテンツアドレスはタイムスタンプを含む請求項１１８に記載のコンピュータ。
【請求項１２０】
前記少なくとも１つのコントローラは、
コンテンツユニットが、前記ファイルシステム内への格納のために受信されるレートを確定する手段と、
コンテンツユニットが、格納のために受信される前記レートに基づいて、前記ファイルシステム内のどこにコンテンツユニットを格納するかを動的に確定する手段とをさらに備える請求項１１２に記載のコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテンツの格納を管理することに関する。
【背景技術】
【０００２】
ファイルシステムは、データを編成するのに使用され得る論理データ構造である。ファイルシステムは、一般に、階層で配列され得る、ディレクトリまたはフォルダと呼ばれる複数の論理パーティションを有する。多くのファイルシステムでは、ルートディレクトリと呼ばれる単一ディレクトリが階層の最上位に存在する。データは、ファイルと呼ばれる論理格納単位に配列され、論理格納ユニットは、ファイルシステムのディレクトリに格納される。
【０００３】
通常、ファイルシステムは、データがそこに物理的に格納される１つ以上の内在する格納デバイス（たとえば、ディスクまたはテープ）を有するコンピュータシステム上にインストールされる。ファイルシステムにおけるファイルおよびディレクトリの論理配置は、データが、物理的格納デバイス上に物理的に格納される方法とは、ほとんど、または、全く無関係であってよい。そのため、ファイルシステム内の論理格納ロケーションを格納デバイス（複数可）上の実際の物理的格納ロケーションにマッピングするのに、通常、マップが使用される。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
多くのファイルシステムは、各ディレクトリに格納され得るファイルの数、および、ファイルシステムに格納され得るファイルの総数に制限を課す。これらの制限は、ファイルシステムによって課され得る。たとえば、ファイルシステムの性能は、ファイルの数が増加するにつれて著しく低下する場合がある。さらに、たとえば、ファイルシステムのデータ構造が失われ、バックアップコピーから回復される必要がある場合、たとえば、ある期間経って災害からの回復を保証するために、制限が課され得る。
【課題を解決するための手段】
【０００５】
本発明の一実施形態は、ファイルシステム内のコンテンツユニットを管理する方法を対象としており、方法は、第１コンテンツユニットであって、第１コンテンツユニットのコンテンツに少なくとも部分的に基づいて計算される第１コンテンツアドレスを有する、第１コンテンツユニットを格納するための第１要求を受信する作業と、第２コンテンツユニットであって、第２コンテンツユニットのコンテンツに少なくとも部分的に基づいて計算される第２コンテンツアドレスを有する、第２コンテンツユニットを格納するための第２要求を受信する作業と、第２要求に応答して、第２コンテンツユニットをファイルに格納する作業と、を含む。別の実施形態は、コンピュータシステム上で実行されると、上述した方法を実施する、命令をエンコードされた少なくとも１つのコンピュータ読取可能媒体を対象とする。
【０００６】
さらなる実施形態は、ファイルシステム内のコンテンツユニットを管理するコンピュータを対象としており、コンピュータは、少なくとも１つの入力と、少なくとも１つの入力に結合する少なくとも１つのコントローラであって、第１コンテンツユニットであって、第１コンテンツユニットのコンテンツに少なくとも部分的に基づいて計算される第１コンテンツアドレスを有する、第１コンテンツユニットを格納するための第１要求を、入力を介して受信し、第１要求に応答して、第１コンテンツユニットをファイルシステム内のファイルに格納し、第２コンテンツユニットであって、第２コンテンツユニットのコンテン
ツに少なくとも部分的に基づいて計算される第２コンテンツアドレスを有する、第２コンテンツユニットを格納するための第２要求を、前記入力を介して受信し、第２要求に応答して、第２コンテンツユニットをファイルに格納する、少なくとも１つのコントローラを備える。
【０００７】
別の実施形態は、コンテンツユニットであって、コンテンツユニットのコンテンツに少なくとも部分的に基づくコンテンツアドレスを有する、コンテンツユニットにアクセスする方法を対象としており、コンテンツユニットは、ファイルシステム内のファイルに格納され、方法は、コンテンツユニットにアクセスするための要求を受信する作業であって、要求は、識別子を使用してコンテンツユニットを識別し、コンテンツユニットが格納されるファイルは、少なくとも１つの付加的なコンテンツユニットを格納し、少なくとも１つの付加的なコンテンツユニットは、コンテンツユニットのコンテンツに少なくとも部分的に基づくコンテンツアドレスを有する、要求を受信する作業と、コンテンツユニットが格納されるファイルを、識別子を使用して探索する作業と、コンテンツユニットが格納されるファイルにおいて前記コンテンツユニットを探索する作業とを含む。さらなる実施形態は、コンピュータシステム上で実行されると、上述した方法を実施する、命令をエンコードされた少なくとも１つのコンピュータ読取可能媒体を対象とする。
【０００８】
別の実施形態は、コンテンツユニットであって、コンテンツユニットのコンテンツに少なくとも部分的に基づくコンテンツアドレスを有する、コンテンツユニットにアクセスするコンピュータを対象としており、コンテンツユニットはファイルシステム内のファイルに格納され、コンピュータは、入力と、入力に結合する少なくとも１つのコントローラであって、コンテンツユニットにアクセスするための要求を、入力を介して受信し、要求は、識別子を使用してコンテンツユニットを識別し、コンテンツユニットが格納されるファイルは、少なくとも１つの付加的なコンテンツユニットを格納し、少なくとも１つの付加的なコンテンツユニットは、コンテンツユニットのコンテンツに少なくとも部分的に基づくコンテンツアドレスを有し、コンテンツユニットが格納されるファイルを、識別子を使用して探索し、コンテンツユニットが格納されるファイルにおいてコンテンツユニットを探索する、少なくとも１つのコントローラを備える。
【０００９】
さらなる実施形態は、複数のレベルを有する階層ツリーで配列される複数のディレクトリを有する階層ファイルシステム内にコンテンツユニットを格納する方法を対象としており、複数のレベルはそれぞれ、ある時間の単位に対応し、階層ツリーは、少なくとも１つのルートディレクトリ、および、それぞれが親ディレクトリを有する複数の非ルートディレトリを備え、ツリーの中の複数のディレクトリのうちの少なくとも１つのディレクトリは、それぞれの親ディレクトリに対応する期間によって包含される期間に対応し、方法は、コンテンツユニットが、格納のために受信されるレートを確定する作業と、コンテンツユニットが、格納のために受信されるレートに基づいて、コンテンツユニットを格納する複数のレベルのうちの１つのレベルを動的に確定する作業を含む。別の実施形態は、コンピュータシステム上で実行されると、上述した方法を実施する、命令をエンコードされた少なくとも１つのコンピュータ読取可能媒体を対象とする。
【００１０】
さらなる実施形態は、複数のレベルを有する階層ツリーで配列される複数のディレクトリを有する階層ファイルシステム内にコンテンツユニットを格納するコンピュータを対象にしており、複数のレベルはそれぞれ、ある時間の単位に対応し、階層ツリーは、少なくとも１つのルートディレクトリ、および、それぞれが親ディレクトリを有する複数の非ルートディレトリを備え、ツリーの中の複数のディレクトリのうちの少なくとも１つのディレクトリは、それぞれの親ディレクトリに対応する期間によって包含される期間に対応し、コンピュータは、入力と、少なくとも１つのコントローラであって、コンテンツユニットが、格納のために入力を通して受信されるレートを確定し、コンテンツユニットが、格
納のために受信されるレートに基づいて、コンテンツユニットを格納する複数のレベルのうちの１つのレベルを動的に確定する、少なくとも１つのコントローラとを備える。
【発明を実施するための最良の形態】
【００１１】
ある状況では、ファイルシステムによって課されるファイルの数に対する制限は、過度に制限的であるため、所望のデータを全て格納することができない場合があり、そのため、制限に違反しない方法で、ファイルシステム内にデータを格納することが望ましい場合があることを、出願人は理解した。
【００１２】
そのため、本発明の一実施形態は、複数の異なるコンテンツユニットが、同じファイル内に格納されることができるように、論理的に異なるコンテンツユニットのコンテナ化を目的とする。論理的に異なるコンテンツユニットは、通常はファイルシステム内の別個のファイルに格納される。たとえば、ワープロアプリケーションによって作成される各文書は、通常、これらの文書が論理的に互いに分離しているため、別個のファイルに格納される。しかし、本発明の一実施形態では、論理的に分離したコンテンツユニットは、コンテナ化されてもよい。すなわち、論理的に分離した２つ以上のコンテンツユニットは、ファイルシステム内の、コンテナファイルと呼ばれる単一ファイルに格納されてもよい。一実施形態では、コンテナに格納される各コンテナファイルは、それ自体の識別子（たとえば、ファイル名または他の識別子）を有してもよく、その結果、コンテンツにアクセスするエンティティ（たとえば、人ユーザ、アプリケーションプログラム、またはホストコンピュータ）が、この識別子を使用して、コンテンツユニットにアクセスすることができる。
【００１３】
一実施形態では、コンテナのユーザは、システム上でコンテンツユニットを格納し取出すエンティティにとって透過的であり、その結果、これらのユーザは、コンテンツユニットが、他のコンテンツユニットと共にコンテナファイルに格納されたことを知ることなく、コンテンツユニットを格納し取出すことができ、コンテンツユニットが、それぞれ、別個のファイルに格納されているように、コンテンツユニットにアクセスしてもよい。
【００１４】
コンテナの使用は、ファイルシステムによって管理されるファイルの数を減らすことができ、（コンテナファイルにグループ化された）大量のデータが、格納されることを許容されるファイルの最大数に関する限界に達する前に、ファイルシステムに格納されることを可能にすることができる。
【００１５】
本発明は、任意特定の実施技法に制限されないため、複数のコンテンツユニットを格納するためにコンテナファイルを使用することは、いずれの適した方法で行われてもよい。たとえば、図１Ａに示すように、ホストコンピュータ１０９は、アクセス用エンティティ１０１（たとえば、アプリケーションプログラム）、処理ソフトウェア１０３、およびファイルシステム１０５を含んでもよい。アクセス用エンティティ１０１は、処理ソフトウェア１０３と通信してもよく、処理ソフトウェア１０３は、データを格納し、ファイルシステム１０５からデータを取出す。ファイルシステム１０５に論理的に格納されるデータは、格納デバイス１０７上に物理的に格納されてもよい。コンテンツユニットを格納するときに、アクセス用エンティティ１０１は、格納のために、コンテンツユニットを処理ソフトウェア１０３に送出してもよい。コンテンツユニットに以前に関連付けられており、また、アクセス用エンティティ１０１が認識している識別子は、コンテンツユニットを後で取出すために、アクセス用エンティティ１０１によって使用されてもよい。あるいは、識別子は、コンテンツユニットのファイルシステム１０５への格納時間に、処理ソフトウェア１０３によって割り当てられ、また、コンテンツユニットを格納するための要求を受信したという肯定応答として、アクセス用エンティティ１０１に戻されてもよい。処理ソフトウェア１０３は、アクセス用エンティティ１０１からコンテンツユニットを受信し、他のコンテンツユニットを格納してもよい、コンテナファイル内のファイルシステム１０
５にコンテンツユニットを格納してもよい。コンテンツユニットを格納するのに適したコンテナファイルが存在しない場合、こうしたコンテナファイルが作成され、コンテンツユニットが、そこに格納されてもよい。
【００１６】
図１Ａの例では、アクセス用エンティティ１０１、処理ソフトウェア１０３、およびファイルシステム１０５は、ホストコンピュータ１０９上で実行される。しかし、これらの層がそれぞれ、異なるコンピュータ上で、または、コンピュータの任意の適した組合せ上で実行されてもよいため、本発明は、この点において制限されない。たとえば、アクセス用エンティティ１０１は、ホストコンピュータ１０９に対してコンテンツユニットを複製する格納システム上で実行されてもよい。さらに、本発明が、この点において制限されないため、格納デバイス１０７は、任意の適したタイプの格納デバイスであってよく、ホストコンピュータ１０９の内部格納デバイスであってよく、または、ホストコンピュータ１０９の外部の格納デバイスであってよい。
【００１７】
アクセス用エンティティ１０１は、本発明が、この点において制限されないため、コンテンツにアクセスする任意のタイプのエンティティであってよい。たとえば、アクセス用エンティティ１０１は、たとえば、アプリケーションプログラム、人ユーザ、別のコンピュータ、または任意の他の適したエンティティであってよい。一実施形態では、アクセス用エンティティは、格納システム（図示せず）であってよく、格納システムは、処理ソフトウェア１０３と通信して、格納システム上に格納されたコンテンツユニットが格納デバイス１０７に対して複製される。
【００１８】
コンテンツユニットに関連する識別子は、本発明が、この点において制限されないため、任意の適した識別子であってよい。識別子は、たとえば、人が読取可能な名前または任意の他の適したタイプの識別子であってよい。一実施形態では、識別子は、コンテンツユニットのコンテンツに少なくとも部分的に基づいて計算されるコンテンツアドレスである。たとえば、コンテンツユニットは、（任意の適したハッシングアルゴリズムを使用して）ハッシングされてもよく、ハッシュ値は、コンテンツアドレスの全てまたは一部として使用されてもよい。一実施形態では、コンテンツアドレスは、付加的な情報が全く無いハッシュ値だけを含んでもよいが、ハッシュ値以外に任意の他の適した情報を含んでもよいため、本発明は、この点において制限されない。たとえば、コンテンツアドレスはまた、コンテンツユニットが、ファイルシステムまたは別の格納システムにおいて、作成されるか、または、最初に格納された時間を指示するタイムスタンプを含んでもよい。コンテンツアドレスはまた、たとえば、一意であることを保証され、また、どの２つのコンテンツアドレスも同じでないことを確保するのに使用される場合がある一連のビットである、保証されたユニーク識別子（ＧＵＩＤ）を含んでもよい。コンテンツアドレスはまた、コンテンツユニットのコンテンツ内にどんなタイプのデータが含まれるかを指示するフラグなどの他の情報を含んでもよい。コンテンツアドレスおよびコンテンツアドレスが使用されてもよい状況の例は、それぞれが、参照により本明細書に組み込まれる、表１に挙げたアプリケーションに記載される。
【００１９】
格納デバイス１０７は、本発明が、この点において制限されないため、任意の適したタイプの格納デバイスであってよい。たとえば、格納デバイス１０７は、磁気ディスク格納デバイス、光ディスク格納デバイス、テープ格納デバイス、および／または他の適したタイプの格納デバイスであってよい。同様に、本発明が、この点において制限されないため、任意の適したファイルシステムソフトウェアが、ファイルシステム１０５を実施するのに使用されてもよい。一実施形態では、ファイルシステム１０５は、ワシントン州レッドモンド(Redmond,  Washington)11431  Willows  Road  NEにビジネスの拠点を持つAdvanced  Digital  Information  Corporationによって販売されるＳｔｏｒＮｅｘｔ（商標）
ファイルシステムであるが、本発明は、このシステム、または、任意の他の特定のファイ
ルシステムに限定されない。
【００２０】
一実施形態では、階層格納管理(hierarchical storage management)（ＨＳＭ）が採用
されてもよい。ＨＳＭは、高価だが高速な格納デバイス（たとえば、磁気ディスクドライブ）と、安価だが低速な格納デバイス（たとえば、光ディスクドライブおよび／または磁気テープドライブ）との間でデータが自動的に移される技法である。そのため、高速格納デバイス上で十分な格納容量を設けることが、恐ろしく高価である状況では、データは、低速格納デバイス上に格納され、高速格納デバイスは、低速格納デバイス用のキャッシュとして扱われてもよい。
【００２１】
ＨＳＭ技法を採用するシステムの例は、図１Ｂに示される。図１Ｂでは、ファイルシステム１０５に論理的に格納されたデータは、格納デバイス１１３上に格納され、このデータの一部は、格納デバイス１１１上にキャッシュされてもよい。そのため、格納デバイス１１１は、高価であるが、高速な格納デバイスであってよく、一方、格納デバイス１１３は、高価ではないが、低速な格納デバイスである。処理ソフトウェア１０３が、ファイルシステム１０５に論理的に格納されたコンテンツユニットを要求し、そのコンテンツユニットのコンテンツが、格納デバイス１１１上に既にキャッシュされている場合、コンテンツは、格納デバイス１１１から取出されてもよい。しかし、コンテンツが、格納デバイス１１１上にまだキャッシュされていない場合、コンテンツは、格納デバイス１１３からキャッシュ（すなわち、格納デバイス１１１）に移され、処理ソフトウェア１１０３に戻されてもよい。
【００２２】
一実施形態では、ファイルシステム１０５は、ＨＳＭ機能を実施することができるが、本発明は、この点において制限されない。たとえば、ファイルシステム１０５は、あるディレクトリおよび／またはファイルについてのポリシーを、ユーザが構成することを可能にしてもよく、そのポリシーは、これらのディレクトリおよび／またはファイルに格納されたデータが、いつ、また、どれだけ長く、キャッシュ内に保持される（すなわち、格納デバイス１１１上に格納される）べきか、かつ／または、そのデータが、いつ格納デバイス１１３に移されるべきかを指定する。ファイルシステム１０５は、その後、このポリシーに従って、格納デバイス１１１と格納デバイス１１３との間でデータを移す。
【００２３】
先に説明したように、処理ソフトウェア１０３は、既存のコンテナファイル内に新しいコンテンツユニットを格納してもよく、または、コンテンツユニットを格納する新しいコンテナファイルを作成してもよい。既存のコンテナファイル内にコンテンツユニットを格納するか、新しいコンテナファイル内にコンテンツユニットを格納するかについての判断は、本発明が、この点において制限されないため、いずれの適した方法で行われてもよい。この判断を行う技法の例は、より詳細に以下で説明される。処理ソフトウェア１０３は、本発明が、この点において制限されないため、コンテンツユニットを格納する任意の適したコンテナファイルを選択してもよく、コンテナファイルを格納する、ファイスシステム１０５内の任意の適したディレクトリを選択してもよい。コンテナファイルを格納するディレクトリを選択する技法の例は、より詳細に以下で説明される。
【００２４】
アクセス用エンティティ１０１は、以前に格納したコンテンツユニットを取出したいと思うとき、コンテンツユニットに関連する識別子を処理ソフトウェア１０３に提供してもよい。処理ソフトウェア１０３は、どのコンテナファイルに、コンテンツユニットが格納されているかを判定し、コンテナファイルにアクセスし、コンテナファイル内で要求されたコンテンツユニットを探索し、コンテナユニットをアクセス用エンティティ１０１に戻してもよい。処理ソフトウェア１０３は、本発明が、この点において制限されないため、任意の適した方法で、適切なコンテナファイルを探索してもよい、同様に、処理ソフトウェア１０３は、本発明が、この点において制限されないため、任意の適した方法で、特定
のコンテナファイル内で要求されたコンテンツユニットを探索してもよい。特定のコンテンツユニットが格納されるコンテナファイルを探索し、コンテナファイルにおいてコンテンツユニットを探索するための技法の例は、より詳細に以下で説明される。
【００２５】
アクセス用エンティティ１０１は、読取要求、書込み要求、およびクエリ要求を含む、コンテンツユニットに関連する識別子を使用して、ファイルシステム１０５に格納されたコンテンツユニットに対して、多くのタイプのアクセス要求のうちの任意のアクセス要求を実施してもよい。クエリ要求は、要求において指定された１つまたは複数の基準を満たすコンテンツユニットを識別し、かつ／または、戻す要求である。アクセス用エンティティ１０１によって発行されてもよい１つのタイプのクエリ要求の例は、タイムベースクエリ要求である。タイムベースクエリ要求は、特定の時間範囲の間に格納されたコンテンツユニットを識別し、かつ／または、戻す要求である。一実施形態によれば、タイムベースクエリ要求に応答して、処理ソフトウェアは、要求において指定された時間範囲の間に格納されたコンテンツユニットを含むコンテナファイルを探索し、こうしたコンテンツユニットの識別子および／またはコンテンツユニット自体を戻してもよい。これは、本発明が、この点において制限されないため、任意の適した方法で行われてもよい。クエリ要求を処理し、クエリ要求に応答する技法の例は、より詳細に以下で説明される。
【００２６】
一実施形態では、ファイルシステム１０５は、コンテナファイルを論理的に格納するのに使用されてもよいタイムベースディレクトリ構造を有してもよい。タイムベースディレクトリ構造は、コンテンツユニットが、ソース（たとえば、アプリケーションプログラム）によって格納される、かつ／または、作成される時間に少なくとも部分的に基づいて、ディレクトリおよびファイルが編成される構造である。本発明が、この点において制限されないため、任意の適したタイムベースディレクトリ構造が使用されてもよい。一実施形態では、タイムベースディレクトリ構造は、複数の階層ディレクトリとして編成されてもよく、各ディレクトリは、期間を表し、各サブディレクトリは、その親ディレクトリに期間によって包含される期間を表す。ファイルは、最下位レベルまたは「リーフ」ディレクトリ（すなわち、時間の最小単位を表すディレクトリ）内に格納されてもよく、特定のファイルが格納されるリーフディレクトリは、ファイルの格納時間または作成時間に基づいて選択されてもよい。
【００２７】
こうしたタイムベースディレクトリ構造の例は、図２に示される。図２は、６つのレベル（Ｌ１〜Ｌ６と表示される）を有するディレクトリ構造２００を示し、レベルＬ１のディレクトリはファイルが格納された年を明示し、レベルＬ２のディレクトリは月を明示し、レベルＬ３のディレクトリは日を明示し、レベルＬ４のディレクトリは時間を明示し、レベルＬ５のディレクトリは分を明示し、レベルＬ６のディレクトリは秒を明示する。ディレクトリ構造２００内のディレクトリの全階層は、明確にするために、拡張されないこと、および、図２に示す各非リーフディレクトリは、図２に示されない１つまたは複数のサブディレクトリを有してもよいことが理解されるべきである。
【００２８】
先に説明したように、ファイルは、ファイルが格納された、かつ／または、作成された時間に対応するリーフディレクトリに格納されてもよい。そのため、たとえば、２００５年１月１日午後１１：００に格納されたファイルは、／２００５／Ｊａｎｕａｒｙ／０１／２３／００／００のパスを有するＬ６ディレクトリ２０１に格納されてもよい。「２００５」は、年２００５に対応するＬ１ディレクトリであり、「Ｊａｎｕａｒｙ」は、２００５年１月の月に対応する２００５ディレクトリのサブディレクトリであり、「Ｊａｎｕａｒｙ」ディレクトリのサブディレクトリ「０１」は、２００５年１月の第１日目に対応するＬ３ディレクトリであり、「０１」ディレクトリのサブディレクトリ「２３」は、２００５年１月の第１日目の２４時間目に対応するＬ４ディレクトリであり、「２３」ディレクトリのサブディレクトリ「００」は、２００５年１月の第１日目の２４時間目の第１
分目に対応するＬ５ディレクトリであり、「００」Ｌ５ディレクトリのサブディレクトリ「００」は、２００５年１月の第１日目の２４時間目の第１分目の第１秒目に対応するＬ６ディレクトリである。
【００２９】
本発明の実施形態は、サブディレクトリレベルの境界を確立するときに、時間の異なる単位を使用するディレクトリ構造に関するものを含む、多くの方法のうちの任意の方法で実施されることができるため、コンテンツユニットを格納するディレクトリ構造を指定するときに時間を採用する以下に述べる本発明の実施形態は、図２に示す特定の例の配置構成を有するディレクトリ構造に関する使用に限定されないことが理解されるべきである。
【００３０】
図２の例では、階層ディレクトリ構造は、６つのレベルを有し、時間粒度の最小単位（すなわち、階層内の最低レベル）は、コンテンツユニットが格納された秒に対応する。しかし、上述したように、本明細書で述べる本発明の実施形態は、任意の適した数のレベルを有し、各レベルが任意の適した時間の単位に対応するディレクトリ構造に関して使用されることができるため、この点において制限されない。たとえば、ディレクトリ構造は、４つのレベルだけを含んでもよく、時間粒度の最小単位は時間ごとである。この点で、ディレクトリの総数は、（６つのレベルを有するディレクトリ構造と比較して）減少してもよく、各「リーフ」ディレクトリに格納されるコンテンツユニットの数が増加してもよい。あるいは、階層内のレベルの数は、たとえば、７つのレベルに増加してもよく、この時、粒度の最低レベルは、ミリ秒または時間のある他の秒以下の単位に対応する。結果として、「リーフ」ディレクトリの数は、増加してもよく、各「リーフ」ディレクトリには少数のコンテンツユニットが格納されてもよい。
【００３１】
各リーフディレクトリに格納されるコンテンツユニットの数が、システムの性能に影響を及ぼす場合があることを、出願人は理解した。先に説明したように、ファイルシステムは、ファイルシステムディレクトリ構造内のロケーションを物理的格納ロケーション（たとえば、ブロック）にマッピングしてもよい。ファイルシステムが、マッピングを行うのに使用するマッピング情報は、大量であるため、ファイルシステムが、その上で実行されるコンピュータのメモリに全マップを格納することは、可能でない、かつ／または、実行可能でない場合がある。そのため、マップの一部だけが、任意特定の時点でメモリにキャッシュされてもよく、一方、残りは、ファイルシステムが、その上で実行されるコンピュータが使用する不揮発性記憶装置（たとえば、ディスク）上に格納されたままになる。多数のディレクトリおよびほんの少数のコンテンツユニットが各ディレクトリに格納されている場合、取出されるコンテンツユニットのファイスシステムのロケーションが、キャッシュされるマップの部分内にある可能性は低い。結果として、ファイルシステムは、ディスクからマップの関連する部分を頻繁に取出さなければならず、性能の低下が生じる。しかし、ディレクトリ構造内のディレクトリの数が少なく、各ディレクトリに、多数のコンテンツユニットが存在する場合、所望のコンテンツユニットを適切なディレクトリ内で探索するのに費やされる時間が増加し、性能の低下が生じる。
【００３２】
これら２つの競合する因子を均衡させるディレクトリ構造を選択することが望ましい場合がある。階層構造におけるレベルの最適な数は、たとえば、ディレクトリ構造に格納されるコンテンツユニットの数、ディレクトリ構造にわたるコンテンツユニットの分布、および、コンテンツユニットがディレクトリ構造に格納される頻度に依存してもよい。そのため、一実施形態では、ディレクトリ階層におけるレベルの数は、システムの動作中に、構成可能であり、かつ、変更可能である。たとえば、レベルの数を増やすことは、各リーフディレクトリについて追加のサブディレクトリを作成し、コンテンツユニットを適切な追加のサブディレクトリに下方移動させることによって達成することができ、レベルの数を減らすことは、コンテンツユニットが格納されるサブディレクトリの親ディレクトリにコンテンツユニットを上方移動させ、階層からサブディレクトリを除去することによって
達成することができる。
【００３３】
一実施形態では、本発明のコンテナ化態様を採用するタイムベースディレクトリ構造は、格納システムについての複製ターゲットの役をしてもよい。格納システム（または、そのコンポーネント）の回復不能な障害の場合に、データのバックアップコピーが存在するように、格納システムの外部の格納デバイス上に、格納システム上に格納されたコンテンツユニットのコピーを作成することが望ましいことが多い。本明細書で使用されるように、コンテンツユニットの複製は、格納システムの外部の格納デバイス上にコンテンツユニットのコピーを作成することを言う。例示的な複製システムは、図３に示されており、格納システム３０１が、複製ターゲット３０３に対してコンテンツユニットを複製する。本発明の一実施形態によれば、複製ターゲット３０３は、格納システム３０１からのアクセス要求を処理し（たとえば、図１Ａに関連して上述したように）、ファイルシステム３０７内のコンテナファイルにコンテンツユニットを格納し、コンテナファイルからコンテンツユニットを取出す処理ソフトウェア３０５を含む。ファイルシステム３０７に論理的に格納されるファイルは、基礎となる格納デバイス３０９上に物理的に格納されてもよい。
【００３４】
図３では、複製ターゲット３０３が、単一格納デバイス３０９だけを使用するが、本発明は、この点において制限されないことが理解されるべきである。実際に、複製ターゲット３０３は、複数の格納デバイスを使用してもよく、これらの格納デバイスは、図１Ｂと関連して上述されたＨＳＭ技法が採用されるように、階層方式で配列されてもよい。
【００３５】
一実施形態では、コンテンツユニットが、格納システム３０１から複製ターゲット３０３へ複製される頻度は、ファイルシステム３０７における、階層のレベルの数およびリーフレベルの粒度を確定するのに使用されてもよい。たとえば、平均して、１秒当たり３０のコンテンツユニットが、複製ターゲット３０３へ複製され、各コンテナファイル内に約１０のコンテンツユニットを格納することが望ましい場合、ファイルシステム３０７が、図２に示すタイムベースディレクトリ構造を使用している場合には、平均して、各リーフディレクトリ内に３つのコンテナファイルが存在してもよい。各リーフディレクトリ内のファイルの数を増やすことが望ましい場合、Ｌ６ディレクトリの粒度は、各ディレクトリが、１秒より長い期間を表すように増やされてもよい。たとえば、各リーフディレクトリは、各Ｌ５ディレクトリが、６０のサブディレクトリではなく、１２のサブディレクトリを有するように、５秒の期間を表してもよい。結果として、各リーフディレクトリは、平均して、３つのコンテンツユニットではなく、１５のコンテンツユニットを格納してもよい。あるいは、ディレクトリ構造２００の階層内のレベルの数が減らされてもよい。たとえば、各Ｌ６ディレクトリに格納されるファイルが、その親Ｌ５ディレトリに移され、Ｌ６ディレクトリが除去されてもよい。そのため、各Ｌ５リーフディレクトリは、平均して、各Ｌ６リーフディレクトリによって以前に格納された３つのファイルではなく、１８０のファイルを格納するであろう。
【００３６】
上述した例では、タイムベースディレクトリ構造は、コンテンツユニットが、複製ターゲットに複製されたレートに基づいて変更された。しかし、タイムベースディレクトリ構造は、どんな理由であれ、各ディレクトリ内のファイルの数および各ディレクトリ内のコンテナファイルの数を管理するために変更されてもよいため、本発明は、この点において制限されない。たとえば、タイムベースディレクトリ構造は、（コンテンツユニットの複製についての書込み要求と対照的に）コンテンツユニットの初期格納についての書込み要求が受信される頻度に基づいて変更されてもよい。タイムベースディレクトリ構造は、単一コンテンツユニットだけを含むファイルに関して使用されてもよいため、タイムベースディレクトリ構造を変更する技法は、コンテナファイルに関する使用に限定されないことが理解されるべきである。この点で、ディレクトリ内のファイルの数は、タイムベースディレクトリ構造を変更し、かつ／または、タイムベースディレクトリ構造内の非リーフデ
ィレクトリにファイルを格納することによって管理されてもよい。
【００３７】
タイムベースディレクトリ構造は、本発明が、この点において制限されないため、ディレクトリに格納されるファイルの数を、手動か、自動のいずれかで制御するように管理されてもよい。手動で管理されるとき、ディレクトリ構造内のリーフディレクトリが、どれくらいの時間粒度を持つべきかを、ユーザが指定してもよく、システムは、この仕様に基づいてタイムベースディレクトリ構造を変更してもよい。一実施形態では、ユーザが、時間粒度を変えるとき、時間粒度は、将来の時間に対応するディレクトリについて変更されてもよい。すなわち、既に作成された、かつ／または、既にファイルを格納するディレクトリ構造の部分は、新しい粒度仕様に基づいて変更されなくてもよい。しかし、一実施形態では、将来の時間と過去の時間の両方のディレクトリが、新しく指定された粒度を有するように変更されてもよいため、本発明は、この点において制限されない。
【００３８】
自動で管理されるとき、システムは、コンテンツユニットが、システムに書込まれる頻度に基づいてリーフディレクトリの時間粒度を自動で選択してもよい。本発明は、この点において制限されないため、これは、いずれの適した方法で行われてもよい。一実施形態では、システムは、コンテンツユニットが格納のために受信される現在の頻度に基づいて、コンテンツユニットを格納するリーフディレクトリの粒度を選択してもよい。頻度が増加する場合、リーフディレクトリの粒度は、たとえば、現在のリーフディレクトリのサブディレクトリを作成することによって、変えられてもよいが、リーフディレクトリは、小さい時間粒度を有する。たとえば、システムは、コンテンツユニットが、１時間当たり６０回の頻度で受信されると判定してもよく、そのため、将来のディレクトリについてのディレクトリ構造を、リーフディレクトリが時間ごとの時間粒度を有する状態の４つのレベルに制限することに決めてもよい。そのため、書込み要求が、このレートで受信され続ける場合、６０のコンテンツユニットが、各リーフディレクトリに格納されてもよい。コンテンツユニットがコンテナ化される場合、複数のコンテンツユニットは、（どれだけ多くのコンテンツユニットが、各コンテナファイルに格納されるかに応じて）ディレクトリ内に６０未満のファイルが存在するように、単一コンテナファイルに格納されてもよいことが理解されるべきである。しかし、各コンテンツユニットが、別個のファイルに格納されてもよいため、本発明のこの態様は、コンテナファイルに関する使用に制限されない。
【００３９】
格納のために受信されるコンテンツユニットの数が、その後増加する場合、ディレクトリ構造が拡張されてもよい。すなわち、たとえば、リーフディレクトリが、現在、時間ごとの粒度を有し、要求の頻度が、たとえば、１時間当たり６０回から１時間当たり６００回に増加する場合、現在の時間ごとディレクトリのサブディレクトリが作成されてもよく、これらのサブディレクトリはそれぞれ、その親ディレクトリによって表される１時間以内の分に対応する。こうして、時間粒度は、分ごとに減少し、その後受信されたコンテンツユニットは、分ごとディレクトリに格納されてもよい。タイムベースディレクトリ構造は、分ごとを表すリーフディレクトリによって作成され続けてもよい。書込み要求が受信される頻度が、後で減少する場合、分ごとディレクトリは、もはや作成されず、コンテンツユニットは、再び時間ごとディレクトリに格納されてもよい。
【００４０】
上記例では、タイムベースディレクトリ構造は、時間が進行するにつれて拡張する（すなわち、新しい時間を表す追加のディレクトリが作成される）ため、ディレクトリ構造内のレベルの数およびリーフレベルの粒度が、動的に変更されてもよい。そのため、第１期間に対応するディレクトリ構造の第１部分は、第２期間に対応するディレクトリ構造の第２部分と異なる数のレベルを有してもよい。さらに、ディレクトリ構造を拡張するか、または、縮小する判断は、いつ行われてもよいため、ディレクトリは、リーフディレクトリの完全なセットを有しなくてもよい。たとえば、ある日の午後１：００〜午後１：５９の期間に対応する、時間ごとリーフディレクトリに、コンテンツユニットが格納され、粒度
を、午後１：３０に始まる分ごとに減少させる判断が行われる場合、時間ごとディレクトリの３０のリーフディレクトリ（すなわち、午後１：３０〜午後１：５９までの１分ごとに１つのサブディレクトリ）が存在するだけになるであろう。すなわち、午後１：００〜午後１：２９までに格納されるコンテンツユニットは、時間ごと親ディレクトリに格納されてもよく、一方、午後１：３０〜午後１：５９までに格納されるコンテンツユニットは、午後１：００〜午後１：５９の期間を表す時間ごとディレクトリの分ごとサブディレクトリのうちの１つのサブディレクトリに格納されてもよい。そのため、時間ごとディレクトリは、６０のサブディレクトリ（すなわち、１時間における分ごとの１つのサブディレクトリ）の代わりに、それぞれが１分の時間粒度を有する、３０のサブディレクトリだけを有してもよい。
【００４１】
上記例では、コンテンツユニットは、ディレクトリ構造のリーフディレクトリおよび／または非リーフディレクトリに格納されてもよいことが理解されるべきである。そのため、一実施形態では、タイムベースディレクトリ構造に格納されたコンテンツユニットを読取る要求が、その後受信されるとき、要求によって識別されるコンテンツユニットを探索するために、非リーフディレクトリが検索されてもよい。
【００４２】
一実施形態では、ディレクトリが、コンテンツユニットを含むサブディレクトリを有することを指示する細部網羅ファイルは、その後の読取要求に関してコンテンンツユニットを探索するのを補助するために採用されてもよい。本発明は、この点において制限されないため、これは、どんな適した方法で行われてもよい。たとえば、先に説明したように、コンテンツユニットが、第１時間粒度を有するディレクトリに格納されるとき、小さい時間粒度を有する新しいレベルのサブディレクトリを作成し、コンテンツユニットをこれらのサブディレクトリに格納することによって、ディレクトリの時間粒度が減少されるべきであると判断されてもよい。細部網羅ファイルが作成され、これらのサブディレクトリの親ディレクトリに格納されてもよい。一実施形態では、コンテンツユニットを識別する読取要求が受信されるとき、コンテンツユニットは、たとえば、コンテンツユニットが格納された期間を確定し、格納時間に対応し、また、コンテンツユニットを格納する最高位レベルディレクトリをタイムベースディレクトリ構造内で探索することによって探索されてもよい。コンテンツユニットが格納されている、格納時間に対応する最高位レベルディレクトリ内で、コンテンツユニットが見出されない場合、ディレクトリ内に細部網羅ファイルが存在するかどうかが判定されてもよい。細部網羅ファイルが存在する場合、その期間に対応する最高位レベルディレクトリのサブディレクトリが、コンテンツユニットを探索するために検索されてもよい。このサブディレクトリはまた、細部網羅ファイルを含むであろう。
【００４３】
一実施形態では、細部網羅ファイルは、（たとえば、階層に追加のレベルを追加することによって）ディレクトリ構造を拡張する判断が行われた時間を指示してもよい。そのため、細部網羅ファイルにおいて指定された時間より遅い時間を指示するタイムスタンプを含むコンテンツアドレスを有するコンテンツユニットについての読取要求によって、処理ソフトウェア３０５は、細部網羅ファイルのディレクトリ内のコンテンツユニットを調査する必要なしで、低レベルの適切なザブディレクトリに進んでもよい。
【００４４】
上述した例では、ディレクトリ構造の粒度は、コンテンツユニットが、格納のために受信される頻度に基づいて変更される。しかし、粒度は、１つまたは複数の任意の適した基準に基づいて確定されてもよいため、本発明は、この点において制限されない。
【００４５】
先に提供されたシナリオは、各ディレクトリに格納されるファイルの数に影響を及ぼすように、タイムベースディレクトリ構造が構成されてもよい方法の例に過ぎないことが理解されるべきである。任意の適したディレクトリ構造が使用されてもよいため、本発明は
、これらの特定の例に限定されない。
【００４６】
上記例では、平均、１秒当たり３０のコンテンツユニットが、複製ターゲット３０３に複製され、コンテナファイルは、それぞれ、１０のコンテンツユニットを格納することが予想された。複製レート、および、各コンテナファイル内のコンテンツユニットの予想される数は、例としてだけ提供され、コンテンツユニットの、任意の適した複製レートおよび／または数が使用されてもよいことが理解されるべきである。たとえば、コンテナファイルは、５０、７５、１００、または任意の他の適した数のコンテンツユニットを格納することが予想されてもよい。
【００４７】
上記例では、ディレクトリ構造２００は、各ディレクトリに格納されるファイルの数を増やすように変更された。ディレクトリ構造２００はまた、各ディレクトリに格納されるファイルの数を減らすように変更されてもよいことが理解されるべきである。これは、任意の適した方法で行われてもよい。たとえば、各リーフディレクトリによって表される期間は、増やされてもよく、または、小さな粒度期間を有する追加のレベルのディレクトリが、階層に追加されてもよい。
【００４８】
図３では、複製ターゲット３０３は、１つの格納システム（すなわち、格納システム３０１）用の複製ターゲットの役をする。しかし、複製ターゲット３０３は、任意の適した数の格納システム用の複製ターゲットの役をしてもよいため、本発明は、この点において制限されないことが理解されるべきである。複製ターゲット３０３は、格納システム、ホストコンピュータ、アプライアンス、または任意の他の適したエンティティであってよい。この点で、格納デバイス３０９は、たとえば、ディスクドライブなどの複製ターゲット３０３の内部格納デバイスであってよく、または、複製ターゲット３０３に取付けられた、外部テープ格納デバイスなどの外部格納デバイスであってよい。
【００４９】
上述した例のうちの一例では、コンテナファイルは、内部に格納されるコンテンツユニットに制限を有するものとして参照された。コンテナファイルが、追加のコンテンツユニットを格納すべきではないという認識、および、新しいコンテナファイルが作成されるべきであるという認識は、本発明が、この点において制限されないため、任意の適した方法で行われてもよい。たとえば、処理ソフトウェア３０５は、特定のコンテナファイルに格納されるコンテンツユニットの数に制限を課してもよい。あるいは、一実施形態では、ある期間が経過した後、新しいコンテナファイルが作成されてもよい。新しいコンテナファイルを作成する時間間隔は、たとえば、各コンテナファイルに格納されるコンテンツユニットの所望の平均数に基づいてもよい。すなわち、たとえば、複製ターゲット３０３が、複製のために、平均して、１秒当たり３０のコンテンツユニットを受信することが、わかっているか、または、受信すると判定され、また、各コンテナファイル内に約１５０のコンテンツユニットを有することが望ましい場合、新しいコンテナファイルは、たとえば、５秒ごとに作成されてもよい。
【００５０】
一実施形態では、コンテナファイルは、コンテンツユニット自体以外の情報を含んでもよい。本発明が、この点において制限されないため、任意の適した情報が含まれてもよい。たとえば、コンテンツユニット以外に、コンテナファイルは、コンテナファイルに格納されたコンテンツユニットのコンテンツアドレスおよび各コンテンツユニットのサイズを含んでもよい。コンテナファイル６００の例は、図６に示される。図６の例では、コンテナファイル６００は、３つのコンテンツユニットを格納し、したがって、３つのエンティティ６０１ａ、６０１ｂ、および６０１ｃ（すなわち、各コンテンツユニットについて１つのエンティティ）を有する。コンテナファイル６００内の各エンティティは、３つ部分の情報、すなわち、対応するコンテンツユニットのコンテンツアドレス、コンテンツユニットのコンテンツのサイズ、およびコンテンツユニットのコンテンツを含む。
【００５１】
コンテナファイル６００内のエンティティのシリアル編成は、コンテナファイル内のエンティティが編成されてもよい方法の一例に過ぎない。本発明が、この点において制限されないため、コンテナファイルは、任意の適した方法で編成されてもよいことが理解されるべきである。
【００５２】
処理ソフトウェア３０５（図３）は、任意の適した方法でコンテナファイルを格納するディレクトリを選択してもよい。たとえば、ファイルシステム３０７が、タイムベースディレクトリ構造を含む実施形態では、コンテナファイルが作成された時間に対応するリーフディレクトリのタイムベースディレクトリに格納されてもよい。この点で、新しいコンテナファイルが、ある時間間隔の後に作成される実施形態では、コンテナファイルが格納されるリーフディレクトリの期間は、新しいコンテナファイルが作成される時間間隔より長くてもよい。そのため、コンテナファイルに格納されるコンテンツユニットはまた、コンテンツユニットの格納時間に対応するリーフディレクトリに格納される。たとえば、リーフディレクトリが、３０秒の期間（たとえば、２００５年３月２０日１１：３０：００〜２００５年３月２０日１１：３０：２９）に対応し、新しいコンテナファイルが、５秒ごとに作成される場合、リーフディレクトリ内に６つのコンテナファイルが存在してもよく、リーフディレクトリが提示する３０秒期間の間に複製ターゲット３０３によって受信される任意のコンテンツユニットは、リーフディレクトリ内の６つのコンテナファイルのうちの１つのコンテナファイルに格納されてもよい。比較すると、リーフディレクトリが、１秒の期間に対応するが、新しいコンテナファイルが作成される時間間隔が５秒である場合、５つに１つのリーフディレクトリだけが、コンテナファイルを格納してもよい。その結果、コンテナファイルを格納しないリーフディレクトリが提示する期間中に、複製ターゲット３０３によって受信されたコンテンツユニットは、コンテンツユニットが、複製ターゲット３０３によって受信された期間に対応しないリーフディレクトリに格納されてもよい。
【００５３】
本発明は、コンテンツユニットが受信された期間に対応するディレクトリに格納されるコンテナファイルにコンテンツユニットを格納することに限定されないが、そうすることは、より詳細に以下で述べるように、特定のコンテンツユニットを、それが格納されるコンテナファイル内で探索するのを補助してもよい。
【００５４】
本発明が、この点において制限されないため、コンテナファイルは、任意の適したファイル名を有してもよい。一実施形態では、コンテナファイルのファイル名は、コンテナファイルが作成された時間を指示するタイムスタンプであってよい。しかし、任意の他の適したファイル名が使用されてもよい。
【００５５】
コンテンツユニットが、（たとえば、図３に示すように）複製ターゲットに複製される本発明の実施形態では、コンテンツユニットに関連する２つの格納時間が存在してもよい。第１に、コンテンツユニットは、コンテンツユニットが、格納システム３０１上に最初に格納された時間を反映する格納時間を有してもよい。第２に、コンテンツユニットは、コンテンツユニットが、複製ターゲット３０３上に格納された時間を反映する格納時間を有してもよい。そのため、コンテンツユニットについての識別子として、タイムスタンプ情報を含むコンテンツアドレスを使用する本発明の実施形態では、コンテンツユニットが、格納システム３０１上に最初に格納されたため（すなわち、コンテンツアドレスが、最初に割り当てられたとき）、コンテンツアドレスに含まれるタイムスタンプ情報は、複製ターゲット３０３上への格納の時間ではなく、格納システム３０１上への最初の格納の時間を反映してもよい。しかし、コンテンツユニットが格納されるコンテナファイル、その結果、コンテンツユニットが、複製ターゲット３０３上で格納されるタイムベースディレクトリは、コンテンツアドレス内のタイムスタンプによって指示される時間ではなく、複
製ターゲット３０３上へのコンテンツユニットの格納の時間に基づく。
【００５６】
複製ターゲット３０３上に格納されたコンテンツユニットのコンテンツアドレス内のタイムスタンプは、タイムベースディレクトリが、複製ターゲット上への格納時間に基づいて選択されるため、どのタイムベースディレクトリにコンテンツユニットが格納されるかを、それ自体、指示しなくてもよいが、タイムスタンプは、複製ソース（すなわち、格納システム）上への格納時間を反映する。そのため、一実施形態では、コンテンツユニットを格納するためにコンテナファイルを採用することに加えて、１つまたは複数のコンテナ索引ファイルが、作成され、複製ターゲットのディレクトリ構造に格納されてもよい。コンテナ索引ファイルが格納されるディレクトリは、コンテナ索引ファイルによって参照されるコンテンツユニットのコンテンツアドレスのタイムスタンプ（すなわち、格納システム３０１上への格納の時間）に基づいてもよい。たとえば、コンテンツユニットを格納するための要求が、複製ターゲット３０３によって受信されるとき、処理ソフトウェア３０５は、３０７内のタイムベースディレクトリのうちの１つのタイムベースディレクトリ内で探索されたコンテナファイルにコンテンツユニットを格納してもよく、そのタイムベースディレクトリは、コンテンツユニットが、格納のために、複製ターゲット３０３によって受信された期間に対応する。さらに、コンテンツユニットをそのコンテンツアドレスによって識別し、どのコンテナファイルにコンテンツユニットが格納されるかを指示するエントリが、コンテナ索引ファイル内に作られてもよい。コンテナ索引ファイルは、コンテンツユニットが、格納システム３０１上に最初に格納された時間に対応するタイムベースディレクトリに格納されてもよい。
【００５７】
一実施形態では、コンテンツユニットのコンテンツアドレスは、タイムスタンプを含まなくてもよい。そのため、格納システム３０１上へのコンテンツユニットの最初に格納時間はわからなくてもよい。そのため、コンテンツユニットについて、タイムベースファイルシステムにおいて索引エントリを作成することは、難問を呈する場合がある。一実施形態では、入力として、コンテンツアドレスまたはコンテンツアドレスの一部を取得し、時間値を出力するハッシュ関数が使用される。コンテンツアドレスまたはコンテンツアドレスの一部は、ハッシュ関数に入力され、ハッシュ関数によって出力された時間値に対応するタイムベースディレクトリが選択されてもよい。コンテナ索引ファイルは、選択されたタイムベースディレクトリに格納されてもよい。そのため、コンテナ索引ファイルは、コンテンツユニットが、格納システム３０１上に最初に格納された時間に基づいて選択されたディレクトリに必ずしも格納されるのではなく、ハッシュ関数によって生成された時間値に基づいて選択されたディレクトリに格納される。そのため、コンテンツアドレス内にタイムスタンプ情報が存在せず、また、格納システムへの最初の格納時間がわからない場合でも、タイムベースディレクトリ構造内のディレクトリに格納されるコンテナ索引ファイル内のエントリが、コンテンツユニットについて作られてもよい。後続の例は、コンテンツユニットが、格納システム３０１上に最初に格納された時間に対応するディレクトリに格納されるコンテナ索引ファイルおよび関連ファイルを参照してもよいが、コンテナ索引ファイルおよび関連ファイルは、ハッシュ関数によって生成される時間値に対応するディレクトリに格納されてもよいことが理解されるべきである。
【００５８】
コンテンツユニットにアクセスする要求が、後で受信され、コンテンツユニットをそのコンテンツアドレスによって識別するとき、処理ソフトウェア３０５は、コンテンツアドレス内のタイムスタンプ情報を使用して、コンテンツユニットを参照するコンテナ索引ファイルを探索してもよく、または、コンテンツアドレスがタイムスタンプを含まない場合、コンテンツアドレスから時間値を生成するハッシュ関数を使用して、コンテンツユニットに対応するコンテナ索引ファイル内のエントリを探索してもよい。このエントリは、コンテンツユニットが格納されるコンテナファイルを識別してもよく、かつ／または、このコンテナファイルに対するポインタを提供してもよい。そのため、要求において指定され
たコンテンツアドレスを有するコンテンツユニットについて、コンテナファイル全てを検索するのではなく、適切なコンテナファイルに対するポインタが、コンテンツアドレス内のタイムスタンプ情報を使用して探索されてもよく、コンテナファイルを求めて網羅的な検索が、実施される必要はない。
【００５９】
コンテナ索引ファイルの使用は、ＨＳＭ技法を採用するシステムにおいて特に有益である場合がある。たとえば、コンテナファイルが、低速格納デバイス上に格納され、特定のコンテンツユニットを探索するために、コンテナファイル全てを探索することが必要であった場合、多くのコンテナファイル（コンテンツユニットを含むため、通常、コンテナ索引ファイルよりずっと多い）は、低速格納デバイスからキャッシュ（すなわち、高速格納デバイス）へ転送されなければならない場合がある。コンテナ索引ファイルの使用によって、処理ソフトウェア３０５が、要求されたコンテンツユニットが、どのコンテナファイルに格納されるかを判定することが可能になり、したがって、多数のコンテナファイルを低速格納デバイス（たとえば、テープシステム）から高速格納デバイス（たとえば、磁気ディスクドライブ）へ転送する必要はない。むしろ、コンテンツを含むコンテナファイルだけが、高速格納デバイス上にまだ格納されていない場合、低速格納デバイスから高速格納デバイスへ移されてもよい。
【００６０】
図４は、コンテナ索引ファイル４０１と、コンテナファイル４０５および４０７との関係の一例を示す。コンテナ索引ファイル４０１は、複数のエントリ４０３ａ、４０３ｂ、および４０３ｃを含み、エントリはそれぞれ、そのコンテンツアドレスでコンテンツユニットを識別し、コンテンツユニットを探索するのに使用されてもよい情報も含む。一実施形態では、この情報は、コンテンツユニットが格納されるコンテナファイルのロケーションを指定するポインタ、および、コンテンツユニットがそこで始まるコンテナファイル内のオフセットを含む。そのため、たとえば、エントリ４０３ａは、コンテナファイル４０５に対するポインタを含んでもよく、また、対応するコンテンツユニットが、コンテナファイル内に入った、ある数のバイトのところで始まることを指示してもよい。さらに、コンテナ索引ファイル内のエントリはまた、現在のエントリと同じハッシュによって、次の索引を指示する情報を含んでもよい。本発明が、この点において制限されないため、この情報の一部は、コンテナ索引ファイルに含まれる必要はなく、任意の他の適した情報が、索引ファイルに含まれてもよいことが理解されるべきである。
【００６１】
一実施形態では、コンテナ索引ファイルは、任意の適した数のエントリを有してもよく、各エントリは、コンテンツユニットおよびコンテンツユニットが格納されるコンテナファイルを識別する。しかし、コンテナ索引ファイルは、任意の適した形態を有してもよいため、本発明は、この点において制限されない。一実施形態では、各コンテナ索引ファイルは、特定の期間に対応してもよい。そのため、そのコンテンツアドレスが、コンテナ索引ファイルの期間内に入るタイムスタンプを含むコンテンツユニットについてのエントリを、コンテナ索引ファイルが含んでもよい。コンテナ索引ファイルに対応する期間は、本発明が、この点において制限されないため、任意の適した継続時間であってよい。しかし、一実施形態では、コンテナ索引ファイルの期間の継続時間は、コンテナ索引ファイルが格納されるリーフディレクトリによって表される期間の継続時間以下である。たとえば、コンテナ索引ファイルが、タイムベースディレクトリ構造内のリーフディレクトリに格納され、最低レベルのリーフディレクトリが３０秒の期間に対応する場合、コンテナ索引ファイルは、同じか、または、それより短い期間に対応してもよい。そのため、コンテンツユニットのコンテンツアドレス内のタイムスタンプによって指示される時間を包含する期間に対応する、コンテンツユニットについてのエントリが、コンテナ索引ファイル内に作られるとき、コンテナ索引ファイルは、コンテンツユニットのコンテンツアドレス内のタイムスタンプによって指示される時間を同様に包含するリーフディレクトリに格納されるであろう。
【００６２】
本発明が、この点において制限されないため、コンテナ索引ファイルはまた、任意の適したファイル名を有してもよい。一実施形態では、コンテナ索引ファイルは、コンテナ索引ファイルが対応する期間を指示するファイル名を有してもよい。これは、使用されてもよいファイル名の一例に過ぎないこと、および、本発明が、この特定の例に限定されないことが理解されるべきである。
【００６３】
コンテナ索引ファイルが格納されるリーフディレクトリによって表される期間の継続時間より継続時間が短い期間に、コンテナ索引ファイルが対応する本発明の実施形態では、リーフディレクトリ内に複数のコンテナ索引ファイルが存在してもよい。たとえば、リーフディレクトリが、３０秒期間（たとえば、２００５年３月２０日１１：３０：００〜２００５年３月２０日１１：３０：２９）を表し、各コンテナ索引ファイルが、１５秒期間に対応する場合、リーフディレクトリ内に２つのコンテナ索引ファイル、すなわち、２００５年３月２０日１１：３０：００〜２００５年３月２０日１１：３０：１４の期間に対応する１つのコンテナ索引ファイル、および、２００５年３月２０日１１：３０：１５〜２００５年３月２０日１１：３０：２９の期間に対応する別のコンテナ索引ファイルが存在してもよい。
【００６４】
本発明が、この点において制限されないため、コンテナ索引ファイルの期間の継続時間は、任意の適した方法で選択されてもよい。たとえば、一実施形態では、継続時間は、新しいコンテナファイルが作成される間隔に対応するように選択されてもよい。そのため、たとえば、新しいコンテナファイルが、５秒ごとに作成される場合、コンテナ索引ファイルの期間の継続時間もまた、５秒である。あるいは、継続時間は、リーフディレクトリ内の所望のコンテナ索引ファイルの最大数に基づいて選択されてもよい。すなわち、たとえば、リーフディレクトリによって表される期間の継続時間が、３０秒であり、リーフディレクトリ内に最大で５つのコンテナ索引ファイルを有することが望ましい場合、リーフディレクトリ内の各コンテナ索引ファイルの期間の継続時間は、６秒であってよい。これらは、コンテナ索引ファイルの期間の継続時間が選択されてもよい方法の例に過ぎず、任意の他の適した方法が使用されてもよい。たとえば、コンテナ索引ファイル全てが、同じ継続時間である必要はない。
【００６５】
複製ターゲット３０３が、コンテナ索引ファイル内にエントリを有するはずであるコンテンツユニットを格納しない場合、処理ソフトウェア３０５は、コンテナ索引ファイルを作成する必要がない。そのため、たとえば、そのコンテンツアドレスが、２００５年３月２０日１１：３０：１５と２００５年３月２０日１１：３０：２９との間で格納時間を指示するタイムスタンプを有するコンテンツユニットを、複製ターゲット３０３が格納しない場合、コンテナ索引ファイルが作成されても、コンテナファイル内にエントリが存在しないことになるため、２００５年３月２０日１１：３０：１５〜２００５年３月２０日１１：３０：２９の期間に対応するコンテナ索引ファイルを作成することが必要でない場合がある。
【００６６】
同様に、ディレクトリに格納されるファイルが存在しない場合、タイムベースディレクトリ構造内のディレクトリは、作成される必要がないことが理解されるべきである。たとえば、図２のディレクトリ構造２００を参照すると、２００５年２月に対応するサブディレクトリ２０３が、ディレクトリ構造内に存在する。２００５年２月中に、格納システム３０１上に最初に格納されるコンテンツユニットが存在せず、また、２００５年２月中に、コンテンツユニットが、複製ターゲット３０３に複製されない場合、サブディレクトリ２０３（および、階層において、通常、サブディレクトリ２０３に由来することになるサブディレクトリの全て）は、作成される必要はない。
【００６７】
一実施形態では、各コンテナ索引ファイルは、コンテナ索引ファイル内で特定のエントリを探索するのを補助し、コンテンツユニットを削除するのを補助するのに使用されてもよい、索引ヘッダファイルと呼ぶ関連ヘッダファイルを有してもよい。コンテナ索引ファイル内でエントリを探索するのを補助するために、索引ヘッダファイルは、たとえば、コンテナ索引ファイルを指すポインタのアレイを含んでもよい。アレイ内の各ポインタは、コンテナ索引ファイル内のエントリのロケーションを指示してもよく、アレイは、たとえば、コンテナ索引ファイル内のエントリに格納されるコンテンツアドレスのハッシュに基づいて編成されてもよい。そのため、対応するコンテンツユニットのコンテンツアドレスを使用して、索引コンテナファイル内のエントリを探索するために、コンテンツアドレスがハッシュされて、アレイ内のエントリに対するポインタのロケーションが確定されてもよい。その後、ポインタを使用して、ハッシュされたコンテンツアドレスに対応する、コンテナ索引ファイル内のエントリのロケーションが決定されてもよい。
【００６８】
索引ヘッダファイルはまた、コンテンツユニットの削除を管理するのに役立つ情報を含んでもよい。本発明の一実施形態では、削除は、次の通りに処理されてもよい。処理ソフトウェア３０５が、コンテンツユニットを削除する要求を受信し、コンテンツユニットをそのコンテンツアドレスによって識別するときに、コンテンツユニットを探索し、その対応するエントリを適切なコンテナファイルから除去するのではなく、エントリは、ファイル内に残ったままにされ、コンテンツユニットにアクセスするための、その後の要求が拒否されるように、コンテンツユニットが削除されたという注釈が記録されてもよい。本発明が、この点において制限されないため、こうした注釈は、任意の適した方法で行われてもよい。一実施形態では、注釈は、索引ヘッダファイルに記録されてもよい。
【００６９】
たとえば、図５に示すように、削除データ構造５００が、索引ヘッダファイルに格納されてもよい。削除データ構造は、索引ヘッダファイルに関連する、索引コンテナファイル内の各エントリにビットを関連付ける。あるエントリについてのビットが、ある値にある（たとえば、「１」の値を有する）場合、エントリは、削除されていないが、あるエントリについてのビットが、他の値にある（たとえば、「０」の値を有する）場合、エントリは、削除されている。処理ソフトウェア３０５が、コンテンツユニットを格納する要求を受信し、コンテナ索引ファイル内にコンテンツユニットに対応するエントリを作成すると、処理ソフトウェアはまた、対応する索引ヘッダファイルの削除データ構造５００内にこのエントリについてのビットを追加し、この時、ビットは、最初に、セットされる（すなわち、「１」の値を有する）。コンテンツユニットを削除するための、その後の要求が受信されると、ビットは、「０」の値にリセットされ、コンテンツユニットが、削除されていることが指示される。結果として、処理ソフトウェア３０５が、データを読取るための、その後の要求を受信すると、処理ソフトウェアは、索引ヘッダファイル内の削除データ構造５００を調査して、コンテンツユニットを戻す前に、コンテンツユニットが削除されたかどうかが判定されてもよい。コンテンツユニットが削除されていると判定される場合、コンテンツユニットが存在しないこと、および／または、コンテンツユニットが削除されたことを指示する応答が、アクセス用エンティティに戻されてもよい。
【００７０】
索引ヘッダファイルはまた、関連するコンテナ索引ファイル内のエントリの現在の数などの、任意の他の適した情報を含んでもよい。さらに、上述した削除データ構造の例は、どのコンテンツユニットが削除されたかを追跡するのに使用されてもよい、データ構造の一実施態様に過ぎない。削除データ構造は、任意の適した形態をとってもよいため、本発明は、この特定の例に限定されない。
【００７１】
上述したように、一実施形態では、コンテナ索引ファイルおよびコンテナファイルからの個々のエントリは、削除要求に応答して除去されないが、コンテナ索引ファイル内の各エントリについての削除要求が受信された場合、コンテナ索引ファイルと索引ヘッダファ
イルの全体が、削除されてもよい。たとえば、上述したように、コンテナ索引ファイルは、削除データ構造を含む関連する索引ヘッダファイルを有してもよい。削除データ構造内の各ビットが、「０」にセットされ、コンテナ索引ファイル内の各エントリについての削除要求が受信されたことを指示する場合、索引ヘッダファイルとコンテナ索引ファイルの両方が、一実施形態に従って削除されてもよい。
【００７２】
一実施形態では、各コンテナファイルはまた、コンテナファイルに関連する、コンテナヘッダファイルと呼ぶヘッダファイルを有してもよい。コンテナヘッダファイルは、コンテナファイルが削除されるときを決定するのに使用されてもよい。たとえば、コンテナヘッダファイルは、どれだけ多くのコンテンツユニットが、関連するコンテナファイルに格納されるか、また、これらのコンテンツユニットのうちのどれだけが、削除されたかを指示してもよい。そのため、たとえば、処理ソフトウェア３０５が、コンテンツユニットを削除する要求を受信すると、処理ソフトウェア３０５は、コンテナ索引ファイルに関連する索引ヘッダファイル内の削除データ構造を更新することに加えて、適切なコンテナ索引ファイルを使用して、どのコンテナファイルに、コンテンツユニットが格納されるかを判定してもよく、関連するコンテナファイルから削除されたコンテンツユニットの数を反映するために、コンテナヘッダファイルを更新してもよい。削除されたコンテンツユニットの数が、コンテナファイルに現在格納されているコンテンツユニットの数と同じであるとき、コンテナファイルおよび関連するコンテナヘッダファイルは、削除されてもよい。
【００７３】
上記説明は、コンテンツユニットが削除されたかどうか、および／または、コンテナファイル、コンテナ索引ファイル、および索引ヘッダファイルが削除されてもよい時を判定することができる方法の一例を提供する。任意の適した方法で、これらのどの判定を行ってもよいため、本発明は、この特定の例に限定されない。
【００７４】
先に説明したように、（たとえば、コンテンツアドレスによって識別される）１つまたは複数の特定のコンテンツユニットを取出すためのアクセス要求を受信することに加えて、処理ソフトウェア３０５は、１つまたは複数の基準を満たすコンテンツユニットの識別を要求するクエリアクセス要求を受信してもよい。本発明の一実施形態では、処理ソフトウェア３０５は、要求において指定された時間範囲の間に、複製ターゲット３０３に対して格納されたコンテンツユニットの識別を要求するタイムベースクエリ要求を処理してもよい。本発明が、この点において制限されないため、これは、任意の適した方法で行われてもよい。たとえば、一実施形態では、クエリ要求に応答して、処理ソフトウェア３０５は、タイムベースディレクトリ構造内のどのリーフディレクトリが、要求において指定された時間範囲内に入るかを判定してもよい。処理ソフトウェア３０５は、これらのディレクトリに格納されたコンテナファイルにアクセスし、コンテナファイルに格納されたコンテンツユニットのコンテンツアドレスを戻してもよい。
【００７５】
一実施形態では、処理ソフトウェア３０５は、コンテンツアドレスを戻すことに加えて、または、戻す代わりに、コンテンツユニット自体を戻してもよい。コンテナファイルおよび関連するコンテナヘッダファイルは、コンテナファイルに格納されたコンテンツユニットのうちのどれが削除されたかを指示する情報を含まないため、一実施形態では、こうした実施形態と共に使用されると、処理ソフトウェアは、タイムベースクエリに応答して、削除されたコンテンツユニットを識別してもよい。
【００７６】
この問題に対処するために、一実施形態では、コンテナファイル用のコンテナヘダファイルはまた、索引ヘッダファイルに含まれる削除データ構造と同じ削除データ構造を含んでもよく、削除データ構造は、関連するコンテナファイル内のどのコンテンツユニットが削除されたかを指示する。このデータ構造を維持するために、削除要求がコンテンツユニットについて受信されると、コンテンツユニットが格納されるコンテナファイル用のコン
テナヘッダファイル内の削除データ構造が更新されるべきである。さらに、処理ソフトウェア３０５が、タイムベースクエリ要求に応答して、識別されたコンテンツユニットのコンテンツアドレスを戻すが、コンテンツユニット自体を戻さない実施形態では、指定された時間範囲に一致するコンテンツユニットのコンテンツアドレスを確定するために、複数のコンテナファイルが、格納デバイスから複製ターゲット３０３のメモリへ転送されなければならない場合がある。しばしば、コンテナファイルは、多くのコンテンツユニットのコンテンツを含むため、大きい場合がある。結果として、これらのファイルを格納デバイスから転送することは、タイムベースクエリ要求に応答して待ち時間を増加させる場合がある。
【００７７】
別の実施形態では、コンテナファイルのコンテナヘッダファイル内の削除データ構造を維持するのではなく、コンテンツユニットを参照するコンテナ索引ファイルに対するポインタが、コンテナファイル内に各コンテンツユニットについてのエントリを有した状態で格納されてもよい。そのため、タイムベースクエリ要求が受信されると、処理ソフトウェア３０５は、指定された時間範囲内に入るリーフディレクトリに格納されるコンテナファイルにアクセスしてもよく、要求に応答してコンテンツユニットを識別する前に、（たとえば、索引ヘッダファイル内の削除データ構造を介して）コンテンツユニットが削除されているかどうかを判定するために、コンテンツユニットについてのエントリにおいて、コンテナ索引ファイルに対するポインタを使用してもよい。この実施形態では、各コンテナファイルについて削除データ構造を維持し、コンテナファイルに格納されたコンテンツユニットが削除されるときはいつでも、削除データ構造を更新することは必要ではない。むしろ、コンテンツユニットが最初に格納されるときに、適切なコンテナ索引ファイルに対するバックポインタが、コンテナファイル内のコンテンツユニットのエントリに含まれてもよい。
【００７８】
コンテナヘッダファイルが、削除データ構造を含むか、または、コンテナファイルエントリが、コンテナ索引ファイルに対するバックポインタを含む実施形態では、コンテンツユニットのコンテンツが、要求に応答して戻される必要がなくても、タイムベースクエリ要求において指定された基準を満たすコンテンツユニットについてのコンテンツアドレスが得られるように、多数のコンテナファイルが、格納デバイスから複製ターゲットのメモリへ転送されてもよい。さらに、ＨＳＭ技法が採用される実施形態では、これらの多数のコンテナファイルは、格納デバイスから複製ターゲットのメモリに移されなければならないだけでなく、これらのコンテナファイルは、格納階層における低速格納デバイス（たとえば、テープドライブ）から、たとえば、ディスクドライブであってよい格納デバイスへ移されなければならない場合がある。
【００７９】
これに対処するために、一実施形態では、ストアタイムコンテナファイル(storetime container file)が採用されてもよい。コンテナファイルに似たストアタイムコンテナファイルは、特定の期間に対応してよく、その期間の間に格納されるコンテンツユニットについてのエントリを有してもよい。そのため、ストアタイムコンテナファイルは、ストアタイムコンテナファイルの期間を包含するリーフディレクトリに格納されてもよい。コンテンツユニットが、コンテナファイルに最初に格納されると、コンテンツユニットについてのエントリが、適切なストアタイムコンテナファイルにおいて作られてもよい。
【００８０】
ストアタイムコンテナファイル７００の例は、図７に示される。ストアタイムコンテナファイル７００は、２つのエントリ７０１ａおよび７０１ｂを含む。これらのエントリはそれぞれ、コンテナファイルに格納されるコンテンツユニットに対応し、タイムベースクエリ要求に応答して使用されてもよい情報を含んでもよい。たとえば、エントリは、コンテンツユニットのコンテンツアドレス、コンテンツユニットを参照するコンテナ索引ファイルに対するポインタ、コンテンツユニットの格納時間、およびコンテンツユニットのコ
ンテンツのサイズを含んでもよい。本発明は、この点において制限されないため、任意の他の適した情報が含まれてもよい。
【００８１】
タイムベースクエリ要求が受信されると、処理ソフトウェア３０５は、要求において指定された時間範囲に対応するリーフディレクトリを確定し、これらのディレクトリに格納されたストアタイムコンテナファイルにアクセスしてもよい。ストアタイムコンテナファイル内の各エントリについて、処理ソフトウェア３０５は、エントリにおいて、コンテナ索引ファイルに対するポインタを使用して、関連する索引ヘッダファイル内の削除データ構造にアクセスすることによって、エントリに対応するコンテンツユニットが削除されたかどうかを判定してもよい。コンテンツユニットは、削除された場合、要求に応答して識別されない。コンテンツユニットが削除されなかった場合、コンテンツユニットのコンテンツアドレスは、たとえば、コンテンツユニットの格納時間およびコンテンツのサイズなどの、任意の他の適した情報と共に、要求に応答して戻されてもよい。
【００８２】
一実施形態では、ストアタイムヘッダファイルは、各エントリついて作成されてもよい。ストアタイムヘッダファイルは、たとえば、ストアタイムコンテナファイルが削除されてもよいかどうか（すなわち、ストアタイムコンテナファイル内のエントリ全てに対応するコンテンツユニットが削除されたかどうか）を判定するために使用されてもよい。ストアタイムヘッダファイルは、ストアタイムコンテナファイル内のエントリの現在の数（エントリが、ストアタイムコンテナファイルに追加されると更新されてもよい）を指示してもよく、削除されたコンテンツユニットに対応するエントリの数（エントリの１つに対応するコンテンツユニットが削除されるたびに更新されてもよい）を指示してもよい。削除されたコンテンツユニットに対応するエントリの数が、ストアタイムコンテナファイル内のエントリの数と同じ場合、ストアタイムコンテナファイルは、（たとえば、処理ソフトウェア３０５によって）削除されてもよい。
【００８３】
一実施形態では、指定された時間範囲の間に格納されたコンテンツユニットを識別するためのクエリ要求に応答することに加えて、処理ソフトウェア３０５は、指定された時間範囲の間に削除されたコンテンツユニットを識別するためのクエリ要求に応答してもよい。本発明は、この点において制限されないため、これは、任意の適した方法で行われてもよい。
【００８４】
たとえば、特定の期間に対応する削除コンテナファイルが、作成され、その期間中に削除されたコンテンツユニットについてのエントリを有してもよい。削除コンテナファイルは、削除コンテナファイルの期間に対応するリーフディレクトリに格納されてもよい。コンテンツユニットが削除されると、コンテンツユニットの削除時間を包含する、コンテンツユニットについてのエントリが、削除コンテナファイルにおいて作られてもよい。２つのエントリ８０１ａおよび８０１ｂを含む削除コンテナファイル８００の例が、図８に示される。削除コンテナファイル内の各エントリは、削除されたコンテンツユニットに対応し、任意の適した情報を含んでもよい。たとえば、エントリは、削除されたコンテンツユニットのコンテンツアドレス、削除時間、および削除の理由を含んでもよい。
【００８５】
指定された時間範囲の間に削除されたコンテンツユニットの識別を要求するクエリ要求が受信されると、処理ソフトウェア３０５は、指定された時間範囲内に入る期間に対応するリーフディレクトリを確定してもよい。処理ソフトウェア３０５は、その後、これらのディレクトリに格納された削除コンテナファイルにアクセスし、削除コンテナファイルにおいて識別された各コンテンツユニットについての情報を戻してもよい。本発明は、この点において制限されないため、任意の適した情報が戻されてもよい。たとえば、クエリ要求に応答して、時間範囲の間に削除されたコンテンツユニットのコンテンツアドレスが、コンテンツユニットの削除時間および削除の理由と共に戻されてもよい。
【００８６】
本明細書で述べる本発明の態様は、２つの異なるタイプのコンテンツユニット、すなわち、ブロブおよびコンテンツ記述子ファイル（ＣＤＦ）を格納するシステムに関して使用されることができ、各ブロブは、少なくとも１つのＣＤＦによって参照される。ブロブは、アプリケーションデータを格納してもよいが、ブロブを参照するＣＤＦは、ブロブに関するメタデータを格納してもよい。アクセス用エンティティは、ブロブに直接アクセスせず、ＣＤＦにアクセスするだけであってよい。そのため、アクセス用エンティティは、ブロブのコンテンツアドレスではなく、ＣＤＦのコンテンツアドレスのみを認識してもよい。ブロブにアクセスするために、アクセス用エンティティは、ブロブを参照するＣＤＦについての要求を送出してもよい。応答して、アクセス用エンティティは、要求されたＣＤＦおよびＣＤＦによって参照されたブロブを受信してもよい。この点で、アクセス用エンティティは、ブロブの削除を直接要求しなくてもよい。アクセス用エンティティは、ブロブを参照するＣＤＦの削除を要求してもよい。ブロブを参照するＣＤＦが存在しない場合、ブロブは、削除されてもよい。
【００８７】
一実施形態では、ブロブとＣＤＦについて、別個のコンテナファイルが使用されてもよい。そのため、タイムベースディレクトリ構造内のリーフディレクトリは、（すなわち、リーフディレクトリの期間中に、複製ターゲット３０３に格納されたブロブ（複数可）およびＣＤＦ（複数可）が存在する場合）いくつかのブロブコンテナファイルおよびいくつかのコンテナファイルを有してもよい。同様に、ブロブとＣＤＦについて、別個のコンテナ索引ファイルが使用されてもよい。上述したように、一実施形態では、ブロブは、アクセス用エンティティによって直接に削除されなくてもよい。そのため、一実施形態では、関連するブロブコンテナ索引ファイルに関連する索引ヘッダファイル内に削除データ構造を含むのではなく、索引ヘッダファイルは、参照カウントマップを含んでもよい。参照カウントマップは、どれだけ多くのＣＤＦが、ブロブを参照しているかを指示する、ブロブコンテナ索引ファイル内の各ブロブエントリについてのエントリを含んでもよい。ブロブについての参照カウントマップは、ブロブを参照する新しいＣＤＦが作成されるとき、または、ブロブを参照するＣＤＦが削除されるときに更新されてもよい。この点で、参照カウントマップ内の全てのエントリが、「０」であり、ブロブ索引コンテナファイル内で参照されるブロブのどのブロブを参照するＣＤＦも存在しないことを指示する場合、ブロブ索引ファイルは、削除されてもよい。
【００８８】
上述したように、コンテナファイルに格納された全てのコンテンツユニットが削除されていることをコンテナヘッダファイル内の情報が指示するときに、コンテナファイルが削除されてもよい。しかし、ブロブおよびＣＤＦコンテンツユニットタイプを採用する一実施形態では、ＣＤＦコンテナファイルに格納された全てのＣＤＦが削除されたとたとえ判定されても、ＣＤＦコンテナファイルは削除されなくてもよい。これは、任意の適した理由で行われてもよく、また、本発明は、この点において制限されない。たとえば、ＣＤＦコンテナファイルは、削除されたＣＤＦ（および、削除されたＣＤＦによって参照される削除されたブロブ）に関する情報が、複製ターゲット上にまだ存在するように、監査ログの役をしてもよく、削除されたコンテンツユニットに関する情報を確定するのに使用されてもよい。ＣＤＦコンテナファイルが削除される実施形態では、ＣＤＦコンテナファイルについてコンテナヘッダファイルを維持することが必要でない場合がある。コンテナヘッダファイルは、関連するコンテナファイルが削除されてもよいかどうかを判定するのに主に使用される（すなわち、関連するコンテナファイル内の全てのコンテンツユニットが削除されたかどうかを判定することによる）ため、また、ＣＤＦコンテナファイルは削除されないため、ＣＤＦコンテナファイルについて、コンテナヘッダファイルを作成し維持することは必要でなくてもよい。
【００８９】
状況によっては、特定のコンテンツユニットの格納を１回のみ可能にすることが望まし
い場合があることを、出願人は理解した。そのため、コンピュータ上に既に格納されているコンテンツユニットを、ユーザが格納しようとする場合、コンピュータは、同じコンテンツユニットの２つのコピーが、格納システム上に格納されないように、コンテンツユニットの格納をバイパスしてもよい。しかし、コンテンツユニットの格納を要求するエンティティの観点から、格納システムは、格納要求を受入れ、処理した。本発明は、この点において制限されないため、これは、任意の適した方法で行われてもよい。
【００９０】
コンテンツユニットについてのコンテンツアドレスが、タイムスタンプを含まない一実施形態では、コンテンツユニットに書込む要求が受信されると、コンテンツアドレスが、ハッシュ関数に入力されて、先に説明した時間値が導出されてもよい。この時間値を使用して、コンテンツユニットについてのコンテナ索引ファイルを格納するディレクトリが選択されてもよい。その時間値に対応する適切なコンテナ索引ファイルが選択されてもよく、同じコンテンツアドレスが既に格納されている別のコンテンツユニットが存在するかどうかが判定されてもよい。同じコンテンツアドレスが格納された状態で、別のコンテンツユニットが存在する場合、コンテンツユニットの別のコピーが、タイムベースディレクトリ構造内のコンテナファイルにセーブされる必要はない。しかし、先に説明した参照カウントマップ内のコンテンツユニットについての参照カウントは、インクリメントされてもよいため、コンテンツユニットの第１コピーを格納した第１エンティティからの、コンテンツユニットを削除するための要求は、コンテンツユニットの削除をもたらすことにならず、その結果、コンテンツユニットの第２コピーを格納した第１エンティティは、コンテンツユニットに依然としてアクセスしてもよい。
【００９１】
コンテンツユニットについてのコンテンツアドレスが、コンテンツユニットの最初の格納時間を指示するタイムスタンプを含む実施形態では、同じコンテンツユニットの２つのコピーは、そのコンテンツアドレスに異なるタイムスタンプを有してもよい。そのため、コンテンツユニットを格納する要求が受信されると、コンテンツユニットの以前のコピーが格納されたかどうかを判定することが難しい場合がある。これに対処するために、一実施形態では、シングルインスタンスストア(single instance store)（ＳＩＳ）ファイル
が採用されてもよい。コンテンツユニットを書込む要求が受信されると、コンテナ索引ファイルに、コンテンツユニットについてのエントリを格納し、コンテナファイルにコンテンツユニットを格納することに加えて、コンテンツユニットのコンテンツアドレス（または、コンテンツアドレスの一部）が、コンテンツアドレスに少なくとも部分的に基づいて時間値を出力するハッシュ関数内に入力されてもよい。コンテンツアドレスをハッシュ関数に入力する前に、タイムスタンプが、コンテンツアドレスから除去されてもよいため、ハッシュ関数は、コンテンツユニットのコンテンツを使用して生成されるコンテンツアドレスの一部に関して動作するだけである。コンテンツユニットに対応するＳＩＳファイルは、ハッシュ関数によって出力される時間値に対応するタイムベースディレクトリにおいて作成されてもよい。ＳＩＳファイルは、コンテンツユニットのコンテンツアドレスを指示してもよい。ＳＩＳファイルは、さらに、コンテンツユニットについてのエントリを含むコンテナ索引ファイルのロケーションを指示し、コンテナ索引ファイルを識別してもよい。同じコンテンツを有する別のコンテンツユニットを格納する書込み要求が受信されると、処理ソフトウェア３０５（図３）は、時間値を生成するために、コンテンツユニットのコンテンツを使用して生成されるコンテンツアドレスの一部を、ハッシュ関数に入力してもよい。その時間値に対応するディレクトリが、探索されてもよく、また、コンテンツユニットの（タイムスタンプを除外した）コンテンツアドレスを含むＳＩＳファイルが存在するかどうかが判定されてもよい。ＳＩＳファイルが見つかると、コンテンツユニットの第１コピーに対応するコンテナ索引ファイルが探索されてもよく、また、コンテンツユニットの第１コピーを格納するコンテナファイルのロケーションが確定されてもよい。その後、コンテンツユニットの第２コピーのコンテンツアドレス内のタイムスタンプに対応するディレクトリのコンテナ索引ファイル内で、コンテンツユニットの第２コピーについ
てエントリが作られてもよい。エントリは、コンテンツユニットのロケーションとして、コンテンツユニットの第１コピーを格納するコンテナファイルを指示してもよい。こうして、コンテンツユニットの第２コピーは、格納される必要はないが、コンテンツは、コンテンツユニットの第１コピーのコンテンツアドレスか、コンテンツユニットの第２コピーのコンテンツアドレスのいずれかを使用して探索されてもよい。
【００９２】
一実施形態では、本明細書に述べる本発明の態様は、仮想プールを採用するシステムで使用されることができる。仮想プールは、以下の表１に挙げる出願第１０／９１０，９８５号、第１０／９１１，３３０号、第１０／９１１，２４８号、第１０／９１１，２４７号、および第１０／９１１，３６０号で詳細に説明される。コンテンツユニットは、任意の適した理由で、論理的に一緒にグループ化されてもよい。たとえば、コンテンツユニットは、一定のコンテンツユニットに対するアクセスを制御するために、一緒にグループ化されてもよい。すなわち、第１ホストコンピュータは、仮想プールＡ内でコンテンツユニットにアクセスすることを許可されるだけであってよく、一方、第２ホストコンピュータは、仮想プールＢ内でコンテンツユニットにアクセスすることを許可されるだけであってよい。
【００９３】
一実施形態では、そのエントリによって参照されるコンテンツユニットが、（もしあれば）どの仮想プール（複数可）に属するかを指示する情報が、索引コンテナファイル、ストアタイムコンテナファイル、および／または、削除コンテナファイルに含まれてもよい。アクセス要求（たとえば、読取要求、書込み要求、またはクエリ要求）が、受信されると、処理ソフトウェア３０５は、要求された各コンテンツユニットが、どの仮想プールに属するかを判定し、要求先のエンティティが、仮想プール（複数可）にアクセスすることを許可するかどうかを、要求に応答する前に判定してもよい。
【００９４】
上述した例の多くは、タイムベースディレクトリ構造の使用を採用した。例の一部では、格納されるコンテンツユニットについてのコンテンツアドレスは、コンテンツユニットを格納するディレクトリの選択を補助するタイムスタンプを含んだため、タイムベースディレクトリ構造は都合がよい。さらに、タイムベースディレクトリ構造は、タイムベースクエリ要求または削除タイムベースクエリ要求に応答するときに、コンテンツユニットを探索するのを補助するのに使用されることができる。しかし、本発明は、タイムベースディレクトリ構造における使用に限定されないことが理解されるべきである。実際に、ファイルシステムディレクトリ構造は、任意の適した方法で編成されてもよい。たとえば、ディレクトリ構造は、時間ではなく、コンテンツユニットのコンテンツアドレス内のハッシュイ値に基づいて、または、他の方法で編成されてもよい。
【００９５】
さらに、上述した例では、ファイル（たとえば、コンテナファイル、コンテナ索引ファイル、ストアタイムコンテナファイル、および削除コンテナファイル、ならびに、それらの関連するヘッダファイル）は、ディレクトリ構造のリーフディレクトリに格納される。本発明は、上述したファイルをリーフディレクトリに格納することに限定されず、したがって、本発明が、この点において制限されないため、ファイルは、ディレクトリ構造の任意の適したディレクトリに格納されてもよい。
【００９６】
さらに、上記例の多くにおいて、コンテンツアドレスは、コンテンツユニットを識別するときの識別子として使用された。任意の適した識別子が使用されてもよいため、本発明は、コンテンツアドレスを用いた使用に限定されない。
【００９７】
さらに、先に提供された例の多くは、複製ターゲット（たとえば、ホストコンピュータ）にコンテンツユニットを複製する格納システムの文脈で述べられる。本発明の実施形態が、任意の適したシステム構成において使用されてもよいため、本発明は、複製を採用す
るシステムに関する使用に限定されない。たとえば、本発明の実施形態は、バックアップ格納ロケーション（すなわち、複製ターゲット）の役をする代わりに、または、その役をすることに加えて、コンテンツユニットの主格納ロケーションとして使用されるシステム（たとえば、ホストコンピュータ）上で使用されてもよい。
【００９８】
本発明の上述した実施形態は、任意の適したコンピュータまたはシステム上で実施することができる。適したコンピュータおよび／またはシステムの例は、表１で以下に挙げる特許出願（ひとまとめに、「ＣＡＳ出願」）に記載され、特許出願はそれぞれ、参照により本明細書に組み込まれる。本発明は、これらのコンテンツアドレス指定可能格納システムの任意システム上での実施またはコンテンツアドレス指定可能格納システムに全く限定されないため、これらの出願に記載されるコンピュータおよびシステムは、本発明の実施形態がその上で実施されてもよいコンピュータおよびシステムの例に過ぎないことが理解されるべきである。
【００９９】
【表１】
2008544397.tif 000003
2008544397.tif 000004
2008544397.tif 000005
2008544397.tif 000006
2008544397.tif 000007
【０１００】
この点で、本発明の実施形態の一態様は、プロセッサ上で実行されると、本発明の実施形態の上述した機能を実施するコンピュータプログラム（すなわち、複数の命令）をエンコードされた少なくとも１つのコンピュータ読取可能媒体（たとえば、コンピュータメモリ、フロッピー（登録商標）ディスク、コンパクトディスク、テープなど）を備えることが理解されるべきである。コンピュータ読取可能媒体は、媒体上に格納されたプログラムが、本明細書で説明した本発明の態様を実施するために、任意のコンピュータ環境資源上にロードされることができるように、搬送可能であることができる。さらに、実行されると、先に説明した機能を実施するコンピュータプログラムへの参照は、ホストコンピュータ上で実行されるアプリケーションプログラムに限定されないことが理解されるべきである。むしろ、用語、コンピュータプログラムは、本発明の先に説明した態様を実施するようにプロセッサをプログラムするために採用されることができる任意のタイプのコンピュータコード（たとえば、ソフトウェアまたはマイクロコード）を参照するために、一般的な意味で本明細書において使用される。
【０１０１】
プロセスが、コンピュータ読取可能媒体において実施される本発明のいくつかの実施形態によれば、コンピュータ実施式プロセスは、その実行過程で、入力を（たとえば、ユーザから）手作業で受信してもよいことが理解されるべきである。
【０１０２】
本明細書で使用される表現および用語は、説明のために使用されており、制限として考えられるべきでない。「含む(including)」、「備える（comprising）」、「有する(having)」、「収容する(containing)」、「伴う(involving)」、およびそれらの変形は、以降で挙げたアイテムおよび付加的なアイテムを包含することを意味する。
【０１０３】
本発明のいくつかの実施形態を詳細に述べたが、種々の変更および改良が、当業者の心に容易に浮かぶであろう。こうした変更および改良は、本発明の精神および範囲内であることが意図される。したがって、先の説明は、例を挙げるだけであり、制限することを意図しない。本発明は、添付特許請求の範囲およびそれに対する等価物による規定によってのみ制限される。
【図面の簡単な説明】
【０１０４】
【図１Ａ】本発明の一実施形態による、コンテンツユニットをコンテナ化するシステムのブロック図。
【図１Ｂ】一実施形態による、階層格納管理技法を採用するコンテンツユニットをコンテナ化するシステムのブロック図。
【図２】本発明の実施形態において採用されてもよいタイムベースディレクトリ構造の例の図。
【図３】一実施形態による、複製されたコンテンツユニットがコンテナ化されてもよいシステムのブロック図。
【図４】一実施形態による、コンテナ索引ファイルとコンテナファイルとの間の関係を示すブロック図。
【図５】一実施形態による、削除データ構造の例のブロック図。
【図６】一実施形態による、コンテナファイルの例のブロック図。
【図７】一実施形態による、ストアタイムコンテナファイルの例の図。
【図８】一実施形態による、削除コンテナファイルの例の図。
【図１Ａ】
2008544397.tif 000008
【図１Ｂ】
2008544397.tif 000009
【図２】
2008544397.tif 000010
【図３】
2008544397.tif 000011
【図４】
2008544397.tif 000012
【図５】
2008544397.tif 000013
【図６】
2008544397.tif 000014
【図７】
2008544397.tif 000015
【図８】
2008544397.tif 000016
【手続補正書】
【提出日】平成19年4月23日(2007.4.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ファイルシステム内のコンテンツユニットを管理する方法であって、
第１コンテンツユニットのコンテンツに少なくとも部分的に基づいて計算された第１コンテンツアドレス、を有する第１コンテンツユニットを格納するための第１要求を受信する工程と、
前記第１要求に応答して、前記第１コンテンツユニットを前記ファイルシステム内のファイルに格納する工程と、
前記第１コンテンツユニットとは論理的に異なる第２コンテンツユニットのコンテンツに少なくとも部分的に基づいて計算された第２コンテンツアドレス、を有する第２コンテンツユニットを格納するための第２要求を受信する工程と、
前記第２要求に応答して、前記第２コンテンツユニットを前記ファイルに格納する工程と、を含む方法。
【請求項２】
前記ファイルシステムは、複数のディレクトリを有するタイムベースディレクトリ構造(time-based directory structure)を含み、前記複数のディレクトリはそれぞれ、ある期間に対応し、前記ファイルは、前記第１および第２要求が受信された期間に対応する複数のディレクトリのうちの１つのディレクトリに格納される請求項１に記載の方法。
【請求項３】
前記第１要求は、前記第１コンテンツユニットを格納する格納システムから受信され、前記第１コンテンツアドレスは、前記格納システム上の第１コンテンツユニットの格納時間に関連する時間を指示するタイムスタンプを含む請求項２に記載の方法。
【請求項４】
前記第１要求に応答して、前記タイムスタンプにおいて指示された時間を含む期間に対応する複数のディレクトリのうちの１つのディレクトリを確定する工程と、
前記タイムスタンプにおいて指示される時間を含む期間に対応する前記複数のディレクトリのうちの１つのディレクトリ内に、前記第１コンテンツユニットを格納する前記ファイルの指示を格納する工程と、をさらに含む請求項３に記載の方法。
【請求項５】
前記第１要求に応答して、識別子を前記第１コンテンツユニットに関連付ける工程をさ
らに含む請求項４に記載の方法。
【請求項６】
コンテンツユニットのコンテンツに少なくとも部分的に基づくコンテンツアドレスを有するコンテンツユニット、にアクセスするコンピュータであって、前記コンテンツユニットはファイルシステム内のファイルに格納され、コンピュータは、
入力と、
前記入力に結合する少なくとも１つのコントローラであって、
前記コンテンツユニットにアクセスするための要求を、前記入力を介して、アプリケーションプログラムから受信し、前記要求は、第１コンテンツアドレスを使用して前記コンテンツユニットを識別し、前記コンテンツユニットが格納されるファイルは、少なくとも１つの付加的なコンテンツユニットを格納し、前記少なくとも１つの付加的なコンテンツユニットは、前記コンテンツユニットのコンテンツに少なくとも部分的に基づく第２のコンテンツアドレスを有し、
前記コンテンツユニットが格納されるファイルを、前記コンテンツアドレスを使用して探索し、
前記コンテンツユニットが格納されるファイル中で前記コンテンツユニットを探索する、少なくとも１つのコントローラと、を備えるコンピュータ。
【請求項７】
前記ファイルシステムは、複数のディレクトリを有するタイムベースディレクトリ構造を含み、前記複数のディレクトリはそれぞれ、ある期間に対応し、前記ファイルは、前記コンテンツユニットが前記ファイルシステムに格納された期間に対応する複数のディレクトリのうちの１つのディレクトリに格納される請求項６に記載のコンピュータ。
【請求項８】
前記コンテンツユニットについての前記コンテンツアドレスはタイムスタンプである請求項７に記載のコンピュータ。
【請求項９】
前記コンテンツユニットは、前記コンテンツユニットを格納する格納システムからの複製によって、前記ファイルシステムに格納され、前記タイムスタンプは、前記コンテンツユニットが前記格納システムに格納された時間に対応する請求項８に記載のコンピュータ。
【請求項１０】
前記ファイルシステムは、階層ファイルシステムであり、前記複数のディレクトリは、少なくとも１つのルートディレクトリ、および、それぞれが親ディレクトリを有する複数の非ルートディレトリを備える階層ツリーで配列され、前記ツリーの中の複数のディレクトリのうちの少なくとも１つのディレクトリは、それぞれの親ディレクトリに対応する期間によって包含される期間に対応する請求項９に記載のコンピュータ。
【国際調査報告】
2008544397.tif 000017
2008544397.tif 000018