(57)【要約】【課題】  記憶装置間で移動されるトラックのエクステントへの書込み動作を管理するための方法、システム、及びコンピュータ・プログラム製品を提供する。【解決手段】        記憶装置間で移動されるトラックのエクステントへの書込み動作を管理するためのコンピュータ・プログラム製品、システム、及び方法を提供する。第２の記憶域から第１の記憶域へトラックのエクステントを移動させるように、動作が処理される。移動させるエクステントに関するエクステント・オブジェクトが存在するかどうかの判断がなされる。エクステント・オブジェクトは、エクステントが前回第１の記憶域から第２の記憶域へ以前に移動された場合に存在する。エクステント・オブジェクトは、各トラックに関して、エクステントが以前に第２の記憶域へ移動されたときの前回以来、トラックが第２の記憶域内で更新されたかどうかを示す書込みインジケータを含む。エクステント・オブジェクトが存在するとの判断に応じて、前回以来トラックが第２の記憶域内で更新されたことを示す書込みインジケータを有する、エクステント内のトラックの判断がなされる。判断されたトラックのデータが第２の記憶域から第１の記憶域内の未使用領域にコピーされる。各々の判断されたトラックに関して、エクステント・オブジェクト内の判断されたトラックに関するエントリが、トラックのデータがコピーされた未使用領域をそのトラックのアクティブ・アドレスとして示すように更新される。【選択図】      図１
2013533991.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶域及び第２の記憶域内のデータを管理する方法であって、
前記第２の記憶域から前記の第１の記憶域へトラックのエクステントを移動させる動作を処理するステップと、
前記移動させるエクステントに関するエクステント・オブジェクトが存在するかどうかを判断するステップであって、前記エクステント・オブジェクトは、前記エクステントが前回に前記第１の記憶域から前記第２の記憶域へ以前に移動された場合に存在し、前記エクステント・オブジェクトは、各々のトラックに関する、前記エクステントが以前に前記第２の記憶域に移動されたときの前回以来、前記トラックが前記第２の記憶域内で更新されたかどうかを示す書込みインジケータを含む、前記判断するステップと、
を含み、
前記エクステント・オブジェクトが存在するとの判断に応じて、
前記前回以来、前記トラックが前記第２の記憶域内で更新されたことを示す書込みインジケータ有する、前記エクステント内の前記トラックを判断するステップと、
前記判断されたトラックの前記データを、前記第２の記憶域から前記第１の記憶域内の未使用領域にコピーするステップと、
前記判断された各々のトラックに対して、前記エクステント・オブジェクト内の前記判断されたトラックに関する前記エントリを、前記トラックの前記データがコピーされた前記未使用領域を前記トラックのアクティブ・アドレスとして示すように更新するステップと
を実行する、ステップ
を含む、方法。
【請求項２】
前記エクステント・オブジェクトは、前記第１の記憶域内の前記トラックの前記データの前バージョンに関する情報を保持し、少なくとも１つの前バージョンを有する各トラックに対して、前記トラックに関する前記エントリは、前記トラックの前記前バージョンの前記データの前記第１の記憶域内の領域を示す、各前バージョンの前バージョン・アドレスを含み、
前記方法は、
前記判断されたトラックの各々に対して、前記第２の記憶域から前記データがコピーされた前記未使用領域を示すように前記アクティブ・アドレスを更新する前に、新たな前バージョン・アドレスを前記トラックの前記アクティブ・アドレスに設定するステップをさらに含む、
請求項１に記載の方法。
【請求項３】
ソリッド・ステート記憶装置を備えた前記第１の記憶域を準備するステップと、
前記ソリッド・ステート記憶装置よりも遅い入力／出力アクセス・プロファイルを有するタイプの記憶装置を備えた前記第２の記憶域を準備するステップと
をさらに含む、請求項１又は請求項２のいずれかに記載の方法。
【請求項４】
前記第２の記憶域は、前記エクステント内の前記トラックを隣接してストアし、前記方法は、前記第２の記憶域内の変更されたトラックを、前記第１の記憶域内の、前記エクステント内の未変更トラックに対して隣接しない領域にコピーするステップをさらに含む、前記請求項のいずれか１項に記載の方法。
【請求項５】
各々のエントリは、前記アクティブ・アドレス内で識別される前記トラックのデータから計算されたアクティブ・チェックサム値、並びに、前記第１の記憶域内に保持される前記トラックの少なくとも１つの前バージョンに関する、前記第１の記憶域内の前記トラックの前記前バージョンの前バージョン・アドレス、及び前記前バージョン・アドレス内で識別される前記トラックのデータから計算された前バージョン・チェックサム値を含み、
前記方法は、
前記第１の記憶域内に存在する前記エクステント内のターゲット・トラックへの書込みを受け取るステップと、
前記ターゲット・トラックに対する前記書込みから暫定チェックサムを計算するステップと、
前記暫定チェックサムが、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリ内の前記アクティブ・チェックサム又は少なくとも１つの前バージョン・チェックサムのうちの１つと整合するかどうかを判断するステップと、
前記暫定チェックサムと整合する、前記アクティブ・アドレス又は前記前バージョン・アドレス及び対応する前記アクティブ・チェックサム又は前記前バージョン・チェックサムを、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリの前記アクティブ・アドレス及びアクティブ・チェックサムのために用いるステップと、
前記暫定チェックサムが、前記アクティブ・チェックサム、又は前記少なくとも１つの前バージョン・チェックサムのいずれかのうちの、どの１つとも整合しないとの判断に応じて、前記ターゲット・トラックへの書込みを、前記第１の記憶域内の未使用領域に書込むステップと
をさらに含む、
前記請求項のいずれか１項に記載の方法。
【請求項６】
前記書込みを前記ターゲット・トラックへ前記書込むステップは、前記暫定チェックサムが、前記アクティブ・チェックサム又は前記少なくとも１つの前バージョン・チェックサムのうちの１つと整合するとの判断に応じて、前記第１の記憶域に書込まれない、請求項５に記載の方法。
【請求項７】
前記暫定チェックサムと整合する、前記アクティブ・アドレス又は前記前バージョン・アドレス及び前記対応するチェックサムを前記用いるステップは、
前記暫定チェックサムが前記アクティブ・チェックサム又は前記少なくとも１つの前バージョン・チェックサムのうちの１つと整合するとの判断に応じて、完了を前記書込みに返すステップを含み、
前記暫定チェックサムが前記少なくとも１つの前バージョン・チェックサムのうちの１つと整合するとの判断に応じて、
前記整合する前バージョン・チェックサムに関する前記前バージョン・アドレス及び前記前バージョン・チェックサムをバッファリングするステップと、
新たな前バージョン・アドレス及び新たな前バージョン・チェックサムを前記アクティブ・アドレス及び前記アクティブ・チェックサムの値に設定するステップと、
前記新たな前バージョン・アドレス及び前記新たな前バージョン・チェックサムを設定した後で、前記アクティブ・アドレス及び前記アクティブ・チェックサムを、それぞれ前記バッファリングされた前バージョン・アドレス及び前バージョン・チェックサムに設定するステップと
を実行する、ステップ
を含む、請求項５又は請求項６のいずれかに記載の方法。
【請求項８】
各々のエントリは、前記アクティブ・アドレス内で識別される前記トラック・データから計算されたアクティブ・チェックサム値、並びに、前記第１の記憶域内に保持される前記トラックの少なくとも１つの前バージョンに関する、前記第１の記憶域内の前記トラックの前記前バージョンの前バージョン・アドレス、及び前記前バージョン・アドレス内で識別される前記トラック・データから計算された前バージョン・チェックサムを含み、
前記方法は、
前記第２の記憶域内に存在する前記エクステント内のターゲット・トラックへの書込みを受け取るステップと、
前記ターゲット・トラックに対する前記書込みから暫定チェックサムを計算するステップと、
前記暫定チェックサムが、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリ内の前記アクティブ・チェックサム又は少なくとも１つの前バージョン・チェックサムのうちの１つと整合するかどうかを判断するステップと、
前記整合の判断に応じて、前記暫定チェックサムと整合する、前記アクティブ・アドレス又は前記前バージョン・アドレス及び対応するアクティブ・チェックサム又は前バージョン・チェックサムを、前記前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリの前記アクティブ・アドレス及びアクティブ・チェックサムのために用いるステップと
をさらに含む、
前記請求項のいずれか１項に記載の方法。
【請求項９】
前記方法は、前記暫定チェックサムが、前記アクティブ・チェックサム、又は前記少なくとも１つの前バージョン・チェックサムのいずれか１つのうちの、どの１つとも整合しないとの判断に応じて、前記エクステント・オブジェクト内の前記ターゲット・トラックに関する前記エントリ内に、前記トラックが前記第２の記憶域内で更新されたことを示すインジケータを設定するステップをさらに含み、
前記インジケータは、前記第１の記憶域内の前記アクティブ・アドレスにおける前記ターゲット・トラックのデータが、前記第２の記憶域内に保持される前記トラックの前記データの最新バージョンではないことを示す、
請求項８に記載の方法。
【請求項１０】
前記暫定チェックサムが前記少なくとも１つの前バージョン・チェックサムのうちの１つと整合するとの判断に応じて、
前記整合する前バージョン・チェックサムに関する前記前バージョン・アドレス及び前記前バージョン・チェックサムをバッファリングするステップと、
新たな前バージョン・アドレス及び新たな前バージョン・チェックサムを、それぞれ前記アクティブ・アドレス及び前記アクティブ・チェックサムの値に設定するステップと、
前記新たな前バージョン・アドレス及び前記新たな前バージョン・チェックサムを設定した後で、前記アクティブ・アドレス及び前記アクティブ・チェックサムを、それぞれ前記バッファリングされた前バージョン・アドレス及び前記バッファリングされた前バージョン・チェックサムに設定するステップと
を実行する、ステップ
をさらに含む、請求項８又は請求項９のいずれかに記載の方法。
【請求項１１】
各々のエントリは、アクティブ・アドレス列中の前記アクティブ・アドレス内で識別される前記トラック・データから計算された、アクティブ・チェックサム列内のアクティブ・チェックサム値と、前記第１の記憶域内に保持される前記トラックの少なくとも１つの前バージョンに関する、前記第１の記憶域内の前記トラックの前記前バージョンのアドレスを有する前バージョン・アドレス列と、前記前バージョン・アドレスにおける前記トラック・データから計算されたチェックサム値を有する前バージョン・チェックサム列とを含む複数の列を含み、
前記方法は、
前記第１の記憶域又は前記第２の記憶域内に存在する前記エクステント内のターゲット・トラックへの書込みを受け取るステップと、
前記ターゲット・トラックに対する前記書込みから暫定チェックサムを計算するステップと、
前記暫定チェックサムが、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリ内の前記少なくとも１つの前バージョン・チェックサムのうちの１つと整合するかどうかを判断するステップと、
前記暫定チェックサムと整合する、前記前バージョン・アドレス及び前記対応する前バージョン・チェックサムを、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリの前記アクティブ・アドレス列及び前記アクティブ・チェックサム列に書込むステップと、
前記アクティブ・アドレス列及び前記アクティブ・チェックサム列に書込まれた前記前バージョン・アドレス及び前記前バージョン・チェックサムのバージョンよりも古いバージョンを有する全ての前アドレス列及び前チェックサム列をシフトさせて、前記アクティブ・アドレス列及び前記アクティブ・チェックサム列に書込まれた前記前バージョン・アドレス及び前記対応する前バージョン・チェックサムを含む前記前アドレス列及び前記前チェックサム列を上書きするステップと
をさらに含む、
前記請求項のいずれか１項に記載の方法。
【請求項１２】
第１の記憶域及び第２の記憶域と通信するシステムであって、
プロセッサと、
前記プロセッサによって実行され、動作を実行するためのコードを含むメモリと、
前記第２の記憶域から前記第１の記憶域へトラックのエクステントを移動させる動作を処理するための処理手段と、
前記移動させるエクステントに関するエクステント・オブジェクトが存在するかどうかを判断する判断手段であって、前記エクステント・オブジェクトは、前記エクステントが前回に前記第１の記憶域から前記第２の記憶域へ以前に移動された場合に存在し、前記エクステント・オブジェクトは、各トラックに関する、前記エクステントが以前に前記第２の記憶域へ移動されたときの前記前回以来、前記トラックが前記第２の記憶域内で更新されたかどうかを示す書込みインジケータを含む、前記判断手段と
を備え、
前記エクステント・オブジェクトが存在するとの判断に応じて、
前記判断手段は、前記エクステント内の前記トラックが、前記前回以来前記トラックが前記第２の記憶域内で更新されたことを示す書込みインジケータを有することを判断するようにさらに動作可能であり、
前記判断されたトラックの前記データを、前記第２の記憶域から前記第１の記憶域内の未使用領域にコピーするためのコピー手段と、
前記判断されたトラックの各々に対して、前記エクステント・オブジェクト内の前記判断されたトラックに関する前記エントリを、前記トラックの前記データがコピーされた前記未使用領域を前記トラックのアクティブ・アドレスとして示すように更新するための更新手段と
をさらに備える
システム。
【請求項１３】
前記エクステント・オブジェクトは、前記第１の記憶域内の前記トラックの前記データの前バージョンに関する情報を保持し、少なくとも１つの前バージョンを有する各トラックに対して、前記トラックに関する前記エントリは、前記トラックの前記前バージョンのデータの前記第１の記憶域内の領域を示す、各前バージョンの前バージョン・アドレスを含み、
前記システムは、
前記判断されたトラックの各々に対して、前記第２の記憶域から前記データがコピーされた前記未使用領域を示すように前記アクティブ・アドレスを更新する前に、新たな前バージョン・アドレスを前記トラックの前記アクティブ・アドレスに設定するための設定手段をさらに備える、
請求項１２に記載のシステム。
【請求項１４】
前記第１の記憶域はソリッド・ステート記憶装置を備え、前記第２の記憶域は前記ソリッド・ステート記憶装置よりも遅い入力／出力アクセス・プロファイルを有するタイプの記憶装置を備える、請求項１２又は請求項１３のいずれかに記載のシステム。
【請求項１５】
各々のエントリは、前記アクティブ・アドレス内で識別される前記トラック・データから計算されたアクティブ・チェックサム値、並びに、前記第１の記憶域内に保持される前記トラックの少なくとも１つの前バージョンに関する、前記第１の記憶域内の前記トラックの前記前バージョンの前バージョン・アドレス、及び前記前バージョン・アドレス内で識別される前記トラック・データから計算された前バージョン・チェックサム値を含み、
前記システムは、
前記第１の記憶域内に存在する前記エクステント内のターゲット・トラックへの書込みを受け取るための受取り手段と、
前記ターゲット・トラックに対する前記書込みから暫定チェックサムを計算するための計算手段と、
前記暫定チェックサムが、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリ内の前記アクティブ・チェックサム又は少なくとも１つの前バージョン・チェックサムのうちの１つと整合するかどうかを判断するようにさらに動作可能な判断手段と、
前記暫定チェックサムと整合する、前記アクティブ・アドレス又は前記前バージョン・アドレス及び対応するアクティブ・チェックサム又は前バージョン・チェックサムを、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリの前記アクティブ・アドレス及びアクティブ・チェックサムのために用いるための使用手段と、
前記暫定チェックサムが、前記アクティブ・チェックサム、又は前記少なくとも１つの前バージョン・チェックサムのいずれかのうちの、どの１つとも整合しないとの判断に応じて、前記ターゲット・トラックへの前記書込みを、前記第１の記憶域内の未使用領域に書込むための書込み手段と
をさらに備える、
請求項１２から請求項１４のいずれか１項に記載のシステム。
【請求項１６】
各々のエントリは、前記アクティブ・アドレス内で識別される前記トラック・データから計算されたアクティブ・チェックサム値、並びに、前記第１の記憶域内に保持される前記トラックの少なくとも１つの前バージョンに関する、前記第１の記憶域内の前記トラックの前記前バージョンの前バージョン・アドレス、及び前記前バージョン・アドレス内で識別される前記トラック・データから計算された前バージョン・チェックサムを含み、
前記システムは、
前記第２の記憶域内に存在する前記エクステント内のターゲット・トラックへの書込みを受け取るための受取り手段と、
前記ターゲット・トラックに対する前記書込みから暫定チェックサムを計算するための計算手段と、
前記暫定チェックサムが、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリ内の前記アクティブ・チェックサム又は少なくとも１つの前バージョン・チェックサムのうちの１つと整合するかどうかを判断するようにさらに動作可能な判断手段と、
前記整合の判断に応じて、前記暫定チェックサムと整合する、前記アクティブ・アドレス又は前記前バージョン・アドレス及び対応するアクティブ・チェックサム又は前バージョン・チェックサムを、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリの前記アクティブ・アドレス及びアクティブ・チェックサムのために用いるための使用手段と
をさらに備える、
請求項１２から請求項１４のいずれか１項に記載のシステム。
【請求項１７】
各々のエントリは、アクティブ・アドレス列中の前記アクティブ・アドレス内で識別される前記トラック・データから計算可能な、アクティブ・チェックサム列内のアクティブ・チェックサム値と、前記第１の記憶域内に保持される前記トラックの少なくとも１つの前バージョンに関する、前記第１の記憶域内の前記トラックの前記前バージョンのアドレスを有する前バージョン・アドレス列と、前記前バージョン・アドレスにおける前記トラック・データから計算可能なチェックサム値を有する前バージョン・チェックサム列とを含む複数の列を含み、
前記システムは、
前記第１の記憶域又は前記第２の記憶域内に存在する前記エクステント内のターゲット・トラックへの書込みを受け取るための受取り手段と、
前記ターゲット・トラックに対する前記書込みから暫定チェックサムを計算するための計算手段と、
前記暫定チェックサムが、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリ内の前記少なくとも１つの前バージョン・チェックサムのうちの１つと整合するかどうかを判断するための判断手段と、
前記暫定チェックサムと整合する、前記前バージョン・アドレス及び前記対応する前バージョン・チェックサムを、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリの前記アクティブ・アドレス列及び前記アクティブ・チェックサム列に書込むための書込み手段と、
前記アクティブ・アドレス列及び前記アクティブ・チェックサム列に書込まれた前記前バージョン・アドレス及び前記前バージョン・チェックサムのバージョンよりも古いバージョンを有する全ての前アドレス列及び前チェックサム列をシフトさせて、前記アクティブ・アドレス列及び前記アクティブ・チェックサム列に書込まれた前記前バージョン・アドレス及び前記対応する前バージョン・チェックサムを含む前記前アドレス列及び前記前チェックサム列を上書きするためのシフト手段と
をさらに備える、
請求項１２又は請求項１４のいずれかに記載のシステム。
【請求項１８】
第１の記憶域及び第２の記憶域内のデータを管理するためのコンピュータ・プログラムであって、請求項１から請求項１１までのいずれか１項による方法を実行するための処理回路による実行のための命令をストアする、前記処理回路によって可読なコンピュータ可読記憶媒体を備えたコンピュータ・プログラム。
【請求項１９】
コンピュータ可読媒体上にストアされ、デジタル・コンピュータの内部メモリにロードされ、コンピュータ上で実行されるとき請求項１から請求項１１までのいずれか１項による方法を実行するソフトウェア・コード部分を備える、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置の間で移動されるトラックのエクステントへの書込み動作を管理するための方法、システム、及びコンピュータ・プログラムに関する。
【背景技術】
【０００２】
階層記憶環境において、トラックのエクステントは、例えば、ハードディスク・ドライブ、ソリッド・ステート記憶装置などの記憶装置の異なる層の間で、記憶装置の特性並びにデータのアクセス頻度及び優先順位に応じて移動させることができる。例えば、より頻繁にアクセスされるエクステント及び／又は優先順位のより高いエクステントは、遅いアクセス層から速いアクセス層に移動させることができ、アクセス頻度が低いエクステント及び／又は優先順位がより低いエクステントは、遅いアクセス層に移動させることができる。
【０００３】
現在の階層記憶環境においては、エクステントは、所与の時間内に上層／プールと下層／プールとの間で複数回、行き来させられる。その前提に立つと、下層は、所与のエクステントが上層内で全体が又は部分的に未だ変更されずに存在していることを認識せずに、所与のエクステントを格上げ（ｐｒｏｍｏｔｅ）することになる。エクステントを移動させるときには、そのエクステント由来の全データが、１つの記憶装置から別の記憶装置にコピーされる。そのような移動には、相当な時間を費やす可能性がある。
【０００４】
現在の階層化記憶アーキテクチャにおいては、上層は、２次キャッシュとして用いることができる下層に以前に格下げ（ｄｅｍｏｔｅ）されたエクステント由来の古い未変更（冗長）区域を含む場合がある。現在の解決策の主な欠点は非効率性であり、その理由は、ソリッド・ステート・デバイス（ＳＳＤ）ドライブの読み出し性能がハードディスク・ドライブの読み出し性能よりも著しく高いためである。
【０００５】
パワーダウンされたハードディスクからの不必要なデータ読み出しはまた、
・ハードディスクの寿命を縮め、
・電力効率を低下させ、
・データ要求に対して、先ずドライブをパワーアップする必要があるので、アクセス時間を長くする。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
当技術分野には、記憶装置の間でトラックのエクステントを移動させるための、上記の問題を解決する改良された技術の必要性が存在する。
【課題を解決するための手段】
【０００７】
記憶装置の間で移動されるトラックのエクステントへの書込み動作を管理するための、コンピュータ・プログラム、コンピュータ・プログラム、システム、及び方法が提供される。第２の記憶域から第１の記憶域へトラックのエクステントを移動させるように、動作が処理される。移動させるエクステントに関するエクステント・オブジェクトが存在するかどうかの判断がなされる。エクステント・オブジェクトは、エクステントが前回第１の記憶域から第２の記憶域へ以前に移動された場合に存在する。エクステント・オブジェクトは、各トラックに関して、エクステントが以前に第２の記憶域に移動された前回以来、トラックが第２の記憶域内で更新されたかどうかを示す書込みインジケータを含む。エクステント・オブジェクトが存在するとの判断に応じて、前回以来トラックが第２の記憶域内で更新されたことを示す書込みインジケータを有する、エクステント内のトラックの判断がなされる。判断されたトラックのデータが第２の記憶域から第１の記憶域内の未使用領域にコピーされる。各々の判断されたトラックに関して、エクステント・オブジェクト内の判断されたトラックに関するエントリが、トラックのデータがコピーされた未使用領域をそのトラックのアクティブ・アドレスとして示すように更新される。
【０００８】
これから、本発明を、添付の図面に示す好ましい実施形態を参照しながら例証のみの目的で説明する。
【図面の簡単な説明】
【０００９】
【図１】本発明の好ましい実施形態を実施することができる、従来技術によるコンピューティング環境の一実施形態を示す。
【図２】本発明の好ましい実施形態による、エクステント・オブジェクト内のエントリの一実施形態を示す。
【図３】本発明の好ましい実施形態による、エクステント・テーブルとしてエクステント・オブジェクトの一実施形態を示す。
【図４】本発明の好ましい実施形態による、エクステントを第２の記憶域から第１の記憶域へ移動させるための動作の一実施形態を示す。
【図５】本発明の好ましい実施形態による、第１の記憶域内に存在するエクステント内のトラックへの書込み要求を処理するための動作の一実施形態を示す。
【図６】本発明の好ましい実施形態による、第２の記憶域内に存在するエクステント内のトラックへの書込み要求を処理するための動作の一実施形態を示す。
【発明を実施するための形態】
【００１０】
図１は、データのトラックを第１の記憶域４及び第２の記憶域６内にストアするサーバ２の一実施形態を示す。サーバ２は、１つ又は複数のプロセッサ・デバイスを備えたプロセッサ８、及び、プロセッサ８によって実行されるオペレーティング・システム１２がロードされるメモリ１０を備える。オペレーティング・システム１２は、エクステント・オブジェクト１６で表されるトラックのエクステントの、第１の記憶域４と第２の記憶域６との間での移動を管理するためのエクステント移動コード１４を含む。トラックのエクステントは、第１の記憶域４又は第２の記憶域６の一方においてアクティブとすることができ、第１の記憶域４と第２の記憶域６との間で移動させることができる。
【００１１】
サーバ２は、第１の記憶域４及び第２の記憶域６と、ネットワーク上で、記憶装置インタフェースを通じた別々のケーブルを介して、ループ構成において、等で通信することができる。第１の記憶域４及び第２の記憶域６は、異なる型の記憶装置、例えば、ＥＥＰＲＯＭ（電気的消去可能プログラム可能読み出し専用メモリ）、フラッシュ・メモリ、フラッシュ・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）ドライブ、ストレージ・クラス・メモリ（ＳＣＭ）などのソリッド・ステート・エレクトロニクスから構成されるソリッド・ステート記憶装置（ＳＳＤ）、磁気記憶ディスク、光ディスク、テープなどを含む備えることができる。メモリ８は、１つ又は複数の揮発性又は不揮発性メモリ・デバイスを備えることができる。エクステント移動コード１４は、代替的にオペレーティング・システム１２の外部のアプリケーション・コードとして実装することができ、又は、特定用途向け集積回路（ＡＳＩＣ）のようなハードウェア論理を用いて、又はコンピュータ可読記憶媒体内のコードを実行するプラグラム可能プロセッサとして、実装することができる。
【００１２】
一実施形態において、第１の記憶域４及び第２の記憶域６は、記憶装置の階層的配置における記憶層を含むことができ、ここで層は、それらの入力／出力（Ｉ／Ｏ）アクセス速度のプロファイル、冗長性などの特性に基づいて記憶域を定める。例えば、第１の記憶域４は、ＳＳＤ又はＲＡＭドライブなどの高速記憶域を含むことができ、第２の記憶域６は、ハードディスク・ドライブ又はテープ媒体などの低速アクセス記憶域を含むことができる。オペレーティング・システム１２は、エクステント移動コード１４を呼び出し、当技術分野で既知の階層管理記憶技術を用いて、あまり頻繁にアクセスされず及び／又は優先順位が低いエクステントを第１の記憶域４から第２の記憶域６に移動させ、より頻繁にアクセスされ及び／又は優先順位が高いトラックのエクステントを第２の記憶域６から第１の記憶域４に移動させる。記憶階層における高層記憶装置と低層記憶装置との間でエクステントを移動させるかどうかを判断するために、データ・アクセスの頻度及びデータの優先順位以外の、又はそれに加えてのデータ特性を用いることができる。
【００１３】
特定の実施形態において、エクステント・オブジェクト１６は、第２の記憶域６内で隣接してストアされるトラックを識別し、これは、第２の記憶域６が、ハードディスク・ドライブ及びテープ・ドライブなどの、媒体内に隣接してストアされるトラックに対する改善された読出し／書込みアクセスを有する記憶装置を含む実施形態において有利である。しかし、エクステント内のトラックのデータは、ソリッド・ステート記憶装置（ＳＳＤ）又はランダム・アクセス・メモリ（ＲＡＭ）ドライブの場合のように、隣接してストアされたトラックへの改善されたアクセスを経験しない記憶装置を含むことができる第１の記憶域内では、隣接してストアされる必要はない。
【００１４】
エクステント・オブジェクト１６は、１つのエクステント内で管理される各々のトラックに関するエントリを含む。サーバ２は、サーバ２が第１の記憶域４及び第２の記憶域６内で管理する各々別々のエクステントに関する複数のエクステント・オブジェクト１６を保持することができる。さらに、サーバ２が２つより多くの記憶域間でのトラックのエクステントの移動を管理することができるように、付加的な記憶装置が存在してもよく、ここで、異なる記憶域は、異なるＩ／Ｏアクセス・プロファイルを有することができる。
【００１５】
図２は、エクステント内の１つのトラックに関する情報を与える、エクステント・オブジェクト１６内のエントリ５０の一実施形態を示す。トラック識別子（ＩＤ）５２は、エクステント内のトラックを識別する。変更インジケータ５４は、エクステント及びトラックが以前に第１の記憶域４から第２の記憶域６へ移動された前回以来、トラックが第２の記憶域内で更新されたかどうかを示し、従って、トラック及びエクステントが第２の記憶域６上に存在する一方で第１の記憶域４がトラックの最新バージョンを有するかどうかを示す。アクティブ・アドレス５６は、第１の記憶域４内でトラックの最新バージョンを有する、第１の記憶域４内のアドレスを示す。アクティブ・チェックサム５８は、アクティブ・アドレス５６にあるデータから計算されたチェックサム値を含む。チェックサム値は、当技術分野で既知のチェックサム又はハッシュ・アルゴリズムを用いて計算され、データの一意の又はおそらく一意の表現を判断することができる。変更インジケータ５４が、トラックが第２の記憶域内で更新されたこと、及び、第１の記憶域４がデータの最新バージョンを有していないことを示す場合、アクティブ・アドレス５６によって識別されるデータは、第２の記憶域６でのより最近の更新により、アクティブ・バージョンではなく、前バージョンを含む可能性がある。
【００１６】
特定の実施形態において、データ更新は、第１の記憶域４内の新しい未使用領域に書込むことができる。そのような場合、トラックに関するエクステント・エントリ５０は、第１の記憶域４内にストアされたトラックの各々の前バージョンａ．．．ｎに関する前バージョン・アドレス６０１．．．６０ｎ、及びトラックの前バージョンから計算された前バージョン・チェックサム６２１．．．６２ｎを保持することになる。エクステント・テーブル８０内の前バージョン・アドレス６０１．．．６０ｎの順序は前バージョンの古さを示すことができ、ここで最も新しい前バージョン・アドレスは第１の６０１であり、最も古いのは最後の６０ｎである。サーバ２は、例えば、使用可能スペース、所定数のバージョン限界、前バージョンをストアするのに使用可能な所定のスペースなどの種々の因子に基づいて、第１の記憶域４内に保持されるデータのバージョン数を制限することができる。
【００１７】
第１の記憶域４がＳＳＤを含む実施形態において、新たに書込まれるデータは、頻繁にアクセスされる論理アドレスを更新するときに書込みを記憶装置全域に分布させるためのウェア・レベリングと呼ばれるプロセスの一部として、第１の記憶域４内の新たな物理的領域に書込まれ、これがソリッド・ステート記憶装置の寿命を延ばす。ソリッド・ステート装置の同じ物理的領域に書込みを続けることは、ソリッド・ステート記憶装置内の記憶ブロックを摩耗させる可能性がある。
【００１８】
図３は、エクステント・オブジェクトに関する情報を与える列を備えた、各トラックに関する行を有する、エクステント・テーブル８０として実装されるエクステント・オブジェクトの一実施例を示す。
【００１９】
図４は、エクステントを第２の記憶域６から第１の記憶域４へ移動させる又は格上げするために、エクステント移動コード１４内で実行される動作の一実施形態を示す。エクステントを移動させる要求を処理する（ブロック１００において）と、移動させるトラックのエクステントに関するエクステント・オブジェクト１６が存在するかどうかについての判断がなされる（ブロック１０２において）。存在しない場合には、エクステント移動コード１４は、ブロック１０４に進んでエクステントに関する新たなエクステント・オブジェクト１６を生成し、各エクステント・エントリ５０（図２）の変更インジケータ５４をクリアしてデータが第２の記憶域６内で変更されていないことを示す。エクステント１６内の各トラックに対して、エクステント移動コード１４は、エクステント内の各トラックに関する動作のループを実行する（ブロック１０６−１１４において）。各トラックに対して、トラックが第２の記憶域６から第１の記憶域４内の未使用領域にコピーされる。エクステント移動コード１４は、コピーされたトラックに関するチェックサムを計算し（ブロック１１０において）、そのトラックに関するアクティブ・アドレス５６を、第１の記憶域４内のトラックがコピーされた未使用領域に設定し（ブロック１１２において）、アクティブ・チェックサム５８を、計算されたチェックサム値に設定する。ブロック１０４−１１４における動作は、エクステントが第１の記憶域４へ格上げされ移動される初回に実行することができる。
【００２０】
格上げされるエクステントに関するエクステント・オブジェクト１６が既に存在する場合（ブロック１０２において）には、エクステントは以前に第１の記憶域４から第２の記憶域６に移動されており、第２の記憶域６から第１の記憶域４へ移動又は格上げされるエクステント内の各トラックに対して、ブロック１１６からブロック１２８までのループが実行される。トラックに関する変更インジケータ５４が（ブロック１１８において）、そのトラックが第２の記憶域上にある間に更新されなかったことを示すと考えられる場合、そのトラックには何の操作も行われず、データが変更されていないのでデータはコピーされない。トラックに関する変更インジケータ５４が（ブロック１１８において）、そのトラックが変更されたことを示す場合には、トラックのデータは、第２の記憶域６から第１の記憶域４の未使用領域にコピーされる（ブロック１２０において）。トラックに関する新たな前バージョン・アドレスが現在のアクティブ・アドレス５６に設定されて、トラックの現在のデータが前バージョンにされ、トラックの新たな前バージョン・チェックサムが現在のアクティブ・チェックサム５８に設定される。次に、アクティブ・アドレス５６は、データがコピーされた未使用領域のアドレスに設定され（ブロック１２４において）、アクティブ・チェックサム５８は、未使用領域にコピーされたデータから計算されたチェックサム値に設定される（ブロック１２６において）。次いで、前バージョンの対、すなわち、前バージョン・アドレス６０１．．．６０ｎ、及び前バージョン・チェックサム６２ａ．．．６２ｎが順序付けられて、前バージョンの情報が、前バージョンの古さ又はバージョン番号によって並べられる（ブロック１２７において）。
【００２１】
エクステント・オブジェクト１６がエクステント・テーブル８０（図３）を含む実施形態において、ブロック１２７の順序付け動作を実行して現在のアクティブ・データ及びチェックサムを前バージョンにするために、エクステント移動コード１４は、現在の前バージョンに関する列６０１．．．６０ｎ及び６２ａ．．．６２ｎを右に２列に移動させて、前バージョン２．．．ｎ＋１に関する列を上書きして占有し、次いで、現在のアクティブ・アドレス５６及び現在のアクティブ・チェックサム５８を新たな最も新しい前バージョン・アドレス６０１及び６２１にコピーする。このようにして、現在のバージョン・アドレス５６及びチェックサム５８を最新の前バージョンにして、アクティブ・フィールド５６及び５８内に、未使用領域にコピーされた更新データのためのスペースを作る。代替的実施形態において、順序は、前バージョンの順序を示すポインタ又は他の情報によって示すことができる。
【００２２】
図４の動作により、エクステントが第１の記憶域４から第２の記憶域６に移動又は格下げされて以来第２の記憶域内で変化したトラックだけが、エクステントを第２の記憶域６から第１の記憶域４へ移動させる又は格上げするときに、第１の記憶域４にコピーされる。第１の記憶域４がＳＳＤを含む実施形態において、上記の動作は、新たなデータが新たな領域に書込まれ、そして、前の移動以来第２の記憶域６内で変更されていないデータは第１の記憶域４にコピーされないので第１の記憶域４への不必要な書込みが回避されることから、ウェア・レベリングをもたらす。
【００２３】
図５は、第１の記憶域４内に存在するエクステント内のトラックへの書込みを処理するために、オペレーティング・システム１２によって実行される動作の一実施形態を示す。書込みを受け取ると、オペレーティング・システム１２（又は何か他のコード）は、ターゲット・トラックに対する書込みから暫定チェックサムを計算する（ブロック１５２において）。暫定チェックサムがトラックのアクティブ・チェックサム５８と整合する場合（ブロック１５４において）には、トラックのアクティブ・アドレス５６にあるデータが書込むデータと同じであるので、書込み要求に対して完了が返される。そのような場合には、データを第１の記憶域４に書込む必要がなく、これにより、第１の記憶域が同じ領域への継続的な書込みによって寿命が短くなるＳＳＤ又は他の型のデバイスを含む実施形態において、ウェア・レベリングが減る。暫定チェックサムがアクティブ・チェックサム５８と整合しない場合（ブロック１５４において）、オペレーティング・システム１２は、暫定チェックサムが前バージョン・チェックサム６２１．．．６２ｎのうちの１つと整合するかどうか判断する（ブロック１５８において）。ゼロ又はそれ以上の前バージョン・アドレス及びチェックサムが存在し得る。整合がある場合には、オペレーティング・システム１２は動作１６０−１６６を実行し、前バージョン・アドレス６０１．．．６０ｎのうちの１つにある前バージョンのデータが書込むデータと一致するので、該前バージョンのデータを用いる。ブロック１６０において、オペレーティング・システム１２は、新たな前バージョン・アドレス及び新たな前バージョン・チェックサムをアクティブ・アドレス及びアクティブ・チェックサムの値に設定（ブロック１６０において）する。この新たな前バージョン・アドレス及び新たな前バージョン・チェックサムが、最も新しい前バージョン・アドレス６０１及びチェックサム６２１となる。オペレーティング・システム１２は、トラックに対する書込みデータを第１の記憶域内の未使用領域に書込み（ブロック１６２において）、アクティブ・アドレス５６を、データがコピーされた未使用領域のアドレスに設定（ブロック１６４において）し、アクティブ・チェックサム５８を、未使用領域内のデータから計算されたチェックサム値に設定（ブロック１６６において）する。次に、前バージョン対、すなわち、前バージョン・アドレス６０１．．．６０ｎ、及び前バージョン・チェックサム６２ａ．．．６２ｎが順序付けられて（ブロック１６７において）、前バージョンの情報が、前バージョンの古さ又はバージョン番号によって並べられる。
【００２４】
エクステント・オブジェクト１６がエクステント・テーブル８０（図３）を含む実施形態において、新たな前バージョン・アドレス及び前バージョン・チェックサムを生成した後、ブロック１６７の順序付け動作を行うために、オペレーティング・システム１２は、全ての現在の前バージョン・アドレス６０１．．．６０ｎ及びチェックサム６２１．．．６２ｎを、テーブル内で右に２列移動させて列データを上書きし、それらを前バージョン・アドレス６０２．．．６０ｎ＋１及びチェックサム６２２．．．６２ｎ＋１にして、生成された新たな前バージョン・アドレス及びチェックサムが、前バージョン・アドレス６０１及びチェックサム６２１となる。代替的な実施形態において、順序は、前バージョンの順序を示すポインタ又は他の情報によって示すことができる。
【００２５】
暫定チェックサムが前バージョン・チェックサム６２１．．．６２ｎの判断された１つと整合する場合（ブロック１５８において）には、オペレーティング・システム１２は、整合した前バージョン・チェックサムに関して、判断された前バージョン・アドレス及び前バージョン・チェックサムをバッファリングする（ブロック１６８において）。オペレーティング・システム１２は、新たな前バージョン・アドレス及び新たな前バージョン・チェックサムを、現在のアクティブ・アドレス５６及びアクティブ・チェックサム５８に設定し（ブロック１７０において）て、現在のアクティブ・アドレス及びチェックサムを最も新しい前バージョンにする。ブロック１７０を実行した後、次にオペレーティング・システム１２は、アクティブ・アドレス５６及びアクティブ・チェックサム５８を、それぞれ、バッファリングされた前バージョン・アドレス及び前バージョンン・チェックサムに設定する（ブロック１７２において）。エクステント・オブジェクト１６がエクステント・テーブル８０（図３）を含む実施形態において、ブロック１６８−１７２で、１つの前バージョン・アドレス、例えば６０ｉ、及び前バージョン・チェックサム、例えば６２ｉ、を現在のアクティブ・バージョン５６及び５８にした後、次にオペレーティング・システム１２は、整合しバッファリングされた前バージョン・アドレス６０ｉ及びチェックサム６２ｉに続く前バージョン・アドレス６０ｉ＋１．．．６０ｎ及び前バージョン・チェックサム６２ｉ＋１．．．６２ｎの全ての列を、テーブル８０内で左に２列に移動させて、アクティブ・フィールド５６及び５８にコピーされた、整合しバッファリングされた前バージョン・アドレス６０ｉ及びチェックサム６２ｉが占有していた列を上書きする。
【００２６】
上記の図５の実施形態により、オペレーティング・システム１２は、現在のアクティブ・アドレス５６及びチェックサム５８、又は、１つの前バージョン・アドレス６０１．．．６０ｎ及びチェックサム６２１．．．６２ｎを、新たなアクティブ・アドレス５６及びチェックサム５８のために使用して、データを第１の記憶域４に書込むことを回避しようと試みる。このように、オペレーティング・システム１２は、新しい書込みデータに対して、第１の記憶域４内に既に存在するデータを再使用する。第１の記憶域４がＳＳＤを含む実施形態において、書込みのためにアクティブ又は前バージョン・データを用いて書込みを避けることは、ＳＳＤの摩耗を防ぎ、その寿命を延ばす。
【００２７】
図６は、第２の記憶域６内に存在するエクステント内のターゲット・トラックに向けられた書込みを処理するための、オペレーティング・システム１２コード（又は他の構成要素）内で実行される動作の一実施形態を示す。エクステント・オブジェクト１６は、図６の動作が始まるときには既に生成されていることになる。書込みを受け取ることに応じて（ブロック２００において）、オペレーティング・システム１２は、ターゲット・トラックに対する書込みから暫定チェックサムを計算する（ブロック２０２において）。暫定チェックサムがトラックのアクティブ・チェックサム５８と整合する（ブロック２０４において）場合、且つ、変更インジケータ５４が、トラックが第２の記憶域６内で以前に変更され、この変更がエクステント・オブジェクト１６内に反映されなかったことを示すように設定されている場合、第１の記憶域４のトラックは第２の記憶域６内で変更されたトラックを有することになるので、変更インジケータ５４はクリアされる（ブロック２０６において）。書込みデータは、第２の記憶域内のトラックに書込まれ（ブロック２０８において）、そして書込み要求に対して完了が返される（ブロック２１０において）。そのような場合、第１の記憶域４内のトラックのアクティブ・アドレス５６は第２の記憶域６に書込まれたデータと同じであるので、エクステント・オブジェクト１６は更新される必要がない。変更インジケータ５４が設定されていない場合（ブロック２０５において）には、制御はブロック２１０に進み、第１の記憶域４及び第２の記憶域６の両方の中のアクティブ・データ又は最新書込みデータが書込むデータと既に一致するデータを有するので、なにも書込まない。
【００２８】
暫定チェックサムがアクティブ・チェックサム５８と整合しない（ブロック２０４において）場合、オペレーティング・システム１２は、暫定チェックサムが前バージョン・チェックサム６２１．．．６２ｎのうちの１つと整合するかどうか判断する（ブロック２１２において）。ゼロ又はそれ以上の前バージョン・アドレス及びチェックサムが存在し得る。整合が存在する場合（ブロック２１２において）には、オペレーティング・システム１２は、動作２１４−２１８を実行して前バージョン・アドレス６０１．．．６０ｎのうちの１つにある前バージョン・トラックを用いるが、その理由は、第１の記憶域４内の判断された前バージョン・トラックが第２の記憶域６内のトラックに書込むデータと整合するからである。オペレーティング・システム１２は、整合する前バージョン・チェックサム６２ｉに関して、判断された前バージョン・アドレス、例えば６０ｉ、及び、前バージョン・チェックサム、例えば６２ｉをバッファリングする（ブロック２１６において）。オペレーティング・システム１２は、新たな前バージョン・アドレス及び新たな前バージョン・チェックサムを、現在のアクティブ・アドレス５６及び現在のアクティブ・チェックサム５８の値に設定する（ブロック２１６において）。ブロック２１６を実行した後、オペレーティング・システム１２は、アクティブ・アドレス５６及びアクティブ・チェックサム５８を、それぞれ、バッファリングされた前バージョン・アドレス６０ｉ及び前バージョン・チェックサム６２ｉに設定する（ブロック２１８において）。オペレーティング・システム１２は、変更インジケータ５４をクリアして（ブロック２０６において）、第１の記憶域４が第２の記憶域６内で変更されたデータを有する故に、トラックは変更されないことを示す。次に制御はブロック２０６からブロック２０８に進み、第２の記憶域６への書込みを完了する。
【００２９】
エクステント・オブジェクト１６がエクステント・テーブル８０（図３）を含む実施形態において、ブロック２１２−２１６において１つの前バージョン・アドレス、例えば６０ｉ、及び前バージョン・チェックサム、例えば６２ｉ、を現在のアクティブ・バージョン５６及び５８にした後、オペレーティング・システム１２は、整合しバッファリングされた前バージョン・アドレス６０ｉ及びチェックサム６２ｉに続く前バージョン・アドレス６０ｉ＋１及び前バージョン・チェックサム６２ｉ＋１の全ての列を、テーブル８０内で左に２列に移動させて、整合しバッファリングされた前バージョン・アドレス６０ｉ及びチェックサム６２ｉが占有していた列を上書きする。
【００３０】
暫定チェックサムが１つの前バージョン・チェックサムと整合しない場合（ブロック２１２において）には、変更インジケータ５４はデータが第２の記憶域６内で変更されたことを示すように設定され（ブロック２２２において）、制御はブロック２０８に進み、第２の記憶域６への書込みを完了する。変更インジケータ５４を設定することは、第１の記憶域４が第２の記憶域６に書込まれるデータを有していない可能性を示す。そのような場合、第１の記憶域４内のアクティブ・アドレス５６におけるデータは、トラックの該データが第２の記憶域６内で変更されているために「アクティブ・データ」ではなくなり、アクティブ・アドレス５６におけるトラックのデータが最新の前バージョンのデータとなり得る。従って、変更インジケータ５４が設定されるとき、アクティブ・アドレス５６及びアクティブ・チェックサム５８の情報は、トラックの実際のアクティブ・データではなくなっている可能性がある。
【００３１】
上記の図６の実施形態により、オペレーティング・システム１２は、第１の記憶域４内のトラックの既存のデータが第２の記憶域６に書込まれるデータと整合する場合には、現在のアクティブ・アドレス５６及びチェックサム５８、又は、１つの前のバージョン・アドレス６０１．．．６０ｎ及びチェックサム６２１．．．６２ｎを、第１の記憶域４内の新たなアクティブ・アドレス５６及びアクティブ・チェックサム５８のために用いようと試みる。エクステント・オブジェクト１６を更新して、第１の記憶域４が第２の記憶域６に書込まれたデータを有することを反映させることにより、変更インジケータがクリアされているので、変更されたトラックを有するエクステントを第２の記憶域６から第１の記憶域４に移動させて戻すときに引き続いて第１の記憶域４を第２の記憶域６内のトラックへの書込みデータで更新する必要はない。第１の記憶域４がＳＳＤを含む実施形態において、第２の記憶域６への書込みのために、第１の記憶域４内のトラックのアクティブ・バージョン又は前バージョンを用いることにより、第２の記憶域６から第１の記憶域４への後の移動の際に、第１の記憶域への書込みの必要性が回避される。第１の記憶域４への書込みを回避することは、ＳＳＤの摩耗を減らして寿命を延ばす。
【００３２】
図５及び図６の実施形態において、第１の記憶域４又は第２の記憶域６内に書込まれているトラックに関するエクステント・オブジェクトが保持されていない場合には、さらに別の動作を実行せずに書込みを進行させることができる。さらに、書込み動作に対して、書込む複数のトラックが存在する場合には、図５及び図６の動作は書込む各トラックに対して実行されることになる。
【００３３】
説明した実施形態は、エクステントを第２の記憶域から第１の記憶域へ移動させるとき、第１の記憶域内に存在するエクステントへの書込みを実行するとき、そして第２の記憶域への書込みを実行するときに、第１の記憶域への書込みの回数を減らすための技術を提供する。第１の記憶域が、同じ位置に対する継続的な更新によって記憶寿命が短くなるＳＳＤ又は他の記憶装置を含む実施形態において、説明した実施形態は記憶装置の摩耗を減らし、その寿命を延ばす。
【００３４】
付加的な実施形態の詳細
説明した動作は、ソフトウェア、ファームウェア、又はこれらの任意の組合せを作成するための標準的プログラミング及び／又はエンジニアリング技法を用いて、方法、装置又はコンピュータ・プログラムとして実装することができる。従って、実施形態の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、又は、ソフトウェア態様とハードウェア態様とを組み合せた実施形態の形をとることができ、これらは、本明細書において全て一般的に「回路」、「モジュール」又は「システム」と呼ぶことができる。さらに、実施形態の態様は、その上に具体化されたコンピュータ可読プログラム・コードを有する１つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラムの形をとることができる。
【００３５】
１つ又は複数のコンピュータ可読媒体の任意の組合せを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、それらに限定されないが、電子、磁気、光、電磁気、赤外、若しくは半導体のシステム、装置、若しくはデバイス、又は上記の任意の適切な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例（非網羅的リスト）は、１つ又は複数の配線を有する電気接続、携帯用コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プラグラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、携帯用コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶デバイス、磁気記憶デバイス、又は上記の任意の適切な組合せを含むであろう。本明細書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、又はデバイスにより、又はそれらと共に使用するためのプログラムを収容又はストアすることができる任意の有形媒体とすることができる。
【００３６】
コンピュータ可読信号媒体は、具体化されたコンピュータ可読プログラム・コードを内部に、例えば、ベースバンド内に又は搬送波の一部分として有する伝搬データ信号を含むことができる。そのような伝搬信号は、それらに限定されないが、電磁気、光、又はそれらの任意の適切な組合せを含んだ様々な形態のいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、そして、命令実行システム、装置、若しくはデバイスにより又はそれらと共に使用するためのプログラムを通信し、伝搬し、又は移送することができる、任意のコンピュータ可読媒体とすることができる。
【００３７】
コンピュータ可読媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、又はこれらの任意の適切な組合せを含むが、それらに限定されない任意の適切な媒体を用いて伝送することができる。
【００３８】
本発明の態様に関する動作を実行するためのコンピュータ・プログラム・コードは、例えばＪａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、及び、例えば「Ｃ」プログラミング又は類似のプログラミング言語などの通常の手続き型プログラミング言語を含む１つ又は複数のプログラミング言語の任意の組合せによって書くことができる。プログラム・コードは、独立ソフトウェア・パッケージとして、完全にユーザのコンピュータ上で若しくは部分的にユーザのコンピュータ上で、又は部分的にユーザのコンピュータ上且つ部分的に遠隔コンピュータ上で、又は完全に遠隔コンピュータ若しくはサーバ上で実行することができる。後者のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を含む任意の型のネットワークによってユーザのコンピュータに接続することができ、又は、接続は外部コンピュータ（例えば、インターネット・サービス・プロバイダを利用してインターネットにより）に対して行うことができる。
【００３９】
以下で本発明の態様を、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラムのフローチャート図及び／又はブロック図を参照しながら説明する。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組合せは、コンピュータ・プログラム命令によって実施できることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに供給して機械を生成し、その結果、命令がコンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行されてフローチャート図及び／又はブロック図のブロック又は複数のブロック内で指定された機能／動作を実行するための手段を形成するようにすることができる。
【００４０】
これらのコンピュータ命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスに、特定の仕方で機能するように指示することができるコンピュータ可読媒体にストアし、その結果、コンピュータ可読媒体にストアされた命令が、フローチャート図及び／又はブロック図のブロック又は複数のブロック内で指定された機能／動作を実行する命令を含んだ製品を生成するようにすることもできる。
【００４１】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能処理装置、又は他のデバイスにロードし、コンピュータ、他のプログラム可能装置、又は他のデバイス上で実行される一連の動作ステップが、コンピュータ実施のプロセスを生成するようにして、その結果、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート図及び／又はブロック図のブロック又は複数のブロック内で指定された機能／動作を実行するプロセスをもたらすようにすることもできる。
【００４２】
特定の実施形態において、図１のサーバは、クラウド・コンピューティング環境におけるクラウド構成部分として実施することができる。クラウド・コンピューティング環境において、クラウド・コンピューティングの配信に関与するハードウェア及びソフトウェア構成要素のシステム構成は、インターネットのようなネットワークを介して互いに通信する複数のクラウド構成要素を含むことができる。例えば、特定の実施形態において、図１のサーバは、クライアント及び他のサーバ、並びにネットワーク・クラウド内の他のソフトウェア及び／又はハードウェア構成要素に、ストレージ及びデータ処理サービスを提供することができる。サーバ２は、高信頼性のストレージ・サービスを提供することができ、記憶域４及び６へアクセスして、ストレージを必要とするクライアント及びストレージ・サービスをクライアントに提供する他のサーバを含むクラウド内の顧客のサービス要求の品質を満足させることができる。サーバ２は、ウェブ・インタフェース又は他のアプリケーション・プログラミング・インタフェースによってクライアントと通信し、記憶域４及び６に関するストレージ・サービスを提供することができる。
【００４３】
用語「一実施形態（ａｎ  ｅｍｂｏｄｉｍｅｎｔ）」、「実施形態（ｅｍｂｏｄｉｍｅｎｔ）」、「実施形態（ｅｍｂｏｄｉｍｅｎｔｓ）」、「その実施形態（ｔｈｅ  ｅｍｂｏｄｉｍｅｎｔ）」、「１つ又は複数の実施形態」、「幾つかの実施形態」、及び「１つの実施形態」は、明示的に別に指定されない限り、「本発明の１つ又は複数の（しかし全てではない）実施形態」を意味する。
【００４４】
用語「含む」、「備える」、「有する」及びそれらの変形物は、明示的に別に指定されない限り、「含むがそれらに限定されない」を意味する。
【００４５】
列挙される項目のリストは、明示的に別に指定されない限り、何れか又は全ての項目が互いに排他的であることを意味しない。
【００４６】
用語「１つの（ａ）」、「１つの（ａｎ）」及び「その（ｔｈｅ）」は、明示的に別に指定されない限り、「１つ又は複数」を意味する。
【００４７】
互いに通信するデバイスは、明示的に別に指定されない限り、互いに連続的に通信する必要はない。さらに、互いに通信するデバイスは、直接的に、又は１つ若しくは複数の媒介手段を介して間接的に通信することができる。
【００４８】
互いに通信する幾つかの構成要素を有する実施形態の説明は、それら全ての構成要素が必要であることを意味しない。反対に、本発明の種々様々な可能な実施形態を示すために、様々な随意の構成要素が説明されている。
【００４９】
さらに、プロセス・ステップ、方法ステップ又はアルゴリズムなどは、順番に説明されていることがあるが、それらプロセス、方法及びアルゴリズムは別の順番で動作するように構成することができる。換言すれば、説明され得るステップの何れの順序又は順番も、ステップがその順番で実行されることの必要性を必ずしも示すものではない。本明細書で説明するプロセスのステップは、実際には任意の順番で実行することができる。さらに、幾つかのステップは同時に実行することができる。
【００５０】
本明細書において単一のデバイス又は物品が説明されている場合、単一のデバイス／物品の代りに１つより多くのデバイス／物品（それらが協働してもしなくとも）を使用できることが直ちに明白となるであろう。同様に、本明細書で１つより多くのデバイス又は物品（それらが協働してもしなくとも）が説明されている場合、１つより多くのデバイス又は物品の代りに単一のデバイス／物品を使用することができ、又は、示された数のデバイス又はプログラムの代りに異なる数のデバイス／物品を使用することができることが直ちに明白となるであろう。デバイスの機能及び／又は特徴は、それら機能／特徴を有するように明示的に説明されていない１つ又は複数の他のデバイスによって代替的に具体化することができる。従って、本発明の他の好ましい実施形態は、必ずしもそのデバイス自体を含む必要はない。
【００５１】
図４−図６に示した動作は特定のイベントが特定の順番で行われることを示す。代替的実施形態においては、特定の動作は異なる順番で実行することができ、又は修正若しくは除去することができる。さらに、上記の論理にステップを付け加えて、それでもなお説明した実施形態に適合させることができる。さらに、本明細書で説明した動作は順次に行うことができ、又は特定の動作は並列に処理することができる。さらにまた、動作は単一の処理装置により、又は分散処理装置によって実行することができる。
【００５２】
本発明の種々の好ましい実施形態の上記の説明は、例証及び説明のために提示されたものである。これは網羅的であること、又は本発明を開示された通りの形態に限定することを意図したものではない。上記の教示を考慮すれば、多くの修正及び変形が可能となる。本発明の範囲は、この詳細な説明ではなく、添付の特許請求の範囲によって限定されることが意図されている。上記の詳細な説明、実施例及びデータは、本発明の構成要素の製造及び用途の完全な説明を与える。本発明の範囲から逸脱せずに、本発明の多くの実施形態を構成することができるので、本発明は、添付の特許請求の範囲の中に存在する。
【符号の説明】
【００５３】
２：サーバ
４：第１の記憶域
６：第２の記憶域
８：プロセッサ
１０：メモリ
１２：オペレーティング・システム
１４：エクステント移動コード
１６：エクステント・オブジェクト
５０：エントリ
５２：トラック識別子（トラックＩＤ）
５４：変更インジケータ
５６：アクティブ・アドレス
５８：アクティブ・チェックサム
６０１．．．６０ｎ：前バージョン・アドレス
６２１．．．６２ｎ：前バージョン・チェックサム
８０：エクステント・テーブル
【図１】
2013533991.tif 000003
【図２】
2013533991.tif 000004
【図３】
2013533991.tif 000005
【図４】
2013533991.tif 000006
【図５】
2013533991.tif 000007
【図６】
2013533991.tif 000008
【手続補正書】
【提出日】平成24年11月22日(2012.11.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１の記憶域及び第２の記憶域内のデータを管理する方法であって、
前記第２の記憶域から前記の第１の記憶域へトラックのエクステントを移動させる動作を処理するステップと、
前記移動させるエクステントに関するエクステント・オブジェクトが存在するかどうかを判断するステップであって、前記エクステント・オブジェクトは、前記エクステントが前回に前記第１の記憶域から前記第２の記憶域へ以前に移動された場合に存在し、前記エクステント・オブジェクトは、各々のトラックに関する、前記エクステントが以前に前記第２の記憶域に移動されたときの前回以来、前記トラックが前記第２の記憶域内で更新されたかどうかを示す書込みインジケータを含む、前記判断するステップと、
を含み、
前記エクステント・オブジェクトが存在するとの判断に応じて、
前記前回以来、前記トラックが前記第２の記憶域内で更新されたことを示す書込みインジケータ有する、前記エクステント内の前記トラックを判断するステップと、
前記判断されたトラックの前記データを、前記第２の記憶域から前記第１の記憶域内の未使用領域にコピーするステップと、
前記判断された各々のトラックに対して、前記エクステント・オブジェクト内の前記判断されたトラックに関する前記エントリを、前記トラックの前記データがコピーされた前記未使用領域を前記トラックのアクティブ・アドレスとして示すように更新するステップと
を実行する、ステップ
を含む、方法。
【請求項２】
前記エクステント・オブジェクトは、前記第１の記憶域内の前記トラックの前記データの前バージョンに関する情報を保持し、少なくとも１つの前バージョンを有する各トラックに対して、前記トラックに関する前記エントリは、前記トラックの前記前バージョンの前記データの前記第１の記憶域内の領域を示す、各前バージョンの前バージョン・アドレスを含み、
前記方法は、
前記判断されたトラックの各々に対して、前記第２の記憶域から前記データがコピーされた前記未使用領域を示すように前記アクティブ・アドレスを更新する前に、新たな前バージョン・アドレスを前記トラックの前記アクティブ・アドレスに設定するステップをさらに含む、
請求項１に記載の方法。
【請求項３】
ソリッド・ステート記憶装置を備えた前記第１の記憶域を準備するステップと、
前記ソリッド・ステート記憶装置よりも遅い入力／出力アクセス・プロファイルを有するタイプの記憶装置を備えた前記第２の記憶域を準備するステップと
をさらに含む、請求項１又は請求項２のいずれかに記載の方法。
【請求項４】
前記第２の記憶域は、前記エクステント内の前記トラックを隣接してストアし、前記方法は、前記第２の記憶域内の変更されたトラックを、前記第１の記憶域内の、前記エクステント内の未変更トラックに対して隣接しない領域にコピーするステップをさらに含む、前記請求項のいずれか１項に記載の方法。
【請求項５】
各々のエントリは、前記アクティブ・アドレス内で識別される前記トラックのデータから計算されたアクティブ・チェックサム値、並びに、前記第１の記憶域内に保持される前記トラックの少なくとも１つの前バージョンに関する、前記第１の記憶域内の前記トラックの前記前バージョンの前バージョン・アドレス、及び前記前バージョン・アドレス内で識別される前記トラックのデータから計算された前バージョン・チェックサム値を含み、
前記方法は、
前記第１の記憶域内に存在する前記エクステント内のターゲット・トラックへの書込みを受け取るステップと、
前記ターゲット・トラックに対する前記書込みから暫定チェックサムを計算するステップと、
前記暫定チェックサムが、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリ内の前記アクティブ・チェックサム又は少なくとも１つの前バージョン・チェックサムのうちの１つと整合するかどうかを判断するステップと、
前記暫定チェックサムと整合する、前記アクティブ・アドレス又は前記前バージョン・アドレス及び対応する前記アクティブ・チェックサム又は前記前バージョン・チェックサムを、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリの前記アクティブ・アドレス及びアクティブ・チェックサムのために用いるステップと、
前記暫定チェックサムが、前記アクティブ・チェックサム、又は前記少なくとも１つの前バージョン・チェックサムのいずれかのうちの、どの１つとも整合しないとの判断に応じて、前記ターゲット・トラックへの書込みを、前記第１の記憶域内の未使用領域に書込むステップと
をさらに含む、
前記請求項のいずれか１項に記載の方法。
【請求項６】
前記書込みを前記ターゲット・トラックへ前記書込むステップは、前記暫定チェックサムが、前記アクティブ・チェックサム又は前記少なくとも１つの前バージョン・チェックサムのうちの１つと整合するとの判断に応じて、前記第１の記憶域に書込まれない、請求項５に記載の方法。
【請求項７】
前記暫定チェックサムと整合する、前記アクティブ・アドレス又は前記前バージョン・アドレス及び前記対応するチェックサムを前記用いるステップは、
前記暫定チェックサムが前記アクティブ・チェックサム又は前記少なくとも１つの前バージョン・チェックサムのうちの１つと整合するとの判断に応じて、完了を前記書込みに返すステップを含み、
前記暫定チェックサムが前記少なくとも１つの前バージョン・チェックサムのうちの１つと整合するとの判断に応じて、
前記整合する前バージョン・チェックサムに関する前記前バージョン・アドレス及び前記前バージョン・チェックサムをバッファリングするステップと、
新たな前バージョン・アドレス及び新たな前バージョン・チェックサムを前記アクティブ・アドレス及び前記アクティブ・チェックサムの値に設定するステップと、
前記新たな前バージョン・アドレス及び前記新たな前バージョン・チェックサムを設定した後で、前記アクティブ・アドレス及び前記アクティブ・チェックサムを、それぞれ前記バッファリングされた前バージョン・アドレス及び前バージョン・チェックサムに設定するステップと
を実行する、ステップ
を含む、請求項５又は請求項６のいずれかに記載の方法。
【請求項８】
各々のエントリは、前記アクティブ・アドレス内で識別される前記トラック・データから計算されたアクティブ・チェックサム値、並びに、前記第１の記憶域内に保持される前記トラックの少なくとも１つの前バージョンに関する、前記第１の記憶域内の前記トラックの前記前バージョンの前バージョン・アドレス、及び前記前バージョン・アドレス内で識別される前記トラック・データから計算された前バージョン・チェックサムを含み、
前記方法は、
前記第２の記憶域内に存在する前記エクステント内のターゲット・トラックへの書込みを受け取るステップと、
前記ターゲット・トラックに対する前記書込みから暫定チェックサムを計算するステップと、
前記暫定チェックサムが、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリ内の前記アクティブ・チェックサム又は少なくとも１つの前バージョン・チェックサムのうちの１つと整合するかどうかを判断するステップと、
前記整合の判断に応じて、前記暫定チェックサムと整合する、前記アクティブ・アドレス又は前記前バージョン・アドレス及び対応するアクティブ・チェックサム又は前バージョン・チェックサムを、前記前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリの前記アクティブ・アドレス及びアクティブ・チェックサムのために用いるステップと
をさらに含む、
前記請求項のいずれか１項に記載の方法。
【請求項９】
前記方法は、前記暫定チェックサムが、前記アクティブ・チェックサム、又は前記少なくとも１つの前バージョン・チェックサムのいずれか１つのうちの、どの１つとも整合しないとの判断に応じて、前記エクステント・オブジェクト内の前記ターゲット・トラックに関する前記エントリ内に、前記トラックが前記第２の記憶域内で更新されたことを示すインジケータを設定するステップをさらに含み、
前記インジケータは、前記第１の記憶域内の前記アクティブ・アドレスにおける前記ターゲット・トラックのデータが、前記第２の記憶域内に保持される前記トラックの前記データの最新バージョンではないことを示す、
請求項８に記載の方法。
【請求項１０】
前記暫定チェックサムが前記少なくとも１つの前バージョン・チェックサムのうちの１つと整合するとの判断に応じて、
前記整合する前バージョン・チェックサムに関する前記前バージョン・アドレス及び前記前バージョン・チェックサムをバッファリングするステップと、
新たな前バージョン・アドレス及び新たな前バージョン・チェックサムを、それぞれ前記アクティブ・アドレス及び前記アクティブ・チェックサムの値に設定するステップと、
前記新たな前バージョン・アドレス及び前記新たな前バージョン・チェックサムを設定した後で、前記アクティブ・アドレス及び前記アクティブ・チェックサムを、それぞれ前記バッファリングされた前バージョン・アドレス及び前記バッファリングされた前バージョン・チェックサムに設定するステップと
を実行する、ステップ
をさらに含む、請求項８又は請求項９のいずれかに記載の方法。
【請求項１１】
各々のエントリは、アクティブ・アドレス列中の前記アクティブ・アドレス内で識別される前記トラック・データから計算された、アクティブ・チェックサム列内のアクティブ・チェックサム値と、前記第１の記憶域内に保持される前記トラックの少なくとも１つの前バージョンに関する、前記第１の記憶域内の前記トラックの前記前バージョンのアドレスを有する前バージョン・アドレス列と、前記前バージョン・アドレスにおける前記トラック・データから計算されたチェックサム値を有する前バージョン・チェックサム列とを含む複数の列を含み、
前記方法は、
前記第１の記憶域又は前記第２の記憶域内に存在する前記エクステント内のターゲット・トラックへの書込みを受け取るステップと、
前記ターゲット・トラックに対する前記書込みから暫定チェックサムを計算するステップと、
前記暫定チェックサムが、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリ内の前記少なくとも１つの前バージョン・チェックサムのうちの１つと整合するかどうかを判断するステップと、
前記暫定チェックサムと整合する、前記前バージョン・アドレス及び前記対応する前バージョン・チェックサムを、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリの前記アクティブ・アドレス列及び前記アクティブ・チェックサム列に書込むステップと、
前記アクティブ・アドレス列及び前記アクティブ・チェックサム列に書込まれた前記前バージョン・アドレス及び前記前バージョン・チェックサムのバージョンよりも古いバージョンを有する全ての前アドレス列及び前チェックサム列をシフトさせて、前記アクティブ・アドレス列及び前記アクティブ・チェックサム列に書込まれた前記前バージョン・アドレス及び前記対応する前バージョン・チェックサムを含む前記前アドレス列及び前記前チェックサム列を上書きするステップと
をさらに含む、
請求項１から請求項１０のいずれか１項に記載の方法。
【請求項１２】
第１の記憶域及び第２の記憶域と通信するシステムであって、
プロセッサと、
前記プロセッサによって実行され、動作を実行するためのコードを含むメモリと、
前記第２の記憶域から前記第１の記憶域へトラックのエクステントを移動させる動作を処理するための処理手段と、
前記移動させるエクステントに関するエクステント・オブジェクトが存在するかどうかを判断する判断手段であって、前記エクステント・オブジェクトは、前記エクステントが前回に前記第１の記憶域から前記第２の記憶域へ以前に移動された場合に存在し、前記エクステント・オブジェクトは、各トラックに関する、前記エクステントが以前に前記第２の記憶域へ移動されたときの前記前回以来、前記トラックが前記第２の記憶域内で更新されたかどうかを示す書込みインジケータを含む、前記判断手段と
を備え、
前記エクステント・オブジェクトが存在するとの判断に応じて、
前記判断手段は、前記エクステント内の前記トラックが、前記前回以来前記トラックが前記第２の記憶域内で更新されたことを示す書込みインジケータを有することを判断するようにさらに動作可能であり、
前記判断されたトラックの前記データを、前記第２の記憶域から前記第１の記憶域内の未使用領域にコピーするためのコピー手段と、
前記判断されたトラックの各々に対して、前記エクステント・オブジェクト内の前記判断されたトラックに関する前記エントリを、前記トラックの前記データがコピーされた前記未使用領域を前記トラックのアクティブ・アドレスとして示すように更新するための更新手段と
をさらに備える
システム。
【請求項１３】
前記エクステント・オブジェクトは、前記第１の記憶域内の前記トラックの前記データの前バージョンに関する情報を保持し、少なくとも１つの前バージョンを有する各トラックに対して、前記トラックに関する前記エントリは、前記トラックの前記前バージョンのデータの前記第１の記憶域内の領域を示す、各前バージョンの前バージョン・アドレスを含み、
前記システムは、
前記判断されたトラックの各々に対して、前記第２の記憶域から前記データがコピーされた前記未使用領域を示すように前記アクティブ・アドレスを更新する前に、新たな前バージョン・アドレスを前記トラックの前記アクティブ・アドレスに設定するための設定手段をさらに備える、
請求項１２に記載のシステム。
【請求項１４】
前記第１の記憶域はソリッド・ステート記憶装置を備え、前記第２の記憶域は前記ソリッド・ステート記憶装置よりも遅い入力／出力アクセス・プロファイルを有するタイプの記憶装置を備える、請求項１２又は請求項１３のいずれかに記載のシステム。
【請求項１５】
各々のエントリは、前記アクティブ・アドレス内で識別される前記トラック・データから計算されたアクティブ・チェックサム値、並びに、前記第１の記憶域内に保持される前記トラックの少なくとも１つの前バージョンに関する、前記第１の記憶域内の前記トラックの前記前バージョンの前バージョン・アドレス、及び前記前バージョン・アドレス内で識別される前記トラック・データから計算された前バージョン・チェックサム値を含み、
前記システムは、
前記第１の記憶域内に存在する前記エクステント内のターゲット・トラックへの書込みを受け取るための受取り手段と、
前記ターゲット・トラックに対する前記書込みから暫定チェックサムを計算するための計算手段と、
前記暫定チェックサムが、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリ内の前記アクティブ・チェックサム又は少なくとも１つの前バージョン・チェックサムのうちの１つと整合するかどうかを判断するようにさらに動作可能な判断手段と、
前記暫定チェックサムと整合する、前記アクティブ・アドレス又は前記前バージョン・アドレス及び対応するアクティブ・チェックサム又は前バージョン・チェックサムを、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリの前記アクティブ・アドレス及びアクティブ・チェックサムのために用いるための使用手段と、
前記暫定チェックサムが、前記アクティブ・チェックサム、又は前記少なくとも１つの前バージョン・チェックサムのいずれかのうちの、どの１つとも整合しないとの判断に応じて、前記ターゲット・トラックへの前記書込みを、前記第１の記憶域内の未使用領域に書込むための書込み手段と
をさらに備える、
請求項１２から請求項１４のいずれか１項に記載のシステム。
【請求項１６】
各々のエントリは、前記アクティブ・アドレス内で識別される前記トラック・データから計算されたアクティブ・チェックサム値、並びに、前記第１の記憶域内に保持される前記トラックの少なくとも１つの前バージョンに関する、前記第１の記憶域内の前記トラックの前記前バージョンの前バージョン・アドレス、及び前記前バージョン・アドレス内で識別される前記トラック・データから計算された前バージョン・チェックサムを含み、
前記システムは、
前記第２の記憶域内に存在する前記エクステント内のターゲット・トラックへの書込みを受け取るための受取り手段と、
前記ターゲット・トラックに対する前記書込みから暫定チェックサムを計算するための計算手段と、
前記暫定チェックサムが、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリ内の前記アクティブ・チェックサム又は少なくとも１つの前バージョン・チェックサムのうちの１つと整合するかどうかを判断するようにさらに動作可能な判断手段と、
前記整合の判断に応じて、前記暫定チェックサムと整合する、前記アクティブ・アドレス又は前記前バージョン・アドレス及び対応するアクティブ・チェックサム又は前バージョン・チェックサムを、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリの前記アクティブ・アドレス及びアクティブ・チェックサムのために用いるための使用手段と
をさらに備える、
請求項１２から請求項１４のいずれか１項に記載のシステム。
【請求項１７】
各々のエントリは、アクティブ・アドレス列中の前記アクティブ・アドレス内で識別される前記トラック・データから計算可能な、アクティブ・チェックサム列内のアクティブ・チェックサム値と、前記第１の記憶域内に保持される前記トラックの少なくとも１つの前バージョンに関する、前記第１の記憶域内の前記トラックの前記前バージョンのアドレスを有する前バージョン・アドレス列と、前記前バージョン・アドレスにおける前記トラック・データから計算可能なチェックサム値を有する前バージョン・チェックサム列とを含む複数の列を含み、
前記システムは、
前記第１の記憶域又は前記第２の記憶域内に存在する前記エクステント内のターゲット・トラックへの書込みを受け取るための受取り手段と、
前記ターゲット・トラックに対する前記書込みから暫定チェックサムを計算するための計算手段と、
前記暫定チェックサムが、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリ内の前記少なくとも１つの前バージョン・チェックサムのうちの１つと整合するかどうかを判断するための判断手段と、
前記暫定チェックサムと整合する、前記前バージョン・アドレス及び前記対応する前バージョン・チェックサムを、前記ターゲット・トラックに関する前記エクステント・オブジェクト内の前記エントリの前記アクティブ・アドレス列及び前記アクティブ・チェックサム列に書込むための書込み手段と、
前記アクティブ・アドレス列及び前記アクティブ・チェックサム列に書込まれた前記前バージョン・アドレス及び前記前バージョン・チェックサムのバージョンよりも古いバージョンを有する全ての前アドレス列及び前チェックサム列をシフトさせて、前記アクティブ・アドレス列及び前記アクティブ・チェックサム列に書込まれた前記前バージョン・アドレス及び前記対応する前バージョン・チェックサムを含む前記前アドレス列及び前記前チェックサム列を上書きするためのシフト手段と
をさらに備える、
請求項１２又は請求項１４のいずれかに記載のシステム。
【請求項１８】
第１の記憶域及び第２の記憶域内のデータを管理するためのコンピュータ・プログラムであって、
請求項１から請求項１１までのいずれか１項に記載のステップをコンピュータに実行させるコンピュータ・プログラム。
【国際調査報告】
2013533991.tif 000009
2013533991.tif 000010
2013533991.tif 000011