(57)【要約】  ストレージ装置は、第１ＳＳＤと、第２ＳＳＤと、コントローラとを含む。コントローラは、第１ＳＳＤの第１利用度パラメータと、第２ＳＳＤの第２利用度パラメータとを算出できる。第１利用度パラメータが閾値未満であって、第２利用度パラメータが閾値を超える場合、コントローラは、第１ＳＳＤ上に格納された、移動されるデータレンジを特定する。第１ＳＳＤからのそのデータレンジの移動は、第１利用度パラメータに閾値を超えさせる。そして、コントローラはそのデータレンジを第１ＳＳＤから第２ＳＳＤに移動させる。
2020529679.tif 000002
【特許請求の範囲】
【請求項１】
データを格納するように構成される第１ソリッドステートドライブ（ＳＳＤ）および第２ＳＳＤと、
コントローラとを具備し、
前記コントローラは、
前記第１ＳＳＤの第１利用度パラメータと、前記第２ＳＳＤの第２利用度パラメータとを算出し、
前記第１利用度パラメータが閾値未満であって、前記第２利用度パラメータが前記閾値を超える場合、
前記第１ＳＳＤに格納された、移動されるデータのデータレンジを特定し、前記第１ＳＳＤからの前記特定されたデータレンジの移動は、前記第１利用度パラメータに前記閾値を超えさせ、
前記特定されたデータレンジに対応する前記データを前記第１ＳＳＤから前記第２ＳＳＤに移動させるように構成される、
ストレージ装置。
【請求項２】
前記第１利用度パラメータは、第１実効オーバープロビジョニング値であり、
前記閾値は、目標のライトアンプリフィケーション値に関連付けられた第２実効オーバープロビジョニング値である、
請求項１に記載のストレージ装置。
【請求項３】
前記コントローラはさらに、
前記特定されたデータレンジに対応する前記データを前記第１ＳＳＤから前記第２ＳＳＤに移動させる前に、前記第１ＳＳＤからの前記特定されたデータレンジを含む前記第２ＳＳＤの第３利用度パラメータを算出し、
前記第３利用度パラメータを前記閾値と比較し、
前記第３利用度パラメータが前記閾値を超える場合、前記特定されたデータレンジに対応する前記データを前記第１ＳＳＤから前記第２ＳＳＤに移動させ始めるように構成される、
請求項１に記載のストレージ装置。
【請求項４】
前記第３利用度パラメータが前記閾値を超えない場合、前記コントローラはさらに、
前記第３利用度パラメータを前記閾値より上に維持しながら、前記第２ＳＳＤが受け入れられる第１の量のデータを決定し、
前記決定された第１の量のデータを前記第２ＳＳＤに移動させ、
前記閾値を超える第４利用度パラメータを有する第３ＳＳＤを選択し、
前記第４利用度パラメータを前記閾値より上に維持しながら、前記決定された第１の量のデータを差し引いた、前記第１ＳＳＤからの前記特定されたデータレンジ以下である第２の量のデータを決定し、
前記決定された第２の量のデータを前記第４ＳＳＤに移動させるように構成される、
請求項３に記載のストレージ装置。
【請求項５】
前記第１ＳＳＤからの前記特定されたデータレンジに対応する前記データを含む前記第２ＳＳＤの前記第３利用度パラメータを算出した後に、前記コントローラはさらに、
前記特定されたデータレンジに対応する前記データを除いた前記第１ＳＳＤの、第４利用度パラメータを算出し、
前記第３利用度パラメータと前記第４利用度パラメータを含む、複数の利用可能なＳＳＤに亘る複数の利用度パラメータの、標準偏差を算出し、
前記標準偏差が所定の値未満である場合、前記特定されたデータレンジに対応する前記データを前記第１ＳＳＤから前記第２ＳＳＤに移動させるように構成される、
請求項３に記載のストレージ装置。
【請求項６】
前記第３利用度パラメータが前記閾値未満である場合、前記コントローラはさらに、前記閾値を超える第４利用度パラメータを有する第３ＳＳＤを特定するように構成される、請求項３に記載のストレージ装置。
【請求項７】
仮想ディスクを公表するホストが、データを前記第１ＳＳＤおよび前記第２ＳＳＤに伝送することを可能にするアダプタをさらに具備する、請求項１に記載のストレージ装置。
【請求項８】
前記格納されたデータの場所を記録するように構成されるマッピングテーブルをさらに具備する、請求項１に記載のストレージ装置。
【請求項９】
前記コントローラはさらに、前記マッピングテーブルを用いて、前記第１ＳＳＤから移動される、前記特定されたデータレンジに対応する前記データの場所を決定するように構成される、請求項８に記載のストレージ装置。
【請求項１０】
前記コントローラはさらに、前記マッピングテーブルに問い合わせることによって、前記第１利用度パラメータおよび第２利用度パラメータを算出するように構成される、請求項９に記載のストレージ装置。
【請求項１１】
前記コントローラは、前記第２ＳＳＤに移動された、前記特定されたデータレンジに対応する前記データの新たな場所で、前記マッピングテーブルを更新するように構成される、請求項１０に記載のストレージ装置。
【請求項１２】
前記コントローラは、前記特定されたデータレンジに対応する前記データを、前記第１ＳＳＤから、利用されていない前記第２ＳＳＤの領域に移動させるように構成される、請求項１に記載のストレージ装置。
【請求項１３】
前記コントローラは、前記特定されたデータレンジに対応する前記データを、前記第１ＳＳＤから、利用されていない前記第２ＳＳＤの２つ以上の領域に移動させる、請求項１に記載のストレージ装置。
【請求項１４】
前記コントローラは、前記第１利用度パラメータに前記閾値を超えさせるための、前記第２ＳＳＤに移動可能な最小のデータレンジのデータを決定するように構成される、請求項１に記載のストレージ装置。
【請求項１５】
ストレージ装置内の複数のソリッドステートドライブ（ＳＳＤ）の間で利用度のバランスをとる方法であって、
コントローラにおいて、少なくとも１つの第１ＳＳＤに関する第１利用度パラメータを算出することと、
前記少なくとも１つの第１ＳＳＤに関する前記第１利用度パラメータが閾値よりも小さいことを決定することと、
前記閾値を超える第２利用度パラメータを有する第２ＳＳＤを選択することと、
前記第１ＳＳＤに格納されたデータのデータレンジを特定し、前記特定されたデータレンジは、前記第１ＳＳＤからの前記特定されたデータレンジの移動で、前記第１ＳＳＤの前記第１利用度パラメータが前記閾値を超えるように、利用度レベルを有することと、
前記特定されたデータレンジに対応する前記データを前記第１ＳＳＤから前記第２ＳＳＤに移動させることとを含む方法。
【請求項１６】
前記第１利用度パラメータを算出することは、実効オーバープロビジョニング値を算出することを含む、請求項１５に記載の方法。
【請求項１７】
前記第１利用度パラメータを算出することは、前記第１ＳＳＤに対応する、第１論理ブロックアドレッシング（ＬＢＡ）と第２ＬＢＡとの間の前記利用度を決定するために、マッピングテーブルを調べることを含む、請求項１６に記載の方法。
【請求項１８】
少なくとも１つの第１ＳＳＤに関する前記第１利用度パラメータを算出することは、複数のＳＳＤの各々に関する利用度パラメータを算出することを含む、請求項１７に記載の方法。
【請求項１９】
前記複数のＳＳＤの各々に関する前記利用度パラメータを前記閾値と比較することと、
前記複数のＳＳＤから、前記閾値よりも小さいＳＳＤの前記サブセットを順序付けることと、
前記ＳＳＤのサブセットから、最小の利用度パラメータを有するＳＳＤを選択することとをさらに含む請求項１８に記載の方法。
【請求項２０】
前記方法は、前記第２ＳＳＤが、前記特定されたデータレンジに対応する前記データを受け入れることができ、且つ前記閾値を超え続けられるかどうかを判定することをさらに含む、請求項１９に記載の方法。
【請求項２１】
前記第２ＳＳＤが、前記特定されたデータレンジに対応する前記データを受け入れることができず、前記閾値を超え続けられないと決定された場合、前記方法は、
前記第２利用度パラメータを前記閾値より上に維持しながら、前記第２ＳＳＤが受け入れられる第１の量のデータを決定することと、
前記決定された第１の量のデータを前記第２ＳＳＤに移動させることと、
前記閾値を超える第３利用度パラメータを有する第３ＳＳＤを選択することと、
前記決定された第１の量のデータを差し引いた、前記第１ＳＳＤからの前記特定されたデータレンジ以下であって、前記第３利用度パラメータを前記閾値より上に維持しながら、前記第３ＳＳＤが受け入れられる、第２の量のデータを決定することと、
前記決定された第２の量のデータを前記第３ＳＳＤに移動させることとをさらに含む、請求項２０に記載の方法。
【発明の詳細な説明】
【優先権の主張】
【０００１】
本出願は、参照によってその内容の全体がここに組み込まれる、“Ｅｘｔｅｎｄｉｎｇ  ＳＳＤ  Ｌｏｎｇｅｖｉｔｙ”と題された、２０１７年８月２日に出願された米国実用新案出願第１５／６６７，１０９号に対する優先権を主張する。
【技術分野】
【０００２】
本発明は一般に、ＳＳＤストレージデバイスの寿命を伸ばすためのシステムおよび方法に関する。
【背景技術】
【０００３】
ソリッドステートドライブ（ＳＳＤ）で用いられるメモリデバイスのような、フラッシュベースの記憶媒体は、プレーン、ブロック、およびページの単位で並べられたフラッシュセルを備える。各プレーンは、消去可能な最小単位である複数のブロックを含む。各ブロックは、データの書き込みが可能な最小単位である複数のページを含む。ＳＳＤ内において、メモリコントローラは、物理フラッシュページに書き込まれるか、またはそこから読み出されるアプリケーションデータの、論理ブロックアドレスをマッピングすることに対して責任を負う。
【０００４】
記憶媒体のディスクは、稼働可能な有限の耐用年数を有する。ハードディスクドライブ（ＨＤＤ）は使用に伴って疲弊する機械的なデバイスであり、突然に、そして破壊的に、機能しなくなる可能性がある。ＳＳＤは一般にＨＤＤの２倍以上の寿命を有するが、ＨＤＤと比較して、それらがどのように疲弊するかに関して違いがある。ＮＡＮＤフラッシュの特性のため、ＳＳＤの耐用年数はＮＡＮＤフラッシュが耐えられる書き込み動作の回数によって決定される。イレースメモリコマンドを用いて前の記憶内容が消去された後にのみ、プログラムメモリコマンドを用いてデータが書き込まれ得るので、書き込み動作はプログラム／イレース（Ｐ／Ｅ）サイクルとしても知られている。
【０００５】
フラッシュメモリ内の前のデータをまず消去した後にのみ、データが上書きされ得るので、新たなデータが書き込まれ得る、新たに消去されたフラッシュメモリブロックのエリアとして機能する余剰の作業空間をＳＳＤに設けることが、一般的な方法になっている。この方法はオーバープロビジョニング（ＯＰ）として知られている。新たなデータが書き込まれた後、前のデータは無効であることが示される。やがては、システムがガーベッジコレクション（ＧＣ）として知られる処理を始めるのに十分な数の無効データのページが、あるフラッシュメモリブロックに存在する。ＧＣ処理中に、残りの有効データのページは新たに消去されたブロックおよびオリジナルのブロックに書き込まれて、無効であることが示されたページ全てが消去される。そして、消去されたブロックはデータを書き込める、新たに消去されたブロックのプールに含められる。新たなデータのオリジナルの書き込みに加えて、ＧＣ処理は追加のデータ書き込みを伴う。この副作用はライトアンプリフィケーション（ＷＡ）として知られ、ＷＡファクタは、追加のＮＡＮＤフラッシュのデータ書き込みの平均回数と、オリジナルの書き込みの比率である。ＷＡは、実際上、フラッシュデバイスのＰ／Ｅサイクルの限界をＷＡファクタで割ることで、あるＳＳＤの耐用年数を縮めさせる。例えば、１０であるＷＡファクタを有するＳＳＤの耐用年数は、Ｐ／Ｅサイクルの限界によって予測されるものの１０分の１になるだろう。
【０００６】
ＷＡはＯＰに反比例し、ＯＰを減少させることはＷＡを増加させる効果がある。図１は、ＯＰとＷＡの相関を表す先行技術のグラフ１００を示す。グラフ１００は、ＯＰを表すｘ軸１０２とＷＡを表すｙ軸１０４を含む。ＯＰとＷＡの相関は１０８の屈曲部分を有する線１０６で表される。グラフ１００はＯＰとＷＡの相関の既知のモデルである。ＯＰとＷＡの相関をモデリングする同様のグラフが、参照によりここに組み込まれる論文「フラッシュベースのソリッドステートドライブにおけるライトアンプリフィケーションの解析」（“Ｗｒｉｔｅ  Ａｍｐｌｉｆｉｃａｔｉｏｎ  Ａｎａｌｙｓｉｓ  ｉｎ  Ｆｌａｓｈ−ｂａｓｅｄ  Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅｓ”）  （Ｘ−Ｙ  フー他、ＩＢＭチューリッヒ・リサーチ・ラボラトリ、ＳＹＳＴＯＲ  ２００９、ハイファ、イスラエル（Ｘ−Ｙ  Ｈｕ  ｅｔ  ａｌ，  ＩＢＭ  Ｚｕｒｉｃｈ  Ｒｅｓｅａｒｃｈ  Ｌａｂｏｒａｔｏｒｙ，  ＳＹＳＴＯＲ  ２００９，  Ｈａｉｆａ，  Ｉｓｒａｅｌ））に示され、記述されている。
【０００７】
グラフ１００から、ＷＡを増加させることが、アプリケーションデータの書き込み毎のＮＡＮＤフラッシュの書き込みの回数を増加させて、特定のＰ／Ｅサイクルの限界を有するデバイスの耐用年数を縮めるので、ＯＰを減少させることがデバイスの耐久レベルを低下させることが分かる。この関係は、ＯＰが１０８の屈曲部分よりも減少するに従ってますます激しくなるＷＡの増加率を伴って、非線形である。
【０００８】
コストを軽減するための、ＳＳＤデバイスの容量の増大とＯＰの減少との要求は、コストと、格納されたデータの使いやすさ／アクセスとにおける大きな影響を伴って、ディスクの耐用年数の減少と早期のディスク故障の危険性の増大とを引き起こす。したがって、今日のＳＳＤシステムにおける固有の問題を是正するための長年にわたる要求が存在する。
【発明の概要】
【０００９】
ある態様において、ストレージ装置は第１ＳＳＤ、第２ＳＳＤ、およびコントローラを含む。コントローラは、第１ＳＳＤの第１利用度パラメータと、第２ＳＳＤの第２利用度パラメータとを算出できる。第１利用度パラメータが閾値未満であって、第２利用度パラメータが閾値を超える場合、コントローラは前記第１ＳＳＤに格納された、移動されるデータレンジを特定する。第１ＳＳＤからのそのデータレンジの移動は、第１利用度パラメータに閾値を超えさせる。そして、コントローラは、そのデータレンジを第１ＳＳＤから第２ＳＳＤに移動させる。
【００１０】
別の態様において、ストレージ装置に含まれる複数のＳＳＤの間で利用度のバランスをとる方法は、コントローラにおいて、少なくとも１つの第１ＳＳＤに関する第１利用度パラメータを算出することと、少なくとも１つの第１ＳＳＤに関する第１利用度パラメータが閾値未満であることを決定することと、閾値を超える第２利用度パラメータを有する第２ＳＳＤを選択することとを含む。この方法はさらに、第１ＳＳＤに格納されたデータレンジであって、第１ＳＳＤからのそのデータレンジの移動で、第１ＳＳＤの第１利用度パラメータが閾値を超えるように利用度レベルを有するデータレンジを、決定することと、データレンジを第１ＳＳＤから第２ＳＳＤに移動させることとを含む。
【図面の簡単な説明】
【００１１】
【図１】図１はオーバープロビジョニングとライトアンプリフィケーションの相関を表す、先行技術におけるグラフを示す。
【００１２】
【図２】図２は１つ以上の実施形態に係る、複数のＳＳＤと複数の仮想ディスクを有するストレージ装置のブロック図を示す。
【００１３】
【図３】図３は１つ以上の実施形態に係るストレージ装置で用いられる仮想マッピングを表すブロック図を示す。
【００１４】
【図４Ａ】図４Ａは１つ以上の実施形態に係るＳＳＤの利用度レベルを得るために用いられる様々なＳＳＤのブロック図を示す。
【００１５】
【図４Ｂ】図４Ｂは１つ以上の実施形態に係るＳＳＤの利用度レベルを得るために用いられる、拡張されたアプリケーションプログラミングインターフェイス（ＡＰＩ）を示す。
【００１６】
【図５】図５は１つ以上の実施形態に係るＳＳＤのプールに亘って、オーバープロビジョニングのバランスをとるメカニズムを表すブロック図を示す。
【００１７】
【図６】図６は１つ以上の実施形態に係るＳＳＤのプールに亘って、オーバープロビジョニングのバランスをとる決定フローを示す。
【００１８】
【図７】図７は１つ以上の実施形態に係るバランシングプロトコルの第２フェーズを示す決定フローを示す。
【００１９】
【図８】図８は１つ以上の実施形態に係るＳＳＤのプールに亘って、利用度パラメータのバランスをとるための方法を示す。
【発明を実施するための形態】
【００２０】
図２は、複数のＳＳＤと複数の仮想ディスクを有するストレージ装置２００を含むシステム２０１のブロック図を示す。ストレージ装置２００は複数のＳＳＤ２１０−２１５と、コントローラ２２２と、メモリ２２１と、アダプタ２２３とを含む。システム２０１はさらに、複数のホスト２６０−２６３と複数の仮想ディスク２３１−２３５とを含む。ホスト２６０−２６３はスイッチ２５０によってストレージ装置２００に接続される。
【００２１】
明確化のため、図２は６つのＳＳＤ２１０−２１５と５つの仮想ディスク２３１−２３５とで示されている。しかし、当然のことながら、ストレージ装置２００は任意の数のＳＳＤと、任意の数の仮想ディスクを含み得る。同様に、図２は４つのホスト２６０−２６３を示しているが、ストレージ装置２００は任意の数のホストデバイスを含み得る。ＳＳＤ、ＳＳＤドライブ、およびソリッドステートドライブの用語は互いに代替して使用され得る。
【００２２】
コントローラ２２２は、アダプタ２２３を介して複数のホスト２６０−２６３に複数の仮想ディスク２３１−２３５を公表する仮想化ソフトウェアを実行する。ＳＳＤ２１０−２１５はバックエンドストレージとして使用される。コントローラ２２２は、任意の規格のＳＳＤストレージ装置であり得るストレージ装置１００上の、ローカルコントローラである。
【００２３】
アダプタ２２３はリモートホスト２６０−２６３に、ストレージ装置２００へのアクセスを提供する。適切な接続性を有するリモートホストは、物理スイッチ２５０と、ｉＳＣＳＩ、Ｆｉｂｅｒ  Ｃｈａｎｎｅｌ（ＦＣ）、ＮＶＭＥ  ｏｖｅｒ  Ｆａｂｒｉｃ、ＳＣＳＩといったトランスポートプロトコルを、もしくはホスト内のドライバソフトウェアを介した物理接続とトランスポートプロトコルの任意の組み合わせを通じて、ストレージ装置２００にアクセスできる。アダプタ２２３はイーサネットポート、Ｆｉｂｅｒ  Ｃｈａｎｎｅｌ（ＦＣ）ポート、ＳＡＳ、ＰＣＩｅ、ＩｎｆｉｎｉＢａｎｄ（ＩＢ）ポート、または他の適切なポートであり得る。
【００２４】
結果として、あるリモートホスト（例えば、ホスト２６０−２６３の１つ）は、コントローラ２２２内のソフトウェアによって公表される仮想ディスク２３１−２３５を備える。例えば、ホスト２６０は仮想ディスク２３１を備え、ホスト２６１は仮想ディスク２３２および２３３を備える。ホスト２６０および２６１は、スイッチ２５０と、コントローラ２２２のソフトウェアに従うアダプタ２２３とを介して、複数のＳＳＤ２１０−２１５を有するストレージ装置２００と相互に作用するが、ホスト２６０−２６３は物理的なＳＳＤ２１０−２１５よりむしろ、装置上の仮想ディスク２３１−２３５を「見る」。各ホストは仮想ディスク２３１−２３５を、データを格納しているとみなすが、データは、実際にはストレージ装置内の物理的なＳＳＤ２１０−２１５上に、コントローラ２２２によって記憶され、管理され、データはスイッチ２５０とアダプタ２２３を介してホスト２６０−２６３によってアクセス可能である。
【００２５】
図３はストレージ装置で用いられる仮想マッピング方式３００を表すブロック図を示す。図３は第１仮想マッピングテーブル３２８を有する第１仮想ディスク３２１、第２仮想マッピングテーブル３２７を有する第２仮想ディスク３２２、第１ＳＳＤ３１１、第２ＳＳＤ３１２、第３ＳＳＤ３１３、および第４のＳＳＤ３１４を含む。
【００２６】
仮想マッピング方式３００は、第１マッピングテーブル３２８を使用した第１仮想ディスク３２１の第１ＳＳＤ３１１へのマッピングによって示される第１の仮想化方式を表しており、これは仮想アドレスの物理アドレス空間への１対１のマッピングを用いている。第１仮想ディスク３２１は、第１ＳＳＤ３１１内の第１物理レンジ３３１にマッピングされる。第１仮想ディスク３２１内のデータは、第１ＳＳＤ３１１内に連続的に配置できるように、サイズが調整される。第１仮想ディスク３２１からの、またはその他の仮想ディスクからの追加のデータも、第１ＳＳＤ３１１に空間がなくなるまで、第１ＳＳＤ３１１内に連続的に配置できる。第１仮想マッピングテーブル３２８はマッピング情報、ＳＳＤの識別、第１ＳＳＤ３１１内に配置されるデータのレンジの開始論理ブロックアドレス（ＬＢＡ）および長さを示すインジケータを格納する。
【００２７】
第２のより複雑な例では、仮想マッピング方式３００は、複数の物理的なデバイスにわたる複数のレンジを示す仮想アドレス空間を表す。これは第２マッピングテーブル３２８に従った、第１ＳＳＤ３１１、第２ＳＳＤ３１２、第３ＳＳＤ３１３、および第４のＳＳＤ３１４を含む複数のＳＳＤ内の複数のレンジ上への第２仮想ディスク３２２のマッピングによって示される。見てわかるように、第２仮想ディスク３２２は、第１ＳＳＤ３１１のレンジ３３２、第２ＳＳＤ３１２のレンジ３３４および３３５、第３ＳＳＤ３１３のレンジ３３５、および第４のＳＳＤ３１４のレンジ３３６内に配置されている。第２仮想ディスク３２１の第２マッピングテーブル３２８は、仮想ディスクのデータが格納される複数のレンジのスキャッタ・ギャザー・リスト（ＳＧＬ）であり、それらの場所と、レンジの開始ＬＢＡと長さが含まれる。
【００２８】
第２仮想ディスク３２１からのデータは、仮想空間から複数のＳＳＤ上の物理空間にマッピングされる。第２仮想ディスク３２１からのデータは、ストレージ装置内の複数の物理的なＳＳＤに配置される複数のレンジまたはチャンクへと分けられる。
【００２９】
様々なＳＳＤ上のレンジへマッピングされる、第２仮想ディスク３２１からの仮想ディスクのデータを含むこの第２の例は、仮想ディスク内のデータが単一の物理的なＳＳＤ上に配置されるデータとしては大きすぎる場合に、遭遇する可能性が高く、そのデータはチャンクまたはレンジに分割され、複数のＳＳＤにわたって配置される。第２仮想ディスク３２１の複数のＳＳＤ上へのマッピングは、断片化した仮想アドレス空間内でも、またはしばらくの間使用されてきたストレージ装置内でも起きる。例えば、あるストレージ装置がしばらく使用されて、仮想ディスクが作成され、削除された後、物理ＳＳＤストレージへの、仮想ディスクの複数レンジのマッピングは、仮想ディスクのデータを物理的なストレージに分配するために必要とされる。
【００３０】
データがＳＳＤに格納されるにつれ、ＳＳＤの割り当て部分が、ＳＳＤの利用度（ｕｔｉｌｉｚａｔｉｏｎ）レベルとともに増大する。ＳＳＤが高い利用度レベルを有する場合、実効ＯＰが最小化され、ＷＡが高くなり得る。そして、ＷＡはＳＳＤの寿命と逆の相関があるため、高い利用度のＳＳＤは、増大したディスク故障のリスクを有し得る。
【００３１】
図４Ａおよび４Ｂは、ＳＳＤの利用度レベルを得るために使用されるＳＳＤのメモリ表現と拡張ＡＰＩをそれぞれ示す。図４ＡはＳＳＤ４００のメモリ表現４０１と典型的なＳＳＤパラメータを示す。ＳＳＤ４００はＮＡＮＤページからなり、典型的には、データを含む利用ページ４２２と、不良ブロック４２０と、実効ＯＰ４２１に含まれるフリーまたはダーティＮＡＮＤページとを含む。不良ブロック４２０は明確化のため拡大されて示されているが、多くの場合、不良ブロック４２０はＳＳＤ４００のより小さな部分を占めるだろう。図のように、ＳＳＤ４００は総容量４１０を有する。しかし、ＳＳＤ４００の総容量４１０の一部だけが、ホストによる使用に対して利用可能である。データを書き込むことができる、ＳＳＤ４００の利用可能な部分は、エクスポートされる容量４１６である。フラッシュトランスレーションレイヤー（ＦＴＬ）が、消去されたページへの新たなデータの格納と効率的な書き込みを（低いＷＡで）行い、バックグラウンドで独立してＧＣを行うことによって無効化されたデータを管理することを可能にするために、総容量４１０の一部がＯＰ４１５として、すなわち予備の空間として、保持される。
【００３２】
ストレージが論理から物理アドレス空間への固定されたマッピングによって管理され、物理位置が、以前のデータをまず消去することなく、自由に書き換えられ得るＨＤＤと比較して、ＳＳＤは複数のＮＡＮＤページを含み、物理アドレス全てが論理アドレスにマッピングされるわけではない。あるＳＳＤにおいて、論理から物理へのマッピングは固定されておらず、それどころか、データが書き換えられるにつれてマッピングが変化する。ＳＳＤはそれを満たす量のデータで利用され、ＳＳＤの物理ページのアドレスは、データがＳＳＤに書き込まれるときにのみ割り当てられる。ＳＳＤに書き込まれるデータの量が利用度レベルであり、データがまだ割り当てられておらず書き込まれていないＳＳＤの残りの部分が、実効ＯＰの領域である。ＳＳＤが完全に利用されていない場合、未割り当ての部分はより大きく、実効ＯＰはより高い。
【００３３】
例えば、１０％のＯＰを有する１ＴＢ（テラバイト）のストレージディスクには、ユーザが利用できない１００ＧＢ（ギガバイト）のＯＰストレージ領域と、利用可能な９００ＧＢのストレージがある。９００ＧＢの利用可能なストレージが、ユーザに公表され得る。１００ＧＢのＯＰ領域は、ＳＳＤが、バックグラウンドでＧＣプロトコルを実行したり、あるいはＳＳＤの要求された、または指定された書き込みデータ転送速度で、新たなデータライトコマンドを受け付けたりすることを可能にする予備のページとして管理される。ユーザは９００ＧＢにアクセスできるが、ユーザがディスクに４００ＧＢのデータだけを書き込んでいる場合、実効ＯＰ領域は、アクセス可能なストレージ空間である残りの５００ＧＢに、予約されたＯＰ領域の１００ＧＢを加えたものである。
【００３４】
ＯＰ領域は、上書きによって無効化された古いデータに対してバックグラウンドでＧＣプロトコルを行うために、予備の、前もって消去されたデータブロックおよびページに、新たなデータを直ちに上書きする機能を、ＳＳＤに提供する。ＯＰ無しでは、新たなデータを配置する消去されたページ空間を作るために、ＧＣプロトコルはデータの上書きと同期して行われるべきであり、従って、ＳＳＤのライト性能が落ちる。ＯＰは一般にＳＳＤの製造中に決定され、既知であるが、ＳＳＤにデータを書き込み、存在するデータを上書きし、（ホストのファイルシステム内でデータが消去された後に、解放されたＬＢＡを割り当て解除するために、ＳＳＤに対して具体的に設計され、規定された、いわゆる「トリム」コマンドを用いて）データを消去するＳＳＤの使用中に、ＳＳＤの実効ＯＰは変化する。論理から物理へのアドレスのマッピングの管理と、ＮＡＮＤフラッシュのページの割り当ておよび割り当て解除とが、ＳＳＤのフラッシュメモリコントローラのプライベートな範囲内にとどまるので、ＳＳＤの現在の実効ＯＰは、従来のストレージデバイスにおけるストレージ装置内のローカルのコントローラには、またはユーザには、使用できない。
【００３５】
稼働段階において、ＳＳＤ４００は有効データページと、（上書きされた、またはトリムされたデータのような）無効またはダーティデータページと、フリーページとを含む。ダーティデータページは、ＧＣ処理が行われた後にフリーページとして利用可能になり得る。さらに、稼働中に、データのブロックは、Ｐ／Ｅサイクル限界を超えることやその他のＮＡＮＤの故障メカニズムによって機能しなくなり、稼働不能となり得る。これらは、ストレージ装置の使用に伴って、時間とともに増加する不良ブロック４２０として示され、ストレージディスクの全体の容量を低下させる。
【００３６】
ＳＳＤ４００内のＯＰは、ＳＳＤ４００の、未割り当てのまたは未使用のデータページと、全ての利用可能なデータページとの間の比率として定義される。ＳＳＤが完全に、すなわち、そのエクスポートされる容量４１６まで、データで満たされるシナリオにおいては、未割り当てのデータページは、残りの予備ページ４１５である。このようなシナリオでは、ＳＳＤ４００内に不良ブロックがないことを想定すると、ＯＰは以下の式（式１）による比率として表される。
【００３７】
【数１】
2020529679.tif 000003
【００３８】
（式１）
しかし、多くの場合、ＳＳＤ４００はエクスポートされる容量４１６の全体まで、データで完全に満たされることはない。ユーザは実際には、ＳＳＤ４００上の書き込みに利用可能な空間（不良ブロック４２０を差し引いた総容量４１０、またはエクスポートされる容量４１６）の一部しか利用（利用データ４２２）しない。したがって、ＳＳＤ４００のより現実的なパラメータは、以下の式（式２）で表される実効ＯＰである。
【００３９】
【数２】
2020529679.tif 000004
【００４０】
（式２）
式２に示されるように、実効ＯＰ４２１は、利用データ４２２と不良ブロック４２０を差し引いた総容量４１０によって決定される。実効ＯＰが低い場合、ＳＳＤは大いに利用されていて、不安定で、より故障しやすいかもしれない。実効ＯＰとＳＳＤの利用度に関する情報は、従来のストレージ装置におけるユーザには利用できない。しかし、この情報が利用できるならば、ストレージ装置のソフトウェアは、デバイスの一層の安定性と、より長い稼働寿命を提供するために、この情報を活用できる。
【００４１】
本発明の一実施形態によれば、ＳＳＤ４００は、利用データ４２２の量と不良ブロック４２０の数を示すデータの形態でＳＳＤ４００に関する情報を提供する、拡張ＡＰＩを提供する。ＡＰＩは、実効ＯＰを含む、ＳＳＤ４００に関する利用度データ情報を決定し、ホストまたはクライアントのコンピュータは、このようなデータを、ストレージ装置内のＳＳＤの利用度のバランスをとるために使用し得る。あるいは、もしくはさらに、ホストはこの情報をユーザに提供してもよい。複数のＳＳＤ間で利用度のバランスをとることで、利用されすぎたデバイスのＷＡを、利用されていないＳＳＤにおける対応するＷＡの増加量よりも多い量だけ低下させて、ストレージデバイスの全体の寿命と動作が改善される。
【００４２】
幾つかの実装では、図４Ｂに示されるように、ＳＳＤ４００は、ＳＳＤ４００のアドレス空間の特定のレンジ４３０に関するデータ利用度４３１の情報を提供する、拡張ＡＰＩを提供する。例えば、ユーザは開始ＬＢＡと長さを提供し得、ＳＳＤはＡＰＩによって、提供されたレンジのデータ利用度４３１を返す。
【００４３】
幾つかの実装では、レンジ４３０はユーザによって指定される。幾つかの実装では、レンジ４３０はＡＰＩにおいて製造者によって指定される。
【００４４】
ＯＰは、例えば式１および２に記載された、あるＳＳＤ上の、利用されたおよび利用可能な空間の比較によって提供される。ＷＡは、メモリに物理的に書き込まれるデータの実際の量が、書き込まれることが意図されたデータの量よりも大きいＳＳＤ内の現象である（この差は、完全に無効で、消去可能であるデータブロックを作成するために、有効データページを、部分的に有効なデータブロックから新たなデータブロックに移動することによるものであって、処理はＧＣ動作において起きる）。例えば、ユーザが１ｋＢ（キロバイト）のデータをあるディスクに書き込もうとし、１０であるＷＡが存在する場合、ディスクに書き込まれるデータの量は実際には１０ｋＢであり得る。ＯＰとＷＡは、ストレージディスクの耐久性と性能の特性の前兆となる。上記の例では、１０であるＷＡを有するディスクは、１であるＷＡを有するディスクよりも、１０倍速く耐久性の限界に達し、１であるＷＡを有するディスクよりも、おおよそ１０倍遅い、低下した性能を有する。実効ＯＰからのＷＡの導出は、参照によってここに組み込まれるＬｕｏｊｉｅ他、ａｒＸｉｖ：１１１０．４２４５ｖ１による「ＮＡＮＤフラッシュにおけるライトアンプリフィケーションに関する改良された解析表現（Ａｎ  Ｉｍｐｒｏｖｅｄ  Ａｎａｌｙｔｉｃ  Ｅｘｐｒｅｓｓｉｏｎ  ｆｏｒ  Ｗｒｉｔｅ  Ａｍｐｌｉｆｉｃａｔｉｏｎ  ｉｎ  ＮＡＮＤ  Ｆｌａｓｈ）」という刊行物に詳細に記載されている。
【００４５】
図１に示す先行技術のグラフ１００にみられるように、ＷＡはＯＰに対して反比例し、この関係は非線形である。小さなＯＰは非常に高いＷＡと相互に関連し、およそ２０％のＯＰの屈曲部１０８の後の間、ＷＡは増加するＯＰに対してほとんど変化しない。屈曲部１０８よりも前では、例えば５％の実効ＯＰに対して、ＷＡは１１である。屈曲部１０８の後では、３５％の実効ＯＰに対して、ＷＡは２である。あるディスクの実効ＯＰは、そのディスクのＷＡに対して、そして結果としてディスクの性能、安定性、および耐久性に対して、大きな影響を及ぼす。より高い実効ＯＰでは、ディスクの耐久性と性能は、より低い実効ＯＰよりも優れている。
【００４６】
ＳＳＤ内のＯＰは、消費者が利用可能なデータ記憶単位当たりのコストを下げるために、しばしば最小化される。しかし、ベンダは動作期間の保証を提供し、製品が保証された動作期間の前に故障しないように、ＯＰを最適化する。
【００４７】
動作期間の保証は、Ｐ／Ｅカウントと相互に関連する１日当たりのディスク書き込み（Ｄｉｓｋ  Ｗｒｉｔｅ  ｐｅｒ  Ｄａｙ）（ＤＷＰＤ）とＷＡとに基づいて概算される。高い利用度または不良ブロックのために低い実効ＯＰを有するＳＳＤは、他のＳＳＤよりも前に、その耐久性の限界に達して、より早く故障し得る。したがって、消費者へのコストを下げるためのＯＰの最小化は、製品の耐用年数に逆に悪影響を及ぼし、実際には消費者またはベンダへより高いコストを引き起こし得る。
【００４８】
ストレージ装置の動作可能な耐用年数を最大化するために、ＳＳＤのＯＰは、ＳＳＤの動作期間中に最適化することができ、ＳＳＤのリソースの最適化を提供するために各時点で選択されるべきである。例えば、屈曲部の値１０８、または他のＯＰの値は、ＷＡを低く保つために、実効ＯＰがそれよりも上に維持されるべき閾値として選ばれ得る。幾つかの実装では、閾値は、ＳＳＤ内の予備の空間の量が、ＳＳＤを機能しないか、リードオンリー状態に至らせる最小値に近付いていることを、ＦＴＬに通知する警告として用いられる。
【００４９】
ある１つのＳＳＤストレージがより利用されるにつれて、ＯＰの値が減少して、屈曲部の値１０８に近付くとき、そのＳＳＤのコントローラ内のＦＴＬが、ＯＰを調整するために及ぶ範囲は限られ得るが、ストレージ装置コントローラによって管理される複数の個別のＳＳＤが存在するストレージ装置では、ＳＳＤ間でデータを移動させることによって、その個々のＳＳＤのＯＰを調整して、バランスを取るためのより高い柔軟性（ｆｒｅｘｉｂｉｌｉｔｙ）が存在し得る。幾つかの実施形態では、ストレージ装置コントローラは、複数のＳＳＤによって提供される拡張ＡＰＩを使用して、ＯＰ、不良ブロック、およびデータマッピングの情報にアクセスする。この情報を使用して、コントローラはあるＳＳＤから別のＳＳＤにデータを移動させ、これによりソースおよびデスティネーションＳＳＤの実効ＯＰを変更する。
【００５０】
幾つかの実施形態において、閾値は単一の閾値であり得る。幾つかの実装において、閾値は複数の閾値であり得る。幾つかの実装において、閾値はいずれかの他のＯＰに関連する閾値であり得る。幾つかの実装において、特定のＳＳＤでＯＰが閾値を超える場合、ストレージ装置のコントローラは、ＳＳＤの動作を最適化して、故障を防止するために、ＳＳＤのＯＰを閾値以内に戻すためのバランシングプロトコルを実行する。幾つかの実装において、閾値は、２または３である目標のＷＡに対応する実効ＯＰであり、例えば２０から４０％の実効ＯＰである。２または３であるＷＡでは、より高いＷＡと比較して、耐久性（ｅｎｄｕｒａｎｃｅ）は劇的に低下し、ＳＳＤの性能は向上する。
【００５１】
図５は、コントローラの拡張ＡＰＩによって規定されたバランシングプロトコルを表す、複数のＳＳＤのプールに亘るＯＰのバランスのブロック図５００を示す。ブロック図は、第１ＳＳＤ５１０、第２ＳＳＤ５１１、第３ＳＳＤ５１２、および第４ＳＳＤ５１３を含む。第１ＳＳＤ５１０は仮想ディスクから書き込まれるデータを含む第１レンジ５３０と、同一または異なる仮想ディスクから書き込まれるデータを含む第２レンジ５３１とを含む。第１ＳＳＤ５１０はまた、矢印の垂直方向の高さによって示される第１実効ＯＰ５２０を有している。後述するように、第１実効ＯＰは（図２のコントローラ２２２のような）コントローラによって決定される。同様に、第２ＳＳＤ５１１は第２実効ＯＰ５２１を有し、第３ＳＳＤ５１２は第３実効ＯＰ５２２を有し、第４ＳＳＤは第４実効ＯＰ５２３を有し、各々は、それぞれの矢印の垂直方向の高さによって示され、同様にコントローラによって決定される。
【００５２】
上記のように、実効ＯＰは、ＳＳＤの利用度と関連し、ＳＳＤの耐久性と性能の前兆となる。非常に低い実効ＯＰを有するＳＳＤは、より高い実効ＯＰを有するＳＳＤと比較して、その耐久性の限界により近く、低い性能を有する。ＳＳＤプール内の複数のＳＳＤに亘って利用度のバランスを取ることで、ストレージ装置は全体としてより良い性能を有し、ＳＳＤの故障の機会が減少する。図５の複数のＳＳＤの各々の実効ＯＰは、高さが変わる垂直方向の矢印に示されるように、バランスが取れていない。各ＳＳＤの利用度を決定して、予め決められた選択ヒューリスティックに従って複数のＳＳＤのバランスを取るために、コントローラ上の拡張ＡＰＩ使用することで、ストレージ装置の性能と安定性を最適化できる。
【００５３】
コントローラ（例えば、図２のコントローラ２２２）は、ＳＳＤの利用度の指標として、各ＳＳＤの実効ＯＰを決定する。コントローラは、マッピングテーブル内の２つのＬＢＡの値の間の利用度を問い合わせることで、テーブルから各ＳＳＤの利用度を決定する。コントローラはマッピングテーブルにアクセスでき、各ＳＳＤ上のいずれＬＢＡが書き込まれ、いずれが書き込まれていないのかを決定するためにマッピングテーブルに問い合わせることで、利用度レベルまたは実効ＯＰを決定できる。コントローラはあるＳＳＤの、またはあるＳＳＤの一部の利用度を決定するために、マッピングテーブルに問い合わせできる。利用度レベルまたは実効ＯＰは、式２に従って、第１ＳＳＤ上の利用された空間と、利用可能な空間全体との比率としても算出できる。
【００５４】
ある特定のＳＳＤの実効ＯＰが閾値未満であるとき、コントローラは別のＳＳＤ内の利用可能な空間の調査を行う。コントローラが利用可能な空間を有するＳＳＤを特定した場合、コントローラは、あるＬＢＡのレンジを、十分な利用可能な（つまり、未割り当ての）空間を備える新たなＳＳＤに移動させる。例えば、コントローラが、第１実効ＯＰ５２０が閾値未満であると判断した場合、コントローラは残りのＳＳＤである、第２ＳＳＤ５１１、第３ＳＳＤ５１２、および第４ＳＳＤ５１３の利用度を調べて、それらＳＳＤのいずれかに利用可能な空間があるかどうかを判定する。コントローラは、この例において、第３ＳＳＤ５１２が第２レンジ５３１のための十分な利用可能な空間を有し、第３ＳＳＤ５１２が閾値より上の実効ＯＰを有すると判断する。そして、コントローラは第２レンジ５３１を第１ＳＳＤ５１０から第３ＳＳＤ５１２に移動させる。第１ＳＳＤ５１０の実効ＯＰ５２０は、第１ＳＳＤから第３ＳＳＤ５１２のリソースへの第２レンジ５３１の移動に従って、増加するだろう。
【００５５】
コントローラは仮想マッピングテーブルにアクセスすることで、データを移動させることができるデスティネーションＳＳＤを決定し得る。コントローラ内の拡張ＡＰＩは、マッピングテーブルにアクセスでき、ＳＳＤ内の物理ページへのＬＢＡのマッピングを抽出できる。この情報を用いて、拡張ＡＰＩは、ＳＳＤの領域またはページのいくつが仮想空間にマッピングされているかと、いくつが現在仮想空間にマッピングされていないか（したがって未割り当てであって、利用可能であるか）を算出する。このように、コントローラは行き先（ｄｅｓｔｉｎａｔｉｏｎ）となる可能性のあるＳＳＤの、様々な領域の利用度を決定できる。
【００５６】
図５の例は、単一のレンジ（第２レンジ５３１）の第１ＳＳＤ５１０から第３ＳＳＤ５１２への移動を表しているが、他の実装では、コントローラは複数のレンジをそのＳＳＤから複数の他のＳＳＤに移動させることができる。コントローラはまた、第２レンジ５３１のような単一のレンジを、その単一のレンジを他のＳＳＤに配置される、より小さな複数のレンジに分割することで、様々なＳＳＤに亘る複数の対象のレンジに移動させることができる。
【００５７】
移動されるレンジは、レンジの利用度に関する拡張ＡＰＩのパラメータを介して、コントローラによって選択され得る。コントローラは、閾値を超える実効ＯＰ５２０をもたらすために、第１ＳＳＤ５１０から移されなければならない利用データの量を算出する。そして、コントローラは要求されるデータ量を満たす少なくとも１つのデータレンジを選択する。幾つかの実装では、第１ＳＳＤ５１０上の複数のデータレンジが、要求されるデータ量を満たす場合、コントローラは、移動のペナルティを最小化するために、その要求を満たす最小のレンジを移動すると決定する。幾つかの実装では、第１ＳＳＤ５１０上の複数のデータレンジが要求されるデータ量を満たす場合、コントローラは、その要求を満たす、最もアクセスが少ないレンジを選択する。幾つかの実装では、第１ＳＳＤ５１０上の複数のデータレンジが要求されるデータ量を満たす場合、コントローラは、その要求を満たす、最もアクセスが多いレンジを選択する。
【００５８】
コントローラは、ＳＳＤの寿命を伸ばし、故障の可能性を低下させるために、複数のＳＳＤのプールが均等に持ちこたえられ、ＳＳＤが低いＷＡで動作できるようにバランシングプロトコルを実行する。コントローラは、移動後の複数のＳＳＤの最終結果のＯＰを予め算出し、残りのＳＳＤに亘って、移動される１つのレンジまたは複数のレンジを配置するための、ＳＳＤ上の最適な場所を選択することによって、ＳＳＤのプールに亘って、実効ＯＰを均等に分配するためのバランシングプロトコルを実行する。幾つかの実装において、この最適化は、移動後の複数のＯＰの標準偏差を最小化することに基づく。幾つかの実装において、コントローラが、ある特定のＳＳＤにおける不良ブロックまたは書き込みエラーの数が閾値を超えて増加したと判断した場合、コントローラはそのＳＳＤへのデータの書き込みを停止し、残りのデータの、そのＳＳＤから残りのＳＳＤへのバランスを再度とらせてもよい。ＳＳＤ内の不良ブロックの量がＳＳＤの動作を妨げるときのような、ＳＳＤが満杯になる状況では、コントローラによって行われるバランシングプロトコルが、デバイス内の他のＳＳＤ上の利用可能な空間を利用することで、そのＳＳＤの故障を防止する。
【００５９】
ＳＳＤのプールに亘ってＯＰを最適化して均等にするためにデータレンジの移動を用いるＳＳＤプールのバランシングプロトコルは、拡張ＡＰＩを介してコントローラに提供される詳細なデータ利用度情報を使用する。上述したように、データ利用度情報はＳＳＤ毎に決定できるか、あるいはより詳細なデータ利用度情報がＳＳＤ上の仮想マッピングレンジ毎に決定できる。
【００６０】
幾つかの実装では、物理的なＳＳＤ上に存在するデータに対してプールバランシングプロトコルを実行することに加えて、コントローラは、動作可能な実効ＯＰの閾値が破られるように、仮想ディスクをＳＳＤ上にマッピングしない。この方法では、耐久性やダイの故障によって不良ブロックが蓄積した場合であっても、デバイスは常時動作可能な状態に保たれる。
【００６１】
ストレージ装置の性能を向上させるため、ＳＳＤの利用度のバランスがとられるように、コントローラのロジックは、異なる実装のケース毎に変更できる。コントローラは、性能、耐久性、またはエクスポートされる容量を最適化するために、上述した原則を用いる拡張ＡＰＩを備えていてもよい。幾つかの実装において、コントローラは、ＳＳＤ間でデータを実際に移動することなく、ＳＳＤの利用度に関連する情報を外部のユーザに提供する拡張ＡＰＩを備え得る。
【００６２】
図６は、ＳＳＤのプールに亘ってＯＰのバランスをとることを制御するための決定フロー６００を示す。決定フロー６００は、複数のＳＳＤのプールにおける実効ＯＰのバランスをとるために、（図２のコントローラ２２２のような）コントローラによって使用されてもよい。
【００６３】
ステップ６０２において、コントローラは事前に規定された期間毎に、例えば、毎時、または１日に一度、バランシングプロトコルを実行するように駆動される。コントローラは時間に基づくトリガを検知してもよいし、あるイベントの発生によって駆動されてもよい。幾つかの実装では、バランシングプロトコルが駆動される期間は、製造者によって指定される。幾つかの実装では、バランシングプロトコルが駆動される期間は、ユーザによって指定される。幾つかの実装では、バランシングプロトコルは、予め規定された期間で駆動され、加えて、ユーザによるコマンドのようなイベントで駆動される。
【００６４】
ステップ６０４において、バランシングプロトコルのトリガが駆動された後、コントローラは各ＳＳＤの実効ＯＰのレベルを取得するためにＳＳＤをチェックする。コントローラは、マッピングテーブルにアクセスして、各ＳＳＤの第１および第２ＬＢＡ間の、ＳＳＤの部分（ｓｅｃｔｉｏｎ）に関する利用度を、マッピングテーブル内のＬＢＡから決定することにより、拡張ＡＰＩを用いて実効ＯＰを決定する。幾つかの実装では、コントローラは、式２を用いて、ＳＳＤの総容量に対するＳＳＤの利用度と不良ブロックの量とから、ＳＳＤの実効ＯＰを算出することで、実効ＯＰを決定する。
【００６５】
幾つかの実装では、コントローラはＳＳＤの利用度に関連する、またはＳＳＤの一部の利用度に関連する、異なるパラメータを取得する。ステップ６０６において、コントローラは各ＳＳＤの実効ＯＰのレベルを、保存された閾値と比較して、閾値を満たさない実効ＯＰのレベルを有するＳＳＤがあるかどうかを判定する。閾値は製造者によって設定される、予め決められた実効ＯＰの値である。幾つかの実装では、閾値は図１に示されるように、ＷＡの「屈曲部」の値に対するＯＰであるか、それ未満であり、例えば約１５％である。
【００６６】
閾値未満の実効ＯＰのレベルを有するＳＳＤがない場合、コントローラはＳＳＤのバランスをとるいずれのことも行わず、コントローラは経路６０７上で次のバランシングプロトコルのトリガを待つ。コントローラが閾値未満の実効ＯＰレベルを有するＳＳＤがあると判断した場合、そのように特定されたＳＳＤの全てがバランスをとるための対象になる。
【００６７】
例えば、図５の図を参照すると、コントローラは第１実効ＯＰ５２０、第２実効ＯＰ５２１、第３実効ＯＰ５２２、および第４実効ＯＰ５２４を決定し、第１ＳＳＤ５１０が閾値未満の実効ＯＰを有すると判断する。
【００６８】
図６のステップ６０８において、コントローラは、閾値未満の実効ＯＰレベルを有する複数のＳＳＤのＯＰレベルのバランスをとる順序を決定する。幾つかの実装では、コントローラは実効ＯＰによって複数のＳＳＤを順序付け、最初に、最小の実効ＯＰ値を有するＳＳＤのバランスをとることを決定する。幾つかの実装において、コントローラは実効ＯＰによって複数のＳＳＤを順序付け、ＳＳＤ上のデータへのアクセス率のような別のパラメータに基づいてバランスをとる順序を決定する。幾つかの実装において、コントローラは実効ＯＰによって複数のＳＳＤを順序付け、バランスをとるための、最小の実効ＯＰを有するＳＳＤを選択し、残りのＳＳＤの順序は無視する。幾つかの実装において、コントローラは複数のＳＳＤを順序付け、最小の実効ＯＰを有するＳＳＤを選択するが、最小の実効ＯＰのリストのバランスをとった後、バランスをとるために選択されていない残りのＳＳＤの順序も記録する。
【００６９】
例えば、図５を再度参照すると、コントローラは、第３ＳＳＤ５１２が、移動後も実効ＯＰを閾値以内に維持しながら、第１ＳＳＤ５１０のデータの一部を受け入れることができると判断する。
【００７０】
図６のステップ６１０において、コントローラは、実効ＯＰの閾値以内のままで、追加の利用度のための空間があるＳＳＤが存在するかどうかを判定する。コントローラはいずれのＳＳＤが追加の利用度を有することができるかを決定し、決定されたＳＳＤの１つを、バランシングプロトコルのためのデスティネーションＳＳＤとして選択する。コントローラは、デスティネーションＳＳＤを決定するために、移動後の、可能性がある各デスティネーションＳＳＤの実効ＯＰの値を予め算出してもよい。データレンジの移動はＳＳＤの利用度を増加させるので、実効ＯＰを予め算出することが望ましいだろう。コントローラは、例えば、最高の実効ＯＰを有するＳＳＤを選択すること、追加の利用度のための空間がある最初に特定されたＳＳＤを選択すること、最高の実効ＯＰを含むある範囲内の実効ＯＰを有するＳＳＤの集合から１つのＳＳＤをランダムに選択すること、または最高の実効ＯＰを含むある範囲内の実効ＯＰを有するＳＳＤの集合から最も長い間アクセスされていないＳＳＤを選択すること、等のような、様々なパラメータに基づくデスティネーションＳＳＤを選択し得る。
【００７１】
実効ＯＰを閾値より上に維持しながら、追加の利用度のための空間があるＳＳＤが存在しない場合、コントローラは図７に記載された処理を開始するために、経路６１１に沿ってバランシングプロトコルの第２段階に進む。
【００７２】
図７は、追加の利用度のための空間があって、閾値を超える実効ＯＰを維持できるデスティネーションＳＳＤが１つもない状況のための決定フロー７００を示す。決定フロー７００は、コントローラが図６からの経路６１１上でプロトコルの第２段階を開始した後、ステップ７０２を起点とする。ステップ７０４において、コントローラは閾値を超える実効ＯＰを有するＳＳＤがあるかどうかを判定する。閾値を超える実効ＯＰを有するＳＳＤがない場合、コントローラはステップ７０６でプログラムを終了し、待機状態に戻る。閾値を超える実効ＯＰを有するＳＳＤがある場合、コントローラはステップ７０８に進む。ステップ７０８において、コントローラは実効ＯＰによって複数のＳＳＤを順序付けて、最大のＯＰを有する、対象のＳＳＤを選択する。ステップ７１０において、コントローラは、対象のＳＳＤの実効ＯＰを閾値よりも上にさらに維持したまま、対象ＳＳＤに移動させられるデータのサイズまたは量を決定する。ステップ７１２において、コントローラは決定された量を対象のＳＳＤに移動させる。
【００７３】
ステップ７１４において、コントローラはソースＳＳＤの実効ＯＰが閾値より低いままであるかどうかを判定する。ソースＳＳＤの実効ＯＰが閾値を超えるようになった場合、コントローラはステップ７１６でプログラムを終了する。ソースＳＳＤの実効ＯＰが閾値より低いままである場合、コントローラは、閾値よりも大きな実効ＯＰを有するＳＳＤが存在するか否かについてのステップ７０４の決定から開始するプログラムを繰り返すために、経路７１８に沿って戻る。コントローラは、デスティネーションＳＳＤおよびソースＳＳＤが閾値を超える実効ＯＰを有して処理を終えるように、プール内の複数のＳＳＤに残りの追加の利用度を分配するため、プール内の複数のＳＳＤじゅうをフロー７００に従って反復してもよい。
【００７４】
図６を再度参照すると、代わりに、コントローラが図６のステップ６１０において、追加の利用度のための空間があるデスティネーションＳＳＤが１つも存在しないと判断した場合、コントローラはソースＳＳＤよりも高い実効ＯＰを有するデスティネーションＳＳＤをさらに選択してもよく、ソースおよびデスティネーションＳＳＤの両方の実効ＯＰを等しい値とするために算出された量のデータを移動させる。代わりの実施形態では、実効ＯＰを閾値より上に維持したまま、追加の利用度のための空間があるＳＳＤが存在しない場合、コントローラはバランシングプロトコルを終了し、待機状態に戻る。
【００７５】
図６のステップ６１０において、コントローラが追加の利用度のための空間があるＳＳＤが存在すると判断した場合、コントローラは図６のステップ６１２に進む。ソースＳＳＤおよびデスティネーションＳＳＤの選択の後、コントローラはどのデータをソースＳＳＤからデスティネーションＳＳＤに移動させるかを決定する。ステップ６１２において、コントローラは実効ＯＰを閾値以内にする、ソースＳＳＤ内のデータレンジを決定する。コントローラはソースＳＳＤ上で、高い利用度を有する１つ以上のデータレンジであって、ソースＳＳＤからのそれらデータレンジの移動が実効ＯＰを閾値以内にするようにサイズが調整された１つ以上のデータレンジを決定する。適合する２つ以上のデータレンジが特定された場合、コントローラはＡＰＩで特定されたパラメータに従って、どのデータレンジを移動させるかを決定する。
【００７６】
コントローラはマッピングテーブルを用いて、様々なデータレンジの利用度を決定することで、ソースＳＳＤ上の適合するデータレンジを決定してもよい。例えば、コントローラはマッピングテーブルにアクセスして、マッピングテーブル内のＬＢＡから、いくつが各ＳＳＤにマッピングされたかを判断できる。
【００７７】
選択ヒューリスティックは、コントローラが、最小の移動ペナルティと最大の効果を得るために、最小の容量と最高の利用度を有するデータレンジまたはセグメントを決定するように、選択されることができる。しかし、幾つかの実装においては、他の選択ヒューリスティックが好ましいかもしれない。ソースおよびデスティネーションＳＳＤの両方の実効ＯＰに関する閾値の条件を満たす、いずれかのデータレンジを選択できる。幾つかの実装において、コントローラは、ソースＳＳＤ上のデータレンジのアクセス率、またはデスティネーションＳＳＤ上の利用可能な空間に基づいて、どのデータレンジを移動させるかを決定してもよい。
【００７８】
幾つかの実装において、コントローラはある単一のソースデータレンジを、複数のデスティネーションＳＳＤに配置される、複数のより小さなデータレンジに分割できる。幾つかの実装において、コントローラはＳＳＤプールに亘ってより均等にＯＰのバランスをとるために、そのようにしてもよい。幾つかの実装において、コントローラは、実効ＯＰを要求された閾値以内に維持しながら、全部のソースデータレンジを受け入れられるデスティネーションＳＳＤが１つもない場合、そのようにしてもよい。
【００７９】
ステップ６１４において、コントローラはソースＳＳＤからデスティネーションＳＳＤに特定されたデータレンジを移動させる。ソースＳＳＤからデスティネーションＳＳＤへのデータレンジの移動は、ソースおよびデスティネーションＳＳＤの両方が閾値を満たす実効ＯＰを有するように、それらＳＳＤのバランスをとるべきである。コントローラはデータを移動させる前に、データを配置できる、デスティネーションＳＳＤの受け入れ可能な部分があると判断してもよい。そして、コントローラは移動されたデータを反映するため、マッピングテーブルを更新してもよい。
【００８０】
ソースＳＳＤからデスティネーションＳＳＤにデータレンジが移動させられた後、コントローラは、バランスをとる必要がある残りの特定されたＳＳＤじゅうで、同一のステップを実行することを繰り返してもよい。複数のＳＳＤに亘って実効ＯＰのバランスをとるためのデータレンジの移動は、プール内の全てのＳＳＤが閾値を超える実効ＯＰを有するまで、またはデータの移動が実行できなくなるまで、継続される。
【００８１】
代わりに、ステップ６０４で全てのＳＳＤの実効ＯＰを決定するよりはむしろ、ステップ６０８を迂回して、あるＳＳＤが閾値を下回る実効ＯＰを有して特定され次第、コントローラがバランシングプロトコルを開始するように、コントローラはステップ６０４において一度に１つのＳＳＤの実効ＯＰを決定してもよい。
【００８２】
さらなる代案として、コントローラは、ステップ６１０において、各ＳＳＤに関して閾値未満の実効ＯＰを維持しながら、移動後に全てのＳＳＤの実効ＯＰが最小の標準偏差を有するように、複数の行き先と、各行き先へのデータチャンクのサイズとを、最適に選択し得る。
【００８３】
図８は複数のＳＳＤのプールに亘って利用度パラメータのバランスをとるための方法８００を示す。方法８００は、（図２のコントローラ２２２のような）コントローラがバランシングプロトコルに適したデスティネーションドライブを特定する動作フローを示す。
【００８４】
ステップ８０２において、第１ＳＳＤの第１利用度パラメータと、第２ＳＳＤの第２利用度パラメータとが算出される。第１ＳＳＤの第１利用度パラメータは、第１閾値よりも小さい。第１利用度パラメータと第２利用度パラメータとは、実効オーバープロビジョニングの指標、またはＳＳＤの利用度に関連する他の適切なパラメータであり得る。
【００８５】
ステップ８０４において、第２利用度パラメータは第１閾値と比較される。第２利用度パラメータが第１閾値よりも小さい場合、方法は、第３ＳＳＤが特定され、第３ＳＳＤに対して第３利用度パラメータが算出されるステップ８０６に進む。そして、ステップ８０４で第３利用度パラメータが第１閾値と比較され、方法は続行する。
【００８６】
ステップ８０４において第２利用度パラメータが第１閾値よりも大きい場合、方法はステップ８０８に進む。ステップ８０８では、第１ＳＳＤ上で、移動されるデータのデータレンジが特定される。データレンジは、第１ＳＳＤからのそのデータレンジ内のデータの移動が、第１ＳＳＤと関連付けられた利用度パラメータを第１閾値以内にするように特定される。ステップ８１０において、第４利用度パラメータは、第１ＳＳＤの特定されたデータレンジからのデータを含む第２ＳＳＤに対して、算出される。ステップ８１２において、第５利用度パラメータは、第１ＳＳＤの特定されたデータレンジ内のデータを除く第１ＳＳＤに対して、算出される。ステップ８１０および８１２は、コントローラが、第１ＳＳＤから第２ＳＳＤへのデータの移動後の第１ＳＳＤおよび第２ＳＳＤの利用度を算出することを可能にする。２つのＳＳＤの利用度パラメータを予め算出することで、コントローラは、選択されたデスティネーションＳＳＤが受け入れ可能であるかどうかを判定でき、データの移動と、複数のＳＳＤに亘って利用度のバランスをとることとを最適化できる。
【００８７】
ステップ８１４において、第４利用度パラメータと第５利用度パラメータとを含む、複数の利用可能なＳＳＤに亘る複数の利用度パラメータの標準偏差が算出される。標準偏差の算出は、コントローラが、第１ＳＳＤから第２ＳＳＤへのデータの移動後の、複数の利用可能なＳＳＤに亘る利用度のバランスを決定することを可能にする。ステップ８１６において、標準偏差は第２閾値と比較される。標準偏差が第２閾値より大きい場合、方法はステップ８０６に戻り、新たなデスティネーションＳＳＤが決定される。標準偏差が第２閾値より小さい場合、方法はステップ８１８に進み、第１ＳＳＤからのデータレンジに対応するデータが第２ＳＳＤに移動する。
【００８８】
幾つかの実装では、ステップ８１６において標準偏差が第２閾値より大きい場合、新たなデスティネーションＳＳＤを決定するために方法をステップ８０６に戻す代わりに、特定されたデータレンジからのデータの一部を含む第２ＳＳＤの利用度パラメータが算出され、第２のデスティネーションＳＳＤが、特定されたデータレンジからのデータの残りの部分のための行き先として選択されてもよい。そして、標準偏差は、データレンジ内のデータの一部が２つのデスティネーションＳＳＤの間で分散されるときに、利用度のバランスがとられているかどうかを判定するために、再度算出できる。幾つかの実装では、方法は、第１ＳＳＤの特定されたデータレンジに対応するデータに対して、３つ以上のデスティネーションＳＳＤを決定してもよい。
【００８９】
ＳＳＤのプール内の複数のＳＳＤの利用度パラメータの標準偏差を算出することは、コントローラが、ＳＳＤのプールに亘る利用度を最適化することを可能にする。ＳＳＤのプールに亘る利用度の最適なバランスは、デバイスの寿命を伸ばし、ＳＳＤまたはデバイスの故障のリスクを最小化する。
【００９０】
本発明の様々な態様の他の目的、利点、および実施形態は、本発明の分野の当業者に明らかであり、本明細書および添付図面の範囲内である。例えば、限定はされないが、構造的または機能的な要素が本発明と矛盾することなく再編成され得る。同様に、本発明に係る原理は他の例にも適用されてよく、それらは、ここに詳しく記載されない場合でも、本発明の範囲内であるものとする。
【図１】
2020529679.tif 000005
【図２】
2020529679.tif 000006
【図３】
2020529679.tif 000007
【図４Ａ】
2020529679.tif 000008
【図４Ｂ】
2020529679.tif 000009
【図５】
2020529679.tif 000010
【図６】
2020529679.tif 000011
【図７】
2020529679.tif 000012
【図８】
2020529679.tif 000013
【国際調査報告】
2020529679.tif 000014
2020529679.tif 000015