(57)【要約】  ファイル読み取り方法、記憶装置、および読み取りシステムを提供する。方法は、記憶装置により、クライアントによって送信される第一読み取り要求を受信するステップであって、第一読み取り要求によって要求される読み取り対象データがファイルの一部分である、ステップと、読み取り対象データであってキャッシュ内に存在するデータをキャッシュから読み取り、読み取り対象データであってキャッシュ内に存在しないデータを第一記憶媒体から読み取るステップと、コンテナのうちの少なくとも1つの中のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納するステップであって、先読みされるコンテナがファイルの少なくとも1つの未読み取りファイルセグメントを含む、ステップとを有する。本発明によれば、データ読み取りにおける時間オーバヘッドが削減され、追加のハードウェア支出は必要とされず、ハードウェア費用を削減する。
2016526718.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置に格納されたファイルの読み取りに適用可能なファイル読み取り方法であって、前記記憶装置は、第一記憶媒体と、キャッシュとを備え、前記キャッシュのアクセス速度は、前記第一記憶媒体のアクセス速度よりも速く、前記第一記憶媒体は、複数のコンテナを有し、前記ファイルは、複数のファイルセグメントを有し、
前記方法は、
前記記憶装置により、クライアントによって送信される第一読み取り要求を受信するステップであって、前記第一読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、ステップと、
前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取るステップと、
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納するステップであって、先読みされるコンテナが前記ファイルの少なくとも1つの未読み取りファイルセグメントを含む、ステップと
を有する方法。
【請求項２】
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する前記ステップが、
前記第一記憶媒体から、かつ所定数の未読み取りファイルセグメントが位置するコンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するステップを含む、請求項1に記載の方法。
【請求項３】
前記所定数の未読み取りファイルセグメントから、未読み取りファイルセグメントの数が前記閾値を超えないコンテナ内の未読み取りファイルセグメントを選択し、選択された未読み取りファイルセグメントを先読みし、先読みされた未読み取りファイルセグメントを前記キャッシュ内に格納するステップをさらに有する、請求項2に記載の方法。
【請求項４】
前記第一記憶媒体から、かつ所定数の未読み取りファイルセグメントが位置するコンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みする前記ステップが、
第一アドレスポインタを取得するステップであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、ステップと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するステップと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内で、前記所定数のアドレスポインタが当該コンテナの各々を指し示す回数を統計収集するステップと、
統計収集によって取得された前記回数が前記閾値を超えるか否かを判定し、統計収集によって取得された前記回数が前記閾値を超える場合に、前記回数が前記閾値を超えるコンテナ内のデータを先読みするステップと
を含む、請求項2または3に記載の方法。
【請求項５】
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する前記ステップが、
前記第一記憶媒体から、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するステップを含む、請求項1に記載の方法。
【請求項６】
前記第一記憶媒体から、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを先読みする前記ステップが、
第一アドレスポインタを取得するステップであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、ステップと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するステップと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内のデータを先読みするステップと
を含む、請求項5に記載の方法。
【請求項７】
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する前記ステップが、
所定数の未読み取りファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記第一記憶媒体から、前記所定数のファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するステップを含む、請求項1に記載の方法。
【請求項８】
所定数の未読み取りファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記第一記憶媒体から、前記所定数のファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納する前記ステップが、
第一アドレスポインタを取得するステップであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、ステップと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するステップと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記取得されたアドレスポインタが指し示す前記ファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みするステップと
を含む、請求項7に記載の方法。
【請求項９】
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得する前記ステップが、
前記ファイルの前記アドレスポインタテーブル内で、前記第一アドレスポインタを開始ポインタとして用いて、前記第一アドレスポインタに続くすべてのアドレスポインタの数が所定数を超えるか否かを判定するステップと、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超える場合に、前記第一アドレスポインタに続くすべてのアドレスポインタを取得するステップと、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超えない場合に、前記所定数のアドレスポインタを取得するステップと
を含む、請求項4、6、または8に記載の方法。
【請求項１０】
前記所定数の未読み取りファイルセグメントは、前記ファイル内で連続的であり、
前記所定数の未読み取りファイルセグメントは、前記ファイル内の前記読み取り対象データに対応するファイルセグメントに隣接している、請求項2、5、または7に記載の方法。
【請求項１１】
前記第一読み取り要求が、先読みトリガ条件を満たす読み取り要求であり、
前記先読みトリガ条件は、
前記記憶装置が前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
前記記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないことと
のうちの1つ以上の条件を含む、請求項1から10のいずれか一項に記載の方法。
【請求項１２】
前記第一読み取り要求が、先読みトリガ条件を満たす読み取り要求であり、
前記先読みトリガ条件は、
前記記憶装置が前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
前記記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないことと、
前記第一読み取り要求によって要求される前記読み取り対象データに対応するファイルセグメントが、先行する先読みの間の前記所定数の未読み取りファイルセグメントを除く未読み取りファイルセグメントであることと
のうちの1つ以上の条件を含む、請求項2から10のいずれか一項に記載の方法。
【請求項１３】
前記記憶装置により、前記クライアントによって送信される第二読み取り要求を受信するステップであって、前記第二読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、ステップと、
前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取るステップと、
前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取るステップと
をさらに有する、請求項1から12のいずれか一項に記載の方法。
【請求項１４】
ファイル記憶装置であって、ファイルを格納するように構成され、第一記憶媒体と、キャッシュとを備え、前記キャッシュのアクセス速度は、前記第一記憶媒体のアクセス速度よりも速く、前記第一記憶媒体は、複数のコンテナを有し、前記ファイルは、複数のファイルセグメントを有し、
クライアントによって送信される第一読み取り要求を受信するように構成された受信モジュールであって、前記第一読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、受信モジュールと、
前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取るように構成された読み取りモジュールと、
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納するように構成された先読みモジュールであって、先読みされるコンテナが前記ファイルの少なくとも1つの未読み取りファイルセグメントを含む、先読みモジュールと
を備える記憶装置。
【請求項１５】
前記先読みモジュールが、
前記第一記憶媒体から、かつ所定数の未読み取りファイルセグメントが位置するコンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するようにさらに構成される、請求項14に記載の記憶装置。
【請求項１６】
前記先読みモジュールが、
前記所定数の未読み取りファイルセグメントから、未読み取りファイルセグメントの数が前記閾値を超えないコンテナ内の未読み取りファイルセグメントを選択し、選択された未読み取りファイルセグメントを先読みし、先読みされた未読み取りファイルセグメントを前記キャッシュ内に格納するようにさらに構成される、請求項15に記載の記憶装置。
【請求項１７】
前記先読みモジュールが、
第一アドレスポインタを取得するように構成された第一取得ユニットであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第一取得ユニットと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するように構成された第二取得ユニットと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内で、前記所定数のアドレスポインタが当該コンテナの各々を指し示す回数を統計収集するように構成された統計収集ユニットと、
統計収集によって取得された前記回数が前記閾値を超えるか否かを判定し、統計収集によって取得された前記回数が前記閾値を超える場合に、前記回数が前記閾値を超えるコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するように構成された第一先読みユニットと
を備える、請求項15または16に記載の記憶装置。
【請求項１８】
前記先読みモジュールが、
前記第一記憶媒体から、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するようにさらに構成される、請求項14に記載の記憶装置。
【請求項１９】
前記先読みモジュールが、
第一アドレスポインタを取得するように構成された第三取得ユニットであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第三取得ユニットと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するように構成された第四取得ユニットと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するように構成された第二先読みユニットと
を備える、請求項18に記載の記憶装置。
【請求項２０】
前記先読みモジュールが、
所定数の未読み取りファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記第一記憶媒体から、前記所定数のファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するようにさらに構成される、請求項14に記載の記憶装置。
【請求項２１】
前記先読みモジュールが、
第一アドレスポインタを取得するように構成された第五取得ユニットであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第五取得ユニットと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するように構成された第六取得ユニットと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記取得されたアドレスポインタが指し示す前記ファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みするように構成された第三先読みユニットと
を備える、請求項20に記載の記憶装置。
【請求項２２】
前記第六取得ユニットが、
前記ファイルの前記アドレスポインタテーブル内で、前記第一アドレスポインタを開始ポインタとして用いて、前記第一アドレスポインタに続くすべてのアドレスポインタの数が所定数を超えるか否かを判定し、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超える場合に、前記第一アドレスポインタに続くすべてのアドレスポインタを取得し、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超えない場合に、前記所定数のアドレスポインタを取得するようにさらに構成される、請求項21に記載の記憶装置。
【請求項２３】
前記所定数の未読み取りファイルセグメントは、前記ファイル内で連続的であり、
前記所定数の未読み取りファイルセグメントは、前記ファイル内の前記読み取り対象データに対応するファイルセグメントに隣接している、請求項15、18、または20に記載の記憶装置。
【請求項２４】
前記受信モジュールによって受信される前記第一読み取り要求が、先読みトリガ条件を満たす読み取り要求であり、
前記先読みトリガ条件は、
前記受信モジュールが前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないことと
のうちの1つ以上の条件を含む、請求項14から23のいずれか一項に記載の記憶装置。
【請求項２５】
前記受信モジュールによって受信される前記第一読み取り要求が、先読みトリガ条件を満たす読み取り要求であり、
前記先読みトリガ条件は、
前記受信モジュールが前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないことと、
前記第一読み取り要求によって要求される前記読み取り対象データに対応するファイルセグメントが、先行する先読みの間の前記所定数の未読み取りファイルセグメントを除く未読み取りファイルセグメントであることと
のうちの1つ以上の条件を含む、請求項15から23のいずれか一項に記載の記憶装置。
【請求項２６】
前記読み取りモジュールが、
前記クライアントによって送信される第二読み取り要求を受信するようにさらに構成され、
前記第二読み取り要求によって要求される読み取り対象データは、前記ファイルの一部分であり、
前記先読みモジュールが、
前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取るようにさらに構成される、請求項14から25のいずれか一項に記載の記憶装置。
【請求項２７】
ファイル記憶装置であって、ファイルを格納するように構成され、第一記憶媒体と、キャッシュとを備え、前記キャッシュのアクセス速度は、前記第一記憶媒体のアクセス速度よりも速く、前記第一記憶媒体は、複数のコンテナを有し、前記ファイルは、複数のファイルセグメントを有し、
プロセッサをさらに備え、
前記プロセッサは、
クライアントによって送信される第一読み取り要求を受信する手順であって、前記第一読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、手順と、
前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取る手順と、
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する手順であって、先読みされるコンテナが前記ファイルの少なくとも1つの未読み取りファイルセグメントを含む、手順と
を実行するように構成される、記憶装置。
【請求項２８】
前記プロセッサが、
前記第一記憶媒体から、かつ所定数の未読み取りファイルセグメントが位置するコンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納する手順を実行するようにさらに構成される、請求項27に記載の記憶装置。
【請求項２９】
前記プロセッサが、
前記所定数の未読み取りファイルセグメントから、未読み取りファイルセグメントの数が前記閾値を超えないコンテナ内の未読み取りファイルセグメントを選択し、選択された未読み取りファイルセグメントを先読みし、先読みされた未読み取りファイルセグメントを前記キャッシュ内に格納する手順を実行するようにさらに構成される、請求項28に記載の記憶装置。
【請求項３０】
前記プロセッサが、
第一アドレスポインタを取得する手順であって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、手順と、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得する手順と、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内で、前記所定数のアドレスポインタが当該コンテナの各々を指し示す回数を統計収集する手順と、
統計収集によって取得された前記回数が前記閾値を超えるか否かを判定し、統計収集によって取得された前記回数が前記閾値を超える場合に、前記回数が前記閾値を超えるコンテナ内のデータを先読みする手順と
を実行するようにさらに構成される、請求項28または29に記載の記憶装置。
【請求項３１】
前記プロセッサが、
前記第一記憶媒体から、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納する手順を実行するようにさらに構成される、請求項27に記載の記憶装置。
【請求項３２】
前記プロセッサが、
第一アドレスポインタを取得する手順であって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、手順と、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得する手順と、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内のデータを先読みする手順と
を実行するようにさらに構成される、請求項31に記載の記憶装置。
【請求項３３】
前記プロセッサが、
所定数の未読み取りファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記第一記憶媒体から、前記所定数のファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納する手順を実行するようにさらに構成される、請求項27に記載の記憶装置。
【請求項３４】
前記プロセッサが、
第一アドレスポインタを取得する手順であって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、手順と、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得する手順と、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記取得されたアドレスポインタが指し示す前記ファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みする手順と
を実行するようにさらに構成される、請求項33に記載の記憶装置。
【請求項３５】
前記プロセッサが、
前記ファイルの前記アドレスポインタテーブル内で、前記第一アドレスポインタを開始ポインタとして用いて、前記第一アドレスポインタに続くすべてのアドレスポインタの数が所定数を超えるか否かを判定する手順と、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超える場合に、前記第一アドレスポインタに続くすべてのアドレスポインタを取得する手順と、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超えない場合に、前記所定数のアドレスポインタを取得する手順と
を実行するようにさらに構成される、請求項30、32、または34に記載の記憶装置。
【請求項３６】
前記所定数の未読み取りファイルセグメントは、前記ファイル内で連続的であり、
前記所定数の未読み取りファイルセグメントは、前記ファイル内の前記読み取り対象データに対応するファイルセグメントに隣接している、請求項28、31、または33に記載の記憶装置。
【請求項３７】
前記プロセッサによって受信される前記第一読み取り要求が、先読みトリガ条件を満たす読み取り要求であり、
前記先読みトリガ条件は、
記憶装置が前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないことと
のうちの1つ以上の条件を含む、請求項27から36のいずれか一項に記載の記憶装置。
【請求項３８】
前記プロセッサによって受信される前記第一読み取り要求が、先読みトリガ条件を満たす読み取り要求であり、
前記先読みトリガ条件は、
記憶装置が前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと
記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないことと、
前記第一読み取り要求によって要求される前記読み取り対象データに対応するファイルセグメントが、先行する先読みの間の前記所定数の未読み取りファイルセグメントを除く未読み取りファイルセグメントであることと
のうちの1つ以上の条件を含む、請求項28から36のいずれか一項に記載の記憶装置。
【請求項３９】
前記プロセッサが、
前記クライアントによって送信される第二読み取り要求を受信する手順であって、前記第二読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、手順と、
前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取る手順と
を実行するようにさらに構成される、請求項27から38のいずれか一項に記載の記憶装置。
【請求項４０】
ファイル読み取りシステムであって、
ユーザ機器と、
ファイル記憶装置と
を備え、
前記ユーザ機器は、ユーザから元ファイル復元要求を受信し、前記元ファイル復元要求にしたがって、複数の読み取り要求を生成し、前記読み取り要求を前記記憶装置に送信するように構成され、
前記記憶装置は、請求項14から39のいずれか一項に記載の記憶装置である、ファイル読み取りシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルの読み書きの分野に関し、具体的には、ファイル読み取り方法、記憶装置、および読み取りシステムに関する。
【背景技術】
【０００２】
データ重複排除（Data De-duplication）技術は、ストレージ分野において広く使用されている。たとえば、バックアップシステムにおいて、データ重複排除技術は、バックアップ対象のファイル内の特定サイズのチャンクを連続的に読み取るために、および事前バックアップ済みチャンク内に同じチャンクが存在しているか否かを検索するために使用される。バックアップ対象のチャンクと同じバックアップ済みチャンクがある場合には、当該チャンクはバックアップされない。代わりに、バックアップ対象のファイルは事前バックアップ済みチャンクを参照する。見つからないチャンクのみがバックアップされる。事前バックアップ済みチャンクを参照するファイルは、データ重複排除ファイルと称される（以下、重複排除ファイルと称す）。記憶システム内のバックアップ済みチャンクは、重複チャンクと称される。
【０００３】
事前バックアップ済みチャンクが参照され、参照されたチャンクは複数回バックアップされる。したがって、重複排除ファイルに含まれるチャンク、すなわち重複排除ファイルを構成するチャンクの物理的位置は、通常、ディスク上では不連続である。したがって、重複排除ファイルを読み取るプロセスは、実際にはデータ断片を含むディスクからデータを読み取るプロセスである。すべてのチャンクは、いくつかのディスクシークの後にディスクから読み取られることがある。ディスクの読み取り速度は遅く、それによって読み取りプロセスの間に費やされる時間オーバヘッドは増加する。この問題を解決するために、従来技術は、重複排除ファイルを読み取る方法を提供している。具体的には、この方法では、追加記憶装置がキャッシュ（Cache）として使用され、すべてのバックアップ済み重複チャンクは追加記憶装置内に格納される。重複排除ファイルが読み取られるとき、対応する重複チャンクは、読み取られたチャンクがバックアップ済みチャンクを参照する限り、追加記憶装置から読み取られる。
【０００４】
本発明の実施の間、従来技術は以下の不都合を有する。
【０００５】
バックアップ済み重複チャンクの数が多いので、使用する記憶装置の容量は膨大である。読み取り速度を保証するために、記憶装置の性能は、ディスクの性能よりも優れていなければならない。一般的に使用される追加記憶装置はソリッドステートディスク（Solid State Disk、略して、SSD）であるが、SSDの価格は高い。したがって、ハードウェア費用が増加する。
【発明の概要】
【課題を解決するための手段】
【０００６】
ハードウェア費用を節約してファイル読み取り性能を向上させるために、本発明の実施態様は、ファイル読み取り方法、記憶装置、および読み取りシステムを提供する。技術的解決法は、以下のとおりである。
【０００７】
第一の態様によれば、本発明の一実施形態は、記憶装置に格納されたファイルを読み取るのに適したファイル読み取り方法を提供し、前記記憶装置は、第一記憶媒体と、キャッシュとを含む。前記キャッシュのアクセス速度は、前記第一記憶媒体のアクセス速度よりも速く、前記第一記憶媒体は、複数の記憶コンテナを有し、前記ファイルは、複数のファイルセグメントを含む。前記方法は、
前記記憶装置により、クライアントによって送信される第一読み取り要求を受信するステップであって、前記第一読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、ステップと、
前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取るステップと、
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納するステップであって、先読みされるコンテナが前記ファイルの少なくとも1つの未読み取りファイルセグメントを含む、ステップとを有する。
【０００８】
選択的に、前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する前記ステップは、
前記第一記憶媒体から、かつ所定数の未読み取りファイルセグメントが位置するコンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するステップを含む。
【０００９】
選択的に、前記方法は、
前記所定数の未読み取りファイルセグメントから、未読み取りファイルセグメントの数が前記閾値を超えないコンテナ内の未読み取りファイルセグメントを選択し、選択された未読み取りファイルセグメントを先読みし、先読みされた未読み取りファイルセグメントを前記キャッシュ内に格納するステップをさらに有する。
【００１０】
選択的に、前記第一記憶媒体から、かつ所定数の未読み取りファイルセグメントが位置するコンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みする前記ステップは、
第一アドレスポインタを取得するステップであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、ステップと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するステップと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内で、前記所定数のアドレスポインタが当該コンテナの各々を指し示す回数を統計収集するステップと、
統計収集によって取得された前記回数が前記閾値を超えるか否かを判定し、統計収集によって取得された前記回数が前記閾値を超える場合に、前記回数が前記閾値を超えるコンテナ内のデータを先読みするステップとを含む。
【００１１】
選択的に、前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する前記ステップは、
前記第一記憶媒体から、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するステップを含む。
【００１２】
選択的に、前記第一記憶媒体から、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを先読みする前記ステップは、
第一アドレスポインタを取得するステップであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、ステップと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するステップと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内のデータを先読みするステップとを含む。
【００１３】
選択的に、前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する前記ステップは、
所定数の未読み取りファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記第一記憶媒体から、前記所定数のファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するステップを含む。
【００１４】
選択的に、所定数の未読み取りファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記第一記憶媒体から、前記所定数のファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納する前記ステップは、
第一アドレスポインタを取得するステップであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、ステップと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するステップと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記取得されたアドレスポインタが指し示す前記ファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みするステップとを含む。
【００１５】
選択的に、前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得する前記ステップは、
前記ファイルの前記アドレスポインタテーブル内で、前記第一アドレスポインタを開始ポインタとして用いて、前記第一アドレスポインタに続くすべてのアドレスポインタの数が所定数を超えるか否かを判定するステップと、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超える場合に、前記第一アドレスポインタに続くすべてのアドレスポインタを取得するステップと、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超えない場合に、前記所定数のアドレスポインタを取得するステップとを含む。
【００１６】
選択的に、前記所定数の未読み取りファイルセグメントは、前記ファイル内で連続的であり、前記所定数の未読み取りファイルセグメントは、前記ファイル内の前記読み取り対象データに対応するファイルセグメントに隣接している。
【００１７】
選択的に、前記第一読み取り要求は、先読みトリガ条件を満たす読み取り要求であり、前記先読みトリガ条件は、以下の条件、すなわち、
前記記憶装置が前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
前記記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないこととのうちの1つ以上の条件を含む。
【００１８】
選択的に、前記第一読み取り要求は、先読みトリガ条件を満たす読み取り要求であり、前記先読みトリガ条件は、以下の条件、すなわち、
前記記憶装置が前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
前記記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないことと、
前記第一読み取り要求によって要求される前記読み取り対象データに対応するファイルセグメントが、先行する先読みの間の前記所定数の未読み取りファイルセグメントを除く未読み取りファイルセグメントであることとのうちの1つ以上の条件を含む。
【００１９】
選択的に、前記方法は、
前記記憶装置により、前記クライアントによって送信される第二読み取り要求を受信するステップであって、前記第二読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、ステップと、
前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取るステップと、
前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取るステップとをさらに有する。
【００２０】
第二の態様によれば、本発明の一実施形態は、ファイル記憶装置を提供し、前記記憶装置は、ファイルを格納するように構成され、前記記憶装置は、第一記憶媒体と、キャッシュとを含み、前記キャッシュのアクセス速度は、前記第一記憶媒体のアクセス速度よりも速く、前記第一記憶媒体は、複数の記憶コンテナを有し、前記ファイルは、複数のファイルセグメントを含む。前記記憶装置は、
クライアントによって送信される第一読み取り要求を受信するように構成された受信モジュールであって、前記第一読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、受信モジュールと、
前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取るように構成された読み取りモジュールと、
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納するように構成された先読みモジュールであって、先読みされるコンテナが前記ファイルの少なくとも1つの未読み取りファイルセグメントを含む、先読みモジュールとを含む。
【００２１】
選択的に、前記先読みモジュールは、
前記第一記憶媒体から、かつ所定数の未読み取りファイルセグメントが位置するコンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するようにさらに構成される。
【００２２】
選択的に、前記先読みモジュールは、
前記所定数の未読み取りファイルセグメントから、未読み取りファイルセグメントの数が前記閾値を超えないコンテナ内の未読み取りファイルセグメントを選択し、選択された未読み取りファイルセグメントを先読みし、先読みされた未読み取りファイルセグメントを前記キャッシュ内に格納するようにさらに構成される。
【００２３】
選択的に、前記先読みモジュールは、
第一アドレスポインタを取得するように構成された第一取得ユニットであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第一取得ユニットと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するように構成された第二取得ユニットと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内で、前記所定数のアドレスポインタが当該コンテナの各々を指し示す回数を統計収集するように構成された統計収集ユニットと、
統計収集によって取得された前記回数が前記閾値を超えるか否かを判定し、統計収集によって取得された前記回数が前記閾値を超える場合に、前記回数が前記閾値を超えるコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するように構成された第一先読みユニットとを含む。
【００２４】
選択的に、前記先読みモジュールは、
前記第一記憶媒体から、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するようにさらに構成される。
【００２５】
選択的に、前記先読みモジュールは、
第一アドレスポインタを取得するように構成された第三取得ユニットであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第三取得ユニットと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するように構成された第四取得ユニットと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するように構成された第二先読みユニットとを含む。
【００２６】
選択的に、前記先読みモジュールは、
所定数の未読み取りファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記第一記憶媒体から、前記所定数のファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するようにさらに構成される。
【００２７】
選択的に、前記先読みモジュールは、
第一アドレスポインタを取得するように構成された第五取得ユニットであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第五取得ユニットと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するように構成された第六取得ユニットと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記取得されたアドレスポインタが指し示す前記ファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みするように構成された第三先読みユニットとを含む。
【００２８】
選択的に、前記第六取得ユニットは、
前記ファイルの前記アドレスポインタテーブル内で、前記第一アドレスポインタを開始ポインタとして用いて、前記第一アドレスポインタに続くすべてのアドレスポインタの数が所定数を超えるか否かを判定し、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超える場合に、前記第一アドレスポインタに続くすべてのアドレスポインタを取得し、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超えない場合に、前記所定数のアドレスポインタを取得するようにさらに構成される。
【００２９】
選択的に、前記所定数の未読み取りファイルセグメントは、前記ファイル内で連続的であり、前記所定数の未読み取りファイルセグメントは、前記ファイル内の前記読み取り対象データに対応するファイルセグメントに隣接している。
【００３０】
選択的に、前記受信モジュールによって受信される前記第一読み取り要求は、先読みトリガ条件を満たす読み取り要求であり、前記先読みトリガ条件は、以下の条件、すなわち、
前記受信モジュールが前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
前記記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないこととのうちの1つ以上の条件を含む。
【００３１】
選択的に、前記受信モジュールによって受信される前記第一読み取り要求は、先読みトリガ条件を満たす読み取り要求であり、前記先読みトリガ条件は、以下の条件、すなわち、
前記受信モジュールが前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
前記記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないことと、
前記第一読み取り要求によって要求される前記読み取り対象データに対応するファイルセグメントが、先行する先読みの間の前記所定数の未読み取りファイルセグメントを除く未読み取りファイルセグメントであることとのうちの1つ以上の条件を含む。
【００３２】
選択的に、前記読み取りモジュールは、
前記クライアントによって送信される第二読み取り要求を受信するようにさらに構成され、前記第二読み取り要求によって要求される読み取り対象データは、前記ファイルの一部分であり、
前記先読みモジュールは、
前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取るようにさらに構成される。
【００３３】
第三の態様によれば、本発明の一実施形態は、ファイル記憶装置を提供し、前記記憶装置は、ファイルを格納するように構成され、前記記憶装置は、第一記憶媒体と、キャッシュとを含む。前記キャッシュのアクセス速度は、前記第一記憶媒体のアクセス速度よりも速く、前記第一記憶媒体は、複数の記憶コンテナを有し、前記ファイルは、複数のファイルセグメントを含む。前記記憶装置は、プロセッサをさらに含み、前記プロセッサは、
クライアントによって送信される第一読み取り要求を受信する手順であって、前記第一読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、手順と、
前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取る手順と、
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する手順であって、先読みされるコンテナが前記ファイルの少なくとも1つの未読み取りファイルセグメントを含む、手順とを実行するように構成される。
【００３４】
選択的に、前記プロセッサは、
前記第一記憶媒体から、かつ所定数の未読み取りファイルセグメントが位置するコンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納する手順を実行するようにさらに構成される。
【００３５】
選択的に、前記プロセッサは、
前記所定数の未読み取りファイルセグメントから、未読み取りファイルセグメントの数が前記閾値を超えないコンテナ内の未読み取りファイルセグメントを選択し、選択された未読み取りファイルセグメントを先読みし、先読みされた未読み取りファイルセグメントを前記キャッシュ内に格納する手順を実行するようにさらに構成される。
【００３６】
選択的に、前記プロセッサは、
第一アドレスポインタを取得する手順であって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、手順と、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得する手順と、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内で、前記所定数のアドレスポインタが当該コンテナの各々を指し示す回数を統計収集する手順と、
統計収集によって取得された前記回数が前記閾値を超えるか否かを判定し、統計収集によって取得された前記回数が前記閾値を超える場合に、前記回数が前記閾値を超えるコンテナ内のデータを先読みする手順とを実行するようにさらに構成される。
【００３７】
選択的に、前記プロセッサは、
前記第一記憶媒体から、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納する手順を実行するようにさらに構成される。
【００３８】
選択的に、前記プロセッサは、
第一アドレスポインタを取得する手順であって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、手順と、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得する手順と、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内のデータを先読みする手順とを実行するようにさらに構成される。
【００３９】
選択的に、前記プロセッサは、
所定数の未読み取りファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記第一記憶媒体から、前記所定数のファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納する手順を実行するようにさらに構成される。
【００４０】
選択的に、前記プロセッサは、
第一アドレスポインタを取得する手順であって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、手順と、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得する手順と、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記取得されたアドレスポインタが指し示す前記ファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みする手順とを実行するようにさらに構成される。
【００４１】
選択的に、前記プロセッサは、
前記ファイルの前記アドレスポインタテーブル内で、前記第一アドレスポインタを開始ポインタとして用いて、前記第一アドレスポインタに続くすべてのアドレスポインタの数が所定数を超えるか否かを判定する手順と、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超える場合に、前記第一アドレスポインタに続くすべてのアドレスポインタを取得する手順と、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超えない場合に、前記所定数のアドレスポインタを取得する手順とを実行するようにさらに構成される。
【００４２】
選択的に、前記所定数の未読み取りファイルセグメントは、前記ファイル内で連続的であり、前記所定数の未読み取りファイルセグメントは、前記ファイル内の前記読み取り対象データに対応するファイルセグメントに隣接している。
【００４３】
選択的に、前記プロセスによって受信される前記第一読み取り要求は、先読みトリガ条件を満たす読み取り要求であり、前記先読みトリガ条件は、以下の条件、すなわち、
前記記憶装置が前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
前記記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないこととのうちの1つ以上の条件を含む。
【００４４】
選択的に、前記プロセッサによって受信される第一読み取り要求は、先読みトリガ条件を満たす読み取り要求であり、前記先読みトリガ条件は、以下の条件、すなわち、
前記記憶装置が前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
前記記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないことと、
前記第一読み取り要求によって要求される前記読み取り対象データに対応するファイルセグメントが、先行する先読みの間の前記所定数の未読み取りファイルセグメントを除く未読み取りファイルセグメントであることとのうちの1つ以上の条件を含む。
【００４５】
選択的に、前記プロセッサは、
前記クライアントによって送信される第二読み取り要求を受信する手順であって、前記第二読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、手順と、
前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取る手順を実行するようにさらに構成される。
【００４６】
第四の態様によれば、本発明の一実施形態は、ファイル読み取りシステムを提供する。前記システムは、ユーザ機器と、ファイル記憶装置とを含み、前記ユーザ機器は、ユーザから元ファイル復元要求を受信し、前記元ファイル復元要求にしたがって、複数の読み取り要求を生成し、前記読み取り要求を前記記憶装置に送信するように構成され、前記記憶装置は、上記の記憶装置である。
【発明の効果】
【００４７】
本発明の実施態様において提供される技術的解決法を使用することにより、クライアントによって送信される第一読み取り要求を受信すると、記憶装置は、第一記憶媒体から複数のコンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータをキャッシュに格納する。ここで、先読みされるコンテナは、ファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後に送信されたファイルの読み取り要求を受信すると、記憶装置は、キャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータ読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施態様におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは、記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施態様において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【００４８】
本発明の実施形態における技術的解決法をより明確に説明するため、実施形態を説明するために必要とされる添付図面を以下に簡単に紹介する。当然ながら、以下の説明の添付図面は本発明のいくつかの実施形態を示すに過ぎず、当業者は、創造的労力を伴わずに、これらの添付図面から別の図面を導き出すことができよう。
【図面の簡単な説明】
【００４９】
【図１】本発明の一実施形態によるデータ重複排除ファイルの記憶構造の概略図である。
【図２】本発明の一実施形態によるファイル読み取り方法のフローチャートである。
【図３】本発明の一実施形態による、別のファイル読み取り方法のフローチャートである。
【図４】本発明の一実施形態による、アドレスポインタとコンテナとの間の関連性の概略図である。
【図５】本発明の一実施形態による、さらに別のファイル読み取り方法のフローチャートである。
【図６】本発明の一実施形態による、さらに別のファイル読み取り方法のフローチャートである。
【図７】本発明の一実施形態によるファイル記憶装置の概略構造図である。
【図８】本発明の一実施形態によるファイル記憶装置の概略構造図である。
【図９】本発明の一実施形態によるファイル記憶装置の概略構造図である。
【図１０】本発明の一実施形態によるファイル記憶装置の概略構造図である。
【図１１】本発明の一実施形態によるファイル記憶装置の具体的な実現方法の概略構造図である。
【図１２】本発明の一実施形態によるファイル読み取りシステムの概略構造図である。
【発明を実施するための形態】
【００５０】
本発明の目的、技術的解決法、および利点をより明確にするため、添付図面を参照して本発明の実施形態を、以下にさらに記載する。
【００５１】
本発明の一実施形態は、記憶装置に格納されたファイルの読み取りに適用可能であり、具体的には、記憶装置に格納された重複排除ファイルの読み取りに適用可能な、ファイル読み取り方法を提供する。記憶装置は一般的に、第一記憶媒体（第一記憶媒体は、これに限定されるものではないが、ディスク、フラッシュメモリ、およびコンパクトディスク（Compact Disk、略して、CD）を含む）、およびキャッシュを含み、キャッシュのアクセス速度は第一記憶媒体よりも速い。第一記憶媒体は複数のコンテナ（container）を有し、各コンテナは複数のチャンク（chunk）に分割される。1つのファイルは複数のファイルセグメントに分割されてもよく、各ファイルセグメントのデータ量は互いに異なってもよく、1つのチャンクは1つのファイルセグメントを格納する。1つのコンテナに含まれる1つのファイルのファイルセグメントの数は、コンテナの参照カウント（reference count）とも称される。たとえば、ファイルAが100個のファイルセグメントで形成されていると仮定すると、100個のファイルセグメントは第一記憶媒体内の3つのコンテナに分散されて、3つのコンテナ内のファイルAのファイルセグメントの数はそれぞれ20、30、および50であり、3つのコンテナの参照カウントはそれぞれ20、30、および50となる。なお、これら3つのコンテナは、ファイルAのファイルセグメントに加えて別のファイルのファイルセグメントをさらに含んでもよいことに留意されたい。本発明のこの実施形態において、アクセス速度は、記憶媒体からデータを読み取る速度であり、記憶媒体は、キャッシュまたは第一記憶媒体であってもよい。
【００５２】
本発明のこの実施形態において、記憶装置によって使用されるファイルシステムは、これに限定されるものではないが、Linux（登録商標）ファイルシステムまたはWindows（登録商標）ファイルシステムを含む。本発明の実施形態において提供される技術的解決法をより良く理解するために、本発明の実施形態は、一例としてLinuxファイルシステムで重複排除ファイルを使用することによる技術的解決法について、詳細な説明を提供する。
【００５３】
まず、Linuxファイルシステムにおける重複排除ファイルの記憶構造が説明される。重複排除ファイルは2つの部分、すなわちインデックスノード（index node，inode）およびコンテナを含む。inodeは、ファイルシステム内に保持されるインデックスノードテーブル（index node table，inode table）内に格納されている。一旦重複排除ファイルが作成されると、ファイルシステムは1つのinodeを重複排除ファイルに割り当てる。inodeは、重複排除ファイルのメタ情報（meta-information）（たとえば、ファイルのサイズおよび作成時間）を記録するために使用される。各コンテナは指定サイズ（たとえば、9M）の記憶領域であり、各コンテナは複数のチャンクに分割されている。1つのチャンクのサイズは、4Kから12Kであってもよい。
【００５４】
図1を参照すると、inodeはコンテナに関連付けられている。メタ情報は、重複排除ファイルのファイルセグメントを指し示すためのいくつかのアドレスポインタeptrを含む。eptrは一般的に、2つのタイプ、すなわち直接型および間接型を含む。直接型eptrはチャンクを指し示し、間接型eptrは別のeptrを指し示す。1つの直接型eptrは2つのパラメータを決定する。1つはチャンクのシリアル番号であり、もう1つはコンテナのシリアル番号である。重複排除ファイルが増加するにつれて、ファイルセグメントも大規模に成長し、さらに多くの重複排除ファイルが、先行する重複排除ファイルのファイルセグメントを参照してもよい。この場合、現在記憶されている重複排除ファイル内のいくつかのeptrは、先に格納された重複排除ファイルのeptrを指し示してもよい。
【００５５】
なお、1つのチャンクは1つのファイルセグメントを格納するので、eptrが指し示すファイルセグメントが、本発明のこの実施形態においてeptrが指し示すチャンク内に格納されたファイルセグメントを指すことに留意されたい。
【００５６】
第一実施形態
本発明のこの実施形態は、記憶装置に格納されたファイルの読み取りに適用可能なファイル読み取り方法を提供する。図2を参照すると、方法の手順は、以下のステップを含む。
【００５７】
ステップ101：記憶装置は、クライアント（Client）によって送信された第一読み取り要求を受信する。ここで第一読み取り要求によって要求されたデータは読み取り対象データと称され、読み取り対象データはファイルの一部分である。ファイルの読み取りは、複数回または一回で完了することが可能である。ファイルの読み取りが複数回で完了すると、読み取り要求はファイルの一部を読み取る要求のために一度で送信され、第一読み取り要求はこのような要求の1つである。
【００５８】
記憶装置は、第一記憶媒体およびキャッシュを含む。キャッシュのアクセス速度は第一記憶媒体よりも速い。第一記憶媒体は、複数のコンテナを有する。ファイルは複数のファイルセグメントを含み、ファイルを構成するファイルセグメントは、すべて第一記憶媒体内に格納されるか、またはファイルセグメントの一部が第一記憶媒体内に格納され、かつファイルセグメントの残部がキャッシュ内に格納されるか、またはすべてキャッシュ内に格納される。
【００５９】
具体的には、第一記憶媒体は、これに限定されるものではないが、磁気ディスク、フラッシュメモリ、またはCDを含む。キャッシュは、これに限定されるものではないが、ランダムアクセスメモリ（Random Access Memory、略して、RAM）または読み取り専用メモリ（Read Only Memory、略して、ROM）を含む。
【００６０】
具体的には、第一読み取り要求は、ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含んでもよい。読み取り対象データのデータ量はファイルの総データ量の一部分であり、用語「一部分（a part）」は、ファイル全体を示しても示さなくてもよい。
【００６１】
具体的には、読み取り要求によって要求された読み取り対象データは、第一読み取り要求における読み取り対象データの開始位置に対応するデータから始まる所定量のデータであり、指定量のデータは読み取り要求によって要求された読み取り対象データのデータ量に等しい。指定量は、たとえば64K Byteまたは128K Byteのデータ量であってもよい。
【００６２】
ステップ102：読み取り対象データであってキャッシュ内に位置するデータをキャッシュから読み取り、読み取り対象データであってキャッシュ内に位置していないデータを第一記憶媒体から読み取る。
【００６３】
この実施形態において、キャッシュ内のデータは第一記憶媒体内のデータの前に読み取られてもよい。すべての読み取り対象データがキャッシュ内にある場合、第一記憶媒体から読み取られるデータの量は0である。そしてキャッシュ内に読み取り対象データが存在しない場合、キャッシュから読み取られるデータの量は0である。
【００６４】
ステップ103：複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。先読みされたデータは、コンテナの形式でキャッシュ内に格納されてもよい。
【００６５】
具体的には、未読み取りファイルセグメントは、現在の読み取り要求によって要求されている読み取り対象データに対応するファイルセグメント、および現在の読み取り要求の前に読み取られたファイルセグメントを除く、ファイルのファイルセグメントである。
【００６６】
本発明のこの実施形態において提供される方法を用いることによって、クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納し、先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは、記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【００６７】
第二実施形態
この実施形態は、一例として重複排除ファイルを使用することによって、本発明によるファイル読み取り方法を詳細に説明する。まず、本発明のこの実施形態の適用可能なシナリオを、以下に簡単に説明するが、これに限定されるものではない。それどころか、本発明のこの実施形態は、重複排除ファイルが読み取られる必要のある、いずれのシナリオにも適用可能である。重複排除ファイルは、一般的にバックアップのために使用され、特定の元ファイルのバックアップファイルである。重複排除ファイルの内容は、対応する元ファイルの内容と少なくとも実質的に同じである。元ファイルのバックアップの間に、重複排除ファイルとバックアップ元ファイルとの間の対応関係が確立される。
【００６８】
元ファイルが損傷し、ユーザは元ファイルを復元するためにバックアップ重複排除ファイルを読み取ろうとしていると仮定する。この場合、ユーザは、マウスクリックまたはスクリーンタッチのようにインタラクティブな方法を用いることによってクライアントのユーザインターフェース（たとえば、特定のバックアップアプリケーション）を起動し、ユーザインターフェースの案内の下で元ファイルの復元の要求をクライアントに送信し、復元要求は元ファイルの名前を含む。クライアントは、元ファイルの復元の要求にしたがって、元ファイルに対応する重複排除ファイルのデータを記憶装置（たとえば、サーバ）から取得する。具体的には、クライアントは、モバイルコンピュータなどのユーザ装置上に実装されてもよい。クライアントはまた、サーバなどの記憶装置上に実装されてもよい。
【００６９】
このシナリオにおいて、本発明の一実施形態は、ファイル読み取り方法を提供する。図3を参照すると、方法の手順は、以下のステップを含む。
【００７０】
ステップ201：クライアントは、ユーザから元ファイル復元要求を受信し、元ファイル復元要求にしたがって複数の読み取り要求を生成する。
【００７１】
具体的には、読み取り要求は、重複排除ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含む。読み取り要求によって要求された読み取り対象データのデータ量は、重複排除ファイルの総データ量の一部分である。具体的な実現において、読み取り対象データの開始位置は、ファイルのオフセットによって示されてもよい。これらの読み取り要求は、すべて同じ重複排除ファイルを対象としている。すなわち、これらの読み取り要求内の重複排除ファイルの名前は同じである。
【００７２】
復元要求を受信すると、クライアントは、元ファイルと重複排除ファイルとの間の（バックアッププロセスの間に確立された）対応関係において元ファイルに対応する重複排除ファイルを検索し、見つかった重複排除ファイルのサイズを取得する。次に、複数の読み取り要求が生成される。複数の読み取り要求の各々によって要求される読み取り対象データのデータ量は、実際の条件にしたがってユーザによって構成されてもよく、通常はファイル読み取りプロトコルによって裏付けられる最大データ量を超過しない。
【００７３】
上述のように、1つの重複排除ファイルは、複数のファイルセグメントに分割されてもよい。重複排除ファイルに含まれるデータには特定の順序があるので、重複排除ファイルを分割することによって取得された複数のファイルセグメントは連続的である。
【００７４】
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つのファイルが複数のファイルセグメントに分割されてもよく、これらのファイルセグメントには順序がある。ファイルは、連続した順序にしたがってこれらのファイルセグメントを接合することによって、復元されることが可能である。
【００７５】
ステップ202：クライアントは読み取り要求を記憶装置に送信し、読み取り要求によって要求された読み取り対象データはファイルの一部分である。
【００７６】
具体的には、1つの重複排除ファイルの読み取りプロセスは、複数の読み取り要求を生成することによって複数の読み取りプロセスに分割されてもよく、各読み取りプロセスの間にデータの一部が重複排除ファイルから読み取られ、すべての読み取り要求によって要求されたデータは一緒になって、元ファイルのデータを構成する。クライアントは、各読み取りプロセスの間にファイル読み取りプロトコルを使用することによって、読み取り要求を記憶装置に送信する。
【００７７】
本発明のこの実施形態において、クライアントが重複排除ファイルの読み取りプロセスをZ個の読み取りプロセスに分割すると仮定すると、Z個の読み取りプロセスの間、記憶装置に送信される読み取り要求は、連続的に第一読み取り要求、第二読み取り要求、Z−1番目の要求、およびZ番目の読み取り要求である。
【００７８】
ステップ203：記憶装置はクライアントによって送信された読み取り要求を受信し、読み取り要求によって要求された読み取り対象データはファイルの一部分である。
【００７９】
ステップ204：記憶装置は、読み取り対象データであってキャッシュ内に位置するデータをキャッシュから読み取り、読み取り対象データであってキャッシュ内に位置していないデータを第一記憶媒体から読み取る。
【００８０】
記憶装置が、読み取り対象データであってキャッシュ内に位置するデータをキャッシュから読み取り、読み取り対象データであってキャッシュ内に位置していないデータを第一記憶媒体から読み取るということは、読み取り要求によって要求されたすべての読み取り対象データがキャッシュ内に存在する場合には、記憶装置はキャッシュからすべての読み取り対象データを読み取ること、読み取り対象データの一部がキャッシュ内に位置しており、読み取り対象データのその他の部分がキャッシュ内に存在していない場合には、記憶装置は、読み取り対象データの一部をキャッシュから読み取り、読み取り対象データのその他の部分を第一記憶媒体から読み取ること、および、キャッシュ内に読み取り対象データがまったくない場合には、記憶装置はすべての読み取り対象データを第一記憶媒体から読み取ることを含んでもよい。たとえば、ステップ203において受信された読み取り要求が重複排除ファイルの第一読み取り要求である場合、eptrに対応するファイルセグメントはキャッシュ内に存在しない。この場合、記憶装置は、すべての読み取り対象データに対応するeptrが指し示すファイルセグメントを第一記憶媒体から読み取り、読み取り対象データをクライアントに返す。ステップ203において受信された読み取り要求が重複排除ファイルの第一読み取り要求ではない場合、現在の読み取り要求によって要求された読み取り対象データの一部またはすべてがキャッシュ内に存在する可能性がある。
【００８１】
記憶装置がキャッシュから読み取り対象データ（のすべてまたは一部）を読み取るということは、以下を含む。第一に、記憶装置が読み取り対象データのすべてに対応するeptrを取得する。具体的には、記憶装置は、重複排除ファイルの名前にしたがってinode table内の重複排除ファイルのinodeに問い合わせをする。記憶装置は、読み取り対象データの位置と重複排除ファイルのinodeによって示されるeptrテーブル内のeptrとの間の対応関係にしたがって、読み取り対象データの開始位置に対応するeptrから始まる所定数のeptrを、順序通りに取得する。eptrテーブル内のeptrの順序はファイル内のファイルセグメントの順序と同じであり、eptrの数はファイルセグメントの数と同じであり、eptrはファイルセグメントと一対一の対応関係にある。第二に、記憶装置は、eptrとキャッシュ内に格納されたファイルセグメントとの間で事前に確立された対応関係において、取得eptrに対応するファイルセグメントが存在するか否かを問い合わせる。すべてのeptrに対応するファイルセグメントがキャッシュ内に存在する場合、記憶装置はキャッシュからすべての読み取り対象データを読み取る。そしてeptrの一部に対応するファイルセグメントがキャッシュ内に存在する場合には、記憶装置はキャッシュから読み取り対象データの一部を読み取る。なお、eptrとキャッシュ内に格納されたファイルセグメントとの間の対応関係を確立するプロセスの詳細については、ステップ208を参照することに留意すべきである。
【００８２】
ステップ205：読み取り要求が第一読み取り要求であるときは、ステップ206を実行し、読み取り要求が第二読み取り要求であるときは、手順を終了する。
【００８３】
第一読み取り要求は、先読みトリガ条件を満たす読み取り要求であり、第二読み取り要求は、第一読み取り要求に加えて重複排除ファイルも対象とする読み取り要求である。すなわち第一読み取り要求は先読みプロセスを起動してもよいが（詳細についてはステップ207参照）、しかし第二読み取り要求は先読みプロセスを起動しなくてもよい。
【００８４】
具体的には、先読みトリガ条件の内容は、この実施形態の以下の部分に記載される。
【００８５】
ステップ206：記憶装置は、読み取られた読み取り対象データ内の最終ファイルセグメントがファイルの最終ファイルセグメントであるか否かを判定する。読み取られた読み取り対象データ内の最終ファイルセグメントがファイルの最終ファイルセグメントである場合には、手順を終了する。そして読み取られた読み取り対象データ内の最終ファイルセグメントがファイルの最終ファイルセグメントではない場合には、ステップ207を実行する。
【００８６】
具体的には、読み取られた読み取り対象データ内の最終ファイルセグメントが重複排除ファイルの最終ファイルセグメントであるか否かを記憶装置が判定するということは、第一に、第一eptrが読み取られた読み取り対象データ内の最終ファイルセグメントを指し示す、第一eptrを取得すること、第二に、重複排除ファイルのinodeによって示されるeptrテーブル内の最終eptrを取得すること、および最後に、第一eptrと最終eptrとがeptrテーブル内にあるか否かを判定することを含む。2つのeptrが同じである場合、記憶装置は、読み取られた読み取り対象データ内の最終ファイルセグメントが重複排除ファイルの最終ファイルセグメントであると判定する。すなわち、重複排除ファイルが読み取られ、手順が終了する。2つの部分が異なる場合、ステップ207が実行される。
【００８７】
ステップ207：複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。
【００８８】
ステップ207は、以下を含んでもよい。記憶装置は、第一記憶媒体および所定数の未読み取りファイルセグメントが位置するコンテナから、所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータをキャッシュ内に格納する。閾値が50である場合、このステップにおいて、ファイルセグメントの所定数が50を超えるコンテナが、キャッシュ内に先読みされる。
【００８９】
所定数の未読み取りファイルセグメントは、ファイル内で連続的であり、所定数の未読み取りファイルセグメントは、ファイル内の読み取り対象データに対応するファイルセグメントに隣接している。所定数の未読み取りファイルセグメントは、残りの未読み取りファイルセグメントであってもよく、または残りの未読み取りファイルセグメントの一部分であってもよい。所定数の未読み取りファイルセグメントが未読み取りファイルセグメントのすべての一部分であるとき、未読み取りファイルセグメントは、たとえば1000個の未読み取りファイルセグメント、または10G Bytesの未読み取りファイルセグメントなど、数量またはデータ量によって示されてもよい。
【００９０】
ステップ207は、以下のステップを含んでもよい。
【００９１】
ステップ2071：第一eptrを取得する。ここで第一eptrは読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す。
【００９２】
図4を参照すると、取得された第一eptrはNであると仮定する。
【００９３】
ステップ2072：第一eptrに続く所定数のeptrを、ファイルのeptrテーブルから取得する。
【００９４】
具体的には、eptrは、その中に重複排除ファイルのファイルセグメントが位置する、第一記憶媒体のコンテナ内のチャンクを表す。すなわち、eptrがわかる場合、ファイルセグメントの記憶アドレスが決定される。
【００９５】
ステップ2072は、重複排除ファイルのeptrテーブル内で、開始ポインタとして第一eptrを取り、第一eptrに続くすべてのeptrの数が所定数を超えるか否かを判定するステップと、第一eptrに続くすべてのeptrの数が所定数を超える場合に、第一eptrに続くすべてのeptrを取得するステップと、第一eptrに続くすべてのeptrの数が所定数を超えない場合に、所定数のeptrを取得するステップとを含む。
【００９６】
具体的には、eptrテーブルはinodeに関連付けられている。eptrテーブルは、ファイルシステムによって重複排除ファイルに割り当てられる。eptrテーブルは、ファイルシステムによって指定された記憶領域内に格納されている。eptrテーブル内の各eptrは1つのファイルセグメントを指し示し、ファイルセグメントは連続的であるので、eptrテーブル内のeptrは連続的であり、eptrの順序は、重複排除ファイル内のファイルセグメントの順序と一致する。
【００９７】
所定数は、重複排除ファイルの全未読み取りファイルセグメントの総数であってもよく、重複排除ファイルの未読み取りファイルセグメントの総数の一部分であってもよく、または、所定数は、たとえば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と仮定されている。
【００９８】
ステップ2073：取得eptrが指し示すファイルセグメントが位置するコンテナ内で、所定数のeptrがコンテナの各々を指し示す回数の統計、すなわち所定数のファイルセグメントがコンテナ内に格納された回数を、収集する。
【００９９】
具体的には、各コンテナは9M Bytesであってもよい。可変長チャンクを実現するために、各ファイルセグメントのサイズは4Kから12Kの間である。すなわち、重複排除ファイルに関連して、各直接型eptrが指し示すファイルセグメントのサイズは平均的に8Kである。同じコンテナ内にあるファイルセグメントを指し示すeptrの数が約9M／8Kであるとき、基本的にコンテナ内の全ファイルセグメントが重複排除ファイルによって参照される。しかしながら、バックアップファイルセグメントが徐々に増加するにつれて、いくつかのコンテナが重複排除ファイルによって参照される回数は減少し、すなわち小数のeptrのみがこれらのコンテナを指し示す。たとえば、順序番号M’＋1のコンテナ内に位置するファイルセグメントを指し示すeptrが1つしかない、すなわちコンテナM’＋1をeptrが指し示す回数が1であると、想定される。
【０１００】
ステップ2074：統計収集によって取得された回数が閾値を超えるか否かを判定し、統計収集によって取得された回数が閾値を超える場合には、回数が閾値を超えるコンテナ内のデータを先読みする。
【０１０１】
所定の閾値は、たとえば5など、予め設定された固定値である。所定数のeptrがコンテナを指し示す回数が5を超えるとき、コンテナ内のデータは先読みされる。
【０１０２】
回数が閾値を超えるコンテナ内のデータを先読みするステップは、記憶された所定数のファイルセグメント内の未読み取りファイルセグメントの数の降順で、所定数が閾値を超えるコンテナ内のデータを先読みするステップを含む。
【０１０３】
eptrがコンテナを指し示す回数が所定の閾値よりも少ないとき、コンテナ内の未読み取りファイルセグメントは個別に読み取られてからキャッシュ内に格納されてもよく、これはコンテナ全体の中の全ファイルセグメントを読み取るのに比べて、キャッシュ内により大きい記憶領域を確保する。
【０１０４】
ステップ2075：先読みされたデータをキャッシュ内に格納する。
【０１０５】
ステップ2076：未読み取りファイルセグメントの数が閾値を超えないコンテナ内の未読み取りファイルセグメントを所定数の未読み取りファイルセグメントから選択し、選択された未読み取りファイルセグメントを先読みして、先読みされた未読み取りファイルセグメントをキャッシュ内に格納する。
【０１０６】
ステップ208：eptrとキャッシュ内に格納されたファイルセグメントとの間の対応関係を確立する。
【０１０７】
加えて、先読みされたデータがキャッシュ内に格納された後、ステップ2072で取得された所定数のeptrとキャッシュ内のファイルセグメントとの間の対応関係が確立される。対応関係は、リストの形式で記憶されてもよい。対応関係は、eptrを使用することによって記憶装置がキャッシュ内のデータを取得できるようにする。
【０１０８】
ステップ203からステップ208は、重複排除ファイル全体が読み取られてクライアントに返される前、繰り返し実行されてもよい。重複排除ファイルはクライアントによって要求されるファイルであり、元ファイルと同じである。この実施形態において、上記のステップは、重複排除ファイル全体がクライアントに返されるように、Z−1回だけ繰り返される必要がある。
【０１０９】
この実施形態において、先読みトリガ条件は、以下の条件、すなわち、第一に、記憶装置が読み取り要求を受信する時点は所定の時間枠の範囲内であること、第二に、読み取り要求によって要求された読み取り対象データはキャッシュ内に存在しないか、または読み取り要求によって要求された読み取り対象データの一部がキャッシュ内に存在しないこと、第三に、記憶装置が読み取り要求によって要求された読み取り対象データを読み取った後、キャッシュ内のファイルに関する未読み取りファイルセグメントの数は予め設定された数よりも少ないこと、そして第四に、読み取り要求によって要求された読み取り対象データに対応するファイルセグメントは、先行する先読みの間の所定数の未読み取りファイルセグメント以外の未読み取りファイルセグメントであることのうちの1つ以上を含んでもよい。
【０１１０】
現在採用されている先読みトリガ条件が上述のような第二トリガ条件であると仮定すると、このステップにおいて、読み取り要求が第一読み取り要求であるとき、読み取り要求によって要求された読み取り対象データはキャッシュ内に存在しない。この場合、読み取り要求は先読みトリガ条件を満たし、読み取り要求は第一読み取り要求である。
【０１１１】
現在採用されている先読みトリガ条件が上述のような第二および第三トリガ条件を含むと仮定すると、第三トリガ条件に関して、重複排除ファイルの特定の先読みプロセスが完了した後、重複排除ファイルの後続の読み取り要求が増加するにつれて、キャッシュ内のさらに多くのデータが読み取られる。したがってデータ量閾値は、キャッシュ内に格納された未読み取りファイルセグメントのために設定されてもよい。未読み取りファイルセグメントのデータ量が閾値よりも少ないとき、次回分の先読み動作が実行される。
【０１１２】
キャッシュ内の未読み取りファイルセグメントのデータ量を取得するステップは、まず、キャッシュから読み取り対象データを読み取って、読み取りファイルセグメントを標識するステップと、その後キャッシュ内の未標識ファイルセグメントのデータ量、すなわちキャッシュ内の未読み取りファイルセグメントのデータ量を統計収集するステップとを含んでもよい。
【０１１３】
第四トリガ条件に関しては、第二実施形態のステップ207に記載された先読みプロセスを参照されたい。現在の読み取り要求によって要求された読み取り対象データに対応するファイルセグメントが現在の読み取り要求の先行する先読みプロセスの間に決定された所定数の未読み取りファイルセグメントを含む場合、現在の読み取り要求によって要求された読み取り対象データはすでに読み取られているかも知れない。したがって、先読みプロセスを再度起動する必要はない。反対に、現在の読み取り要求によって要求された読み取り対象データに対応するファイルセグメントが現在の読み取り要求の先行する先読みプロセスの間に決定された所定数の未読み取りファイルセグメント以外の未読み取りファイルセグメントである場合には、現在の読み取り要求によって要求された読み取り対象データはまだ読み取られていない。したがって、現在の読み取り要求に続く読み取り要求に応えて先読みされたデータがキャッシュから読み取られるように、先読みプロセスが起動されてもよく、これにより、読み取り性能を向上させる。
【０１１４】
本発明のこの実施形態において提供された方法は、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは、記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【０１１５】
加えて、本発明のこの実施形態において、コンテナのうちの少なくとも1つから先読みされたデータは、所定数の未読み取りファイルセグメントが位置するコンテナの中でも、所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを含む。たとえば、所定数が280であり、閾値が50であり、280個のファイルセグメントが8つのコンテナ内に個別に配置されている場合、280個のファイルセグメントの中でも、8つのコンテナの中に格納されたファイルセグメントの数は、それぞれ20、25、25、30、30、43、52、および55である。コンテナのうちの少なくとも1つから先読みされたデータは、280個のファイルセグメントの中でも、ファイルセグメントの数がそれぞれ52および55であるコンテナ内のすべてのデータを含む。先読みの前に、所定数の未読み取りファイルセグメントの中でも、コンテナ内に格納されたファイルセグメントの数に対して個別に統計収集が実行される。数が所定の閾値を超えるときにはコンテナが読み取られ、したがってこれは使用されない過剰なデータの読み取りを防止し、第一記憶媒体からデータが読み取られる回数をさらに減少させる。このようにして、ファイル読み取り性能が改善される。
【０１１６】
第三実施形態
本発明のこの実施形態は、ファイル読み取り方法を提供する。この実施形態は、（1）複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みする方法が異なる点と、（2）先読みトリガ条件が異なる点とにおいて、本発明の第二実施形態とは異なっている。図5を参照すると、方法の手順は、以下のステップを含む。
【０１１７】
ステップ301：クライアントは、ユーザから元ファイル復元要求を受信し、元ファイル復元要求にしたがって複数の読み取り要求を生成する。
【０１１８】
ステップ301は、第二実施形態のステップ201と同じであり、これ以上本明細書には記載されない。
【０１１９】
ステップ302：クライアントは読み取り要求を記憶装置に送信し、読み取り要求によって要求された読み取り対象データはファイルの一部分である。
【０１２０】
ステップ302は第二実施形態のステップ202と同じであり、これ以上本明細書には記載されない。
【０１２１】
ステップ303：記憶装置はクライアントによって送信された読み取り要求を受信し、読み取り要求によって要求された読み取り対象データはファイルの一部分である。
【０１２２】
ステップ303は第二実施形態のステップ203と同じであり、これ以上本明細書には記載されない。
【０１２３】
ステップ304：記憶装置は、読み取り対象データであってキャッシュ内に位置するデータをキャッシュから読み取り、読み取り対象データであってキャッシュ内に位置していないデータを第一記憶媒体から読み取る。
【０１２４】
ステップ304は第二実施形態のステップ204と同じであり、これ以上本明細書には記載されない。
【０１２５】
ステップ305：読み取り要求が第一読み取り要求であるとき、ステップ306を実行する。そして読み取り要求が第二読み取り要求であるとき、手順を終了する。
【０１２６】
この実施形態において、先読みトリガ条件は、以下の条件、すなわち、第一に、記憶装置が第一読み取り要求を受信する時間は所定時間枠の範囲内であること、第二に、読み取り要求によって要求された読み取り対象データはキャッシュ内に存在しないか、または読み取り要求によって要求された読み取り対象データの一部がキャッシュ内に存在しないこと、そして第三に、記憶装置が読み取り要求によって要求された読み取り対象データを読み取った後、キャッシュ内の未読み取りファイルセグメントの数は予め設定された数よりも少ないことのうちの1つ以上を含んでもよい。
【０１２７】
これら3つのトリガ条件は第二実施形態に記載された最初の3つのトリガ条件と同じであり、これらはこれ以上本明細書には記載されない。
【０１２８】
ステップ306：記憶装置は、すでに読み取られた読み取り対象データ内の最終ファイルセグメントがファイルの最終ファイルセグメントであるか否かを判定する。すでに読み取られた読み取り対象データの最終ファイルセグメントがファイルの最終ファイルセグメントである場合、手順を終了する。そしてすでに読み取られた読み取り対象データの最終ファイルセグメントがファイルの最終ファイルセグメントではない場合には、ステップ307を実行する。
【０１２９】
ステップ306は第二実施形態のステップ206と同じであり、これ以上本明細書には記載されない。
【０１３０】
ステップ307：複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。
【０１３１】
ステップ307は、以下を含んでもよい。記憶装置は、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。所定数の未読み取りファイルセグメントは、ファイル内で連続的であり、所定数の未読み取りファイルセグメントは、ファイル内の読み取り対象データに対応するファイルセグメントに隣接している。用語「ファイル内で連続的（contiguous in file）」とは、ファイルセグメントに順序があることを意味し、ファイルは、順序にしたがってこれらのファイルセグメントを接合することによって、復元されることが可能である。
【０１３２】
ステップ307は、以下のステップを含んでもよい。
【０１３３】
ステップ3071：第一eptrを取得する。ここで第一eptrは読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す。
【０１３４】
ステップ3071は第二実施形態のステップ2071と同じであり、これ以上本明細書には記載されない。
【０１３５】
ステップ3072：第一eptrに続く所定数のeptrを、ファイルのeptrテーブルから取得する。
【０１３６】
ステップ3072は第二実施形態のステップ2072と同じであり、これ以上本明細書には記載されない。
【０１３７】
ステップ3703：取得eptrが指し示すファイルセグメントが位置するコンテナ内のデータを先読みする。
【０１３８】
具体的には、先に記載されたように、eptrは、重複排除ファイルのファイルセグメントが関連する第一記憶媒体のコンテナ内のチャンクを表す。取得された数のeptrにしたがって、所定数のeptrが指し示すファイルセグメントが位置するコンテナのシリアル番号が取得されてもよく、コンテナ内のデータが読み取られてもよい。
【０１３９】
ステップ3074：先読みされたデータをキャッシュ内に格納する。
【０１４０】
ステップ3074は第二実施形態のステップ2075と同じであり、これ以上本明細書には記載されない。
【０１４１】
ステップ308：eptrとキャッシュ内に格納されたファイルセグメントとの間の対応関係を確立する。
【０１４２】
ステップ308は第二実施形態のステップ208と同じであり、これ以上本明細書には記載されない。
【０１４３】
ステップ303からステップ308は、重複排除ファイル全体が読み取られてクライアントに返されるまで、繰り返し実行される。
【０１４４】
本発明のこの実施形態において提供された方法は、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは、記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【０１４５】
第四実施形態
本発明のこの実施形態は、ファイル読み取り方法を提供する。この実施形態は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みする方法が異なる点において、本発明の第二実施形態および第三実施形態とは異なっている。図6を参照すると、方法の手順は以下を含む。
【０１４６】
ステップ401：クライアントは、ユーザから元ファイル復元要求を受信し、元ファイル復元要求にしたがって複数の読み取り要求を生成する。読み取り要求の各々によって要求されたデータは元ファイルのデータの一部分であり、複数の読み取り要求によって要求されたデータは一緒になって元ファイルを形成する。
【０１４７】
ステップ401は第三実施形態のステップ301と同じであり、これ以上本明細書には記載されない。後のステップは、一例として特定の読み取り要求を使用することによって記載される。
【０１４８】
ステップ402：クライアントは読み取り要求を記憶装置に送信し、読み取り要求によって要求された読み取り対象データはファイルの一部分である。
【０１４９】
ステップ402は第三実施形態のステップ302と同じであり、これ以上本明細書には記載されない。
【０１５０】
ステップ403：記憶装置はクライアントによって送信された読み取り要求を受信し、読み取り要求によって要求された読み取り対象データはファイルの一部分である。
【０１５１】
ステップ403は第三実施形態のステップ303と同じであり、これ以上本明細書には記載されない。
【０１５２】
ステップ404：記憶装置は、読み取り対象データであってキャッシュ内に位置するデータをキャッシュから読み取り、読み取り対象データであってキャッシュ内に位置していないデータを第一記憶媒体から読み取る。
【０１５３】
ステップ404は第三実施形態のステップ304と同じであり、これ以上本明細書には記載されない。
【０１５４】
ステップ405：読み取り要求が第一読み取り要求であるとき、ステップ406を実行する。そして読み取り要求が第二読み取り要求であるとき、手順を終了する。
【０１５５】
ステップ405は第三実施形態のステップ305と同じであり、これ以上本明細書には記載されない。
【０１５６】
ステップ406：記憶装置は、すでに読み取られた読み取り対象データ内の最終ファイルセグメントがファイルの最終ファイルセグメントであるか否かを判定する。すでに読み取られた読み取り対象データの最終ファイルセグメントがファイルの最終ファイルセグメントである場合、手順を終了する。そしてすでに読み取られた読み取り対象データの最終ファイルセグメントがファイルの最終ファイルセグメントではない場合には、ステップ407を実行する。
【０１５７】
ステップ406は第三実施形態のステップ306と同じであり、これ以上本明細書には記載されない。
【０１５８】
ステップ407：複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。
【０１５９】
ステップ407は、以下を含んでもよい。記憶装置は、所定数のファイルセグメントが位置する複数のコンテナのうちの少なくとも1つのコンテナ内のデータを、所定数の未読み取りファイルセグメントが位置するコンテナのシリアル番号の順序にしたがって第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。
【０１６０】
所定数の未読み取りファイルセグメントは、ファイル内で連続的であり、所定数の未読み取りファイルセグメントは、ファイル内の読み取り対象データに対応するファイルセグメントに隣接している。用語「ファイル内で連続的」とは、ファイルセグメントに順序があることを意味し、ファイルは、順序にしたがってこれらのファイルセグメントを接合することによって、復元されることが可能である。
【０１６１】
ステップ407は、以下のステップを含んでもよい。
【０１６２】
ステップ4071：第一eptrを取得する。ここで第一eptrは読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す。
【０１６３】
ステップ4071は第三実施形態のステップ3071と同じであり、これ以上本明細書には記載されない。
【０１６４】
ステップ4072：第一eptrに続く所定数のeptrを、ファイルのeptrテーブルから取得する。
【０１６５】
ステップ4072は第三実施形態のステップ3072と同じであり、これ以上本明細書には記載されない。
【０１６６】
ステップ4073：取得eptrが指し示すファイルセグメントが位置するコンテナのシリアル番号の順序にしたがって、取得eptrが指し示すファイルセグメントが位置する複数のコンテナのうちの少なくとも1つのコンテナ内のデータを先読みする。
【０１６７】
具体的には、取得された所定数のeptrにしたがって、所定数のeptrが指し示すファイルセグメントが位置するコンテナのシリアル番号が取得されてもよい。すべてのコンテナは、シリアル番号の順序にしたがって、第一記憶媒体の中に分散される。コンテナのシリアル番号は、開始記憶アドレスから終了記憶アドレスまでのアドレスセグメントであってもよい。図4を参照すると、Nが指し示すコンテナのシリアル番号はM＋2であり、N＋1が指し示すコンテナのシリアル番号はM＋1であり、N＋2が指し示すコンテナのシリアル番号はM＋2であり、N＋xが指し示すコンテナのシリアル番号はM＋yであると仮定される。
【０１６８】
【表１】
2016526718.tif 000003
【０１６９】
第一記憶媒体内の複数のコンテナのうちの少なくとも1つのコンテナ内のデータのすべては、コンテナのシリアル番号の順序にしたがって読み取られる。
【０１７０】
ステップ4074：先読みされたデータをキャッシュ内に格納する。
【０１７１】
ステップ4074は第三実施形態のステップ3074と同じであり、これ以上本明細書には記載されない。
【０１７２】
ステップ408：eptrとキャッシュ内に格納されたファイルセグメントとの間の対応関係を確立する。
【０１７３】
ステップ408は第三実施形態のステップ308と同じであり、これ以上本明細書には記載されない。
【０１７４】
ステップ403からステップ408は、重複排除ファイル全体が読み取られてクライアントに返されるまで、繰り返し実行される。
【０１７５】
本発明のこの実施形態において提供された方法は、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減するファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは、記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【０１７６】
加えて、この実施形態において、第一記憶媒体の複数のコンテナのうちの少なくとも1つのコンテナ内のすべてのデータが、コンテナのシリアル番号の順序にしたがって読み取られる。ファイル記憶ルールに基づいて、元ファイルの重複排除の間、一般的に、重複排除ファイル内に格納されていないファイルセグメントは、コンテナのシリアル番号の順序にしたがって記憶システム内に順次記憶される。したがって、コンテナもまたコンテナのシリアル番号の順序にしたがって順次先読みされる場合、コンテナから先読みされたデータは、1つまたは複数の次回読み取り要求によって要求される読み取り対象データであってもよい。したがって、この実施形態によれば、次回読み取り要求の実行速度は改善されることが可能であり、そのデータが第一記憶媒体から読み取られる回数は減少され、ファイル読み取り性能は改善される。加えて、シリアル番号にしたがってコンテナを順序決定し、その後先読みを行うことは、簡単な動作であって実行しやすい。
【０１７７】
コンテナのシリアル番号の順序は昇順であってもよく、これらのシリアル番号は不連続的であってもよい。たとえば、先読みの間、未読み取りファイルセグメントが位置するコンテナのシリアル番号がそれぞれ10、13、15、20、21、および40であることが問い合わせによって見出された場合、今回先読みされるコンテナは6つのコンテナから選択されてもよい。3つのコンテナが今回先読みされると仮定すると、先読みされるコンテナのシリアル番号は、それぞれ10、13、および15である。
【０１７８】
第五実施形態
本発明のこの実施形態はファイル記憶装置を提供し、これは第一実施形態で提供されたファイル読み取り方法に適用可能である。記憶装置はファイルを格納するように構成されており、記憶装置は第一記憶媒体およびキャッシュを含む。キャッシュのアクセス速度は、第一記憶媒体よりも速い。第一記憶媒体は複数のコンテナを有する。ファイルは複数のファイルセグメントを含む。図7を参照すると、記憶装置は以下を含む。
【０１７９】
クライアントによって送信された第一読み取り要求を受信するように構成された受信モジュール501であって、第一読み取り要求によって要求された読み取り対象データはファイルの一部分である、受信モジュール501を、記憶装置は含む。
【０１８０】
具体的には、第一読み取り要求は、ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含んでもよい。読み取り対象データのデータ量は、ファイルの全データ量の一部分である。
【０１８１】
具体的には、読み取り要求によって要求された読み取り対象データは、第一読み取り要求によって要求された読み取り対象データの開始位置に対応するデータから始まる指定量のデータであり、指定量のデータは読み取り要求によって要求された読み取り対象データのデータ量と等しい。
読み取り対象データであってキャッシュ内に位置するデータをキャッシュから読み取り、読み取り対象データであってキャッシュ内に位置していないデータを第一記憶媒体から読み取るように構成された読み取りモジュール502と、
複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納するように構成された先読みモジュール503であって、先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む、先読みモジュール503とを、記憶装置は含む。
【０１８２】
具体的には、第一記憶媒体は、これに限定されるものではないが、磁気ディスク、フラッシュメモリ、またはCDを含む。キャッシュは、これに限定されるものではないが、メモリを含む。
【０１８３】
本発明のこの実施形態において提供される記憶装置は、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは、記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【０１８４】
第六実施形態
本発明のこの実施形態はファイル記憶装置を提供し、これは第二実施形態で提供されたファイル読み取り方法に適用可能である。記憶装置はファイルを格納するように構成されており、記憶装置は第一記憶媒体およびキャッシュを含む。キャッシュのアクセス速度は、第一記憶媒体よりも速い。第一記憶媒体は複数のコンテナを有する。ファイルは複数のファイルセグメントを含む。図8を参照すると、記憶装置は以下を含む。
クライアントによって送信された第一読み取り要求を受信するように構成された受信モジュール601であって、第一読み取り要求によって要求された読み取り対象データはファイルの一部分である、受信モジュール601を、記憶装置は含む。
【０１８５】
具体的には、第一読み取り要求は、ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含んでもよい。読み取り対象データのデータ量は、ファイルの全データ量の一部分である。
【０１８６】
具体的には、読み取り要求によって要求された読み取り対象データは、第一読み取り要求によって要求された読み取り対象データの開始位置に対応するデータから始まる指定量のデータであり、指定量のデータは読み取り要求によって要求された読み取り対象データのデータ量と等しい。
読み取り対象データであってキャッシュ内に位置するデータをキャッシュから読み取り、読み取り対象データであってキャッシュ内に位置していないデータを第一記憶媒体から読み取るように構成された読み取りモジュール602と、
複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納するように構成された先読みモジュール603であって、先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む、先読みモジュール603とを、記憶装置は含む。
【０１８７】
先読みモジュール603は、第一記憶媒体および所定数の未読み取りファイルセグメントが位置するコンテナから、所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータをキャッシュ内に格納するように構成されている。所定数の未読み取りファイルセグメントは、ファイル内で連続的であり、所定数の未読み取りファイルセグメントは、ファイル内の読み取り対象データに対応するファイルセグメントに隣接している。
【０１８８】
先読みモジュール603は、未読み取りファイルセグメントの数が閾値を超えないコンテナ内の未読み取りファイルセグメントを所定数の未読み取りファイルセグメントから選択し、選択された未読み取りファイルセグメントを先読みして、先読みされた未読み取りファイルセグメントをキャッシュ内に格納するようにさらに構成されている。
【０１８９】
先読みモジュール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とを含む。
【０１９０】
受信モジュール601によって受信された第一読み取り要求は先読みトリガ条件を満たす読み取り要求であり、先読みトリガ条件は、以下の条件、すなわち、記憶装置が第一読み取り要求を受信する時間は所定時間枠の範囲内であること、第一読み取り要求によって要求された読み取り対象データはキャッシュ内に存在せず、または第一読み取り要求によって要求された読み取り対象データはキャッシュ内に存在しないこと、記憶装置が第一読み取り要求によって要求された読み取り対象データを読み取った後、キャッシュ内にあってファイルに関連する未読み取りファイルセグメントの数は所定数よりも少ないこと、および、第一読み取り要求によって要求された読み取り対象データに対応するファイルセグメントは、先行する先読みの間の所定数の未読み取りファイルセグメントを除く未読み取りファイルセグメントであることのうちの1つ以上を含む。
【０１９１】
受信モジュール601によって受信された第一読み取り要求は、ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含んでもよい。
【０１９２】
読み取りモジュール602は、クライアントによって送信された第二読み取り要求を受信するようにさらに構成されており、第二読み取り要求によって要求された読み取り対象データはファイルの一部分である。
【０１９３】
先読みモジュール603は、第二読み取り要求によって要求された読み取り対象データであってキャッシュ内に位置するデータをキャッシュから読み取り、第二読み取り要求によって要求された読み取り対象データであってキャッシュ内に位置していないデータを第一記憶媒体から読み取るように構成されている。
【０１９４】
具体的には、第一記憶媒体は、これに限定されるものではないが、磁気ディスク、フラッシュメモリ、またはCDを含む。キャッシュは、これに限定されるものではないが、メモリを含む。
【０１９５】
本発明のこの実施形態において提供される記憶装置は、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【０１９６】
加えて、本発明のこの実施形態において、コンテナのうちの少なくとも1つから先読みされたデータは、所定数の未読み取りファイルセグメントが位置するコンテナの中でも、所定数の未読み取りファイルセグメントが閾値を超えるコンテナ内のデータを含む。たとえば、所定数が280であり、閾値が50であり、280個のファイルセグメントが8つのコンテナ内に個別に配置されている場合、280個のファイルセグメントの中でも8つのコンテナの中に格納されたファイルセグメント数は、それぞれ20、25、25、30、30、43、52、および55である。コンテナのうちの少なくとも1つから先読みされたデータは、280個のファイルセグメントの中でも、ファイルセグメントの数がそれぞれ52および55であるコンテナ内のすべてのデータを含む。先読みの前に、所定数の未読み取りファイルセグメントの中でも、コンテナ内に格納された未読み取りファイルセグメントの数に対して個別に統計収集が実行される。数が所定の閾値を超えるときにはコンテナが読み取られ、したがってこれは使用されない過剰なデータの読み取りを防止し、第一記憶媒体からデータが読み取られる回数をさらに減少させる。このようにして、ファイル読み取り性能が改善される。
【０１９７】
第七実施形態
本発明のこの実施形態はファイル記憶装置を提供し、これは第三実施形態で提供されたファイル読み取り方法に適用可能である。記憶装置はファイルを格納するように構成されており、記憶装置は第一記憶媒体およびキャッシュを含む。キャッシュのアクセス速度は、第一記憶媒体よりも速い。第一記憶媒体は複数のコンテナを有する。ファイルは複数のファイルセグメントを含む。図9を参照すると、記憶装置は、受信モジュール701、読み取りモジュール702、および先読みモジュール703を含む。受信モジュール701および読み取りモジュール702の構造は、第六実施形態の受信モジュール601および読み取りモジュール602の構造と同じであり、これらはこれ以上本明細書には記載されない。しかしながら、先読みモジュール703は所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納するように構成されている点が、異なっている。所定数の未読み取りファイルセグメントは、ファイル内で連続的であり、所定数の未読み取りファイルセグメントは、ファイル内の読み取り対象データに対応するファイルセグメントに隣接している。
【０１９８】
先読みモジュール703は、
第一eptrを取得するように構成された第三取得ユニット7031であって、第一eptrは読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第三取得ユニット7031と、
第一eptrに続く所定数のeptrを、ファイルのeptrテーブルから取得するように構成された第四取得ユニット7032と、
取得eptrが指し示すファイルセグメントが位置するコンテナ内のデータを先読みし、先読みされたデータをキャッシュ内に格納するように構成された第二先読みユニット7033とを含む。
【０１９９】
受信モジュール701によって受信された第一読み取り要求は先読みトリガ条件を満たす読み取り要求であり、先読みトリガ条件は、以下の条件、すなわち、記憶装置が第一読み取り要求を受信する時間は所定時間枠の範囲内であること、第一読み取り要求によって要求された読み取り対象データはキャッシュ内に存在せず、または第一読み取り要求によって要求された読み取り対象データはキャッシュ内に存在しないこと、および、記憶装置が第一読み取り要求によって要求された読み取り対象データを読み取った後、キャッシュ内の未読み取りファイルセグメントの数は予め設定された数よりも少ないことのうちの1つ以上を含む。
【０２００】
受信モジュール701によって受信された第一読み取り要求は、ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含んでもよい。
【０２０１】
具体的には、第一記憶媒体は、これに限定されるものではないが、磁気ディスク、フラッシュメモリ、またはCDを含む。キャッシュは、これに限定されるものではないが、メモリを含む。
【０２０２】
本発明のこの実施形態において提供される記憶装置は、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【０２０３】
加えて、本発明のこの実施形態において、コンテナのうちの少なくとも1つから先読みされたデータは、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを含む。ファイル記憶ルールに基づいて、これらのコンテナ内のデータは、次回読み取り要求によって要求される読み取り対象データであってもよい。したがって、所定数のファイルセグメントが位置するコンテナ内のすべてのデータをキャッシュ内に同時に先読みすることによって、第一記憶媒体からデータが読み取られる回数は減少され、ファイル読み取り性能は改善される。
【０２０４】
第八実施形態
本発明のこの実施形態はファイル記憶装置を提供し、これは第四実施形態で提供されたファイル読み取り方法に適用可能である。記憶装置はファイルを格納するように構成されており、記憶装置は第一記憶媒体およびキャッシュを含む。キャッシュのアクセス速度は、第一記憶媒体よりも速い。第一記憶媒体は複数のコンテナを有する。ファイルは複数のファイルセグメントを含む。図10を参照すると、記憶装置は、受信モジュール801、読み取りモジュール802、および先読みモジュール803を含む。受信モジュール801および読み取りモジュール802の構造は、第七実施形態の受信モジュール701および読み取りモジュール702の構造と同じであり、これらはこれ以上本明細書には記載されない。しかしながら、先読みモジュール803は、所定数の未読み取りファイルセグメントが位置するコンテナのシリアル番号の順序にしたがって第一記憶媒体から、所定数のファイルセグメントが位置する複数のコンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータをキャッシュ内に格納するように構成されている点が、異なっている。所定数の未読み取りファイルセグメントは、ファイル内で連続的であり、所定数の未読み取りファイルセグメントは、ファイル内の読み取り対象データに対応するファイルセグメントに隣接している。
【０２０５】
先読みモジュール803は、
第一eptrを取得するように構成された第五取得ユニット8031であって、第一eptrは読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第五取得ユニット8031と、
第一eptrに続く所定数のeptrを、ファイルのeptrテーブルから取得するように構成された第六取得ユニット8032と、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナのシリアル番号の順序にしたがって、取得されたアドレスポインタが指し示すファイルセグメントが位置する複数のコンテナのうちの少なくとも1つのコンテナ内のデータを先読みするように構成された第三先読みユニット8033とを含む。
【０２０６】
受信モジュール801によって受信された第一読み取り要求は先読みトリガ条件を満たす読み取り要求であり、先読みトリガ条件は、以下の条件、すなわち、記憶装置が第一読み取り要求を受信する時間は所定時間枠の範囲内であること、第一読み取り要求によって要求された読み取り対象データはキャッシュ内に存在せず、または第一読み取り要求によって要求された読み取り対象データはキャッシュ内に存在しないこと、および、記憶装置が第一読み取り要求によって要求された読み取り対象データを読み取った後、キャッシュ内の未読み取りファイルセグメントの数は予め設定された数よりも少ないことのうちの1つ以上を含む。
【０２０７】
受信モジュール801によって受信された第一読み取り要求は、ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含んでもよい。
【０２０８】
具体的には、第一記憶媒体は、これに限定されるものではないが、磁気ディスク、フラッシュメモリ、またはCDを含む。キャッシュは、これに限定されるものではないが、メモリを含む。
【０２０９】
本発明のこの実施形態において提供される記憶装置は、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは、記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【０２１０】
加えて、この実施形態において、第一記憶媒体の複数のコンテナのうちの少なくとも1つのコンテナ内のすべてのデータが、コンテナのシリアル番号の順序にしたがって読み取られる。ファイル記憶ルールに基づいて、元ファイルの重複排除の間、一般的に、重複排除ファイル内に格納されていないファイルセグメントは、コンテナのシリアル番号の順序にしたがって記憶システム内に順次記憶される。したがって、コンテナもまたコンテナのシリアル番号の順序にしたがって順次先読みされる場合、コンテナから先読みされたデータは、1つまたは複数の次回読み取り要求によって要求される読み取り対象データであってもよい。したがって、この実施形態によれば、次回読み取り要求の実行速度は改善されることが可能であり、そのデータが第一記憶媒体から読み取られる回数は減少され、ファイル読み取り性能は改善される。加えて、シリアル番号にしたがってコンテナを順序決定し、その後先読みを行うことは、簡単な動作であって実行しやすい。
【０２１１】
コンテナのシリアル番号の順序は昇順であってもよく、これらのシリアル番号は不連続的であってもよい。たとえば、先読みの間、未読み取りファイルセグメントが位置するコンテナのシリアル番号がそれぞれ10、13、15、20、21、および40であることが問い合わせによって見出された場合、今回先読みされるコンテナは6つのコンテナから選択されてもよい。3つのコンテナが今回先読みされると仮定すると、先読みされるコンテナのシリアル番号は、それぞれ10、13、および15である。
【０２１２】
第九実施形態
本発明のこの実施形態はファイル記憶装置を提供し、装置は、図11に示されるように、コンピュータ（スマートフォンおよびタブレットコンピュータなどの携帯用コンピュータシステムを含む）、またはサーバであってもよい。装置は一般的に、少なくとも1つのプロセッサ10（たとえば、CPU）、ユーザインターフェース11、少なくとも1つのネットワークインターフェース12またはその他の通信インターフェース、第一記憶媒体13、少なくとも1つの通信バス14、およびキャッシュ15を含む。図11に示されるコンピュータの構造は、コンピュータに対していかなる制限も構成するものではなく、それどころかコンピュータは、図11よりも少ないかまたは多い部品、またはいくつかの部品の組み合わせ、または異なる配置の部品を含んでもよいことを、当業者は理解するだろう。
【０２１３】
図11を参照して、記憶装置の構成部品を以下に詳細に記載する。
【０２１４】
通信バス14は、プロセッサ10、第一記憶媒体13、キャッシュ15、および通信インターフェースの間の接続および通信を実行するように構成されている。
【０２１５】
少なくとも1つのネットワークインターフェース12（有線でも無線でもよい）は、インターネット、広域ネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワークなどを通じて、記憶装置と少なくとも1つの別のコンピュータまたはサーバとの間の通信接続を実現する。
【０２１６】
第一記憶媒体13は、これに限定されるものではないが、磁気ディスク、フラッシュメモリ、またはCDを含む。第一記憶媒体13は複数のコンテナを有する。キャッシュ15は、これに限定されるものではないが、メモリを含む。キャッシュ15のアクセス速度は第一記憶媒体13よりも速い。第一記憶媒体13およびキャッシュ15は、それぞれソフトウェアプログラムおよびアプリケーションモジュールを格納するように構成されていてもよい。プロセッサ10は、第一記憶媒体13およびキャッシュ15に格納されたソフトウェアプログラムおよびアプリケーションモジュールを起動することによって、記憶装置の様々な機能アプリケーションおよびデータ処理を実行する。第一記憶媒体13およびキャッシュは、それぞれプログラム記憶領域およびデータ記憶領域を主に含んでもよい。プログラム記憶領域は、オペレーティングシステム、少なくとも1つの機能（たとえば、ファイル先読み機能）によって必要とされるアプリケーションプログラム、などを格納してもよい。データ記憶領域は、記憶装置の使用にしたがって作成されたデータなどを格納してもよい。加えて、第一記憶媒体13は、不揮発性メモリ（non-volatile memory）、たとえば少なくとも1つのディスク記憶コンポーネント、フラッシュメモリコンポーネント、またはその他の揮発性固体記憶コンポーネントなどを、含んでもよい。キャッシュ15はメモリを含んでもよい。
【０２１７】
ユーザインターフェース10は、これに限定されるものではないが、出力装置および入力装置を含む。入力装置は一般的に、キーボードおよびクリック装置（たとえば、マウス、トラックボール（trackball）、タッチパッド、またはタッチスクリーン）を含む。出力装置は一般的に、ディスプレイ、プリンタ、およびプロジェクタなど、コンピュータ情報を表示することが可能な装置を含む。ディスプレイは、ユーザまたはユーザに対して提供されたファイルによって入力された情報を表示するように構成されていてもよい。キーボードおよびクリック装置は、入力された数字または文字情報を受信し、たとえば動作プロンプトにしたがってユーザによって発行された動作指示を取得するなど、記憶装置のユーザ設定および機能制御に関する信号入力を生成するように構成されていてもよい。
【０２１８】
プロセッサ10は、記憶装置の制御センターであり、様々なインターフェースおよび配線を使用することによって記憶装置全体の様々な部品に接続されており、第一記憶媒体13およびキャッシュ15に格納されたソフトウェアプログラムおよび／またはアプリケーションモジュールを起動または実行し、第一記憶媒体13およびキャッシュ15に格納されたデータを呼び出すことによって、記憶装置全体を監視するために、記憶装置の様々な機能およびデータ処理を実現する。
【０２１９】
具体的には、第一記憶媒体13およびキャッシュ15に格納されたソフトウェアプログラムおよび／またはアプリケーションモジュールを起動または実行し、第一記憶媒体13およびキャッシュ15に格納されたデータを呼び出すことによって、プロセッサ10は、以下のステップ、すなわち、
ユーザインターフェース10またはネットワークインターフェース12を通じて送信された第一読み取り要求を受信するステップであって、第一読み取り要求によって要求された読み取り対象データはファイルの一部分である、ステップと、読み取り対象データであってキャッシュ15内に位置するデータをキャッシュ15から読み取り、読み取り対象データであってキャッシュ15内に位置していないデータを第一記憶媒体13から読み取るステップと、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体13から先読みし、先読みされたデータをキャッシュ15内に格納するステップであって、先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む、ステップとを実現してよい。
【０２２０】
この実施形態の実現方法において、プロセッサ10は、第一記憶媒体13、および所定数の未読み取りファイルセグメントが位置するコンテナから、所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータをキャッシュ15内に格納するように構成されていてもよい。所定数の未読み取りファイルセグメントは、ファイル内で連続的であり、所定数の未読み取りファイルセグメントは、ファイル内の読み取り対象データに対応するファイルセグメントに隣接している。
【０２２１】
この実施形態の別の実現方法において、プロセッサ10は、未読み取りファイルセグメントの数が閾値を超えないコンテナ内の未読み取りファイルセグメントを所定数の未読み取りファイルセグメントから選択し、選択された未読み取りファイルセグメントを先読みして、先読みされた未読み取りファイルセグメントをキャッシュ15内に格納するように構成されていてもよい。
【０２２２】
この実施形態の別の実現方法において、プロセッサ10は、第一eptrが読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第一eptrを取得し、第一eptrに続く所定数のeptrを、ファイルのeptrテーブルから取得し、取得eptrが指し示すファイルセグメントが位置するコンテナ内で、所定数のeptrがコンテナの各々を指し示す回数を統計収集し、統計収集によって取得された回数が閾値を超えるか否かを判定し、統計収集によって取得された回数が閾値を超える場合に、回数が閾値を超えるコンテナ内のデータを先読みするように構成されていてもよい。
【０２２３】
この実施形態の別の実現方法において、プロセッサ10は、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを第一記憶媒体13から先読みし、先読みされたデータをキャッシュ15内に格納するように構成されていてもよい。所定数の未読み取りファイルセグメントは、ファイル内で連続的であり、所定数の未読み取りファイルセグメントは、ファイル内の読み取り対象データに対応するファイルセグメントに隣接している。
【０２２４】
この実施形態の別の実現方法において、プロセッサは、第一eptrが読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第一eptrを取得し、開始ポインタとして第一eptrを使用することによって、第一eptrに続く所定数のeptrをファイルのeptrテーブルから取得し、取得eptrが指し示すファイルセグメントが位置するコンテナ内のデータを先読みするように構成されていてもよい。
【０２２５】
この実施形態の別の実現方法において、プロセッサ10は、所定数の未読み取りファイルセグメントが位置するコンテナのシリアル番号の順序にしたがって第一記憶媒体13から、所定数のファイルセグメントが位置する複数のコンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータをキャッシュ15内に格納するように構成されていてもよい。
【０２２６】
この実施形態の別の実現方法において、プロセッサ10は、第一eptrが読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第一eptrを取得し、第一eptrに続く所定数のeptrをファイルのeptrテーブルから取得し、取得eptrが指し示すファイルセグメントが位置するコンテナのシリアル番号の順序にしたがって、取得eptrが指し示すファイルセグメントが位置する複数のコンテナのうちの少なくとも1つのコンテナ内のデータを先読みするように構成されていてもよい。
【０２２７】
この実施形態の別の実現方法において、プロセッサ10は、読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントがファイルの最終ファイルであるか否かを判定し、読み取り対象データ内の最終ファイルセグメントがファイルの最終ファイルセグメントではない場合に、第一eptrを取得するように構成されていてもよい。
【０２２８】
この実施形態の別の実現方法において、プロセッサ10は、ファイルのeptrテーブル内で、開始ポインタとして第一eptrを取り、第一eptrに続く全eptrの数が所定数を超えるか否かを判定し、第一eptrに続くすべてのeptrの数が所定数を超える場合に、第一eptrに続くすべてのeptrを取得し、第一eptrに続くすべてのeptrの数が所定数を超えない場合に、所定数のeptrを取得するように構成されていてもよい。
【０２２９】
この実施形態の別の実現方法において、受信モジュール10によって受信された第一読み取り要求は先読みトリガ条件を満たす読み取り要求であり、先読みトリガ条件は、以下の条件、すなわち、記憶装置が第一読み取り要求を受信する時間は所定時間枠の範囲内であること、第一読み取り要求によって要求された読み取り対象データはキャッシュ15内に存在せず、または第一読み取り要求によって要求された読み取り対象データの一部はキャッシュ15内に存在しないこと、および、記憶装置が第一読み取り要求によって要求された読み取り対象データを読み取った後、キャッシュ15内の未読み取りファイルセグメントの数は予め設定された数よりも少ないことのうちの1つ以上を含む。
【０２３０】
この実施形態の別の実現方法において、プロセッサ10によって受信された第一読み取り要求は先読みトリガ条件を満たす読み取り要求であり、先読みトリガ条件は、以下の条件、すなわち、記憶装置が第一読み取り要求を受信する時間は所定時間枠の範囲内であること、第一読み取り要求によって要求された読み取り対象データはキャッシュ15内に存在せず、または第一読み取り要求によって要求された読み取り対象データの一部はキャッシュ15内に存在しないこと、記憶装置が第一読み取り要求によって要求された読み取り対象データを読み取った後、キャッシュ15内の未読み取りファイルセグメントの数は予め設定された数よりも少ないこと、および、第一読み取り要求によって要求された読み取り対象データに対応するファイルセグメントは、先行する先読みの間の所定数の未読み取りファイルセグメントを除く未読み取りファイルセグメントであることのうちの1つ以上を含む。
【０２３１】
選択的に、プロセッサ10は、第二読み取り要求によって要求された読み取り対象データはファイルの一部分である、クライアントによって送信された第二読み取り要求を受信し、第二読み取り要求によって要求された読み取り対象データであってキャッシュ15内に位置するデータをキャッシュ15から読み取り、第二読み取り要求によって要求された読み取り対象データであってキャッシュ15内に位置していないデータを第一記憶媒体13から読み取るようにさらに構成されている。
【０２３２】
具体的には、プロセッサ10によって受信された第一読み取り要求は、ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含んでもよい。読み取り対象データのデータ量は、ファイルの全データ量の一部分である。
【０２３３】
さらに、動作プロンプトにしたがってユーザによって発行されるか、または触接クリックを使用することによって発行された動作指示が、入力装置を使用することによって取得されるとき、プロセッサ10は、入力装置によって取得された動作指示に対応する動作をさらに実行してもよい。
【０２３４】
本発明のこの実施形態において提供される記憶装置は、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このように、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは、記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【０２３５】
第十実施形態
本発明のこの実施形態は、ファイル読み取りシステムを提供する。図12を参照すると、システムは、ユーザ機器1001およびファイル記憶装置1002を含む。
【０２３６】
ユーザ機器1001は、ユーザから元ファイル復元要求を受信し、元ファイル復元要求にしたがって複数の読み取り要求を生成し、読み取り要求を記憶装置1002に送信するように構成されている。具体的には、読み取り要求は、これに限定されるものではないが、ファイルの名前、読み取り対象データの開始位置、および読み取り対象データのデータ量を含んでもよい。1つの読み取り要求によって要求される読み取り対象データの量は、ファイルの総データ量の一部分である。これらの読み取り要求がすべて同じファイルを対象としていることは、明白である。すなわち、これらの読み取り要求内のファイルの名前は同じである。
【０２３７】
記憶装置1002は、第五、第六、第七、または第八実施形態に記載された記憶装置であり、これ以上本明細書には記載されない。
【０２３８】
本発明のこの実施形態において提供されるシステムは、以下の有益な効果を達成するだろう。クライアントによって送信された第一読み取り要求を受信すると、記憶装置は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みし、先読みされたデータをキャッシュ内に格納する。ここで先読みされるコンテナはファイルの少なくとも1つの未読み取りファイルセグメントを含む。このようにして、クライアントによってその後送信されたファイルの読み取り要求を受信すると、記憶装置はキャッシュ内の先読みされたデータから読み取り対象データを直接読み取ることができ、これによってデータの読み取りにおける時間オーバヘッドを削減する。ファイル全体のデータを先読みしてそのデータをキャッシュ内に格納する必要がないので、キャッシュによって必要とされる記憶領域は大きくない。本発明のこの実施形態におけるキャッシュは共有メモリであってもよい。場合により、キャッシュは記憶システム内の元メモリを直接使用することによって実現されてもよい。したがって、本発明の実施形態において、追加のハードウェア支出は必要とされず、これによりハードウェア費用を削減する。
【０２３９】
なお、上記実施形態において提供された記憶装置によるファイル読み取りの間、上記機能モジュールの分割を用いることによってのみ説明が行われることに留意されたい。実際には、機能は必要に応じた実現のために、異なる機能モジュールに割り当てられてもよい。具体的には、装置の内部構造は、上述された機能のすべてまたは一部を実現するために、異なる機能モジュールに分割される。加えて、上記実施形態において提供された記憶装置は、ファイル読み取り方法を図解した実施形態と同じ発明的概念に基づいている。具体的な実現プロセスについては方法実施形態を参照されたく、これらはこれ以上本明細書には記載されない。
【０２４０】
本発明の上記実施形態の順序番号は、説明の便宜上のためのものに過ぎず、実施形態の優先傾向を表すものではない。
【０２４１】
実施形態のステップのすべてまたは一部がハードウェアまたは関連ハードウェアに指示するプログラムによって実現されてもよいことを、当業者は理解するだろう。プログラムは、コンピュータ可読記憶媒体に格納されてもよい。記憶媒体は、読み取り専用メモリ、磁気ディスク、または光ディスクを含んでもよい。
【０２４２】
上記の説明は、本発明の単なる例示的実施形態に過ぎず、本発明を限定するように意図されるものではない。本発明の精神および原理から逸脱することなくなされるいずれの変更、同等の置き換え、または改良も、本発明の保護範囲に含まれるものとする。
【符号の説明】
【０２４３】
501  受信モジュール
502  読み取りモジュール
503  先読みモジュール
601  受信モジュール
602  読み取りモジュール
603  先読みモジュール
6031  第一取得ユニット
6032  第二取得ユニット
6033  統計収集ユニット
6034  第一先読みユニット
701  受信モジュール
702  読み取りモジュール
703  先読みモジュール
7031  第三取得ユニット
7032  第四取得ユニット
7033  第二先読みユニット
801  受信モジュール
802  読み取りモジュール
803  先読みモジュール
8031  第五取得ユニット
8032  第六取得ユニット
8033  第三先読みユニット
10  プロセッサ
11  ユーザインターフェース
12  ネットワークインターフェース
13  第一記憶媒体
14  通信バス
15  キャッシュ
1001  ユーザ機器
1002  ファイル記憶装置
【図１】
2016526718.tif 000004
【図２】
2016526718.tif 000005
【図３】
2016526718.tif 000006
【図４】
2016526718.tif 000007
【図５】
2016526718.tif 000008
【図６】
2016526718.tif 000009
【図７】
2016526718.tif 000010
【図８】
2016526718.tif 000011
【図９】
2016526718.tif 000012
【図１０】
2016526718.tif 000013
【図１１】
2016526718.tif 000014
【図１２】
2016526718.tif 000015
【手続補正書】
【提出日】平成28年1月28日(2016.1.28)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００２
【補正方法】変更
【補正の内容】
【０００２】
データ重複排除（Data De-duplication）技術は、ストレージ分野において広く使用されている。たとえば、バックアップシステムにおいて、データ重複排除技術は、バックアップ対象のファイル内の特定サイズのチャンクを連続的に読み取るために、および事前バックアップ済みチャンク内に同じチャンクが存在しているか否かを検索するために使用される。バックアップ対象のチャンクと同じバックアップ済みチャンクがある場合には、当該チャンクはバックアップされない。代わりに、バックアップ対象のファイルは事前バックアップ済みチャンクを参照する。見つからないチャンクのみがバックアップされる。事前バックアップ済みチャンクを参照するファイルは、データ重複排除ファイルと称される。記憶システム内のバックアップ済みチャンクは、重複チャンクと称される。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００５１
【補正方法】変更
【補正の内容】
【００５１】
本発明の一実施形態は、記憶装置に格納されたファイルの読み取りに適用可能であり、具体的には、記憶装置に格納された重複排除ファイルの読み取りに適用可能な、ファイル読み取り方法を提供する。記憶装置は一般的に、第一記憶媒体（第一記憶媒体は、これに限定されるものではないが、ディスク、フラッシュメモリ、およびコンパクトディスク（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のファイルセグメントに加えて別のファイルのファイルセグメントをさらに含んでもよいことに留意されたい。本発明のこの実施形態において、アクセス速度は、記憶媒体からデータを読み取る速度であり、記憶媒体は、キャッシュまたは第一記憶媒体であってもよい。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００５３
【補正方法】変更
【補正の内容】
【００５３】
まず、Linuxファイルシステムにおける重複排除ファイルの記憶構造が説明される。重複排除ファイルは2つの部分、すなわちインデックスノード（index node，inode）およびコンテナを含む。inodeは、ファイルシステム内に保持されるインデックスノードテーブル（index node table，inode table）内に格納されている。一旦重複排除ファイルが作成されると、ファイルシステムは1つのinodeを重複排除ファイルに割り当てる。inodeは、重複排除ファイルのメタ情報（meta-information）（たとえば、ファイルのサイズおよび作成時間）を記録するために使用される。各コンテナは指定サイズ（たとえば、9MB）の記憶領域であり、各コンテナは複数のチャンクに分割されている。1つのチャンクのサイズは、4KBから12KBであってもよい。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００９９
【補正方法】変更
【補正の内容】
【００９９】
具体的には、各コンテナは9M Bytesであってもよい。可変長チャンクを実現するために、各ファイルセグメントのサイズは4KBから12KBの間である。すなわち、重複排除ファイルに関連して、各直接型eptrが指し示すファイルセグメントのサイズは平均的に8Kである。同じコンテナ内にあるファイルセグメントを指し示すeptrの数が約9M／8Kであるとき、基本的にコンテナ内の全ファイルセグメントが重複排除ファイルによって参照される。しかしながら、バックアップファイルセグメントが徐々に増加するにつれて、いくつかのコンテナが重複排除ファイルによって参照される回数は減少し、すなわち小数のeptrのみがこれらのコンテナを指し示す。たとえば、順序番号M’＋1のコンテナ内に位置するファイルセグメントを指し示すeptrが1つしかない、すなわちコンテナM’＋1をeptrが指し示す回数が1であると、想定される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１４５
【補正方法】変更
【補正の内容】
【０１４５】
第四実施形態
本発明のこの実施形態は、ファイル読み取り方法を提供する。この実施形態は、複数のコンテナのうちの少なくとも1つのコンテナ内のデータを第一記憶媒体から先読みする方法が異なる点において、本発明の第二実施形態および第三実施形態とは異なっている。図6を参照すると、方法の手順は以下のステップを含む。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１７８
【補正方法】変更
【補正の内容】
【０１７８】
第五実施形態
本発明のこの実施形態はファイル記憶装置を提供し、これは第一実施形態で提供されたファイル読み取り方法に適用可能である。記憶装置はファイルを格納するように構成されており、記憶装置は第一記憶媒体およびキャッシュを含む。キャッシュのアクセス速度は、第一記憶媒体よりも速い。第一記憶媒体は複数のコンテナを有する。ファイルは複数のファイルセグメントを含む。図7を参照すると、記憶装置は以下のモジュールを含む。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０２１２
【補正方法】変更
【補正の内容】
【０２１２】
第九実施形態
本発明のこの実施形態はファイル記憶装置を提供し、装置は、図11に示されるように、コンピュータ（スマートフォンまたはタブレットコンピュータなどの携帯用コンピュータシステムを含む）またはサーバであってもよい。装置は一般的に、少なくとも1つのプロセッサ10（たとえば、CPU）、ユーザインターフェース11、少なくとも1つのネットワークインターフェース12またはその他の通信インターフェース、第一記憶媒体13、少なくとも1つの通信バス14、およびキャッシュ15を含む。図11に示されるコンピュータの構造は、コンピュータに対していかなる制限も構成するものではなく、それどころかコンピュータは、図11よりも少ないかまたは多い部品、またはいくつかの部品の組み合わせ、または異なる配置の部品を含んでもよいことを、当業者は理解するだろう。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０２１７
【補正方法】変更
【補正の内容】
【０２１７】
ユーザインターフェース10は、これに限定されるものではないが、出力装置および入力装置を含む。入力装置は一般的に、キーボードおよびクリック装置（たとえば、マウス、トラックボール、タッチパッド、またはタッチスクリーン）を含む。出力装置は一般的に、ディスプレイ、プリンタ、およびプロジェクタなど、コンピュータ情報を表示することが可能な装置を含む。ディスプレイは、ユーザまたはユーザに対して提供されたファイルによって入力された情報を表示するように構成されていてもよい。キーボードおよびクリック装置は、入力された数字または文字情報を受信し、たとえば動作プロンプトにしたがってユーザによって発行された動作指示を取得するなど、記憶装置のユーザ設定および機能制御に関する信号入力を生成するように構成されていてもよい。
【手続補正９】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
記憶装置に格納されたファイルの読み取りに適用可能なファイル読み取り方法であって、前記記憶装置は、第一記憶媒体と、キャッシュとを備え、前記キャッシュのアクセス速度は、前記第一記憶媒体のアクセス速度よりも速く、前記第一記憶媒体は、複数のコンテナを有し、前記ファイルは、複数のファイルセグメントを有し、
前記方法は、
前記記憶装置により、クライアントによって送信される第一読み取り要求を受信するステップであって、前記第一読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、ステップと、
前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取るステップと、
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納するステップであって、先読みされるコンテナが前記ファイルの少なくとも1つの未読み取りファイルセグメントを含む、ステップと
を有する方法。
【請求項２】
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する前記ステップが、
前記第一記憶媒体から、かつ所定数の未読み取りファイルセグメントが位置するコンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するステップを含む、請求項1に記載の方法。
【請求項３】
前記所定数の未読み取りファイルセグメントから、未読み取りファイルセグメントの数が前記閾値を超えないコンテナ内の未読み取りファイルセグメントを選択し、選択された未読み取りファイルセグメントを先読みし、先読みされた未読み取りファイルセグメントを前記キャッシュ内に格納するステップをさらに有する、請求項2に記載の方法。
【請求項４】
前記第一記憶媒体から、かつ所定数の未読み取りファイルセグメントが位置するコンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みする前記ステップが、
第一アドレスポインタを取得するステップであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、ステップと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するステップと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内で、前記所定数のアドレスポインタが当該コンテナの各々を指し示す回数を統計収集するステップと、
統計収集によって取得された前記回数が前記閾値を超えるか否かを判定し、統計収集によって取得された前記回数が前記閾値を超える場合に、前記回数が前記閾値を超えるコンテナ内のデータを先読みするステップと
を含む、請求項2または3に記載の方法。
【請求項５】
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する前記ステップが、
前記第一記憶媒体から、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するステップを含む、請求項1に記載の方法。
【請求項６】
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する前記ステップが、
所定数の未読み取りファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記第一記憶媒体から、前記所定数のファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するステップを含む、請求項1に記載の方法。
【請求項７】
前記所定数の未読み取りファイルセグメントは、前記ファイル内で連続的であり、
前記所定数の未読み取りファイルセグメントは、前記ファイル内の前記読み取り対象データに対応するファイルセグメントに隣接している、請求項2または5に記載の方法。
【請求項８】
前記第一読み取り要求が、先読みトリガ条件を満たす読み取り要求であり、
前記先読みトリガ条件は、
前記記憶装置が前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
前記記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないことと、
前記第一読み取り要求によって要求される前記読み取り対象データに対応するファイルセグメントが、先行する先読みの間の前記所定数の未読み取りファイルセグメントを除く未読み取りファイルセグメントであることと
のうちの1つ以上の条件を含む、請求項2から6のいずれか一項に記載の方法。
【請求項９】
ファイル記憶装置であって、ファイルを格納するように構成され、第一記憶媒体と、キャッシュとを備え、前記キャッシュのアクセス速度は、前記第一記憶媒体のアクセス速度よりも速く、前記第一記憶媒体は、複数のコンテナを有し、前記ファイルは、複数のファイルセグメントを有し、
クライアントによって送信される第一読み取り要求を受信するように構成された受信モジュールであって、前記第一読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、受信モジュールと、
前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取るように構成された読み取りモジュールと、
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納するように構成された先読みモジュールであって、先読みされるコンテナが前記ファイルの少なくとも1つの未読み取りファイルセグメントを含む、先読みモジュールと
を備える記憶装置。
【請求項１０】
前記先読みモジュールが、
前記第一記憶媒体から、かつ所定数の未読み取りファイルセグメントが位置するコンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するようにさらに構成される、請求項9に記載の記憶装置。
【請求項１１】
前記先読みモジュールが、
前記所定数の未読み取りファイルセグメントから、未読み取りファイルセグメントの数が前記閾値を超えないコンテナ内の未読み取りファイルセグメントを選択し、選択された未読み取りファイルセグメントを先読みし、先読みされた未読み取りファイルセグメントを前記キャッシュ内に格納するようにさらに構成される、請求項10に記載の記憶装置。
【請求項１２】
前記先読みモジュールが、
第一アドレスポインタを取得するように構成された第一取得ユニットであって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、第一取得ユニットと、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得するように構成された第二取得ユニットと、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内で、前記所定数のアドレスポインタが当該コンテナの各々を指し示す回数を統計収集するように構成された統計収集ユニットと、
統計収集によって取得された前記回数が前記閾値を超えるか否かを判定し、統計収集によって取得された前記回数が前記閾値を超える場合に、前記回数が前記閾値を超えるコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するように構成された第一先読みユニットと
を備える、請求項10または11に記載の記憶装置。
【請求項１３】
前記先読みモジュールが、
前記第一記憶媒体から、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納するようにさらに構成される、請求項9に記載の記憶装置。
【請求項１４】
前記所定数の未読み取りファイルセグメントは、前記ファイル内で連続的であり、
前記所定数の未読み取りファイルセグメントは、前記ファイル内の前記読み取り対象データに対応するファイルセグメントに隣接している、請求項10または13に記載の記憶装置。
【請求項１５】
前記受信モジュールによって受信される前記第一読み取り要求が、先読みトリガ条件を満たす読み取り要求であり、
前記先読みトリガ条件は、
前記受信モジュールが前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないことと
のうちの1つ以上の条件を含む、請求項9から13のいずれか一項に記載の記憶装置。
【請求項１６】
ファイル記憶装置であって、ファイルを格納するように構成され、第一記憶媒体と、キャッシュとを備え、前記キャッシュのアクセス速度は、前記第一記憶媒体のアクセス速度よりも速く、前記第一記憶媒体は、複数のコンテナを有し、前記ファイルは、複数のファイルセグメントを有し、
プロセッサをさらに備え、
前記プロセッサは、
クライアントによって送信される第一読み取り要求を受信する手順であって、前記第一読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、手順と、
前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取る手順と、
前記複数のコンテナのうちの少なくとも1つのコンテナ内のデータを前記第一記憶媒体から先読みし、先読みされたデータを前記キャッシュ内に格納する手順であって、先読みされるコンテナが前記ファイルの少なくとも1つの未読み取りファイルセグメントを含む、手順と
を実行するように構成される、記憶装置。
【請求項１７】
前記プロセッサが、
前記第一記憶媒体から、かつ所定数の未読み取りファイルセグメントが位置するコンテナから、前記所定数のファイルセグメントの数が閾値を超えるコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納する手順を実行するようにさらに構成される、請求項16に記載の記憶装置。
【請求項１８】
前記プロセッサが、
前記所定数の未読み取りファイルセグメントから、未読み取りファイルセグメントの数が前記閾値を超えないコンテナ内の未読み取りファイルセグメントを選択し、選択された未読み取りファイルセグメントを先読みし、先読みされた未読み取りファイルセグメントを前記キャッシュ内に格納する手順を実行するようにさらに構成される、請求項17に記載の記憶装置。
【請求項１９】
前記プロセッサが、
第一アドレスポインタを取得する手順であって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、手順と、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得する手順と、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内で、前記所定数のアドレスポインタが当該コンテナの各々を指し示す回数を統計収集する手順と、
統計収集によって取得された前記回数が前記閾値を超えるか否かを判定し、統計収集によって取得された前記回数が前記閾値を超える場合に、前記回数が前記閾値を超えるコンテナ内のデータを先読みする手順と
を実行するようにさらに構成される、請求項17または18に記載の記憶装置。
【請求項２０】
前記プロセッサが、
前記第一記憶媒体から、所定数の未読み取りファイルセグメントが位置するコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納する手順を実行するようにさらに構成される、請求項16に記載の記憶装置。
【請求項２１】
前記プロセッサが、
第一アドレスポインタを取得する手順であって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、手順と、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得する手順と、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナ内のデータを先読みする手順と
を実行するようにさらに構成される、請求項20に記載の記憶装置。
【請求項２２】
前記プロセッサが、
所定数の未読み取りファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記第一記憶媒体から、前記所定数のファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みし、先読みされたデータを前記キャッシュ内に格納する手順を実行するようにさらに構成される、請求項16に記載の記憶装置。
【請求項２３】
前記プロセッサが、
第一アドレスポインタを取得する手順であって、前記第一アドレスポインタが前記読み取り対象データに対応するファイルセグメント内の最終ファイルセグメントを指し示す、手順と、
前記ファイルのアドレスポインタテーブルから、前記第一アドレスポインタに続く所定数のアドレスポインタを取得する手順と、
取得されたアドレスポインタが指し示すファイルセグメントが位置するコンテナの一連のシリアル番号にしたがって、前記取得されたアドレスポインタが指し示す前記ファイルセグメントが位置する前記コンテナのうちの少なくとも1つのコンテナ内のデータを先読みする手順と
を実行するようにさらに構成される、請求項22に記載の記憶装置。
【請求項２４】
前記プロセッサが、
前記ファイルの前記アドレスポインタテーブル内で、前記第一アドレスポインタを開始ポインタとして用いて、前記第一アドレスポインタに続くすべてのアドレスポインタの数が所定数を超えるか否かを判定する手順と、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超える場合に、前記第一アドレスポインタに続くすべてのアドレスポインタを取得する手順と、
前記第一アドレスポインタに続くすべてのアドレスポインタの数が前記所定数を超えない場合に、前記所定数のアドレスポインタを取得する手順と
を実行するようにさらに構成される、請求項19、21、または23に記載の記憶装置。
【請求項２５】
前記所定数の未読み取りファイルセグメントは、前記ファイル内で連続的であり、
前記所定数の未読み取りファイルセグメントは、前記ファイル内の前記読み取り対象データに対応するファイルセグメントに隣接している、請求項17、20、または22に記載の記憶装置。
【請求項２６】
前記プロセッサによって受信される前記第一読み取り要求が、先読みトリガ条件を満たす読み取り要求であり、
前記先読みトリガ条件は、
記憶装置が前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと、
記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないことと
のうちの1つ以上の条件を含む、請求項16から25のいずれか一項に記載の記憶装置。
【請求項２７】
前記プロセッサによって受信される前記第一読み取り要求が、先読みトリガ条件を満たす読み取り要求であり、
前記先読みトリガ条件は、
記憶装置が前記第一読み取り要求を受信する時間が、所定時間枠の範囲内であることと、
前記第一読み取り要求によって要求される前記読み取り対象データが、前記キャッシュ内に存在しないか、または前記第一読み取り要求によって要求される前記読み取り対象データの一部分が、前記キャッシュ内に存在しないことと
記憶装置が前記第一読み取り要求によって要求される前記読み取り対象データを読み取った後、前記キャッシュ内に存在し、前記ファイルに関連する未読み取りファイルセグメントの数が、所定数よりも少ないことと、
前記第一読み取り要求によって要求される前記読み取り対象データに対応するファイルセグメントが、先行する先読みの間の前記所定数の未読み取りファイルセグメントを除く未読み取りファイルセグメントであることと
のうちの1つ以上の条件を含む、請求項17から25のいずれか一項に記載の記憶装置。
【請求項２８】
前記プロセッサが、
前記クライアントによって送信される第二読み取り要求を受信する手順であって、前記第二読み取り要求によって要求される読み取り対象データが前記ファイルの一部分である、手順と、
前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在するデータを前記キャッシュから読み取り、前記第二読み取り要求によって要求される前記読み取り対象データであって前記キャッシュ内に存在しないデータを前記第一記憶媒体から読み取る手順と
を実行するようにさらに構成される、請求項16から27のいずれか一項に記載の記憶装置。
【請求項２９】
ファイル読み取りシステムであって、
ユーザ機器と、
ファイル記憶装置と
を備え、
前記ユーザ機器は、ユーザから元ファイル復元要求を受信し、前記元ファイル復元要求にしたがって、複数の読み取り要求を生成し、前記読み取り要求を前記記憶装置に送信するように構成され、
前記記憶装置は、請求項9から28のいずれか一項に記載の記憶装置である、ファイル読み取りシステム。
【国際調査報告】
2016526718.tif 000016
2016526718.tif 000017
2016526718.tif 000018
2016526718.tif 000019