(57)【要約】間接マッピングデータ構造は、ホストコンピュータによって使用される論理ブロックアドレスと、ソリッドステートドライブ上の物理データストレージ場所との間でマッピングを維持することができる。間接マッピングデータ構造に対する変更をジャーナル内に記憶することができる。ジャーナルが満杯である場合、ジャーナルは、ジャーナルによって記憶される項目数に基づいて判定されるクラスタブロック上の既定の場所に記憶されることができ、既定の場所におけるクラスタブロック全体を通して散乱されるいくつかのジャーナルを引き起こす。データで書き込まれた、または欠陥としてマークされたかどうかに関わらず、物理的にかなりの量の媒体のそれぞれがジャーナル処理される。ジャーナル場所が既に定められた及び物理的にかなりの量の媒体のそれぞれがジャーナル処理される係るジャーナル処理スキームは、物理メディアアウェア空間的結合ジャーナルと称される。リプレイ中、空間結合ジャーナルは、クラスタブロック内の既定の場所から読み出され、間接マッピングデータ構造を再構築するために使用されることができる。【選択図】図５
2019535077.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実施方法であって、
データをソリッドステートドライブ（ＳＳＤ）に記憶する書込要求を受信することと、
前記書込要求に少なくとも部分的に基づいて、間接マッピングテーブルを更新することであって、前記間接マッピングテーブルは前記ＳＳＤ上の物理データ場所を論理アドレスにマッピングする、前記更新することと、
前記書込要求に少なくとも部分的に基づいて、項目をジャーナルに生成することと、
ジャーナルストレージイベントを検出することと、
前記ジャーナルを、前記ＳＳＤ上の欠陥場所から独立している既定の場所に記憶することと、
を含む、前記コンピュータ実施方法。
【請求項２】
前記ジャーナルに対する各項目は固定量のディスクスペースに対応し、前記ジャーナルは対応する最大数の項目と関連付けられ、ジャーナルストレージイベントを検出することは、
前記最大数のジャーナル項目が前記ジャーナルに書き込まれていることを判定することを含む、請求項１に記載のコンピュータ実施方法。
【請求項３】
前記ジャーナルに対する各項目は可変量のディスクスペースに対応し、ジャーナルストレージイベントを検出することは、
前記ジャーナルが前記ＳＳＤ上の既定量のディスクスペースに対応する項目数を含むことを判定することを含む、いずれかの先行請求項に記載のコンピュータ実施方法。
【請求項４】
各ジャーナルは、書き込まれたクラスタブロックに関するクラスタブロックシーケンス番号を含むヘッダと、前記論理アドレスに、前記クラスタブック上のデータの物理場所をマッピングする複数の項目を含むコンテンツエリアとを含む、いずれかの先行請求項に記載のコンピュータ実施方法。
【請求項５】
前記既定の場所は、前記ＳＳＤ上の前記データと同一場所にある、いずれかの先行請求項に記載のコンピュータ実施方法。
【請求項６】
後続書込要求を受信することと、
前記後続書込要求に対応する前記ＳＳＤ上の物理場所が欠陥であることを判定することと、
後続項目を、前記後続書込要求に対応する前記物理場所が欠陥であることを示す不良ブロック値を含む前記ジャーナルに生成することと、
をさらに含む、いずれかの先行請求項に記載のコンピュータ実施方法。
【請求項７】
リプレイイベントを検出することと、
複数のジャーナルを複数の既定の場所から読み出すことと、
前記複数のジャーナルに基づいて、前記間接マッピングテーブルを再構築することと、
前記複数のジャーナルに少なくとも部分的に基づいて、不良ブロックマップを生成することと、
をさらに含む、いずれかの先行請求項に記載のコンピュータ実施方法。
【請求項８】
複数のジャーナルを複数の既定の場所から読み出すことは、さらに、
ジャーナルを、第１の既定の場所における各クラスタブロックから読み出すことと、
各クラスタブロックから前記ジャーナルを使用して、クラスタブロックシーケンスを判定することと、
を含む、いずれかの先行請求項に記載のコンピュータ実施方法。
【請求項９】
前記複数のジャーナルに基づいて不良ブロックマップを生成することは、さらに、
前記不良ブロックマップをメモリ内に記憶することであって、前記不良ブロックマップは、欠陥である前記ＳＳＤ上の少なくとも１つの物理場所を含む、前記記憶することと、
前記ジャーナル項目が不良ブロック値を含むことを判定することと、
前記ジャーナル項目に対応する前記ＳＳＤ上の物理場所を含む、前記ジャーナル項目に基づいて前記不良ブロックマップを更新することと、
を含む、いずれかの先行請求項に記載のコンピュータ実施方法。
【請求項１０】
マルチレベルセルモードまたはトリプルレベルセルモードで、前記データを前記ＳＳＤに書き込むことをさらに含む、いずれかの先行請求項に記載のコンピュータ実施方法。
【請求項１１】
前記ジャーナルを前記ＳＳＤ上の既定の場所に記憶することは、さらに、
シングルレベルセルモードで、前記ジャーナルを前記ＳＳＤ上の前記既定の場所に書き込むことを含む、請求項１０に記載のコンピュータ実施方法。
【請求項１２】
システムであって、
少なくとも１つのプロセッサと、
命令を含むメモリと、を含み、前記命令は、前記少なくとも１つのプロセッサによって実行されるとき、前記システムに、
データをソリッドステートドライブ（ＳＳＤ）に記憶する書込要求を受信させ、
前記書込要求に少なくとも部分的に基づいて、間接マッピングテーブルを更新させ、前記間接マッピングテーブルは前記ＳＳＤ上の物理データ場所を論理アドレスにマッピングし、
前記書込要求に少なくとも部分的に基づいて、項目をジャーナルに生成させ、
ジャーナルストレージイベントを検出させ、
前記ジャーナルを、前記ＳＳＤ上の既定の場所に記憶させる、
前記システム。
【請求項１３】
前記ジャーナルに対する各項目は固定量の物理ストレージスペースに対応し、前記ジャーナルは対応する最大数の項目と関連付けられ、実行時にジャーナルストレージイベントを検出する前記命令は、さらに、前記システムに、
前記最大数のジャーナル項目が前記ジャーナルに書き込まれていることを判定させる、請求項１２に記載のシステム。
【請求項１４】
前記ジャーナルに対する各項目は可変量のディスクスペースに対応し、前記実行時にジャーナルストレージイベントを検出する前記命令は、さらに、前記システムに、
前記ジャーナルが前記ＳＳＤ上の既定量のディスクスペースに対応する項目数を含むことを判定させる、請求項１２または１３に記載のシステム。
【請求項１５】
前記命令が、実行時にさらに、前記システムに、
後続書込要求を受信すると、前記後続書込要求に対応する前記ＳＳＤ上の物理場所が欠陥であることを判定させ、
後続項目を、前記後続書込要求に対応する前記物理場所が欠陥であることを示す不良ブロック値を含む前記ジャーナルに生成させる、
請求項１２〜１４のいずれかに記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
仮想コンピューティング環境は、しばしば、ブロックベースストレージによってサポートされる。係るブロックベースストレージは、ますます、ソリッドステートドライブ（ＳＳＤ）によって提供されるようになってきている。ＳＳＤは、ブロックスタイルインタフェースを提供し、これにより、これらのドライブを、従来、ハードドライブ及び他のブロックストレージデバイスに依拠しているシステムに統合することを容易にする。ＳＳＤドライブ製造業者は、ブロックスタイルインタフェースを提供し、データストレージ及びマッピングを管理するコントローラを組み込んでいる。例えば、読込要求または書込要求が受信されるとき、それは、要求に関連付けられる論理ブロックアドレスを含み得る。コントローラは、データが読み込まれるべき場所から、またはデータが書き込まれるべき場所まで、ＳＳＤ上の物理場所を判定し得る。コントローラは、また、ＳＳＤ上のデータストレージを管理し、デバイスの寿命を改善させ、他のフラッシュ特有機能を管理し得る。しかしながら、ドライブ製造業者は一般的な顧客に好適なコントローラを提供し得る一方、係るコントローラは、全てのユーザに及び係るドライブが配置され得るアプリケーションに、十分な適応性及びカスタマイズ性をもたらさない場合がある。
【０００２】
本開示に従った様々な実施形態が、図面を参照して説明される。
【図面の簡単な説明】
【０００３】
【図１】様々な実施形態の態様を実装することができる環境の例を示す。
【図２】様々な実施形態に従って利用することができるソリッドステートドライブに関するフラッシュ変換層のブロック図を示す。
【図３】様々な実施形態による、フラッシュ配列の図を示す。
【図４】様々な実施形態による、ジャーナル及ぶフラッシュ配列を示す。
【図５】様々な実施形態による、空間的結合ジャーナルを示す。
【図６】様々な実施形態に従って利用することができる間接モジュールのブロック図を示す。
【図７】様々な実施形態に従って利用することができる空間的結合ジャーナル処理の方法のブロック図を示す。
【図８】様々な実施形態に従って利用することができる空間的結合ジャーナルを使用するリプレイの方法のブロック図を示す。
【図９】様々な実施形態の態様を行うために使用することができるコンピューティングデバイスの例の構成要素を示す。
【発明を実施するための形態】
【０００４】
本開示の様々な実施形態に従ったシステム及び方法は、電子環境のブロックベースストレージサービスにおけるソリッドステートドライブ（ＳＳＤ）を管理する従来のアプローチで経験する１つ以上の前述の欠陥及び他の欠陥を克服する。具体的に、ＳＳＤ管理特徴は、内蔵式ＳＳＤコントローラから離れており、外部コントローラに実装され得る。ＳＳＤ管理特徴は、間接マッピング及びリプレイを含み得る。間接マッピングデータ構造は、ホストコンピュータによって使用される論理ブロックアドレスと、ＳＳＤ上の物理データストレージ場所との間でマッピングを維持することができる。間接マッピングデータ構造に対する更新をジャーナル内に記憶することができる。１つ以上のジャーナルはクラスタブロックと関連付けられ、それにより、ジャーナルは、当該クラスタブロックに関する間接マッピングデータ構造に対する更新を記憶することができる。様々な実施形態では、クラスタブロックは、Ｎ個の連続ダイの配列にわたって物理消去ブロックのグループを含み得る。物理消去ブロックのグループは、論理ブロックから物理消去ブロックへの変換を簡略化するために、各ダイから同じブロックインデックスを含み得る。ダイ上の多面プログラミングを使用する実施形態では、Ｎ個のダイのそれぞれからＰ個の連続ブロックは単一のクラスタブロックにグループ分けされることができ、ＰはＮＡＮＤダイによってサポートされる面の数である。ジャーナルが既定の限度に達したとき、ジャーナルは、ジャーナルによって記憶される項目数に基づいて判定されるクラスタブロック上の既定の場所に記憶されることができる。いくつかの実施形態では、各ジャーナルの既定の限度は、入力として、ジャーナル数、クラスタブロックインデックス数、クラスタブロックシーケンス番号のうちの１つ以上のものを使用する公式から算出されることができる。クラスタブロック全体にわたって散乱する既定の場所における係るコロケーションは、空間的結合ジャーナルと称される。さらに、プログラムされていない欠陥／不良ブロック、またはパディングデータもしくは他のメタデータ等の他の非ホストデータを含む、クラスタブロック内の物理的にかなりの量の媒体のそれぞれは、ジャーナル内に取り込まれる。当該ジャーナルは、この直接マッピングのために、物理メディアアウェアと言われる。電力損失に続いて電力が回復すると、空間結合ジャーナルは、散乱する既定の場所から読み出され、間接マッピングデータ構造を再構築するために使用されることができる。
【０００５】
図１は、様々な実施形態の態様を実装することができる環境１００の例を示す。この例の構成では、ブロックベースデータストレージサービス１０２は、データセンタ１０４内の複数のブロックベースデータストレージシステムを使用して、プログラムを実行する信頼性があり非ローカルのブロックベースデータストレージ、または様々な他の構成要素、システム、もしくはサービスを提供する。データセンタ１０２はいくつかのラック１０４を含み、各ラックはいくつかのコンピューティングシステム１０６を含む。示されるラック１０４上のコンピューティングシステム１０６は、それぞれ、コントローラ１０８を含み、コントローラ１０８は、フラッシュ変換層（ＦＴＬ）と、１つ以上のソリッドステートドライブ（ＳＳＤ）１１０とを含む。ソリッドステートドライブは、一般的に、様々な管理機能を行うコントローラを含む。しかしながら、様々な実施形態では、これらの機能は、それ自体、ドライブから離され、外部コントローラ１０８によって提供される。例えば、コントローラ１０８のフラッシュ変換層は、下記にさらに検討されるように、ジャーナル処理、リプレイ、及び他の間接マッピング管理サービスを提供し得る。
【０００６】
図１に示されるように、ブロックベースストレージサービス１１２は、１つ以上のホストコンピューティングシステム１１４、仮想マシン、及び／または他のサービスのためのブロックストレージデバイスをセットアップすることができる。いくつかの実施形態では、ブロックストレージデバイスは、ネットワーク１１６にわたってアクセスし得、ネットワーク１１６は、ローカルネットワーク及び／または外部ネットワーク（例えば、インターネットまたは別のパブリックデータネットワーク）を含む。いくつかの実施形態では、データセンタ１０４は、ネットワーク１１６を介して１つ以上の他のデータセンタ１１８に接続されることができ、データセンタ１１８は、それぞれ、データセンタ１０４に関して示されるコンピューティングシステム及びストレージシステムの一部または全てを含み得る。ホストコンピューティングシステム１１４は、様々な目的のために様々な関係者によって、例えば、データセンタのオペレータまたは第三者等（例えば、ブロックベースデータストレージサービスの顧客）によって動作し得る。加えて、１つ以上の他のコンピューティングシステムは、ブロックデータストレージサービスが相互作用し得るアーカイブストレージシステム（例えば、リモートネットワークアクセス可能ストレージサービスの一部のようなもの）であり得る。当該ブロックストレージサービスは、１つ以上の他のコンピューティングシステム上で、またはデータセンタの１つ以上のコンピューティングシステムの代わりに実行する１つ以上のアーカイブ管理モジュール（図示されない）等の制御下で相互作用し得る。
【０００７】
図１の例が説明の目的のために簡略化されていることと、ホストコンピューティングシステム、サービスブロックデータストレージシステム、及び他のデバイスの数及び組織が、図１に示されているものよりもはるかに大きい場合があることとが認識される。例えば、例示的な一実施形態として、データセンタ毎に数千のコンピューティングシステムが存在し得、それらのコンピューティングシステムの少なくとも一部は、それぞれ１つ以上の仮想マシンをホストし得るホストコンピューティングシステムであり、及び／またはそれらのコンピューティングシステムの一部は、それぞれがいくつかの容量のコピーを記憶し得るブロックベースデータストレージシステムである。各ホスト仮想マシンが１つのプログラムを実行する場合、係るデータセンタは、１回で数万と同数のプログラムコピーを実行し得る。さらに、数百または数千（またはそれ以上）の容量が、サーバストレージシステムの数、容量のサイズ、及び容量毎のミラーコピーの数に応じて、サーバブロックデータストレージシステム上に記憶され得る。他の実施形態では、他の数のコンピューティングシステム、プログラム、及び容量を使用し得ることを認識される。
【０００８】
様々な実施形態では、ブロックベースストレージサービスは、ウェブサービスとして、ストレージを顧客に見せることができる。顧客はウェブサービス要求、または他の適切な要求もしくはコールを提出し、それらのサーバ上にストレージを割り当て、及び／またはそれらの顧客のためにセットアップされたインスタンスから当該ストレージにアクセスすることができる。ある実施形態では、ユーザは、それらのストレージデバイスが従来式ブロックデバイスであるかのように、これらのストレージデバイスのデータ量にアクセスすることが可能である。データ量は、各量がディスクドライブまたは同様のブロックデバイスであるかのように、顧客インスタンスであるように思えるため、当該量は、オフセット、長さ、及び他の係る従来式ブロックデバイス態様でアドレス指定されることができる。
【０００９】
従来式ソリッドステートドライブ（ＳＳＤ）は、様々なドライブ及びデータ管理特徴を提供するコントローラを含む。例えば、ＳＳＤはフラッシュセルに永続的にデータを記憶する。しかしながら、データを上書きすることができず、その代わりに、新しいデータが記憶され得る前に、データを最初に消去する必要がある。加えて、各セルは、それがデータを確実に記憶できなくなる前に、書込／消去サイクルの有限数を有する。したがって、データストレージを効率的に管理するために、ＳＳＤ特有ガーベジコレクション、リプレイ、及びトリム方法をＳＳＤコントローラによって実施し得る。上記で検討されたように、これらの特徴は、ドライブ製造業者によって提供され、全てのユーザに好適ではない場合がある。コントローラによって提供される多くの特徴は、様々な実施形態に従って、ＳＳＤから離すことができる。
【００１０】
図２は、様々な実施形態に従って利用することができるソリッドステートドライブから離れたコントローラのブロック図２００を示す。コントローラ２０２は、ＳＳＤ２０６に関する様々なデータ管理特徴を提供するフラッシュ変換層（ＦＴＬ）２０４を含み得る。図２に示されるように、ＦＴＬ２０４は、間接モジュール２０８、ガベージコレクタ２１０、及び入出力マネージャ２１２を含み得る。これらの管理特徴の多くは、データがＳＳＤ上に物理的に記憶される位置付けを必要とする。間接モジュール２０８は、ホストコンピューティングシステムによって使用される論理ブロックアドレスを、ディスク上の物理データ場所にマッピングする間接マッピングテーブル２１４を使用して、これらの場所を管理することができる。これらの論理対物理マッピングは、間接マッピングテーブルに記憶される間接ユニットに記載されている。間接マネージャ２１６は、間接マッピングテーブルの間接ユニットを記憶、修正、または更新することを可能にし得る。間接マッピングテーブルは、当業者に知られるであろうように、様々なデータ構造として実装され得る。様々な実施形態では、各間接項目は、複数の論理的及び連続的データブロックを表し得る。
【００１１】
係る間接マッピングテーブルはかなり多くなり得、ＳＳＤのサイズに比例してサイズが大きくなる。間接マッピングテーブルは、ＲＡＭ等の揮発性メモリ内で維持され得る。これは、マッピングへの速いアクセスを提供するが、電源異常または他の予期しない電力遮断の場合に、間接マッピングテーブルの潜在的損失をもたらす。様々な実施形態では及び下記にさらに検討されるように、各時間データがディスクに書き込まれる空間的結合ジャーナルスキームが実施され、ジャーナル項目はロジカルアドレス情報を含む。ジャーナル項目の場所に基づいて、対応する物理場所を推測することができる。各ジャーナルは有限サイズを有し、対応する項目の最大数を記憶する。いくつかの実施形態では、全てのジャーナルは同じサイズである。いくつかの実施形態では、ジャーナルは可変サイズであり得る。加えて、物理的にかなりの量の媒体のそれぞれは、欠陥であろうとなかろうと、ジャーナル処理される。物理的にかなりの量の媒体毎にジャーナル項目を含めることによって、ジャーナルは、ディスク上の欠陥ブロック（例えば、不良ブロック）の場所に関係なく、既定の場所に記憶されることができる。ジャーナルが既定の限度に達したとき、ジャーナルは、同じクラスタ内に及びそれが記載するデータの直後でＳＳＤに記憶される。ジャーナルが既知量のディスクスペースに対応する有限数の項目を含むとき、クラスタブロックの開始（または最後のジャーナルストレージ場所）に対するディスク上のジャーナルの場所は、確定的に知られている。
【００１２】
検討されるように、フラッシュブロックは、データがそれに記憶され得る前に消去状態である必要がある（例えば、データを最初に消去しなければ、データを同じ物理場所に上書きすることができない）。これらの特徴に適応するために、データを次の利用可能なページに連続して書き込むことができる。新しいデータが書き込まれ、事前に書き込まれたデータのように、同じ論理アドレスと関連付けられるとき、事前に書き込まれたデータは無効である。ガベージコレクタ２１０は、消去されたクラスタブロックがデータを記憶するのに及びデータ断片化を減らすのに利用可能であることを確実にし得る。ガベージコレクタ２１０は、既定の場所からジャーナルを読み出し及びデータが有効であるかどうかを判定することができるジャーナルセレクタ２１８を含み得る。次に、ガーベジコレクションエンジン２２０は、必要に応じてデータを移すことができ、またはデータを無視することができ、クラスタブロックが消去されるときにデータが消去されることに導く。入出力マネージャ２１２は、ＳＳＤ２０６への読み書きアクセスを管理することができる。様々な実施形態では、読込マネージャ２２２及び書込マネージャ２２４は、読み込みまたは書き込みを要求されるデータを記憶する読書キャッシュを含み得る。様々な実施形態では、トリムマネージャ２２６は、クライアントデバイスが、論理アドレスの範囲が古く、それを破棄できることを示すことを可能にし得る。論理アドレスの範囲をクライアントによって古いとマークすることを可能にすることによって、ガーベジコレクションオーバーヘッドを減らすことができる。
【００１３】
図３は、様々な実施形態による、フラッシュ配列の図３００を示す。クラスタブロック３０２は、ＳＳＤ上の連続ダイ３０４のグループを表す。このグループは、Ｎ個の連続ダイの配列にわたって物理消去ブロックを含み得る。物理消去ブロックのグループは、論理ブロックから物理消去ブロックへの変換を簡略化するために、各ダイから同じブロックインデックスを含み得る。ダイ上の多面プログラミングを使用する実施形態では、Ｎ個のダイのそれぞれからＰ個の連続ブロックは単一のクラスタブロックにグループ分けされることができ、ＰはＮＡＮＤダイによってサポートされる面の数である。データがディスクに記憶されるとき、データはクラスタブロック３０２の１つ以上のページ３０６上に記憶される。図３に示されるクラスタブロック３０２の例が５つのダイ３０２及び６つのページ３０４を含むが、また、代替の構成を使用してもよい。加えて、クラスタブロックの長さは可変であり得る。この例では、破線ボックスのぞれぞれは、書込動作中、書き込まれたＳＳＤ上の物理空間の量を表す。破線ボックスのそれぞれの内側の各数字は、間接ユニットがクラスタブロック上で並べられる順序を示す。データがクラスタブロックに書き込まれるとき、対応する項目はジャーナルに記憶され、各項目は示される順序で間接ユニットに対応する。この例は図４に続く。
【００１４】
図４は、様々な実施形態による、ジャーナル及ぶフラッシュ配列の図４００を示す。図４に示されるように、クラスタブロック４０２は、論理ブロックアドレスに対応するデータを記憶する。ジャーナル４０４は、ＲＡＭに維持され、クラスタブロックに記憶されるデータに関する論理ブロックアドレスを含み得る。ジャーナルは、データがディスクに書き込まれときと同じ順序で更新されることができる。図３に関して上記に説明されたように、データは特定の順序でディスクに書き込まれる。例えば、ジャーナル４０４の最初の３つの項目は、ダイ０、ページ０〜３に対応し、データが書き込まれた順序を反映している。ジャーナルを同じ順序で更新することによって、ジャーナルの各項目はディスク上の既知の場所に対応する。ジャーナルは媒体の物理的部分毎の項目を含み、これは、例えば、ジャーナルがディスク上のデータと同期したままの状態になるように、欠陥ブロックまたはスキップしたブロックを含む、当該部分が書き込まれない場合でさえも該当する。例えば、図４に示されるように、破線ボックス４０６は、値Ｘを有するように示される欠陥ブロックを含む。これらの欠陥ブロック（また、不良ブロックと称される）は、不良ブロックテーブルを使用して、または、欠陥場所の書込中もしくは連続的な読込中のエラーの検出によって、識別され得る。ジャーナル４０４は、ジャーナル項目４０８に示される欠陥ブロックを含む、物理ディスクの部分毎の項目を含む。下記にさらに検討されるように、これは、空間的結合ジャーナルを、間接マップを再構築するためだけではなく、要求に応じて不良ブロックテーブルを再構築するためにも使用することを可能にする。図４に示されるように、不良ブロックに続いて、上記に説明されたように、ジャーナル４０４は、順に項目を含むように連続し得る。例えば、破線ボックス４１０は、ジャーナル４０４の次の３つの項目４１２に対応するように書き込まれたディスクの次の部分を示す。
【００１５】
いくつかの実施形態では、ジャーナル４０４のそれぞれは可変サイズであり得る。ジャーナルがその項目の全てで満杯になると、それは、クラスタブロック４０２に記憶されることができる。例えば、ジャーナルのサイズは間接ユニットのサイズに等しくなるようにされることができ、そのとき、ジャーナルは単一の書込動作で書き込まれることができ、次のジャーナルは次の間接ユニットで開始する項目を含み得る。各ジャーナルが既定の場所に記憶されたときから、各ジャーナルは、固定量の物理媒体を論理ユニットにマッピングする項目を含む。これらの論理ユニットが固定サイズである場合、各ジャーナルが固定数のジャーナル項目を有する。論理ユニットが可変サイズである場合（例えば、圧縮を使用する場合）、ジャーナルは、さらに、既定の場所に記憶される。ジャーナルが既定の場所に記憶されることを可能にするために、各ジャーナルは可変数の項目を含み得る。固定量の物理ディスクスペースに対応する項目がジャーナル処理されているとき、ジャーナルを既定の場所に閉じる及び記憶することができる。この例では、各ジャーナルは異なる数のジャーナル項目を含み得るが、既定の場所に記憶され、固定量の物理ディスクスペースをカバーする。
【００１６】
図５は、様々な実施形態による、空間的結合ジャーナルの図５００を示す。上記に説明されたように、ジャーナルは、ジャーナルに記載されるデータと同じインラインのクラスタブロックのディスクに記憶されることができる。これは、ジャーナル及びデータが同一場所にあるため、空間的結合と称される。加えて、データが特定の順序でディスクに記憶されるため、不良ブロックを含む物理的にかなりの量の媒体のそれぞれはジャーナル処理され、ジャーナルは有限サイズであり、各ジャーナルはクラスタブロックの開始から確定的に知られているディスク上の物理場所に記憶される。いくつかの実施形態では、ジャーナルストレージイベントを検出すると、ジャーナルを記憶することができる。検討されるように、ジャーナルストレージイベントの一例は、ジャーナルが満杯であることを判定している。ジャーナルが満杯であると判定されるとき、それは、クラスタブロック上の次の物理場所に保存されることができる。図５に示されるように、複数のジャーナル５０２、５０４、５０６は、クラスタブロック５０８に空間的に結合されることができ、各ジャーナルは、ジャーナルの前であるが任意の事前に記憶されたジャーナルの後に、間接ユニットに関するクラスタブロック内に記憶されるデータに関する間接項目を含む。例えば、ジャーナル５０２は、間接ユニットがジャーナル５０２の直前になるまで、クラスタブロック５０８の始まり５１０において開始する間接ユニットに関する間接項目を含み得る。同様に、ジャーナル５０４は、ジャーナル５０２の後に及びジャーナル５０４の直前に、間接ユニットに関する間接項目を含み得る。
【００１７】
この例に示されるように、各ジャーナルは、ジャーナルのサイズに基づいて、クラスタブロックの始まりから確定的に知られている物理場所に記憶される。例えば、図５の各ジャーナルは、４０個の間接項目を記憶し、次に間接ユニットに記憶される。ジャーナルが既定の場所に記憶されることを確実にするために、書込配置マネージャは、次の間接ユニットに、ジャーナルストレージイベントを検出するとすぐに、ジャーナルを記憶するように構成され得る。加えて、各ジャーナルは特有のクラスタブロックに関連する。したがって、クラスタブロックに関する間接ユニットを含むジャーナルは、当該クラスタブロック内に記憶される。これは、ジャーナルが満杯になる前に閉じることをもたらし得る。したがって、ジャーナルストレージイベントの別の例は、クラスタブロックがほぼ満杯であること（例えば、１つまたは他の構成数、残りの間接ユニットを有する）を判定している。図５に示されるように、ジャーナル５０６は、ジャーナル５０２または５０４よりも１つ少ない項目を有するクラスタブロックの最後で閉じる。図５の例が小数のジャーナル項目を有するジャーナルを示しているが、これは、描写及び説明を分かり易くするためである。様々な実装では、より多数または少数の項目を有するジャーナルを使用し得る。例えば、ジャーナルが３２ＫｉＢの間接ユニットに一致するようにサイズ決定され、各ジャーナルユニットは３２ビットであり、各ジャーナルは２０バイトのヘッダを含む場合、ジャーナルは、ディスクに記憶される前に約８，０００のジャーナル項目を含み得る。係るジャーナルスキームは、単一の３２ＫｉＢジャーナルが、約２５６ＭｉＢのデータに関する間接項目を含むことを可能にする。
【００１８】
いくつかの実施形態では、ジャーナルが物理媒体上に記憶される既定の場所は（例えば、媒体制作の時点、または使用に起因して、または他の要因で）欠陥であり得る。いくつかの実施形態では、物理媒体上のＮ個の連続場所は、ジャーナル毎に既に定められ得、Ｎは任意の整数に定義されることができる。例えば、ジャーナルに関する既定の場所は、ＳＳＤ上の２つの既定の連続ページに対応し得る。これはジャーナルに専用の物理媒体上の空間量を増加させるが、それは、固定場所ジャーナルスキームがさらに既定の場所の１つが欠陥である場合に使用され得ることを確実するために、余剰の層を提供する。いくつかの実施形態では、欠陥場所は、非欠陥場所に論理的に再マッピングされることができる。例えば、ジャーナル場所にマッピングされた欠陥ブロックのマップは、１つ以上の非不良場所に、デバイス初期化中に維持される及び再マッピングされることができる。この再マッピングは、ＳＳＤファームウェアによって、またはフラッシュデバイスレベル（サポートされる場合）において行われることができる。
【００１９】
いくつかの実施形態では、クラスタブロック内のダイの数がクラスタブロックで使用されるジャーナル数に等しい、またはそれよりも大きい数である場合、各ジャーナルが異なるダイに記憶されることができる。例えば、図５に示されるように、各ジャーナル５０２、５０４、５０６は、異なるダイに記憶される。クラスタブロック内の物理ブロックが不具合を示す場合、単一のジャーナルだけが影響を受ける。ジャーナルが異なるダイにわたって交互になっていることを確実にするために、各ジャーナルは可変数のジャーナル項目を含み得る。物理媒体全体がジャーナル処理されるため、各ジャーナルが異なるダイに記憶されるときのように、ジャーナル項目の数が事前に定義されることができる。
【００２０】
いくつかの実施形態では、クラスタブロック内のダイの数がクラスタブロックで使用されるジャーナル数に等しい、またはその２倍よりも大きい場合、各ジャーナルが異なるダイに複製及び記憶されることができる。任意のダイに不具合がある場合、対応するコピーが別のダイのその場所から回復されることができるため、ジャーナルは損失しない。加えて、または代替的に、レイド（ＲＡＩＤ）は、追加的保護をジャーナルに提供するために使用されることができる。例えば、ＲＡＩＤ５パリティは、クラスタブロック内の全てのジャーナルにわたって蓄積され、ジャーナル上での読込不具合の場合、回復のために保存されることができる。
【００２１】
上記に説明された実施形態は、各間接項目が、特定数の項目（例えば、ジャーナルのサイズ）の後にジャーナルが既定の場所に記憶されるように、固定量のディスクスペースに対応すると仮定している。しかしながら、圧縮アルゴリズムを使用する場合、各項目は同じ量のディスクスペースに対応しない場合がある。したがって、ジャーナルが固定サイズであり、それが満杯であるときに記憶される場合、それは既定の場所に記憶されない場合がある。いくつかの実施形態では、データが既定の場所に至るまで書き込まれていることを検出すると、ディスクに記憶されることができる可変サイズジャーナルを使用し得る。例えば、書込配置マネージャは、書込場所の経過を負い、ジャーナルを、既定の場所でディスクに書き込まさせ得る。ジャーナルは、ジャーナルのサイズに関わらず、既定の場所で閉じる及びディスクに書き込まれることができ、それにより、それは、後に既定の場所から回復することができる。
【００２２】
いくつかの実施形態では、各ジャーナルが既定の場所に記憶されるため、技法は、これらの場所の１つで欠陥の可能性を減らすために使用され得る。例えば、いくつかのＳＳＤは、各セルが単一の少量のデータを記憶するシングルレベルセル（ＳＬＣ）モード、または２ビットまたは３ビットが各々セル毎に記憶され得るマルチレベルセル（ＭＬＣ）モードもしくはトリプルレベルセル（ＴＬＣ）モード等の高密度記憶ストレージで書き込まれ得る。ＳＬＣモードは、ＭＬＣモードまたはＴＬＣモードよりも少ないデータを記憶することが可能であるが、当該データはより確実に記憶される。したがって、いくつかの実施形態では、ユーザデータは、ＭＬＣモードまたはＴＬＣモードでディスクに記憶され、記憶密度を最大にし得る。本明細書で検討されるように、ジャーナルがユーザデータとインラインで記憶されるとき、それはＳＬＣモードで記憶されることができる。これは、ジャーナルが記憶される既定の場所における欠陥の可能性を減らし、ジャーナルをより強固にする。例えば、ジャーナル５０２、５０４、５０６は、ＳＬＣモードで書き込まれ得、その間、図５に示される全ての他の間接ユニットはＴＬＣモードで書き込まれ得る。
【００２３】
図６は、様々な実施形態に従って利用することができる間接モジュールのブロック図６００を示す。上記で検討されたように、間接管理機能及びリプレイ機能は、ＳＳＤから離され、図２に示されるコントローラ２０２等の外部コントローラによって提供されることができる。図６に示されるように、間接モジュール６０２は、ＲＡＭ等のメモリ６０４を含み得、メモリ６０４内では、間接マッピングテーブル６０６が維持される。いくつかの実施形態では、メモリ６０４は、また、１つ以上のジャーナル６０８を含み得る。いくつかの実施形態では、各ジャーナルは、ジャーナルがディスクに書き込まれる前に、別個のバッファ内に維持され得る。システムブートにおいて、メモリ６０４がクリアされ、したがって、間接マッピングテーブル６０６が事前に記憶されていない場合、また、それはクリアされる。しかしながら、係る間接マッピングテーブルは、かなり多くなり得、潜在的に何億もの項目を含む。テーブルのサイズによっては、予期しない電力損失の場合、バックアップを困難にする。したがって、複数の実施形態は、システムブートにおける間接マッピングテーブルを再構築（また、本明細書では、リプレイと称される）するために、ディスクに記憶されるジャーナルを使用する。リプレイ中、ジャーナルは、現在の値で、間接マッピングテーブルを再構築するために書き込まれた順序で読み込まれ得る。これは、間接マッピングテーブルを、クラスタブロック自体の全体よりもむしろ、クラスタブロック毎にインスタンスが８または１６のジャーナルのための読み込みによって再構築することを可能にする。
【００２４】
いくつかの実施形態では、間接マネージャ６１０は、クライアントデバイスが所与の間接項目を読み込み及び更新することを可能にし得る。様々な実施形態では、間接マッピングテーブル６０６は、実装の必要性に応じて、異なる間接粒度で実装されることができる。間接粒度は、間接マッピングテーブル６０６の１つの間接ユニットによって参照されるホストデータブロック（またはセクタ）の数を指し得る。例えば、いくつかの実施形態では、３２ＫｉＢの間接粒度を使用し得る。ドライブが４ＫｉＢブロックデバイスとしてフォーマットされる場合、各間接ユニットは、８個の連続ホストセクタを１つの物理媒体場所にマッピングする。係る実施形態では、間接項目は、より低い３ｂｉｔのＬＢＡを回避することによって、セクタの論理ブロックアドレス（ＬＢＡ）から判定されることができる。間接項目は、ＬＢＡに対応するダイ、ブロック、及びページを示し得る。ＬＢＡに対応する間接項目内のセクタを判定するために、ｍｏｄ演算を行うことができる。例えば、４ＫｉＢブロックフォーマット済ドライブでは、１６ＫｉＢページサイズ及び３２ＫｉＢ間接ユニットの場合、第１の４つのセクタは間接ユニットの第１のブロックにあり、第２の４つのセクタは間接ユニットの第２のブロックにある。
【００２５】
予期しない電力損失の場合、マッピングテーブルのサイズ（例えば３２ＴＢに対して約４ＧＢ）は、マップを不揮発性メモリに記憶する十分な電力を維持することが禁止され得るように十分に大きい。代わりに、リプレイマネージャ６１４は、空間的結合ジャーナルを使用して、間接マッピングテーブル６０６を再構成することができる。様々な実施形態では、リプレイイベントが検出されるとき、リプレイマネージャ６１４はリプレイを開始することができる。リプレイイベントは、電力損失からの回復に応じた、リプレイ要求等に応じたブートを含み得る。例えば、デバッキング中、リプレイは、ディスク全体にわたって、またはエラーが検出された媒体の特有の単一の部分もしくは複数の部分にわたって行われるように要求され得る。いくつかの実施形態では、各クラスタブロックからの第１のジャーナルは、メモリ６０４内の各クラスタブロック上の既定の場所から読み込まれ得る。各ジャーナルからクラスタブロックシーケンス番号を使用して、次に、各クラスタブロックを処理し得る。例えば、クラスタブロックシーケンスの第１のクラスタブロックからのジャーナルを読み込むことができる。検討されるように、ジャーナルの場所が知られ、間接ユニットのサイズは知られ、及び物理的にかなりの量の媒体のそれぞれ（欠陥ブロックを含む）がジャーナル処理されるため、任意の追加メタデータを参考しないで、各間接ユニットの物理場所を計算することができる。したがって、論理ブロックアドレスがジャーナル項目で読み込まれるとき、対応する物理場所を間接マッピングテーブルのＬＢＡ項目に追加することができる。第１のクラスタブロックの各ジャーナルは、ディスク上のその既定の場所から読み出され、クラスタブロック上の最後のジャーナルが処理されるまでに及び間接マッピングテーブルが更新されるまでに、検討されたように処理され得る。次に、リプレイマネージャ６１４は、クラスタブロックシーケンスの次のクラスタブロックに移ることができる。各クラスタブロックを順に処理することによって、古いデータの物理場所（例えば、後で変化するマッピング）は、いったんリプレイが完了すると、間接マッピングテーブルは古いマッピングを含まないように、間接マッピングテーブルに上書きされる。ディスク上の既知の場所でジャーナルを空間的に結合することによって、チェックポイントを使用することなくリプレイを行うことができる。代わりに、ジャーナルは、間接マッピングテーブルを再構築するために、読み込み及び処理されることができる。
【００２６】
様々な実施形態では、書込配置マネージャ６１６は、書込要求を受信し、その書き込みをディスクにプッシュすることができる。いくつかの実施形態では、書込配置マネージャ６１６は、書込命令がディスクに書き込まれる前に記憶される１つ以上の書込キャッシュを含み得る。書込要求を行う場合、ジャーナルマネージャ６１２は、適宜、ジャーナル６０８を更新することができる。いくつかの実施形態では、複数のジャーナルバッファは、ＳＳＤが開始されるときに割り当てることができる。１つのジャーナルをアクティブとマークすることができ、間接項目がアクティブなジャーナルに追加される。いったんジャーナルストレージイベントが検出されると、ジャーナルをディスクに書き込むことができ、別のジャーナルバッファに関連付けられる別のジャーナルをアクティブとマークすることができる。これは、書込動作を、ジャーナルが応答時間に影響を及ぼさないで書き込まれている間に連続的にプッシュすることを可能にする。
【００２７】
いくつかの実施形態では、及び下記にさらに検討されるように、リプレイマネージャ６１４は、リプレイ中、欠陥ブロックテーブル（例えば、不良ブロックマップ６１８）を再構築するように構成され得る。検討されるように、媒体の各部がジャーナル処理され、欠陥ブロックを含む。これは、不良ブロックマップ６１８を、それが損失または破損する場合、再構成することを可能にする。いくつかの実施形態では、不良ブロックマップ６１８は、いったん回復すると、メモリ６０４から不揮発性データストアに記憶されることができる。
【００２８】
図７は、様々な実施形態に従って利用することができる空間的結合ジャーナル処理の方法のブロック図７００を示す。図７に示されるように、間接マッピングテーブルは、メモリ内のソリッドステートドライブ（ＳＳＤ）のために保存されることができる（７０２）。間接マッピングテーブルは、ＳＳＤ上の物理データ場所を、ホストコンピュータによって使用される論理アドレスにマッピングする複数の間接ユニットを含み得る。いくつかの実施形態では、書込要求は、データをＳＳＤに記憶するためにホストコンピュータから受信されることができる。データは、ＳＳＤ上のクラスタブロック内の物理データ場所に書き込まれることができる。検討されるように、書込配置マネージャは、データを記憶するためにクラスタブロック上の場所を判定することができる。データはクラスタブロックに連続して書き込まれる。
【００２９】
間接ユニットは、間接マッピングテーブルに記憶されることができる（７０４）。間接ユニットは、データを、間接マッピングテーブルのＳＳＤ上のクラスタブロックの物理データ場所にマッピングする。データは、書込要求に応答して、ＳＳＤに記憶されることができる（７０６）。いったんデータが記憶されると、間接マッピングテーブルは、データが記憶された物理データストレージ場所へのマッピングを含むように更新されることができる（７０８）。書込要求に基づいて間接ユニットを使用して、項目をジャーナルに加えることができる（７１０）。例えば、物理データ場所に対応する論理ブロックアドレスを使用して、項目を生成することができる。いくつかの実施形態では、書き込まれる次の物理データ場所が欠陥であるかどうかを判定することができる（７１２）。例えば、次の物理データ場所で、試みられた読込／書込動作を行うことができる。エラーが戻される場合、場所を欠陥であると判定することができる。加えて、または代替的に、次の物理データ場所は、不良ブロックマップを調べることで、それが既に欠陥であると識別されているかどうかを判定することができる。次の物理データ場所が欠陥であると判定される場合、項目は、次の物理データ場所が欠陥であることを示すジャーナルに付け加えることができる（７１４）。
【００３０】
ジャーナル項目は、ジャーナルストレージイベントが検出されるまで（７１６）、アクティブなジャーナルに付け加えることができる。ジャーナルストレージイベントが検出されない場合、項目は、書込要求が受信されるとき、ジャーナルに付け加えることを継続することができる。ジャーナルストレージイベントを検出すると、ジャーナルは、既定の場所に記憶されることができる（７１８）。既定の場所は、クラスタブロック内のデータと同一場所にある。いくつかの実施形態では、ジャーナルストレージイベントは、ジャーナルが最大数のジャーナル項目を含むことを判定することを含み得る。いくつかの実施形態では、ジャーナルストレージイベントは、ジャーナルがＳＳＤ上の既定量のディスクスペースに対応する項目数を含むことを判定することを含み得る。ジャーナルバッファ内にジャーナルを記憶することができる。いくつかの実施形態では、複数のジャーナルバッファを使用することができ、それぞれ異なるジャーナルを記憶する。
【００３１】
いくつかの実施形態では、アクティブなジャーナルがディスクに書き込まれると同時に、新しいジャーナルは異なるジャーナルバッファ内で開いている。間接マップに対する後続の更新を新しいジャーナル内に記憶することができる（７２０）。いくつかの実施形態では、ジャーナルは、クラスタブロックに関するクラスタブロックシーケンス番号を含むヘッダと、論理アドレスに、クラスタブック上のデータの物理場所をマッピングする複数の項目を含むコンテンツエリアとを含む。
【００３２】
図８は、様々な実施形態に従って利用することができる物理メディアアウェア空間的結合ジャーナルを使用するリプレイの方法のブロック図８００を示す。リプレイイベントを検出することができる（８０２）。例えば、リプレイイベントは、ブートアップイベント、リプレイ要求、または他のイベントであり得る。ＳＳＤ上の既定の場所からのジャーナルを読み出すことができる（８０４）。いくつかの実施形態では、複数のジャーナルは、クラスタブロック全体を通して散乱する複数の既定の場所から読み出されることができる。複数のジャーナルは、各クラスタブロックからの第１のジャーナル、またはＳＳＤ上に記憶されるすべてのジャーナル、または複数のジャーナルの任意の他の組み合わせを含み得る。
【００３３】
クラスタブロックと関連付けられるシーケンス番号をジャーナルから判定することができる（８０６）。例えば、第１のジャーナルが各クラスタブロックから読み出されるとき、シーケンス番号は、クラスタブロックが間接マッピングテーブルを再構築するために処理される順序を判定するために使用されることができる。いくつかの実施形態では、シーケンス番号は、ジャーナルに含まれるヘッダから読み込まれることができる。間接マッピングテーブルは、シーケンス番号によって順序付けられたジャーナルを使用して再構築されることができる（８０８）。間接マッピングテーブルを再構築することは、新しいマッピングテーブルを作成すること（８１０）を含み得る。項目は、パースされる現在のジャーナルから読み込まれることができる（８１２）。検討されるように、媒体の各部はジャーナル項目と関連付けられ、データが記憶されない欠陥場所を含む。ジャーナル項目は、それが対応する物理場所が欠陥であることを示す値を含むかどうかを判定する（８１４）ために分析されることができる。ジャーナル項目が、それが欠陥であることを示さない場合、新しい間接マッピングテーブルは、ジャーナル項目からのマッピングデータを使用して更新されることができる（８１６）。ジャーナル項目が、それが欠陥であることを示す場合、不良ブロックマップは、ジャーナル項目に対応する物理場所を含むように更新されることができる（８１８）。
【００３４】
いったんジャーナル項目が処理されると、それは、ジャーナルの最後に達しているかどうかを判定されることができる（８２０）。追加の項目が存在する場合、処理はブロック８１２に戻り得及び次の項目を処理することができる。ジャーナルの最終に達する場合、追加ジャーナルが存在するかどうかを判定することができる（８２２）。いくつかの実施形態では、各ジャーナルは、ジャーナルヘッダデータを含み得る。例えば、ジャーナルが書き込まれたときの、最初の項目が書き込まれたときの、最後の項目が書き込まれたときのタイムスタンプ、または他のデータを含み得る。加えて、または代替的に、ジャーナルヘッダは、新しいジャーナルが記憶されるたびに更新されるジャーナルの総数を含み得る。様々な実施形態では、ジャーナルヘッダのデータは、ジャーナルを処理するべき順序を判定するために使用され得る。追加ジャーナルが存在する場合、次のジャーナルはその既定の場所から読み出されることができ（８２４）、次のジャーナルの項目は、ブロック８１２〜８２０に関して上記で検討されたように処理されることができる。追加ジャーナルが存在しない場合、リプレイが完了したことを示す通知を送信することができる（８２６）。いったん完了すると、間接マッピングテーブル及び不良ブロックマップはそれぞれ再構築されている。図８の実施形態が、同じリプレイ動作中に間接マッピングテーブル及び不良ブロックマップが再構築されることを説明したが、様々な実施形態では、リプレイは、間接マッピングテーブルまたは不良ブロックマップのいずれか単独で、再構築するために行われ得る。例えば、要求は、また間接マッピングテーブルを再構築しないでも、不良ブロックマップを再構築するために受信され得る。係る例では、ステップ８１４において、ジャーナル項目が不良ブロック値を含まない場合、処理は、直接、ステップ８２０に進み得る。同様に、要求は間接マッピングテーブル（ただし、不良ブロックマップではない）を再構築するために受信される場合、ステップ８１４において、ジャーナル項目が不良ブロック値を含む場合、処理は、直接、ステップ８２０に進み得る。
【００３５】
図９は、様々な実施形態の態様を実装するために使用することができるコンピューティングデバイスの例の一式の一般的構成要素の論理配列を示す。この例では、デバイスは、メモリデバイスまたは要素９０４に記憶されることができる命令を実行するためのプロセッサ９０２を含む。当業者には明らかであるように、デバイスは、例えばプロセッサ９０２による実行のためのプログラム命令用の第１のデータストレージ、画像またはデータのための別個のストレージ、他のデバイスと情報を共用するための取り外し可能メモリ等の多くの種類のメモリ、データストレージ、または非一過性コンピュータ可読記憶媒体を含み得る。デバイスは、タッチスクリーンまたは液晶ディスプレイ（ＬＣＤ）等の表示要素９０６の一部の種類を含み得るが、ポータブルメディアプレイヤー等のデバイスは、音声スピーカー等による他の手段を介して情報を伝える場合がある。いくつかの実施形態では、コンピューティングデバイス９００は、例えば、Ｗｉ−Ｆｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＲＦ、有線または無線の通信システム等の１つ以上のネットワーク及び／または通信要素９０８を含み得る。デバイスは、多くの実施形態では、例えば、インターネット等のネットワークと通信することができ、他の係るデバイスと通信することが可能であり得る。いくつかの実施形態では、デバイスは、従来の入力をユーザから受信することが可能である少なくとも１つの追加入力構成要素９１０を含み得る。この従来の入力は、例えば、プッシュボタン、タッチパッド、タッチスクリーン、ホイール、ジョイスティック、キーボード、マウス、キーパッド、または任意の他の係るデバイスもしくは要素を含み得、それによって、ユーザはコマンドをデバイスに入力することができる。しかしながら、一部の実施形態では、係るデバイスはボタンを全く含まない場合があり、ユーザが、デバイスと接触する必要なくデバイスを制御することができるように、視覚コマンドと音声コマンドとの組み合わせだけによって制御される可能性がある。デバイスは、また、コンピューティングデバイスに必要な電力を提供及び／または取得するための電源、バッテリ構成要素、ワイヤレス充電回路等の１つ以上の電力構成要素９１２を含む。
【００３６】
考察されたように、説明される実施形態に従って、様々な環境で異なるアプローチを実施することができる。認識されるように、ウェブベースの環境が説明の目的のために本明細書で多くの例に使用され得るが、様々な実施形態を実装するために異なる環境を必要に応じて使用し得る。係るシステムは、１つ以上の電子クライアントデバイスを含み得、電子クライアントデバイスは、適切なネットワークを通じて要求、メッセージ、または情報を送信及び受信し、デバイスのユーザに情報を戻すように伝えるのに動作可能な任意の適切なデバイスを含み得る。係るクライアントデバイスの例は、パーソナルコンピュータ、携帯電話、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、セットトップボックス、携帯情報端末、及び電子ブックリーダ等を含む。ネットワークは、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、もしくは任意の他の係るネットワーク、またはそれらの組み合わせを含む、任意の適切なネットワークを含み得る。係るシステムに使用される構成要素は、選択されるネットワーク及び／または環境のタイプに少なくとも部分的に依存し得る。係るネットワークを介して通信するためのプロトコル及び構成要素は周知であり、本明細書で詳細に考察されない。ネットワークを通した通信は、有線または無線接続、及びそれらの組み合わせを介して可能であり得る。
【００３７】
例示的な環境は、少なくとも１つのアプリケーションサーバ及びデータストアを含み得る。いくつかのアプリケーションサーバ、層もしくは他の要素、処理、または構成要素が存在し得、それらは、つながれ、または他に構成され得、適切なデータストアからデータを取得すること等のタスクを行うように相互作用することができることを理解されたい。本明細書で使用されるような用語「データストア」は、データを記憶し、データにアクセスし、及びデータを読み出すことが可能である、任意のデバイスまたはデバイスの組み合わせを指し、これは、任意の標準環境、分散環境、またはクラスタ環境のデータサーバ、データベース、データストレージデバイス、及びデータストレージ媒体の任意の組み合わせ及び任意の数を含み得る。アプリケーションサーバは、クライアントデバイスに関する１つ以上のアプリケーションの態様を実行するために必要に応じてデータストアと相互作用し、アプリケーションに関するデータアクセス及びビジネスロジックの大多数を取り扱うための任意の適切なハードウェア及びソフトウェアを含み得る。アプリケーションサーバは、データストアと連携してアクセス制御サービスを提供し、ユーザに転送されることになるテキスト、グラフィック、音声、及び／またはビデオ等のコンテンツを生成することができ、コンテンツは、この例では、ＨＴＭＬ、ＸＭＬ、または別の適切な構造化言語の形式でウェブサーバによってユーザにサービスされ得る。全ての要求及び応答と共に、クライアントデバイスとアプリケーションサーバとの間のコンテンツの配信を取り扱うことは、ウェブサーバによって取り扱われ得る。本明細書で考察される構造化コードを本明細書で他に考察されるような任意の適切なデバイスまたはホストマシン上で実行することができるので、ウェブ及びアプリケーションサーバが必要とされず、単なる構成要素の例にすぎないことが理解されたい。
【００３８】
各サーバは、典型的には、当該サーバの全体的管理及び操作のための実行可能プログラム命令を提供するオペレーティングシステムを含み、典型的には、サーバのプロセッサによって実行されるとき、サーバがその意図される機能を行うことを可能にする命令を記憶するコンピュータ可読媒体を含む。サーバのオペレーティングシステム及び汎用機能性についての適切な実装態様は、既知であり、または商業的に利用可能であり、特に、本明細書における開示を考慮して、当業者によって容易に実装される。
【００３９】
１つの実施形態における環境は、１つ以上のコンピュータネットワークまたは直接接続を使用して、通信リンクを介して相互接続された、いくつかのコンピュータシステム及び構成要素を利用した分散コンピューティング環境である。しかしながら、係るシステムは、例示されるよりも少ないまたは多くの数の構成要素を有するシステム内でも等しく良好に動作し得ることが当業者によって認識される。したがって、本明細書における任意のシステムの記述は、本質的に例示的であり、本開示の範囲を限定しないと見なされるべきである。
【００４０】
上記で検討されたように、様々な実施形態は多様な動作環境で実装することができ、動作環境は、いくつかの場合、任意の数のアプリケーションを動作するために使用されることができる１つ以上のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含み得る。ユーザデバイスまたはクライアントデバイスは、標準オペレーティングシステムを実行するデスクトップコンピュータまたはラップトップコンピュータ等の任意の数の汎用パーソナルコンピュータと、モバイルソフトウェアを実行し及びいくつかのネットワーキングプロトコル及びメッセージプロトコルをサポートすることが可能である、セルラーデバイス、無線デバイス、及びハンドヘルドデバイスを含み得る。係るシステムはまた、様々な商業的に利用可能なオペレーティングシステム、並びに開発及びデータベース管理等を目的とする他の既知のアプリケーションのうちのいずれかを稼働させるいくつかのワークステーションを含み得る。これらのデバイスは、また、ダミー端末、シンクライアント、ゲーミングシステム、及びネットワークを介して通信することが可能である他のデバイス等の他の電子デバイスを含み得る。
【００４１】
種々の態様は、また、少なくとも１つのサービスまたはウェブサービスの一部として実装されることができ、例えば、サービス中心アーキテクチャの一部であり得る。ウェブサービス等のサービスは、任意の適切な種類のメッセージングを使用して、例えば、拡張マークアップ言語（ＸＭＬ）フォーマットの、ＳＯＡＰ（「シンプルオブジェクトアクセスプロトコル」に由来する）等の適切なプロトコルを用いて交換されるメッセージを使用して通信することができる。係るサービスによって提供または実行されるプロセスは、ウェブサービス記述言語（ＷＳＤＬ）等の任意の適切な言語で書き込まれることができる。ＷＳＤＬ等の言語の使用は、種々のＳＯＡＰフレームワークにおけるクライアント側コードの自動生成等の機能を可能にする。
【００４２】
大部分の実施形態は、ＴＣＰ／ＩＰ、ＦＴＰ、ＵＰｎＰ、ＮＦＳ、及びＣＩＦＳ等のさまざまな市販のプロトコルのいずれかを使用し、通信をサポートするために、当業者によく知られているであろう少なくとも１つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、及びその任意の組合せであり得る。
【００４３】
ウェブサーバを利用する実施形態では、ウェブサーバは、ＨＴＴＰサーバ、ＦＴＰサーバ、ＣＧＩサーバ、データサーバ、Ｊａｖａ（登録商標）サーバ、及びビジネスアプリケーションサーバを含む、さまざまなサーバまたは中間層アプリケーションのいずれかを実行できる。また、サーバ（複数可）は、例えばＪａｖａ（登録商標）、Ｃ、Ｃ＃、もしくはＣ＋＋等の任意のプログラミング言語、またはＰｅｒｌ、Ｐｙｔｈｏｎ，もしくはＴＣＬ等の任意のスクリプト言語、ならびにそれらの組み合わせで書き込まれた１つ以上のスクリプトまたはプログラムとして実装され得る１つ以上のウェブアプリケーションを実行することによって、ユーザデバイスからの応答要求でプログラムまたはスクリプトを実行することが可能であり得る。また、サーバ（複数可）は、Ｏｒａｃｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｓｙｂａｓｅ（登録商標）、及びＩＢＭ（登録商標）から市販されるものを含むがこれに限定されるものではないデータベースサーバを含み得る。
【００４４】
環境は、上記で検討されたような様々なデータストア、並びに他のメモリ及び記憶媒体を含み得る。それらは、コンピュータのうちの１つ以上にローカルな（及び／又はそその中に存在する）、またはネットワークにわたってコンピュータのいずれかもしくは全てにリモートな記憶媒体等、様々な場所に存在し得る。実施形態の特定の組では、情報は、当業者によく知られたストレージエリアネットワーク（「ＳＡＮ」）内に存在し得る。同様に、コンピュータ、サーバ、または他のネットワークデバイスに属する機能を行うための任意の必要なファイルは、適宜、ローカルに及び／または遠隔に記憶され得る。システムがコンピュータ化されたデバイスを含む場合、係るデバイスのそれぞれは、バスを介して電気的に結合され得るハードウェア要素を含み得、この要素は、例えば、少なくとも１つの中央処理ユニット（ＣＰＵ）、少なくとも１つの入力デバイス（例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド）、及び少なくとも１つの出力デバイス（例えば、表示デバイス、プリンタ、またはスピーカー）を含む。また、係るシステムは、ディスクドライブ、光学式ストレージデバイス等の１つ以上のストレージデバイス、ランダムアクセスメモリ（「ＲＡＭ」）または読み出し専用メモリ（「ＲＯＭ」）等のソリッドステートストレージデバイス、ならびに取り外し可能媒体デバイス、メモリカード、フラッシュカード等を含み得る。
【００４５】
また、係るデバイスは、上述のようにコンピュータ可読記憶媒体読取装置、通信装置（例えば、モデム、ネットワークカード（無線または有線）、赤外線通信装置等）、及び作業メモリを含み得る。コンピュータ可読記憶媒体リーダは、リモートストレージデバイス、ローカルストレージデバイス、固定ストレージデバイス、及び／または取り外し可能ストレージデバイスを表すコンピュータ可読記憶媒体、ならびにコンピュータ可読情報を一時的に及び／またはより恒久的に含有する、記憶する、送信する及び取り出すためのストレージ媒体と接続できる、またはそれらを受信するように構成され得る。システム及び様々なデバイスはまた、典型的には、オペレーティングシステム、及びクライアントアプリケーションまたはウェブブラウザ等のアプリケーションプログラムを含む、少なくとも１つのワーキングメモリデバイス内に位置するいくつかのソフトウェアアプリケーション、モジュール、サービス、または他の要素を含む。代替的な実施形態は、上記に説明されたものからの多数の変形を有してもよいことを認識されたい。例えば、また、カスタマイズされたハードウェアも使用する場合があり、及び／または特定の要素がハードウェア、ソフトウェア（アプレット等のポータブルソフトウェアを含む）、もしくはその両方で実装される場合がある。さらに、ネットワーク入出力デバイス等の他のコンピューティングデバイスへの接続が採用され得る。
【００４６】
コードまたはコードの一部を包含するためのストレージ媒体及び他の非一過性コンピュータ可読媒体は、限定されないが、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報の記憶のための任意の方法または技術において実装された揮発性及び不揮発性、取り外し可能及び取り外し不能媒体等の当技術分野で既知であり、または使用される任意の適切な媒体を含み得、それらは、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージデバイスもしくは他の磁気ストレージデバイス、または所望の情報を記憶するために使用することができ、システムデバイスによってアクセスすることができる任意の他の媒体を含む。本明細書に提供される開示及び教示に基づいて、当業者は、様々な実施形態を実装するための他の方式及び／または方法を認識する。
【００４７】
本開示の実施形態は、以下の条項を鑑みて説明できる。
１．コンピュータ実施方法であって、
ソリッドステートドライブ（ＳＳＤ）に関する間接マッピングテーブルをメモリ内に記憶することであって、前記間接マッピングテーブルは前記ＳＳＤ上の物理データ場所をホストコンピュータによって使用される論理アドレスにマッピングする複数の間接ユニットを含む、前記記憶することと、
データを前記ＳＳＤに記憶する書込要求を前記ホストコンピュータから受信することと、
前記データを、前記ＳＳＤ上のクラスタブロックの物理データ場所に記憶することと、
前記データを、前記間接マッピングテーブルの前記ＳＳＤ上の前記クラスタブロックの前記物理データ場所にマッピングする間接ユニットを記憶することと、
前記間接ユニットを使用して、項目をジャーナルに生成することであって、前記ジャーナルは前記ＳＳＤ上の固定量のディスクスペースに対応する複数の項目を含み、前記複数の項目からの少なくとも１つの項目は、前記ＳＳＤ上の対応する物理データ場所が欠陥であることを示す、前記生成することと、
前記ジャーナルが最大数のジャーナル項目を含むことを判定することと、
前記ジャーナルを、前記ＳＳＤ上の欠陥場所に記憶することであって、前記既定の場所は前記クラスタブロック内に記載する前記データの直後の同一場所にある、前記記憶することと、
停電が発生した後に電力が回復していると判定することと、
少なくとも前記ＳＳＤ上の前記既定の場所に記憶される前記ジャーナルを使用して、新しい間接マッピングテーブルを生成することと、
少なくとも前記既定の場所に記憶される前記ジャーナルを使用して、不良ブロックマップを生成することと、
を含む、前記コンピュータ実施方法。
【００４８】
２．後続書込要求を受信することと、
前記後続書込要求に対応する前記ＳＳＤ上の物理データ場所が欠陥であることを判定することと、
後続項目を、前記後続書込要求に対応する前記物理場所が欠陥であることを示す不良ブロック値を含む前記ジャーナルに生成することと、
をさらに含む、条項１に記載のコンピュータ実施方法。
【００４９】
３．前記ジャーナルは、前記クラスタブロックに関するクラスタブロックシーケンス番号を含むヘッダと、前記論理アドレスに、前記クラスタブック上のデータの物理場所をマッピングする複数の項目を含むコンテンツエリアとを含む、いずれかの先行条項に記載のコンピュータ実施方法。
【００５０】
４．前記データはマルチレベルセルモードまたはトリプルレベルセルモードで前記ＳＳＤに記憶され、前記ジャーナルはシングルレベルセルモードで前記ＳＳＤに記憶される、いずれかの先行条項に記載のコンピュータ実施方法。
【００５１】
５．コンピュータ実施方法であって、
データをソリッドステートドライブ（ＳＳＤ）に記憶する書込要求を受信することと、
前記書込要求に少なくとも部分的に基づいて、間接マッピングテーブルを更新することであって、前記間接マッピングテーブルは前記ＳＳＤ上の物理データ場所を論理アドレスにマッピングする、前記更新することと、
前記書込要求に少なくとも部分的に基づいて、項目をジャーナルに生成することと、
ジャーナルストレージイベントを検出することと、
ジャーナルを、前記ＳＳＤ上の欠陥場所から独立している既定の場所に記憶することと、
を含む、前記コンピュータ実施方法。
【００５２】
６．前記ジャーナルに対する各項目は固定量のディスクスペースに対応し、前記ジャーナルは対応する最大数の項目と関連付けられ、ジャーナルストレージイベントを検出することは、
前記最大数のジャーナル項目が前記ジャーナルに書き込まれていることを判定することを含む、条項５に記載のコンピュータ実施方法。
【００５３】
７．前記ジャーナルに対する各項目は可変量のディスクスペースに対応し、ジャーナルストレージイベントを検出することは、
前記ジャーナルが前記ＳＳＤ上の既定量のディスクスペースに対応する項目数を含むことを判定することを含む、条項５または６に記載のコンピュータ実施方法。
【００５４】
８．各ジャーナルは、書き込まれたクラスタブロックに関するクラスタブロックシーケンス番号を含むヘッダと、前記論理アドレスに、前記クラスタブック上のデータの物理場所をマッピングする複数の項目を含むコンテンツエリアとを含む、条項５〜７のいずれかに記載のコンピュータ実施方法。
【００５５】
９．前記既定の場所は、前記ＳＳＤ上の前記データと同一場所にある、条項５〜８のいずれかに記載のコンピュータ実施方法。
【００５６】
１０．後続書込要求を受信することと、
前記後続書込要求に対応する前記ＳＳＤ上の物理場所が欠陥であることを判定することと、
後続項目を、前記後続書込要求に対応する前記物理場所が欠陥であることを示す不良ブロック値を含む前記ジャーナルに生成することと、
をさらに含む、条項５〜９のいずれかに記載のコンピュータ実施方法。
【００５７】
１１．リプレイイベントを検出することと、
複数のジャーナルを複数の既定の場所から読み出すことと、
前記複数のジャーナルに基づいて、前記間接マッピングテーブルを再構築することと、
前記複数のジャーナルに少なくとも部分的に基づいて、不良ブロックマップを生成することと、
をさらに含む、条項５〜１０のいずれかに記載のコンピュータ実施方法。
【００５８】
１２．複数のジャーナルを複数の既定の場所から読み出すことは、さらに、
ジャーナルを、第１の既定の場所における各クラスタブロックから読み出すことと、
各クラスタブロックから前記ジャーナルを使用して、クラスタブロックシーケンスを判定することと、
を含む、条項１０または１１に記載のコンピュータ実施方法。
【００５９】
１３．前記複数のジャーナルに基づいて不良ブロックマップを生成することは、さらに、
前記不良ブロックマップをメモリ内に記憶することであって、前記不良ブロックマップは、欠陥である前記ＳＳＤ上の少なくとも１つの物理場所を含む、前記記憶することと、
ジャーナル項目が不良ブロック値を含むことを判定することと、
前記ジャーナル項目に対応する前記ＳＳＤ上の物理場所を含む、前記ジャーナル項目に基づいて前記不良ブロックマップを更新することと、
を含む、条項１０〜１２のいずれかに記載のコンピュータ実施方法。
【００６０】
１４．マルチレベルセルモードまたはトリプルセルモードで、前記データを前記ＳＳＤに書き込むことをさらに含む、条項５〜１３のいずれかに記載のコンピュータ実施方法。
【００６１】
１５．前記ジャーナルを前記ＳＳＤ上の既定の場所に記憶することは、さらに、
シングルレベルセルモードで、前記ジャーナルを前記ＳＳＤ上の前記既定の場所に書き込むことを含む、条項１４に記載のコンピュータ実施方法。
【００６２】
１６．システムであって、
少なくとも１つのプロセッサと、
命令を含むメモリと、を含み、前記命令は、前記少なくとも１つのプロセッサによって実行されるとき、前記システムに、
データをソリッドステートドライブ（ＳＳＤ）に記憶する書込要求を受信させ、
前記書込要求に少なくとも部分的に基づいて、間接マッピングテーブルを更新させ、前記間接マッピングテーブルは前記ＳＳＤ上の物理データ場所を論理アドレスにマッピングし、
前記書込要求に少なくとも部分的に基づいて、項目をジャーナルに生成させ、
ジャーナルストレージイベントを検出させ、
前記ジャーナルを、前記ＳＳＤ上の既定の場所に記憶させる、前記システム。
【００６３】
１７．前記ジャーナルに対する各項目は固定量の物理ストレージスペースに対応し、前記ジャーナルは対応する最大数の項目と関連付けられ、実行時に前記ジャーナルストレージイベントを検出する前記命令は、さらに、前記システムに、
前記最大数のジャーナル項目が前記ジャーナルに書き込まれていることを判定させる、条項１６に記載のシステム。
【００６４】
１８．前記ジャーナルに対する各項目は可変量のディスクスペースに対応し、前記実行時にジャーナルストレージイベントを検出する前記命令は、さらに、前記システムに、
前記ジャーナルが前記ＳＳＤ上の既定量のディスクスペースに対応する項目数を含むことを判定させる、条項１６または１７に記載のシステム。
【００６５】
１９．前記命令が、実行時にさらに、前記システムに、
後続書込要求を受信すると、前記後続書込要求に対応する前記ＳＳＤ上の物理場所が欠陥であることを判定させ、
後続項目を、前記後続書込要求に対応する前記物理場所が欠陥であることを示す不良ブロック値を含む前記ジャーナルに生成させる、
条項１６〜１８のいずれかに記載のシステム。
【００６６】
２０．前記既定の場所は、前記ＳＳＤ上の前記データと同一場所にある、条項１６〜１９のいずれかに記載のシステム。
【００６７】
したがって、明細書及び図面は、限定的な意味ではなく例示的であると見なされることになる。しかしながら、「特許請求の範囲」で述べられる本発明のより広い主旨及び範囲から逸脱することなく、それに対して種々の修正及び変更がなされ得ることが明らかである。
【図１】
2019535077.tif 000003
【図２】
2019535077.tif 000004
【図３】
2019535077.tif 000005
【図４】
2019535077.tif 000006
【図５】
2019535077.tif 000007
【図６】
2019535077.tif 000008
【図７】
2019535077.tif 000009
【図８】
2019535077.tif 000010
【図９】
2019535077.tif 000011
【国際調査報告】
2019535077.tif 000012
2019535077.tif 000013
2019535077.tif 000014