(58)【調査した分野】(Int.Cl.,DB名)
記憶装置に格納されたファイルの読み取りに適用可能なファイル読み取り方法であって、前記記憶装置は、第一記憶媒体と、キャッシュとを備え、前記キャッシュのアクセス速度は、前記第一記憶媒体のアクセス速度よりも速く、前記第一記憶媒体は、複数のコンテナを有し、前記ファイルは、複数のファイルセグメントを有し、
前記方法は、
前記記憶装置により、クライアントによって送信される第一読み取り要求を受信するステップであって、前記第一読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、ステップと、
前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取るステップと、
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納するステップであって、先読みされるコンテナが前記ファイルの少なくとも1つの未読み取りファイルセグメントを含む、ステップと
を有し、
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する前記ステップが、
所定数の未読み取りファイルセグメントが位置する前記コンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のすべてのデータを先読みし、先読みされたデータを前記キャッシュ内に格納するステップを含む、方法。
前記所定数の未読み取りファイルセグメントから、未読み取りファイルセグメントの数が前記閾値を超えないコンテナ内の未読み取りファイルセグメントを選択し、選択された未読み取りファイルセグメントを先読みし、先読みされた未読み取りファイルセグメントを前記キャッシュ内に格納するステップをさらに有する、請求項1に記載の方法。
ファイル記憶装置であって、ファイルを格納するように構成され、第一記憶媒体と、キャッシュとを備え、前記キャッシュのアクセス速度は、前記第一記憶媒体のアクセス速度よりも速く、前記第一記憶媒体は、複数のコンテナを有し、前記ファイルは、複数のファイルセグメントを有し、
クライアントによって送信される第一読み取り要求を受信するように構成された受信モジュールであって、前記第一読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、受信モジュールと、
前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取るように構成された読み取りモジュールと、
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納するように構成された先読みモジュールであって、先読みされるコンテナが前記ファイルの少なくとも1つの未読み取りファイルセグメントを含む、先読みモジュールと
を備え、
前記先読みモジュールが、
所定数の未読み取りファイルセグメントが位置する前記コンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のすべてのデータを先読みし、先読みされたデータを前記キャッシュ内に格納するようにさらに構成される記憶装置。
ファイル記憶装置であって、ファイルを格納するように構成され、第一記憶媒体と、キャッシュとを備え、前記キャッシュのアクセス速度は、前記第一記憶媒体のアクセス速度よりも速く、前記第一記憶媒体は、複数のコンテナを有し、前記ファイルは、複数のファイルセグメントを有し、
プロセッサをさらに備え、
前記プロセッサは、
クライアントによって送信される第一読み取り要求を受信する手順であって、前記第一読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、手順と、
前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取る手順と、
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する手順であって、先読みされるコンテナが前記ファイルの少なくとも1つの未読み取りファイルセグメントを含む、手順と
を実行するように構成され、
前記プロセッサが、
所定数の未読み取りファイルセグメントが位置する前記コンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のすべてのデータを先読みし、先読みされたデータを前記キャッシュ内に格納する手順を実行するようにさらに構成される、記憶装置。
【発明の概要】
【課題を解決するための手段】
【0006】
ハードウェア費用を節約してファイル読み取り性能を向上させるために、本発明の実施態様は、ファイル読み取り方法、記憶装置、および読み取りシステムを提供する。技術的解決法は、以下のとおりである。
【0007】
第一の態様によれば、本発明の一実施形態は、記憶装置に格納されたファイルを読み取るのに適したファイル読み取り方法を提供し、前記記憶装置は、第一記憶媒体と、キャッシュとを含む。前記キャッシュのアクセス速度は、前記第一記憶媒体のアクセス速度よりも速く、前記第一記憶媒体は、複数の記憶コンテナを有し、前記ファイルは、複数のファイルセグメントを含む。前記方法は、
前記記憶装置により、クライアントによって送信される第一読み取り要求を受信するステップであって、前記第一読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、ステップと、
前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取るステップと、
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納するステップであって、先読みされるコンテナが前記ファイルの少なくとも1つの未読み取りファイルセグメントを含む、ステップとを有する。
【0008】
選択的に、前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する前記ステップは、
前記第一記憶媒体から、かつ所定数の未読み取りファイルセグメントが位置するコンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するステップを含む。
【0009】
選択的に、前記方法は、
前記所定数の未読み取りファイルセグメントから、未読み取りファイルセグメントの数が前記閾値を超えないコンテナ内の未読み取りファイルセグメントを選択し、選択された未読み取りファイルセグメントを先読みし、先読みされた未読み取りファイルセグメントを前記キャッシュ内に格納するステップをさらに有する。
【0010】
選択的に、前記第一記憶媒体から、かつ所定数の未読み取りファイルセグメントが位置するコンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みする前記ステップは、
第一アドレスポインタを取得するステップであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、ステップと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するステップと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内で、前記所定数のアドレスポインタが当該コンテナの各々を指し示す回数を統計収集するステップと、
統計収集によって取得された前記回数が前記閾値を超えるか否かを判定し、統計収集によって取得された前記回数が前記閾値を超える場合に、前記回数が前記閾値を超えるコンテナ内のデータを先読みするステップとを含む。
【0011】
選択的に、前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する前記ステップは、
前記第一記憶媒体から、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するステップを含む。
【0012】
選択的に、前記第一記憶媒体から、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを先読みする前記ステップは、
第一アドレスポインタを取得するステップであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、ステップと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するステップと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内のデータを先読みするステップとを含む。
【0013】
選択的に、前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する前記ステップは、
所定数の未読み取りファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記第一記憶媒体から、前記所定数のファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するステップを含む。
【0014】
選択的に、所定数の未読み取りファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記第一記憶媒体から、前記所定数のファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納する前記ステップは、
第一アドレスポインタを取得するステップであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、ステップと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するステップと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記取得されたアドレスポインタが指し示す前記ファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みするステップとを含む。
【0015】
選択的に、前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得する前記ステップは、
前記ファイルの前記アドレスポインタテーブル内で、前記第一アドレスポインタを開始ポインタとして用いて、前記第一アドレスポインタに続くすべてのアドレスポインタの数が所定数を超えるか否かを判定するステップと、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超える場合に、前記第一アドレスポインタに続くすべてのアドレスポインタを取得するステップと、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超えない場合に、前記所定数のアドレスポインタを取得するステップとを含む。
【0016】
選択的に、前記所定数の未読み取りファイルセグメントは、前記ファイル内で連続的であり、前記所定数の未読み取りファイルセグメントは、前記ファイル内の前記読み取り対象データに対応するファイルセグメントに隣接している。
【0017】
選択的に、前記第一読み取り要求は、先読みトリガ条件を満たす読み取り要求であり、前記先読みトリガ条件は、以下の条件、すなわち、
前記記憶装置が前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
前記記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないこととのうちの1つ以上の条件を含む。
【0018】
選択的に、前記第一読み取り要求は、先読みトリガ条件を満たす読み取り要求であり、前記先読みトリガ条件は、以下の条件、すなわち、
前記記憶装置が前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
前記記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないことと、
前記第一読み取り要求によって要求される前記読み取り対象データに対応するファイルセグメントが、先行する先読みの間の前記所定数の未読み取りファイルセグメントを除く未読み取りファイルセグメントであることとのうちの1つ以上の条件を含む。
【0019】
選択的に、前記方法は、
前記記憶装置により、前記クライアントによって送信される第二読み取り要求を受信するステップであって、前記第二読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、ステップと、
前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取るステップと、
前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取るステップとをさらに有する。
【0020】
第二の態様によれば、本発明の一実施形態は、ファイル記憶装置を提供し、前記記憶装置は、ファイルを格納するように構成され、前記記憶装置は、第一記憶媒体と、キャッシュとを含み、前記キャッシュのアクセス速度は、前記第一記憶媒体のアクセス速度よりも速く、前記第一記憶媒体は、複数の記憶コンテナを有し、前記ファイルは、複数のファイルセグメントを含む。前記記憶装置は、
クライアントによって送信される第一読み取り要求を受信するように構成された受信モジュールであって、前記第一読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、受信モジュールと、
前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取るように構成された読み取りモジュールと、
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納するように構成された先読みモジュールであって、先読みされるコンテナが前記ファイルの少なくとも1つの未読み取りファイルセグメントを含む、先読みモジュールとを含む。
【0021】
選択的に、前記先読みモジュールは、
前記第一記憶媒体から、かつ所定数の未読み取りファイルセグメントが位置するコンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するようにさらに構成される。
【0022】
選択的に、前記先読みモジュールは、
前記所定数の未読み取りファイルセグメントから、未読み取りファイルセグメントの数が前記閾値を超えないコンテナ内の未読み取りファイルセグメントを選択し、選択された未読み取りファイルセグメントを先読みし、先読みされた未読み取りファイルセグメントを前記キャッシュ内に格納するようにさらに構成される。
【0023】
選択的に、前記先読みモジュールは、
第一アドレスポインタを取得するように構成された第一取得ユニットであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第一取得ユニットと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するように構成された第二取得ユニットと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内で、前記所定数のアドレスポインタが当該コンテナの各々を指し示す回数を統計収集するように構成された統計収集ユニットと、
統計収集によって取得された前記回数が前記閾値を超えるか否かを判定し、統計収集によって取得された前記回数が前記閾値を超える場合に、前記回数が前記閾値を超えるコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するように構成された第一先読みユニットとを含む。
【0024】
選択的に、前記先読みモジュールは、
前記第一記憶媒体から、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するようにさらに構成される。
【0025】
選択的に、前記先読みモジュールは、
第一アドレスポインタを取得するように構成された第三取得ユニットであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第三取得ユニットと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するように構成された第四取得ユニットと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するように構成された第二先読みユニットとを含む。
【0026】
選択的に、前記先読みモジュールは、
所定数の未読み取りファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記第一記憶媒体から、前記所定数のファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するようにさらに構成される。
【0027】
選択的に、前記先読みモジュールは、
第一アドレスポインタを取得するように構成された第五取得ユニットであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第五取得ユニットと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するように構成された第六取得ユニットと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記取得されたアドレスポインタが指し示す前記ファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みするように構成された第三先読みユニットとを含む。
【0028】
選択的に、前記第六取得ユニットは、
前記ファイルの前記アドレスポインタテーブル内で、前記第一アドレスポインタを開始ポインタとして用いて、前記第一アドレスポインタに続くすべてのアドレスポインタの数が所定数を超えるか否かを判定し、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超える場合に、前記第一アドレスポインタに続くすべてのアドレスポインタを取得し、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超えない場合に、前記所定数のアドレスポインタを取得するようにさらに構成される。
【0029】
選択的に、前記所定数の未読み取りファイルセグメントは、前記ファイル内で連続的であり、前記所定数の未読み取りファイルセグメントは、前記ファイル内の前記読み取り対象データに対応するファイルセグメントに隣接している。
【0030】
選択的に、前記受信モジュールによって受信される前記第一読み取り要求は、先読みトリガ条件を満たす読み取り要求であり、前記先読みトリガ条件は、以下の条件、すなわち、
前記受信モジュールが前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
前記記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないこととのうちの1つ以上の条件を含む。
【0031】
選択的に、前記受信モジュールによって受信される前記第一読み取り要求は、先読みトリガ条件を満たす読み取り要求であり、前記先読みトリガ条件は、以下の条件、すなわち、
前記受信モジュールが前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
前記記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないことと、
前記第一読み取り要求によって要求される前記読み取り対象データに対応するファイルセグメントが、先行する先読みの間の前記所定数の未読み取りファイルセグメントを除く未読み取りファイルセグメントであることとのうちの1つ以上の条件を含む。
【0032】
選択的に、前記読み取りモジュールは、
前記クライアントによって送信される第二読み取り要求を受信するようにさらに構成され、前記第二読み取り要求によって要求される読み取り対象データは、前記ファイルの一部分であり、
前記先読みモジュールは、
前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取るようにさらに構成される。
【0033】
第三の態様によれば、本発明の一実施形態は、ファイル記憶装置を提供し、前記記憶装置は、ファイルを格納するように構成され、前記記憶装置は、第一記憶媒体と、キャッシュとを含む。前記キャッシュのアクセス速度は、前記第一記憶媒体のアクセス速度よりも速く、前記第一記憶媒体は、複数の記憶コンテナを有し、前記ファイルは、複数のファイルセグメントを含む。前記記憶装置は、プロセッサをさらに含み、前記プロセッサは、
クライアントによって送信される第一読み取り要求を受信する手順であって、前記第一読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、手順と、
前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取る手順と、
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する手順であって、先読みされるコンテナが前記ファイルの少なくとも1つの未読み取りファイルセグメントを含む、手順とを実行するように構成される。
【0034】
選択的に、前記プロセッサは、
前記第一記憶媒体から、かつ所定数の未読み取りファイルセグメントが位置するコンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納する手順を実行するようにさらに構成される。
【0035】
選択的に、前記プロセッサは、
前記所定数の未読み取りファイルセグメントから、未読み取りファイルセグメントの数が前記閾値を超えないコンテナ内の未読み取りファイルセグメントを選択し、選択された未読み取りファイルセグメントを先読みし、先読みされた未読み取りファイルセグメントを前記キャッシュ内に格納する手順を実行するようにさらに構成される。
【0036】
選択的に、前記プロセッサは、
第一アドレスポインタを取得する手順であって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、手順と、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得する手順と、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内で、前記所定数のアドレスポインタが当該コンテナの各々を指し示す回数を統計収集する手順と、
統計収集によって取得された前記回数が前記閾値を超えるか否かを判定し、統計収集によって取得された前記回数が前記閾値を超える場合に、前記回数が前記閾値を超えるコンテナ内のデータを先読みする手順とを実行するようにさらに構成される。
【0037】
選択的に、前記プロセッサは、
前記第一記憶媒体から、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納する手順を実行するようにさらに構成される。
【0038】
選択的に、前記プロセッサは、
第一アドレスポインタを取得する手順であって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、手順と、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得する手順と、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内のデータを先読みする手順とを実行するようにさらに構成される。
【0039】
選択的に、前記プロセッサは、
所定数の未読み取りファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記第一記憶媒体から、前記所定数のファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納する手順を実行するようにさらに構成される。
【0040】
選択的に、前記プロセッサは、
第一アドレスポインタを取得する手順であって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、手順と、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得する手順と、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記取得されたアドレスポインタが指し示す前記ファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みする手順とを実行するようにさらに構成される。
【0041】
選択的に、前記プロセッサは、
前記ファイルの前記アドレスポインタテーブル内で、前記第一アドレスポインタを開始ポインタとして用いて、前記第一アドレスポインタに続くすべてのアドレスポインタの数が所定数を超えるか否かを判定する手順と、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超える場合に、前記第一アドレスポインタに続くすべてのアドレスポインタを取得する手順と、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超えない場合に、前記所定数のアドレスポインタを取得する手順とを実行するようにさらに構成される。
【0042】
選択的に、前記所定数の未読み取りファイルセグメントは、前記ファイル内で連続的であり、前記所定数の未読み取りファイルセグメントは、前記ファイル内の前記読み取り対象データに対応するファイルセグメントに隣接している。
【0043】
選択的に、前記プロセスによって受信される前記第一読み取り要求は、先読みトリガ条件を満たす読み取り要求であり、前記先読みトリガ条件は、以下の条件、すなわち、
前記記憶装置が前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
前記記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないこととのうちの1つ以上の条件を含む。
【0044】
選択的に、前記プロセッサによって受信される第一読み取り要求は、先読みトリガ条件を満たす読み取り要求であり、前記先読みトリガ条件は、以下の条件、すなわち、
前記記憶装置が前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
前記記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないことと、
前記第一読み取り要求によって要求される前記読み取り対象データに対応するファイルセグメントが、先行する先読みの間の前記所定数の未読み取りファイルセグメントを除く未読み取りファイルセグメントであることとのうちの1つ以上の条件を含む。
【0045】
選択的に、前記プロセッサは、
前記クライアントによって送信される第二読み取り要求を受信する手順であって、前記第二読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、手順と、
前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取る手順を実行するようにさらに構成される。
【0046】
第四の態様によれば、本発明の一実施形態は、ファイル読み取りシステムを提供する。前記システムは、ユーザ機器と、ファイル記憶装置とを含み、前記ユーザ機器は、ユーザから元ファイル復元要求を受信し、前記元ファイル復元要求にしたがって、複数の読み取り要求を生成し、前記読み取り要求を前記記憶装置に送信するように構成され、前記記憶装置は、上記の記憶装置である。
【発明の効果】
【0047】
本発明の実施態様において提供される技術的解決法を使用することにより、クライアントによって送信される第一読み取り要求を受信すると、記憶装置は、第一記憶媒体から複数のコンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータをキャッシュに格納する。ここで、先読みされるコンテナは、ファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後に送信されたファイルの読み取り要求を受信すると、記憶装置は、キャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータ読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施態様におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは、記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施態様において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【0048】
本発明の実施形態における技術的解決法をより明確に説明するため、実施形態を説明するために必要とされる添付図面を以下に簡単に紹介する。当然ながら、以下の説明の添付図面は本発明のいくつかの実施形態を示すに過ぎず、当業者は、創造的労力を伴わずに、これらの添付図面から別の図面を導き出すことができよう。
【発明を実施するための形態】
【0050】
本発明の目的、技術的解決法、および利点をより明確にするため、添付図面を参照して本発明の実施形態を、以下にさらに記載する。
【0051】
本発明の一実施形態は、記憶装置に格納されたファイルの読み取りに適用可能であり、具体的には、記憶装置に格納された重複排除ファイルの読み取りに適用可能な、ファイル読み取り方法を提供する。記憶装置は一般的に、第一記憶媒体(第一記憶媒体は、これに限定されるものではないが、ディスク、フラッシュメモリ、およびコンパクトディスク(Compact Disk、略して、CD)を含む)、およびキャッシュを含み、キャッシュのアクセス速度は第一記憶媒体よりも速い。第一記憶媒体は複数のコンテナ(container)を有し、各コンテナは複数のチャン
クに分割される。1つのファイルは複数のファイルセグメントに分割されてもよく、各ファイルセグメントのデータ量は互いに異なってもよく、1つのチャンクは1つのファイルセグメントを格納する。1つのコンテナに含まれる1つのファイルのファイルセグメントの数は、コンテナの参照カウント(reference count)とも称される。たとえば、ファイルAが100個のファイルセグメントで形成されていると仮定すると、100個のファイルセグメントは第一記憶媒体内の3つのコンテナに分散されて、3つのコンテナ内のファイルAのファイルセグメントの数はそれぞれ20、30、および50であり、3つのコンテナの参照カウントはそれぞれ20、30、および50となる。なお、これら3つのコンテナは、ファイルAのファイルセグメントに加えて別のファイルのファイルセグメントをさらに含んでもよいことに留意されたい。本発明のこの実施形態において、アクセス速度は、記憶媒体からデータを読み取る速度であり、記憶媒体は、キャッシュまたは第一記憶媒体であってもよい。
【0052】
本発明のこの実施形態において、記憶装置によって使用されるファイルシステムは、これに限定されるものではないが、Linux(登録商標)ファイルシステムまたはWindows(登録商標)ファイルシステムを含む。本発明の実施形態において提供される技術的解決法をより良く理解するために、本発明の実施形態は、一例としてLinuxファイルシステムで重複排除ファイルを使用することによる技術的解決法について、詳細な説明を提供する。
【0053】
まず、Linuxファイルシステムにおける重複排除ファイルの記憶構造が説明される。重複排除ファイルは2つの部分、すなわちインデックスノード(index node,inode)およびコンテナを含む。inodeは、ファイルシステム内に保持されるインデックスノードテーブル(index node table,inode table)内に格納されている。一旦重複排除ファイルが作成されると、ファイルシステムは1つのinodeを重複排除ファイルに割り当てる。inodeは、重複排除ファイルのメタ情報(meta-information)(たとえば、ファイルのサイズおよび作成時間)を記録するために使用される。各コンテナは指定サイズ(たとえば、9M
B)の記憶領域であり、各コンテナは複数のチャンクに分割されている。1つのチャンクのサイズは、4K
Bから12K
Bであってもよい。
【0054】
図1を参照すると、inodeはコンテナに関連付けられている。メタ情報は、重複排除ファイルのファイルセグメントを指し示すためのいくつかのアドレスポインタeptrを含む。eptrは一般的に、2つのタイプ、すなわち直接型および間接型を含む。直接型eptrはチャンクを指し示し、間接型eptrは別のeptrを指し示す。1つの直接型eptrは2つのパラメータを決定する。1つはチャンクのシリアル番号であり、もう1つはコンテナのシリアル番号である。重複排除ファイルが増加するにつれて、ファイルセグメントも大規模に成長し、さらに多くの重複排除ファイルが、先行する重複排除ファイルのファイルセグメントを参照してもよい。この場合、現在記憶されている重複排除ファイル内のいくつかのeptrは、先に格納された重複排除ファイルのeptrを指し示してもよい。
【0055】
なお、1つのチャンクは1つのファイルセグメントを格納するので、eptrが指し示すファイルセグメントが、本発明のこの実施形態においてeptrが指し示すチャンク内に格納されたファイルセグメントを指すことに留意されたい。
【0056】
第一実施形態
本発明のこの実施形態は、記憶装置に格納されたファイルの読み取りに適用可能なファイル読み取り方法を提供する。
図2を参照すると、方法の手順は、以下のステップを含む。
【0057】
ステップ101:記憶装置は、クライアント(Client)によって送信された第一読み取り要求を受信する。ここで第一読み取り要求によって要求されたデータは読み取り対象データと称され、読み取り対象データはファイルの一部分である。ファイルの読み取りは、複数回または一回で完了することが可能である。ファイルの読み取りが複数回で完了すると、読み取り要求はファイルの一部を読み取る要求のために一度で送信され、第一読み取り要求はこのような要求の1つである。
【0058】
記憶装置は、第一記憶媒体およびキャッシュを含む。キャッシュのアクセス速度は第一記憶媒体よりも速い。第一記憶媒体は、複数のコンテナを有する。ファイルは複数のファイルセグメントを含み、ファイルを構成するファイルセグメントは、すべて第一記憶媒体内に格納されるか、またはファイルセグメントの一部が第一記憶媒体内に格納され、かつファイルセグメントの残部がキャッシュ内に格納されるか、またはすべてキャッシュ内に格納される。
【0059】
具体的には、第一記憶媒体は、これに限定されるものではないが、磁気ディスク、フラッシュメモリ、またはCDを含む。キャッシュは、これに限定されるものではないが、ランダムアクセスメモリ(Random Access Memory、略して、RAM)または読み取り専用メモリ(Read Only Memory、略して、ROM)を含む。
【0060】
具体的には、第一読み取り要求は、ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含んでもよい。読み取り対象データのデータ量はファイルの総データ量の一部分であり、用語「一部分(a part)」は、ファイル全体を示しても示さなくてもよい。
【0061】
具体的には、読み取り要求によって要求された読み取り対象データは、第一読み取り要求における読み取り対象データの開始位置に対応するデータから始まる所定量のデータであり、指定量のデータは読み取り要求によって要求された読み取り対象データのデータ量に等しい。指定量は、たとえば64K Byteまたは128K Byteのデータ量であってもよい。
【0062】
ステップ102:読み取り対象データであってキャッシュ内に位置するデータをキャッシュから読み取り、読み取り対象データであってキャッシュ内に位置していないデータを第一記憶媒体から読み取る。
【0063】
この実施形態において、キャッシュ内のデータは第一記憶媒体内のデータの前に読み取られてもよい。すべての読み取り対象データがキャッシュ内にある場合、第一記憶媒体から読み取られるデータの量は0である。そしてキャッシュ内に読み取り対象データが存在しない場合、キャッシュから読み取られるデータの量は0である。
【0064】
ステップ103:複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。先読みされたデータは、コンテナの形式でキャッシュ内に格納されてもよい。
【0065】
具体的には、未読み取りファイルセグメントは、現在の読み取り要求によって要求されている読み取り対象データに対応するファイルセグメント、および現在の読み取り要求の前に読み取られたファイルセグメントを除く、ファイルのファイルセグメントである。
【0066】
本発明のこの実施形態において提供される方法を用いることによって、クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納し、先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは、記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【0067】
第二実施形態
この実施形態は、一例として重複排除ファイルを使用することによって、本発明によるファイル読み取り方法を詳細に説明する。まず、本発明のこの実施形態の適用可能なシナリオを、以下に簡単に説明するが、これに限定されるものではない。それどころか、本発明のこの実施形態は、重複排除ファイルが読み取られる必要のある、いずれのシナリオにも適用可能である。重複排除ファイルは、一般的にバックアップのために使用され、特定の元ファイルのバックアップファイルである。重複排除ファイルの内容は、対応する元ファイルの内容と少なくとも実質的に同じである。元ファイルのバックアップの間に、重複排除ファイルとバックアップ元ファイルとの間の対応関係が確立される。
【0068】
元ファイルが損傷し、ユーザは元ファイルを復元するためにバックアップ重複排除ファイルを読み取ろうとしていると仮定する。この場合、ユーザは、マウスクリックまたはスクリーンタッチのようにインタラクティブな方法を用いることによってクライアントのユーザインターフェース(たとえば、特定のバックアップアプリケーション)を起動し、ユーザインターフェースの案内の下で元ファイルの復元の要求をクライアントに送信し、復元要求は元ファイルの名前を含む。クライアントは、元ファイルの復元の要求にしたがって、元ファイルに対応する重複排除ファイルのデータを記憶装置(たとえば、サーバ)から取得する。具体的には、クライアントは、モバイルコンピュータなどのユーザ装置上に実装されてもよい。クライアントはまた、サーバなどの記憶装置上に実装されてもよい。
【0069】
このシナリオにおいて、本発明の一実施形態は、ファイル読み取り方法を提供する。
図3を参照すると、方法の手順は、以下のステップを含む。
【0070】
ステップ201:クライアントは、ユーザから元ファイル復元要求を受信し、元ファイル復元要求にしたがって複数の読み取り要求を生成する。
【0071】
具体的には、読み取り要求は、重複排除ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含む。読み取り要求によって要求された読み取り対象データのデータ量は、重複排除ファイルの総データ量の一部分である。具体的な実現において、読み取り対象データの開始位置は、ファイルのオフセットによって示されてもよい。これらの読み取り要求は、すべて同じ重複排除ファイルを対象としている。すなわち、これらの読み取り要求内の重複排除ファイルの名前は同じである。
【0072】
復元要求を受信すると、クライアントは、元ファイルと重複排除ファイルとの間の(バックアッププロセスの間に確立された)対応関係において元ファイルに対応する重複排除ファイルを検索し、見つかった重複排除ファイルのサイズを取得する。次に、複数の読み取り要求が生成される。複数の読み取り要求の各々によって要求される読み取り対象データのデータ量は、実際の条件にしたがってユーザによって構成されてもよく、通常はファイル読み取りプロトコルによって裏付けられる最大データ量を超過しない。
【0073】
上述のように、1つの重複排除ファイルは、複数のファイルセグメントに分割されてもよい。重複排除ファイルに含まれるデータには特定の順序があるので、重複排除ファイルを分割することによって取得された複数のファイルセグメントは連続的である。
【0074】
1つの読み取り要求によって要求された読み取り対象データは、1つ以上のファイルセグメントを含んでもよい。具体的には、1つの読み取り要求によって要求された読み取り対象データは少なくとも1つのファイルセグメントに含まれるすべてのデータであってもよく、あるいは1つの読み取り要求によって要求された読み取り対象データは、少なくとも1つのファイルセグメントに含まれるすべてのデータおよび少なくとも1つのファイルセグメントに含まれるデータの一部分であってもよい。1つの読み取り要求によって要求された読み取り対象データに対応するファイルセグメントの数が2を超える場合、この2つより多くのファイルセグメントは連続的である。たとえば、1つの重複排除ファイルはF個のファイルセグメントに分割され、1つの読み取り要求によって要求された読み取り対象データに対応するファイルセグメントは、ファイルセグメントiからファイルセグメントi+jまでであると仮定される。読み取り要求によって要求された読み取り対象データは、ファイルセグメントiからファイルセグメントi+jまでの全データ、またはファイルセグメントiの広範のデータ、およびファイルセグメントi+1からファイルセグメントi+jまでの全データ、またはファイルセグメントi+jの前半のデータ、およびファイルセグメントi+1からファイルセグメントi+j−1までの全データ、または、ファイルセグメントiの後半のデータ、およびファイルセグメントi+jの前半のデータ、およびファイルセグメントi+1からファイルセグメントi+j−1までの全データであってもよい。ここでiおよびjは自然数であり、j>iである。本発明のこの実施形態における用語「連続的(contiguous)」は、ファイル内のファイルセグメントの関係性を意味する。すなわち、1つのファイルが複数のファイルセグメントに分割されてもよく、これらのファイルセグメントには順序がある。ファイルは、連続した順序にしたがってこれらのファイルセグメントを接合することによって、復元されることが可能である。
【0075】
ステップ202:クライアントは読み取り要求を記憶装置に送信し、読み取り要求によって要求された読み取り対象データはファイルの一部分である。
【0076】
具体的には、1つの重複排除ファイルの読み取りプロセスは、複数の読み取り要求を生成することによって複数の読み取りプロセスに分割されてもよく、各読み取りプロセスの間にデータの一部が重複排除ファイルから読み取られ、すべての読み取り要求によって要求されたデータは一緒になって、元ファイルのデータを構成する。クライアントは、各読み取りプロセスの間にファイル読み取りプロトコルを使用することによって、読み取り要求を記憶装置に送信する。
【0077】
本発明のこの実施形態において、クライアントが重複排除ファイルの読み取りプロセスをZ個の読み取りプロセスに分割すると仮定すると、Z個の読み取りプロセスの間、記憶装置に送信される読み取り要求は、連続的に第一読み取り要求、第二読み取り要求、Z−1番目の要求、およびZ番目の読み取り要求である。
【0078】
ステップ203:記憶装置はクライアントによって送信された読み取り要求を受信し、読み取り要求によって要求された読み取り対象データはファイルの一部分である。
【0079】
ステップ204:記憶装置は、読み取り対象データであってキャッシュ内に位置するデータをキャッシュから読み取り、読み取り対象データであってキャッシュ内に位置していないデータを第一記憶媒体から読み取る。
【0080】
記憶装置が、読み取り対象データであってキャッシュ内に位置するデータをキャッシュから読み取り、読み取り対象データであってキャッシュ内に位置していないデータを第一記憶媒体から読み取るということは、読み取り要求によって要求されたすべての読み取り対象データがキャッシュ内に存在する場合には、記憶装置はキャッシュからすべての読み取り対象データを読み取ること、読み取り対象データの一部がキャッシュ内に位置しており、読み取り対象データのその他の部分がキャッシュ内に存在していない場合には、記憶装置は、読み取り対象データの一部をキャッシュから読み取り、読み取り対象データのその他の部分を第一記憶媒体から読み取ること、および、キャッシュ内に読み取り対象データがまったくない場合には、記憶装置はすべての読み取り対象データを第一記憶媒体から読み取ることを含んでもよい。たとえば、ステップ203において受信された読み取り要求が重複排除ファイルの第一読み取り要求である場合、eptrに対応するファイルセグメントはキャッシュ内に存在しない。この場合、記憶装置は、すべての読み取り対象データに対応するeptrが指し示すファイルセグメントを第一記憶媒体から読み取り、読み取り対象データをクライアントに返す。ステップ203において受信された読み取り要求が重複排除ファイルの第一読み取り要求ではない場合、現在の読み取り要求によって要求された読み取り対象データの一部またはすべてがキャッシュ内に存在する可能性がある。
【0081】
記憶装置がキャッシュから読み取り対象データ(のすべてまたは一部)を読み取るということは、以下を含む。第一に、記憶装置が読み取り対象データのすべてに対応するeptrを取得する。具体的には、記憶装置は、重複排除ファイルの名前にしたがってinode table内の重複排除ファイルのinodeに問い合わせをする。記憶装置は、読み取り対象データの位置と重複排除ファイルのinodeによって示されるeptrテーブル内のeptrとの間の対応関係にしたがって、読み取り対象データの開始位置に対応するeptrから始まる所定数のeptrを、順序通りに取得する。eptrテーブル内のeptrの順序はファイル内のファイルセグメントの順序と同じであり、eptrの数はファイルセグメントの数と同じであり、eptrはファイルセグメントと一対一の対応関係にある。第二に、記憶装置は、eptrとキャッシュ内に格納されたファイルセグメントとの間で事前に確立された対応関係において、取得eptrに対応するファイルセグメントが存在するか否かを問い合わせる。すべてのeptrに対応するファイルセグメントがキャッシュ内に存在する場合、記憶装置はキャッシュからすべての読み取り対象データを読み取る。そしてeptrの一部に対応するファイルセグメントがキャッシュ内に存在する場合には、記憶装置はキャッシュから読み取り対象データの一部を読み取る。なお、eptrとキャッシュ内に格納されたファイルセグメントとの間の対応関係を確立するプロセスの詳細については、ステップ208を参照することに留意すべきである。
【0082】
ステップ205:読み取り要求が第一読み取り要求であるときは、ステップ206を実行し、読み取り要求が第二読み取り要求であるときは、手順を終了する。
【0083】
第一読み取り要求は、先読みトリガ条件を満たす読み取り要求であり、第二読み取り要求は、第一読み取り要求に加えて重複排除ファイルも対象とする読み取り要求である。すなわち第一読み取り要求は先読みプロセスを起動してもよいが(詳細についてはステップ207参照)、しかし第二読み取り要求は先読みプロセスを起動しなくてもよい。
【0084】
具体的には、先読みトリガ条件の内容は、この実施形態の以下の部分に記載される。
【0085】
ステップ206:記憶装置は、読み取られた読み取り対象データ内の最終ファイルセグメントがファイルの最終ファイルセグメントであるか否かを判定する。読み取られた読み取り対象データ内の最終ファイルセグメントがファイルの最終ファイルセグメントである場合には、手順を終了する。そして読み取られた読み取り対象データ内の最終ファイルセグメントがファイルの最終ファイルセグメントではない場合には、ステップ207を実行する。
【0086】
具体的には、読み取られた読み取り対象データ内の最終ファイルセグメントが重複排除ファイルの最終ファイルセグメントであるか否かを記憶装置が判定するということは、第一に、第一eptrが読み取られた読み取り対象データ内の最終ファイルセグメントを指し示す、第一eptrを取得すること、第二に、重複排除ファイルのinodeによって示されるeptrテーブル内の最終eptrを取得すること、および最後に、第一eptrと最終eptrとがeptrテーブル内にあるか否かを判定することを含む。2つのeptrが同じである場合、記憶装置は、読み取られた読み取り対象データ内の最終ファイルセグメントが重複排除ファイルの最終ファイルセグメントであると判定する。すなわち、重複排除ファイルが読み取られ、手順が終了する。2つの部分が異なる場合、ステップ207が実行される。
【0087】
ステップ207:複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。
【0088】
ステップ207は、以下を含んでもよい。記憶装置は、第一記憶媒体および所定数の未読み取りファイルセグメントが位置するコンテナから、所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータをキャッシュ内に格納する。閾値が50である場合、このステップにおいて、ファイルセグメントの所定数が50を超えるコンテナが、キャッシュ内に先読みされる。
【0089】
所定数の未読み取りファイルセグメントは、ファイル内で連続的であり、所定数の未読み取りファイルセグメントは、ファイル内の読み取り対象データに対応するファイルセグメントに隣接している。所定数の未読み取りファイルセグメントは、残りの未読み取りファイルセグメントであってもよく、または残りの未読み取りファイルセグメントの一部分であってもよい。所定数の未読み取りファイルセグメントが未読み取りファイルセグメントのすべての一部分であるとき、未読み取りファイルセグメントは、たとえば1000個の未読み取りファイルセグメント、または10G Bytesの未読み取りファイルセグメントなど、数量またはデータ量によって示されてもよい。
【0090】
ステップ207は、以下のステップを含んでもよい。
【0091】
ステップ2071:第一eptrを取得する。ここで第一eptrは読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す。
【0092】
図4を参照すると、取得された第一eptrはNであると仮定する。
【0093】
ステップ2072:第一eptrに続く所定数のeptrを、ファイルのeptrテーブルから取得する。
【0094】
具体的には、eptrは、その中に重複排除ファイルのファイルセグメントが位置する、第一記憶媒体のコンテナ内のチャンクを表す。すなわち、eptrがわかる場合、ファイルセグメントの記憶アドレスが決定される。
【0095】
ステップ2072は、重複排除ファイルのeptrテーブル内で、開始ポインタとして第一eptrを取り、第一eptrに続くすべてのeptrの数が所定数を超えるか否かを判定するステップと、第一eptrに続くすべてのeptrの数が所定数を超える場合に、第一eptrに続くすべてのeptrを取得するステップと、第一eptrに続くすべてのeptrの数が所定数を超えない場合に、所定数のeptrを取得するステップとを含む。
【0096】
具体的には、eptrテーブルはinodeに関連付けられている。eptrテーブルは、ファイルシステムによって重複排除ファイルに割り当てられる。eptrテーブルは、ファイルシステムによって指定された記憶領域内に格納されている。eptrテーブル内の各eptrは1つのファイルセグメントを指し示し、ファイルセグメントは連続的であるので、eptrテーブル内のeptrは連続的であり、eptrの順序は、重複排除ファイル内のファイルセグメントの順序と一致する。
【0097】
所定数は、重複排除ファイルの全未読み取りファイルセグメントの総数であってもよく、重複排除ファイルの未読み取りファイルセグメントの総数の一部分であってもよく、または、所定数は、たとえば50M Bytesなど、予め設定された固定値であってもよい。所定数のeptrが指し示すファイルセグメントのデータ量は、重複排除ファイルから事前に読み取られたデータの量以上であってもよく、これにより、キャッシュ内に格納されたデータの量が重複排除ファイルの次の読み取り要求によって要求されるデータの量を満たすことを保証する。ファイルセグメントのサイズは一般的に4K Bytesから12K Bytesであり、1つのファイルセグメントの平均サイズは8K Bytesであり、すなわち1つのeptrが指し示すデータの平均的な量は8K Bytesである。具体的には、読み取りデータ内の最終ファイルセグメントを指し示すeptrが取得された後、eptrは第一eptrとして使用され、第一eptrは開始ポインタとして使用され、第一eptrに続く所定数のeptrが取得される。
図4を参照すると、すべての取得eptrはN、N+1、N+2、...、N+xと仮定されている。
【0098】
ステップ2073:取得eptrが指し示すファイルセグメントが位置するコンテナ内で、所定数のeptrがコンテナの各々を指し示す回数の統計、すなわち所定数のファイルセグメントがコンテナ内に格納された回数を、収集する。
【0099】
具体的には、各コンテナは9M Bytesであってもよい。可変長チャンクを実現するために、各ファイルセグメントのサイズは4K
Bから12K
Bの間である。すなわち、重複排除ファイルに関連して、各直接型eptrが指し示すファイルセグメントのサイズは平均的に8Kである。同じコンテナ内にあるファイルセグメントを指し示すeptrの数が約9M/8Kであるとき、基本的にコンテナ内の全ファイルセグメントが重複排除ファイルによって参照される。しかしながら、バックアップファイルセグメントが徐々に増加するにつれて、いくつかのコンテナが重複排除ファイルによって参照される回数は減少し、すなわち小数のeptrのみがこれらのコンテナを指し示す。たとえば、順序番号M’+1のコンテナ内に位置するファイルセグメントを指し示すeptrが1つしかない、すなわちコンテナM’+1をeptrが指し示す回数が1であると、想定される。
【0100】
ステップ2074:統計収集によって取得された回数が閾値を超えるか否かを判定し、統計収集によって取得された回数が閾値を超える場合には、回数が閾値を超えるコンテナ内のデータを先読みする。
【0101】
所定の閾値は、たとえば5など、予め設定された固定値である。所定数のeptrがコンテナを指し示す回数が5を超えるとき、コンテナ内のデータは先読みされる。
【0102】
回数が閾値を超えるコンテナ内のデータを先読みするステップは、記憶された所定数のファイルセグメント内の未読み取りファイルセグメントの数の降順で、所定数が閾値を超えるコンテナ内のデータを先読みするステップを含む。
【0103】
eptrがコンテナを指し示す回数が所定の閾値よりも少ないとき、コンテナ内の未読み取りファイルセグメントは個別に読み取られてからキャッシュ内に格納されてもよく、これはコンテナ全体の中の全ファイルセグメントを読み取るのに比べて、キャッシュ内により大きい記憶領域を確保する。
【0104】
ステップ2075:先読みされたデータをキャッシュ内に格納する。
【0105】
ステップ2076:未読み取りファイルセグメントの数が閾値を超えないコンテナ内の未読み取りファイルセグメントを所定数の未読み取りファイルセグメントから選択し、選択された未読み取りファイルセグメントを先読みして、先読みされた未読み取りファイルセグメントをキャッシュ内に格納する。
【0106】
ステップ208:eptrとキャッシュ内に格納されたファイルセグメントとの間の対応関係を確立する。
【0107】
加えて、先読みされたデータがキャッシュ内に格納された後、ステップ2072で取得された所定数のeptrとキャッシュ内のファイルセグメントとの間の対応関係が確立される。対応関係は、リストの形式で記憶されてもよい。対応関係は、eptrを使用することによって記憶装置がキャッシュ内のデータを取得できるようにする。
【0108】
ステップ203からステップ208は、重複排除ファイル全体が読み取られてクライアントに返される前、繰り返し実行されてもよい。重複排除ファイルはクライアントによって要求されるファイルであり、元ファイルと同じである。この実施形態において、上記のステップは、重複排除ファイル全体がクライアントに返されるように、Z−1回だけ繰り返される必要がある。
【0109】
この実施形態において、先読みトリガ条件は、以下の条件、すなわち、第一に、記憶装置が読み取り要求を受信する時点は所定の時間枠の範囲内であること、第二に、読み取り要求によって要求された読み取り対象データはキャッシュ内に存在しないか、または読み取り要求によって要求された読み取り対象データの一部がキャッシュ内に存在しないこと、第三に、記憶装置が読み取り要求によって要求された読み取り対象データを読み取った後、キャッシュ内のファイルに関する未読み取りファイルセグメントの数は予め設定された数よりも少ないこと、そして第四に、読み取り要求によって要求された読み取り対象データに対応するファイルセグメントは、先行する先読みの間の所定数の未読み取りファイルセグメント以外の未読み取りファイルセグメントであることのうちの1つ以上を含んでもよい。
【0110】
現在採用されている先読みトリガ条件が上述のような第二トリガ条件であると仮定すると、このステップにおいて、読み取り要求が第一読み取り要求であるとき、読み取り要求によって要求された読み取り対象データはキャッシュ内に存在しない。この場合、読み取り要求は先読みトリガ条件を満たし、読み取り要求は第一読み取り要求である。
【0111】
現在採用されている先読みトリガ条件が上述のような第二および第三トリガ条件を含むと仮定すると、第三トリガ条件に関して、重複排除ファイルの特定の先読みプロセスが完了した後、重複排除ファイルの後続の読み取り要求が増加するにつれて、キャッシュ内のさらに多くのデータが読み取られる。したがってデータ量閾値は、キャッシュ内に格納された未読み取りファイルセグメントのために設定されてもよい。未読み取りファイルセグメントのデータ量が閾値よりも少ないとき、次回分の先読み動作が実行される。
【0112】
キャッシュ内の未読み取りファイルセグメントのデータ量を取得するステップは、まず、キャッシュから読み取り対象データを読み取って、読み取りファイルセグメントを標識するステップと、その後キャッシュ内の未標識ファイルセグメントのデータ量、すなわちキャッシュ内の未読み取りファイルセグメントのデータ量を統計収集するステップとを含んでもよい。
【0113】
第四トリガ条件に関しては、第二実施形態のステップ207に記載された先読みプロセスを参照されたい。現在の読み取り要求によって要求された読み取り対象データに対応するファイルセグメントが現在の読み取り要求の先行する先読みプロセスの間に決定された所定数の未読み取りファイルセグメントを含む場合、現在の読み取り要求によって要求された読み取り対象データはすでに読み取られているかも知れない。したがって、先読みプロセスを再度起動する必要はない。反対に、現在の読み取り要求によって要求された読み取り対象データに対応するファイルセグメントが現在の読み取り要求の先行する先読みプロセスの間に決定された所定数の未読み取りファイルセグメント以外の未読み取りファイルセグメントである場合には、現在の読み取り要求によって要求された読み取り対象データはまだ読み取られていない。したがって、現在の読み取り要求に続く読み取り要求に応えて先読みされたデータがキャッシュから読み取られるように、先読みプロセスが起動されてもよく、これにより、読み取り性能を向上させる。
【0114】
本発明のこの実施形態において提供された方法は、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは、記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【0115】
加えて、本発明のこの実施形態において、コンテナのうちの少なくとも1つから先読みされたデータは、所定数の未読み取りファイルセグメントが位置するコンテナの中でも、所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを含む。たとえば、所定数が280であり、閾値が50であり、280個のファイルセグメントが8つのコンテナ内に個別に配置されている場合、280個のファイルセグメントの中でも、8つのコンテナの中に格納されたファイルセグメントの数は、それぞれ20、25、25、30、30、43、52、および55である。コンテナのうちの少なくとも1つから先読みされたデータは、280個のファイルセグメントの中でも、ファイルセグメントの数がそれぞれ52および55であるコンテナ内のすべてのデータを含む。先読みの前に、所定数の未読み取りファイルセグメントの中でも、コンテナ内に格納されたファイルセグメントの数に対して個別に統計収集が実行される。数が所定の閾値を超えるときにはコンテナが読み取られ、したがってこれは使用されない過剰なデータの読み取りを防止し、第一記憶媒体からデータが読み取られる回数をさらに減少させる。このようにして、ファイル読み取り性能が改善される。
【0116】
第三実施形態
本発明のこの実施形態は、ファイル読み取り方法を提供する。この実施形態は、(1)複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みする方法が異なる点と、(2)先読みトリガ条件が異なる点とにおいて、本発明の第二実施形態とは異なっている。
図5を参照すると、方法の手順は、以下のステップを含む。
【0117】
ステップ301:クライアントは、ユーザから元ファイル復元要求を受信し、元ファイル復元要求にしたがって複数の読み取り要求を生成する。
【0118】
ステップ301は、第二実施形態のステップ201と同じであり、これ以上本明細書には記載されない。
【0119】
ステップ302:クライアントは読み取り要求を記憶装置に送信し、読み取り要求によって要求された読み取り対象データはファイルの一部分である。
【0120】
ステップ302は第二実施形態のステップ202と同じであり、これ以上本明細書には記載されない。
【0121】
ステップ303:記憶装置はクライアントによって送信された読み取り要求を受信し、読み取り要求によって要求された読み取り対象データはファイルの一部分である。
【0122】
ステップ303は第二実施形態のステップ203と同じであり、これ以上本明細書には記載されない。
【0123】
ステップ304:記憶装置は、読み取り対象データであってキャッシュ内に位置するデータをキャッシュから読み取り、読み取り対象データであってキャッシュ内に位置していないデータを第一記憶媒体から読み取る。
【0124】
ステップ304は第二実施形態のステップ204と同じであり、これ以上本明細書には記載されない。
【0125】
ステップ305:読み取り要求が第一読み取り要求であるとき、ステップ306を実行する。そして読み取り要求が第二読み取り要求であるとき、手順を終了する。
【0126】
この実施形態において、先読みトリガ条件は、以下の条件、すなわち、第一に、記憶装置が第一読み取り要求を受信する時間は所定時間枠の範囲内であること、第二に、読み取り要求によって要求された読み取り対象データはキャッシュ内に存在しないか、または読み取り要求によって要求された読み取り対象データの一部がキャッシュ内に存在しないこと、そして第三に、記憶装置が読み取り要求によって要求された読み取り対象データを読み取った後、キャッシュ内の未読み取りファイルセグメントの数は予め設定された数よりも少ないことのうちの1つ以上を含んでもよい。
【0127】
これら3つのトリガ条件は第二実施形態に記載された最初の3つのトリガ条件と同じであり、これらはこれ以上本明細書には記載されない。
【0128】
ステップ306:記憶装置は、すでに読み取られた読み取り対象データ内の最終ファイルセグメントがファイルの最終ファイルセグメントであるか否かを判定する。すでに読み取られた読み取り対象データの最終ファイルセグメントがファイルの最終ファイルセグメントである場合、手順を終了する。そしてすでに読み取られた読み取り対象データの最終ファイルセグメントがファイルの最終ファイルセグメントではない場合には、ステップ307を実行する。
【0129】
ステップ306は第二実施形態のステップ206と同じであり、これ以上本明細書には記載されない。
【0130】
ステップ307:複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。
【0131】
ステップ307は、以下を含んでもよい。記憶装置は、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。所定数の未読み取りファイルセグメントは、ファイル内で連続的であり、所定数の未読み取りファイルセグメントは、ファイル内の読み取り対象データに対応するファイルセグメントに隣接している。用語「ファイル内で連続的(contiguous in file)」とは、ファイルセグメントに順序があることを意味し、ファイルは、順序にしたがってこれらのファイルセグメントを接合することによって、復元されることが可能である。
【0132】
ステップ307は、以下のステップを含んでもよい。
【0133】
ステップ3071:第一eptrを取得する。ここで第一eptrは読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す。
【0134】
ステップ3071は第二実施形態のステップ2071と同じであり、これ以上本明細書には記載されない。
【0135】
ステップ3072:第一eptrに続く所定数のeptrを、ファイルのeptrテーブルから取得する。
【0136】
ステップ3072は第二実施形態のステップ2072と同じであり、これ以上本明細書には記載されない。
【0137】
ステップ3703:取得eptrが指し示すファイルセグメントが位置するコンテナ内のデータを先読みする。
【0138】
具体的には、先に記載されたように、eptrは、重複排除ファイルのファイルセグメントが関連する第一記憶媒体のコンテナ内のチャンクを表す。取得された数のeptrにしたがって、所定数のeptrが指し示すファイルセグメントが位置するコンテナのシリアル番号が取得されてもよく、コンテナ内のデータが読み取られてもよい。
【0139】
ステップ3074:先読みされたデータをキャッシュ内に格納する。
【0140】
ステップ3074は第二実施形態のステップ2075と同じであり、これ以上本明細書には記載されない。
【0141】
ステップ308:eptrとキャッシュ内に格納されたファイルセグメントとの間の対応関係を確立する。
【0142】
ステップ308は第二実施形態のステップ208と同じであり、これ以上本明細書には記載されない。
【0143】
ステップ303からステップ308は、重複排除ファイル全体が読み取られてクライアントに返されるまで、繰り返し実行される。
【0144】
本発明のこの実施形態において提供された方法は、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは、記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【0145】
第四実施形態
本発明のこの実施形態は、ファイル読み取り方法を提供する。この実施形態は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みする方法が異なる点において、本発明の第二実施形態および第三実施形態とは異なっている。
図6を参照すると、方法の手順は以下
のステップを含む。
【0146】
ステップ401:クライアントは、ユーザから元ファイル復元要求を受信し、元ファイル復元要求にしたがって複数の読み取り要求を生成する。読み取り要求の各々によって要求されたデータは元ファイルのデータの一部分であり、複数の読み取り要求によって要求されたデータは一緒になって元ファイルを形成する。
【0147】
ステップ401は第三実施形態のステップ301と同じであり、これ以上本明細書には記載されない。後のステップは、一例として特定の読み取り要求を使用することによって記載される。
【0148】
ステップ402:クライアントは読み取り要求を記憶装置に送信し、読み取り要求によって要求された読み取り対象データはファイルの一部分である。
【0149】
ステップ402は第三実施形態のステップ302と同じであり、これ以上本明細書には記載されない。
【0150】
ステップ403:記憶装置はクライアントによって送信された読み取り要求を受信し、読み取り要求によって要求された読み取り対象データはファイルの一部分である。
【0151】
ステップ403は第三実施形態のステップ303と同じであり、これ以上本明細書には記載されない。
【0152】
ステップ404:記憶装置は、読み取り対象データであってキャッシュ内に位置するデータをキャッシュから読み取り、読み取り対象データであってキャッシュ内に位置していないデータを第一記憶媒体から読み取る。
【0153】
ステップ404は第三実施形態のステップ304と同じであり、これ以上本明細書には記載されない。
【0154】
ステップ405:読み取り要求が第一読み取り要求であるとき、ステップ406を実行する。そして読み取り要求が第二読み取り要求であるとき、手順を終了する。
【0155】
ステップ405は第三実施形態のステップ305と同じであり、これ以上本明細書には記載されない。
【0156】
ステップ406:記憶装置は、すでに読み取られた読み取り対象データ内の最終ファイルセグメントがファイルの最終ファイルセグメントであるか否かを判定する。すでに読み取られた読み取り対象データの最終ファイルセグメントがファイルの最終ファイルセグメントである場合、手順を終了する。そしてすでに読み取られた読み取り対象データの最終ファイルセグメントがファイルの最終ファイルセグメントではない場合には、ステップ407を実行する。
【0157】
ステップ406は第三実施形態のステップ306と同じであり、これ以上本明細書には記載されない。
【0158】
ステップ407:複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。
【0159】
ステップ407は、以下を含んでもよい。記憶装置は、所定数のファイルセグメントが位置する複数のコンテナのうちの少なくとも1つのコンテナ内のデータを、所定数の未読み取りファイルセグメントが位置するコンテナのシリアル番号の順序にしたがって第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。
【0160】
所定数の未読み取りファイルセグメントは、ファイル内で連続的であり、所定数の未読み取りファイルセグメントは、ファイル内の読み取り対象データに対応するファイルセグメントに隣接している。用語「ファイル内で連続的」とは、ファイルセグメントに順序があることを意味し、ファイルは、順序にしたがってこれらのファイルセグメントを接合することによって、復元されることが可能である。
【0161】
ステップ407は、以下のステップを含んでもよい。
【0162】
ステップ4071:第一eptrを取得する。ここで第一eptrは読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す。
【0163】
ステップ4071は第三実施形態のステップ3071と同じであり、これ以上本明細書には記載されない。
【0164】
ステップ4072:第一eptrに続く所定数のeptrを、ファイルのeptrテーブルから取得する。
【0165】
ステップ4072は第三実施形態のステップ3072と同じであり、これ以上本明細書には記載されない。
【0166】
ステップ4073:取得eptrが指し示すファイルセグメントが位置するコンテナのシリアル番号の順序にしたがって、取得eptrが指し示すファイルセグメントが位置する複数のコンテナのうちの少なくとも1つのコンテナ内のデータを先読みする。
【0167】
具体的には、取得された所定数のeptrにしたがって、所定数のeptrが指し示すファイルセグメントが位置するコンテナのシリアル番号が取得されてもよい。すべてのコンテナは、シリアル番号の順序にしたがって、第一記憶媒体の中に分散される。コンテナのシリアル番号は、開始記憶アドレスから終了記憶アドレスまでのアドレスセグメントであってもよい。
図4を参照すると、Nが指し示すコンテナのシリアル番号はM+2であり、N+1が指し示すコンテナのシリアル番号はM+1であり、N+2が指し示すコンテナのシリアル番号はM+2であり、N+xが指し示すコンテナのシリアル番号はM+yであると仮定される。
【0169】
第一記憶媒体内の複数のコンテナのうちの少なくとも1つのコンテナ内のデータのすべては、コンテナのシリアル番号の順序にしたがって読み取られる。
【0170】
ステップ4074:先読みされたデータをキャッシュ内に格納する。
【0171】
ステップ4074は第三実施形態のステップ3074と同じであり、これ以上本明細書には記載されない。
【0172】
ステップ408:eptrとキャッシュ内に格納されたファイルセグメントとの間の対応関係を確立する。
【0173】
ステップ408は第三実施形態のステップ308と同じであり、これ以上本明細書には記載されない。
【0174】
ステップ403からステップ408は、重複排除ファイル全体が読み取られてクライアントに返されるまで、繰り返し実行される。
【0175】
本発明のこの実施形態において提供された方法は、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減するファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは、記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【0176】
加えて、この実施形態において、第一記憶媒体の複数のコンテナのうちの少なくとも1つのコンテナ内のすべてのデータが、コンテナのシリアル番号の順序にしたがって読み取られる。ファイル記憶ルールに基づいて、元ファイルの重複排除の間、一般的に、重複排除ファイル内に格納されていないファイルセグメントは、コンテナのシリアル番号の順序にしたがって記憶システム内に順次記憶される。したがって、コンテナもまたコンテナのシリアル番号の順序にしたがって順次先読みされる場合、コンテナから先読みされたデータは、1つまたは複数の次回読み取り要求によって要求される読み取り対象データであってもよい。したがって、この実施形態によれば、次回読み取り要求の実行速度は改善されることが可能であり、そのデータが第一記憶媒体から読み取られる回数は減少され、ファイル読み取り性能は改善される。加えて、シリアル番号にしたがってコンテナを順序決定し、その後先読みを行うことは、簡単な動作であって実行しやすい。
【0177】
コンテナのシリアル番号の順序は昇順であってもよく、これらのシリアル番号は不連続的であってもよい。たとえば、先読みの間、未読み取りファイルセグメントが位置するコンテナのシリアル番号がそれぞれ10、13、15、20、21、および40であることが問い合わせによって見出された場合、今回先読みされるコンテナは6つのコンテナから選択されてもよい。3つのコンテナが今回先読みされると仮定すると、先読みされるコンテナのシリアル番号は、それぞれ10、13、および15である。
【0178】
第五実施形態
本発明のこの実施形態はファイル記憶装置を提供し、これは第一実施形態で提供されたファイル読み取り方法に適用可能である。記憶装置はファイルを格納するように構成されており、記憶装置は第一記憶媒体およびキャッシュを含む。キャッシュのアクセス速度は、第一記憶媒体よりも速い。第一記憶媒体は複数のコンテナを有する。ファイルは複数のファイルセグメントを含む。
図7を参照すると、記憶装置は以下
のモジュールを含む。
【0179】
クライアントによって送信された第一読み取り要求を受信するように構成された受信モジュール501であって、第一読み取り要求によって要求された読み取り対象データはファイルの一部分である、受信モジュール501を、記憶装置は含む。
【0180】
具体的には、第一読み取り要求は、ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含んでもよい。読み取り対象データのデータ量は、ファイルの全データ量の一部分である。
【0181】
具体的には、読み取り要求によって要求された読み取り対象データは、第一読み取り要求によって要求された読み取り対象データの開始位置に対応するデータから始まる指定量のデータであり、指定量のデータは読み取り要求によって要求された読み取り対象データのデータ量と等しい。
読み取り対象データであってキャッシュ内に位置するデータをキャッシュから読み取り、読み取り対象データであってキャッシュ内に位置していないデータを第一記憶媒体から読み取るように構成された読み取りモジュール502と、
複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納するように構成された先読みモジュール503であって、先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む、先読みモジュール503とを、記憶装置は含む。
【0182】
具体的には、第一記憶媒体は、これに限定されるものではないが、磁気ディスク、フラッシュメモリ、またはCDを含む。キャッシュは、これに限定されるものではないが、メモリを含む。
【0183】
本発明のこの実施形態において提供される記憶装置は、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは、記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【0184】
第六実施形態
本発明のこの実施形態はファイル記憶装置を提供し、これは第二実施形態で提供されたファイル読み取り方法に適用可能である。記憶装置はファイルを格納するように構成されており、記憶装置は第一記憶媒体およびキャッシュを含む。キャッシュのアクセス速度は、第一記憶媒体よりも速い。第一記憶媒体は複数のコンテナを有する。ファイルは複数のファイルセグメントを含む。
図8を参照すると、記憶装置は以下を含む。
クライアントによって送信された第一読み取り要求を受信するように構成された受信モジュール601であって、第一読み取り要求によって要求された読み取り対象データはファイルの一部分である、受信モジュール601を、記憶装置は含む。
【0185】
具体的には、第一読み取り要求は、ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含んでもよい。読み取り対象データのデータ量は、ファイルの全データ量の一部分である。
【0186】
具体的には、読み取り要求によって要求された読み取り対象データは、第一読み取り要求によって要求された読み取り対象データの開始位置に対応するデータから始まる指定量のデータであり、指定量のデータは読み取り要求によって要求された読み取り対象データのデータ量と等しい。
読み取り対象データであってキャッシュ内に位置するデータをキャッシュから読み取り、読み取り対象データであってキャッシュ内に位置していないデータを第一記憶媒体から読み取るように構成された読み取りモジュール602と、
複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納するように構成された先読みモジュール603であって、先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む、先読みモジュール603とを、記憶装置は含む。
【0187】
先読みモジュール603は、第一記憶媒体および所定数の未読み取りファイルセグメントが位置するコンテナから、所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータをキャッシュ内に格納するように構成されている。所定数の未読み取りファイルセグメントは、ファイル内で連続的であり、所定数の未読み取りファイルセグメントは、ファイル内の読み取り対象データに対応するファイルセグメントに隣接している。
【0188】
先読みモジュール603は、未読み取りファイルセグメントの数が閾値を超えないコンテナ内の未読み取りファイルセグメントを所定数の未読み取りファイルセグメントから選択し、選択された未読み取りファイルセグメントを先読みして、先読みされた未読み取りファイルセグメントをキャッシュ内に格納するようにさらに構成されている。
【0189】
先読みモジュール603は、
第一eptrを取得するように構成された第一取得ユニット6031であって、第一eptrは読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示し、
第一取得ユニット6031は、すでに読み取られた読み取り対象データ内の最終ファイルセグメントがファイルの最終ファイルセグメントであるか否かを判定し、読み取り対象データ内の最終ファイルセグメントがファイルの最終ファイルセグメントではない場合に、第一eptrを取得するようにさらに構成されている、第一取得ユニット6031と、
第一eptrに続く所定数のeptrを、ファイルのeptrテーブルから取得するように構成された第二取得ユニット6032であって、
第二取得ユニット6032は、ファイルのeptrテーブル内で、開始ポインタとして第一eptrを取り、第一eptrに続くすべてのeptrの数が所定数を超えるか否かを判定し、第一アドレスポインタに続くすべてのeptrの数が所定数を超える場合に第一eptrに続くすべてのeptrを取得し、第一eptrに続くすべてのeptrの数が所定数を超えない場合に所定数のeptrを取得するように構成されている、第二取得ユニット6032と、
取得eptrが指し示すファイルセグメントが位置するコンテナ内で、所定数のeptrがコンテナの各々を指し示す回数を統計収集するように構成された統計収集ユニット6033と、
統計収集によって取得された回数が閾値を超えるか否かを判定し、統計収集によって取得された回数が閾値を超える場合に、回数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータをキャッシュ内に格納するように構成された第一先読みユニット6034とを含む。
【0190】
受信モジュール601によって受信された第一読み取り要求は先読みトリガ条件を満たす読み取り要求であり、先読みトリガ条件は、以下の条件、すなわち、記憶装置が第一読み取り要求を受信する時間は所定時間枠の範囲内であること、第一読み取り要求によって要求された読み取り対象データはキャッシュ内に存在せず、または第一読み取り要求によって要求された読み取り対象データはキャッシュ内に存在しないこと、記憶装置が第一読み取り要求によって要求された読み取り対象データを読み取った後、キャッシュ内にあってファイルに関連する未読み取りファイルセグメントの数は所定数よりも少ないこと、および、第一読み取り要求によって要求された読み取り対象データに対応するファイルセグメントは、先行する先読みの間の所定数の未読み取りファイルセグメントを除く未読み取りファイルセグメントであることのうちの1つ以上を含む。
【0191】
受信モジュール601によって受信された第一読み取り要求は、ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含んでもよい。
【0192】
読み取りモジュール602は、クライアントによって送信された第二読み取り要求を受信するようにさらに構成されており、第二読み取り要求によって要求された読み取り対象データはファイルの一部分である。
【0193】
先読みモジュール603は、第二読み取り要求によって要求された読み取り対象データであってキャッシュ内に位置するデータをキャッシュから読み取り、第二読み取り要求によって要求された読み取り対象データであってキャッシュ内に位置していないデータを第一記憶媒体から読み取るように構成されている。
【0194】
具体的には、第一記憶媒体は、これに限定されるものではないが、磁気ディスク、フラッシュメモリ、またはCDを含む。キャッシュは、これに限定されるものではないが、メモリを含む。
【0195】
本発明のこの実施形態において提供される記憶装置は、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【0196】
加えて、本発明のこの実施形態において、コンテナのうちの少なくとも1つから先読みされたデータは、所定数の未読み取りファイルセグメントが位置するコンテナの中でも、所定数の未読み取りファイルセグメントが閾値を超えるコンテナ内のデータを含む。たとえば、所定数が280であり、閾値が50であり、280個のファイルセグメントが8つのコンテナ内に個別に配置されている場合、280個のファイルセグメントの中でも8つのコンテナの中に格納されたファイルセグメント数は、それぞれ20、25、25、30、30、43、52、および55である。コンテナのうちの少なくとも1つから先読みされたデータは、280個のファイルセグメントの中でも、ファイルセグメントの数がそれぞれ52および55であるコンテナ内のすべてのデータを含む。先読みの前に、所定数の未読み取りファイルセグメントの中でも、コンテナ内に格納された未読み取りファイルセグメントの数に対して個別に統計収集が実行される。数が所定の閾値を超えるときにはコンテナが読み取られ、したがってこれは使用されない過剰なデータの読み取りを防止し、第一記憶媒体からデータが読み取られる回数をさらに減少させる。このようにして、ファイル読み取り性能が改善される。
【0197】
第七実施形態
本発明のこの実施形態はファイル記憶装置を提供し、これは第三実施形態で提供されたファイル読み取り方法に適用可能である。記憶装置はファイルを格納するように構成されており、記憶装置は第一記憶媒体およびキャッシュを含む。キャッシュのアクセス速度は、第一記憶媒体よりも速い。第一記憶媒体は複数のコンテナを有する。ファイルは複数のファイルセグメントを含む。
図9を参照すると、記憶装置は、受信モジュール701、読み取りモジュール702、および先読みモジュール703を含む。受信モジュール701および読み取りモジュール702の構造は、第六実施形態の受信モジュール601および読み取りモジュール602の構造と同じであり、これらはこれ以上本明細書には記載されない。しかしながら、先読みモジュール703は所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納するように構成されている点が、異なっている。所定数の未読み取りファイルセグメントは、ファイル内で連続的であり、所定数の未読み取りファイルセグメントは、ファイル内の読み取り対象データに対応するファイルセグメントに隣接している。
【0198】
先読みモジュール703は、
第一eptrを取得するように構成された第三取得ユニット7031であって、第一eptrは読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第三取得ユニット7031と、
第一eptrに続く所定数のeptrを、ファイルのeptrテーブルから取得するように構成された第四取得ユニット7032と、
取得eptrが指し示すファイルセグメントが位置するコンテナ内のデータを先読みし、先読みされたデータをキャッシュ内に格納するように構成された第二先読みユニット7033とを含む。
【0199】
受信モジュール701によって受信された第一読み取り要求は先読みトリガ条件を満たす読み取り要求であり、先読みトリガ条件は、以下の条件、すなわち、記憶装置が第一読み取り要求を受信する時間は所定時間枠の範囲内であること、第一読み取り要求によって要求された読み取り対象データはキャッシュ内に存在せず、または第一読み取り要求によって要求された読み取り対象データはキャッシュ内に存在しないこと、および、記憶装置が第一読み取り要求によって要求された読み取り対象データを読み取った後、キャッシュ内の未読み取りファイルセグメントの数は予め設定された数よりも少ないことのうちの1つ以上を含む。
【0200】
受信モジュール701によって受信された第一読み取り要求は、ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含んでもよい。
【0201】
具体的には、第一記憶媒体は、これに限定されるものではないが、磁気ディスク、フラッシュメモリ、またはCDを含む。キャッシュは、これに限定されるものではないが、メモリを含む。
【0202】
本発明のこの実施形態において提供される記憶装置は、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【0203】
加えて、本発明のこの実施形態において、コンテナのうちの少なくとも1つから先読みされたデータは、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを含む。ファイル記憶ルールに基づいて、これらのコンテナ内のデータは、次回読み取り要求によって要求される読み取り対象データであってもよい。したがって、所定数のファイルセグメントが位置するコンテナ内のすべてのデータをキャッシュ内に同時に先読みすることによって、第一記憶媒体からデータが読み取られる回数は減少され、ファイル読み取り性能は改善される。
【0204】
第八実施形態
本発明のこの実施形態はファイル記憶装置を提供し、これは第四実施形態で提供されたファイル読み取り方法に適用可能である。記憶装置はファイルを格納するように構成されており、記憶装置は第一記憶媒体およびキャッシュを含む。キャッシュのアクセス速度は、第一記憶媒体よりも速い。第一記憶媒体は複数のコンテナを有する。ファイルは複数のファイルセグメントを含む。
図10を参照すると、記憶装置は、受信モジュール801、読み取りモジュール802、および先読みモジュール803を含む。受信モジュール801および読み取りモジュール802の構造は、第七実施形態の受信モジュール701および読み取りモジュール702の構造と同じであり、これらはこれ以上本明細書には記載されない。しかしながら、先読みモジュール803は、所定数の未読み取りファイルセグメントが位置するコンテナのシリアル番号の順序にしたがって第一記憶媒体から、所定数のファイルセグメントが位置する複数のコンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータをキャッシュ内に格納するように構成されている点が、異なっている。所定数の未読み取りファイルセグメントは、ファイル内で連続的であり、所定数の未読み取りファイルセグメントは、ファイル内の読み取り対象データに対応するファイルセグメントに隣接している。
【0205】
先読みモジュール803は、
第一eptrを取得するように構成された第五取得ユニット8031であって、第一eptrは読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第五取得ユニット8031と、
第一eptrに続く所定数のeptrを、ファイルのeptrテーブルから取得するように構成された第六取得ユニット8032と、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナのシリアル番号の順序にしたがって、取得されたアドレスポインタが指し示すファイルセグメントが位置する複数のコンテナのうちの少なくとも1つのコンテナ内のデータを先読みするように構成された第三先読みユニット8033とを含む。
【0206】
受信モジュール801によって受信された第一読み取り要求は先読みトリガ条件を満たす読み取り要求であり、先読みトリガ条件は、以下の条件、すなわち、記憶装置が第一読み取り要求を受信する時間は所定時間枠の範囲内であること、第一読み取り要求によって要求された読み取り対象データはキャッシュ内に存在せず、または第一読み取り要求によって要求された読み取り対象データはキャッシュ内に存在しないこと、および、記憶装置が第一読み取り要求によって要求された読み取り対象データを読み取った後、キャッシュ内の未読み取りファイルセグメントの数は予め設定された数よりも少ないことのうちの1つ以上を含む。
【0207】
受信モジュール801によって受信された第一読み取り要求は、ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含んでもよい。
【0208】
具体的には、第一記憶媒体は、これに限定されるものではないが、磁気ディスク、フラッシュメモリ、またはCDを含む。キャッシュは、これに限定されるものではないが、メモリを含む。
【0209】
本発明のこの実施形態において提供される記憶装置は、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは、記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【0210】
加えて、この実施形態において、第一記憶媒体の複数のコンテナのうちの少なくとも1つのコンテナ内のすべてのデータが、コンテナのシリアル番号の順序にしたがって読み取られる。ファイル記憶ルールに基づいて、元ファイルの重複排除の間、一般的に、重複排除ファイル内に格納されていないファイルセグメントは、コンテナのシリアル番号の順序にしたがって記憶システム内に順次記憶される。したがって、コンテナもまたコンテナのシリアル番号の順序にしたがって順次先読みされる場合、コンテナから先読みされたデータは、1つまたは複数の次回読み取り要求によって要求される読み取り対象データであってもよい。したがって、この実施形態によれば、次回読み取り要求の実行速度は改善されることが可能であり、そのデータが第一記憶媒体から読み取られる回数は減少され、ファイル読み取り性能は改善される。加えて、シリアル番号にしたがってコンテナを順序決定し、その後先読みを行うことは、簡単な動作であって実行しやすい。
【0211】
コンテナのシリアル番号の順序は昇順であってもよく、これらのシリアル番号は不連続的であってもよい。たとえば、先読みの間、未読み取りファイルセグメントが位置するコンテナのシリアル番号がそれぞれ10、13、15、20、21、および40であることが問い合わせによって見出された場合、今回先読みされるコンテナは6つのコンテナから選択されてもよい。3つのコンテナが今回先読みされると仮定すると、先読みされるコンテナのシリアル番号は、それぞれ10、13、および15である。
【0212】
第九実施形態
本発明のこの実施形態はファイル記憶装置を提供し、装置は、
図11に示されるように、コンピュータ(スマートフォン
またはタブレットコンピュータなどの携帯用コンピュータシステムを含む
)またはサーバであってもよい。装置は一般的に、少なくとも1つのプロセッサ10(たとえば、CPU)、ユーザインターフェース11、少なくとも1つのネットワークインターフェース12またはその他の通信インターフェース、第一記憶媒体13、少なくとも1つの通信バス14、およびキャッシュ15を含む。
図11に示されるコンピュータの構造は、コンピュータに対していかなる制限も構成するものではなく、それどころかコンピュータは、
図11よりも少ないかまたは多い部品、またはいくつかの部品の組み合わせ、または異なる配置の部品を含んでもよいことを、当業者は理解するだろう。
【0213】
図11を参照して、記憶装置の構成部品を以下に詳細に記載する。
【0214】
通信バス14は、プロセッサ10、第一記憶媒体13、キャッシュ15、および通信インターフェースの間の接続および通信を実行するように構成されている。
【0215】
少なくとも1つのネットワークインターフェース12(有線でも無線でもよい)は、インターネット、広域ネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワークなどを通じて、記憶装置と少なくとも1つの別のコンピュータまたはサーバとの間の通信接続を実現する。
【0216】
第一記憶媒体13は、これに限定されるものではないが、磁気ディスク、フラッシュメモリ、またはCDを含む。第一記憶媒体13は複数のコンテナを有する。キャッシュ15は、これに限定されるものではないが、メモリを含む。キャッシュ15のアクセス速度は第一記憶媒体13よりも速い。第一記憶媒体13およびキャッシュ15は、それぞれソフトウェアプログラムおよびアプリケーションモジュールを格納するように構成されていてもよい。プロセッサ10は、第一記憶媒体13およびキャッシュ15に格納されたソフトウェアプログラムおよびアプリケーションモジュールを起動することによって、記憶装置の様々な機能アプリケーションおよびデータ処理を実行する。第一記憶媒体13およびキャッシュは、それぞれプログラム記憶領域およびデータ記憶領域を主に含んでもよい。プログラム記憶領域は、オペレーティングシステム、少なくとも1つの機能(たとえば、ファイル先読み機能)によって必要とされるアプリケーションプログラム、などを格納してもよい。データ記憶領域は、記憶装置の使用にしたがって作成されたデータなどを格納してもよい。加えて、第一記憶媒体13は、不揮発性メモリ(non-volatile memory)、たとえば少なくとも1つのディスク記憶コンポーネント、フラッシュメモリコンポーネント、またはその他の揮発性固体記憶コンポーネントなどを、含んでもよい。キャッシュ15はメモリを含んでもよい。
【0217】
ユーザインターフェース10は、これに限定されるものではないが、出力装置および入力装置を含む。入力装置は一般的に、キーボードおよびクリック装置(たとえば、マウス、トラックボー
ル、タッチパッド、またはタッチスクリーン)を含む。出力装置は一般的に、ディスプレイ、プリンタ、およびプロジェクタなど、コンピュータ情報を表示することが可能な装置を含む。ディスプレイは、ユーザまたはユーザに対して提供されたファイルによって入力された情報を表示するように構成されていてもよい。キーボードおよびクリック装置は、入力された数字または文字情報を受信し、たとえば動作プロンプトにしたがってユーザによって発行された動作指示を取得するなど、記憶装置のユーザ設定および機能制御に関する信号入力を生成するように構成されていてもよい。
【0218】
プロセッサ10は、記憶装置の制御センターであり、様々なインターフェースおよび配線を使用することによって記憶装置全体の様々な部品に接続されており、第一記憶媒体13およびキャッシュ15に格納されたソフトウェアプログラムおよび/またはアプリケーションモジュールを起動または実行し、第一記憶媒体13およびキャッシュ15に格納されたデータを呼び出すことによって、記憶装置全体を監視するために、記憶装置の様々な機能およびデータ処理を実現する。
【0219】
具体的には、第一記憶媒体13およびキャッシュ15に格納されたソフトウェアプログラムおよび/またはアプリケーションモジュールを起動または実行し、第一記憶媒体13およびキャッシュ15に格納されたデータを呼び出すことによって、プロセッサ10は、以下のステップ、すなわち、
ユーザインターフェース10またはネットワークインターフェース12を通じて送信された第一読み取り要求を受信するステップであって、第一読み取り要求によって要求された読み取り対象データはファイルの一部分である、ステップと、読み取り対象データであってキャッシュ15内に位置するデータをキャッシュ15から読み取り、読み取り対象データであってキャッシュ15内に位置していないデータを第一記憶媒体13から読み取るステップと、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体13から先読みし、先読みされたデータをキャッシュ15内に格納するステップであって、先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む、ステップとを実現してよい。
【0220】
この実施形態の実現方法において、プロセッサ10は、第一記憶媒体13、および所定数の未読み取りファイルセグメントが位置するコンテナから、所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータをキャッシュ15内に格納するように構成されていてもよい。所定数の未読み取りファイルセグメントは、ファイル内で連続的であり、所定数の未読み取りファイルセグメントは、ファイル内の読み取り対象データに対応するファイルセグメントに隣接している。
【0221】
この実施形態の別の実現方法において、プロセッサ10は、未読み取りファイルセグメントの数が閾値を超えないコンテナ内の未読み取りファイルセグメントを所定数の未読み取りファイルセグメントから選択し、選択された未読み取りファイルセグメントを先読みして、先読みされた未読み取りファイルセグメントをキャッシュ15内に格納するように構成されていてもよい。
【0222】
この実施形態の別の実現方法において、プロセッサ10は、第一eptrが読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第一eptrを取得し、第一eptrに続く所定数のeptrを、ファイルのeptrテーブルから取得し、取得eptrが指し示すファイルセグメントが位置するコンテナ内で、所定数のeptrがコンテナの各々を指し示す回数を統計収集し、統計収集によって取得された回数が閾値を超えるか否かを判定し、統計収集によって取得された回数が閾値を超える場合に、回数が閾値を超えるコンテナ内のデータを先読みするように構成されていてもよい。
【0223】
この実施形態の別の実現方法において、プロセッサ10は、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを第一記憶媒体13から先読みし、先読みされたデータをキャッシュ15内に格納するように構成されていてもよい。所定数の未読み取りファイルセグメントは、ファイル内で連続的であり、所定数の未読み取りファイルセグメントは、ファイル内の読み取り対象データに対応するファイルセグメントに隣接している。
【0224】
この実施形態の別の実現方法において、プロセッサは、第一eptrが読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第一eptrを取得し、開始ポインタとして第一eptrを使用することによって、第一eptrに続く所定数のeptrをファイルのeptrテーブルから取得し、取得eptrが指し示すファイルセグメントが位置するコンテナ内のデータを先読みするように構成されていてもよい。
【0225】
この実施形態の別の実現方法において、プロセッサ10は、所定数の未読み取りファイルセグメントが位置するコンテナのシリアル番号の順序にしたがって第一記憶媒体13から、所定数のファイルセグメントが位置する複数のコンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータをキャッシュ15内に格納するように構成されていてもよい。
【0226】
この実施形態の別の実現方法において、プロセッサ10は、第一eptrが読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第一eptrを取得し、第一eptrに続く所定数のeptrをファイルのeptrテーブルから取得し、取得eptrが指し示すファイルセグメントが位置するコンテナのシリアル番号の順序にしたがって、取得eptrが指し示すファイルセグメントが位置する複数のコンテナのうちの少なくとも1つのコンテナ内のデータを先読みするように構成されていてもよい。
【0227】
この実施形態の別の実現方法において、プロセッサ10は、読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントがファイルの最終ファイルであるか否かを判定し、読み取り対象データ内の最終ファイルセグメントがファイルの最終ファイルセグメントではない場合に、第一eptrを取得するように構成されていてもよい。
【0228】
この実施形態の別の実現方法において、プロセッサ10は、ファイルのeptrテーブル内で、開始ポインタとして第一eptrを取り、第一eptrに続く全eptrの数が所定数を超えるか否かを判定し、第一eptrに続くすべてのeptrの数が所定数を超える場合に、第一eptrに続くすべてのeptrを取得し、第一eptrに続くすべてのeptrの数が所定数を超えない場合に、所定数のeptrを取得するように構成されていてもよい。
【0229】
この実施形態の別の実現方法において、受信モジュール10によって受信された第一読み取り要求は先読みトリガ条件を満たす読み取り要求であり、先読みトリガ条件は、以下の条件、すなわち、記憶装置が第一読み取り要求を受信する時間は所定時間枠の範囲内であること、第一読み取り要求によって要求された読み取り対象データはキャッシュ15内に存在せず、または第一読み取り要求によって要求された読み取り対象データの一部はキャッシュ15内に存在しないこと、および、記憶装置が第一読み取り要求によって要求された読み取り対象データを読み取った後、キャッシュ15内の未読み取りファイルセグメントの数は予め設定された数よりも少ないことのうちの1つ以上を含む。
【0230】
この実施形態の別の実現方法において、プロセッサ10によって受信された第一読み取り要求は先読みトリガ条件を満たす読み取り要求であり、先読みトリガ条件は、以下の条件、すなわち、記憶装置が第一読み取り要求を受信する時間は所定時間枠の範囲内であること、第一読み取り要求によって要求された読み取り対象データはキャッシュ15内に存在せず、または第一読み取り要求によって要求された読み取り対象データの一部はキャッシュ15内に存在しないこと、記憶装置が第一読み取り要求によって要求された読み取り対象データを読み取った後、キャッシュ15内の未読み取りファイルセグメントの数は予め設定された数よりも少ないこと、および、第一読み取り要求によって要求された読み取り対象データに対応するファイルセグメントは、先行する先読みの間の所定数の未読み取りファイルセグメントを除く未読み取りファイルセグメントであることのうちの1つ以上を含む。
【0231】
選択的に、プロセッサ10は、第二読み取り要求によって要求された読み取り対象データはファイルの一部分である、クライアントによって送信された第二読み取り要求を受信し、第二読み取り要求によって要求された読み取り対象データであってキャッシュ15内に位置するデータをキャッシュ15から読み取り、第二読み取り要求によって要求された読み取り対象データであってキャッシュ15内に位置していないデータを第一記憶媒体13から読み取るようにさらに構成されている。
【0232】
具体的には、プロセッサ10によって受信された第一読み取り要求は、ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含んでもよい。読み取り対象データのデータ量は、ファイルの全データ量の一部分である。
【0233】
さらに、動作プロンプトにしたがってユーザによって発行されるか、または触接クリックを使用することによって発行された動作指示が、入力装置を使用することによって取得されるとき、プロセッサ10は、入力装置によって取得された動作指示に対応する動作をさらに実行してもよい。
【0234】
本発明のこの実施形態において提供される記憶装置は、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このように、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは、記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【0235】
第十実施形態
本発明のこの実施形態は、ファイル読み取りシステムを提供する。
図12を参照すると、システムは、ユーザ機器1001およびファイル記憶装置1002を含む。
【0236】
ユーザ機器1001は、ユーザから元ファイル復元要求を受信し、元ファイル復元要求にしたがって複数の読み取り要求を生成し、読み取り要求を記憶装置1002に送信するように構成されている。具体的には、読み取り要求は、これに限定されるものではないが、ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含んでもよい。1つの読み取り要求によって要求される読み取り対象データの量は、ファイルの総データ量の一部分である。これらの読み取り要求がすべて同じファイルを対象としていることは、明白である。すなわち、これらの読み取り要求内のファイルの名前は同じである。
【0237】
記憶装置1002は、第五、第六、第七、または第八実施形態に記載された記憶装置であり、これ以上本明細書には記載されない。
【0238】
本発明のこの実施形態において提供されるシステムは、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【0239】
なお、上記実施形態において提供された記憶装置によるファイル読み取りの間、上記機能モジュールの分割を用いることによってのみ説明が行われることに留意されたい。実際には、機能は必要に応じた実現のために、異なる機能モジュールに割り当てられてもよい。具体的には、装置の内部構造は、上述された機能のすべてまたは一部を実現するために、異なる機能モジュールに分割される。加えて、上記実施形態において提供された記憶装置は、ファイル読み取り方法を図解した実施形態と同じ発明的概念に基づいている。具体的な実現プロセスについては方法実施形態を参照されたく、これらはこれ以上本明細書には記載されない。
【0240】
本発明の上記実施形態の順序番号は、説明の便宜上のためのものに過ぎず、実施形態の優先傾向を表すものではない。
【0241】
実施形態のステップのすべてまたは一部がハードウェアまたは関連ハードウェアに指示するプログラムによって実現されてもよいことを、当業者は理解するだろう。プログラムは、コンピュータ可読記憶媒体に格納されてもよい。記憶媒体は、読み取り専用メモリ、磁気ディスク、または光ディスクを含んでもよい。
【0242】
上記の説明は、本発明の単なる例示的実施形態に過ぎず、本発明を限定するように意図されるものではない。本発明の精神および原理から逸脱することなくなされるいずれの変更、同等の置き換え、または改良も、本発明の保護範囲に含まれるものとする。