(58)【調査した分野】(Int.Cl.,DB名)
記憶装置であって、前記記憶装置は、記憶システム内のソース・デバイスの役割を果たすように構成され、前記記憶システムはさらにバックアップ側デバイスを備え、n番目のスナップショットSnのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、nは整数であり、前記記憶装置は、
前記n番目のスナップショットSnの後の前記記憶装置に書き込まれた第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスに従って、前記n番目のスナップショットSnに記録された第2のデータ・ブロックを決定するように構成された決定ユニットであって、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、決定ユニットと、
前記第1のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他OR操作または排他NOR操作である、論理演算ユニットと、
前記第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するように構成された圧縮ユニットと、
前記バックアップ側デバイスに、前記第4のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、および前記n番目のスナップショットSnのバージョン番号を運搬するデータ・パケットを送信するように構成された送信ユニットと、
を備える、記憶装置。
記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらにソース・デバイスを備え、n番目のスナップショットSnのデータは前記記憶装置と前記ソース・デバイスの両方に格納され、nは整数であり、前記記憶装置は、
前記ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第4のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、および前記n番目のスナップショットSnのバージョン番号を取得するように構成された受信解析ユニットと、
前記第1のデータ・ブロックの前記論理ブロック・アドレスおよび前記n番目のスナップショットSnの前記バージョン番号に従って、前記スナップショットSnに記録された第2のデータ・ブロックを決定するように構成された決定ユニットであって、前記第1のデータ・ブロックは、前記n番目のスナップショットSnの後に前記ソース・デバイスにより書き込まれたデータ・ブロックであり、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、決定ユニットと、
前記第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得するように構成された解凍ユニットと、
前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して前記第1のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他OR操作または排他NOR操作である、論理演算ユニットと、
前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成された書込みユニットと、
を備える、記憶装置。
記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、n番目のスナップショットSnのデータは前記記憶装置と前記ソース・デバイスの両方に格納され、nは整数であり、前記記憶装置は、
前記ソース・デバイスにより送信されたデータ復元要求を受信し解析して、前記スナップショットSnのバージョン番号を取得するように構成された受信解析ユニットと、
前記スナップショットSnの前記バージョン番号およびスナップショットSxのバージョン番号に従って、前記スナップショットSxに記録された第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットSnの前記バージョン番号に従って、前記スナップショットSnに記録され前記論理ブロック・アドレスに格納された第2のデータ・ブロックを決定するように構成された決定ユニットであって、前記第1のデータ・ブロックは前記記憶装置によりバックアップされた前記スナップショットSxに記録され前記ソース・デバイスにより前記n番目のスナップショットSnの後に書き込まれたデータ・ブロックであり、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、決定ユニットと、
前記第1のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他OR操作または排他NOR操作である、論理演算ユニットと、
前記第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するように構成された圧縮ユニットと、
前記ソース・デバイスに、前記第4のデータ・ブロックおよび前記第1のデータ・ブロックの前記論理ブロック・アドレスを運搬するデータ・パケットを送信するように構成された送信ユニットと、
備える、記憶装置。
記憶装置であって、前記記憶装置は、記憶システム内のソース・デバイスの役割を果たすように構成され、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、n番目のスナップショットSnのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、nは整数であり、前記記憶装置は、
データ復元要求を前記バックアップ側デバイスに送信するように構成された送信ユニットであって、前記データ復元要求は前記スナップショットSnのバージョン番号を運搬する、送信ユニットと、
前記データ復元要求に従って前記バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第4のデータ・ブロックおよび第1のデータ・ブロックの論理ブロック・アドレスを取得するように構成された受信解析ユニットであって、前記第1のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされたスナップショットSxに記録され前記記憶装置により前記n番目のスナップショットSnの後の前記論理ブロック・アドレスに書き込まれたデータ・ブロックである、受信解析ユニットと、
前記第1のデータ・ブロックの前記論理ブロック・アドレスに従って、前記記憶装置に格納された前記スナップショットSnに記録された第2のデータ・ブロックを決定するように構成された決定ユニットであって、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、決定ユニットと、
前記第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得するように構成された解凍ユニットと、
前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して、前記第1のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他OR操作または排他NOR操作である、論理演算ユニットと、
前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成された書込みユニットと、
を備える、記憶装置。
記憶装置であって、前記記憶装置は、記憶システム内のソース・デバイスの役割を果たすように構成され、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、n番目のスナップショットSnのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、nは整数であり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、前記プロセッサは、前記n番目のスナップショットSnの後の前記記憶装置に書き込まれた第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスに従って、前記n番目のスナップショットSnに記録された第2のデータ・ブロックを決定し、前記第1のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、前記第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するように構成され、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、前記論理演算は排他OR操作または排他NOR操作であり、
前記インタフェースは、前記バックアップ側デバイスに、前記第4のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、および前記n番目のスナップショットSnのバージョン番号を運搬するデータ・パケットを送信するように構成される、
記憶装置。
記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、n番目のスナップショットSnのデータは前記記憶装置と前記ソース・デバイスの両方に格納され、nは整数であり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、前記インタフェースは、前記ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第4のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、および前記n番目のスナップショットSnのバージョン番号を取得するように構成され、
前記プロセッサは、前記第1のデータ・ブロックの前記論理ブロック・アドレスおよび前記n番目のスナップショットSnの前記バージョン番号に従って、前記スナップショットSnに記録された第2のデータ・ブロックを決定し、前記第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得し、前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して、前記第1のデータ・ブロックを取得し、前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成され、前記第1のデータ・ブロックは、前記n番目のスナップショットSnの後に前記ソース・デバイスにより書き込まれたデータ・ブロックであり、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、前記論理演算は排他OR操作または排他NOR操作である、
記憶装置。
記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、n番目のスナップショットSnのデータは前記記憶装置と前記ソース・デバイスの両方に格納され、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、前記インタフェースは、前記ソース・デバイスにより送信されたデータ復元要求を受信し解析して、前記スナップショットSnのバージョン番号を取得するように構成され、
前記プロセッサは、前記スナップショットSnの前記バージョン番号およびスナップショットSxのバージョン番号に従って、前記スナップショットSxに記録された第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットSnの前記バージョン番号に従って、前記スナップショットSnに記録され前記論理ブロック・アドレスに格納された第2のデータ・ブロックを決定し、前記第1のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、前記第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するように構成され、前記第1のデータ・ブロックは前記記憶装置によりバックアップされた前記スナップショットSxに記録され前記ソース・デバイスにより前記n番目のスナップショットSnの後に書き込まれたデータ・ブロックであり、xおよびnは整数であり、x>nであり、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、前記論理演算は排他OR操作または排他NOR操作であり、
前記インタフェースはさらに、前記ソース・デバイスに、前記第4のデータ・ブロックおよび前記第1のデータ・ブロックの前記論理ブロック・アドレスを運搬するデータ・パケットを送信するように構成される、
記憶装置。
記憶装置であって、前記記憶装置は、記憶システム内のソース・デバイスの役割を果たすように構成され、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、n番目のスナップショットSnのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、nは整数であり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、前記インタフェースは、データ復元要求を前記バックアップ側デバイスに送信し、前記データ復元要求に従って前記バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第4のデータ・ブロックおよび第1のデータ・ブロックの論理ブロック・アドレスを取得するように構成され、前記データ復元要求は前記スナップショットSnのバージョン番号を運搬し、前記第1のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされたスナップショットSxに記録され前記記憶装置により前記n番目のスナップショットSnの後の前記論理ブロック・アドレスに書き込まれたデータ・ブロックであり、
前記プロセッサは、前記第1のデータ・ブロックの前記論理ブロック・アドレスに従って、前記記憶装置に格納された前記スナップショットSnに記録された第2のデータ・ブロックを決定し、前記第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得し、前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して前記第1のデータ・ブロックを取得し、前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成され、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、前記論理演算は排他OR操作または排他NOR操作である、
記憶装置。
以下の計算規則、即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、前記i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示すことが前記ソース・デバイスに対して構成され、前記ソース・デバイスにより、前記第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するステップは特に、
前記計算規則に従って、前記ソース・デバイスにより、各ウィンドウ内の、前記第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施するステップと、
前記ソース・デバイスにより、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を前記第1のデータ・ブロックのハッシュ値から選択し、前記第1のM個のハッシュ値を前記第2のデータ・ブロックのハッシュ値から選択するステップであって、Mは正の整数でありNより大きくない、ステップと、
前記ソース・デバイスにより、前記第1のデータ・ブロックの前記第1のM個のハッシュ値および同一のハッシュ値に対する前記第2のデータ・ブロックの前記第1のM個のハッシュ値を検索して、前記同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異が前記シフト量であると判定するステップと、
を含む、請求項23に記載の方法。
以下の計算規則、即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、前記i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示すことが前記バックアップ側デバイスに対して構成され、
前記バックアップ側デバイスは特に、前記計算規則に従って、各ウィンドウ内の、前記第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を前記第1のデータ・ブロックのハッシュ値から選択し、前記第1のM個のハッシュ値を前記第2のデータ・ブロックのハッシュ値から選択し、前記第1のデータ・ブロックの前記第1のM個のハッシュ値および同一のハッシュ値に対する前記第2のデータ・ブロックの前記第1のM個のハッシュ値を検索し、前記同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異が前記シフト量であると判定するように構成され、Mは正の整数でありNより大きくない、
請求項28に記載の記憶システム。
以下の計算規則、即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、前記i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示すことが前記バックアップ側デバイスに対して構成され、前記バックアップ側デバイスにより、前記第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するステップは特に、
前記計算規則に従って、前記バックアップ側デバイスにより、各ウィンドウ内の、前記第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施するステップと、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を前記第1のデータ・ブロックのハッシュ値から選択し、前記第1のM個のハッシュ値を前記第2のデータ・ブロックのハッシュ値から選択するステップと、前記第1のデータ・ブロックの前記第1のM個のハッシュ値および同一のハッシュ値に対する前記第2のデータ・ブロックの前記第1のM個のハッシュ値を検索し、前記同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異が前記シフト量であると判定するステップとを含み、Mは正の整数でありNより大きくない、
請求項30に記載の方法。
記憶装置であって、前記記憶装置は記憶システム内のソース・デバイスの役割を果たし、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、n番目のスナップショットSnのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、nは整数であり、前記記憶装置は、
前記n番目のスナップショットSnの後の前記記憶装置に書き込まれた第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスに従って、前記n番目のスナップショットSnに記録された第2のデータ・ブロックを決定し、前記第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するように構成された決定ユニットであって、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、決定ユニットと、
前記シフト量に従って循環シフトを前記第1のデータ・ブロックに実施して第3のデータ・ブロックを取得するように構成されたシフト・ユニットと、
前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他OR操作または排他NOR操作である、論理演算ユニットと、
前記第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するように構成された圧縮ユニットと、
前記バックアップ側デバイスに、前記第5のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、シフト情報、および前記n番目のスナップショットSnのバージョン番号を運搬するデータ・パケットを送信するように構成された送信ユニットであって、前記シフト情報は循環シフト方向および前記シフト量を含む、送信ユニットと、
を備える、記憶装置。
以下の計算規則、即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、前記i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示すことが前記記憶装置に対して構成され、前記決定ユニットは特に、
前記計算規則に従って、各ウィンドウ内の、前記第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を前記第1のデータ・ブロックのハッシュ値から選択し、前記第1のM個のハッシュ値を前記第2のデータ・ブロックのハッシュ値から選択し、前記第1のデータ・ブロックの前記第1のM個のハッシュ値および同一のハッシュ値に対する前記第2のデータ・ブロックの前記第1のM個のハッシュ値を検索し、前記同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異が前記シフト量であると判定するように構成され、Mは正の整数でありNより大きくない、
請求項33に記載の記憶装置。
記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、n番目のスナップショットSnのデータは前記ソース・デバイスと前記記憶装置の両方に格納され、nは整数であり、前記記憶装置は、
前記ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、シフト情報、および前記n番目のスナップショットSnのバージョン番号を取得するように構成された受信解析ユニットと、
前記第1のデータ・ブロックの前記論理ブロック・アドレスおよび前記n番目のスナップショットSnの前記バージョン番号に従って、前記スナップショットSnに記録された第2のデータ・ブロックを決定するように構成された決定ユニットであって、前記第1のデータ・ブロックは、前記n番目のスナップショットSnの後に前記ソース・デバイスにより書き込まれたデータ・ブロックであり、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックである、決定ユニットと、
前記第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得するように構成された解凍ユニットと、
前記第4のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他OR操作または排他NOR操作である、論理演算ユニットと、
前記シフト情報に従って逆循環シフトを前記第3のデータ・ブロックに実施して前記第1のデータ・ブロックを取得するように構成されたシフト・ユニットであって、前記シフト情報は、循環シフトを前記第1のデータ・ブロックに実施して前記第3のデータ・ブロックを取得するために前記ソース・デバイスにより必要とされるシフト量および循環シフト方向を含む、シフト・ユニットと、
前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成された書込みユニットと、
を備える、記憶装置。
記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、n番目のスナップショットSnのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記n番目のスナップショットSnの前記データおよびx番目のスナップショットSxのデータは前記記憶装置に格納され、nおよびxは整数であり、n<xであり、前記記憶装置は、
前記ソース・デバイスにより送信されたデータ復元要求を受信するように構成された受信ユニットであって、前記データ復元要求は前記スナップショットSnのバージョン番号を運搬する、受信ユニットと、
前記スナップショットSnの前記バージョン番号および前記スナップショットSxのバージョン番号に従って、前記スナップショットSxに記録された第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットSnの前記バージョン番号に従って、前記スナップショットSnに記録され前記論理ブロック・アドレスに格納された第2のデータ・ブロックを決定し、前記第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するように構成された決定ユニットであって、前記第1のデータ・ブロックは前記記憶装置によりバックアップされた前記スナップショットSxに記録され前記ソース・デバイスにより前記n番目のスナップショットSnの後に書き込まれたデータ・ブロックである、決定ユニットと、
前記シフト量に従って循環シフトを前記第1のデータ・ブロックに実施して第3のデータ・ブロックを取得するように構成されたシフト・ユニットと、
前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得するように構成された論理演算ユニットと、
前記第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するように構成された圧縮ユニットであって、前記論理演算は排他OR操作または排他NOR操作である、圧縮ユニットと、
前記ソース・デバイスに、前記第5のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、およびシフト情報を運搬するデータ・パケットを送信するように構成された送信ユニットであって、前記シフト情報は循環シフト方向および前記シフト量を含む、送信ユニットと、
を備える、記憶装置。
以下の計算規則、即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、前記i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示すことが前記記憶装置に対して構成され、前記決定ユニットは特に、
前記計算規則に従って、各ウィンドウ内の、前記第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を前記第1のデータ・ブロックのハッシュ値から選択し、前記第1のM個のハッシュ値を前記第2のデータ・ブロックのハッシュ値から選択し、前記第1のデータ・ブロックの前記第1のM個のハッシュ値および同一のハッシュ値に対する前記第2のデータ・ブロックの前記第1のM個のハッシュ値を検索し、前記同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異が前記シフト量であると判定するように構成され、Mは正の整数でありNより大きくない、
請求項38に記載の記憶装置。
記憶装置であって、前記記憶装置は記憶システム内のソース・デバイスの役割を果たし、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、n番目のスナップショットSnのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、nは整数であり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、
前記プロセッサは、前記n番目のスナップショットSnの後の前記記憶装置に書き込まれた第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスに従って、前記n番目のスナップショットSnに記録された第2のデータ・ブロックを決定し、前記第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、前記シフト量に従って循環シフトを前記第1のデータ・ブロックに実施して第3のデータ・ブロックを取得し、前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得し、前記第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するように構成され、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、前記論理演算は排他OR操作または排他NOR操作であり、
前記インタフェースは、前記バックアップ側デバイスに、前記第5のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、シフト情報、および前記n番目のスナップショットSnのバージョン番号を運搬するデータ・パケットを送信するように構成され、前記シフト情報は循環シフト方向および前記シフト量を含む、
記憶装置。
以下の計算規則、即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、前記i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示すことが前記記憶装置に対して構成され、前記プロセッサは特に、
前記計算規則に従って、各ウィンドウ内の、前記第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を前記第1のデータ・ブロックのハッシュ値から選択し、前記第1のM個のハッシュ値を前記第2のデータ・ブロックのハッシュ値から選択し、前記第1のデータ・ブロックの前記第1のM個のハッシュ値および同一のハッシュ値に対する前記第2のデータ・ブロックの前記第1のM個のハッシュ値を検索し、前記同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異が前記シフト量であると判定するように構成され、Mは正の整数でありNより大きくない、
請求項41に記載の記憶装置。
記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、n番目のスナップショットSnのデータは前記ソース・デバイスと前記記憶装置の両方に格納され、nは整数であり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、
前記インタフェースは、前記ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、シフト情報、および前記n番目のスナップショットSnのバージョン番号を取得するように構成され、
前記プロセッサは、前記第1のデータ・ブロックの前記論理ブロック・アドレスおよび前記n番目のスナップショットSnの前記バージョン番号に従って、前記スナップショットSnに記録された第2のデータ・ブロックを決定し、前記第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得し、前記第4のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、前記シフト情報に従って逆循環シフトを前記第3のデータ・ブロックに実施して前記第1のデータ・ブロックを取得し、前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成され、前記第1のデータ・ブロックは、前記n番目のスナップショットSnの後に前記ソース・デバイスにより書き込まれたデータ・ブロックであり、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、前記論理演算は排他OR操作または排他NOR操作であり、前記シフト情報は、循環シフトを前記第1のデータ・ブロックに実施して前記第3のデータ・ブロックを取得するために前記ソース・デバイスにより必要とされるシフト量および循環シフト方向を含む、
記憶装置。
記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、n番目のスナップショットSnのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記n番目のスナップショットSnの前記データおよびx番目のスナップショットSxのデータは前記記憶装置に格納され、nおよびxは整数であり、n<xであり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、
前記インタフェースは、前記ソース・デバイスにより送信されたデータ復元要求を受信するように構成され、前記データ復元要求は前記スナップショットSnのバージョン番号を運搬し、
前記プロセッサは、前記スナップショットSnの前記バージョン番号および前記スナップショットSxのバージョン番号に従って、前記スナップショットSxに記録された第1のデータ・ブロックを決定し、前記第1のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットSnの前記バージョン番号に従って、前記スナップショットSnに記録され前記論理ブロック・アドレスに格納された第2のデータ・ブロックを決定し、前記第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、前記シフト量に従って循環シフトを前記第1のデータ・ブロックに実施して第3のデータ・ブロックを取得し、前記第3のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得し、前記第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するように構成され、前記第1のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットSxに記録され前記ソース・デバイスにより前記n番目のスナップショットSnの後に書き込まれたデータ・ブロックであり、前記論理演算は排他OR操作または排他NOR操作であり、
前記インタフェースは、前記ソース・デバイスに、前記第5のデータ・ブロック、前記第1のデータ・ブロックの前記論理ブロック・アドレス、およびシフト情報を運搬するデータ・パケットを送信するように構成され、前記シフト情報は循環シフト方向および前記シフト量を含む、
記憶装置。
以下の計算規則、即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、前記i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示すことが前記記憶装置に対して構成され、前記プロセッサは特に、
前記計算規則に従って、各ウィンドウ内の、前記第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、 前記計算規則に従って、各ウィンドウ内の、前記第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を前記第1のデータ・ブロックのハッシュ値から選択し、前記第1のM個のハッシュ値を前記第2のデータ・ブロックのハッシュ値から選択し、前記第1のデータ・ブロックの前記第1のM個のハッシュ値および同一のハッシュ値に対する前記第2のデータ・ブロックの前記第1のM個のハッシュ値を検索し、前記同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異が前記シフト量であると判定するように構成され、Mは正の整数でありNより大きくない、
請求項46に記載の記憶装置。
記憶装置であって、前記記憶装置は記憶システム内のソース・デバイスの役割を果たし、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、n番目のスナップショットSnのデータは前記記憶装置に格納され、前記記憶装置内の前記n番目のスナップショットSnの前記データおよびx番目のスナップショットSxのデータは前記バックアップ側デバイスに格納され、nおよびxは整数であり、n<xであり、前記ソース・デバイスはインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、
前記インタフェースは、データ復元要求を前記バックアップ側デバイスに送信し、前記データ復元要求に従って前記バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理ブロック・アドレス、およびシフト情報を取得するように構成され、前記データ復元要求は前記スナップショットSnのバージョン番号を運搬し、前記第1のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットSxに記録され前記記憶装置により前記n番目のスナップショットSnの後の前記論理ブロック・アドレスに書き込まれたデータ・ブロックであり、
前記プロセッサは、前記第1のデータ・ブロックの前記論理ブロック・アドレスに従って、前記記憶装置に格納された前記スナップショットSnに記録された第2のデータ・ブロックを決定し、前記第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得し、前記第4のデータ・ブロックおよび前記第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、前記シフト情報に従って逆循環シフトを前記第3のデータ・ブロックに実施して前記第1のデータ・ブロックを取得し、前記第1のデータ・ブロックを前記第1のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成され、前記第1のデータ・ブロックは前記第2のデータ・ブロックの修正されたブロックであり、前記論理演算は排他OR操作または排他NOR操作であり、前記シフト情報は、循環シフトを前記第1のデータ・ブロックに実施して前記第3のデータ・ブロックを取得するために前記バックアップ側デバイスにより必要とされるシフト量および循環シフト方向を含む、
記憶装置。
【発明の概要】
【課題を解決するための手段】
【0004】
第1の態様によれば、本発明の1実施形態では、記憶システム内のデータ・バックアップのための解決策を提供する。当該記憶システムは、ソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットS
nのデータはソース・デバイスとバックアップ側デバイスの両方に格納される。ソース・デバイスは、n番目のスナップショットS
nの後にソース・デバイスに書き込まれた第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理
ブロック・アドレスに従って、同一の論理
ブロック・アドレス内にありソース・デバイスに格納されたn番目のスナップショットS
nに記録された第2のデータ・ブロックを決定する。第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、nはスナップショット操作を示す。ソース・デバイスは、論理演算を第1のデータ・ブロックと第2のデータ・ブロックに実施して第3のデータ・ブロックを取得し、第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得する。ソース・デバイスは、バックアップ側デバイスに、第4のデータ・ブロック、第1のデータ・ブロックの論理
ブロック・アドレス、およびn番目のスナップショットS
nのバージョン番号を運搬するデータ・パケットを送信する。当該論理演算は排他NOR操作または排他OR操作を含む。第3のデータ・ブロックは当該論理演算を用いることによって取得され、大部分のデータは第1のデータ・ブロックと第2のデータ・ブロックの間で同一である。したがって、第3のデータ・ブロックは、大量の0(例えば、排他OR操作を使用)または1(例えば、排他NOR操作を使用)を含む。第3のデータ・ブロックの圧縮率は、第1のデータ・ブロックの圧縮率より大きい。第1のデータ・ブロックを直接圧縮し、圧縮されたデータ・ブロックをバックアップ側デバイスに送信するのと比べて、バックアップ側に送信されるデータの量が削減され、送信帯域幅が節約される。
【0005】
バックアップ側デバイスは、ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第4のデータ・ブロック、第1のデータ・ブロックの論理
ブロック・アドレス、およびn番目のスナップショットS
nのバージョン番号を取得し、バックアップ側デバイスは、第1のデータ・ブロックの論理
ブロック・アドレスとn番目のスナップショットS
nのバージョン番号に従って、バックアップ側デバイスに格納されたスナップショットS
nに記録された第2のデータ・ブロックを決定し、第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得し、論理演算を第3のデータ・ブロックと第2のデータ・ブロックに実施して第1のデータ・ブロックを取得し、第1のデータ・ブロックを第1のデータ・ブロックの論理
ブロック・アドレスに書き込む。
【0006】
任意選択で、ソース・デバイスにより、n番目のスナップショットS
nの後にソース・デバイスに書き込まれた第1のデータ・ブロックを決定するステップは、ソース・デバイスにより、n番目のスナップショットS
nの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理
ブロック・アドレスに従って第1のデータ・ブロックを決定するステップを含む。当該実装方式では、第1のデータ・ブロックを、スナップショット操作をソース・デバイスに再度実施する必要なしに決定することができる。
【0007】
任意選択で、ソース・デバイスにより、n番目のスナップショットS
nの後にソース・デバイスに書き込まれた第1のデータ・ブロックを決定するステップは、ソース・デバイスにより、x番目のスナップショットS
x操作を実施し、スナップショットS
nをスナップショットS
xと比較して、第1のデータ・ブロックを決定するステップを含む。nおよびxは整数であり、n<xである。
【0008】
本発明の第1の態様の当該実施形態で提供する解決策をまたデータ復元に適用してもよい。n番目のスナップショットS
nのデータはソース・デバイスに格納され、ソース・デバイス内のn番目のスナップショットS
nのデータとx番目のスナップショットS
xのデータはバックアップ側デバイスに格納される。nおよびxは整数であり、n<xであり、ソース・デバイスはデータ復元要求をバックアップ側デバイスに送信し、当該データ復元要求はスナップショットS
nのバージョン番号を運搬する。バックアップ側デバイスは、ソース・デバイスにより送信されたデータ復元要求を受信し解析して、スナップショットS
nのバージョン番号を取得し、スナップショットS
nのバージョン番号およびスナップショットS
xのバージョン番号に従って第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理
ブロック・アドレスとスナップショットS
nのバージョン番号に従って、スナップショットS
nに記録された第2のデータ・ブロックを決定し、論理演算を第1のデータ・ブロックと第2のデータ・ブロックに実施して第3のデータ・ブロックを取得し、第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得し、ソース・デバイスに、第4のデータ・ブロックと第1のデータ・ブロックの論理
ブロック・アドレスを運搬するデータ・パケットを送信する。第1のデータ・ブロックは、バックアップ側デバイスによりバックアップされたスナップショットS
xに記録されソース・デバイスによりn番目のスナップショットS
nの後に書き込まれたデータ・ブロックであり、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作である。データ
復元プロセスにおいて、論理演算および圧縮動作が実施され、これが同様に圧縮率を高め、送信帯域幅を節約する。
【0009】
ソース・デバイスは、バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第4のデータ・ブロックと第1のデータ・ブロックの論理
ブロック・アドレスを取得し、第1のデータ・ブロックの論理
ブロック・アドレスに従って、スナップショットS
nに記録された第2のデータ・ブロックを決定し、第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得し、論理演算を第3のデータ・ブロックと第2のデータ・ブロックに実施して第1のデータ・ブロックを取得し、第1のデータ・ブロックを第1のデータ・ブロックの論理
ブロック・アドレスに書き込み、その結果、ソース・デバイスはバックアップ側デバイスの状態と同じ状態に復元される。
【0010】
第1の態様および第1の態様が適用されるデータ・シナリオに対応して、本発明の当該実施形態ではさらに、本発明の当該実施形態における第1の態様で提供した解決策を実装するための、第1の態様の当該実施形態における記憶システム内のソース・デバイスおよびバックアップ側デバイスとしての役割を果たすように別々に構成された記憶装置を提供する。当該記憶装置は、第1の態様の
本発明の当該実施形態および第1の態様が適用されるデータ・シナリオにおける解決策を実装する構造ユニットを備えるか、または当該記憶装置は、第1の態様の実施形態および第1の態様が適用されるデータ・シナリオにおける解決策を実装するためのインタフェースおよびプロセッサを備える。
【0011】
したがって、本発明の当該実施形態ではさらに不揮発性コンピュータ可読記憶媒体およびコンピュータ・プログラム製品を提供する。当該不揮発性コンピュータ可読記憶媒体および当該コンピュータ・プログラム製品に含まれるコンピュータ命令が本発明の当該実施形態で提供する記憶装置のメモリにロードされ、当該記憶装置の中央演算装置(
Central Processing Unit、CPU)が当該コンピュータ命令を実行すると、当該記憶装置は、本発明の当該実施形態における第1の態様で提供する解決策を実装するための、第1の態様の実施形態における記憶システム内のソース・デバイスおよびバックアップ側デバイスの役割を果たす。
【0012】
第2の態様によれば、本発明の1実施形態ではさらに記憶システム内のデータ・バックアップのための別の解決策を提供する。当該記憶システムは、ソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットS
nのデータはソース・デバイスとバックアップ側デバイスの両方に格納される。ソース・デバイスは、n番目のスナップショットS
nの後にソース・デバイスに書き込まれた第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理
ブロック・アドレスに従って、n番目のスナップショットS
nに記録された第2のデータ・ブロックを決定する。第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックである。ソース・デバイスは、第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、当該シフト量に従って循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得する。第3のデータ・ブロックは当該循環シフトを実施することによって取得され、その結果、同一の位置で、多くのデータが第3のデータ・ブロックと第2のデータ・ブロックの間で同一である。ソース・デバイスは論理演算を第3のデータ・ブロックと第2のデータ・ブロックに実施して第4のデータ・ブロックを取得し、第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得する。当該論理演算は排他OR操作または排他NOR操作であり、当該論理演算の後、第4のデータ・ブロックは、大量の0(例えば、排他OR操作を使用)または1(例えば、排他NOR操作を使用)を含む。第4のデータ・ブロックの圧縮率は、第1のデータ・ブロックの圧縮率より大きい。第1のデータ・ブロックを直接圧縮し、圧縮されたデータ・ブロックをバックアップ側デバイスに送信するのと比べて、バックアップ側に送信されるデータの量が削減され、送信帯域幅が節約される。ソース・デバイスは、バックアップ側デバイスに、第5のデータ・ブロック、第1のデータ・ブロックの論理
ブロック・アドレス、シフト情報、およびn番目のスナップショットS
nのバージョン番号を運搬するデータ・パケットを送信する。当該シフト情報は循環シフト方向とシフト量を含む。
【0013】
バックアップ側デバイスは、データ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理
ブロック・アドレス、シフト情報、およびn番目のスナップショットS
nのバージョン番号を取得し、第1のデータ・ブロックの論理
ブロック・アドレスおよびn番目のスナップショットS
nのバージョン番号に従って、スナップショットS
nに記録された第2のデータ・ブロックを決定し、第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得し、論理演算を第4のデータ・ブロックと第2のデータ・ブロックに実施して第3のデータ・ブロックを取得し、当該シフト情報に従って逆循環シフトを第3のデータ・ブロックに実施して第1のデータ・ブロックを取得し、第1のデータ・ブロックを第1のデータ・ブロックの論理
ブロック・アドレスに書き込む。
【0014】
任意選択で、以下の計算規則がソース・デバイスに対して構成される。即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置
であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示す。ソース・デバイスは、当該計算規則に従って、各ウィンドウ内の、第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施する。ソース・デバイスは、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を第1のデータ・ブロックのハッシュ値から選択し、第1のM個のハッシュ値を第2のデータ・ブロックのハッシュ値から選択する。Mは正の整数でありNより大きくない。ソース・デバイスは第1のデータ・ブロックの第1のM個のハッシュ値と同一のハッシュ値に対する第2のデータ・ブロックの第1のM個のハッシュ値を検索し、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定する。
【0015】
任意選択で、(i+1)番目のウィンドウの開始位置がi番目のウィンドウの開始位置から離れる固定長は1ビットまたは複数ビットである。
【0016】
任意選択で、ハッシュ値が設定されそれに従ってソース・デバイスが選択を行う順序が、特に昇順または降順であってもよい。
【0017】
任意選択で、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。
【0018】
任意選択で、ソース・デバイスにより、n番目のスナップショットS
nの後にソース・デバイスに書き込まれた第1のデータ・ブロックを決定するステップは、ソース・デバイスにより、n番目のスナップショットS
nの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理
ブロック・アドレスに従って、第1のデータ・ブロックを決定するステップを含む。当該実装方式では、第1のデータ・ブロックを、スナップショット操作をソース・デバイスに再度実施する必要なしに決定することができる。
【0019】
任意選択で、ソース・デバイスにより、n番目のスナップショットS
nの後にソース・デバイスに書き込まれた第1のデータ・ブロックを決定するステップは、ソース・デバイスにより、x番目のスナップショットS
x操作を実施し、スナップショットS
nをスナップショットS
xと比較し、第1のデータ・ブロックを決定するステップを含む。nおよびxは整数であり、n<xである。
【0020】
本発明の第2の態様の当該実施形態で提供する解決策をまた、データ復元に適用してもよい。記憶システムは、ソース・デバイスとバックアップ側デバイスを備え、n番目のスナップショットS
nのデータはソース・デバイスに格納され、ソース・デバイス内のn番目のスナップショットS
nのデータおよびx番目のスナップショットS
xのデータはバックアップ側デバイスに格納され、nおよびxは整数であり、n<xである。ソース・デバイスは、データ復元要求をバックアップ側デバイスに送信する。当該データ復元要求はスナップショットS
nのバージョン番号を運搬する。バックアップ側デバイスは、当該データ復元要求を受信し解析してスナップショットS
nのバージョン番号を取得し、スナップショットS
nのバージョン番号およびスナップショットS
xのバージョン番号に従って第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理
ブロック・アドレスおよびスナップショットS
nのバージョン番号に従って、スナップショットS
nに記録された第2のデータ・ブロックを決定し、第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、当該シフト量に従って循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得し、論理演算を第3のデータ・ブロックおよび第2のデータ・ブロックに実施して第4のデータ・ブロックを取得し、第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得する。当該論理演算は排他OR操作または排他NOR操作であり、当該論理演算の後、第4のデータ・ブロックは、大量の0(例えば、排他OR操作を使用)または1(例えば、排他NOR操作を使用)を含む。第4のデータ・ブロックの圧縮率は、第1のデータ・ブロックの圧縮率より大きい。直接第1のデータ・ブロックを圧縮し圧縮されたデータ・ブロックをソース・デバイスに送信することと比べて、ソース・デバイスに送信されるデータ量が削減され、送信帯域幅が節約される。バックアップ側デバイスは、ソース・デバイスに、第5のデータ・ブロック、シフト情報、および第1のデータ・ブロックの論理
ブロック・アドレスを運搬するデータ・パケットを送信する。第1のデータ・ブロックは、バックアップ側デバイスによりバックアップされたスナップショットS
xに記録されソース・デバイスによりn番目のスナップショットS
nの後に書き込まれたデータ・ブロックであり、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作であり、当該シフト情報は循環シフト方向とシフト量を含む。
【0021】
ソース・デバイスは、当該データ・パケットを受信し解析して第5のデータ・ブロック、シフト情報、および第1のデータ・ブロックの論理
ブロック・アドレスを取得し、第1のデータ・ブロックの論理
ブロック・アドレスに従って、スナップショットS
nに記録された第2のデータ・ブロックを決定し、第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得し、当該論理演算を第4のデータ・ブロックおよび第2のデータ・ブロックに実施して第3のデータ・ブロックを取得し、当該シフト情報に従って逆循環シフトを第3のデータ・ブロックに実施して第1のデータ・ブロックを取得し、第1のデータ・ブロックを第1のデータ・ブロックの論理
ブロック・アドレスに書き込み、その結果、ソース・デバイスはバックアップ側デバイスの状態と同じ状態に復元される。
【0022】
任意選択で、以下の計算規則がバックアップ側デバイスに対して構成される。即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置
であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示す。バックアップ側デバイスは当該計算規則に従って、各ウィンドウ内の、第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施する。バックアップ側デバイスは、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を第1のデータ・ブロックのハッシュ値から選択し、第1のM個のハッシュ値を第2のデータ・ブロックのハッシュ値から選択し、Mは正の整数でありNより大きくない。バックアップ側デバイスは、第1のデータ・ブロックの第1のM個のハッシュ値および同一のハッシュ値に対する第2のデータ・ブロックの第1のM個のハッシュ値を検索し、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定する。
【0023】
任意選択で、(i+1)番目のウィンドウの開始位置がi番目のウィンドウの開始位置から離れる固定長は1ビットまたは複数ビットである。
【0024】
任意選択で、当該ハッシュ値が設定されバックアップ側デバイスがそれに従って選択を実施する順序が、特に昇順または降順であってもよい。
【0025】
任意選択で、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。
【0026】
第2の態様および第2の態様が適用されるデータ・シナリオに対応して、本発明の当該実施形態ではさらに、本発明の当該実施形態における第2の態様で提供した解決策を実装するための、第2の態様の当該実施形態における記憶システム内のソース・デバイスおよびバックアップ側デバイスとしての役割を果たすように別々に構成された記憶装置を提供する。当該記憶装置は、第2の態様の発明の実施形態および第2の態様が適用されるデータ・シナリオの解決策を実装する構造ユニットを備えるか、または当該記憶装置は、第2の態様の実施形態および第2の態様が適用されるデータ・シナリオの解決策を実装するための、インタフェースおよびプロセッサを備える。
【0027】
したがって、本発明の当該実施形態ではさらに不揮発性コンピュータ可読記憶媒体およびコンピュータ・プログラム製品を提供する。当該不揮発性コンピュータ可読記憶媒体および当該コンピュータ・プログラム製品に含まれるコンピュータ命令が本発明の当該実施形態で提供する記憶装置のメモリにロードされ、当該記憶装置の中央演算装置(
Central Processing Unit、CPU)が当該コンピュータ命令を実行すると、当該記憶装置は、本発明の当該実施形態における第2の態様で提供する解決策を実装するための、第2の態様の実施形態における記憶システム内のソース・デバイスおよびバックアップ側デバイスの役割を果たす。
【発明を実施するための形態】
【0029】
図1に示すように、記憶システムはソース・デバイス101およびバックアップ側デバイス102を備える。n番目のスナップショットS
nの時点では、データ・ブロック1、データ・ブロック2、データ・ブロック3、およびデータ・ブロック4はソース・デバイス101に格納される。バックアップ側デバイス102では、ソース・デバイス101内のn番目のスナップショットS
nのバックアップが格納される。即ち、データ・ブロック1、データ・ブロック2、データ・ブロック3、およびデータ・ブロック4が格納される。n番目のスナップショットS
nの後、ソース・デバイス101内のデータ・ブロック2がデータ・ブロック2’に修正される。スナップショット実装機構に従って、データ・ブロック2は、スナップショットS
nに格納され、さらにデータ・ブロック2’が記録される。データ・ブロック2’はデータ・ブロック2が修正された後に取得されたデータ・ブロックである(即ち、データ・ブロック2’はデータ・ブロック2の修正されたブロックである)。スナップショットS
nの時点にあるソース・デバイス101内のデータは、バックアップ側デバイス102において既にバックアップされており、バックアップ側デバイス102はスナップショットS
n操作を実施している。即ち、スナップショットS
nの時点での状態も、スナップショットS
n操作を用いることによってバックアップ側デバイス102に記録される。したがって、ソース・デバイス101内のデータがバックアップ側に再度バックアップされるとき、データ・ブロック2’のみをバックアップする必要がある。一般に、バックアップ側デバイス102にバックアップされているプロセスにおいてデータ・ブロック2’が修正されないことを保証するために、一般にスナップショット操作をソース・デバイス101で実施する必要がある。スナップショット操作がS
xであってもよい。nおよびxは整数であり、n<xである。
図1に示すように、ソース・デバイス101に格納されたデータ・ブロック1、データ・ブロック2’、データ・ブロック3、およびデータ・ブロック4はスナップショットS
xに記録される。スナップショットS
nに記録されたデータ・ブロック2の論理
ブロック・アドレスは、スナップショットS
xに記録されたデータ・ブロック2’の論理
ブロック・アドレスと同じである。即ち、データ・ブロック2およびデータ・ブロック2’は、同一の論理
ブロック・アドレスの異なる時点での状態を示す。本発明の当該実施形態では、スナップショットに記録されたデータ、スナップショットの格納されたデータ、またはスナップショットのデータは、装置に格納されスナップショットの時点で記録されたデータを示す。スナップショット(Snapshot)は指定されたデータ・セットに関する完全に利用可能なコピーであり、当該コピーは時間点(当該コピーが開始する時間点)であるデータのイメージを含む。具体的な意味については、ストレージ・ネットワーキング業界団体(Storage Networking Industry Association、SNIA)における定義を参照することができる。一般に、スナップショットは、2つの実装方式、即ち、コピー・オン・ライト(Copy On Write、COW)およびリダイレクト・オン・ライト(Redirect On Write、ROW)を有する。詳細はここでは説明しない。任意選択で、当該修正の後に取得されたデータ・ブロック2’を、スナップショットS
xをスナップショットS
nと比較することによって決定してもよい。任意選択で、修正の後に取得されたデータ・ブロックをさらに、データ変更ログ(Data Change Log、DCL)を用いることによって決定してもよい。DCL方式では、ソース・デバイス101がn番目のスナップショットS
nを記録した後、ソース・デバイス101がデータ書込み要求を受信し、当該データ書込み要求を解析して当該データ書込み要求で運搬される論理
ブロック・アドレスを取得する。当該受信されたデータ書込み要求で運搬されるアドレスがn番目のスナップショットS
nに記録されたデータ・ブロックの論理
ブロック・アドレスであるとき、当該データ・ブロックが修正される。
図1を1例として用いると、ソース・デバイス101がDCLを用いることによってn番目のスナップショットS
nを記録した後、ソース・デバイス101により受信されたデータ書込み要求がデータ・ブロック2の論理
ブロック・アドレスを運搬する場合、データ・ブロック2が修正されると判定される。
【0030】
ステップ1:ソース・デバイス101は、データ・ブロック2’がn番目のスナップショットS
nの後に取得されたデータ・ブロック2の修正されたブロックであると判定する。
【0031】
本発明の当該実施形態では、データ・ブロック2’が0011 1110 0000 1010 0010 0011である例(読む都合のため、データ・ブロック2’の内容が4つのビットの単位で示されている)を使用する。
【0032】
ステップ2:ソース・デバイスが、データ・ブロック2’の論理
ブロック・アドレスに従って、n番目のスナップショットS
nに記録されたデータ・ブロック2を決定する。
【0033】
本発明の当該実施形態では、データ・ブロック2は1110 0001 1010 0010 0011 0100である。
【0034】
ステップ3:データ・ブロック2’の循環シフトのシフト量を決定し、当該シフト量に従って循環シフトをデータ・ブロック2’に実施する。
【0035】
任意選択で、
図2aに示すように、以下の計算規則がソース・デバイス101に対して構成される。即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置
であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示す。
【0036】
上述の計算規則に従って、例えば、21個のウィンドウ(例えば、ウィンドウのサイズは4ビットである)が設定され、隣接するウィンドウの開始位置は互いから1ビット離れており(即ち、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から1ビット離れている)、ソース・デバイス101は、各ウィンドウ内にあるデータ・ブロック2の少なくとも部分的なデータにハッシュ計算を実施し、各ウィンドウ内にあるデータ・ブロック2’の少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値の降順で、それぞれA、B、C、およびDである第1の4つのハッシュ値をデータ・ブロック2の当該21個のウィンドウから選択する。当該4つのハッシュ値に対応するウィンドウはそれぞれウィンドウ1、ウィンドウ3、ウィンドウ9、およびウィンドウ11であり、ウィンドウ1、ウィンドウ3、ウィンドウ9、およびウィンドウ11に対応するオフセットはそれぞれ0、2、8、および10である。ウィンドウに対応するオフセットとは、当該ウィンドウの開始位置がデータ・ブロックの開始位置から離れているビットの量を指す。例えば、データ・ブロック2において、ウィンドウ1の開始位置はデータ・ブロック2の開始位置から零ビット離れており、ウィンドウ3の開始位置はデータ・ブロック2の開始位置から2ビット離れている。同様に、ハッシュ値の降順で、それぞれA、E、C、およびDである第1の4つのハッシュ値はデータ・ブロック2’の21個のウィンドウから選択される。当該4つのハッシュ値に対応するウィンドウはそれぞれウィンドウ5’、ウィンドウ17’、ウィンドウ13’、およびウィンドウ15’であり、ウィンドウ5’、ウィンドウ17’、ウィンドウ13’、およびウィンドウ15’に対応するオフセットは
それぞれ4、16、12、および14である。ソース・デバイス101は、当該2つのグループ内の同一のハッシュ値、即ち、ハッシュ値A、C、およびDを検索する。ソース・デバイス101は、同一のハッシュ値に対応するウィンドウのオフセットの間の差異がシフト量として使用されると判定する。ハッシュ値がAであるウィンドウ1およびウィンドウ5’のオフセットの間の差異が4であり、ハッシュ値がCであるウィンドウ9およびウィンドウ13’のオフセットの間の差異が4である場合、これは、内容が当該2つのデータ・ブロックの間で同一である可能性があるが、ジグザグ配置現象があり、左への4ビットの循環シフトを用いることによって、当該2つのデータ・ブロックの同一内容が互いに整列することを保証できることを示す。上述の方法を用いることによって取得されたオフセットの差異が−4である場合、右への4ビットの循環シフトが実施される。当該2つのグループ内の全てのハッシュ値が同一であり、同一のハッシュ値に対応するオフセットも同一であるとき、これは、シフトは必要でないこと、即ち、零ビットの循環シフトが実施されることを示す。本発明の当該実施形態では、4つのハッシュ値がハッシュ値の降順で選択されることは例示的なものにすぎない。任意選択で、(i+1)番目のウィンドウの開始位置がi番目のウィンドウの開始位置から離れる固定長がまた複数ビットであってもよい。任意選択で、選択をハッシュ値の昇順で実施してもよい。
図3に示すように、本発明の当該実施形態では、データ・ブロック2’はデータ・ブロック2から4ビット離れていると判定された場合、左への4ビットの循環シフトをデータ・ブロック2’に実施して、(シフトされたデータ・ブロックと称される)シフト後のデータ・ブロック、即ち、1110 0000 1010 0010 0011 0011を取得する。所謂循環シフトは、コンピュータ用語であり、端へのシフトが実施されたとき、当該シフト前の元の範囲内のビットは失われないが、他の端のシフトイン・ビットとして使用されることを指す。例えば、左への4ビットの循環シフトが実施され、0011が右側のシフトイン・ビットとして使用される。
【0037】
任意選択で、
図2bに示すように、先ず、排他OR操作をデータ・ブロック2’およびデータ・ブロック2に実施して、排他ORデータ・ブロックa1を取得し、排他ORデータ・ブロックa1に含まれる0の数が10であることが得られ、次いで、左への1ビットの循環シフトがデータ・ブロック2’に実施され、左への1ビットの循環シフトを実施することによって取得されたデータ・ブロックとデータ・ブロック2に排他OR操作を実施して、排他ORデータ・ブロックa2を取得し、排他ORデータ・ブロックa2に含まれる0の数が10であることが得られる。左への23ビットの循環シフトがデータ・ブロック2’に実施され、左への23ビットの循環シフトを実施することによって取得されたデータ・ブロックおよびデータ・ブロック2に排他OR操作が実施され、排他ORデータ・ブロックa23が取得され排他ORデータ・ブロックa23に含まれる0の数が決定されるまで、以上の規則に従って左への循環シフトが実施される。0の最大数を含む排他ORデータ・ブロックが、排他ORデータ・ブロックa1からa23まで決定され、本発明の当該実施形態では、排他ORデータ・ブロックa5であり、次いで、左への4ビットの循環シフトがデータ・ブロック2’に実施されると判定される。排他ORデータ・ブロックa1が全て0のデータである場合、循環シフトを実施する必要はない。排他OR操作により得られたデータ内の多数の0は、2つのデータ・ブロックの間で同一である多数のデータを示すことが上述の説明から分かる。
【0038】
循環シフトを用いることによって、データ・ブロック2およびデータ・ブロック2’をシフトすることで取得されたシフトされたデータ・ブロックの間で多くのデータが同一であり、その結果、後続の排他OR操作により得られたデータ・ブロックは0である多くのビットを含む。循環シフトが必要でないとき、即ち、各ビットがデータ・ブロック2’およびデータ・ブロック2の間で同一であるとき、零ビットの循環シフトが実施される。
【0039】
ステップ4:特に
図4に示すように、シフトされたデータ・ブロックおよびデータ・ブロック2に排他OR操作を実施して、0000 0001 0000 0000 0000 0111のデータ・ブロック(即ち、排他ORデータ・ブロック)を取得する。
【0040】
ステップ5:ソース・デバイス101が、取得された排他ORデータ・ブロックに圧縮動作を実施する。
【0041】
ソース・デバイス101が、特に、LZ4圧縮アルゴリズム、ZLIB圧縮アルゴリズム、ランレングス符号化(Run−length encoding、RLE)圧縮アルゴリズム等を用いることによって圧縮動作を排他ORデータ・ブロックに実施してもよく、本発明の当該実施形態では限定されない。
【0042】
ソース・デバイス101がRLE圧縮アルゴリズムを用いることによって排他ORデータ・ブロックを圧縮する例を使用する。
図5に示す実施形態の方式では、当該RLEアルゴリズムは左から右へ当該排他ORデータ・ブロックを訪問し、連続的に反復されたデータを出現回数の量で置き換え、次いで、圧縮された排他ORデータ・ブロックが0(7)1(1)0(13)1(3)のように示される。0(7)は0が連続的に7回出現したことを示し、1(1)は1が連続的に1回出現したことを示し、0(13)は0が連続的に13回出現したことを示し、1(3)は1が連続的に3回出現したことを示す。上述の指示方式は理解および区別の都合のためであり、実際の実装に対しては、RLE圧縮アルゴリズムの説明を参照することができる(https://en.wikipedia.org/wiki/Run-length_encodingを参照)。
【0043】
修正されたデータ・ブロックを直接圧縮することと比較すると、上述のステップを用いることにより、ソース・デバイス101によりバックアップ側デバイス102に送信されるデータの量が減り、それにより送信帯域幅が節約される。
【0044】
ステップ6:ソース・デバイス101は、圧縮されたデータ・ブロックをデータ・パケットにカプセル化して、当該データ・パケットをバックアップ側デバイス102に送信する。当該データ・パケットは、データ・ブロック2’の論理
ブロック・アドレス、データ・ブロック2’のシフト情報、当該圧縮されたデータ・ブロック、およびスナップショットS
nのバージョン番号を運搬する。当該シフト情報は循環シフト方向とシフト量を含む。
【0045】
本発明の当該実施形態では、バックアップ・データのデータ・パケットを送信するためのプロトコルは制限されない。1実装方式では、
図6に示すように、4つのフィールド601、602、603、および604が元のデータ・パケットに加えられる。601はデータ・ブロック2’の論理
ブロック・アドレスを示すために使用され、また、データ・ブロック2の論理
ブロック・アドレスであり、602はn番目のスナップショットS
nのバージョン番号を示し、603はデータ・ブロック2’のシフト情報を示すために使用され(本発明の当該実施形態では、シフト量は4ビットであり、それだけ左への循環シフトが実施される)、604は圧縮されたデータ・ブロックを運搬するために使用される。具体的な実装では、フィールドの順序は限定されない。フィールド603において、循環シフト方式を、第1のビットを用いて示してもよい。例えば、0は左への循環シフトを示し、1は右への循環シフトを示す。第1のビット以外のビットは循環シフトのシフト量、または、デフォルトの方向への循環シフトを示す。スナップショットのバージョン番号はスナップショットの識別子である。1つの実装は、スナップショットが増大するにつれバージョン番号が線形に増大するものである。
【0046】
ステップ7:バックアップ側デバイス102は、データ・パケットを受信し解析して、当該データ・パケットで運搬されるデータ・ブロック2’の論理
ブロック・アドレス、データ・ブロック2’のシフト情報、圧縮されたデータ・ブロック、およびスナップショットS
nのバージョン番号を取得する。
【0047】
特に、
図6に示すデータ・パケットを1例として使用するとき、バックアップ側デバイス102はデータ・パケットを解析してフィールド601、602、603、および604内の情報を取得する。
バックアップ側デバイス102はフィールド604で運搬される圧縮されたデータ・ブロックを解凍する。フィールド604で運搬される圧縮されたデータ・ブロックはRLE圧縮アルゴリズムを用いることによって取得され、したがって0(7)10(13)1(3)は0000 0001 0000 0000 0000 0111、即ち、ソース・デバイス101の端にある排他ORデータ・ブロックを取得するために解凍される。フィールド601で運搬される修正されたデータ・ブロック2’の論理ブロック・アドレスおよびフィールド602で運搬されるn番目のスナップショットS
nのバージョン番号に従って、バックアップ側デバイス102は、バックアップ側デバイス102内のn番目のスナップショットS
nに記録されたデータ・ブロック2を決定して、1110 0001 1010 0010 0011 0100のデータ・ブロック2を取得する。
図7に示すように、バックアップ側デバイス102は、データ・ブロック2および排他ORデータ・ブロックに排他OR操作を実施して、ソース・デバイス101内の1110 0000 1010 0010 0011 0011のシフトされたデータ・ブロック、即ち、データ・ブロック2’がシフトされた後に取得されたデータ・ブロックを取得する。バックアップ側デバイス102は、フィールド603で運搬されるシフト情報に従って逆循環シフトを実施する。
図8に示すように、本発明の当該実施形態では、当該逆循環シフトは、ソース・デバイス101内のデータ・ブロック2’を取得するための右への4ビットの循環シフトである。
【0048】
ステップ8:バックアップ側デバイス102が、ソース・デバイス101から受信されたデータ・パケットで運搬される、データ・ブロック2’の論理ブロック・アドレスにデータ・ブロック2’を書き込む。
【0049】
具体的な実装では、バックアップ側デバイス102とソース・デバイス101は同一の論理
ブロック・アドレスを有し、したがってデータ・ブロック2’の論理
ブロック・アドレスはバックアップ側デバイス102に格納され、データ・ブロック2’の論理
ブロック・アドレスはソース・デバイス101に格納される。上述の解決策では、バックアップ側デバイス102が、データ・ブロック2’の論理
ブロック・アドレスに従って、バックアップ側デバイス102に格納されたデータ・ブロックのデータ・ブロック2を修正してデータ・ブロック2’を取得し、その結果、データ・ブロック1、データ・ブロック2’、データ・ブロック3、およびデータ・ブロック4がバックアップ側デバイス102に格納される。
【0050】
バックアップ側デバイス102は既に、スナップショット操作をデータ・ブロック1、データ・ブロック2、データ・ブロック3、およびデータ・ブロック4に実施して、バックアップ側デバイス102内のスナップショットS
nを取得している。したがって、バックアップ側デバイス102が格納されたデータ・ブロック2を修正してデータ・ブロック2’を取得するとき、データ・ブロック2が同時に維持される。
【0051】
ステップ8の後、バックアップ側デバイス102はx番目のスナップショット操作をバックアップ側に実施して、スナップショットS
xを取得する。特に
図9に示すように、スナップショットS
xの時点でバックアップ側デバイス102に格納されたデータがデータ・ブロック1、データ・ブロック2’、データ・ブロック3、およびデータ・ブロック4を含む例を使用する。スナップショットS
nに記録されたデータ・ブロック2の論理
ブロック・アドレスは、スナップショットS
xに記録されたデータ・ブロック2’の論理
ブロック・アドレスと同一である。即ち、データ・ブロック2およびデータ・ブロック2’は、異なる時点の同一の論理
ブロック・アドレスの状態を示す。
【0052】
ソース・デバイス101内に故障が発生してデータ損失が生ずると、バックアップ側デバイス102内のスナップショット・データを用いることによって復元を実施してもよい。本発明の当該実施形態では、ソース・デバイス101を、バックアップ側デバイス102を用いることによってx番目のスナップショットS
xの時点の状態に復元してもよい。例えば、ソース・デバイス101が、故障のために、スナップショットS
xに記録されたデータ・ブロック2’(即ち、データ・ブロック2が修正された後に取得されたデータ・ブロック)を失い、スナップショットS
nの時点でのデータのみを有する(またはスナップショットS
nの時点での状態と称される)場合、ソース・デバイス101はデータ復元要求をバックアップ側デバイス102に送信する。当該データ復元要求は、ソース・デバイス101内の現在のスナップショットS
nのバージョン番号を運搬する。したがって、バックアップ側デバイス102は、当該データ復元要求で運搬されるソース・デバイス101内の現在のスナップショットS
nのバージョン番号に従って、ソース・デバイス101がスナップショットS
nの時点でのデータしか有さないと判定する。第1の実装方式では、バックアップ側デバイス102は、ソース・デバイス101内の現在のスナップショットS
nのバージョン番号に従って、復元される必要があるデータがデータ・ブロック2’であると判定し、データ・ブロック2’の論理ブロック・アドレスおよびデータ・ブロック2’をソース・デバイス101に送信する。ソース・デバイス101は、データ・ブロック2’の論理ブロック・アドレスおよびデータ・ブロック2’を受信し、データ・ブロック2’をソース・デバイス101内のデータ・ブロック2’の論理ブロック・アドレスに書き込み、それによりソース・デバイス101をx番目のスナップショットS
xの時点の状態に復元する。特に、スナップショットに基づいてソース・デバイス内のデータを復元するための既存の解決策を参照することができる。詳細はここでは説明しない。
【0053】
別の実装方式では、バックアップ側デバイス102は、ソース・デバイス101により送信されたデータ復元要求に従って、復元される必要があるデータがデータ・ブロック2’であると判定し、バックアップ側デバイス102は、データ・ブロック2’の論理
ブロック・アドレスに従って、スナップショットS
nに記録したデータ・ブロック2を決定する。バックアップ側デバイス102は、データ・ブロック2’の循環シフトのシフト量を決定し、当該シフト量に従って循環シフトをデータ・ブロック2’に実施して、シフトされたデータ・ブロックを取得し、排他OR操作を当該シフトされたデータ・ブロックとデータ・ブロックに実施して、圧縮されたデータ・ブロックを取得し、当該圧縮されたデータ・ブロック、データ・ブロック2’の論理ブロック・アドレス、n番目のスナップショットS
nのバージョン番号、およびデータ・ブロック2’のシフト情報をデータ・パケットにカプセル化し、当該データ・パケットをソース・デバイス101に送信する。具体的な実装については、ステップ2乃至7を参照することができる。データ・パケットの具体的なフォーマットについては、
図6を参照することができる。第1の実装方式と比較して、データ復元プロセスにおいてバックアップ側デバイス102によりソース・デバイス101に送信されるデータの量が削減され、送信帯域幅が節約される。ソース・デバイス101は、バックアップ側デバイス102により送信されたデータ・パケットを受信し解析して、排他OR操作、逆循環シフト操作、およびデータ書込み動作を当該受信されたパケットに従って実施して、データ・ブロック2’を取得する。具体的な実装については、ステップ7およびステップ8を参照することができる。データ・ブロック2’はデータ・ブロック2’の論理
ブロック・アドレスに書き込まれ、それによりソース・デバイス101をスナップショットS
xの時点の状態に復元する。
【0054】
本発明の別の実施形態では、ソース・デバイス101がデータ・ブロック2’をバックアップ側デバイス102にバックアップする別の実装方式を提供する。ステップ1’とステップ2’はそれぞれステップ1および2と同様である。詳細はここでは説明しない。
【0055】
ステップ3’:排他OR操作をデータ・ブロック2’およびデータ・ブロック2に実施して、1101 1111 1010 1000 0001 0111の排他ORデータ・ブロックを取得する。具体的な排他OR操作については
図4を参照することができる。
【0056】
ステップ4’:1101 1111 1010 1000 0001 0111の排他ORデータ・ブロックを圧縮する。具体的な実装については、ステップ5の説明を参照することができる。詳細はここでは説明しない。
【0057】
ステップ5’:ソース・デバイス101は、圧縮されたデータ・ブロックをデータ・パケットにカプセル化して、当該データ・パケットをバックアップ側デバイス102に送信する。当該データ・パケットはデータ・ブロック2’の論理
ブロック・アドレス、圧縮されたデータ・ブロック、およびスナップショットS
nのバージョン番号を運搬する。
【0058】
具体的な実装については
図6を参照することができる。データ・パケットは、フィールド601、602、および604を含む(循環シフト操作は必要でなく、したがってフィールド603は必要でない)。601は、データ・ブロック2の論理
ブロック・アドレスでもあるデータ・ブロック2’の論理
ブロック・アドレスを示すために使用され、602はn番目のスナップショットS
nのバージョン番号を示し、604は圧縮されたデータ・ブロックを運搬するために使用される。具体的な実装では、当該フィールドの順序は限定されない。
【0059】
ステップ6’:
バックエンド側デバイス102は、データ・パケットを受信し解析して、フィールド601、602、および604内の情報を取得する。
バックエンド側デバイス102はフィールド604で運搬される圧縮されたデータ・ブロックを解凍する。フィールド601で運搬される修正されたデータ・ブロック2’の論理ブロック・アドレスおよびフィールド602で運搬されるn番目のスナップショットS
nのバージョン番号に従って、バックアップ側デバイス102はバックアップ側デバイス102内のn番目のスナップショットS
nに記録されたデータ・ブロック2を決定し、バックアップ側デバイス102は、データ・ブロック2および1101 1111 1010 1000 0001 0111の排他ORデータ・ブロックに排他OR操作を実施してデータ・ブロック2’を取得する。
【0060】
ステップ7’はステップ8と同様である。詳細はここでは説明しない。
【0061】
バックアップ側デバイス102がデータ復元をソース・デバイス
101に実施する別の実装方式では、バックアップ側デバイス102は、ソース・デバイス101により送信されたデータ復元要求に従って、復元される必要があるデータがデータ・ブロック2’であると判定し、バックアップ側デバイス102は、データ・ブロック2’の論理
ブロック・アドレスに従って、スナップショットS
nに記録したデータ・ブロック2を発見する。バックアップ側デバイス102は、ソース・デバイス101がステップ3’および4’を実施する以前の方式を別々に使用することによって、圧縮されたデータ・ブロックを取得する。バックアップ側デバイス102は、当該圧縮されたデータ・ブロック、データ・ブロック2’の論理ブロック・アドレス、およびn番目のスナップショットS
nのバージョン番号をデータ・パケットにカプセル化して、当該データ・パケットをソース・デバイス101に送信する。当該データ・パケットの具体的なフォーマットについては、ステップ5’を参照することができる。したがって、データ復元プロセスにおいてバックアップ側デバイス102によりソース・デバイス101に送信されるデータの量が削減され、送信帯域幅が節約される。ソース・デバイス101は、バックアップ側デバイス102により送信されたデータ・パケットを受信し解析して、バックアップ側デバイス102により実施されるステップ6’およびステップ7’の方式でデータ・ブロック2’を取得し、データ・ブロック2’をデータ・ブロック2’の論理
ブロック・アドレスに書き込み、それによりソース・デバイス101をスナップショットS
xの時点の状態に復元する。
【0062】
本発明の当該実施形態における排他OR操作をまた排他NOR操作で置き換えてもよく、同一の効果を実現することができる。特に、シフト量を決定するための1実装方式では、排他NOR操作が使用される場合、当該排他NOR操作をデータ・ブロック2’およびデータ・ブロック2に実施して、排他NORデータ・ブロックa1を取得し、排他NORデータ・ブロックa1に含まれる1の数を取得し、次いで、左への1ビットの循環シフトをデータ・ブロック2’に実施し、排他NOR操作をデータ・ブロック2と左への1ビットの循環シフトを実施することによって取得されたデータ・ブロックとに実施して、排他NORデータ・ブロックa2を取得し、排他NORデータ・ブロックa2に含まれる1の数を取得する。左への23ビットの循環シフトがデータ・ブロック2’に実施され、排他NORがデータ・ブロック2と左への23ビットの循環シフトを実施することによって取得されたデータ・ブロックとに実施されて、排他NORデータ・ブロックa23を取得し排他NORデータ・ブロック
a23に含まれる1の数を決定するまで、以上の規則に従って左への循環シフトが実施される。最大量の1を含む排他NORデータ・ブロックが、排他NORデータ・ブロックa1からa23まで決定され、本発明の当該実施形態では、排他NORデータ・ブロックa5であり、次いで、左への4ビットの循環シフトがデータ・ブロック2’に実施されると判定される。排他NORデータ・ブロックa1が全て1のデータである場合、循環シフトを実施する必要はない。
【0063】
本発明の実施形態で説明したデータ・バックアップ方法と本発明の実施形態におけるデータ復元方法を組み合わせて使用してもよく、または、独立に使用してもよい。
【0064】
本発明の当該実施形態におけるソース・デバイス101およびバックアップ側デバイス102が、記憶アレイであってもよい。即ち、ソース・デバイス101はソース記憶アレイであり、バックアップ側デバイス102はバックアップ側記憶アレイである。記憶アレイの構造が
図10に示されており、記憶コントローラおよび複数のハード・ディスクを含む。当該記憶コントローラは、中央演算装置(
Central Processing Unit、CPU)およびメモリを備える。当該CPUと当該メモリはバスを用いることによって互いと通信し、当該記憶コントローラはさらに、ホストおよびハード・ディスクと通信するインタフェースを備える。当該記憶コントローラは論理結合を当該ハード・ディスクに実施し、必要に応じて当該ハード・ディスクを異なるRAIDグループに分割する。当該記憶コントローラはRAIDグループの利用可能な容量を、論理ユニット(
Logical Unit)と呼ばれる相対的に小さなユニットに分割する。一意な識別子が各論理ユニットに割り当てられ、論理ユニット番号(Logical Unit Number、LUN)と呼ばれる。当該記憶コントローラは論理ユニットを利用のためにホストに割り当て、即ち、当該論理ユニットのLUNを当該ホストに公開する。具体的な実装については、記憶技術の分野における論理ユニット割当て技術を参照することができる。本発明の当該実施形態では、ソース記憶アレイをバックアップすることが、データ・ブロックを当該記憶アレイ内の論理ユニットにバックアップすることであってもよく、または、複数の論理ユニットをバックアップすることであってもよい。記憶アレイのシナリオにおいて、DCL技術を用いることによって修正されたデータ・ブロックを決定することは特に、記憶コントローラがデータ書込み要求で運搬されるデータ・ブロックのアドレスを解析することによって当該修正されたデータ・ブロックの論理
ブロック・アドレスを記録すること、即ち、運搬されるデータ・ブロックの論理ブロック・アドレス(
Logical Block Address、LBA)および長さを記録することである。
図6に示すフィールド601は修正されたデータ・ブロック2’のLBAおよび長さを運搬する。
【0065】
本発明の当該実施形態におけるソース・デバイス101およびバックアップ側デバイス102がネットワーク・アタッチト・ストレージ(Network Attached Storage、NAS)であってもよく、
図11に示すようにNASヘッダおよび記憶アレイ(
図9を参照)を備える。当該NASヘッダはCPUおよびメモリを備え、当該NASヘッダはさらに記憶業界における標準記憶プロトコルおよびポートを備え、これらは物理磁気ディスク・リソースに接続しこれを管理するために使用される。当該NASヘッダ内のCPUはファイル共有プロトコルを実行して、ファイル・アクセスを実装する。特に、当該ファイル共有プロトコルはネットワーク・ファイル・システム(Network File System、NFS)、共通インターネット・ファイル・システム(Common Internet File System、CIFS)等を含む。本発明の当該実施形態では、ソースNASをバックアップすることが、ファイル・システムを当該NASにバックアップすることであってもよい。NASのシナリオでは、DCL技術を用いることによって修正されたデータ・ブロックが決定されることは特に、NASヘッダが、データ書込み要求で運搬されるデータ・ブロックのアドレスを解析することによって決定された修正されたデータ・ブロックのアドレスを記録すること、即ち、運搬されるファイル識別子、オフセット(Offset)、および長さを記録することである。
図6に示すフィールド601は、ファイル識別子、オフセット(Offset)、および長さを運搬する。
【0066】
図12に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のソース・デバイス101の役割を果たすように構成され、当該記憶システムはさらに、ソース・デバイス101のバックアップ側デバイス102を備える。
図1に示す記憶システムを参照することができる。n番目のスナップショットS
nのデータは、記憶装置101とバックアップ側デバイス102の両方に格納され、nは整数である。記憶装置101は、インタフェース1201およびプロセッサ1202を備え、インタフェース1201とプロセッサ1202はバスを用いることによって互いと通信する。プロセッサ1202は、n番目のスナップショットS
nの後に記憶装置101に書き込まれた第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理
ブロック・アドレスに従って、n番目のスナップショットS
nに記録された第2のデータ・ブロックを決定し、第1のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するように構成される。第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作である。インタフェース1201は、バックアップ側デバイス102に、第4のデータ・ブロック、第1のデータ・ブロックの論理
ブロック・アドレス、およびn番目のスナップショットS
nのバージョン番号を運搬するデータ・パケットを送信するように構成される。任意選択で、プロセッサ1202は特に、n番目のスナップショットS
nの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理
ブロック・アドレスに従って第1のデータ・ブロックを決定するように構成される。任意選択で、プロセッサ1202は特に、x番目のスナップショットS
x操作を実施し、スナップショットS
nをスナップショットS
xと比較し、第1のデータ・ブロックを決定するように構成され、nおよびxは整数であり、n<xである。
【0067】
図12に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス102の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス102のソース・デバイス101を備える。
図1に示す記憶システムを参照することができる。n番目のスナップショットS
nのデータは、記憶装置102とソース・デバイス101の両方に格納され、nは整数である。記憶装置102は、インタフェース1201およびプロセッサ1202を備える。インタフェース1201とプロセッサ1202はバスを用いることによって互いと通信する。インタフェース1201は、ソース・デバイス101により送信されたデータ・パケットを受信し解析して、第4のデータ・ブロック、第1のデータ・ブロックの論理
ブロック・アドレス、およびn番目のスナップショットS
nのバージョン番号を取得するように構成される。プロセッサ1202は、第1のデータ・ブロックの論理
ブロック・アドレスおよびn番目のスナップショットS
nのバージョン番号に従って、スナップショットS
nに記録された第2のデータ・ブロックを決定し、第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得し、第3のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して、第1のデータ・ブロックを取得し、第1のデータ・ブロックを第1のデータ・ブロックの論理
ブロック・アドレスに書き込むように構成される。第1のデータ・ブロックは、ソース・デバイスによりn番目のスナップショットS
nの後に書き込まれたデータ・ブロックであり、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作である。
【0068】
図12に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス102の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス102のソース・デバイス101を備える。
図9に示す記憶システムを参照することができる。n番目のスナップショットS
nのデータは、記憶装置102とソース・デバイス101の両方に格納され、nは整数である。記憶装置102は、インタフェース1201およびプロセッサ1202を備える。インタフェース1201は、ソース・デバイス101により送信されたデータ復元要求を受信し解析して、スナップショットS
nのバージョン番号を取得するように構成される。プロセッサ1202は、スナップショットS
nのバージョン番号およびスナップショットS
xのバージョン番号に従って、スナップショットS
xに記録された第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理
ブロック・アドレスおよびスナップショットS
nのバージョン番号に従って、スナップショットS
nに記録され当該論理
ブロック・アドレスに格納された第2のデータ・ブロックを決定し、第1のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するように構成される。第1のデータ・ブロックは、記憶装置102によりバックアップされたスナップショットS
xに記録されソース・デバイス101によりn番目のスナップショットS
nの後に書き込まれたデータ・ブロックであり、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作である。インタフェース
1201はさらに、ソース・デバイス101に、第4のデータ・ブロックおよび第1のデータ・ブロックの論理
ブロック・アドレスを運搬するデータ・パケットを送信するように構成される。
【0069】
図12に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のソース・デバイス101の役割を果たすように構成され、当該記憶システムはさらに、ソース・デバイス101のバックアップ側デバイス102を備える。
図9に示す記憶システムを参照することができる。n番目のスナップショットS
nのデータは、記憶装置101とバックアップ側デバイス102の両方に格納され、nは整数である。記憶装置101は、インタフェース1201とプロセッサ1202を備え、インタフェース1201とプロセッサ1202はバスを用いることによって互いと通信する。インタフェース1201は、データ復元要求をバックアップ側デバイス102に送信し、当該データ復元要求に従ってバックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第4のデータ・ブロックおよび第1のデータ・ブロックの論理
ブロック・アドレスを取得するように構成される。当該データ復元要求はスナップショットS
nのバージョン番号を運搬し、第1のデータ・ブロックは、バックアップ側デバイス102によりバックアップされたスナップショットS
xに記録され記憶装置101によりn番目のスナップショットS
nの後に当該論理
ブロック・アドレスに書き込まれたデータ・ブロックである。プロセッサ1202は、第1のデータ・ブロックの論理
ブロック・アドレスに従って、ソース・デバイスに格納されたスナップショットS
nに記録された第2のデータ・ブロックを決定し、第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得し、第3のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第1のデータ・ブロックを取得し、第1のデータ・ブロックを第1のデータ・ブロックの論理
ブロック・アドレスに書き込むように構成される。第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作である。
【0070】
図12に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のソース・デバイス101の役割を果たし、当該記憶システムはさらに、ソース・デバイス101のバックアップ側デバイス102を備える。
図1に示す記憶システムを参照することができる。n番目のスナップショットS
nのデータは、ソース・デバイス101とバックアップ側デバイス102の両方に格納され、nは整数である。記憶装置101は、インタフェース1201とプロセッサ1202を備え、インタフェース1201とプロセッサ1202はバスを用いることによって互いと通信する。プロセッサ1202は、n番目のスナップショットS
nの後にソース・デバイスに書き込まれた第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理
ブロック・アドレスに従って、n番目のスナップショットS
nに記録された第2のデータ・ブロックを決定し、第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、当該シフト量に従って循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得し、第3のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得し、第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するように構成される。第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作である。インタフェース1201は、バックアップ側デバイス102に、第5のデータ・ブロック、第1のデータ・ブロックの論理
ブロック・アドレス、シフト情報、およびn番目のスナップショットS
nのバージョン番号を運搬するデータ・パケットを送信するように構成され、当該シフト情報は循環シフト方向とシフト量を含む。任意選択で、以下の計算規則が記憶装置101に対して構成される。即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置
であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示す。プロセッサ1202は特に、当該計算規則に従って、各ウィンドウ内の、第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を第1のデータ・ブロックのハッシュ値から選択し、第1のM個のハッシュ値を第2のデータ・ブロックのハッシュ値から選択し、第1のデータ・ブロックの第1のM個のハッシュ値および同一のハッシュ値に対する第2のデータ・ブロックの第1のM個のハッシュ値を検索し、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定するように構成され、Mは正の整数でありNより大きくない。任意選択で、(i+1)番目のウィンドウの開始位置がi番目のウィンドウの開始位置から離れる固定長は1ビットまたは複数ビットである。任意選択で、当該ハッシュ値が設定されバックアップ側デバイスがそれに従って選択を実施する順序が、特に昇順または降順であってもよい。任意選択で、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。任意選択で、プロセッサ1202は特に、n番目のスナップショットS
nの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理
ブロック・アドレスに従って第1のデータ・ブロックを決定するように構成される。任意選択で、プロセッサ1202は特に、x番目のスナップショットS
x操作をソース・デバイス101に実施し、スナップショットS
nをスナップショットS
xと比較し、第1のデータ・ブロックを決定するように構成され、nおよびxは整数であり、n<xである。
【0071】
図12に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス102の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス102のソース・デバイス101を備える。
図1に示す記憶システムを参照することができる。n番目のスナップショットS
nのデータは、ソース・デバイス101とバックアップ側デバイス102の両方に格納され、nは整数である。記憶装置102は、インタフェース1201とプロセッサ1202を備え、インタフェース1201とプロセッサ1202はバスを用いることによって互いと通信する。インタフェース1201は、ソース・デバイス101により送信されたデータ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理
ブロック・アドレス、シフト情報、およびn番目のスナップショットS
nのバージョン番号を取得するように構成される。プロセッサ1202は、第1のデータ・ブロックの論理
ブロック・アドレスおよびn番目のスナップショットS
nのバージョン番号に従って、スナップショットS
nに記録された第2のデータ・ブロックを決定し、第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得し、第4のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、当該シフト情報に従って逆循環シフトを第3のデータ・ブロックに実施して第1のデータ・ブロックを取得し、第1のデータ・ブロックを第1のデータ・ブロックの論理
ブロック・アドレスに書き込むように構成される。第1のデータ・ブロックは、ソース・デバイスによりn番目のスナップショットS
nの後に書き込まれたデータ・ブロックであり、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作であり、当該シフト情報は、循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得するためにソース・デバイス101により必要とされるシフト量および循環シフト方向を含む。
【0072】
図12に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス102の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス102のソース・デバイス101を備える。
図9に示す記憶システムを参照することができる。n番目のスナップショットS
nのデータはソース・デバイス101に格納され、ソース・デバイス内のn番目のスナップショットS
nのデータおよびx番目のスナップショットS
xのデータはバックアップ側デバイス102に格納され、nおよびxは整数であり、n<xである。記憶装置102は、インタフェース1201とプロセッサ1202を備え、インタフェース1201とプロセッサ1202はバスを用いることによって互いと通信する。インタフェース1201は、ソース・デバイス101により送信されたデータ復元要求を受信するように構成される。当該データ復元要求はスナップショットS
nのバージョン番号を運搬する。プロセッサ1202は、スナップショットS
nのバージョン番号およびスナップショットS
xのバージョン番号に従って、スナップショットS
xに記録された第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理
ブロック・アドレスおよびスナップショットS
nのバージョン番号に従って、スナップショットS
nに記録され当該論理
ブロック・アドレスに格納された第2のデータ・ブロックを決定し、第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、当該シフト量に従って循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得し、第3のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得し、第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するように構成される。第1のデータ・ブロックはバックアップ側デバイス102によりバックアップされたスナップショットS
xに記録されソース・デバイス101によりn番目のスナップショットS
nの後に書き込まれたデータ・ブロックであり、当該論理演算は排他OR操作または排他NOR操作である。当該インタフェースは、ソース・デバイス101に、第5のデータ・ブロック、第1のデータ・ブロックの論理
ブロック・アドレス、およびシフト情報を運搬するデータ・パケットを送信するように構成される。当該シフト情報は循環シフト方向とシフト量を含む。任意選択で、以下の計算規則が記憶装置101に対して構成される。即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置
であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示す。プロセッサ1202は特に、当該計算規則に従って、各ウィンドウ内の、第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を第1のデータ・ブロックのハッシュ値から選択し、第1のM個のハッシュ値を第2のデータ・ブロックのハッシュ値から選択し、第1のデータ・ブロックの第1のM個のハッシュ値および同一のハッシュ値に対する第2のデータ・ブロックの第1のM個のハッシュ値を検索し、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定するように構成され、Mは正の整数でありNより大きくない。任意選択で、(i+1)番目のウィンドウの開始位置がi番目のウィンドウの開始位置から離れる固定長は1ビットまたは複数ビットである。任意選択で、当該ハッシュ値が設定されバックアップ側デバイスがそれに従って選択を実施する順序が、特に昇順または降順であってもよい。任意選択で、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。
【0073】
図12に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のソース・デバイス101の役割を果たし、当該記憶システムはさらに、ソース・デバイス101のバックアップ側デバイス102を備える。
図9に示す記憶システムを参照することができる。n番目のスナップショットS
nのデータは、記憶装置101に格納され、記憶装置101内のn番目のスナップショットS
nのデータおよびx番目のスナップショットS
xのデータはバックアップ側デバイス102に格納され、nおよびxは整数であり、n<xである。ソース・デバイス101は、インタフェース1201とプロセッサ1202を備え、インタフェース1201とプロセッサ1202はバスを用いることによって互いと通信する。インタフェース
1201は、データ復元要求をバックアップ側デバイス102に送信し、当該データ復元要求に従ってバックアップ側デバイス102により送信されたデータ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理
ブロック・アドレス、およびシフト情報を取得するように構成される。当該データ復元要求はスナップショットS
nのバージョン番号を運搬し、第1のデータ・ブロックは、バックアップ側デバイス102によりバックアップされたスナップショットS
xに記録され記憶装置101によりn番目のスナップショットS
nの後に当該論理
ブロック・アドレスに書き込まれたデータ・ブロックである。プロセッサ1202は、第1のデータ・ブロックの論理
ブロック・アドレスに従って、記憶装置101に格納されたスナップショットS
nに記録された第2のデータ・ブロックを決定し、第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得し、第4のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得し、当該シフト情報に従って逆循環シフトを第3のデータ・ブロックに実施して第1のデータ・ブロックを取得し、第1のデータ・ブロックを第1のデータ・ブロックの論理
ブロック・アドレスに書き込むように構成される。第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックであり、当該論理演算は排他OR操作または排他NOR操作であり、当該シフト情報は、循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得するためにバックアップ側デバイス102により必要とされるシフト量および循環シフト方向を含む。
【0074】
本発明の上述の実施形態における記憶装置内のインタフェース1201およびプロセッサ1202が物理構造であってもよく、または、論理的に分割されてもよい。具体的な実装では、インタフェース1201の幾つかの機能をまた、プロセッサ1202により実装してもよく、または、当該プロセッサに統合してもよい(即ち、当該インタフェースは当該プロセッサの一部である)。当該記憶装置の具体的な機能については、上述の実施形態におけるソース・デバイス101とバックアップ側デバイス102の機能を参照することができる。詳細はここでは説明しない。
【0075】
図13に示すように、本発明の1実施形態では、記憶システム内のソース・デバイス101の役割を果たすように構成された記憶装置を提供する。当該記憶システムはさらに、ソース・デバイス101のバックアップ側デバイス102を備える。
図1に示す記憶システムを参照することができる。n番目のスナップショットS
nのデータは、記憶装置101とバックアップ側デバイス102の両方に格納され、nは整数である。記憶装置101は、決定ユニット1301、論理演算ユニット1302、圧縮ユニット1303、および送信ユニット1304を備える。決定ユニット1301は、n番目のスナップショットS
nの後に記憶装置101に書き込まれた第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理
ブロック・アドレスに従って、n番目のスナップショットS
nに記録された第2のデータ・ブロックを決定するように構成され、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックである。論理演算ユニット1302は、第1のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するように構成され、当該論理演算は排他OR操作または排他NOR操作である。圧縮ユニット1303は、第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するように構成される。送信ユニット1304は、バックアップ側デバイス102に、第4のデータ・ブロック、第1のデータ・ブロックの論理
ブロック・アドレス、およびn番目のスナップショットS
nのバージョン番号を運搬するデータ・パケットを送信するように構成される。任意選択で、決定ユニット1301は特に、n番目のスナップショットS
nの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理
ブロック・アドレスに従って第1のデータ・ブロックを決定するように構成される。任意選択で、決定ユニット1301は特に、x番目のスナップショットS
x操作を実施し、スナップショットS
nをスナップショットS
xと比較し、第1のデータ・ブロックを決定するように構成され、nおよびxは整数であり、n<xである。
【0076】
図14に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス102の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス102のソース・デバイス101を備える。
図1に示す記憶システムを参照することができる。n番目のスナップショットS
nのデータは、記憶装置102とソース・デバイス101の両方に格納され、nは整数である。記憶装置102は、受信解析ユニット1401、決定ユニット1402、解凍ユニット1403、論理演算ユニット1404、および書込みユニット1405を備える。受信解析ユニット1401は、ソース・デバイス101により送信されたデータ・パケットを受信し解析して、第4のデータ・ブロック、第1のデータ・ブロックの論理
ブロック・アドレス、およびn番目のスナップショットS
nのバージョン番号を取得するように構成される。決定ユニット1402は、第1のデータ・ブロックの論理
ブロック・アドレスおよびn番目のスナップショットS
nのバージョン番号に従って、スナップショットS
nに記録された第2のデータ・ブロックを決定するように構成され、第1のデータ・ブロックはソース・デバイス101によりn番目のスナップショットS
nの後に書き込まれたデータ・ブロックであり、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックである。解凍ユニット1403は、第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得するように構成される。論理演算ユニット1404は、第3のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して、第1のデータ・ブロックを取得するように構成され、当該論理演算は排他OR操作または排他NOR操作である。書込みユニット1405は、第1のデータ・ブロックを第1のデータ・ブロックの論理
ブロック・アドレスに書き込むように構成される。
【0077】
図15に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス102の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス102のソース・デバイス101を備える。
図9に示す記憶システムを参照することができる。n番目のスナップショットS
nのデータは、記憶装置102とソース・デバイス101の両方に格納され、nは整数である。記憶装置102は、受信解析ユニット1501、決定ユニット1502、論理演算ユニット1503、圧縮ユニット1504、および送信ユニット1505を備える。受信解析ユニット1501は、ソース・デバイス101により送信されたデータ復元要求を受信し解析して、スナップショットS
nのバージョン番号を取得するように構成される。決定ユニット1502は、スナップショットS
nのバージョン番号およびスナップショットS
xのバージョン番号に従って、スナップショットS
xに記録された第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理
ブロック・アドレスおよびスナップショットS
nのバージョン番号に従って、スナップショットS
nに記録され当該論理
ブロック・アドレスに格納された第2のデータ・ブロックを決定するように構成され、第1のデータ・ブロックは、記憶装置102によりバックアップされたスナップショットS
xに記録されソース・デバイス101によりn番目のスナップショットS
nの後に書き込まれたデータ・ブロックであり、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックである。論理演算ユニット1503は、第1のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するように構成され、当該論理演算は排他OR操作または排他NOR操作である。圧縮ユニット1504は、第3のデータ・ブロックを圧縮して第4のデータ・ブロックを取得するように構成される。送信ユニット1505は、ソース・デバイス101に、第4のデータ・ブロックおよび第1のデータ・ブロックの論理
ブロック・アドレスを運搬するデータ・パケットを送信するように構成される。
【0078】
図16に示すように、本発明の1実施形態では記憶装置を提供する。当該記憶装置は記憶システム内のソース・デバイス101の役割を果たすように構成され、当該記憶システムはさらに、ソース・デバイス101のバックアップ側デバイス102を備える。
図9に示す記憶システムを参照することができる。n番目のスナップショットS
nのデータは、記憶装置101とバックアップ側デバイス102の両方に格納され、nは整数である。当該記憶装置は、送信ユニット1601、受信解析ユニット1602、決定ユニット1603、解凍ユニット1604、論理演算ユニット1605、および書込みユニット1606を備える。送信ユニット1601は、データ復元要求をバックアップ側デバイス102に送信するように構成され、当該データ復元要求はスナップショットS
nのバージョン番号を運搬する。受信解析ユニット1602は、当該データ復元要求に従ってバックアップ側デバイス102により送信されたデータ・パケットを受信し解析して、第4のデータ・ブロックおよび第1のデータ・ブロックの論理
ブロック・アドレスを取得するように構成され、第1のデータ・ブロックは、バックアップ側デバイス102によりバックアップされたスナップショットS
xに記録され記憶装置101によりn番目のスナップショットS
nの後に当該論理
ブロック・アドレスに書き込まれたデータ・ブロックである。決定ユニット1603は、第1のデータ・ブロックの論理
ブロック・アドレスに従って、記憶装置101に格納されたスナップショットS
nに記録された第2のデータ・ブロックを決定するように構成され、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックである。解凍ユニット1604は、第4のデータ・ブロックを解凍して第3のデータ・ブロックを取得するように構成される。論理演算ユニット1605は、第3のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第1のデータ・ブロックを取得するように構成され、当該論理演算は排他OR操作または排他NOR操作である。書込みユニット1606は、第1のデータ・ブロックを第1のデータ・ブロックの論理
ブロック・アドレスに書き込むように構成される。
【0079】
図13に示すように、本発明の別の実施形態では、記憶システム内のソース・デバイス101の役割を果たすように構成された記憶装置を提供する。当該記憶システムはさらに、ソース・デバイス101のバックアップ側デバイス102を備える。
図1に示す記憶システムを参照することができる。n番目のスナップショットS
nのデータは、記憶装置101とバックアップ側デバイス102の両方に格納され、nは整数である。記憶装置101はさらにシフト・ユニット1305を備える。決定ユニット1301は、n番目のスナップショットS
nの後に記憶装置101に書き込まれた第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理
ブロック・アドレスに従って、n番目のスナップショットS
nに記録された第2のデータ・ブロックを決定し、第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するように構成され、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックである。シフト・ユニット1305は、当該シフト量に従って循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得するように構成される。論理演算ユニット1302は、第3のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得するように構成され、当該論理演算は排他OR操作または排他NOR操作である。圧縮ユニット1303は、第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するように構成される。送信ユニット1304は、バックアップ側デバイス102に、第5のデータ・ブロック、第1のデータ・ブロックの論理
ブロック・アドレス、シフト情報、およびn番目のスナップショットS
nのバージョン番号を運搬するデータ・パケットを送信するように構成され、当該シフト情報は循環シフト方向とシフト量を含む。任意選択で、以下の計算規則が記憶装置101に対して構成される。即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置
であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示す。決定ユニット1301は特に、当該計算規則に従って、各ウィンドウ内の、第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を第1のデータ・ブロックのハッシュ値から選択し、第1のM個のハッシュ値を第2のデータ・ブロックのハッシュ値から選択し、第1のデータ・ブロックの第1のM個のハッシュ値および同一のハッシュ値に対する第2のデータ・ブロックの第1のM個のハッシュ値を検索し、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定するように構成され、Mは正の整数でありNより大きくない。任意選択で、(i+1)番目のウィンドウの開始位置がi番目のウィンドウの開始位置から離れる固定長は1ビットまたは複数ビットである。任意選択で、当該ハッシュ値が設定されバックアップ側デバイスがそれに従って選択を実施する順序が、特に昇順または降順であってもよい。任意選択で、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。
【0080】
図14に示すように、本発明の別の実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス102の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス102のソース・デバイス101を備える。
図1に示す記憶システムを参照することができる。n番目のスナップショットS
nのデータは、記憶装置102とソース・デバイス101の両方に格納され、nは整数である。記憶装置102はさらにシフト・ユニット1406を備える。受信解析ユニット1401は、ソース・デバイス101により送信されたデータ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理
ブロック・アドレス、シフト情報、およびn番目のスナップショットS
nのバージョン番号を取得するように構成される。決定ユニット1402は、第1のデータ・ブロックの論理
ブロック・アドレスおよびn番目のスナップショットS
nのバージョン番号に従って、スナップショットS
nに記録された第2のデータ・ブロックを決定するように構成される。第1のデータ・ブロックはソース・デバイス101によりn番目のスナップショットS
nの後に書き込まれたデータ・ブロックであり、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックである。解凍ユニット1403は、第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得するように構成される。論理演算ユニット1404は、第4のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するように構成される。当該論理演算は排他OR操作または排他NOR操作である。シフト・ユニット1406は、当該シフト情報に従って逆循環シフトを第3のデータ・ブロックに実施して第1のデータ・ブロックを取得するように構成される。当該シフト情報は、循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得するためにソース・デバイス101により必要とされるシフト量および循環シフト方向を含む。書込みユニット
1405は、第1のデータ・ブロックを第1のデータ・ブロックの論理
ブロック・アドレスに書き込むように構成される。
【0081】
図15に示すように、本発明の別の実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス102の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス102のソース・デバイス101を備える。
図9に示す記憶システムを参照することができる。n番目のスナップショットS
nのデータは、記憶装置102とソース・デバイス101の両方に格納され、nは整数である。記憶装置102はさらにシフト・ユニット1506を備える。受信ユニット1501は、ソース・デバイス101により送信されたデータ復元要求を受信するように構成される。当該データ復元要求はスナップショットS
nのバージョン番号を運搬する。決定ユニット1502は、スナップショットS
nのバージョン番号およびスナップショットS
xのバージョン番号に従って、スナップショットS
xに記録された第1のデータ・ブロックを決定し、第1のデータ・ブロックの論理
ブロック・アドレスおよびスナップショットS
nのバージョン番号に従って、スナップショットS
nに記録され当該論理
ブロック・アドレスに格納された第2のデータ・ブロックを決定し、第1のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するように構成される。第1のデータ・ブロックは、記憶装置102によりバックアップされたスナップショットS
xに記録されソース・デバイス101によりn番目のスナップショットS
nの後に書き込まれたデータ・ブロックである。シフト・ユニット1506は、当該シフト量に従って循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得するように構成される。論理演算ユニット1503は、第3のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第4のデータ・ブロックを取得するように構成される。圧縮ユニット1504は、第4のデータ・ブロックを圧縮して第5のデータ・ブロックを取得するように構成され、当該論理演算は排他OR操作または排他NOR操作である。送信ユニット1505は、ソース・デバイス101に、第5のデータ・ブロック、第1のデータ・ブロックの論理
ブロック・アドレス、およびシフト情報を運搬するデータ・パケットを送信するように構成され、当該シフト情報は循環シフト方向とシフト量を含む。任意選択で、以下の計算規則が記憶装置102に対して構成される。即ち、N個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第1のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置
であり、(i+1)番目のウィンドウの開始位置はi番目のウィンドウの開始位置から固定長だけ離れており、Nは整数であり2より小さくなく、iは整数であり、i番目のウィンドウは1番目乃至N番目のウィンドウのうち何れかのウィンドウを示す。決定ユニット1502は特に、当該計算規則に従って、各ウィンドウ内の、第1のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第2のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第1のM個のハッシュ値を第1のデータ・ブロックのハッシュ値から選択し、第1のM個のハッシュ値を第2のデータ・ブロックのハッシュ値から選択し、第1のデータ・ブロックの第1のM個のハッシュ値および同一のハッシュ値に対する第2のデータ・ブロックの第1のM個のハッシュ値を検索し、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定するように構成され、Mは正の整数でありNより大きくない。任意選択で、(i+1)番目のウィンドウの開始位置がi番目のウィンドウの開始位置から離れる固定長は1ビットまたは複数ビットである。任意選択で、当該ハッシュ値が設定されバックアップ側デバイスがそれに従って選択を実施する順序が、特に昇順または降順であってもよい。任意選択で、同一のハッシュ値に対応する2つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または第1のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第2のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。
【0082】
図16に示すように、本発明の別の実施形態では記憶装置を提供する。当該記憶装置は記憶システム内のソース・デバイス101の役割を果たすように構成され、当該記憶システムはさらに、ソース・デバイス101のバックアップ側デバイス102を備える。
図9に示す記憶システムを参照することができる。n番目のスナップショットS
nのデータは、記憶装置101とバックアップ側デバイス102の両方に格納され、nは整数である。記憶装置101はさらにシフト・ユニット1607を備える。送信ユニット1601は、データ復元要求をバックアップ側デバイスに送信するように構成され、当該データ復元要求はスナップショットS
nのバージョン番号を運搬する。受信解析ユニット1602は、当該データ復元要求に従ってバックアップ側デバイス102により送信されたデータ・パケットを受信し解析して、第5のデータ・ブロック、第1のデータ・ブロックの論理
ブロック・アドレス、およびシフト情報を取得するように構成され、第1のデータ・ブロックは、バックアップ側デバイス102によりバックアップされたスナップショットS
xに記録され記憶装置101によりn番目のスナップショットS
nの後に当該論理
ブロック・アドレスに書き込まれたデータ・ブロックである。決定ユニット1603は、第1のデータ・ブロックの論理
ブロック・アドレスに従って、記憶装置101に格納されたスナップショットS
nに記録された第2のデータ・ブロックを決定するように構成され、第1のデータ・ブロックは第2のデータ・ブロックの修正されたブロックである。解凍ユニット1604は、第5のデータ・ブロックを解凍して第4のデータ・ブロックを取得するように構成される。論理演算ユニット1605は、第4のデータ・ブロックおよび第2のデータ・ブロックに論理演算を実施して第3のデータ・ブロックを取得するように構成され、当該論理演算は排他OR操作または排他NOR操作である。シフト・ユニット1607は、当該シフト情報に従って逆循環シフトを第3のデータ・ブロックに実施して第1のデータ・ブロックを取得するように構成される。当該シフト情報は、循環シフトを第1のデータ・ブロックに実施して第3のデータ・ブロックを取得するためにバックアップ側デバイス102により必要とされるシフト量および循環シフト方向を含む。書込みユニット1606は、第1のデータ・ブロックを第1のデータ・ブロックの論理
ブロック・アドレスに書き込むように構成される。
【0083】
本発明の実施形態の
図13乃至
図16に示す記憶装置に関して、
図13を1例として使用する。当該記憶装置は、決定ユニット1301、論理演算ユニット1302、圧縮ユニット1303、および送信ユニット1304を備える。実装方式は、上述のユニットが当該記憶装置にインストールされ、上述のユニットを当該記憶装置のメモリにロードしてもよく、当該記憶装置の中央演算装置が当該メモリ内の命令を実行して、本発明に対応する実施形態における機能を実装するというものである。別の実装方式は、当該記憶装置に含まれるユニットを、ハードウェアを用いることによって実装してもよく、または、ソフトウェアおよびハードウェアの組合せを用いることによって実装してもよいというものである。上述のユニットは構造ユニットとも呼ばれる。
【0084】
本発明の当該実施形態では、記憶装置が記憶システム内のソース・デバイスまたはバックアップ側デバイスの役割を果たすとは、当該記憶装置が当該記憶システム内のソース・デバイスまたはバックアップ側デバイスの機能を実施してもよく、ソース・デバイスまたは当該バックアップ
側デバイスと同じ構造を有してもよいことをいう。換言すれば、当該記憶システム内のソース・デバイスまたはバックアップ側デバイスを記憶装置と称してもよい。
【0085】
本発明の1実施形態ではさらに不揮発性コンピュータ可読記憶媒体およびコンピュータ・プログラム製品を提供する。当該不揮発性コンピュータ可読記憶媒体と当該コンピュータ・プログラム製品に含まれるコンピュータ命令が
図1、
図9、
図10、
図11、および
図12に示す装置のメモリにロードされると、CPUは当該メモリにロードされたコンピュータ命令を実行して、本発明の当該実施形態における対応する機能を実装する。
【0086】
本発明で提供する幾つかの実施形態では、開示した装置および方法を他の方式で実装してもよいことは理解されるべきである。例えば、説明した装置の実施形態におけるユニット分割は論理的な機能分割にすぎず、実際の実装では他の分割であってもよい。例えば、複数のユニットまたはコンポーネントを組み合わせるかもしくは別のシステムに統合してもよく、または、幾つかの特徴を無視するかまたは実施しなくてもよい。さらに、図示または説明した相互結合または直接結合または通信接続を、幾つかのインタフェースを用いることによって実装してもよい。当該装置またはユニットの間の間接結合または通信接続を電気的、機械的、または他の形態で実装してもよい。
【0087】
別々の部分として説明したユニットが、物理的に別々であってもなくてもよく、ユニットとして示した部分が物理ユニットであってもなくてもよく、1つの位置に配置されてもよく、または、複数のネットワーク・ユニットに分散されてもよい。当該ユニットの一部または全部を、諸実施形態の解決策の目的を実現するための実際のニーズに従って選択してもよい。
【0088】
さらに、本発明の当該実施形態における機能的ユニットを1つの処理ユニットに統合してもよく、または、当該ユニットの各々が物理的に単体で存在してもよく、または、2つまたは複数のユニットが1つのユニットに統合される。