(57)【要約】      （修正有）【課題】ストレージジャーナリングを改善するための方法およびシステムを提供する。【解決手段】ストレージジャーナリングを改善するための技術は、記憶装置ジャーナリングを改善する方法として実現され、フラッシュメモリ内の第１のチャンクのストレージ内の有効ブロックのカウントをジャーナルへ記録する工程と、第２のチャンクをフラッシュメモリへ書き込む要求を受信する工程と、第１のチャンク内の有効ブロックのカウントが規定閾値未満かどうかをコントローラを使用して判断する工程と、第１のチャンク内の有効ブロックの数が規定閾値未満である場合に第２のチャンクをフラッシュメモリ内の第１のチャンクのストレージの場所へ書き込む工程とを含む。【選択図】図４
2017079053.tif 000002
【特許請求の範囲】
【請求項１】
ストレージジャーナリングを改善する方法であって、
フラッシュメモリ内の第１のチャンクのストレージ内の有効ブロックのカウントをジャーナルへ記録する工程と、
第２のチャンクを前記フラッシュメモリへ書き込む要求を受信する工程と、
前記第１のチャンク内の前記有効ブロックのカウントが規定閾値未満かどうかをコントローラを使用して判断する工程と
前記第１のチャンク内の前記有効ブロックの数が前記規定閾値未満である場合に前記フラッシュメモリ内の前記第１のチャンクのストレージの場所へ前記第２のチャンクを書き込む工程と、
回復要求を受信する工程と、
回復シーケンスマップを使用することにより前記フラッシュメモリの１つまたは複数の部分を回復する工程とを含む方法。
【請求項２】
前記有効ブロックのカウントは前記フラッシュメモリ内の１つまたは複数のチャンクのストレージに関連付けられたメタデータ内に維持される、請求項１に記載の方法。
【請求項３】
前記メタデータは論理ブロックアドレスマップに関連付けられて格納される、請求項２に記載の方法。
【請求項４】
前記カウントは前記第１のチャンク内の１つまたは複数のブロックの上書きが発生すると更新される、請求項１に記載の方法。
【請求項５】
前記フラッシュメモリ内の前記第１のチャンクのストレージの場所へ前記第２のチャンクを書き込む工程は、前記第１のチャンクのストレージのデータの一部を再パックする工程と、前記データの一部を前記フラッシュメモリ内の第２の記憶場所へ書き込む工程とを含む、請求項１に記載の方法。
【請求項６】
前記第１のチャンク内の前記有効ブロックの数が前記規定閾値を越える場合に前記フラッシュメモリ内の第３のチャンクのストレージ内の有効ブロックのカウントが前記規定閾値未満であるかどうかを前記コントローラを使用することにより判断する工程をさらに含む請求項１に記載の方法。
【請求項７】
フラッシュメモリのいくつかのチャンクのストレージは「フラッシュメモリの特定チャンクのストレージが規定閾値を満足する数の有効ブロックを含むかどうか」を判断するために順次評価される、請求項１に記載の方法。
【請求項８】
１つまたは複数のチャンクのストレージに関連付けられたメタデータは、前記１つまたは複数のチャンクのストレージのそれぞれ内に有効ブロックのカウントを含んでおり、有効ブロックの最低のカウントを有するストレージのブロックを識別するためにソートされる、請求項１に記載の方法。
【請求項９】
前記閾値は書き込み増幅問題を低減するように規定される、請求項１に記載の方法。
【請求項１０】
前記閾値は、ＣＰＵ利用率のレベル、ネットワーク利用率のレベル、およびユーザ指定優先度のうちの少なくとも１つに応じて調整される、請求項１に記載の方法。
【請求項１１】
前記閾値は、前記第２のチャンクの書き込み場所として前記チャンクの場所を使用するためにブロックの５０パーセント未満が有効ブロックであることを必要とする、請求項１に記載の方法。
【請求項１２】
論理ブロックアドレスとフラッシュメモリブロックシーケンス番号とを関連付ける工程をさらに含む、請求項１に記載の方法。
【請求項１３】
前記論理ブロックアドレスと前記フラッシュメモリブロックシーケンス番号とを関連付ける工程は前記フラッシュメモリブロックシーケンス番号と論理ブロックアドレスマップ内の前記論理ブロックアドレスとを関連付ける工程を含む、請求項１２に記載の方法。
【請求項１４】
前記フラッシュメモリの１つまたは複数の部分を回復する工程は、
回復前に前記フラッシュメモリのチャンクを読み出す工程と、
フラッシュメモリから読み出された前記チャンクの物理ブロックが回復シーケンスマップ内に存在するどうかを判断する工程と、
前記物理ブロックが前記回復シーケンスマップ内に存在しない場合に前記物理ブロックのアドレスを前記論理ブロックアドレスマップへ追加する工程と、
前記チャンクに関連付けられたシーケンス番号を前記回復シーケンスマップへ追加する工程とを含む、請求項１３に記載の方法。
【請求項１５】
前記フラッシュメモリの１つまたは複数の部分を回復する工程は、
回復前に前記フラッシュメモリのチャンクを読み出す工程と、
フラッシュメモリから読み出された前記チャンクの物理ブロックが回復シーケンスマップ内に存在するどうかを判断する工程と、
前記物理ブロックが前記回復シーケンスマップ内に存在する場合に前記読み出されたチャンクに関連付けられたシーケンス番号と前記回復シーケンスマップ内の前記チャンクに関連付けられたシーケンス番号とを比較する工程と、
前記読み出されたチャンクに関連付けられた前記シーケンス番号が前記回復シーケンスマップ内の前記チャンクに関連付けられた前記シーケンス番号より高い場合に前記物理ブロックの物理ブロックアドレスを含むように前記論理ブロックアドレスマップを更新する工程と、前記読み出されたチャンクに関連付けられた前記シーケンス番号を含むように前記回復シーケンスマップを更新する工程とを含む、請求項１３に記載の方法。
【請求項１６】
前記読み出されたチャンクに関連付けられた前記シーケンス番号が前記回復シーケンスマップ内の前記チャンクに関連付けられた前記シーケンス番号より低い場合に、前記読み出されたブロックを無視する工程をさらに含む請求項１５に記載の方法。
【請求項１７】
論理ブロックアドレスにより論理ブロックアドレスマップを区分する工程と、
論理ブロックアドレスにより回復シーケンスマップを区分する工程と、
一範囲のブロックアドレスをロックするためのロックであってフラッシュメモリストレージの同時回復を促進するロックを提供する工程とをさらに含む請求項１３に記載の方法。
【請求項１８】
コンピュータ上で実行可能な一系列の命令からなり、ストレージジャーナリングを改善する方法を行うコンピュータプログラム製品であって、前記コンピュータプログラム製品は、
フラッシュメモリ内の第１のチャンクのストレージ内の有効ブロックのカウントをジャーナルへ記録する工程と、
第２のチャンクを前記フラッシュメモリへ書き込む要求を受信する工程と、
前記第１のチャンク内の有効ブロックのカウントが規定閾値未満かどうかをコントローラを使用して判断する工程と、
前記第１のチャンク内の前記有効ブロックの数が前記規定閾値未満である場合に前記フラッシュメモリ内の前記第１のチャンクのストレージの場所へ前記第２のチャンクを書き込む工程と、
回復要求を受信する工程と、
回復シーケンスマップを使用することにより前記フラッシュメモリの１つまたは複数の部分を回復する工程とを実施するコンピュータプログラム製品。
【請求項１９】
ストレージジャーナリングを改善するためのシステムであって、前記システムは、記憶媒体装置と、前記記憶媒体装置に関連付けられたＰＣＩｅベース装置コントローラとを含み、前記ＰＣＩｅベース装置コントローラは、
フラッシュメモリ内の第１のチャンクのストレージ内の有効ブロックのカウントをジャーナルへ記録し、
第２のチャンクを前記フラッシュメモリへ書き込む要求を受信し、
前記第１のチャンク内の前記有効ブロックのカウントが規定閾値未満かどうかを判断し、
前記第１のチャンク内の前記有効ブロックの数が前記規定閾値未満である場合に前記第２のチャンクを前記フラッシュメモリ内の前記第１のチャンクのストレージの場所へ書き込み、
回復要求を受信し、
そして回復シーケンスマップを使用することにより前記フラッシュメモリの１つまたは複数の部分を回復するように構成される、システム。
【請求項２０】
前記第１のチャンク内の前記有効ブロックの数が前記規定閾値を越える場合、前記ＰＣＩｅベース装置コントローラはさらに、前記フラッシュメモリ内の第３のチャンクのストレージ内の有効ブロックのカウントが前記規定閾値未満かどうかを判断するように構成される、請求項１９に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
ジャーナリングファイルシステムはファイルシステムへ委託する前の変更を追跡し得る。このようなジャーナリングは、システムクラッシュまたはエラーが発生した場合のデータ破損または損失のリスクを低減し得る。ジャーナルは通常は限定サイズのものである。ジャーナルは、空間（例えばファイル）の先頭から端まで書き込み、端に達すると空間の先頭へラップアラウンドし得る。既存のジャーナリング処理済みデータレイアウトは「有用データは、ジャーナルがラップアラウンドして既存データが存在する点に到達すると上書きされなければならない」という問題に悩まされる。残りの有用データは廃棄されなければならないまたは新しい場所へ書き換えられなければならなく「書き込み増幅」を引き起こし、性能を低下させる（書き込みは通常、読み出しより遅いので）。
【発明の概要】
【課題を解決するための手段】
【０００２】
ストレージジャーナリングを改善するための技術が開示される。いくつかの実施形態では、ストレージジャーナリングを改善する方法としていくつかの技術が実現され得る。本方法は、フラッシュメモリ内の第１のチャンクのストレージ内の有効ブロックのカウントをジャーナルへ記録する工程と、第２のチャンクをフラッシュメモリへ書き込む要求を受信する工程と、第１のチャンク内の有効ブロックのカウントが規定閾値未満かどうかをコントローラを使用して判断する工程と、第１のチャンク内の有効ブロックの数が規定閾値未満である場合に第２のチャンクをフラッシュメモリ内の第１のチャンクのストレージの場所へ書き込む工程とを含む。
【０００３】
いくつかの実施形態は、ジャーナルが連続的に再生されることを要求することなくジャーナルを「再生」して常にデータの正しい状態を回復する能力を提供することによりデータをジャーナル内に格納する工程を含む。いくつかの実施形態は、通常（書き込み）動作中にジャーナルのいくつかの部分をスキップする能力を含み得る。以下にさらに詳細に論述されるように、ジャーナルは、スキップされた古いデータを含む場合ですらジャーナルの回復（再生）を行う能力を提供し得る。ジャーナルはさらに、多くのＣＰＵコアを使用することにより回復を並列に行う能力を提供し得る。
【０００４】
本開示の態様によると、ストレージジャーナリングを改善する方法は、フラッシュメモリ内の第１のチャンクのストレージ内の有効ブロックのカウントをジャーナルへ記録する工程と、第２のチャンクをフラッシュメモリへ書き込む要求を受信する工程と、第１のチャンク内の有効ブロックのカウントが規定閾値未満かどうかをコントローラを使用して判断する工程とを含み得る。本方法はまた、第２のチャンクをフラッシュメモリ内の第１のチャンクのストレージの場所へ書き込む工程と、第１のチャンク内の有効ブロックの数が規定閾値未満である場合に回復要求を受信する工程と、回復シーケンスマップを使用することによりフラッシュメモリの１つまたは複数の部分を回復する工程とを含み得る。
【０００５】
この実施形態の追加態様によると、有効ブロックのカウントは、フラッシュメモリ内の１つまたは複数のチャンクのストレージに関連付けられたメタデータ内に維持され得、メタデータは論理ブロックアドレスマップに関連付けられて格納され得る。
【０００６】
この実施形態の追加態様によると、カウントは第１のチャンク内の１つまたは複数のブロックの上書きが発生すると更新される。
【０００７】
この実施形態の追加態様によると、第２のチャンクをフラッシュメモリ内の第１のチャンクのストレージの場所へ書き込む工程は、第１のチャンクのストレージのデータの一部を再パックする工程と、上記データの一部をフラッシュメモリ内の第２の記憶場所へ書き込む工程とを含み得る。
【０００８】
この実施形態の追加態様によると、第１のチャンク内の有効ブロックの数が規定閾値を越える場合、本方法は、フラッシュメモリ内の第３のチャンクのストレージ内の有効ブロックのカウントが規定閾値未満であるかどうかをコントローラを使用することにより判断し得る。
【０００９】
この実施形態の追加態様によると、フラッシュメモリのいくつかのチャンクのストレージは「フラッシュメモリの特定チャンクのストレージが、規定閾値を満足する数の有効ブロックを含むかどうか」を判断するために順次評価され得る。
【００１０】
この実施形態の追加態様によると、１つまたは複数のチャンクのストレージに関連付けられたメタデータは、１つまたは複数のチャンクのストレージのそれぞれの中の有効ブロックのカウントを含み得、最低カウントの有効ブロックを有するストレージのブロックを識別するためにソートされる。
【００１１】
この実施形態の追加態様によると、閾値は書き込み増幅問題を低減するように規定され得る。
【００１２】
この実施形態の追加態様によると、閾値は、ＣＰＵ利用率のレベル、ネットワーク利用率のレベル、およびユーザ指定優先度のうちの少なくとも１つに応じて調整され得る。
【００１３】
この実施形態の追加態様によると、閾値は、第２のチャンクの書き込み場所としてチャンクの場所を使用するためにブロックの５０パーセント未満が有効ブロックであることを必要とする。
【００１４】
この実施形態の追加態様によると、本方法はまた、論理ブロックアドレスとフラッシュメモリブロックシーケンス番号とを関連付ける工程を含み得る。
【００１５】
この実施形態の追加態様によると、論理ブロックアドレスとフラッシュメモリブロックシーケンス番号とを関連付ける工程はフラッシュメモリブロックシーケンス番号と論理ブロックアドレスマップ内の論理ブロックアドレスとを関連付ける工程を含み得る。
【００１６】
この実施形態の追加態様によると、フラッシュメモリの１つまたは複数の部分を回復する工程は、回復前にフラッシュメモリのチャンクを読み出す工程と、フラッシュメモリから読み出されたチャンクの物理ブロックが回復シーケンスマップ内に存在するかどうかを判断する工程と、物理ブロックが回復シーケンスマップ内に存在しない場合に物理ブロックのアドレスを論理ブロックアドレスマップへ追加する工程と、チャンクに関連付けられたシーケンス番号を回復シーケンスマップへ追加する工程とを含み得る。
【００１７】
この実施形態の追加態様によると、フラッシュメモリの１つまたは複数の部分を回復する工程は、回復前にフラッシュメモリのチャンクを読み出す工程と、フラッシュメモリから読み出されたチャンクの物理ブロックが回復シーケンスマップ内に存在するかどうかを判断する工程と、物理ブロックが回復シーケンスマップ内に存在する場合、読み出されたチャンクに関連付けられたシーケンス番号と回復シーケンスマップ内のチャンクに関連付けられたシーケンス番号とを比較する工程と、読み出されたチャンクに関連付けられたシーケンス番号が回復シーケンスマップ内のチャンクに関連付けられたシーケンス番号より高い場合、物理ブロックの物理ブロックアドレスを含むように論理ブロックアドレスマップを更新する工程と、読み出されたチャンクに関連付けられたシーケンス番号を含むように回復シーケンスマップを更新する工程とを含み得る。
【００１８】
この実施形態の追加態様によると、本方法は、読み出されたチャンクに関連付けられたシーケンス番号が回復シーケンスマップ内のチャンクに関連付けられたシーケンス番号未満である場合に、読み出されたブロックを無視する工程を含み得る。
【００１９】
この実施形態の追加態様によると、本方法はさらに、論理ブロックアドレスにより論理ブロックアドレスマップを区分する工程と、論理ブロックアドレスにより回復シーケンスマップを区分する工程と、一範囲のブロックアドレスをロックするためのロックであってフラッシュメモリストレージの同時回復を促進するロックを提供する工程とを含み得る。
【００２０】
本開示の態様によると、コンピュータ上で実行可能な一系列の命令からなるコンピュータプログラム製品であって、ストレージジャーナリングを改善する方法を行うコンピュータプログラム製品が提供される。本コンピュータプログラム製品は、フラッシュメモリ内の第１のチャンクのストレージ内の有効ブロックのカウントをジャーナルへ記録する工程と、第２のチャンクをフラッシュメモリへ書き込む要求を受信する工程と、第１のチャンク内の有効ブロックのカウントが規定閾値未満かどうかをコントローラを使用して判断する工程と、第１のチャンク内の有効ブロックの数が規定閾値未満である場合に第２のチャンクをフラッシュメモリ内の第１のチャンクのストレージの場所へ書き込む工程と、回復要求を受信する工程と、回復シーケンスマップを使用することによりフラッシュメモリの１つまたは複数の部分を回復する工程とを実施する。
【００２１】
本開示の態様によると、ストレージジャーナリングを改善するためのシステムは、記憶媒体装置と、記憶媒体装置に関連付けられたＰＣＩｅベース装置コントローラとを含み得る。ＰＣＩｅベース装置コントローラは、フラッシュメモリ内の第１のチャンクのストレージ内の有効ブロックのカウントをジャーナルへ記録し、第２のチャンクをフラッシュメモリへ書き込む要求を受信し、第１のチャンク内の有効ブロックのカウントが規定閾値未満かどうかをコントローラを使用して判断し、第１のチャンク内の有効ブロックの数が規定閾値未満である場合に第２のチャンクをフラッシュメモリ内の第１のチャンクのストレージの場所へ書き込み、回復要求を受信し、そして回復シーケンスマップを使用することによりフラッシュメモリの１つまたは複数の部分を回復するように構成される。
【００２２】
この実施形態の追加態様によると、第１のチャンク内の有効ブロックの数が規定閾値を越える場合、装置コントローラは、フラッシュメモリ内の第３のチャンクのストレージ内の有効ブロックのカウントが規定閾値未満かどうかを判断し得る。
【００２３】
次に、本開示について、添付図面に示すその例示的実施形態を参照してさらに詳細に説明する。本開示は例示的実施形態を参照して以下に説明されるが、本開示はそれに限定されないということを理解すべきである。本明細書の教示へアクセスする当業者は、本明細書で説明する本開示の範囲内でありかつ本開示が著しく実用的であり得る他の分野の使用だけでなく追加の実装、修正、実施形態を認識することになる。
【００２４】
次に、本開示のより完全な理解を容易にするために添付図面を参照するが、ここでは同様な要素は同様な参照符号で参照される。これらの添付図面は本開示を制限するものとして解釈されるべきでなく、単なる例示であるように意図されている。
【図面の簡単な説明】
【００２５】
【図１】本開示の一実施形態による、ホスト装置と通信する複数のＰＣＩｅ装置を描写するブロック図である。
【図２】本開示の実施形態による、改善されたストレージジャーナリングのデータ構造を描写するブロック図である。
【図３】本開示の実施形態による、ストレージジャーナリングを改善するための部品を描写するブロック図である。
【図４】本開示の実施形態による、ストレージジャーナリングを改善する方法を示すフローチャートを描写する。
【図５】本開示の実施形態による、改善されたストレージジャーナリングを使用することにより回復する方法を示すフローチャートを描写する。
【発明を実施するための形態】
【００２６】
本開示は、固体ドライブ（「ＳＳＤ」）（例えば、フラッシュメモリを含む）のストレージジャーナリングを改善するための技術に関する。改善されたストレージジャーナリングを可能にするラングムアクセスフレンドリ固体ストレージ、データ構造、アルゴリズム、および／または回路構成（例えば（マイクロ）プロセッサ、論理ゲート、スイッチ、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジック制御装置（例えばＦＰＧＡ）、埋め込みマイクロコントローラ）が提供され得る。
【００２７】
次に添付図面を参照すると、図１は、本開示の一実施形態による、ホスト装置と通信するＰＣＩｅ装置を描写するブロック図である。図１は、ホストシステム１０２、ホストＣＰＵ１０４、ＰＣＩエクスプレスルートコンプレックス１０６など多くの計算技術を含む。スイッチ１０８は、ターゲット１１０、１１６、１２２などの複数のターゲット（例えばＮＶＭｅベースターゲットなどのＰＣＩｅ装置）をＰＣＩエクスプレスルートコンプレックス１０６を介しホストシステム１０２へ通信可能に結合し得る。
【００２８】
ターゲット１１０はコントローラ１１２（例えばＮＶＭｅコントローラ）と非揮発性記憶装置１１４を含み得る。ターゲット１１６はコントローラ１１８（例えばＮＶＭｅコントローラ）と非揮発性記憶装置１２０を含み得る。ターゲット１２２はコントローラ１２４（例えばＮＶＭｅコントローラ）と非揮発性記憶装置１２６を含み得る。
【００２９】
メモリベース資源はメモリインターフェースを介しホストシステム１０２へアクセス可能であり得る（例えば、ダブルデータレート型３同期ダイナミックランダムアクセスメモリ（ＤＤＲ３  ＳＤＲＡＭ））。メモリは、限定しないが固体メモリなどの任意の好適な形式を採り得る（例えばフラッシュメモリ、または固体ドライブ（ＳＳＤ））、光メモリ、および磁気メモリ）。
【００３０】
いくつかの実施形態によると、ＰＣＩｅ以外のインターフェース標準規格が、限定しないが、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）、アドバンストテクノロジーアタッチメント（ＡＴＡ）、スモールコンピュータシステムインターフェース（ＳＣＳＩ）、拡張ＰＣＩ（ＰＣＩ−Ｘ）、ファイバチャンネル、シリアルアタッチドＳＣＳＩ（ＳＡＳ）、セキュアデジタル（ＳＤ）、埋め込みマルチメディアカード（ＥＭＭＣ）、およびユニバーサルフラッシュストレージ（ＵＦＳ）を含む１つまたは複数の部分に使用され得る。
【００３１】
ホストシステム１０２は、限定しないが、企業サーバ、データベースホスト、ワークステーション、パーソナルコンピュータ、携帯電話、ゲーム装置、個人用デジタル情報処理端末（ＰＤＡ）、電子メール／テキストメッセージ装置、デジタルカメラ、デジタル媒体（例えばＭＰ３）プレーヤ、ＧＰＳナビゲーション装置、ＴＶシステムなど任意の好適な形式を採り得る。
【００３２】
ホストシステム１０２とターゲット装置は追加の部品（図面を簡単にするために図１において図示しない）を含み得る。また、いくつかの実施形態では、示された部品のすべてが存在するとは限らない。さらに、様々なコントローラ、ブロック、インターフェースが任意の好適なやり方で実装され得る。例えば、コントローラは、マイクロプロセッサまたはプロセッサ、（マイクロ）プロセッサにより実行可能なコンピュータ可読プログラムコード（例えばソフトウェアまたはファームウェア）を格納するコンピュータ可読媒体、論理ゲート、スイッチ、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジック制御装置（例えばＦＰＧＡ）、埋め込みマイクロコントローラのうちの１つまたは複数の形式を採り得る。
【００３３】
図２は、本開示の実施形態による、改善されたストレージジャーナリングのデータ構造を描写するブロック図である。図２は、チャンク２０２、チャンク２０３〜チャンクｎ、チャンク有効ブロックカウント２１０、論理−物理マッピング２１２、および回復マッピング２１４を含む。いくつかの実施形態では、チャンク有効ブロックカウント２１０、論理−物理マッピング２１２、回復マッピング２１４のうちの２つ以上が組み合わせられ得る。
【００３４】
データは、多くの個々の「ブロック」のデータおよびメタデータを含み得る「チャンク」内に書き出され得る（例えば連続的に）。ブロックは後で上書きされれば、適所に更新されなくてもよい。その代り、更新データブロックが新しいチャンク内に書き込まれ得る。チャンクは通常、記憶装置の端に達するまで連続的に書き出され得る。通常、ジャーナリング処理済みデータレイアウトは、記憶装置内のストレージの端に達すると、チャンク書き込みを装置の先頭へ「ラップアラウンド」する。この時点で、新しいチャンク書き込みは通常、既存チャンクを上書きし、これらのチャンク内の有効データは最初に、新しいチャンク内に再パックされ得るまたは廃棄され得る。
【００３５】
本開示の実施形態は、いかなる時もアンクリーンシャットダウンまたはクラッシュに耐えることができるデータレイアウトを提供し得る。アンクリーンシャットダウンまたはクラッシュに対処するために、実施形態はジャーナリング処理済みレイアウトを使用し得る。２つのチャンクで示されたが、記憶装置はストレージの任意数の部分（例えば最大チャンクｎ）を含み得る。チャンク２０２、２０３は特定サイズのチャンクとして描写されるが、ストレージの他のサイズ、部分またはタイプ（例えば様々なサイズのトラック、セクタ、チャンクなど）が使用され得る。図２に示すように、チャンク２０２、２０３は６４ブロックのストレージを含み得、そのいくつか（例えばブロック２０６、２１６を含む暗ブロック）は有効データにより使用され、そのいくつか（例えばブロック２０８を含む明ブロック）は未使用データまたは上書きされた保持データのいずれかである。チャンク２０２、２０３はストレージジャーナリングシステム内の２つのチャンクであり得、それぞれシーケンス番号（すなわち、それぞれ２０２、２０３）に関連付けられ得る。いくつかの実施形態では、チャンク２０２はジャーナルシステムが現在書き込んでいるチャンクであり得、チャンク２０３は次の連続チャンクであり得る。
【００３６】
いくつかの実施形態によると、各チャンク内の現在有効なブロックの数がチャンク有効ブロックカウント２１０内に格納され得る（例えば、チャンクシーケンス番号２０２内の４３個の有効ブロック、チャンクシーケンス番号２０３内の２２個の有効ブロック）。他の実施形態では、データ構造はストレージのトラック、セクタ、または他の部分内の有効ブロックの数を追跡し得る。チャンク有効ブロックカウント２１０はチャンクのシーケンス番号と有効ブロック（例えば、削除または上書きされていないデータを含むブロック）のカウントとを関連付け得る。書き込み要求が受信されれば、書き込み要求を処理する方法または回路構成（例えば記憶装置２０９のストレージコントローラ）は、現在のチャンクへ書き込むべきかどうかを１つまたは複数の要因に基づき判断し得る。例えば、現在のチャンクを使用すべきかどうかの判断は、現在のチャンク内の有効ブロックの数が規定閾値未満かどうかに基づきなされ得る。例えば、閾値が５０％であり、現在のチャンクがチャンクシーケンス番号２０２であれば、有効ブロックの数は、チャンク有効ブロックカウント２１０内のカウントへマッピングすべきシーケンス番号を使用することにより識別され得る。本例では、チャンクシーケンス番号２０２の６４個のブロックのうちの４３個のブロックが有効であり得る（約６７％）。チャンクシーケンス番号２０３の評価は、６４個のブロックのうちの２２個のブロックだけが有効である（約３４％）と判断し得、したがってチャンクシーケンス番号２０２は「スキップ」され得、書き込み要求のデータはチャンクシーケンス番号２０３へ書き込まれ得る。
【００３７】
データをチャンクシーケンス番号２０３へ書き込み、チャンクシーケンス番号２０２をスキップすることは、従来の連続ジャーナルモデルから離脱し得、回復力を保証するために追加のデータを要求し得る。回復マッピング２１４は、データの有効部分（例えばデータの最新ブロックを含む物理的チャンク）に関連付けられたシーケンス番号を追跡し得る。伝統的に、回復は、同じ論理ブロックアドレスに関連付けられた物理ブロックを有する高いシーケンス番号を有する新しいチャンクが識別されるまで、チャンクを連続的に読み出し、論理ブロックアドレスに関連付けられた物理的ストレージのブロックを有するチャンクを使用し得る。この時、新しい物理ブロックアドレスは論理ブロックアドレスに関連付けられ得る。回復マッピング２１４は、回復方法がストレージの一部の現行版を識別し得るように、ストレージの一部のシーケンス番号または他の指標と論理ブロックアドレスとを関連付け得る。例えば、回復マッピング２１４はチャンクのシーケンス番号と論理ブロックアドレスとを関連付け得る。いくつかの実施形態では、回復要求が受信されると、ストレージの１つまたは複数の部分が連続的に読み出され得る。回復マッピング２１４は、データの現複製を有する物理ブロックを有するチャンクのシーケンス番号と論理ブロックアドレスとを関連付けるためにストレージが読み出されると、生成され得る。
【００３８】
いくつかの実施形態では、回復マッピング２１４は、論理ブロック毎ベース、一範囲のブロックベース、またはストレージの別の単位ベースであり得るロッキングを提供し得る。回復シーケンスマップの生成は、論理ブロックの現在データを有する物理ブロックに関連付けられたチャンクのシーケンス番号を示し得、回復は、すべての書き込み要求がジャーナルから読み出され連続的に適用されることを必要としなくてもよい。チャンクは並列に読み出され回復され得る。回復マッピング２１４は、論理ブロックアドレスにより回復シーケンスマップおよび／または論理ブロックアドレスマップを区分し、論理ブロックアドレスまたは一範囲の論理ブロックアドレスに関するロックを提供し、様々な論理ブロックまたは様々な範囲の論理ブロックが同時に取り出され得るようにする。
【００３９】
論理−物理マッピング２１２は、論理ブロックと記憶装置の物理ブロックとを関連付け得る。いくつかの実施形態では、チャンクシーケンス番号は、論理ブロックに対応する有効物理ブロックを有する物理的チャンクを示すために論理ブロックに関連付けられ得る。
【００４０】
図３は、本開示の実施形態による、ストレージジャーナリングを改善するための部品を描写する。部品は、ハードウェア（例えば専用回路構成）、ファームウェア、ソフトウェアまたはこれらの組み合わせであり得る。
【００４１】
以下の記述は、１つまたは複数の部品を含み得るバックアップおよび回復のためのシステムおよび方法のネットワーク要素、コンピュータ、および／または部品を説明する。本明細書で使用されるように、用語「部品」は、計算ソフトウェア、ファームウェア、ハードウェア、および／またはそれらの様々な組み合わせ（例えば、（マイクロ）プロセッサ、論理ゲート、スイッチ、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジック制御装置（例えばＦＰＧＡ）、埋め込みマイクロコントローラ、実行可能命令を含む電子的ストレージなど）を指すように理解され得る。しかし、部品は、ハードウェア、ファームウェア上に実装されないまたはプロセッサ可読記録可能記憶媒体上に記録されないソフトウェアとして解釈されてはならない（すなわち、部品それ自体はソフトウェアではない）。部品は例示的であるということに留意されたい。部品は、様々な用途を支援するために組み合わせられ、一体化され、分離されおよび／または複製され得る。また、特定部品において行われるものとして本明細書において説明される機能は、１つまたは複数の他の部品において行われ得る、および／または特定部品において行われる機能の代わりにまたはそれに加えて１つまたは複数の他の装置により行われ得る。さらに、部品は、複数の装置および／またはローカルなまたは互いに離れた他の部品全体にわたって実装され得る。加えて、部品は、１つの装置から移動され、別の装置へ加えられ、および／または両方の装置に含まれ得る。いくつかの実施形態では、１つまたは複数の部品は、ＳＳＤコントローラ、ホストシステムおよび／またはＳＳＤ最適化ソフトウェアの一部として実装され得る。図３に示すように、ストレージジャーナリング改善部品３１０は、有効ブロック監視部品３１２、ターゲットチャンク識別部品３１４、回復マップ管理部品３１６、エラーログ記録および報告部品３１８を含み得る。
【００４２】
有効ブロック監視部品３１２はチャンク内の有効ブロック（すなわち上書きされていないブロック）の数、百分率または他の指標を追跡し得る。
【００４３】
ジャーナルがラップアラウンドする（すなわち、フラッシュストレージの連続端に到達し、フラッシュストレージの先頭から継続する）前に上書きされていないチャンク内のブロックは、書き換えまたは喪失される必要があり得る有効データを含み得る。有効ブロック監視部品３１２は有効ブロックを追跡し、情報をチャンクに関連付けられたメタデータ内に格納し得る。メタデータは、論理ブロックアドレス（ＬＢＡ）マップに関連付けられ得、データの有効性または無効性の測度（例えば有効ブロックの数、無効なまたは上書きされたブロックの数、有効ブロックの百分率、無効ブロックの百分率など）を示し得る。有効性カウントを含むメタデータは、論理ブロックアドレスを物理ブロックアドレスへマッピングすることにより論理ブロックアドレスマップの一部として格納されてもよいし、別のデータ構造で格納されてもよい。有効性のカウントまたは他の指標は、チャンクまたは別のグループ化（例えばディスクドライブ上のセクタ、ディスクドライブ上のトラックなど）によりグループ化され得る。有効ブロック監視部品３１２は、ストレージの部分への書き込みを監視し得、上書きが発生するとカウントを更新（例えば特定チャンク内のブロックが上書きされるとチャンク内の有効ブロックの数を低減）し得る。
【００４４】
ターゲットチャンク識別部品３１４は、書き込みのためのストレージの一部を識別するためにデータ有効性に関するメタデータを使用し得る。書き換えを必要とする当該ストレージの有効部分の数を低減するためにストレージの一部が識別されてもよいし、選択されもよい。これは、書き込み増幅問題、Ｉ／Ｏトラフィック、ＣＰＵまたはコントローラ利用率、記憶装置上の摩耗を低減し得る。例えば、ターゲットチャンク識別部品３１４は、大量の有効データを含むチャンクをスキップし、上書き要求またはその代りにデータ無効化を既に受信したチャンクを上書きし得る。いくつかの実施形態では、ターゲットチャンク識別部品３１４は、チャンク内の有効ブロックのカウントなどのメタデータを使用してもよいし、メタデータと規定閾値とを比較してもよい。例えば、識別されたチャンク内の有効ブロックの数が規定閾値未満であれば、ターゲットチャンク識別部品３１４は、識別されたチャンクのストレージを書き込み要求のチャンクのターゲット場所として選択し得る。識別されたチャンクの１つまたは複数の有効ブロックは、ストレージが書き込み要求により上書きされる前に、新しいチャンク内に読み出され再パックされ得る。再パックされたデータは、新しいチャンクの一部としてストレージ内の第２の場所へ書き込まれ得る。しかし、識別されたチャンク内の有効ブロックの数が閾値を満足するか越えるということをターゲットチャンク識別部品３１４が判断すれば、ターゲットチャンク識別部品３１４は当該チャンクをスキップし、潜在的ターゲット書き込み場所の別のチャンクを評価し得る。いくつかの実施形態では、いくつかのチャンクまたは他の単位のストレージが連続的に評価され得る。１つまたは複数の実施形態では、最低量の有効ストレージを有するストレージの一部（例えばチャンク、トラック、セクタ）を識別し得るようにするメタデータがソートされ得る。ターゲットチャンク識別部品３１４はまた、ストレージの一部を上書きすべきかどうかを判断する際に他の因子（例えばデータの年令、最終更新時期、データの使用のホット性または頻度、データの順序、ストレージの一部に関連付けられたエラー等）を評価し得る。
【００４５】
いくつかの実施形態では、ターゲットチャンク識別部品３１４により評価される閾値または他の因子は、１つまたは複数の因子に応じて調整され得る。因子は、例えばＣＰＵ利用率のレベル、ネットワーク利用率のレベル、ユーザ指定優先度を含み得る。いくつかの実施形態では、閾値は、チャンクの場所を第２のチャンクの書き込み場所として使用するためにブロックの５０パーセント未満が有効ブロックであることを必要とし得る。
【００４６】
データの一部をスキップすることは、連続回復を期待し得る従来のジャーナル回復フォーマットを壊し得る。回復マップ管理部品３１６は、それにもかかわらずチャンクをスキップしたジャーナルを回復するための１つまたは複数のデータ構造を生成および／または管理し得る。いくつかのデータフォーマットは、回復に使用され得るシーケンス番号を含み得る。例えば、チャンクが書き出されると、チャンクは単調に増加し得るシーケンス番号を含み得る。回復マップ管理部品３１６は、データの有効部分（例えばデータの最新複製を含む物理ブロック）に関連付けられたシーケンス番号を追跡し得る。伝統的に、回復は、同じ論理ブロックアドレスに関連付けられた物理ブロックを有する高いシーケンス番号を有する新しいチャンクが識別されるまで、チャンクを連続的に読み出し、論理ブロックアドレスに関連付けられた物理的ストレージのブロックを有するチャンクを使用し得る。この時、新しい物理ブロックアドレスは論理ブロックアドレスに関連付けられ得る。回復マップ管理部品３１６は、回復方法がストレージの一部の現行版を識別し得るように、ストレージの一部のシーケンス番号または他の指標と論理ブロックアドレスとを関連付け得る。例えば、回復マップ管理部品３１６は、チャンクのシーケンス番号と論理ブロックアドレスとを関連付け得る。いくつかの実施形態では、回復要求が受信されると、回復マップ管理部品３１６はストレージの１つまたは複数の部分を連続的に読み出し得る。例えば、回復マップ管理部品３１６はストレージのすべてのチャンクとそれらのブロックとを読み出し得る。いくつかの実施形態では、回復マップ管理部品３１６は、データの現複製を含む物理ブロックを有するチャンクのシーケンス番号と論理ブロックアドレスとを関連付けるデータ構造（例えば回復シーケンスマップ）を生成し得る。
【００４７】
ストレージのブロックを読み出す際、回復マップ管理部品３１６はブロックが回復シーケンスマップ内に存在するかどうかを判断し得る。ブロックが回復シーケンスマップ内に存在しなければ、回復マップ管理部品３１６はブロックを含む現在のチャンクのシーケンス番号を有するエントリを追加し得る。回復マップ管理部品３１６はまた、シーケンス番号を論理ブロックアドレスマップへ追加し得る。ブロックが回復シーケンスマップ内に存在すれば、回復マップ管理部品３１６は、現在読み出されたチャンクに関連付けられたシーケンス番号と回復シーケンスマップ内に格納されたシーケンス番号とを比較し得る。回復シーケンスマップ内に格納されたシーケンス番号が現在読み出されたチャンクより高ければ、現在読み出されたチャンクのブロックは無視され得る。現在読み出されたチャンクのシーケンス番号が回復シーケンスマップ内に格納されたシーケンス番号より高ければ、回復シーケンスマップと論理ブロックアドレスマップは新しいシーケンス番号と物理ブロックアドレスとを含むように更新され得る。いくつかの実施形態では、回復マップ管理部品３１６はＩ／Ｏを監視し得、書き込みが発生すれば、論理ブロックアドレスは、現在書き込まれた物理ブロックの現在のチャンクおよび物理ブロックアドレスのシーケンス番号に関連付けられ得る。ブロックが削除されたということを後のチャンク（例えばより高いシーケンス番号を有するチャンク）が示せば、ブロックは、論理ブロックアドレスマップと回復シーケンスマップから削除され得る。
【００４８】
１つまたは複数（例えば回復されているフラッシュストレージのすべての使用ブロック）の読み出しが終了すると、回復マップ管理部品３１６は回復を促進し得る。回復マップ管理部品３１６は、論理ブロック毎ベース、一範囲のブロックベース、またはストレージの別の単位ベースであり得るロッキングを提供し得る。回復シーケンスマップの生成は、論理ブロックの現在データを有する物理ブロックに関連付けられたチャンクのシーケンス番号を示し得、回復は、すべての書き込み要求がジャーナルから読み出され連続的に適用されることを必要としなくてもよい。チャンクは並列に読み出され、同時並行性制限無しに回復され得る（すなわち、全回復が連続であり連続化された場合、ジャーナルに従って順番に進む）。本明細書における開示システムおよび方法では、すべてのチャンクは記憶装置から並列に読み出され得、それらの読み出しが完了するや否や並列に処理され得る。回復マップ管理部品３１６は、論理ブロックアドレスにより回復シーケンスマップおよび／または論理ブロックアドレスマップを区分し得、論理ブロックアドレスまたは一範囲の論理ブロックアドレスに対するロックを提供し、様々な論理ブロックまたは様々な範囲の論理ブロックが同時に取り出され得るようにする。回復シーケンスおよび論理ブロックアドレスマップへのアクセスは、上書き検出を制御する機構であるので連続化されたやり方で行われることになる。論理ブロックアドレスによりこれらのマップを区分することで、この連続化の影響を緩和し得る。アクセスは特定ブロックアドレス内だけで連続化される必要があるので、ロックを共有する一範囲のブロックアドレスは、ブロック毎のロックを必要とすることなく回復が可能な限り並列となるようにし得る。
【００４９】
エラーログ記録および報告部品３１８は、エラーを捕捉し、ブロック監視またはチャンク識別子に関連付けられたエラーをログ記録し得る。いくつかの実施形態では、エラーログ記録および報告部品３１８はエラーの通知を提供し得る。
【００５０】
図４は、本開示の実施形態による、ストレージジャーナリングを改善する方法を示すフローチャートを描写する。但し、方法４００は例示的に過ぎない。方法４００は、例えば段階を追加、変更、除去、または再配置することにより変更され得る。段階４０２において、方法は開始し得る。
【００５１】
段階４０４では、チャンク内の有効ブロックの数が識別され得る。チャンク内の有効ブロック（すなわち上書きされていないブロック）の数、百分率または他の指標が識別され得る。ジャーナルがラップアラウンドする（すなわち、フラッシュストレージの連続端に到達し、フラッシュストレージの先頭から継続する）前に上書きされていないチャンク内のブロックは、書き換えられる必要があり得るまたはそうでなければ喪失され得る有効データを含み得る。有効ブロックが追跡され、それらのブロックの数はチャンクに関連付けられたメタデータ内（例えば図２のチャンク有効ブロックカウント２１０内）に格納され得る。メタデータは、論理ブロックアドレス（ＬＢＡ）マップに関連付けられ得、データの有効性または無効性の測度（例えば有効ブロックの数、無効なまたは上書きされたブロックの数、有効ブロックの百分率、無効ブロックの百分率など）を示し得る。有効性カウントを含むメタデータは、論理ブロックアドレスを物理ブロックアドレスへマッピングすること（例えば図２の論理−物理マッピング２１２）により論理ブロックアドレスマップの一部として格納されてもよいし、別のデータ構造（例えば図２のチャンク有効ブロックカウント２１０）内に格納されてもよい。有効性のカウントまたは他の指標はチャンクまたは別のグループ化によりグループ化され得る（例えばディスクドライブ上のセクタ、ディスクドライブ上のトラックなど）。いくつかの実施形態では、ストレージの一部への書き込みが監視され得、カウントは、上書きが発生するまたはブロックが削除されると、更新され得る（例えば特定チャンク内のブロックが上書きされるとチャンク内の有効ブロックの数を低減する）。
【００５２】
段階４０６では、書き込み要求が受信され得る。段階４０８では、ジャーナルの現在のチャンクが書き込み要求の適切な場所に存在するかどうかが判断され得る。判断は１つまたは複数の因子に基づき得る。
【００５３】
データ有効性に関するメタデータは、書き込みのためのストレージの一部を識別するために使用され得る。書き換えを必要とする当該ストレージの有効部分の数を低減するためにストレージの一部が識別されてもよいし、選択されもよい。これは、書き込み増幅問題、Ｉ／Ｏトラフィック、ＣＰＵまたはコントローラ利用率、および記憶装置上の摩耗を低減し得る。例えば、大量の有効データを含むチャンクはスキップされ得、上書き要求またはデータ無効化を既に受信したチャンクがその代わりに上書きされ得る。チャンクの評価中、チャンク内の（例えば段階３０４において生成されたメタデータからの）有効ブロックのカウントは規定閾値と比較され得る。例えば、識別されたチャンク内の有効ブロックの数が規定閾値未満であればチャンクは書き込み要求のチャンクのターゲット場所として選択され得、本方法は段階４１２において継続し得る。しかし、識別されたチャンク内の有効ブロックの数が閾値を満足するか越えると判断されれば、同チャンクはスキップされ得、本方法は段階４１０において継続し得る。
【００５４】
いくつかの実施形態では、ストレージのチャンクまたは他のユニットは連続的に評価され得る。１つまたは複数の実施形態では、最低量の有効ストレージを有するストレージの一部（例えばチャンク、トラック、セクタ）を識別し得るようにするメタデータがソートされ得る。ストレージの一部を上書きすべきかどうかを判断する際に他の因子（例えばデータの年令、最終更新時期、データの使用のホット性または頻度、データの順序、ストレージの一部に関連付けられたエラー等）が評価され得る。
【００５５】
いくつかの実施形態では、評価される閾値または他の因子は１つまたは複数の因子に応じて調整され得る。因子は、例えばＣＰＵ利用率のレベル、ネットワーク利用率のレベル、ユーザ指定優先度を含み得る。いくつかの実施形態では、閾値は、チャンクの場所を第２のチャンクの書き込み場所として使用するためにブロックの５０パーセント未満が有効ブロックであることを必要とし得る。
【００５６】
段階４１０では、潜在的ターゲット書き込み場所の別のチャンクが評価され得る。段階４１２では、識別されたチャンクの１つまたは複数の有効ブロックは、ストレージが書き込み要求により上書きされる前に、新しいチャンク内に読み出され再パックされ得る。段階４１４では、再パックされたデータは、新しいチャンクの一部としてストレージ内の第２の場所へ書き込まれ得る。段階４１６において、方法４００は終了し得る。
【００５７】
図５は、本開示の実施形態による、改善されたストレージジャーナリングを使用することにより回復する方法を示すフローチャートを描写する。
【００５８】
但し、方法５００は例示的に過ぎない。方法５００は、例えば段階を追加、変更、除去、または再配置することにより変更され得る。段階５０２において、本方法は開始し得る。
【００５９】
段階５０４では、チャンクをスキップしたジャーナルを回復するための１つまたは複数のデータ構造（例えば図２の回復マッピング２１４）が生成され得る。いくつかのデータフォーマットは、回復に使用され得るシーケンス番号を含み得る。例えば、チャンクが書き出される場合、チャンクは単調に増加するシーケンス番号を含み得る。データの有効部分（例えばデータの最新複製を含む物理ブロック）に関連付けられたシーケンス番号が追跡され得る。ストレージの一部のシーケンス番号または他の指標は、回復方法がストレージの一部の現行版を識別し得るように論理ブロックアドレスに関連付けられ得る。例えば、チャンクのシーケンス番号は論理ブロックアドレスに関連付けられ得る。いくつかの実施形態では、データの現複製を有する物理ブロックを有するチャンクのシーケンス番号と論理ブロックアドレスとを関連付けるデータ構造（例えば回復シーケンスマップ）が生成され得る。
【００６０】
段階５０６では、いくつかの実施形態では、回復要求が受信されると、ストレージの１つまたは複数の部分が（例えば連続的に）読み出され得る。例えば、ストレージのすべてのチャンクとそれらのブロックとが読み出され得る。
【００６１】
段階５０８では、ブロックが回復シーケンスマップ内に存在するかどうかが判断され得る。ブロックが回復シーケンスマップ内に存在しなければ、本方法は段階５１０において継続し得る。ブロックが回復シーケンスマップ内に存在すれば、本方法は段階５１２において継続し得る。
【００６２】
段階５１０では、本方法は、ブロックを含む現在のチャンクのシーケンス番号を有する回復シーケンスマップへエントリを追加し得る。現在ブロックの物理ブロックアドレスもまた論理ブロックアドレスマップへ追加され得る（例えば図２の論理−物理マッピング２１２）。
【００６３】
段階５１２では、本方法は、現在読み出されたチャンクに関連付けられたシーケンス番号と回復シーケンスマップ内に格納されたシーケンス番号とを比較し得る。回復シーケンスマップ内に格納されたシーケンス番号が現在読み出されたチャンクより高ければ、現在読み出されたチャンクのブロックは段階５１４において無視され得る。現在読み出されたチャンクのシーケンス番号が回復シーケンスマップ内に格納されたシーケンス番号より高ければ、本方法は段階５１６において継続し得る。
【００６４】
段階５１６では、回復シーケンスマップと論理ブロックアドレスマップは新しいシーケンス番号と物理ブロックアドレスとを含むように更新され得る。ブロックが削除されたということを後のチャンク（例えばより高いシーケンス番号を有するチャンク）が示せば、ブロックは、論理ブロックアドレスマップと回復シーケンスマップから削除され得る。
【００６５】
段階５１８では、１つまたは複数（例えば回復されているフラッシュストレージのすべての使用ブロック）の読み出しが終了すると、いくつかの実施形態では、ロッキングが提供され得る。ロッキングは、論理ブロック毎ベース、一範囲のブロックベース、またはストレージの別の単位ベースであり得る。回復シーケンスマップの生成は、論理ブロックの現在データを有する物理ブロックに関連付けられたチャンクのシーケンス番号を示し得、回復は、すべての書き込み要求がジャーナルから読み出され連続的に適用されることを必要としなくてもよい。回復シーケンスマップおよび／または論理ブロックアドレスマップは、論理ブロックアドレスにより区分され得、論理ブロックアドレスまたは一範囲の論理ブロックアドレスに対するロックを提供し、様々な論理ブロックまたは様々な範囲の論理ブロックが同時に取り出され得るようにする。
【００６６】
段階５２０において、チャンクは読み出され（例えば、ロッキングが使用されれば、任意選択的に並列に）、回復され得る。段階５２２において、方法５００は終了し得る。
【００６７】
他の実施形態は本発明の範囲と趣旨内にある。例えば、上述の機能は、ソフトウェア、ハードウェア、ファームウェア、ハードワイヤ、またはこれらの任意の組み合わせを使用することにより実現され得る。命令に従って動作する１つまたは複数のコンピュータプロセッサが、上に説明したように本開示によるストレージジャーナリングを改善するために関連付けられた機能を実施し得る。その場合、このような命令が１つまたは複数の非一時的プロセッサ可読記憶媒体（例えば磁気ディスクまたは他の記憶媒体）上に格納され得るということは本開示の範囲内である。加えて、モジュール実施機能がまた様々な場所に物理的に配置され得る（機能の一部が様々な物理的場所において実施されるように配置されることを含む）。
【００６８】
本開示は本明細書において説明された特定の実施形態によりその範囲を制限されるべきではない。実際、本明細書において説明されるものに加え、本開示の他の様々な実施形態およびその修正は、これまでの説明と添付図面から当業者にとって明らかになる。したがって、このような他の実施形態および修正は本開示の範囲に入るように意図されている。さらに、本開示は特定目的のための特定環境内の特定実装形態の文脈で本明細書において説明されたが、当業者は、その有用性はこれに限定されないということと、本開示は任意数の目的のための任意数の環境において効果的に実施され得るということとを認識することになる。したがって、以下に記載の特許請求の範囲は、本明細書において説明された本開示の全広さと趣旨とを考慮して解釈されるべきである。
【符号の説明】
【００６９】
１０２  ホストシステム
１０４  ホストＣＰＵ
１０６  ＰＣＩエクスプレスルートコンプレックス
１０８  スイッチ
１１０  ターゲット
１１２  コントローラ
１１４  非揮発性ストレージ
１１６  ターゲット
１１８  コントローラ
１２０  非揮発性ストレージ
１２２  ターゲット
１２４  コントローラ
１２６  非揮発性ストレージ
２０２  チャンクシーケンス番号
２０３  チャンクシーケンス番号
２０６  暗ブロック
２０８  明ブロック
２０９  記憶装置
２１０  チャンク有効ブロックカウント
２１２  論理−物理マッピング
２１４  回復マッピング
２１６  暗ブロック
ｎ  チャンクシーケンス番号
３０４  段階
３１０  ストレージジャーナリング改善部品
３１２  有効ブロック監視部品
３１４  ターゲットチャンク識別部品
３１６  回復マップ管理部品
３１８  エラーログ記録および報告部品
４００  方法
４０２、４０４、４０６、４０８、４１０、４１２、４１４、４１６  段階
５００  方法
５０２、５０４、５０６、５０８、５１０、５１２、５１４、５１６、５１８、５２０、５２２  段階
【図１】
2017079053.tif 000003
【図２】
2017079053.tif 000004
【図３】
2017079053.tif 000005
【図４】
2017079053.tif 000006
【図５】
2017079053.tif 000007
【外国語明細書】
2017079053000001.pdf