(57)【特許請求の範囲】
【請求項１】
記憶システムであって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記ソース・デバイスと前記バックアップ側デバイスの両方に格納され、ｎは整数であり、
前記ソース・デバイスは、前記ｎ番目のスナップショットＳｎの後に前記ソース・デバイスに書き込まれた第１のデータ・ブロックを決定し、前記第１のデータ・ブロックの論理ブロック・アドレスに従って、前記ｎ番目のスナップショットＳｎに記録された第２のデータ・ブロックを決定し、前記第１のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得し、前記第３のデータ・ブロックを圧縮して第４のデータ・ブロックを取得し、前記バックアップ側デバイスに、前記第４のデータ・ブロック、前記第１のデータ・ブロックの前記論理ブロック・アドレス、および前記ｎ番目のスナップショットＳｎのバージョン番号を運搬するデータ・パケットを送信するように構成され、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックであり、
前記バックアップ側デバイスは、前記データ・パケットを受信し解析して、前記第４のデータ・ブロック、前記第１のデータ・ブロックの前記論理ブロック・アドレス、および前記ｎ番目のスナップショットＳｎの前記バージョン番号を取得するように構成され、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作であり、
前記バックアップ側デバイスはさらに、前記第１のデータ・ブロックの前記論理ブロック・アドレスおよび前記ｎ番目のスナップショットＳｎの前記バージョン番号に従って、前記スナップショットＳｎに記録された前記第２のデータ・ブロックを決定し、前記第４のデータ・ブロックを解凍して前記第３のデータ・ブロックを取得し、前記第３のデータ・ブロックおよび前記第２のデータ・ブロックに前記論理演算を実施して前記第１のデータ・ブロックを取得し、前記第１のデータ・ブロックを前記第１のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成される、
記憶システム。
【請求項２】
記憶システム内のデータ・バックアップのための方法であって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記ソース・デバイスと前記バックアップ側デバイスの両方に格納され、ｎは整数であり、前記方法は、
前記ソース・デバイスにより、前記ｎ番目のスナップショットＳｎの後に前記ソース・デバイスに書き込まれた第１のデータ・ブロックを決定するステップと、
前記ソース・デバイスにより、前記第１のデータ・ブロックの論理ブロック・アドレスに従って、前記ｎ番目のスナップショットＳｎに記録された第２のデータ・ブロックを決定し、前記ソース・デバイスにより、前記第１のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得するステップであって、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックであり、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、ステップと、
前記ソース・デバイスにより、前記第３のデータ・ブロックを圧縮して第４のデータ・ブロックを取得するステップと、
前記ソース・デバイスにより、前記バックアップ側デバイスに、前記第４のデータ・ブロック、前記第１のデータ・ブロックの前記論理ブロック・アドレス、および前記ｎ番目のスナップショットＳｎのバージョン番号を運搬するデータ・パケットを送信するステップと、
を含む、方法。
【請求項３】
前記ソース・デバイスにより、前記ｎ番目のスナップショットＳｎの後に前記ソース・デバイスに書き込まれた第１のデータ・ブロックを決定するステップは、前記ソース・デバイスにより、前記ｎ番目のスナップショットＳｎの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って、前記第１のデータ・ブロックを決定するステップを含む、請求項２に記載の方法。
【請求項４】
前記ソース・デバイスにより、前記ｎ番目のスナップショットＳｎの後に前記ソース・デバイスに書き込まれた第１のデータ・ブロックを決定するステップは、前記ソース・デバイスにより、ｘ番目のスナップショットＳｘ操作を実施し、前記スナップショットＳｎをスナップショットＳｘと比較し、前記第１のデータ・ブロックを決定するステップであって、ｘは整数であり、ｎ＜ｘである、ステップを含む、請求項２に記載の方法。
【請求項５】
記憶システム内のデータ・バックアップのための方法であって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記ソース・デバイスと前記バックアップ側デバイスの両方に格納され、ｎは整数であり、前記方法は、
前記バックアップ側デバイスにより、前記ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第４のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、および前記ｎ番目のスナップショットＳｎのバージョン番号を取得するステップと、
前記バックアップ側デバイスにより、前記第１のデータ・ブロックの前記論理ブロック・アドレスおよび前記ｎ番目のスナップショットＳｎの前記バージョン番号に従って、前記スナップショットＳｎに記録された第２のデータ・ブロックを決定するステップであって、前記第１のデータ・ブロックは、前記ｎ番目のスナップショットＳｎの後に前記ソース・デバイスにより書き込まれたデータ・ブロックであり、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックである、ステップと、
前記バックアップ側デバイスにより、前記第４のデータ・ブロックを解凍して、第３のデータ・ブロックを取得するステップと、
前記バックアップ側デバイスにより、前記第３のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して、前記第１のデータ・ブロックを取得するステップであって、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、ステップと、
前記バックアップ側デバイスにより、前記第１のデータ・ブロックを前記第１のデータ・ブロックの前記論理ブロック・アドレスに書き込むステップと、
を含む、方法。
【請求項６】
記憶システムであって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記ｎ番目のスナップショットＳｎの前記データおよびｘ番目のスナップショットＳｘのデータは前記バックアップ側デバイスに格納され、ｎおよびｘは整数であり、ｎ＜ｘであり、
前記ソース・デバイスは、データ復元要求を前記バックアップ側デバイスに送信するように構成され、前記データ復元要求は前記スナップショットＳｎのバージョン番号を運搬し、
前記バックアップ側デバイスは、前記データ復元要求を受信し解析して前記スナップショットＳｎの前記バージョン番号を取得し、前記スナップショットＳｎの前記バージョン番号および前記スナップショットＳｘのバージョン番号に従って第１のデータ・ブロックを決定し、前記第１のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットＳｎの前記バージョン番号に従って、前記スナップショットＳｎに記録された第２のデータ・ブロックを決定し、前記第１のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得し、前記第３のデータ・ブロックを圧縮して第４のデータ・ブロックを取得し、前記ソース・デバイスに、前記第４のデータ・ブロックおよび前記第１のデータ・ブロックの前記論理ブロック・アドレスを運搬するデータ・パケットを送信するように構成され、前記第１のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされ前記ソース・デバイスにより前記ｎ番目のスナップショットＳｎの後に書き込まれた前記スナップショットＳｘに記録されたデータ・ブロックであり、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックであり、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作であり、
前記ソース・デバイスはさらに、前記データ・パケットを受信し解析して、前記第４のデータ・ブロックおよび前記第１のデータ・ブロックの前記論理ブロック・アドレスを取得し、前記第１のデータ・ブロックの前記論理ブロック・アドレスに従って、前記スナップショットＳｎに記録された前記第２のデータ・ブロックを決定し、前記第４のデータ・ブロックを解凍して前記第３のデータ・ブロックを取得し、前記第３のデータ・ブロックおよび前記第２のデータ・ブロックに前記論理演算を実施して前記第１のデータ・ブロックを取得し、前記第１のデータ・ブロックを前記第１のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成される、
記憶システム。
【請求項７】
記憶システム内のデータ復元のための方法であって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記ｎ番目のスナップショットＳｎの前記データおよびｘ番目のスナップショットＳｘのデータは前記バックアップ側デバイスに格納され、ｎおよびｘは整数であり、ｎ＜ｘであり、前記方法は、
前記バックアップ側デバイスにより、前記ソース・デバイスにより送信されたデータ復元要求を受信し解析して、前記スナップショットＳｎのバージョン番号を取得するステップと、
前記バックアップ側デバイスにより、前記スナップショットＳｎの前記バージョン番号および前記スナップショットＳｘのバージョン番号に従って、前記スナップショットＳｘに記録された第１のデータ・ブロックを決定するステップであって、前記第１のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットＳｎに記録され前記ソース・デバイスにより前記ｎ番目のスナップショットＳｘの後に書き込まれたデータ・ブロックであり、前記第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックである、ステップと、
前記バックアップ側デバイスにより、前記第１のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットＳｎの前記バージョン番号に従って、前記スナップショットＳｎに記録され前記論理ブロック・アドレスに格納された前記第２のデータ・ブロックを決定するステップと、
前記バックアップ側デバイスにより、前記第１のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して、第３のデータ・ブロックを取得するステップであって、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、ステップと、
前記バックアップ側デバイスにより、前記第３のデータ・ブロックを圧縮して第４のデータ・ブロックを取得するステップと、
前記バックアップ側デバイスにより、前記ソース・デバイスに、前記第４のデータ・ブロックおよび前記第１のデータ・ブロックの前記論理ブロック・アドレスを運搬するデータ・パケットを送信するステップであって、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックである、ステップと、
を含む、方法。
【請求項８】
記憶システム内のデータ復元のための方法であって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記ｎ番目のスナップショットＳｎの前記データおよびｘ番目のスナップショットＳｘのデータは前記バックアップ側デバイスに格納され、ｎおよびｘは整数であり、ｎ＜ｘであり、前記方法は、
前記ソース・デバイスにより、データ復元要求を前記バックアップ側デバイスに送信するステップであって、前記データ復元要求は前記スナップショットＳｎのバージョン番号を運搬する、ステップと、
前記ソース・デバイスにより、前記データ復元要求に従って前記バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第４のデータ・ブロックおよび第１のデータ・ブロックの論理ブロック・アドレスを取得するステップであって、前記第１のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットＳｘに記録され前記ソース・デバイスにより前記ｎ番目のスナップショットＳｎの後の前記論理ブロック・アドレスに書き込まれたデータ・ブロックである、ステップと、
前記ソース・デバイスにより、前記第１のデータ・ブロックの前記論理ブロック・アドレスに従って、前記ソース・デバイスに格納された前記スナップショットＳｎに記録された第２のデータ・ブロックを決定するステップであって、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックである、ステップと、
前記ソース・デバイスにより、前記第４のデータ・ブロックを解凍して第３のデータ・ブロックを取得するステップと、
前記ソース・デバイスにより、前記第３のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して前記第１のデータ・ブロックを取得するステップであって、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、ステップと、
前記ソース・デバイスにより、前記第１のデータ・ブロックを前記第１のデータ・ブロックの前記論理ブロック・アドレスに書き込むステップと、
を含む、方法。
【請求項９】
記憶装置であって、前記記憶装置は、記憶システム内のソース・デバイスの役割を果たすように構成され、前記記憶システムはさらにバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、ｎは整数であり、前記記憶装置は、
前記ｎ番目のスナップショットＳｎの後の前記記憶装置に書き込まれた第１のデータ・ブロックを決定し、前記第１のデータ・ブロックの論理ブロック・アドレスに従って、前記ｎ番目のスナップショットＳｎに記録された第２のデータ・ブロックを決定するように構成された決定ユニットであって、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックである、決定ユニットと、
前記第１のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、論理演算ユニットと、
前記第３のデータ・ブロックを圧縮して第４のデータ・ブロックを取得するように構成された圧縮ユニットと、
前記バックアップ側デバイスに、前記第４のデータ・ブロック、前記第１のデータ・ブロックの前記論理ブロック・アドレス、および前記ｎ番目のスナップショットＳｎのバージョン番号を運搬するデータ・パケットを送信するように構成された送信ユニットと、
を備える、記憶装置。
【請求項１０】
前記決定ユニットは特に、前記ｎ番目のスナップショットＳｎの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って前記第１のデータ・ブロックを決定するように構成される、請求項９に記載の記憶装置。
【請求項１１】
前記決定ユニットは特に、ｘ番目のスナップショットＳｘ操作を実施し、前記スナップショットＳｎをスナップショットＳｘと比較し、前記第１のデータ・ブロックを決定するように構成され、ｘは整数であり、ｎ＜ｘである、請求項９に記載の記憶装置。
【請求項１２】
記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらにソース・デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記記憶装置と前記ソース・デバイスの両方に格納され、ｎは整数であり、前記記憶装置は、
前記ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第４のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、および前記ｎ番目のスナップショットＳｎのバージョン番号を取得するように構成された受信解析ユニットと、
前記第１のデータ・ブロックの前記論理ブロック・アドレスおよび前記ｎ番目のスナップショットＳｎの前記バージョン番号に従って、前記スナップショットＳｎに記録された第２のデータ・ブロックを決定するように構成された決定ユニットであって、前記第１のデータ・ブロックは、前記ｎ番目のスナップショットＳｎの後に前記ソース・デバイスにより書き込まれたデータ・ブロックであり、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックである、決定ユニットと、
前記第４のデータ・ブロックを解凍して第３のデータ・ブロックを取得するように構成された解凍ユニットと、
前記第３のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して前記第１のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、論理演算ユニットと、
前記第１のデータ・ブロックを前記第１のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成された書込みユニットと、
を備える、記憶装置。
【請求項１３】
記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記記憶装置と前記ソース・デバイスの両方に格納され、ｎは整数であり、前記記憶装置は、
前記ソース・デバイスにより送信されたデータ復元要求を受信し解析して、前記スナップショットＳｎのバージョン番号を取得するように構成された受信解析ユニットと、
前記スナップショットＳｎの前記バージョン番号およびスナップショットＳｘのバージョン番号に従って、前記スナップショットＳｘに記録された第１のデータ・ブロックを決定し、前記第１のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットＳｎの前記バージョン番号に従って、前記スナップショットＳｎに記録され前記論理ブロック・アドレスに格納された第２のデータ・ブロックを決定するように構成された決定ユニットであって、前記第１のデータ・ブロックは前記記憶装置によりバックアップされた前記スナップショットＳｘに記録され前記ソース・デバイスにより前記ｎ番目のスナップショットＳｎの後に書き込まれたデータ・ブロックであり、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックである、決定ユニットと、
前記第１のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、論理演算ユニットと、
前記第３のデータ・ブロックを圧縮して第４のデータ・ブロックを取得するように構成された圧縮ユニットと、
前記ソース・デバイスに、前記第４のデータ・ブロックおよび前記第１のデータ・ブロックの前記論理ブロック・アドレスを運搬するデータ・パケットを送信するように構成された送信ユニットと、
備える、記憶装置。
【請求項１４】
記憶装置であって、前記記憶装置は、記憶システム内のソース・デバイスの役割を果たすように構成され、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、ｎは整数であり、前記記憶装置は、
データ復元要求を前記バックアップ側デバイスに送信するように構成された送信ユニットであって、前記データ復元要求は前記スナップショットＳｎのバージョン番号を運搬する、送信ユニットと、
前記データ復元要求に従って前記バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第４のデータ・ブロックおよび第１のデータ・ブロックの論理ブロック・アドレスを取得するように構成された受信解析ユニットであって、前記第１のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされたスナップショットＳｘに記録され前記記憶装置により前記ｎ番目のスナップショットＳｎの後の前記論理ブロック・アドレスに書き込まれたデータ・ブロックである、受信解析ユニットと、
前記第１のデータ・ブロックの前記論理ブロック・アドレスに従って、前記記憶装置に格納された前記スナップショットＳｎに記録された第２のデータ・ブロックを決定するように構成された決定ユニットであって、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックである、決定ユニットと、
前記第４のデータ・ブロックを解凍して第３のデータ・ブロックを取得するように構成された解凍ユニットと、
前記第３のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して、前記第１のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、論理演算ユニットと、
前記第１のデータ・ブロックを前記第１のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成された書込みユニットと、
を備える、記憶装置。
【請求項１５】
記憶装置であって、前記記憶装置は、記憶システム内のソース・デバイスの役割を果たすように構成され、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、ｎは整数であり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、前記プロセッサは、前記ｎ番目のスナップショットＳｎの後の前記記憶装置に書き込まれた第１のデータ・ブロックを決定し、前記第１のデータ・ブロックの論理ブロック・アドレスに従って、前記ｎ番目のスナップショットＳｎに記録された第２のデータ・ブロックを決定し、前記第１のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得し、前記第３のデータ・ブロックを圧縮して第４のデータ・ブロックを取得するように構成され、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックであり、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作であり、
前記インタフェースは、前記バックアップ側デバイスに、前記第４のデータ・ブロック、前記第１のデータ・ブロックの前記論理ブロック・アドレス、および前記ｎ番目のスナップショットＳｎのバージョン番号を運搬するデータ・パケットを送信するように構成される、
記憶装置。
【請求項１６】
前記プロセッサは特に、前記ｎ番目のスナップショットＳｎの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って前記第１のデータ・ブロックを決定するように構成される、請求項１５に記載の記憶装置。
【請求項１７】
前記プロセッサは特に、ｘ番目のスナップショットＳｘ操作を実施し、前記スナップショットＳｎをスナップショットＳｘと比較して前記第１のデータ・ブロックを決定するように構成され、ｘは整数であり、ｎ＜ｘである、請求項１５に記載の記憶装置。
【請求項１８】
記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記記憶装置と前記ソース・デバイスの両方に格納され、ｎは整数であり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、前記インタフェースは、前記ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第４のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、および前記ｎ番目のスナップショットＳｎのバージョン番号を取得するように構成され、
前記プロセッサは、前記第１のデータ・ブロックの前記論理ブロック・アドレスおよび前記ｎ番目のスナップショットＳｎの前記バージョン番号に従って、前記スナップショットＳｎに記録された第２のデータ・ブロックを決定し、前記第４のデータ・ブロックを解凍して第３のデータ・ブロックを取得し、前記第３のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して、前記第１のデータ・ブロックを取得し、前記第１のデータ・ブロックを前記第１のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成され、前記第１のデータ・ブロックは、前記ｎ番目のスナップショットＳｎの後に前記ソース・デバイスにより書き込まれたデータ・ブロックであり、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックであり、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、
記憶装置。
【請求項１９】
記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記記憶装置と前記ソース・デバイスの両方に格納され、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、前記インタフェースは、前記ソース・デバイスにより送信されたデータ復元要求を受信し解析して、前記スナップショットＳｎのバージョン番号を取得するように構成され、
前記プロセッサは、前記スナップショットＳｎの前記バージョン番号およびスナップショットＳｘのバージョン番号に従って、前記スナップショットＳｘに記録された第１のデータ・ブロックを決定し、前記第１のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットＳｎの前記バージョン番号に従って、前記スナップショットＳｎに記録され前記論理ブロック・アドレスに格納された第２のデータ・ブロックを決定し、前記第１のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得し、前記第３のデータ・ブロックを圧縮して第４のデータ・ブロックを取得するように構成され、前記第１のデータ・ブロックは前記記憶装置によりバックアップされた前記スナップショットＳｘに記録され前記ソース・デバイスにより前記ｎ番目のスナップショットＳｎの後に書き込まれたデータ・ブロックであり、ｘおよびｎは整数であり、ｘ＞ｎであり、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックであり、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作であり、
前記インタフェースはさらに、前記ソース・デバイスに、前記第４のデータ・ブロックおよび前記第１のデータ・ブロックの前記論理ブロック・アドレスを運搬するデータ・パケットを送信するように構成される、
記憶装置。
【請求項２０】
記憶装置であって、前記記憶装置は、記憶システム内のソース・デバイスの役割を果たすように構成され、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、ｎは整数であり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、前記インタフェースは、データ復元要求を前記バックアップ側デバイスに送信し、前記データ復元要求に従って前記バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第４のデータ・ブロックおよび第１のデータ・ブロックの論理ブロック・アドレスを取得するように構成され、前記データ復元要求は前記スナップショットＳｎのバージョン番号を運搬し、前記第１のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされたスナップショットＳｘに記録され前記記憶装置により前記ｎ番目のスナップショットＳｎの後の前記論理ブロック・アドレスに書き込まれたデータ・ブロックであり、
前記プロセッサは、前記第１のデータ・ブロックの前記論理ブロック・アドレスに従って、前記記憶装置に格納された前記スナップショットＳｎに記録された第２のデータ・ブロックを決定し、前記第４のデータ・ブロックを解凍して第３のデータ・ブロックを取得し、前記第３のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して前記第１のデータ・ブロックを取得し、前記第１のデータ・ブロックを前記第１のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成され、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックであり、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、
記憶装置。
【請求項２１】
記憶システムであって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記ソース・デバイスと前記バックアップ側デバイスの両方に格納され、ｎは整数であり、
前記ソース・デバイスは、前記ｎ番目のスナップショットＳｎの後に前記ソース・デバイスに書き込まれた第１のデータ・ブロックを決定し、前記第１のデータ・ブロックの論理ブロック・アドレスに従って、前記ｎ番目のスナップショットＳｎに記録された第２のデータ・ブロックを決定するように構成され、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックであり、
前記ソース・デバイスはさらに、前記第１のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、前記シフト量に従って循環シフトを前記第１のデータ・ブロックに実施して第３のデータ・ブロックを取得し、前記第３のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第４のデータ・ブロックを取得し、前記第４のデータ・ブロックを圧縮して第５のデータ・ブロックを取得し、前記バックアップ側デバイスに、前記第５のデータ・ブロック、前記第１のデータ・ブロックの前記論理ブロック・アドレス、シフト情報、および前記ｎ番目のスナップショットＳｎのバージョン番号を運搬するデータ・パケットを送信するように構成され、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作であり、前記シフト情報は循環シフト方向および前記シフト量を含み、
前記バックアップ側デバイスは、前記データ・パケットを受信し解析して、前記第５のデータ・ブロック、前記第１のデータ・ブロックの前記論理ブロック・アドレス、前記シフト情報、および前記ｎ番目のスナップショットＳｎの前記バージョン番号を取得するように構成され、
前記バックアップ側デバイスはさらに、前記第１のデータ・ブロックの前記論理ブロック・アドレスおよび前記ｎ番目のスナップショットＳｎの前記バージョン番号に従って、前記スナップショットＳｎに記録された前記第２のデータ・ブロックを決定し、前記第５のデータ・ブロックを解凍して前記第４のデータ・ブロックを取得し、前記第４のデータ・ブロックおよび前記第２のデータ・ブロックに前記論理演算を実施して前記第３のデータ・ブロックを取得し、前記シフト情報に従って逆循環シフトを前記第３のデータ・ブロックに実施して前記第１のデータ・ブロックを取得し、前記第１のデータ・ブロックを前記第１のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成される、
記憶システム。
【請求項２２】
以下の計算規則、即ち、Ｎ個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第１のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、（ｉ＋１）番目のウィンドウの開始位置はｉ番目のウィンドウの開始位置から固定長だけ離れており、Ｎは整数であり２より小さくなく、ｉは整数であり、前記ｉ番目のウィンドウは１番目乃至Ｎ番目のウィンドウのうち何れかのウィンドウを示すことが前記ソース・デバイスに対して構成され、
前記ソース・デバイスにより、前記第１のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するステップは特に、
前記計算規則に従って、前記ソース・デバイスにより、各ウィンドウ内の、前記第１のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第２のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施するステップと、
前記ソース・デバイスにより、ハッシュ値が設定される順序に従って、第１のＭ個のハッシュ値を前記第１のデータ・ブロックのハッシュ値から選択し、前記第１のＭ個のハッシュ値を前記第２のデータ・ブロックのハッシュ値から選択するステップであって、Ｍは正の整数でありＮより大きくない、ステップと、
前記ソース・デバイスにより、前記第１のデータ・ブロックの前記第１のＭ個のハッシュ値および同一のハッシュ値に対する前記第２のデータ・ブロックの前記第１のＭ個のハッシュ値を検索し、前記同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異が前記シフト量であると判定するステップと、
を含む、請求項２１に記載の記憶システム。
【請求項２３】
記憶システム内のデータ・バックアップのための方法であって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記ソース・デバイスと前記バックアップ側デバイスの両方に格納され、ｎは整数であり、前記方法は、
前記ソース・デバイスにより、前記ｎ番目のスナップショットＳｎの後に前記ソース・デバイスに書き込まれた第１のデータ・ブロックを決定するステップと、
前記ソース・デバイスにより、前記第１のデータ・ブロックの論理ブロック・アドレスに従って、前記ｎ番目のスナップショットＳｎに記録された第２のデータ・ブロックを決定するステップであって、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックである、ステップと、
前記ソース・デバイスにより、前記第１のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、前記シフト量に従って循環シフトを前記第１のデータ・ブロックに実施して第３のデータ・ブロックを取得するステップと、
前記ソース・デバイスにより、前記第３のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第４のデータ・ブロックを取得するステップであって、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、ステップと、
前記ソース・デバイスにより、前記第４のデータ・ブロックを圧縮して第５のデータ・ブロックを取得するステップと、
前記ソース・デバイスにより、前記バックアップ側デバイスに、前記第５のデータ・ブロック、前記第１のデータ・ブロックの前記論理ブロック・アドレス、シフト情報、および前記ｎ番目のスナップショットＳｎのバージョン番号を運搬するデータ・パケットを送信するステップであって、前記シフト情報は循環シフト方向と前記シフト量を含む、ステップと、
を含む、方法。
【請求項２４】
以下の計算規則、即ち、Ｎ個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第１のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、（ｉ＋１）番目のウィンドウの開始位置はｉ番目のウィンドウの開始位置から固定長だけ離れており、Ｎは整数であり２より小さくなく、ｉは整数であり、前記ｉ番目のウィンドウは１番目乃至Ｎ番目のウィンドウのうち何れかのウィンドウを示すことが前記ソース・デバイスに対して構成され、前記ソース・デバイスにより、前記第１のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するステップは特に、
前記計算規則に従って、前記ソース・デバイスにより、各ウィンドウ内の、前記第１のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第２のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施するステップと、
前記ソース・デバイスにより、ハッシュ値が設定される順序に従って、第１のＭ個のハッシュ値を前記第１のデータ・ブロックのハッシュ値から選択し、前記第１のＭ個のハッシュ値を前記第２のデータ・ブロックのハッシュ値から選択するステップであって、Ｍは正の整数でありＮより大きくない、ステップと、
前記ソース・デバイスにより、前記第１のデータ・ブロックの前記第１のＭ個のハッシュ値および同一のハッシュ値に対する前記第２のデータ・ブロックの前記第１のＭ個のハッシュ値を検索して、前記同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異が前記シフト量であると判定するステップと、
を含む、請求項２３に記載の方法。
【請求項２５】
前記ソース・デバイスにより、前記ｎ番目のスナップショットＳｎの後に前記ソース・デバイスに書き込まれた第１のデータ・ブロックを決定するステップは、前記ソース・デバイスにより、前記ｎ番目のスナップショットＳｎの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って、前記第１のデータ・ブロックを決定するステップを含む、請求項２３に記載の方法。
【請求項２６】
前記ソース・デバイスにより、前記ｎ番目のスナップショットＳｎの後に前記ソース・デバイスに書き込まれた第１のデータ・ブロックを決定するステップは、前記ソース・デバイスにより、ｘ番目のスナップショットＳｘ操作を実施し、前記スナップショットＳｎをスナップショットＳｘと比較して、前記第１のデータ・ブロックを決定するステップであって、ｘは整数であり、ｎ＜ｘである、ステップを含む、請求項２３に記載の方法。
【請求項２７】
記憶システム内のデータ・バックアップのための方法であって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記ソース・デバイスと前記バックアップ側デバイスの両方に格納され、ｎは整数であり、前記方法は、
前記バックアップ側デバイスにより、前記ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第５のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、シフト情報、および前記ｎ番目のスナップショットＳｎのバージョン番号を取得するステップと、
前記バックアップ側デバイスにより、前記第１のデータ・ブロックの前記論理ブロック・アドレスおよび前記ｎ番目のスナップショットＳｎの前記バージョン番号に従って、前記スナップショットＳｎに記録された第２のデータ・ブロックを決定するステップであって、前記第１のデータ・ブロックは、前記ｎ番目のスナップショットＳｎの後に前記ソース・デバイスにより書き込まれたデータ・ブロックであり、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックである、ステップと、
前記バックアップ側デバイスにより、前記第５のデータ・ブロックを解凍して第４のデータ・ブロックを取得するステップと、
前記バックアップ側デバイスにより、前記第４のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得するステップであって、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、ステップと、
前記シフト情報に従って前記バックアップ側デバイスにより、逆循環シフトを前記第３のデータ・ブロックに実施して、前記第１のデータ・ブロックを取得するステップであって、前記シフト情報は、循環シフトを前記第１のデータ・ブロックに実施して前記第３のデータ・ブロックを取得するために前記ソース・デバイスにより必要とされるシフト量および循環シフト方向を含む、ステップと、
前記バックアップ側デバイスにより、前記第１のデータ・ブロックを前記第１のデータ・ブロックの前記論理ブロック・アドレスに書き込むステップと、
を含む、方法。
【請求項２８】
記憶システムであって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記ｎ番目のスナップショットＳｎの前記データおよびｘ番目のスナップショットＳｘのデータは前記バックアップ側デバイスに格納され、ｎおよびｘは整数であり、ｎ＜ｘであり、
前記ソース・デバイスは、データ復元要求を前記バックアップ側デバイスに送信するように構成され、前記データ復元要求は前記スナップショットＳｎのバージョン番号を運搬し、
前記バックアップ側デバイスは、前記データ復元要求を受信し解析して前記スナップショットＳｎの前記バージョン番号を取得し、前記スナップショットＳｎの前記バージョン番号および前記スナップショットＳｘのバージョン番号に従って第１のデータ・ブロックを決定し、前記第１のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットＳｎの前記バージョン番号に従って、前記スナップショットＳｎに記録された第２のデータ・ブロックを決定し、前記第１のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、前記シフト量に従って循環シフトを前記第１のデータ・ブロックに実施して第３のデータ・ブロックを取得し、前記第３のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第４のデータ・ブロックを取得し、前記第４のデータ・ブロックを圧縮して第５のデータ・ブロックを取得し、前記ソース・デバイスに、前記第５のデータ・ブロック、シフト情報、および前記第１のデータ・ブロックの前記論理ブロック・アドレスを運搬するデータ・パケットを送信するように構成され、前記第１のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットＳｘに記録され前記ソース・デバイスにより前記ｎ番目のスナップショットＳｎの後に書き込まれたデータ・ブロックであり、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックであり、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作であり、前記シフト情報は循環シフト方向および前記シフト量を含み、
前記ソース・デバイスはさらに、前記データ・パケットを受信し解析して、前記第５のデータ・ブロック、前記シフト情報、および前記第１のデータ・ブロックの前記論理ブロック・アドレスを取得し、前記第１のデータ・ブロックの前記論理ブロック・アドレスに従って、前記スナップショットＳｎに記録された前記第２のデータ・ブロックを決定し、前記第５のデータ・ブロックを解凍して前記第４のデータ・ブロックを取得し、前記第４のデータ・ブロックおよび前記第２のデータ・ブロックに前記論理演算を実施して前記第３のデータ・ブロックを取得し、前記シフト情報に従って逆循環シフトを前記第３のデータ・ブロックに実施して前記第１のデータ・ブロックを取得し、前記第１のデータ・ブロックを前記第１のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成される、
記憶システム。
【請求項２９】
以下の計算規則、即ち、Ｎ個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第１のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、（ｉ＋１）番目のウィンドウの開始位置はｉ番目のウィンドウの開始位置から固定長だけ離れており、Ｎは整数であり２より小さくなく、ｉは整数であり、前記ｉ番目のウィンドウは１番目乃至Ｎ番目のウィンドウのうち何れかのウィンドウを示すことが前記バックアップ側デバイスに対して構成され、
前記バックアップ側デバイスは特に、前記計算規則に従って、各ウィンドウ内の、前記第１のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第２のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第１のＭ個のハッシュ値を前記第１のデータ・ブロックのハッシュ値から選択し、前記第１のＭ個のハッシュ値を前記第２のデータ・ブロックのハッシュ値から選択し、前記第１のデータ・ブロックの前記第１のＭ個のハッシュ値および同一のハッシュ値に対する前記第２のデータ・ブロックの前記第１のＭ個のハッシュ値を検索し、前記同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異が前記シフト量であると判定するように構成され、Ｍは正の整数でありＮより大きくない、
請求項２８に記載の記憶システム。
【請求項３０】
記憶システム内のデータ復元のための方法であって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記ｎ番目のスナップショットＳｎの前記データおよびｘ番目のスナップショットＳｘのデータは前記バックアップ側デバイスに格納され、ｎおよびｘは整数であり、ｎ＜ｘであり、前記方法は、
前記バックアップ側デバイスにより、前記ソース・デバイスにより送信されたデータ復元要求を受信するステップであって、前記データ復元要求は前記スナップショットＳｎのバージョン番号を運搬する、ステップと、
前記バックアップ側デバイスにより、前記スナップショットＳｎの前記バージョン番号および前記スナップショットＳｘのバージョン番号に従って、前記スナップショットＳｘに記録された第１のデータ・ブロックを決定するステップであって、前記第１のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットＳｘに記録され前記ソース・デバイスにより前記ｎ番目のスナップショットＳｎの後に書き込まれたデータ・ブロックである、ステップと、
前記バックアップ側デバイスにより、前記第１のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットＳｎの前記バージョン番号に従って、前記スナップショットＳｎに記録され前記論理ブロック・アドレスに格納された第２のデータ・ブロックを決定するステップと、
前記バックアップ側デバイスにより、前記第１のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、前記シフト量に従って循環シフトを前記第１のデータ・ブロックに実施して第３のデータ・ブロックを取得し、前記第３のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第４のデータ・ブロックを取得し、前記第４のデータ・ブロックを圧縮して第５のデータ・ブロックを取得するステップであって、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、ステップと、
前記バックアップ側デバイスにより、前記ソース・デバイスに、前記第５のデータ・ブロック、前記第１のデータ・ブロックの前記論理ブロック・アドレス、およびシフト情報を運搬するデータ・パケットを送信するステップであって、前記シフト情報は循環シフト方向および前記シフト量を含む、ステップと、
を含む、方法。
【請求項３１】
以下の計算規則、即ち、Ｎ個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第１のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、（ｉ＋１）番目のウィンドウの開始位置はｉ番目のウィンドウの開始位置から固定長だけ離れており、Ｎは整数であり２より小さくなく、ｉは整数であり、前記ｉ番目のウィンドウは１番目乃至Ｎ番目のウィンドウのうち何れかのウィンドウを示すことが前記バックアップ側デバイスに対して構成され、前記バックアップ側デバイスにより、前記第１のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するステップは特に、
前記計算規則に従って、前記バックアップ側デバイスにより、各ウィンドウ内の、前記第１のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第２のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施するステップと、ハッシュ値が設定される順序に従って、第１のＭ個のハッシュ値を前記第１のデータ・ブロックのハッシュ値から選択し、前記第１のＭ個のハッシュ値を前記第２のデータ・ブロックのハッシュ値から選択するステップと、前記第１のデータ・ブロックの前記第１のＭ個のハッシュ値および同一のハッシュ値に対する前記第２のデータ・ブロックの前記第１のＭ個のハッシュ値を検索し、前記同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異が前記シフト量であると判定するステップとを含み、Ｍは正の整数でありＮより大きくない、
請求項３０に記載の方法。
【請求項３２】
記憶システム内のデータ復元のための方法であって、前記記憶システムはソース・デバイスとバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記ｎ番目のスナップショットＳｎの前記データおよびｘ番目のスナップショットＳｘのデータは前記バックアップ側デバイスに格納され、ｎおよびｘは整数であり、ｎ＜ｘであり、前記方法は、
前記ソース・デバイスにより、データ復元要求を前記バックアップ側デバイスに送信するステップであって、前記データ復元要求は前記スナップショットＳｎのバージョン番号を運搬する、ステップと、
前記ソース・デバイスにより、前記データ復元要求に従って前記バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第５のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、およびシフト情報を取得するステップであって、前記第１のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットＳｘに記録され前記ソース・デバイスにより前記ｎ番目のスナップショットＳｎの後の前記論理ブロック・アドレスに書き込まれたデータ・ブロックである、ステップと、
前記ソース・デバイスにより、前記第１のデータ・ブロックの前記論理ブロック・アドレスに従って、前記ソース・デバイスに格納された前記スナップショットＳｎに記録された第２のデータ・ブロックを決定するステップであって、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックである、ステップと、
前記ソース・デバイスにより、前記第５のデータ・ブロックを解凍して第４のデータ・ブロックを取得するステップと、
前記ソース・デバイスにより、前記第４のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得するステップであって、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、ステップと、
前記シフト情報に従って、前記ソース・デバイスにより、前記第３のデータ・ブロックに逆循環シフトを実施して前記第１のデータ・ブロックを取得するステップであって、前記シフト情報は、循環シフトを前記第１のデータ・ブロックに実施して前記第３のデータ・ブロックを取得するために前記バックアップ側デバイスにより必要とされるシフト量および循環シフト方向を含む、ステップと、
前記ソース・デバイスにより、前記第１のデータ・ブロックを前記第１のデータ・ブロックの前記論理ブロック・アドレスに書き込むステップと、
を含む、方法。
【請求項３３】
記憶装置であって、前記記憶装置は記憶システム内のソース・デバイスの役割を果たし、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、ｎは整数であり、前記記憶装置は、
前記ｎ番目のスナップショットＳｎの後の前記記憶装置に書き込まれた第１のデータ・ブロックを決定し、前記第１のデータ・ブロックの論理ブロック・アドレスに従って、前記ｎ番目のスナップショットＳｎに記録された第２のデータ・ブロックを決定し、前記第１のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するように構成された決定ユニットであって、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックである、決定ユニットと、
前記シフト量に従って循環シフトを前記第１のデータ・ブロックに実施して第３のデータ・ブロックを取得するように構成されたシフト・ユニットと、
前記第３のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第４のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、論理演算ユニットと、
前記第４のデータ・ブロックを圧縮して第５のデータ・ブロックを取得するように構成された圧縮ユニットと、
前記バックアップ側デバイスに、前記第５のデータ・ブロック、前記第１のデータ・ブロックの前記論理ブロック・アドレス、シフト情報、および前記ｎ番目のスナップショットＳｎのバージョン番号を運搬するデータ・パケットを送信するように構成された送信ユニットであって、前記シフト情報は循環シフト方向および前記シフト量を含む、送信ユニットと、
を備える、記憶装置。
【請求項３４】
以下の計算規則、即ち、Ｎ個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第１のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、（ｉ＋１）番目のウィンドウの開始位置はｉ番目のウィンドウの開始位置から固定長だけ離れており、Ｎは整数であり２より小さくなく、ｉは整数であり、前記ｉ番目のウィンドウは１番目乃至Ｎ番目のウィンドウのうち何れかのウィンドウを示すことが前記記憶装置に対して構成され、前記決定ユニットは特に、
前記計算規則に従って、各ウィンドウ内の、前記第１のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第２のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第１のＭ個のハッシュ値を前記第１のデータ・ブロックのハッシュ値から選択し、前記第１のＭ個のハッシュ値を前記第２のデータ・ブロックのハッシュ値から選択し、前記第１のデータ・ブロックの前記第１のＭ個のハッシュ値および同一のハッシュ値に対する前記第２のデータ・ブロックの前記第１のＭ個のハッシュ値を検索し、前記同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異が前記シフト量であると判定するように構成され、Ｍは正の整数でありＮより大きくない、
請求項３３に記載の記憶装置。
【請求項３５】
前記決定ユニットは特に、前記ｎ番目のスナップショットＳｎの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って前記第１のデータ・ブロックを決定するように構成される、請求項３３に記載の記憶装置。
【請求項３６】
前記決定ユニットは特に、ｘ番目のスナップショットＳｘ操作を前記記憶装置に実施し、前記スナップショットＳｎをスナップショットＳｘと比較し、前記第１のデータ・ブロックを決定するように構成され、ｘは整数であり、ｎ＜ｘである、請求項３３に記載の記憶装置。
【請求項３７】
記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記ソース・デバイスと前記記憶装置の両方に格納され、ｎは整数であり、前記記憶装置は、
前記ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第５のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、シフト情報、および前記ｎ番目のスナップショットＳｎのバージョン番号を取得するように構成された受信解析ユニットと、
前記第１のデータ・ブロックの前記論理ブロック・アドレスおよび前記ｎ番目のスナップショットＳｎの前記バージョン番号に従って、前記スナップショットＳｎに記録された第２のデータ・ブロックを決定するように構成された決定ユニットであって、前記第１のデータ・ブロックは、前記ｎ番目のスナップショットＳｎの後に前記ソース・デバイスにより書き込まれたデータ・ブロックであり、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックである、決定ユニットと、
前記第５のデータ・ブロックを解凍して第４のデータ・ブロックを取得するように構成された解凍ユニットと、
前記第４のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、論理演算ユニットと、
前記シフト情報に従って逆循環シフトを前記第３のデータ・ブロックに実施して前記第１のデータ・ブロックを取得するように構成されたシフト・ユニットであって、前記シフト情報は、循環シフトを前記第１のデータ・ブロックに実施して前記第３のデータ・ブロックを取得するために前記ソース・デバイスにより必要とされるシフト量および循環シフト方向を含む、シフト・ユニットと、
前記第１のデータ・ブロックを前記第１のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成された書込みユニットと、
を備える、記憶装置。
【請求項３８】
記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記ｎ番目のスナップショットＳｎの前記データおよびｘ番目のスナップショットＳｘのデータは前記記憶装置に格納され、ｎおよびｘは整数であり、ｎ＜ｘであり、前記記憶装置は、
前記ソース・デバイスにより送信されたデータ復元要求を受信するように構成された受信ユニットであって、前記データ復元要求は前記スナップショットＳｎのバージョン番号を運搬する、受信ユニットと、
前記スナップショットＳｎの前記バージョン番号および前記スナップショットＳｘのバージョン番号に従って、前記スナップショットＳｘに記録された第１のデータ・ブロックを決定し、前記第１のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットＳｎの前記バージョン番号に従って、前記スナップショットＳｎに記録され前記論理ブロック・アドレスに格納された第２のデータ・ブロックを決定し、前記第１のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するように構成された決定ユニットであって、前記第１のデータ・ブロックは前記記憶装置によりバックアップされた前記スナップショットＳｘに記録され前記ソース・デバイスにより前記ｎ番目のスナップショットＳｎの後に書き込まれたデータ・ブロックである、決定ユニットと、
前記シフト量に従って循環シフトを前記第１のデータ・ブロックに実施して第３のデータ・ブロックを取得するように構成されたシフト・ユニットと、
前記第３のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第４のデータ・ブロックを取得するように構成された論理演算ユニットと、
前記第４のデータ・ブロックを圧縮して第５のデータ・ブロックを取得するように構成された圧縮ユニットであって、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、圧縮ユニットと、
前記ソース・デバイスに、前記第５のデータ・ブロック、前記第１のデータ・ブロックの前記論理ブロック・アドレス、およびシフト情報を運搬するデータ・パケットを送信するように構成された送信ユニットであって、前記シフト情報は循環シフト方向および前記シフト量を含む、送信ユニットと、
を備える、記憶装置。
【請求項３９】
以下の計算規則、即ち、Ｎ個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第１のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、（ｉ＋１）番目のウィンドウの開始位置はｉ番目のウィンドウの開始位置から固定長だけ離れており、Ｎは整数であり２より小さくなく、ｉは整数であり、前記ｉ番目のウィンドウは１番目乃至Ｎ番目のウィンドウのうち何れかのウィンドウを示すことが前記記憶装置に対して構成され、前記決定ユニットは特に、
前記計算規則に従って、各ウィンドウ内の、前記第１のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第２のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第１のＭ個のハッシュ値を前記第１のデータ・ブロックのハッシュ値から選択し、前記第１のＭ個のハッシュ値を前記第２のデータ・ブロックのハッシュ値から選択し、前記第１のデータ・ブロックの前記第１のＭ個のハッシュ値および同一のハッシュ値に対する前記第２のデータ・ブロックの前記第１のＭ個のハッシュ値を検索し、前記同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異が前記シフト量であると判定するように構成され、Ｍは正の整数でありＮより大きくない、
請求項３８に記載の記憶装置。
【請求項４０】
記憶装置であって、前記記憶装置は記憶システム内のソース・デバイスの役割を果たすように構成され、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記記憶装置に格納され、前記記憶装置内の前記ｎ番目のスナップショットＳｎの前記データおよびｘ番目のスナップショットＳｘのデータは前記バックアップ側デバイスに格納され、ｎおよびｘは整数であり、ｎ＜ｘであり、前記ソース・デバイスは、
データ復元要求を前記バックアップ側デバイスに送信するように構成された送信ユニットであって、前記データ復元要求は前記スナップショットＳｎのバージョン番号を運搬する、送信ユニットと、
前記データ復元要求に従って前記バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第５のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、およびシフト情報を取得するように構成された受信解析ユニットであって、前記第１のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットＳｘに記録され前記記憶装置により前記ｎ番目のスナップショットＳｎの後の前記論理ブロック・アドレスに書き込まれたデータ・ブロックである、受信解析ユニットと、
前記第１のデータ・ブロックの前記論理ブロック・アドレスに従って、前記記憶装置に格納された前記スナップショットＳｎに記録された第２のデータ・ブロックを決定するように構成された決定ユニットであって、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックである、決定ユニットと、
前記第５のデータ・ブロックを解凍して第４のデータ・ブロックを取得するように構成された解凍ユニットと、
前記第４のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得するように構成された論理演算ユニットであって、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作である、論理演算ユニットと、
前記シフト情報に従って逆循環シフトを前記第３のデータ・ブロックに実施して前記第１のデータ・ブロックを取得するように構成されたシフト・ユニットであって、前記シフト情報は、循環シフトを前記第１のデータ・ブロックに実施して前記第３のデータ・ブロックを取得するために前記バックアップ側デバイスにより必要とされるシフト量および循環シフト方向を含む、シフト・ユニットと、
前記第１のデータ・ブロックを前記第１のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成された書込みユニットと、
を備える、記憶装置。
【請求項４１】
記憶装置であって、前記記憶装置は記憶システム内のソース・デバイスの役割を果たし、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記記憶装置と前記バックアップ側デバイスの両方に格納され、ｎは整数であり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、
前記プロセッサは、前記ｎ番目のスナップショットＳｎの後の前記記憶装置に書き込まれた第１のデータ・ブロックを決定し、前記第１のデータ・ブロックの論理ブロック・アドレスに従って、前記ｎ番目のスナップショットＳｎに記録された第２のデータ・ブロックを決定し、前記第１のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、前記シフト量に従って循環シフトを前記第１のデータ・ブロックに実施して第３のデータ・ブロックを取得し、前記第３のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第４のデータ・ブロックを取得し、前記第４のデータ・ブロックを圧縮して第５のデータ・ブロックを取得するように構成され、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックであり、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作であり、
前記インタフェースは、前記バックアップ側デバイスに、前記第５のデータ・ブロック、前記第１のデータ・ブロックの前記論理ブロック・アドレス、シフト情報、および前記ｎ番目のスナップショットＳｎのバージョン番号を運搬するデータ・パケットを送信するように構成され、前記シフト情報は循環シフト方向および前記シフト量を含む、
記憶装置。
【請求項４２】
以下の計算規則、即ち、Ｎ個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第１のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、（ｉ＋１）番目のウィンドウの開始位置はｉ番目のウィンドウの開始位置から固定長だけ離れており、Ｎは整数であり２より小さくなく、ｉは整数であり、前記ｉ番目のウィンドウは１番目乃至Ｎ番目のウィンドウのうち何れかのウィンドウを示すことが前記記憶装置に対して構成され、前記プロセッサは特に、
前記計算規則に従って、各ウィンドウ内の、前記第１のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、前記計算規則に従って、各ウィンドウ内の、前記第２のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第１のＭ個のハッシュ値を前記第１のデータ・ブロックのハッシュ値から選択し、前記第１のＭ個のハッシュ値を前記第２のデータ・ブロックのハッシュ値から選択し、前記第１のデータ・ブロックの前記第１のＭ個のハッシュ値および同一のハッシュ値に対する前記第２のデータ・ブロックの前記第１のＭ個のハッシュ値を検索し、前記同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異が前記シフト量であると判定するように構成され、Ｍは正の整数でありＮより大きくない、
請求項４１に記載の記憶装置。
【請求項４３】
前記プロセッサは特に、前記ｎ番目のスナップショットＳｎの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って前記第１のデータ・ブロックを決定するように構成される、請求項４１に記載の記憶装置。
【請求項４４】
前記プロセッサは特に、ｘ番目のスナップショットＳｘ操作を前記記憶装置に実施し、前記スナップショットＳｎをスナップショットＳｘと比較し、前記第１のデータ・ブロックを決定するように構成され、ｘは整数であり、ｎ＜ｘである、請求項４１に記載の記憶装置。
【請求項４５】
記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記ソース・デバイスと前記記憶装置の両方に格納され、ｎは整数であり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、
前記インタフェースは、前記ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第５のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、シフト情報、および前記ｎ番目のスナップショットＳｎのバージョン番号を取得するように構成され、
前記プロセッサは、前記第１のデータ・ブロックの前記論理ブロック・アドレスおよび前記ｎ番目のスナップショットＳｎの前記バージョン番号に従って、前記スナップショットＳｎに記録された第２のデータ・ブロックを決定し、前記第５のデータ・ブロックを解凍して第４のデータ・ブロックを取得し、前記第４のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得し、前記シフト情報に従って逆循環シフトを前記第３のデータ・ブロックに実施して前記第１のデータ・ブロックを取得し、前記第１のデータ・ブロックを前記第１のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成され、前記第１のデータ・ブロックは、前記ｎ番目のスナップショットＳｎの後に前記ソース・デバイスにより書き込まれたデータ・ブロックであり、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックであり、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作であり、前記シフト情報は、循環シフトを前記第１のデータ・ブロックに実施して前記第３のデータ・ブロックを取得するために前記ソース・デバイスにより必要とされるシフト量および循環シフト方向を含む、
記憶装置。
【請求項４６】
記憶装置であって、前記記憶装置は記憶システム内のバックアップ側デバイスの役割を果たすように構成され、前記記憶システムはさらに前記バックアップ側デバイスのソース・デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記ソース・デバイスに格納され、前記ソース・デバイス内の前記ｎ番目のスナップショットＳｎの前記データおよびｘ番目のスナップショットＳｘのデータは前記記憶装置に格納され、ｎおよびｘは整数であり、ｎ＜ｘであり、前記記憶装置はインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、
前記インタフェースは、前記ソース・デバイスにより送信されたデータ復元要求を受信するように構成され、前記データ復元要求は前記スナップショットＳｎのバージョン番号を運搬し、
前記プロセッサは、前記スナップショットＳｎの前記バージョン番号および前記スナップショットＳｘのバージョン番号に従って、前記スナップショットＳｘに記録された第１のデータ・ブロックを決定し、前記第１のデータ・ブロックの論理ブロック・アドレスおよび前記スナップショットＳｎの前記バージョン番号に従って、前記スナップショットＳｎに記録され前記論理ブロック・アドレスに格納された第２のデータ・ブロックを決定し、前記第１のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、前記シフト量に従って循環シフトを前記第１のデータ・ブロックに実施して第３のデータ・ブロックを取得し、前記第３のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第４のデータ・ブロックを取得し、前記第４のデータ・ブロックを圧縮して第５のデータ・ブロックを取得するように構成され、前記第１のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットＳｘに記録され前記ソース・デバイスにより前記ｎ番目のスナップショットＳｎの後に書き込まれたデータ・ブロックであり、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作であり、
前記インタフェースは、前記ソース・デバイスに、前記第５のデータ・ブロック、前記第１のデータ・ブロックの前記論理ブロック・アドレス、およびシフト情報を運搬するデータ・パケットを送信するように構成され、前記シフト情報は循環シフト方向および前記シフト量を含む、
記憶装置。
【請求項４７】
以下の計算規則、即ち、Ｎ個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第１のウィンドウの開始位置は前記データ・ブロックの開始位置であり、最後のウィンドウの終了位置は前記データ・ブロックの終了位置であり、（ｉ＋１）番目のウィンドウの開始位置はｉ番目のウィンドウの開始位置から固定長だけ離れており、Ｎは整数であり２より小さくなく、ｉは整数であり、前記ｉ番目のウィンドウは１番目乃至Ｎ番目のウィンドウのうち何れかのウィンドウを示すことが前記記憶装置に対して構成され、前記プロセッサは特に、
前記計算規則に従って、各ウィンドウ内の、前記第１のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、 前記計算規則に従って、各ウィンドウ内の、前記第２のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第１のＭ個のハッシュ値を前記第１のデータ・ブロックのハッシュ値から選択し、前記第１のＭ個のハッシュ値を前記第２のデータ・ブロックのハッシュ値から選択し、前記第１のデータ・ブロックの前記第１のＭ個のハッシュ値および同一のハッシュ値に対する前記第２のデータ・ブロックの前記第１のＭ個のハッシュ値を検索し、前記同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異が前記シフト量であると判定するように構成され、Ｍは正の整数でありＮより大きくない、
請求項４６に記載の記憶装置。
【請求項４８】
記憶装置であって、前記記憶装置は記憶システム内のソース・デバイスの役割を果たし、前記記憶システムはさらに前記ソース・デバイスのバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータは前記記憶装置に格納され、前記記憶装置内の前記ｎ番目のスナップショットＳｎの前記データおよびｘ番目のスナップショットＳｘのデータは前記バックアップ側デバイスに格納され、ｎおよびｘは整数であり、ｎ＜ｘであり、前記ソース・デバイスはインタフェースおよびプロセッサを備え、前記インタフェースおよび前記プロセッサはバスを用いることによって互いと通信し、
前記インタフェースは、データ復元要求を前記バックアップ側デバイスに送信し、前記データ復元要求に従って前記バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第５のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、およびシフト情報を取得するように構成され、前記データ復元要求は前記スナップショットＳｎのバージョン番号を運搬し、前記第１のデータ・ブロックは、前記バックアップ側デバイスによりバックアップされた前記スナップショットＳｘに記録され前記記憶装置により前記ｎ番目のスナップショットＳｎの後の前記論理ブロック・アドレスに書き込まれたデータ・ブロックであり、
前記プロセッサは、前記第１のデータ・ブロックの前記論理ブロック・アドレスに従って、前記記憶装置に格納された前記スナップショットＳｎに記録された第２のデータ・ブロックを決定し、前記第５のデータ・ブロックを解凍して第４のデータ・ブロックを取得し、前記第４のデータ・ブロックおよび前記第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得し、前記シフト情報に従って逆循環シフトを前記第３のデータ・ブロックに実施して前記第１のデータ・ブロックを取得し、前記第１のデータ・ブロックを前記第１のデータ・ブロックの前記論理ブロック・アドレスに書き込むように構成され、前記第１のデータ・ブロックは前記第２のデータ・ブロックの修正されたブロックであり、前記論理演算は排他ＯＲ操作または排他ＮＯＲ操作であり、前記シフト情報は、循環シフトを前記第１のデータ・ブロックに実施して前記第３のデータ・ブロックを取得するために前記バックアップ側デバイスにより必要とされるシフト量および循環シフト方向を含む、
記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報技術の分野に関し、特に、記憶システム内のデータ・バックアップのための方法および装置に関する。
【背景技術】
【０００２】
ユーザ・データの信頼性を確保するために、記憶システムは一般に、当該ユーザ・データを当該記憶システムのソース・デバイスからバックアップ側デバイスにコピーするためにデータコピー機能を提供する。ソース・デバイスに障害が発生すると、バックアップ側デバイス内のデータはソース・デバイスに復元され、それにより災害復旧の目的を達成する。
【０００３】
先行技術では、一般に漸進的複製技術を用いることによって、ソース・デバイスにおいて変化するデータが圧縮され次いでバックアップ側デバイスにバックアップされる。しかし、先行技術では、変化するデータ・ブロックをバックアップ側にコピーすることは、依然として大量の帯域幅を消費する。
【発明の概要】
【課題を解決するための手段】
【０００４】
第１の態様によれば、本発明の１実施形態では、記憶システム内のデータ・バックアップのための解決策を提供する。当該記憶システムは、ソース・デバイスとバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータはソース・デバイスとバックアップ側デバイスの両方に格納される。ソース・デバイスは、ｎ番目のスナップショットＳｎの後にソース・デバイスに書き込まれた第１のデータ・ブロックを決定し、第１のデータ・ブロックの論理ブロック・アドレスに従って、同一の論理ブロック・アドレス内にありソース・デバイスに格納されたｎ番目のスナップショットＳｎに記録された第２のデータ・ブロックを決定する。第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックであり、ｎはスナップショット操作を示す。ソース・デバイスは、論理演算を第１のデータ・ブロックと第２のデータ・ブロックに実施して第３のデータ・ブロックを取得し、第３のデータ・ブロックを圧縮して第４のデータ・ブロックを取得する。ソース・デバイスは、バックアップ側デバイスに、第４のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、およびｎ番目のスナップショットＳｎのバージョン番号を運搬するデータ・パケットを送信する。当該論理演算は排他ＮＯＲ操作または排他ＯＲ操作を含む。第３のデータ・ブロックは当該論理演算を用いることによって取得され、大部分のデータは第１のデータ・ブロックと第２のデータ・ブロックの間で同一である。したがって、第３のデータ・ブロックは、大量の０（例えば、排他ＯＲ操作を使用）または１（例えば、排他ＮＯＲ操作を使用）を含む。第３のデータ・ブロックの圧縮率は、第１のデータ・ブロックの圧縮率より大きい。第１のデータ・ブロックを直接圧縮し、圧縮されたデータ・ブロックをバックアップ側デバイスに送信するのと比べて、バックアップ側に送信されるデータの量が削減され、送信帯域幅が節約される。
【０００５】
バックアップ側デバイスは、ソース・デバイスにより送信されたデータ・パケットを受信し解析して、第４のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、およびｎ番目のスナップショットＳｎのバージョン番号を取得し、バックアップ側デバイスは、第１のデータ・ブロックの論理ブロック・アドレスとｎ番目のスナップショットＳｎのバージョン番号に従って、バックアップ側デバイスに格納されたスナップショットＳｎに記録された第２のデータ・ブロックを決定し、第４のデータ・ブロックを解凍して第３のデータ・ブロックを取得し、論理演算を第３のデータ・ブロックと第２のデータ・ブロックに実施して第１のデータ・ブロックを取得し、第１のデータ・ブロックを第１のデータ・ブロックの論理ブロック・アドレスに書き込む。
【０００６】
任意選択で、ソース・デバイスにより、ｎ番目のスナップショットＳｎの後にソース・デバイスに書き込まれた第１のデータ・ブロックを決定するステップは、ソース・デバイスにより、ｎ番目のスナップショットＳｎの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って第１のデータ・ブロックを決定するステップを含む。当該実装方式では、第１のデータ・ブロックを、スナップショット操作をソース・デバイスに再度実施する必要なしに決定することができる。
【０００７】
任意選択で、ソース・デバイスにより、ｎ番目のスナップショットＳｎの後にソース・デバイスに書き込まれた第１のデータ・ブロックを決定するステップは、ソース・デバイスにより、ｘ番目のスナップショットＳｘ操作を実施し、スナップショットＳｎをスナップショットＳｘと比較して、第１のデータ・ブロックを決定するステップを含む。ｎおよびｘは整数であり、ｎ＜ｘである。
【０００８】
本発明の第１の態様の当該実施形態で提供する解決策をまたデータ復元に適用してもよい。ｎ番目のスナップショットＳｎのデータはソース・デバイスに格納され、ソース・デバイス内のｎ番目のスナップショットＳｎのデータとｘ番目のスナップショットＳｘのデータはバックアップ側デバイスに格納される。ｎおよびｘは整数であり、ｎ＜ｘであり、ソース・デバイスはデータ復元要求をバックアップ側デバイスに送信し、当該データ復元要求はスナップショットＳｎのバージョン番号を運搬する。バックアップ側デバイスは、ソース・デバイスにより送信されたデータ復元要求を受信し解析して、スナップショットＳｎのバージョン番号を取得し、スナップショットＳｎのバージョン番号およびスナップショットＳｘのバージョン番号に従って第１のデータ・ブロックを決定し、第１のデータ・ブロックの論理ブロック・アドレスとスナップショットＳｎのバージョン番号に従って、スナップショットＳｎに記録された第２のデータ・ブロックを決定し、論理演算を第１のデータ・ブロックと第２のデータ・ブロックに実施して第３のデータ・ブロックを取得し、第３のデータ・ブロックを圧縮して第４のデータ・ブロックを取得し、ソース・デバイスに、第４のデータ・ブロックと第１のデータ・ブロックの論理ブロック・アドレスを運搬するデータ・パケットを送信する。第１のデータ・ブロックは、バックアップ側デバイスによりバックアップされたスナップショットＳｘに記録されソース・デバイスによりｎ番目のスナップショットＳｎの後に書き込まれたデータ・ブロックであり、第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックであり、当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作である。データ復元プロセスにおいて、論理演算および圧縮動作が実施され、これが同様に圧縮率を高め、送信帯域幅を節約する。
【０００９】
ソース・デバイスは、バックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第４のデータ・ブロックと第１のデータ・ブロックの論理ブロック・アドレスを取得し、第１のデータ・ブロックの論理ブロック・アドレスに従って、スナップショットＳｎに記録された第２のデータ・ブロックを決定し、第４のデータ・ブロックを解凍して第３のデータ・ブロックを取得し、論理演算を第３のデータ・ブロックと第２のデータ・ブロックに実施して第１のデータ・ブロックを取得し、第１のデータ・ブロックを第１のデータ・ブロックの論理ブロック・アドレスに書き込み、その結果、ソース・デバイスはバックアップ側デバイスの状態と同じ状態に復元される。
【００１０】
第１の態様および第１の態様が適用されるデータ・シナリオに対応して、本発明の当該実施形態ではさらに、本発明の当該実施形態における第１の態様で提供した解決策を実装するための、第１の態様の当該実施形態における記憶システム内のソース・デバイスおよびバックアップ側デバイスとしての役割を果たすように別々に構成された記憶装置を提供する。当該記憶装置は、第１の態様の本発明の当該実施形態および第１の態様が適用されるデータ・シナリオにおける解決策を実装する構造ユニットを備えるか、または当該記憶装置は、第１の態様の実施形態および第１の態様が適用されるデータ・シナリオにおける解決策を実装するためのインタフェースおよびプロセッサを備える。
【００１１】
したがって、本発明の当該実施形態ではさらに不揮発性コンピュータ可読記憶媒体およびコンピュータ・プログラム製品を提供する。当該不揮発性コンピュータ可読記憶媒体および当該コンピュータ・プログラム製品に含まれるコンピュータ命令が本発明の当該実施形態で提供する記憶装置のメモリにロードされ、当該記憶装置の中央演算装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、ＣＰＵ）が当該コンピュータ命令を実行すると、当該記憶装置は、本発明の当該実施形態における第１の態様で提供する解決策を実装するための、第１の態様の実施形態における記憶システム内のソース・デバイスおよびバックアップ側デバイスの役割を果たす。
【００１２】
第２の態様によれば、本発明の１実施形態ではさらに記憶システム内のデータ・バックアップのための別の解決策を提供する。当該記憶システムは、ソース・デバイスとバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータはソース・デバイスとバックアップ側デバイスの両方に格納される。ソース・デバイスは、ｎ番目のスナップショットＳｎの後にソース・デバイスに書き込まれた第１のデータ・ブロックを決定し、第１のデータ・ブロックの論理ブロック・アドレスに従って、ｎ番目のスナップショットＳｎに記録された第２のデータ・ブロックを決定する。第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックである。ソース・デバイスは、第１のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、当該シフト量に従って循環シフトを第１のデータ・ブロックに実施して第３のデータ・ブロックを取得する。第３のデータ・ブロックは当該循環シフトを実施することによって取得され、その結果、同一の位置で、多くのデータが第３のデータ・ブロックと第２のデータ・ブロックの間で同一である。ソース・デバイスは論理演算を第３のデータ・ブロックと第２のデータ・ブロックに実施して第４のデータ・ブロックを取得し、第４のデータ・ブロックを圧縮して第５のデータ・ブロックを取得する。当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作であり、当該論理演算の後、第４のデータ・ブロックは、大量の０（例えば、排他ＯＲ操作を使用）または１（例えば、排他ＮＯＲ操作を使用）を含む。第４のデータ・ブロックの圧縮率は、第１のデータ・ブロックの圧縮率より大きい。第１のデータ・ブロックを直接圧縮し、圧縮されたデータ・ブロックをバックアップ側デバイスに送信するのと比べて、バックアップ側に送信されるデータの量が削減され、送信帯域幅が節約される。ソース・デバイスは、バックアップ側デバイスに、第５のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、シフト情報、およびｎ番目のスナップショットＳｎのバージョン番号を運搬するデータ・パケットを送信する。当該シフト情報は循環シフト方向とシフト量を含む。
【００１３】
バックアップ側デバイスは、データ・パケットを受信し解析して、第５のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、シフト情報、およびｎ番目のスナップショットＳｎのバージョン番号を取得し、第１のデータ・ブロックの論理ブロック・アドレスおよびｎ番目のスナップショットＳｎのバージョン番号に従って、スナップショットＳｎに記録された第２のデータ・ブロックを決定し、第５のデータ・ブロックを解凍して第４のデータ・ブロックを取得し、論理演算を第４のデータ・ブロックと第２のデータ・ブロックに実施して第３のデータ・ブロックを取得し、当該シフト情報に従って逆循環シフトを第３のデータ・ブロックに実施して第１のデータ・ブロックを取得し、第１のデータ・ブロックを第１のデータ・ブロックの論理ブロック・アドレスに書き込む。
【００１４】
任意選択で、以下の計算規則がソース・デバイスに対して構成される。即ち、Ｎ個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第１のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置であり、（ｉ＋１）番目のウィンドウの開始位置はｉ番目のウィンドウの開始位置から固定長だけ離れており、Ｎは整数であり２より小さくなく、ｉは整数であり、ｉ番目のウィンドウは１番目乃至Ｎ番目のウィンドウのうち何れかのウィンドウを示す。ソース・デバイスは、当該計算規則に従って、各ウィンドウ内の、第１のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第２のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施する。ソース・デバイスは、ハッシュ値が設定される順序に従って、第１のＭ個のハッシュ値を第１のデータ・ブロックのハッシュ値から選択し、第１のＭ個のハッシュ値を第２のデータ・ブロックのハッシュ値から選択する。Ｍは正の整数でありＮより大きくない。ソース・デバイスは第１のデータ・ブロックの第１のＭ個のハッシュ値と同一のハッシュ値に対する第２のデータ・ブロックの第１のＭ個のハッシュ値を検索し、同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異がシフト量であると判定する。
【００１５】
任意選択で、（ｉ＋１）番目のウィンドウの開始位置がｉ番目のウィンドウの開始位置から離れる固定長は１ビットまたは複数ビットである。
【００１６】
任意選択で、ハッシュ値が設定されそれに従ってソース・デバイスが選択を行う順序が、特に昇順または降順であってもよい。
【００１７】
任意選択で、同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第１のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第２のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または、第１のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第２のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。
【００１８】
任意選択で、ソース・デバイスにより、ｎ番目のスナップショットＳｎの後にソース・デバイスに書き込まれた第１のデータ・ブロックを決定するステップは、ソース・デバイスにより、ｎ番目のスナップショットＳｎの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って、第１のデータ・ブロックを決定するステップを含む。当該実装方式では、第１のデータ・ブロックを、スナップショット操作をソース・デバイスに再度実施する必要なしに決定することができる。
【００１９】
任意選択で、ソース・デバイスにより、ｎ番目のスナップショットＳｎの後にソース・デバイスに書き込まれた第１のデータ・ブロックを決定するステップは、ソース・デバイスにより、ｘ番目のスナップショットＳｘ操作を実施し、スナップショットＳｎをスナップショットＳｘと比較し、第１のデータ・ブロックを決定するステップを含む。ｎおよびｘは整数であり、ｎ＜ｘである。
【００２０】
本発明の第２の態様の当該実施形態で提供する解決策をまた、データ復元に適用してもよい。記憶システムは、ソース・デバイスとバックアップ側デバイスを備え、ｎ番目のスナップショットＳｎのデータはソース・デバイスに格納され、ソース・デバイス内のｎ番目のスナップショットＳｎのデータおよびｘ番目のスナップショットＳｘのデータはバックアップ側デバイスに格納され、ｎおよびｘは整数であり、ｎ＜ｘである。ソース・デバイスは、データ復元要求をバックアップ側デバイスに送信する。当該データ復元要求はスナップショットＳｎのバージョン番号を運搬する。バックアップ側デバイスは、当該データ復元要求を受信し解析してスナップショットＳｎのバージョン番号を取得し、スナップショットＳｎのバージョン番号およびスナップショットＳｘのバージョン番号に従って第１のデータ・ブロックを決定し、第１のデータ・ブロックの論理ブロック・アドレスおよびスナップショットＳｎのバージョン番号に従って、スナップショットＳｎに記録された第２のデータ・ブロックを決定し、第１のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、当該シフト量に従って循環シフトを第１のデータ・ブロックに実施して第３のデータ・ブロックを取得し、論理演算を第３のデータ・ブロックおよび第２のデータ・ブロックに実施して第４のデータ・ブロックを取得し、第４のデータ・ブロックを圧縮して第５のデータ・ブロックを取得する。当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作であり、当該論理演算の後、第４のデータ・ブロックは、大量の０（例えば、排他ＯＲ操作を使用）または１（例えば、排他ＮＯＲ操作を使用）を含む。第４のデータ・ブロックの圧縮率は、第１のデータ・ブロックの圧縮率より大きい。直接第１のデータ・ブロックを圧縮し圧縮されたデータ・ブロックをソース・デバイスに送信することと比べて、ソース・デバイスに送信されるデータ量が削減され、送信帯域幅が節約される。バックアップ側デバイスは、ソース・デバイスに、第５のデータ・ブロック、シフト情報、および第１のデータ・ブロックの論理ブロック・アドレスを運搬するデータ・パケットを送信する。第１のデータ・ブロックは、バックアップ側デバイスによりバックアップされたスナップショットＳｘに記録されソース・デバイスによりｎ番目のスナップショットＳｎの後に書き込まれたデータ・ブロックであり、第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックであり、当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作であり、当該シフト情報は循環シフト方向とシフト量を含む。
【００２１】
ソース・デバイスは、当該データ・パケットを受信し解析して第５のデータ・ブロック、シフト情報、および第１のデータ・ブロックの論理ブロック・アドレスを取得し、第１のデータ・ブロックの論理ブロック・アドレスに従って、スナップショットＳｎに記録された第２のデータ・ブロックを決定し、第５のデータ・ブロックを解凍して第４のデータ・ブロックを取得し、当該論理演算を第４のデータ・ブロックおよび第２のデータ・ブロックに実施して第３のデータ・ブロックを取得し、当該シフト情報に従って逆循環シフトを第３のデータ・ブロックに実施して第１のデータ・ブロックを取得し、第１のデータ・ブロックを第１のデータ・ブロックの論理ブロック・アドレスに書き込み、その結果、ソース・デバイスはバックアップ側デバイスの状態と同じ状態に復元される。
【００２２】
任意選択で、以下の計算規則がバックアップ側デバイスに対して構成される。即ち、Ｎ個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第１のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置であり、（ｉ＋１）番目のウィンドウの開始位置はｉ番目のウィンドウの開始位置から固定長だけ離れており、Ｎは整数であり２より小さくなく、ｉは整数であり、ｉ番目のウィンドウは１番目乃至Ｎ番目のウィンドウのうち何れかのウィンドウを示す。バックアップ側デバイスは当該計算規則に従って、各ウィンドウ内の、第１のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第２のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施する。バックアップ側デバイスは、ハッシュ値が設定される順序に従って、第１のＭ個のハッシュ値を第１のデータ・ブロックのハッシュ値から選択し、第１のＭ個のハッシュ値を第２のデータ・ブロックのハッシュ値から選択し、Ｍは正の整数でありＮより大きくない。バックアップ側デバイスは、第１のデータ・ブロックの第１のＭ個のハッシュ値および同一のハッシュ値に対する第２のデータ・ブロックの第１のＭ個のハッシュ値を検索し、同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異がシフト量であると判定する。
【００２３】
任意選択で、（ｉ＋１）番目のウィンドウの開始位置がｉ番目のウィンドウの開始位置から離れる固定長は１ビットまたは複数ビットである。
【００２４】
任意選択で、当該ハッシュ値が設定されバックアップ側デバイスがそれに従って選択を実施する順序が、特に昇順または降順であってもよい。
【００２５】
任意選択で、同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第１のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第２のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または、第１のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第２のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。
【００２６】
第２の態様および第２の態様が適用されるデータ・シナリオに対応して、本発明の当該実施形態ではさらに、本発明の当該実施形態における第２の態様で提供した解決策を実装するための、第２の態様の当該実施形態における記憶システム内のソース・デバイスおよびバックアップ側デバイスとしての役割を果たすように別々に構成された記憶装置を提供する。当該記憶装置は、第２の態様の発明の実施形態および第２の態様が適用されるデータ・シナリオの解決策を実装する構造ユニットを備えるか、または当該記憶装置は、第２の態様の実施形態および第２の態様が適用されるデータ・シナリオの解決策を実装するための、インタフェースおよびプロセッサを備える。
【００２７】
したがって、本発明の当該実施形態ではさらに不揮発性コンピュータ可読記憶媒体およびコンピュータ・プログラム製品を提供する。当該不揮発性コンピュータ可読記憶媒体および当該コンピュータ・プログラム製品に含まれるコンピュータ命令が本発明の当該実施形態で提供する記憶装置のメモリにロードされ、当該記憶装置の中央演算装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、ＣＰＵ）が当該コンピュータ命令を実行すると、当該記憶装置は、本発明の当該実施形態における第２の態様で提供する解決策を実装するための、第２の態様の実施形態における記憶システム内のソース・デバイスおよびバックアップ側デバイスの役割を果たす。
【図面の簡単な説明】
【００２８】
【図１】本発明の１実施形態に従う記憶システムの略図である。
【図２ａ】本発明の１実施形態に従うシフト量を決定するための方法の略図である。
【図２ｂ】本発明の１実施形態に従うシフト量を決定するための方法の略図である。
【図３】本発明の１実施形態に従う循環シフトの略図である。
【図４】本発明の１実施形態に従う排他ＯＲ操作の略図である。
【図５】本発明の１実施形態に従う圧縮動作の略図である
【図６】本発明の１実施形態に従うデータ・パケットの略図である。
【図７】本発明の１実施形態に従う排他ＯＲシフト操作の略図である。
【図８】本発明の１実施形態に従う逆サイクルの略図である。
【図９】本発明の１実施形態に従うデータ・バックアップの後の記憶システムの略図である。
【図１０】本発明の１実施形態に従う適用シナリオの略図である。
【図１１】本発明の１実施形態に従う適用シナリオの略図である。
【図１２】本発明の１実施形態に従う記憶装置の略構造図である。
【図１３】本発明の１実施形態に従う記憶装置の略構造図である。
【図１４】本発明の１実施形態に従う記憶装置の略構造図である。
【図１５】本発明の１実施形態に従う記憶装置の略構造図である。
【図１６】本発明の１実施形態に従う記憶装置の略構造図である。
【発明を実施するための形態】
【００２９】
図１に示すように、記憶システムはソース・デバイス１０１およびバックアップ側デバイス１０２を備える。ｎ番目のスナップショットＳｎの時点では、データ・ブロック１、データ・ブロック２、データ・ブロック３、およびデータ・ブロック４はソース・デバイス１０１に格納される。バックアップ側デバイス１０２では、ソース・デバイス１０１内のｎ番目のスナップショットＳｎのバックアップが格納される。即ち、データ・ブロック１、データ・ブロック２、データ・ブロック３、およびデータ・ブロック４が格納される。ｎ番目のスナップショットＳｎの後、ソース・デバイス１０１内のデータ・ブロック２がデータ・ブロック２’に修正される。スナップショット実装機構に従って、データ・ブロック２は、スナップショットＳｎに格納され、さらにデータ・ブロック２’が記録される。データ・ブロック２’はデータ・ブロック２が修正された後に取得されたデータ・ブロックである（即ち、データ・ブロック２’はデータ・ブロック２の修正されたブロックである）。スナップショットＳｎの時点にあるソース・デバイス１０１内のデータは、バックアップ側デバイス１０２において既にバックアップされており、バックアップ側デバイス１０２はスナップショットＳｎ操作を実施している。即ち、スナップショットＳｎの時点での状態も、スナップショットＳｎ操作を用いることによってバックアップ側デバイス１０２に記録される。したがって、ソース・デバイス１０１内のデータがバックアップ側に再度バックアップされるとき、データ・ブロック２’のみをバックアップする必要がある。一般に、バックアップ側デバイス１０２にバックアップされているプロセスにおいてデータ・ブロック２’が修正されないことを保証するために、一般にスナップショット操作をソース・デバイス１０１で実施する必要がある。スナップショット操作がＳｘであってもよい。ｎおよびｘは整数であり、ｎ＜ｘである。図１に示すように、ソース・デバイス１０１に格納されたデータ・ブロック１、データ・ブロック２’、データ・ブロック３、およびデータ・ブロック４はスナップショットＳｘに記録される。スナップショットＳｎに記録されたデータ・ブロック２の論理ブロック・アドレスは、スナップショットＳｘに記録されたデータ・ブロック２’の論理ブロック・アドレスと同じである。即ち、データ・ブロック２およびデータ・ブロック２’は、同一の論理ブロック・アドレスの異なる時点での状態を示す。本発明の当該実施形態では、スナップショットに記録されたデータ、スナップショットの格納されたデータ、またはスナップショットのデータは、装置に格納されスナップショットの時点で記録されたデータを示す。スナップショット（Ｓｎａｐｓｈｏｔ）は指定されたデータ・セットに関する完全に利用可能なコピーであり、当該コピーは時間点（当該コピーが開始する時間点）であるデータのイメージを含む。具体的な意味については、ストレージ・ネットワーキング業界団体（Ｓｔｏｒａｇｅ  Ｎｅｔｗｏｒｋｉｎｇ  Ｉｎｄｕｓｔｒｙ  Ａｓｓｏｃｉａｔｉｏｎ、ＳＮＩＡ）における定義を参照することができる。一般に、スナップショットは、２つの実装方式、即ち、コピー・オン・ライト（Ｃｏｐｙ  Ｏｎ  Ｗｒｉｔｅ、ＣＯＷ）およびリダイレクト・オン・ライト（Ｒｅｄｉｒｅｃｔ  Ｏｎ  Ｗｒｉｔｅ、ＲＯＷ）を有する。詳細はここでは説明しない。任意選択で、当該修正の後に取得されたデータ・ブロック２’を、スナップショットＳｘをスナップショットＳｎと比較することによって決定してもよい。任意選択で、修正の後に取得されたデータ・ブロックをさらに、データ変更ログ（Ｄａｔａ  Ｃｈａｎｇｅ  Ｌｏｇ、ＤＣＬ）を用いることによって決定してもよい。ＤＣＬ方式では、ソース・デバイス１０１がｎ番目のスナップショットＳｎを記録した後、ソース・デバイス１０１がデータ書込み要求を受信し、当該データ書込み要求を解析して当該データ書込み要求で運搬される論理ブロック・アドレスを取得する。当該受信されたデータ書込み要求で運搬されるアドレスがｎ番目のスナップショットＳｎに記録されたデータ・ブロックの論理ブロック・アドレスであるとき、当該データ・ブロックが修正される。図１を１例として用いると、ソース・デバイス１０１がＤＣＬを用いることによってｎ番目のスナップショットＳｎを記録した後、ソース・デバイス１０１により受信されたデータ書込み要求がデータ・ブロック２の論理ブロック・アドレスを運搬する場合、データ・ブロック２が修正されると判定される。
【００３０】
ステップ１：ソース・デバイス１０１は、データ・ブロック２’がｎ番目のスナップショットＳｎの後に取得されたデータ・ブロック２の修正されたブロックであると判定する。
【００３１】
本発明の当該実施形態では、データ・ブロック２’が００１１  １１１０  ００００  １０１０  ００１０  ００１１である例（読む都合のため、データ・ブロック２’の内容が４つのビットの単位で示されている）を使用する。
【００３２】
ステップ２：ソース・デバイスが、データ・ブロック２’の論理ブロック・アドレスに従って、ｎ番目のスナップショットＳｎに記録されたデータ・ブロック２を決定する。
【００３３】
本発明の当該実施形態では、データ・ブロック２は１１１０  ０００１  １０１０  ００１０  ００１１  ０１００である。
【００３４】
ステップ３：データ・ブロック２’の循環シフトのシフト量を決定し、当該シフト量に従って循環シフトをデータ・ブロック２’に実施する。
【００３５】
任意選択で、図２ａに示すように、以下の計算規則がソース・デバイス１０１に対して構成される。即ち、Ｎ個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第１のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置であり、（ｉ＋１）番目のウィンドウの開始位置はｉ番目のウィンドウの開始位置から固定長だけ離れており、Ｎは整数であり２より小さくなく、ｉは整数であり、ｉ番目のウィンドウは１番目乃至Ｎ番目のウィンドウのうち何れかのウィンドウを示す。
【００３６】
上述の計算規則に従って、例えば、２１個のウィンドウ（例えば、ウィンドウのサイズは４ビットである）が設定され、隣接するウィンドウの開始位置は互いから１ビット離れており（即ち、（ｉ＋１）番目のウィンドウの開始位置はｉ番目のウィンドウの開始位置から１ビット離れている）、ソース・デバイス１０１は、各ウィンドウ内にあるデータ・ブロック２の少なくとも部分的なデータにハッシュ計算を実施し、各ウィンドウ内にあるデータ・ブロック２’の少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値の降順で、それぞれＡ、Ｂ、Ｃ、およびＤである第１の４つのハッシュ値をデータ・ブロック２の当該２１個のウィンドウから選択する。当該４つのハッシュ値に対応するウィンドウはそれぞれウィンドウ１、ウィンドウ３、ウィンドウ９、およびウィンドウ１１であり、ウィンドウ１、ウィンドウ３、ウィンドウ９、およびウィンドウ１１に対応するオフセットはそれぞれ０、２、８、および１０である。ウィンドウに対応するオフセットとは、当該ウィンドウの開始位置がデータ・ブロックの開始位置から離れているビットの量を指す。例えば、データ・ブロック２において、ウィンドウ１の開始位置はデータ・ブロック２の開始位置から零ビット離れており、ウィンドウ３の開始位置はデータ・ブロック２の開始位置から２ビット離れている。同様に、ハッシュ値の降順で、それぞれＡ、Ｅ、Ｃ、およびＤである第１の４つのハッシュ値はデータ・ブロック２’の２１個のウィンドウから選択される。当該４つのハッシュ値に対応するウィンドウはそれぞれウィンドウ５’、ウィンドウ１７’、ウィンドウ１３’、およびウィンドウ１５’であり、ウィンドウ５’、ウィンドウ１７’、ウィンドウ１３’、およびウィンドウ１５’に対応するオフセットはそれぞれ４、１６、１２、および１４である。ソース・デバイス１０１は、当該２つのグループ内の同一のハッシュ値、即ち、ハッシュ値Ａ、Ｃ、およびＤを検索する。ソース・デバイス１０１は、同一のハッシュ値に対応するウィンドウのオフセットの間の差異がシフト量として使用されると判定する。ハッシュ値がＡであるウィンドウ１およびウィンドウ５’のオフセットの間の差異が４であり、ハッシュ値がＣであるウィンドウ９およびウィンドウ１３’のオフセットの間の差異が４である場合、これは、内容が当該２つのデータ・ブロックの間で同一である可能性があるが、ジグザグ配置現象があり、左への４ビットの循環シフトを用いることによって、当該２つのデータ・ブロックの同一内容が互いに整列することを保証できることを示す。上述の方法を用いることによって取得されたオフセットの差異が−４である場合、右への４ビットの循環シフトが実施される。当該２つのグループ内の全てのハッシュ値が同一であり、同一のハッシュ値に対応するオフセットも同一であるとき、これは、シフトは必要でないこと、即ち、零ビットの循環シフトが実施されることを示す。本発明の当該実施形態では、４つのハッシュ値がハッシュ値の降順で選択されることは例示的なものにすぎない。任意選択で、（ｉ＋１）番目のウィンドウの開始位置がｉ番目のウィンドウの開始位置から離れる固定長がまた複数ビットであってもよい。任意選択で、選択をハッシュ値の昇順で実施してもよい。図３に示すように、本発明の当該実施形態では、データ・ブロック２’はデータ・ブロック２から４ビット離れていると判定された場合、左への４ビットの循環シフトをデータ・ブロック２’に実施して、（シフトされたデータ・ブロックと称される）シフト後のデータ・ブロック、即ち、１１１０  ００００  １０１０  ００１０  ００１１  ００１１を取得する。所謂循環シフトは、コンピュータ用語であり、端へのシフトが実施されたとき、当該シフト前の元の範囲内のビットは失われないが、他の端のシフトイン・ビットとして使用されることを指す。例えば、左への４ビットの循環シフトが実施され、００１１が右側のシフトイン・ビットとして使用される。
【００３７】
任意選択で、図２ｂに示すように、先ず、排他ＯＲ操作をデータ・ブロック２’およびデータ・ブロック２に実施して、排他ＯＲデータ・ブロックａ１を取得し、排他ＯＲデータ・ブロックａ１に含まれる０の数が１０であることが得られ、次いで、左への１ビットの循環シフトがデータ・ブロック２’に実施され、左への１ビットの循環シフトを実施することによって取得されたデータ・ブロックとデータ・ブロック２に排他ＯＲ操作を実施して、排他ＯＲデータ・ブロックａ２を取得し、排他ＯＲデータ・ブロックａ２に含まれる０の数が１０であることが得られる。左への２３ビットの循環シフトがデータ・ブロック２’に実施され、左への２３ビットの循環シフトを実施することによって取得されたデータ・ブロックおよびデータ・ブロック２に排他ＯＲ操作が実施され、排他ＯＲデータ・ブロックａ２３が取得され排他ＯＲデータ・ブロックａ２３に含まれる０の数が決定されるまで、以上の規則に従って左への循環シフトが実施される。０の最大数を含む排他ＯＲデータ・ブロックが、排他ＯＲデータ・ブロックａ１からａ２３まで決定され、本発明の当該実施形態では、排他ＯＲデータ・ブロックａ５であり、次いで、左への４ビットの循環シフトがデータ・ブロック２’に実施されると判定される。排他ＯＲデータ・ブロックａ１が全て０のデータである場合、循環シフトを実施する必要はない。排他ＯＲ操作により得られたデータ内の多数の０は、２つのデータ・ブロックの間で同一である多数のデータを示すことが上述の説明から分かる。
【００３８】
循環シフトを用いることによって、データ・ブロック２およびデータ・ブロック２’をシフトすることで取得されたシフトされたデータ・ブロックの間で多くのデータが同一であり、その結果、後続の排他ＯＲ操作により得られたデータ・ブロックは０である多くのビットを含む。循環シフトが必要でないとき、即ち、各ビットがデータ・ブロック２’およびデータ・ブロック２の間で同一であるとき、零ビットの循環シフトが実施される。
【００３９】
ステップ４：特に図４に示すように、シフトされたデータ・ブロックおよびデータ・ブロック２に排他ＯＲ操作を実施して、００００  ０００１  ００００  ００００  ００００  ０１１１のデータ・ブロック（即ち、排他ＯＲデータ・ブロック）を取得する。
【００４０】
ステップ５：ソース・デバイス１０１が、取得された排他ＯＲデータ・ブロックに圧縮動作を実施する。
【００４１】
ソース・デバイス１０１が、特に、ＬＺ４圧縮アルゴリズム、ＺＬＩＢ圧縮アルゴリズム、ランレングス符号化（Ｒｕｎ−ｌｅｎｇｔｈ  ｅｎｃｏｄｉｎｇ、ＲＬＥ）圧縮アルゴリズム等を用いることによって圧縮動作を排他ＯＲデータ・ブロックに実施してもよく、本発明の当該実施形態では限定されない。
【００４２】
ソース・デバイス１０１がＲＬＥ圧縮アルゴリズムを用いることによって排他ＯＲデータ・ブロックを圧縮する例を使用する。図５に示す実施形態の方式では、当該ＲＬＥアルゴリズムは左から右へ当該排他ＯＲデータ・ブロックを訪問し、連続的に反復されたデータを出現回数の量で置き換え、次いで、圧縮された排他ＯＲデータ・ブロックが０（７）１（１）０（１３）１（３）のように示される。０（７）は０が連続的に７回出現したことを示し、１（１）は１が連続的に１回出現したことを示し、０（１３）は０が連続的に１３回出現したことを示し、１（３）は１が連続的に３回出現したことを示す。上述の指示方式は理解および区別の都合のためであり、実際の実装に対しては、ＲＬＥ圧縮アルゴリズムの説明を参照することができる（https://en.wikipedia.org/wiki/Run-length_encodingを参照）。
【００４３】
修正されたデータ・ブロックを直接圧縮することと比較すると、上述のステップを用いることにより、ソース・デバイス１０１によりバックアップ側デバイス１０２に送信されるデータの量が減り、それにより送信帯域幅が節約される。
【００４４】
ステップ６：ソース・デバイス１０１は、圧縮されたデータ・ブロックをデータ・パケットにカプセル化して、当該データ・パケットをバックアップ側デバイス１０２に送信する。当該データ・パケットは、データ・ブロック２’の論理ブロック・アドレス、データ・ブロック２’のシフト情報、当該圧縮されたデータ・ブロック、およびスナップショットＳｎのバージョン番号を運搬する。当該シフト情報は循環シフト方向とシフト量を含む。
【００４５】
本発明の当該実施形態では、バックアップ・データのデータ・パケットを送信するためのプロトコルは制限されない。１実装方式では、図６に示すように、４つのフィールド６０１、６０２、６０３、および６０４が元のデータ・パケットに加えられる。６０１はデータ・ブロック２’の論理ブロック・アドレスを示すために使用され、また、データ・ブロック２の論理ブロック・アドレスであり、６０２はｎ番目のスナップショットＳｎのバージョン番号を示し、６０３はデータ・ブロック２’のシフト情報を示すために使用され（本発明の当該実施形態では、シフト量は４ビットであり、それだけ左への循環シフトが実施される）、６０４は圧縮されたデータ・ブロックを運搬するために使用される。具体的な実装では、フィールドの順序は限定されない。フィールド６０３において、循環シフト方式を、第１のビットを用いて示してもよい。例えば、０は左への循環シフトを示し、１は右への循環シフトを示す。第１のビット以外のビットは循環シフトのシフト量、または、デフォルトの方向への循環シフトを示す。スナップショットのバージョン番号はスナップショットの識別子である。１つの実装は、スナップショットが増大するにつれバージョン番号が線形に増大するものである。
【００４６】
ステップ７：バックアップ側デバイス１０２は、データ・パケットを受信し解析して、当該データ・パケットで運搬されるデータ・ブロック２’の論理ブロック・アドレス、データ・ブロック２’のシフト情報、圧縮されたデータ・ブロック、およびスナップショットＳｎのバージョン番号を取得する。
【００４７】
特に、図６に示すデータ・パケットを１例として使用するとき、バックアップ側デバイス１０２はデータ・パケットを解析してフィールド６０１、６０２、６０３、および６０４内の情報を取得する。バックアップ側デバイス１０２はフィールド６０４で運搬される圧縮されたデータ・ブロックを解凍する。フィールド６０４で運搬される圧縮されたデータ・ブロックはＲＬＥ圧縮アルゴリズムを用いることによって取得され、したがって０（７）１０（１３）１（３）は００００  ０００１  ００００  ００００  ００００  ０１１１、即ち、ソース・デバイス１０１の端にある排他ＯＲデータ・ブロックを取得するために解凍される。フィールド６０１で運搬される修正されたデータ・ブロック２’の論理ブロック・アドレスおよびフィールド６０２で運搬されるｎ番目のスナップショットＳｎのバージョン番号に従って、バックアップ側デバイス１０２は、バックアップ側デバイス１０２内のｎ番目のスナップショットＳｎに記録されたデータ・ブロック２を決定して、１１１０  ０００１  １０１０  ００１０  ００１１  ０１００のデータ・ブロック２を取得する。図７に示すように、バックアップ側デバイス１０２は、データ・ブロック２および排他ＯＲデータ・ブロックに排他ＯＲ操作を実施して、ソース・デバイス１０１内の１１１０  ００００  １０１０  ００１０  ００１１  ００１１のシフトされたデータ・ブロック、即ち、データ・ブロック２’がシフトされた後に取得されたデータ・ブロックを取得する。バックアップ側デバイス１０２は、フィールド６０３で運搬されるシフト情報に従って逆循環シフトを実施する。図８に示すように、本発明の当該実施形態では、当該逆循環シフトは、ソース・デバイス１０１内のデータ・ブロック２’を取得するための右への４ビットの循環シフトである。
【００４８】
ステップ８：バックアップ側デバイス１０２が、ソース・デバイス１０１から受信されたデータ・パケットで運搬される、データ・ブロック２’の論理ブロック・アドレスにデータ・ブロック２’を書き込む。
【００４９】
具体的な実装では、バックアップ側デバイス１０２とソース・デバイス１０１は同一の論理ブロック・アドレスを有し、したがってデータ・ブロック２’の論理ブロック・アドレスはバックアップ側デバイス１０２に格納され、データ・ブロック２’の論理ブロック・アドレスはソース・デバイス１０１に格納される。上述の解決策では、バックアップ側デバイス１０２が、データ・ブロック２’の論理ブロック・アドレスに従って、バックアップ側デバイス１０２に格納されたデータ・ブロックのデータ・ブロック２を修正してデータ・ブロック２’を取得し、その結果、データ・ブロック１、データ・ブロック２’、データ・ブロック３、およびデータ・ブロック４がバックアップ側デバイス１０２に格納される。
【００５０】
バックアップ側デバイス１０２は既に、スナップショット操作をデータ・ブロック１、データ・ブロック２、データ・ブロック３、およびデータ・ブロック４に実施して、バックアップ側デバイス１０２内のスナップショットＳｎを取得している。したがって、バックアップ側デバイス１０２が格納されたデータ・ブロック２を修正してデータ・ブロック２’を取得するとき、データ・ブロック２が同時に維持される。
【００５１】
ステップ８の後、バックアップ側デバイス１０２はｘ番目のスナップショット操作をバックアップ側に実施して、スナップショットＳｘを取得する。特に図９に示すように、スナップショットＳｘの時点でバックアップ側デバイス１０２に格納されたデータがデータ・ブロック１、データ・ブロック２’、データ・ブロック３、およびデータ・ブロック４を含む例を使用する。スナップショットＳｎに記録されたデータ・ブロック２の論理ブロック・アドレスは、スナップショットＳｘに記録されたデータ・ブロック２’の論理ブロック・アドレスと同一である。即ち、データ・ブロック２およびデータ・ブロック２’は、異なる時点の同一の論理ブロック・アドレスの状態を示す。
【００５２】
ソース・デバイス１０１内に故障が発生してデータ損失が生ずると、バックアップ側デバイス１０２内のスナップショット・データを用いることによって復元を実施してもよい。本発明の当該実施形態では、ソース・デバイス１０１を、バックアップ側デバイス１０２を用いることによってｘ番目のスナップショットＳｘの時点の状態に復元してもよい。例えば、ソース・デバイス１０１が、故障のために、スナップショットＳｘに記録されたデータ・ブロック２’（即ち、データ・ブロック２が修正された後に取得されたデータ・ブロック）を失い、スナップショットＳｎの時点でのデータのみを有する（またはスナップショットＳｎの時点での状態と称される）場合、ソース・デバイス１０１はデータ復元要求をバックアップ側デバイス１０２に送信する。当該データ復元要求は、ソース・デバイス１０１内の現在のスナップショットＳｎのバージョン番号を運搬する。したがって、バックアップ側デバイス１０２は、当該データ復元要求で運搬されるソース・デバイス１０１内の現在のスナップショットＳｎのバージョン番号に従って、ソース・デバイス１０１がスナップショットＳｎの時点でのデータしか有さないと判定する。第１の実装方式では、バックアップ側デバイス１０２は、ソース・デバイス１０１内の現在のスナップショットＳｎのバージョン番号に従って、復元される必要があるデータがデータ・ブロック２’であると判定し、データ・ブロック２’の論理ブロック・アドレスおよびデータ・ブロック２’をソース・デバイス１０１に送信する。ソース・デバイス１０１は、データ・ブロック２’の論理ブロック・アドレスおよびデータ・ブロック２’を受信し、データ・ブロック２’をソース・デバイス１０１内のデータ・ブロック２’の論理ブロック・アドレスに書き込み、それによりソース・デバイス１０１をｘ番目のスナップショットＳｘの時点の状態に復元する。特に、スナップショットに基づいてソース・デバイス内のデータを復元するための既存の解決策を参照することができる。詳細はここでは説明しない。
【００５３】
別の実装方式では、バックアップ側デバイス１０２は、ソース・デバイス１０１により送信されたデータ復元要求に従って、復元される必要があるデータがデータ・ブロック２’であると判定し、バックアップ側デバイス１０２は、データ・ブロック２’の論理ブロック・アドレスに従って、スナップショットＳｎに記録したデータ・ブロック２を決定する。バックアップ側デバイス１０２は、データ・ブロック２’の循環シフトのシフト量を決定し、当該シフト量に従って循環シフトをデータ・ブロック２’に実施して、シフトされたデータ・ブロックを取得し、排他ＯＲ操作を当該シフトされたデータ・ブロックとデータ・ブロックに実施して、圧縮されたデータ・ブロックを取得し、当該圧縮されたデータ・ブロック、データ・ブロック２’の論理ブロック・アドレス、ｎ番目のスナップショットＳｎのバージョン番号、およびデータ・ブロック２’のシフト情報をデータ・パケットにカプセル化し、当該データ・パケットをソース・デバイス１０１に送信する。具体的な実装については、ステップ２乃至７を参照することができる。データ・パケットの具体的なフォーマットについては、図６を参照することができる。第１の実装方式と比較して、データ復元プロセスにおいてバックアップ側デバイス１０２によりソース・デバイス１０１に送信されるデータの量が削減され、送信帯域幅が節約される。ソース・デバイス１０１は、バックアップ側デバイス１０２により送信されたデータ・パケットを受信し解析して、排他ＯＲ操作、逆循環シフト操作、およびデータ書込み動作を当該受信されたパケットに従って実施して、データ・ブロック２’を取得する。具体的な実装については、ステップ７およびステップ８を参照することができる。データ・ブロック２’はデータ・ブロック２’の論理ブロック・アドレスに書き込まれ、それによりソース・デバイス１０１をスナップショットＳｘの時点の状態に復元する。
【００５４】
本発明の別の実施形態では、ソース・デバイス１０１がデータ・ブロック２’をバックアップ側デバイス１０２にバックアップする別の実装方式を提供する。ステップ１’とステップ２’はそれぞれステップ１および２と同様である。詳細はここでは説明しない。
【００５５】
ステップ３’：排他ＯＲ操作をデータ・ブロック２’およびデータ・ブロック２に実施して、１１０１  １１１１  １０１０  １０００  ０００１  ０１１１の排他ＯＲデータ・ブロックを取得する。具体的な排他ＯＲ操作については図４を参照することができる。
【００５６】
ステップ４’：１１０１  １１１１  １０１０  １０００  ０００１  ０１１１の排他ＯＲデータ・ブロックを圧縮する。具体的な実装については、ステップ５の説明を参照することができる。詳細はここでは説明しない。
【００５７】
ステップ５’：ソース・デバイス１０１は、圧縮されたデータ・ブロックをデータ・パケットにカプセル化して、当該データ・パケットをバックアップ側デバイス１０２に送信する。当該データ・パケットはデータ・ブロック２’の論理ブロック・アドレス、圧縮されたデータ・ブロック、およびスナップショットＳｎのバージョン番号を運搬する。
【００５８】
具体的な実装については図６を参照することができる。データ・パケットは、フィールド６０１、６０２、および６０４を含む（循環シフト操作は必要でなく、したがってフィールド６０３は必要でない）。６０１は、データ・ブロック２の論理ブロック・アドレスでもあるデータ・ブロック２’の論理ブロック・アドレスを示すために使用され、６０２はｎ番目のスナップショットＳｎのバージョン番号を示し、６０４は圧縮されたデータ・ブロックを運搬するために使用される。具体的な実装では、当該フィールドの順序は限定されない。
【００５９】
ステップ６’：バックエンド側デバイス１０２は、データ・パケットを受信し解析して、フィールド６０１、６０２、および６０４内の情報を取得する。バックエンド側デバイス１０２はフィールド６０４で運搬される圧縮されたデータ・ブロックを解凍する。フィールド６０１で運搬される修正されたデータ・ブロック２’の論理ブロック・アドレスおよびフィールド６０２で運搬されるｎ番目のスナップショットＳｎのバージョン番号に従って、バックアップ側デバイス１０２はバックアップ側デバイス１０２内のｎ番目のスナップショットＳｎに記録されたデータ・ブロック２を決定し、バックアップ側デバイス１０２は、データ・ブロック２および１１０１  １１１１  １０１０  １０００  ０００１  ０１１１の排他ＯＲデータ・ブロックに排他ＯＲ操作を実施してデータ・ブロック２’を取得する。
【００６０】
ステップ７’はステップ８と同様である。詳細はここでは説明しない。
【００６１】
バックアップ側デバイス１０２がデータ復元をソース・デバイス１０１に実施する別の実装方式では、バックアップ側デバイス１０２は、ソース・デバイス１０１により送信されたデータ復元要求に従って、復元される必要があるデータがデータ・ブロック２’であると判定し、バックアップ側デバイス１０２は、データ・ブロック２’の論理ブロック・アドレスに従って、スナップショットＳｎに記録したデータ・ブロック２を発見する。バックアップ側デバイス１０２は、ソース・デバイス１０１がステップ３’および４’を実施する以前の方式を別々に使用することによって、圧縮されたデータ・ブロックを取得する。バックアップ側デバイス１０２は、当該圧縮されたデータ・ブロック、データ・ブロック２’の論理ブロック・アドレス、およびｎ番目のスナップショットＳｎのバージョン番号をデータ・パケットにカプセル化して、当該データ・パケットをソース・デバイス１０１に送信する。当該データ・パケットの具体的なフォーマットについては、ステップ５’を参照することができる。したがって、データ復元プロセスにおいてバックアップ側デバイス１０２によりソース・デバイス１０１に送信されるデータの量が削減され、送信帯域幅が節約される。ソース・デバイス１０１は、バックアップ側デバイス１０２により送信されたデータ・パケットを受信し解析して、バックアップ側デバイス１０２により実施されるステップ６’およびステップ７’の方式でデータ・ブロック２’を取得し、データ・ブロック２’をデータ・ブロック２’の論理ブロック・アドレスに書き込み、それによりソース・デバイス１０１をスナップショットＳｘの時点の状態に復元する。
【００６２】
本発明の当該実施形態における排他ＯＲ操作をまた排他ＮＯＲ操作で置き換えてもよく、同一の効果を実現することができる。特に、シフト量を決定するための１実装方式では、排他ＮＯＲ操作が使用される場合、当該排他ＮＯＲ操作をデータ・ブロック２’およびデータ・ブロック２に実施して、排他ＮＯＲデータ・ブロックａ１を取得し、排他ＮＯＲデータ・ブロックａ１に含まれる１の数を取得し、次いで、左への１ビットの循環シフトをデータ・ブロック２’に実施し、排他ＮＯＲ操作をデータ・ブロック２と左への１ビットの循環シフトを実施することによって取得されたデータ・ブロックとに実施して、排他ＮＯＲデータ・ブロックａ２を取得し、排他ＮＯＲデータ・ブロックａ２に含まれる１の数を取得する。左への２３ビットの循環シフトがデータ・ブロック２’に実施され、排他ＮＯＲがデータ・ブロック２と左への２３ビットの循環シフトを実施することによって取得されたデータ・ブロックとに実施されて、排他ＮＯＲデータ・ブロックａ２３を取得し排他ＮＯＲデータ・ブロックａ２３に含まれる１の数を決定するまで、以上の規則に従って左への循環シフトが実施される。最大量の１を含む排他ＮＯＲデータ・ブロックが、排他ＮＯＲデータ・ブロックａ１からａ２３まで決定され、本発明の当該実施形態では、排他ＮＯＲデータ・ブロックａ５であり、次いで、左への４ビットの循環シフトがデータ・ブロック２’に実施されると判定される。排他ＮＯＲデータ・ブロックａ１が全て１のデータである場合、循環シフトを実施する必要はない。
【００６３】
本発明の実施形態で説明したデータ・バックアップ方法と本発明の実施形態におけるデータ復元方法を組み合わせて使用してもよく、または、独立に使用してもよい。
【００６４】
本発明の当該実施形態におけるソース・デバイス１０１およびバックアップ側デバイス１０２が、記憶アレイであってもよい。即ち、ソース・デバイス１０１はソース記憶アレイであり、バックアップ側デバイス１０２はバックアップ側記憶アレイである。記憶アレイの構造が図１０に示されており、記憶コントローラおよび複数のハード・ディスクを含む。当該記憶コントローラは、中央演算装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、ＣＰＵ）およびメモリを備える。当該ＣＰＵと当該メモリはバスを用いることによって互いと通信し、当該記憶コントローラはさらに、ホストおよびハード・ディスクと通信するインタフェースを備える。当該記憶コントローラは論理結合を当該ハード・ディスクに実施し、必要に応じて当該ハード・ディスクを異なるＲＡＩＤグループに分割する。当該記憶コントローラはＲＡＩＤグループの利用可能な容量を、論理ユニット（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）と呼ばれる相対的に小さなユニットに分割する。一意な識別子が各論理ユニットに割り当てられ、論理ユニット番号（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ、ＬＵＮ）と呼ばれる。当該記憶コントローラは論理ユニットを利用のためにホストに割り当て、即ち、当該論理ユニットのＬＵＮを当該ホストに公開する。具体的な実装については、記憶技術の分野における論理ユニット割当て技術を参照することができる。本発明の当該実施形態では、ソース記憶アレイをバックアップすることが、データ・ブロックを当該記憶アレイ内の論理ユニットにバックアップすることであってもよく、または、複数の論理ユニットをバックアップすることであってもよい。記憶アレイのシナリオにおいて、ＤＣＬ技術を用いることによって修正されたデータ・ブロックを決定することは特に、記憶コントローラがデータ書込み要求で運搬されるデータ・ブロックのアドレスを解析することによって当該修正されたデータ・ブロックの論理ブロック・アドレスを記録すること、即ち、運搬されるデータ・ブロックの論理ブロック・アドレス（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ、ＬＢＡ）および長さを記録することである。図６に示すフィールド６０１は修正されたデータ・ブロック２’のＬＢＡおよび長さを運搬する。
【００６５】
本発明の当該実施形態におけるソース・デバイス１０１およびバックアップ側デバイス１０２がネットワーク・アタッチト・ストレージ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ、ＮＡＳ）であってもよく、図１１に示すようにＮＡＳヘッダおよび記憶アレイ（図９を参照）を備える。当該ＮＡＳヘッダはＣＰＵおよびメモリを備え、当該ＮＡＳヘッダはさらに記憶業界における標準記憶プロトコルおよびポートを備え、これらは物理磁気ディスク・リソースに接続しこれを管理するために使用される。当該ＮＡＳヘッダ内のＣＰＵはファイル共有プロトコルを実行して、ファイル・アクセスを実装する。特に、当該ファイル共有プロトコルはネットワーク・ファイル・システム（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ、ＮＦＳ）、共通インターネット・ファイル・システム（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ、ＣＩＦＳ）等を含む。本発明の当該実施形態では、ソースＮＡＳをバックアップすることが、ファイル・システムを当該ＮＡＳにバックアップすることであってもよい。ＮＡＳのシナリオでは、ＤＣＬ技術を用いることによって修正されたデータ・ブロックが決定されることは特に、ＮＡＳヘッダが、データ書込み要求で運搬されるデータ・ブロックのアドレスを解析することによって決定された修正されたデータ・ブロックのアドレスを記録すること、即ち、運搬されるファイル識別子、オフセット（Ｏｆｆｓｅｔ）、および長さを記録することである。図６に示すフィールド６０１は、ファイル識別子、オフセット（Ｏｆｆｓｅｔ）、および長さを運搬する。
【００６６】
図１２に示すように、本発明の１実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のソース・デバイス１０１の役割を果たすように構成され、当該記憶システムはさらに、ソース・デバイス１０１のバックアップ側デバイス１０２を備える。図１に示す記憶システムを参照することができる。ｎ番目のスナップショットＳｎのデータは、記憶装置１０１とバックアップ側デバイス１０２の両方に格納され、ｎは整数である。記憶装置１０１は、インタフェース１２０１およびプロセッサ１２０２を備え、インタフェース１２０１とプロセッサ１２０２はバスを用いることによって互いと通信する。プロセッサ１２０２は、ｎ番目のスナップショットＳｎの後に記憶装置１０１に書き込まれた第１のデータ・ブロックを決定し、第１のデータ・ブロックの論理ブロック・アドレスに従って、ｎ番目のスナップショットＳｎに記録された第２のデータ・ブロックを決定し、第１のデータ・ブロックおよび第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得し、第３のデータ・ブロックを圧縮して第４のデータ・ブロックを取得するように構成される。第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックであり、当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作である。インタフェース１２０１は、バックアップ側デバイス１０２に、第４のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、およびｎ番目のスナップショットＳｎのバージョン番号を運搬するデータ・パケットを送信するように構成される。任意選択で、プロセッサ１２０２は特に、ｎ番目のスナップショットＳｎの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って第１のデータ・ブロックを決定するように構成される。任意選択で、プロセッサ１２０２は特に、ｘ番目のスナップショットＳｘ操作を実施し、スナップショットＳｎをスナップショットＳｘと比較し、第１のデータ・ブロックを決定するように構成され、ｎおよびｘは整数であり、ｎ＜ｘである。
【００６７】
図１２に示すように、本発明の１実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス１０２の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス１０２のソース・デバイス１０１を備える。図１に示す記憶システムを参照することができる。ｎ番目のスナップショットＳｎのデータは、記憶装置１０２とソース・デバイス１０１の両方に格納され、ｎは整数である。記憶装置１０２は、インタフェース１２０１およびプロセッサ１２０２を備える。インタフェース１２０１とプロセッサ１２０２はバスを用いることによって互いと通信する。インタフェース１２０１は、ソース・デバイス１０１により送信されたデータ・パケットを受信し解析して、第４のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、およびｎ番目のスナップショットＳｎのバージョン番号を取得するように構成される。プロセッサ１２０２は、第１のデータ・ブロックの論理ブロック・アドレスおよびｎ番目のスナップショットＳｎのバージョン番号に従って、スナップショットＳｎに記録された第２のデータ・ブロックを決定し、第４のデータ・ブロックを解凍して第３のデータ・ブロックを取得し、第３のデータ・ブロックおよび第２のデータ・ブロックに論理演算を実施して、第１のデータ・ブロックを取得し、第１のデータ・ブロックを第１のデータ・ブロックの論理ブロック・アドレスに書き込むように構成される。第１のデータ・ブロックは、ソース・デバイスによりｎ番目のスナップショットＳｎの後に書き込まれたデータ・ブロックであり、第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックであり、当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作である。
【００６８】
図１２に示すように、本発明の１実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス１０２の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス１０２のソース・デバイス１０１を備える。図９に示す記憶システムを参照することができる。ｎ番目のスナップショットＳｎのデータは、記憶装置１０２とソース・デバイス１０１の両方に格納され、ｎは整数である。記憶装置１０２は、インタフェース１２０１およびプロセッサ１２０２を備える。インタフェース１２０１は、ソース・デバイス１０１により送信されたデータ復元要求を受信し解析して、スナップショットＳｎのバージョン番号を取得するように構成される。プロセッサ１２０２は、スナップショットＳｎのバージョン番号およびスナップショットＳｘのバージョン番号に従って、スナップショットＳｘに記録された第１のデータ・ブロックを決定し、第１のデータ・ブロックの論理ブロック・アドレスおよびスナップショットＳｎのバージョン番号に従って、スナップショットＳｎに記録され当該論理ブロック・アドレスに格納された第２のデータ・ブロックを決定し、第１のデータ・ブロックおよび第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得し、第３のデータ・ブロックを圧縮して第４のデータ・ブロックを取得するように構成される。第１のデータ・ブロックは、記憶装置１０２によりバックアップされたスナップショットＳｘに記録されソース・デバイス１０１によりｎ番目のスナップショットＳｎの後に書き込まれたデータ・ブロックであり、第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックであり、当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作である。インタフェース１２０１はさらに、ソース・デバイス１０１に、第４のデータ・ブロックおよび第１のデータ・ブロックの論理ブロック・アドレスを運搬するデータ・パケットを送信するように構成される。
【００６９】
図１２に示すように、本発明の１実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のソース・デバイス１０１の役割を果たすように構成され、当該記憶システムはさらに、ソース・デバイス１０１のバックアップ側デバイス１０２を備える。図９に示す記憶システムを参照することができる。ｎ番目のスナップショットＳｎのデータは、記憶装置１０１とバックアップ側デバイス１０２の両方に格納され、ｎは整数である。記憶装置１０１は、インタフェース１２０１とプロセッサ１２０２を備え、インタフェース１２０１とプロセッサ１２０２はバスを用いることによって互いと通信する。インタフェース１２０１は、データ復元要求をバックアップ側デバイス１０２に送信し、当該データ復元要求に従ってバックアップ側デバイスにより送信されたデータ・パケットを受信し解析して、第４のデータ・ブロックおよび第１のデータ・ブロックの論理ブロック・アドレスを取得するように構成される。当該データ復元要求はスナップショットＳｎのバージョン番号を運搬し、第１のデータ・ブロックは、バックアップ側デバイス１０２によりバックアップされたスナップショットＳｘに記録され記憶装置１０１によりｎ番目のスナップショットＳｎの後に当該論理ブロック・アドレスに書き込まれたデータ・ブロックである。プロセッサ１２０２は、第１のデータ・ブロックの論理ブロック・アドレスに従って、ソース・デバイスに格納されたスナップショットＳｎに記録された第２のデータ・ブロックを決定し、第４のデータ・ブロックを解凍して第３のデータ・ブロックを取得し、第３のデータ・ブロックおよび第２のデータ・ブロックに論理演算を実施して第１のデータ・ブロックを取得し、第１のデータ・ブロックを第１のデータ・ブロックの論理ブロック・アドレスに書き込むように構成される。第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックであり、当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作である。
【００７０】
図１２に示すように、本発明の１実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のソース・デバイス１０１の役割を果たし、当該記憶システムはさらに、ソース・デバイス１０１のバックアップ側デバイス１０２を備える。図１に示す記憶システムを参照することができる。ｎ番目のスナップショットＳｎのデータは、ソース・デバイス１０１とバックアップ側デバイス１０２の両方に格納され、ｎは整数である。記憶装置１０１は、インタフェース１２０１とプロセッサ１２０２を備え、インタフェース１２０１とプロセッサ１２０２はバスを用いることによって互いと通信する。プロセッサ１２０２は、ｎ番目のスナップショットＳｎの後にソース・デバイスに書き込まれた第１のデータ・ブロックを決定し、第１のデータ・ブロックの論理ブロック・アドレスに従って、ｎ番目のスナップショットＳｎに記録された第２のデータ・ブロックを決定し、第１のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、当該シフト量に従って循環シフトを第１のデータ・ブロックに実施して第３のデータ・ブロックを取得し、第３のデータ・ブロックおよび第２のデータ・ブロックに論理演算を実施して第４のデータ・ブロックを取得し、第４のデータ・ブロックを圧縮して第５のデータ・ブロックを取得するように構成される。第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックであり、当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作である。インタフェース１２０１は、バックアップ側デバイス１０２に、第５のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、シフト情報、およびｎ番目のスナップショットＳｎのバージョン番号を運搬するデータ・パケットを送信するように構成され、当該シフト情報は循環シフト方向とシフト量を含む。任意選択で、以下の計算規則が記憶装置１０１に対して構成される。即ち、Ｎ個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第１のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置であり、（ｉ＋１）番目のウィンドウの開始位置はｉ番目のウィンドウの開始位置から固定長だけ離れており、Ｎは整数であり２より小さくなく、ｉは整数であり、ｉ番目のウィンドウは１番目乃至Ｎ番目のウィンドウのうち何れかのウィンドウを示す。プロセッサ１２０２は特に、当該計算規則に従って、各ウィンドウ内の、第１のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第２のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第１のＭ個のハッシュ値を第１のデータ・ブロックのハッシュ値から選択し、第１のＭ個のハッシュ値を第２のデータ・ブロックのハッシュ値から選択し、第１のデータ・ブロックの第１のＭ個のハッシュ値および同一のハッシュ値に対する第２のデータ・ブロックの第１のＭ個のハッシュ値を検索し、同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異がシフト量であると判定するように構成され、Ｍは正の整数でありＮより大きくない。任意選択で、（ｉ＋１）番目のウィンドウの開始位置がｉ番目のウィンドウの開始位置から離れる固定長は１ビットまたは複数ビットである。任意選択で、当該ハッシュ値が設定されバックアップ側デバイスがそれに従って選択を実施する順序が、特に昇順または降順であってもよい。任意選択で、同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第１のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第２のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または、第１のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第２のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。任意選択で、プロセッサ１２０２は特に、ｎ番目のスナップショットＳｎの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って第１のデータ・ブロックを決定するように構成される。任意選択で、プロセッサ１２０２は特に、ｘ番目のスナップショットＳｘ操作をソース・デバイス１０１に実施し、スナップショットＳｎをスナップショットＳｘと比較し、第１のデータ・ブロックを決定するように構成され、ｎおよびｘは整数であり、ｎ＜ｘである。
【００７１】
図１２に示すように、本発明の１実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス１０２の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス１０２のソース・デバイス１０１を備える。図１に示す記憶システムを参照することができる。ｎ番目のスナップショットＳｎのデータは、ソース・デバイス１０１とバックアップ側デバイス１０２の両方に格納され、ｎは整数である。記憶装置１０２は、インタフェース１２０１とプロセッサ１２０２を備え、インタフェース１２０１とプロセッサ１２０２はバスを用いることによって互いと通信する。インタフェース１２０１は、ソース・デバイス１０１により送信されたデータ・パケットを受信し解析して、第５のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、シフト情報、およびｎ番目のスナップショットＳｎのバージョン番号を取得するように構成される。プロセッサ１２０２は、第１のデータ・ブロックの論理ブロック・アドレスおよびｎ番目のスナップショットＳｎのバージョン番号に従って、スナップショットＳｎに記録された第２のデータ・ブロックを決定し、第５のデータ・ブロックを解凍して第４のデータ・ブロックを取得し、第４のデータ・ブロックおよび第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得し、当該シフト情報に従って逆循環シフトを第３のデータ・ブロックに実施して第１のデータ・ブロックを取得し、第１のデータ・ブロックを第１のデータ・ブロックの論理ブロック・アドレスに書き込むように構成される。第１のデータ・ブロックは、ソース・デバイスによりｎ番目のスナップショットＳｎの後に書き込まれたデータ・ブロックであり、第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックであり、当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作であり、当該シフト情報は、循環シフトを第１のデータ・ブロックに実施して第３のデータ・ブロックを取得するためにソース・デバイス１０１により必要とされるシフト量および循環シフト方向を含む。
【００７２】
図１２に示すように、本発明の１実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス１０２の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス１０２のソース・デバイス１０１を備える。図９に示す記憶システムを参照することができる。ｎ番目のスナップショットＳｎのデータはソース・デバイス１０１に格納され、ソース・デバイス内のｎ番目のスナップショットＳｎのデータおよびｘ番目のスナップショットＳｘのデータはバックアップ側デバイス１０２に格納され、ｎおよびｘは整数であり、ｎ＜ｘである。記憶装置１０２は、インタフェース１２０１とプロセッサ１２０２を備え、インタフェース１２０１とプロセッサ１２０２はバスを用いることによって互いと通信する。インタフェース１２０１は、ソース・デバイス１０１により送信されたデータ復元要求を受信するように構成される。当該データ復元要求はスナップショットＳｎのバージョン番号を運搬する。プロセッサ１２０２は、スナップショットＳｎのバージョン番号およびスナップショットＳｘのバージョン番号に従って、スナップショットＳｘに記録された第１のデータ・ブロックを決定し、第１のデータ・ブロックの論理ブロック・アドレスおよびスナップショットＳｎのバージョン番号に従って、スナップショットＳｎに記録され当該論理ブロック・アドレスに格納された第２のデータ・ブロックを決定し、第１のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定し、当該シフト量に従って循環シフトを第１のデータ・ブロックに実施して第３のデータ・ブロックを取得し、第３のデータ・ブロックおよび第２のデータ・ブロックに論理演算を実施して第４のデータ・ブロックを取得し、第４のデータ・ブロックを圧縮して第５のデータ・ブロックを取得するように構成される。第１のデータ・ブロックはバックアップ側デバイス１０２によりバックアップされたスナップショットＳｘに記録されソース・デバイス１０１によりｎ番目のスナップショットＳｎの後に書き込まれたデータ・ブロックであり、当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作である。当該インタフェースは、ソース・デバイス１０１に、第５のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、およびシフト情報を運搬するデータ・パケットを送信するように構成される。当該シフト情報は循環シフト方向とシフト量を含む。任意選択で、以下の計算規則が記憶装置１０１に対して構成される。即ち、Ｎ個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第１のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置であり、（ｉ＋１）番目のウィンドウの開始位置はｉ番目のウィンドウの開始位置から固定長だけ離れており、Ｎは整数であり２より小さくなく、ｉは整数であり、ｉ番目のウィンドウは１番目乃至Ｎ番目のウィンドウのうち何れかのウィンドウを示す。プロセッサ１２０２は特に、当該計算規則に従って、各ウィンドウ内の、第１のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第２のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第１のＭ個のハッシュ値を第１のデータ・ブロックのハッシュ値から選択し、第１のＭ個のハッシュ値を第２のデータ・ブロックのハッシュ値から選択し、第１のデータ・ブロックの第１のＭ個のハッシュ値および同一のハッシュ値に対する第２のデータ・ブロックの第１のＭ個のハッシュ値を検索し、同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異がシフト量であると判定するように構成され、Ｍは正の整数でありＮより大きくない。任意選択で、（ｉ＋１）番目のウィンドウの開始位置がｉ番目のウィンドウの開始位置から離れる固定長は１ビットまたは複数ビットである。任意選択で、当該ハッシュ値が設定されバックアップ側デバイスがそれに従って選択を実施する順序が、特に昇順または降順であってもよい。任意選択で、同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第１のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第２のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または第１のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第２のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。
【００７３】
図１２に示すように、本発明の１実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のソース・デバイス１０１の役割を果たし、当該記憶システムはさらに、ソース・デバイス１０１のバックアップ側デバイス１０２を備える。図９に示す記憶システムを参照することができる。ｎ番目のスナップショットＳｎのデータは、記憶装置１０１に格納され、記憶装置１０１内のｎ番目のスナップショットＳｎのデータおよびｘ番目のスナップショットＳｘのデータはバックアップ側デバイス１０２に格納され、ｎおよびｘは整数であり、ｎ＜ｘである。ソース・デバイス１０１は、インタフェース１２０１とプロセッサ１２０２を備え、インタフェース１２０１とプロセッサ１２０２はバスを用いることによって互いと通信する。インタフェース１２０１は、データ復元要求をバックアップ側デバイス１０２に送信し、当該データ復元要求に従ってバックアップ側デバイス１０２により送信されたデータ・パケットを受信し解析して、第５のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、およびシフト情報を取得するように構成される。当該データ復元要求はスナップショットＳｎのバージョン番号を運搬し、第１のデータ・ブロックは、バックアップ側デバイス１０２によりバックアップされたスナップショットＳｘに記録され記憶装置１０１によりｎ番目のスナップショットＳｎの後に当該論理ブロック・アドレスに書き込まれたデータ・ブロックである。プロセッサ１２０２は、第１のデータ・ブロックの論理ブロック・アドレスに従って、記憶装置１０１に格納されたスナップショットＳｎに記録された第２のデータ・ブロックを決定し、第５のデータ・ブロックを解凍して第４のデータ・ブロックを取得し、第４のデータ・ブロックおよび第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得し、当該シフト情報に従って逆循環シフトを第３のデータ・ブロックに実施して第１のデータ・ブロックを取得し、第１のデータ・ブロックを第１のデータ・ブロックの論理ブロック・アドレスに書き込むように構成される。第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックであり、当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作であり、当該シフト情報は、循環シフトを第１のデータ・ブロックに実施して第３のデータ・ブロックを取得するためにバックアップ側デバイス１０２により必要とされるシフト量および循環シフト方向を含む。
【００７４】
本発明の上述の実施形態における記憶装置内のインタフェース１２０１およびプロセッサ１２０２が物理構造であってもよく、または、論理的に分割されてもよい。具体的な実装では、インタフェース１２０１の幾つかの機能をまた、プロセッサ１２０２により実装してもよく、または、当該プロセッサに統合してもよい（即ち、当該インタフェースは当該プロセッサの一部である）。当該記憶装置の具体的な機能については、上述の実施形態におけるソース・デバイス１０１とバックアップ側デバイス１０２の機能を参照することができる。詳細はここでは説明しない。
【００７５】
図１３に示すように、本発明の１実施形態では、記憶システム内のソース・デバイス１０１の役割を果たすように構成された記憶装置を提供する。当該記憶システムはさらに、ソース・デバイス１０１のバックアップ側デバイス１０２を備える。図１に示す記憶システムを参照することができる。ｎ番目のスナップショットＳｎのデータは、記憶装置１０１とバックアップ側デバイス１０２の両方に格納され、ｎは整数である。記憶装置１０１は、決定ユニット１３０１、論理演算ユニット１３０２、圧縮ユニット１３０３、および送信ユニット１３０４を備える。決定ユニット１３０１は、ｎ番目のスナップショットＳｎの後に記憶装置１０１に書き込まれた第１のデータ・ブロックを決定し、第１のデータ・ブロックの論理ブロック・アドレスに従って、ｎ番目のスナップショットＳｎに記録された第２のデータ・ブロックを決定するように構成され、第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックである。論理演算ユニット１３０２は、第１のデータ・ブロックおよび第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得するように構成され、当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作である。圧縮ユニット１３０３は、第３のデータ・ブロックを圧縮して第４のデータ・ブロックを取得するように構成される。送信ユニット１３０４は、バックアップ側デバイス１０２に、第４のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、およびｎ番目のスナップショットＳｎのバージョン番号を運搬するデータ・パケットを送信するように構成される。任意選択で、決定ユニット１３０１は特に、ｎ番目のスナップショットＳｎの後の、データ変更ログに記録されたデータ書込み要求で運搬される論理ブロック・アドレスに従って第１のデータ・ブロックを決定するように構成される。任意選択で、決定ユニット１３０１は特に、ｘ番目のスナップショットＳｘ操作を実施し、スナップショットＳｎをスナップショットＳｘと比較し、第１のデータ・ブロックを決定するように構成され、ｎおよびｘは整数であり、ｎ＜ｘである。
【００７６】
図１４に示すように、本発明の１実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス１０２の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス１０２のソース・デバイス１０１を備える。図１に示す記憶システムを参照することができる。ｎ番目のスナップショットＳｎのデータは、記憶装置１０２とソース・デバイス１０１の両方に格納され、ｎは整数である。記憶装置１０２は、受信解析ユニット１４０１、決定ユニット１４０２、解凍ユニット１４０３、論理演算ユニット１４０４、および書込みユニット１４０５を備える。受信解析ユニット１４０１は、ソース・デバイス１０１により送信されたデータ・パケットを受信し解析して、第４のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、およびｎ番目のスナップショットＳｎのバージョン番号を取得するように構成される。決定ユニット１４０２は、第１のデータ・ブロックの論理ブロック・アドレスおよびｎ番目のスナップショットＳｎのバージョン番号に従って、スナップショットＳｎに記録された第２のデータ・ブロックを決定するように構成され、第１のデータ・ブロックはソース・デバイス１０１によりｎ番目のスナップショットＳｎの後に書き込まれたデータ・ブロックであり、第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックである。解凍ユニット１４０３は、第４のデータ・ブロックを解凍して第３のデータ・ブロックを取得するように構成される。論理演算ユニット１４０４は、第３のデータ・ブロックおよび第２のデータ・ブロックに論理演算を実施して、第１のデータ・ブロックを取得するように構成され、当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作である。書込みユニット１４０５は、第１のデータ・ブロックを第１のデータ・ブロックの論理ブロック・アドレスに書き込むように構成される。
【００７７】
図１５に示すように、本発明の１実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス１０２の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス１０２のソース・デバイス１０１を備える。図９に示す記憶システムを参照することができる。ｎ番目のスナップショットＳｎのデータは、記憶装置１０２とソース・デバイス１０１の両方に格納され、ｎは整数である。記憶装置１０２は、受信解析ユニット１５０１、決定ユニット１５０２、論理演算ユニット１５０３、圧縮ユニット１５０４、および送信ユニット１５０５を備える。受信解析ユニット１５０１は、ソース・デバイス１０１により送信されたデータ復元要求を受信し解析して、スナップショットＳｎのバージョン番号を取得するように構成される。決定ユニット１５０２は、スナップショットＳｎのバージョン番号およびスナップショットＳｘのバージョン番号に従って、スナップショットＳｘに記録された第１のデータ・ブロックを決定し、第１のデータ・ブロックの論理ブロック・アドレスおよびスナップショットＳｎのバージョン番号に従って、スナップショットＳｎに記録され当該論理ブロック・アドレスに格納された第２のデータ・ブロックを決定するように構成され、第１のデータ・ブロックは、記憶装置１０２によりバックアップされたスナップショットＳｘに記録されソース・デバイス１０１によりｎ番目のスナップショットＳｎの後に書き込まれたデータ・ブロックであり、第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックである。論理演算ユニット１５０３は、第１のデータ・ブロックおよび第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得するように構成され、当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作である。圧縮ユニット１５０４は、第３のデータ・ブロックを圧縮して第４のデータ・ブロックを取得するように構成される。送信ユニット１５０５は、ソース・デバイス１０１に、第４のデータ・ブロックおよび第１のデータ・ブロックの論理ブロック・アドレスを運搬するデータ・パケットを送信するように構成される。
【００７８】
図１６に示すように、本発明の１実施形態では記憶装置を提供する。当該記憶装置は記憶システム内のソース・デバイス１０１の役割を果たすように構成され、当該記憶システムはさらに、ソース・デバイス１０１のバックアップ側デバイス１０２を備える。図９に示す記憶システムを参照することができる。ｎ番目のスナップショットＳｎのデータは、記憶装置１０１とバックアップ側デバイス１０２の両方に格納され、ｎは整数である。当該記憶装置は、送信ユニット１６０１、受信解析ユニット１６０２、決定ユニット１６０３、解凍ユニット１６０４、論理演算ユニット１６０５、および書込みユニット１６０６を備える。送信ユニット１６０１は、データ復元要求をバックアップ側デバイス１０２に送信するように構成され、当該データ復元要求はスナップショットＳｎのバージョン番号を運搬する。受信解析ユニット１６０２は、当該データ復元要求に従ってバックアップ側デバイス１０２により送信されたデータ・パケットを受信し解析して、第４のデータ・ブロックおよび第１のデータ・ブロックの論理ブロック・アドレスを取得するように構成され、第１のデータ・ブロックは、バックアップ側デバイス１０２によりバックアップされたスナップショットＳｘに記録され記憶装置１０１によりｎ番目のスナップショットＳｎの後に当該論理ブロック・アドレスに書き込まれたデータ・ブロックである。決定ユニット１６０３は、第１のデータ・ブロックの論理ブロック・アドレスに従って、記憶装置１０１に格納されたスナップショットＳｎに記録された第２のデータ・ブロックを決定するように構成され、第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックである。解凍ユニット１６０４は、第４のデータ・ブロックを解凍して第３のデータ・ブロックを取得するように構成される。論理演算ユニット１６０５は、第３のデータ・ブロックおよび第２のデータ・ブロックに論理演算を実施して第１のデータ・ブロックを取得するように構成され、当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作である。書込みユニット１６０６は、第１のデータ・ブロックを第１のデータ・ブロックの論理ブロック・アドレスに書き込むように構成される。
【００７９】
図１３に示すように、本発明の別の実施形態では、記憶システム内のソース・デバイス１０１の役割を果たすように構成された記憶装置を提供する。当該記憶システムはさらに、ソース・デバイス１０１のバックアップ側デバイス１０２を備える。図１に示す記憶システムを参照することができる。ｎ番目のスナップショットＳｎのデータは、記憶装置１０１とバックアップ側デバイス１０２の両方に格納され、ｎは整数である。記憶装置１０１はさらにシフト・ユニット１３０５を備える。決定ユニット１３０１は、ｎ番目のスナップショットＳｎの後に記憶装置１０１に書き込まれた第１のデータ・ブロックを決定し、第１のデータ・ブロックの論理ブロック・アドレスに従って、ｎ番目のスナップショットＳｎに記録された第２のデータ・ブロックを決定し、第１のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するように構成され、第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックである。シフト・ユニット１３０５は、当該シフト量に従って循環シフトを第１のデータ・ブロックに実施して第３のデータ・ブロックを取得するように構成される。論理演算ユニット１３０２は、第３のデータ・ブロックおよび第２のデータ・ブロックに論理演算を実施して第４のデータ・ブロックを取得するように構成され、当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作である。圧縮ユニット１３０３は、第４のデータ・ブロックを圧縮して第５のデータ・ブロックを取得するように構成される。送信ユニット１３０４は、バックアップ側デバイス１０２に、第５のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、シフト情報、およびｎ番目のスナップショットＳｎのバージョン番号を運搬するデータ・パケットを送信するように構成され、当該シフト情報は循環シフト方向とシフト量を含む。任意選択で、以下の計算規則が記憶装置１０１に対して構成される。即ち、Ｎ個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第１のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置であり、（ｉ＋１）番目のウィンドウの開始位置はｉ番目のウィンドウの開始位置から固定長だけ離れており、Ｎは整数であり２より小さくなく、ｉは整数であり、ｉ番目のウィンドウは１番目乃至Ｎ番目のウィンドウのうち何れかのウィンドウを示す。決定ユニット１３０１は特に、当該計算規則に従って、各ウィンドウ内の、第１のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第２のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第１のＭ個のハッシュ値を第１のデータ・ブロックのハッシュ値から選択し、第１のＭ個のハッシュ値を第２のデータ・ブロックのハッシュ値から選択し、第１のデータ・ブロックの第１のＭ個のハッシュ値および同一のハッシュ値に対する第２のデータ・ブロックの第１のＭ個のハッシュ値を検索し、同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異がシフト量であると判定するように構成され、Ｍは正の整数でありＮより大きくない。任意選択で、（ｉ＋１）番目のウィンドウの開始位置がｉ番目のウィンドウの開始位置から離れる固定長は１ビットまたは複数ビットである。任意選択で、当該ハッシュ値が設定されバックアップ側デバイスがそれに従って選択を実施する順序が、特に昇順または降順であってもよい。任意選択で、同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第１のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第２のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または第１のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第２のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。
【００８０】
図１４に示すように、本発明の別の実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス１０２の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス１０２のソース・デバイス１０１を備える。図１に示す記憶システムを参照することができる。ｎ番目のスナップショットＳｎのデータは、記憶装置１０２とソース・デバイス１０１の両方に格納され、ｎは整数である。記憶装置１０２はさらにシフト・ユニット１４０６を備える。受信解析ユニット１４０１は、ソース・デバイス１０１により送信されたデータ・パケットを受信し解析して、第５のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、シフト情報、およびｎ番目のスナップショットＳｎのバージョン番号を取得するように構成される。決定ユニット１４０２は、第１のデータ・ブロックの論理ブロック・アドレスおよびｎ番目のスナップショットＳｎのバージョン番号に従って、スナップショットＳｎに記録された第２のデータ・ブロックを決定するように構成される。第１のデータ・ブロックはソース・デバイス１０１によりｎ番目のスナップショットＳｎの後に書き込まれたデータ・ブロックであり、第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックである。解凍ユニット１４０３は、第５のデータ・ブロックを解凍して第４のデータ・ブロックを取得するように構成される。論理演算ユニット１４０４は、第４のデータ・ブロックおよび第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得するように構成される。当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作である。シフト・ユニット１４０６は、当該シフト情報に従って逆循環シフトを第３のデータ・ブロックに実施して第１のデータ・ブロックを取得するように構成される。当該シフト情報は、循環シフトを第１のデータ・ブロックに実施して第３のデータ・ブロックを取得するためにソース・デバイス１０１により必要とされるシフト量および循環シフト方向を含む。書込みユニット１４０５は、第１のデータ・ブロックを第１のデータ・ブロックの論理ブロック・アドレスに書き込むように構成される。
【００８１】
図１５に示すように、本発明の別の実施形態では記憶装置を提供する。当該記憶装置は、記憶システム内のバックアップ側デバイス１０２の役割を果たすように構成され、当該記憶システムはさらに、バックアップ側デバイス１０２のソース・デバイス１０１を備える。図９に示す記憶システムを参照することができる。ｎ番目のスナップショットＳｎのデータは、記憶装置１０２とソース・デバイス１０１の両方に格納され、ｎは整数である。記憶装置１０２はさらにシフト・ユニット１５０６を備える。受信ユニット１５０１は、ソース・デバイス１０１により送信されたデータ復元要求を受信するように構成される。当該データ復元要求はスナップショットＳｎのバージョン番号を運搬する。決定ユニット１５０２は、スナップショットＳｎのバージョン番号およびスナップショットＳｘのバージョン番号に従って、スナップショットＳｘに記録された第１のデータ・ブロックを決定し、第１のデータ・ブロックの論理ブロック・アドレスおよびスナップショットＳｎのバージョン番号に従って、スナップショットＳｎに記録され当該論理ブロック・アドレスに格納された第２のデータ・ブロックを決定し、第１のデータ・ブロックに実施される必要がある循環シフトのシフト量を決定するように構成される。第１のデータ・ブロックは、記憶装置１０２によりバックアップされたスナップショットＳｘに記録されソース・デバイス１０１によりｎ番目のスナップショットＳｎの後に書き込まれたデータ・ブロックである。シフト・ユニット１５０６は、当該シフト量に従って循環シフトを第１のデータ・ブロックに実施して第３のデータ・ブロックを取得するように構成される。論理演算ユニット１５０３は、第３のデータ・ブロックおよび第２のデータ・ブロックに論理演算を実施して第４のデータ・ブロックを取得するように構成される。圧縮ユニット１５０４は、第４のデータ・ブロックを圧縮して第５のデータ・ブロックを取得するように構成され、当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作である。送信ユニット１５０５は、ソース・デバイス１０１に、第５のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、およびシフト情報を運搬するデータ・パケットを送信するように構成され、当該シフト情報は循環シフト方向とシフト量を含む。任意選択で、以下の計算規則が記憶装置１０２に対して構成される。即ち、Ｎ個のウィンドウが設定され、各ウィンドウ内の、データ・ブロックの少なくとも部分的なデータにハッシュ計算が実施され、各ウィンドウのサイズは同じであり、第１のウィンドウの開始位置は当該データ・ブロックの開始位置であり、最後のウィンドウの終了位置は当該データ・ブロックの終了位置であり、（ｉ＋１）番目のウィンドウの開始位置はｉ番目のウィンドウの開始位置から固定長だけ離れており、Ｎは整数であり２より小さくなく、ｉは整数であり、ｉ番目のウィンドウは１番目乃至Ｎ番目のウィンドウのうち何れかのウィンドウを示す。決定ユニット１５０２は特に、当該計算規則に従って、各ウィンドウ内の、第１のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、当該計算規則に従って、各ウィンドウ内の、第２のデータ・ブロックの少なくとも部分的なデータにハッシュ計算を実施し、ハッシュ値が設定される順序に従って、第１のＭ個のハッシュ値を第１のデータ・ブロックのハッシュ値から選択し、第１のＭ個のハッシュ値を第２のデータ・ブロックのハッシュ値から選択し、第１のデータ・ブロックの第１のＭ個のハッシュ値および同一のハッシュ値に対する第２のデータ・ブロックの第１のＭ個のハッシュ値を検索し、同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異がシフト量であると判定するように構成され、Ｍは正の整数でありＮより大きくない。任意選択で、（ｉ＋１）番目のウィンドウの開始位置がｉ番目のウィンドウの開始位置から離れる固定長は１ビットまたは複数ビットである。任意選択で、当該ハッシュ値が設定されバックアップ側デバイスがそれに従って選択を実施する順序が、特に昇順または降順であってもよい。任意選択で、同一のハッシュ値に対応する２つのウィンドウのオフセットの間の差異がシフト量であると判定されたと同時に、循環シフト方向をさらに決定してもよい。特に、第１のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第２のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが正の数であるとき、左への循環シフトが実施されるか、または第１のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットから第２のデータ・ブロック内の同一のハッシュ値に対応するウィンドウのオフセットを引いたものが負の数であるとき、右への循環シフトが実施される。
【００８２】
図１６に示すように、本発明の別の実施形態では記憶装置を提供する。当該記憶装置は記憶システム内のソース・デバイス１０１の役割を果たすように構成され、当該記憶システムはさらに、ソース・デバイス１０１のバックアップ側デバイス１０２を備える。図９に示す記憶システムを参照することができる。ｎ番目のスナップショットＳｎのデータは、記憶装置１０１とバックアップ側デバイス１０２の両方に格納され、ｎは整数である。記憶装置１０１はさらにシフト・ユニット１６０７を備える。送信ユニット１６０１は、データ復元要求をバックアップ側デバイスに送信するように構成され、当該データ復元要求はスナップショットＳｎのバージョン番号を運搬する。受信解析ユニット１６０２は、当該データ復元要求に従ってバックアップ側デバイス１０２により送信されたデータ・パケットを受信し解析して、第５のデータ・ブロック、第１のデータ・ブロックの論理ブロック・アドレス、およびシフト情報を取得するように構成され、第１のデータ・ブロックは、バックアップ側デバイス１０２によりバックアップされたスナップショットＳｘに記録され記憶装置１０１によりｎ番目のスナップショットＳｎの後に当該論理ブロック・アドレスに書き込まれたデータ・ブロックである。決定ユニット１６０３は、第１のデータ・ブロックの論理ブロック・アドレスに従って、記憶装置１０１に格納されたスナップショットＳｎに記録された第２のデータ・ブロックを決定するように構成され、第１のデータ・ブロックは第２のデータ・ブロックの修正されたブロックである。解凍ユニット１６０４は、第５のデータ・ブロックを解凍して第４のデータ・ブロックを取得するように構成される。論理演算ユニット１６０５は、第４のデータ・ブロックおよび第２のデータ・ブロックに論理演算を実施して第３のデータ・ブロックを取得するように構成され、当該論理演算は排他ＯＲ操作または排他ＮＯＲ操作である。シフト・ユニット１６０７は、当該シフト情報に従って逆循環シフトを第３のデータ・ブロックに実施して第１のデータ・ブロックを取得するように構成される。当該シフト情報は、循環シフトを第１のデータ・ブロックに実施して第３のデータ・ブロックを取得するためにバックアップ側デバイス１０２により必要とされるシフト量および循環シフト方向を含む。書込みユニット１６０６は、第１のデータ・ブロックを第１のデータ・ブロックの論理ブロック・アドレスに書き込むように構成される。
【００８３】
本発明の実施形態の図１３乃至図１６に示す記憶装置に関して、図１３を１例として使用する。当該記憶装置は、決定ユニット１３０１、論理演算ユニット１３０２、圧縮ユニット１３０３、および送信ユニット１３０４を備える。実装方式は、上述のユニットが当該記憶装置にインストールされ、上述のユニットを当該記憶装置のメモリにロードしてもよく、当該記憶装置の中央演算装置が当該メモリ内の命令を実行して、本発明に対応する実施形態における機能を実装するというものである。別の実装方式は、当該記憶装置に含まれるユニットを、ハードウェアを用いることによって実装してもよく、または、ソフトウェアおよびハードウェアの組合せを用いることによって実装してもよいというものである。上述のユニットは構造ユニットとも呼ばれる。
【００８４】
本発明の当該実施形態では、記憶装置が記憶システム内のソース・デバイスまたはバックアップ側デバイスの役割を果たすとは、当該記憶装置が当該記憶システム内のソース・デバイスまたはバックアップ側デバイスの機能を実施してもよく、ソース・デバイスまたは当該バックアップ側デバイスと同じ構造を有してもよいことをいう。換言すれば、当該記憶システム内のソース・デバイスまたはバックアップ側デバイスを記憶装置と称してもよい。
【００８５】
本発明の１実施形態ではさらに不揮発性コンピュータ可読記憶媒体およびコンピュータ・プログラム製品を提供する。当該不揮発性コンピュータ可読記憶媒体と当該コンピュータ・プログラム製品に含まれるコンピュータ命令が図１、図９、図１０、図１１、および図１２に示す装置のメモリにロードされると、ＣＰＵは当該メモリにロードされたコンピュータ命令を実行して、本発明の当該実施形態における対応する機能を実装する。
【００８６】
本発明で提供する幾つかの実施形態では、開示した装置および方法を他の方式で実装してもよいことは理解されるべきである。例えば、説明した装置の実施形態におけるユニット分割は論理的な機能分割にすぎず、実際の実装では他の分割であってもよい。例えば、複数のユニットまたはコンポーネントを組み合わせるかもしくは別のシステムに統合してもよく、または、幾つかの特徴を無視するかまたは実施しなくてもよい。さらに、図示または説明した相互結合または直接結合または通信接続を、幾つかのインタフェースを用いることによって実装してもよい。当該装置またはユニットの間の間接結合または通信接続を電気的、機械的、または他の形態で実装してもよい。
【００８７】
別々の部分として説明したユニットが、物理的に別々であってもなくてもよく、ユニットとして示した部分が物理ユニットであってもなくてもよく、１つの位置に配置されてもよく、または、複数のネットワーク・ユニットに分散されてもよい。当該ユニットの一部または全部を、諸実施形態の解決策の目的を実現するための実際のニーズに従って選択してもよい。
【００８８】
さらに、本発明の当該実施形態における機能的ユニットを１つの処理ユニットに統合してもよく、または、当該ユニットの各々が物理的に単体で存在してもよく、または、２つまたは複数のユニットが１つのユニットに統合される。
【符号の説明】
【００８９】
１０１  ソース・デバイス
１０２  バックエンド・デバイス
１２０１  インタフェース
１２０２  プロセッサ
１３０１  決定ユニット
１３０２  論理動作ユニット
１３０３  圧縮ユニット
１３０４  送信ユニット
１４０１  受信解析ユニット
１４０２  決定ユニット
１４０３  解凍ユニット
１４０４  論理動作ユニット
１４０５  書込みユニット
１５０１  受信解析ユニット
１５０２  決定ユニット
１５０３  論理動作ユニット
１５０４  圧縮ユニット
１５０５  送信ユニット
１６０１  送信ユニット
１６０２  受信解析ユニット
１６０３  決定ユニット
１６０４  解凍ユニット
１６０５  論理動作ユニット
１６０６  書込みユニット
【図１】
0006308446.tif 000002
【図２ａ】
0006308446.tif 000003
【図２ｂ】
0006308446.tif 000004
【図３】
0006308446.tif 000005
【図４】
0006308446.tif 000006
【図５】
0006308446.tif 000007
【図６】
0006308446.tif 000008
【図７】
0006308446.tif 000009
【図８】
0006308446.tif 000010
【図９】
0006308446.tif 000011
【図１０】
0006308446.tif 000012
【図１１】
0006308446.tif 000013
【図１２】
0006308446.tif 000014
【図１３】
0006308446.tif 000015
【図１４】
0006308446.tif 000016
【図１５】
0006308446.tif 000017
【図１６】
0006308446.tif 000018