(57)【要約】【課題】ディスクアレイ装置における断片化解消の要否判定に要する負荷を低減する。【解決手段】複数のＳＳＤと、ホストから受信した第１の書き込み命令を、現用プールに属する各ＳＳＤに対する第２の書き込み命令に変換し、該ＳＳＤに対する、直前の第２の書き込み命令において書き込まれたデータの末尾アドレスを保持しており、末尾アドレスと最新の第２の書き込み命令における書き込み先とが不連続であった不連続回数を保持する手段と、現用プールに属するＳＳＤのうち第１のＳＳＤに関する不連続回数が所定の上限値を超えた場合に、予備プールに属し且つ初期化されている第２のＳＳＤにおいて、第１のＳＳＤが保持している全てのデータについて、複数のデータを書き込み先アドレスが連続した領域にコピーすることと、現用プールから第１のＳＳＤを削除することと、現用プールへ第２のＳＳＤを追加することとを行う手段とを備える。【選択図】      図１
2019148844.tif 000002
【特許請求の範囲】
【請求項１】
書き込みデータと前記書き込みデータの書き込み先を示す物理アドレスとが与えられた際に、前記書き込みデータを書き込むべき所定のサイズを有するページにおける内部アドレスを決定し、前記物理アドレスと決定した前記内部アドレスとの対応関係をアドレスマッピングテーブルとして保持し、決定した前記内部アドレスへ前記書き込みデータを書き込み可能であり、書き込んだ前記書き込みデータを所定の個数の前記ページからなるブロックを単位として消去可能であり、且つ全ての前記書き込みデータが消去された場合に前記アドレスマッピングテーブルを初期化可能である複数のＳＳＤ（Solid State Drive）と、
ホストから受信した第１の書き込み命令を、前記複数のＳＳＤのうち前記第１の書き込み命令に含まれる前記書き込みデータの書き込み先として使われている前記ＳＳＤのグループである現用プールに属する各前記ＳＳＤに対する第２の書き込み命令に変換し、
該前記ＳＳＤに対する、最新の１つ前における前記第２の書き込み命令において書き込まれた前記書き込みデータの末尾を示す前記内部アドレスである末尾アドレスを導出可能なデータを保持しており、導出した前記末尾アドレスと最新の前記第２の書き込み命令における書き込み先を示す前記内部アドレスとが不連続であった不連続回数を保持する
入出力制御手段と、
前記現用プールに属する前記ＳＳＤのうち第１のＳＳＤに関する前記不連続回数が、前記第１のＳＳＤにおける書き込み性能の低下を許容可能な前記第１のＳＳＤに関する前記不連続回数の所定の上限値を超えた場合に、
前記複数のＳＳＤのうち前記第１の書き込み命令に含まれる前記書き込みデータの書き込み先として使われていない前記ＳＳＤのグループである予備プールに属し且つ前記アドレスマッピングテーブルが初期化されている第２のＳＳＤにおいて、前記第１のＳＳＤが保持している全ての前記書き込みデータについて、複数の前記書き込みデータを書き込み先アドレスが連続した領域にコピーすることと、
前記現用プールから前記第１のＳＳＤを削除することと、
前記現用プールへ前記第２のＳＳＤを追加することと
を行う入替制御手段と
を備えたディスクアレイ装置。
【請求項２】
前記入出力制御手段及び前記入替制御手段は、前記ＳＳＤにおいて、書き込みデータが既に書き込まれている、複数の前記ページから成るブロックの一部に新たな書き込みデータを書き込む際に、該ブロックの全体において書き込みデータを予め消去する
請求項１に記載のディスクアレイ装置。
【請求項３】
前記入替制御手段は、前記現用プールから削除した前記第１のＳＳＤに書き込まれた全ての前記書き込みデータを消去し且つ前記アドレスマッピングテーブルを初期化した後に、前記予備プールへ前記第１のＳＳＤを追加する
請求項１又は２に記載のディスクアレイ装置。
【請求項４】
書き込みデータと前記書き込みデータの書き込み先を示す物理アドレスとが与えられた際に、前記書き込みデータを書き込むべき所定のサイズを有するページにおける内部アドレスを決定し、前記物理アドレスと決定した前記内部アドレスとの対応関係をアドレスマッピングテーブルとして保持し、決定した前記内部アドレスへ前記書き込みデータを書き込み可能であり、書き込んだ前記書き込みデータを所定の個数の前記ページからなるブロックを単位として消去可能であり、且つ全ての前記書き込みデータが消去された場合に前記アドレスマッピングテーブルを初期化可能である複数のＳＳＤ（Solid State Drive）を備えたディスクアレイ装置の制御方法であって、
ホストから受信した第１の書き込み命令を、前記複数のＳＳＤのうち前記第１の書き込み命令に含まれる前記書き込みデータの書き込み先として使われている前記ＳＳＤのグループである現用プールに属する各前記ＳＳＤに対する第２の書き込み命令に変換し、
該前記ＳＳＤに対する、最新の１つ前における前記第２の書き込み命令において書き込まれた前記書き込みデータの末尾を示す前記内部アドレスである末尾アドレスを導出可能なデータを保持しており、導出した前記末尾アドレスと最新の前記第２の書き込み命令における書き込み先を示す前記内部アドレスとが不連続であった不連続回数を保持する
入出力制御手順と、
前記現用プールに属する前記ＳＳＤのうち第１のＳＳＤに関する前記不連続回数が、前記第１のＳＳＤにおける書き込み性能の低下を許容可能な前記第１のＳＳＤに関する前記不連続回数の所定の上限値を超えた場合に、
前記複数のＳＳＤのうち前記第１の書き込み命令に含まれる前記書き込みデータの書き込み先として使われていない前記ＳＳＤのグループである予備プールに属し且つ前記アドレスマッピングテーブルが初期化されている第２のＳＳＤにおいて、前記第１のＳＳＤが保持している全ての前記書き込みデータについて、複数の前記書き込みデータを書き込み先アドレスが連続した領域にコピーすることと、
前記現用プールから前記第１のＳＳＤを削除することと、
前記現用プールへ前記第２のＳＳＤを追加することと
を行う入替制御手順と
を行うディスクアレイ装置の制御方法。
【請求項５】
前記ＳＳＤにおいて、書き込みデータが既に書き込まれている、複数の前記ページから成るブロックの一部に新たな書き込みデータを書き込む際に、該ブロックの全体において書き込みデータを予め消去する
請求項４に記載のディスクアレイ装置の制御方法。
【請求項６】
前記現用プールから削除した前記第１のＳＳＤに書き込まれた全ての前記書き込みデータを消去し且つ前記アドレスマッピングテーブルを初期化した後に、前記予備プールへ前記第１のＳＳＤを追加する
請求項４又は５に記載のディスクアレイ装置の制御方法。
【請求項７】
書き込みデータと前記書き込みデータの書き込み先を示す物理アドレスとが与えられた際に、前記書き込みデータを書き込むべき所定のサイズを有するページにおける内部アドレスを決定し、前記物理アドレスと決定した前記内部アドレスとの対応関係をアドレスマッピングテーブルとして保持し、決定した前記内部アドレスへ前記書き込みデータを書き込み可能であり、書き込んだ前記書き込みデータを複数のＳＳＤ（Solid State Drive）を備えたディスクアレイ装置が備えるコンピュータに、
ホストから受信した第１の書き込み命令を、前記複数のＳＳＤのうち前記第１の書き込み命令に含まれる前記書き込みデータの書き込み先として使われている前記ＳＳＤのグループである現用プールに属する各前記ＳＳＤに対する第２の書き込み命令に変換し、
該前記ＳＳＤに対する、最新の１つ前における前記第２の書き込み命令において書き込まれた前記書き込みデータの末尾を示す前記内部アドレスである末尾アドレスを導出可能なデータを保持しており、導出した前記末尾アドレスと最新の前記第２の書き込み命令における書き込み先を示す前記内部アドレスとが不連続であった不連続回数を保持する
入出力制御処理と、
前記現用プールに属する前記ＳＳＤのうち第１のＳＳＤに関する前記不連続回数が、前記第１のＳＳＤにおける書き込み性能の低下を許容可能な前記第１のＳＳＤに関する前記不連続回数の所定の上限値を超えた場合に、
前記複数のＳＳＤのうち前記第１の書き込み命令に含まれる前記書き込みデータの書き込み先として使われていない前記ＳＳＤのグループである予備プールに属し且つ前記アドレスマッピングテーブルが初期化されている第２のＳＳＤにおいて、前記第１のＳＳＤが保持している全ての前記書き込みデータについて、複数の前記書き込みデータを書き込み先アドレスが連続した領域にコピーすることと、
前記現用プールから前記第１のＳＳＤを削除することと、
前記現用プールへ前記第２のＳＳＤを追加することと
を行う入替制御処理と
を実行させるディスクアレイ装置の制御プログラム。
【請求項８】
前記ＳＳＤにおいて、書き込みデータが既に書き込まれている、複数の前記ページから成るブロックの一部に新たな書き込みデータを書き込む際に、該ブロックの全体において書き込みデータを予め消去する
請求項７に記載のディスクアレイ装置の制御プログラム。
【請求項９】
前記現用プールから削除した前記第１のＳＳＤに書き込まれた全ての前記書き込みデータを消去し且つ前記アドレスマッピングテーブルを初期化した後に、前記予備プールへ前記第１のＳＳＤを追加する
請求項７又は８に記載のディスクアレイ装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクアレイ装置を構成するＳＳＤにおける断片化を解消する技術に関する。
【背景技術】
【０００２】
ＳＳＤ（Solid State Drive）において、連続しない物理アドレスに対する一連のデータ（ランダムデータ）の書き込み（ランダムライトアクセス）を繰り返すと、ＳＳＤ中のデータが保持されていない記憶領域（空き領域）が徐々に断片化（フラグメンテーション）する。ＳＳＤにおける空き領域の断片化は、ＳＳＤにおける書き込み速度を低下させる。
【０００３】
ＳＳＤでは、データの消去はブロック単位（例えば、５１２キロバイト（ＫＢ））で行われる。一方、データの書き込みは、ブロックより小さいページ単位（例えば、５１２バイト（Ｂ）、４ＫＢ等）で行われる。そのため、データが既に書き込まれているブロックの一部に新たなデータを上書きするためには、当該ブロックに書き込まれたデータを読み出した後に、当該ブロック全体を消去し、読み出したデータを新たなデータを用いて更新したデータを当該ブロックに書き込むことが必要である。従って、ＳＳＤにおける空き領域の断片化は、ＳＳＤにおけるデータの書き込みの速度を大幅に低下させる。このような空き領域の断片化は、連続した物理アドレスに対する一連のデータ（シーケンシャルデータ）の書き込みに比べて、ランダムデータの書き込みにおいて発生しやすい。
【０００４】
ランダムデータを検出する技術の一例が、特許文献１に開示されている。特許文献１のストレージ装置は、書き込むべきデータが所定の長さ以下である場合や、書き込むべきデータに関するライト要求が連続するアドレスに対するライト要求でない場合に、書き込むべきデータがランダムデータであると判断する。そして、ストレージ装置は、ランダムライトアクセスの回数が所定の回数よりも大きい場合等に、ディスク状記憶デバイスに格納されているデータを不揮発メモリデバイスに複製する。そして、ストレージ装置は、ホスト装置からデータ読み出し要求を受信し、対応するデータが不揮発メモリデバイスに格納されている場合には、不揮発メモリデバイスからデータを読み出す。上記構成の結果、特許文献１のストレージ装置では、アクセス性能が向上する。
【０００５】
運用メモリにおいて障害が多発したページを予備メモリのページを用いて代替する技術の一例が、特許文献２に開示されている。特許文献２のメモリ制御方式は、ＴＬＢ（Translation Look-aside Buffer）によって、論理ページを運用メモリの物理ページに変換する。本メモリ制御方式は、ある物理ページにおいて障害が多発すると、当該物理ページを不良／代替一覧テーブルに登録する。そして、本メモリ制御方式は、運用メモリの当該ページから内容を読み出して、予備メモリの代替先ページへコピーする。そして、本メモリ制御方式は、ＴＬＢ内の物理ページを運用メモリから予備メモリのページに書替える。上記構成の結果、特許文献２のメモリ制御方式は、障害が多発した運用メモリのページを予備メモリのページで代替する。
【０００６】
特許文献１や特許文献２に開示されている技術では、空き領域の断片化を解消できない。ＳＳＤにおける空き領域の断片化は、データが書き込まれた領域や空き領域を記憶領域中で連続的に再配置することにより解消される。
【０００７】
ＳＳＤにおける断片化を解消する技術の一例が、特許文献３に開示されている。特許文献３のＳＳＤストレージシステムは、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）１を構成する２台のＳＳＤと、予備用のスペアＳＳＤと、ＲＡＩＤコントローラとを含む。ＲＡＩＤコントローラは、無効ページ数カウント部と、閾値超え検出部と、スペアＳＳＤ書き込み部とを含む。無効ページ数カウント部は、ＳＳＤ内の各ブロックにおいて無効データの書き込み済みの状態にある無効ページ数をカウントする。ここで、無効データとは、書き込み後に論理的に消去（無効化）されたが、物理的に消去されていないデータである。閾値超え検出部は、無効ページ数が所定のページ数閾値を超えたブロックを検出した際に、ガベージコレクションの対象である対象ブロックとして検出する。スペアＳＳＤ書き込み部は、対象ブロックに対する書き込み動作を停止し、対象ブロックに対して書き込むべきデータをスペアＳＳＤの任意のブロックに対して書き込む。ＳＳＤは、ガベージコレクション実行部を含む。ガベージコレクション実行部は、対象ブロックと任意に指定したブロックとを用いて対象ブロックに対してガベージコレクションを行う。上記構成の結果、特許文献３のＳＳＤストレージシステムは、ガベージコレクションが発生しても書き込みレスポンスの低下を防止する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−０７５６５８号公報
【特許文献２】特開平１１−１７５４０９号公報
【特許文献３】特開２０１６−１９２０２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献３のＳＳＤストレージシステムでは、ガベージコレクションの要否判定のために、無効ページ数カウント部が、ＳＳＤ内の各ブロックにおいて無効ページ数を繰り返しカウントする。通常、１ブロックは数十乃至数百ページを含み、１つのＳＳＤは数十乃至数百ブロックを含む。従って、特許文献３のＳＳＤストレージシステムには、無効ページ数のカウントに要する負荷が高いという問題点があった。
【００１０】
本発明は、上記の課題に鑑みてなされたもので、ディスクアレイ装置における断片化解消の要否判定に要する負荷を低減することを主たる目的とする。
【課題を解決するための手段】
【００１１】
本発明の一態様において、ディスクアレイ装置は、書き込みデータと書き込みデータの書き込み先を示す物理アドレスとが与えられた際に、書き込みデータを書き込むべき所定のサイズを有するページにおける内部アドレスを決定し、物理アドレスと決定した内部アドレスとの対応関係をアドレスマッピングテーブルとして保持し、決定した部アドレスへ書き込みデータを書き込み可能であり、書き込んだ書き込みデータを所定の個数のページからなるブロックを単位として消去可能であり、且つ全ての書き込みデータが消去された場合にアドレスマッピングテーブルを初期化可能である複数のＳＳＤ（Solid State Drive）と、ホストから受信した第１の書き込み命令を、複数のＳＳＤのうち第１の書き込み命令に含まれる書き込みデータの書き込み先として使われているＳＳＤのグループである現用プールに属する各ＳＳＤに対する第２の書き込み命令に変換し、該ＳＳＤに対する、最新の１つ前における第２の書き込み命令において書き込まれた書き込みデータの末尾を示す内部アドレスである末尾アドレスを導出可能なデータを保持しており、導出した末尾アドレスと最新の第２の書き込み命令における書き込み先を示す内部アドレスとが不連続であった不連続回数を保持する入出力制御手段と、現用プールに属するＳＳＤのうち第１のＳＳＤに関する不連続回数が、第１のＳＳＤにおける書き込み性能の低下を許容可能な第１のＳＳＤに関する不連続回数の所定の上限値を超えた場合に、複数のＳＳＤのうち第１の書き込み命令に含まれる書き込みデータの書き込み先として使われていないＳＳＤのグループである予備プールに属し且つアドレスマッピングテーブルが初期化されている第２のＳＳＤにおいて、第１のＳＳＤが保持している全ての書き込みデータについて、複数の書き込みデータを書き込み先アドレスが連続した領域にコピーすることと、現用プールから第１のＳＳＤを削除することと、現用プールへ第２のＳＳＤを追加することとを行う入替制御手段とを備える。
【００１２】
本発明の一態様において、ディスクアレイ装置の制御方法は、書き込みデータと書き込みデータの書き込み先を示す物理アドレスとが与えられた際に、書き込みデータを書き込むべき所定のサイズを有するページにおける内部アドレスを決定し、物理アドレスと決定した内部アドレスとの対応関係をアドレスマッピングテーブルとして保持し、決定した部アドレスへ書き込みデータを書き込み可能であり、書き込んだ書き込みデータを所定の個数のページからなるブロックを単位として消去可能であり、且つ全ての書き込みデータが消去された場合にアドレスマッピングテーブルを初期化可能である複数のＳＳＤ（Solid State Drive）を備えたディスクアレイ装置の制御方法であって、ホストから受信した第１の書き込み命令を、複数のＳＳＤのうち第１の書き込み命令に含まれる書き込みデータの書き込み先として使われているＳＳＤのグループである現用プールに属する各ＳＳＤに対する第２の書き込み命令に変換し、該ＳＳＤに対する、最新の１つ前における第２の書き込み命令において書き込まれた書き込みデータの末尾を示す内部アドレスである末尾アドレスを導出可能なデータを保持しており、導出した末尾アドレスと最新の第２の書き込み命令における書き込み先を示す内部アドレスとが不連続であった不連続回数を保持する入出力制御手順と、現用プールに属するＳＳＤのうち第１のＳＳＤに関する不連続回数が、第１のＳＳＤにおける書き込み性能の低下を許容可能な第１のＳＳＤに関する不連続回数の所定の上限値を超えた場合に、複数のＳＳＤのうち第１の書き込み命令に含まれる書き込みデータの書き込み先として使われていないＳＳＤのグループである予備プールに属し且つアドレスマッピングテーブルが初期化されている第２のＳＳＤにおいて、第１のＳＳＤが保持している全ての書き込みデータについて、複数の前記書き込みデータを書き込み先アドレスが連続した領域にコピーすることと、現用プールから第１のＳＳＤを削除することと、現用プールへ第２のＳＳＤを追加することとを行う入替制御手順とを行う。
【００１３】
本発明の一態様において、ディスクアレイ装置の制御プログラムは、書き込みデータと書き込みデータの書き込み先を示す物理アドレスとが与えられた際に、書き込みデータを書き込むべき所定のサイズを有するページにおける内部アドレスを決定し、物理アドレスと決定した内部アドレスとの対応関係をアドレスマッピングテーブルとして保持し、決定した部アドレスへ書き込みデータを書き込み可能であり、書き込んだ書き込みデータを複数のＳＳＤ（Solid State Drive）を備えたディスクアレイ装置が備えるコンピュータに、ホストから受信した第１の書き込み命令を、複数のＳＳＤのうち第１の書き込み命令に含まれる書き込みデータの書き込み先として使われているＳＳＤのグループである現用プールに属する各ＳＳＤに対する第２の書き込み命令に変換し、該ＳＳＤに対する、最新の１つ前における第２の書き込み命令において書き込まれた書き込みデータの末尾を示す内部アドレスである末尾アドレスを導出可能なデータを保持しており、導出した末尾アドレスと最新の第２の書き込み命令における書き込み先を示す内部アドレスとが不連続であった不連続回数を保持する入出力制御処理と、現用プールに属するＳＳＤのうち第１のＳＳＤに関する不連続回数が、第１のＳＳＤにおける書き込み性能の低下を許容可能な第１のＳＳＤに関する不連続回数の所定の上限値を超えた場合に、複数のＳＳＤのうち第１の書き込み命令に含まれる書き込みデータの書き込み先として使われていないＳＳＤのグループである予備プールに属し且つアドレスマッピングテーブルが初期化されている第２のＳＳＤにおいて、第１のＳＳＤが保持している全ての書き込みデータについて、複数の書き込みデータを書き込み先アドレスが連続した領域にコピーすることと、現用プールから第１のＳＳＤを削除することと、現用プールへ第２のＳＳＤを追加することとを行う入替制御を行う入替制御処理とを実行させる。
【発明の効果】
【００１４】
本発明によれば、ディスクアレイ装置における断片化解消の要否判定に要する負荷を低減できるという効果がある。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態におけるディスクアレイ装置の構成の一例を示すブロック図である。
【図２】本発明の第１の実施形態における入出力制御部の動作を示すフローチャートである。
【図３】本発明の第１の実施形態における入替制御部の動作例の前半を説明する図である。
【図４】本発明の第１の実施形態における入替制御部の動作例の後半を説明する図である。
【図５】本発明の第１の実施形態における入替制御部の動作を示すフローチャートである。
【図６】本発明の第１の実施形態におけるＳＳＤに対するデータの書き込みを説明するための図である。
【図７】本発明の第１の実施形態における断片化解消処理を説明するための図である。
【図８】本発明の第１の実施形態における断片化解消処理を説明するための図である。
【図９】本発明の第１の実施形態におけるＳＳＤにおいてランダムデータライトを継続した際の書き込む性能の変化の一例を示すグラフである。
【図１０】本発明の第１の実施形態における初期化されたＳＳＤにおけるシーケンシャルデータの書き込みを説明するための図であるである。
【図１１】本発明の各実施形態におけるディスクアレイ装置を実現可能なハードウェア構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について、図面を参照して詳細に説明する。尚、全ての図面において、同等の構成要素には同じ符号を付し、適宜説明を省略する。
【００１７】
本発明の第１の実施形態について説明する。
【００１８】
本実施形態における構成について説明する。
【００１９】
図１は、本発明の第１の実施形態におけるディスクアレイ装置の構成の一例を示すブロック図である。
【００２０】
本実施形態におけるディスクアレイ装置１００は、ホスト２００に接続される。
【００２１】
ディスクアレイ装置１００は、現用プール１２０と、性能特性テーブル１７０と、入出力管理テーブル１８０と、予備プール１４０と、インタフェース１６０と、入出力制御部１３０と、入替制御部１５０とを含む。
【００２２】
現用プール１２０は、ホスト２００から書き込まれたデータを保持するＳＳＤ１１０のグループである。図１では、初期状態において、現用プール１２０は、２つのＳＳＤ１１０（ＳＳＤ−Ａ、ＳＳＤ−Ｂ）を含むこととする。
【００２３】
性能特性テーブル１７０は、あらかじめ設定された、各ＳＳＤ１１０の種別に応じた不連続回数（RandomWriteCount）の上限値（RandomWriteCount閾値）を表すデータを保持する。不連続回数の上限値は、例えば、あるＳＳＤ１１０において、許容可能な書き込み性能の低下に対応する不連続回数として決定してもよい。
【００２４】
入出力管理テーブル１８０は、各ＳＳＤ１１０の最後のＷｒｉｔｅコマンド（書き込み命令）により書き込まれたデータの末尾のアドレスに後続するアドレスを表すデータ（ContinuousAddress）と、不連続なアドレスに対してデータの書き込みが行われた回数を表すデータ（RandomWriteCount）とを保持する。
【００２５】
ＳＳＤ１１０は、Ｗｒｉｔｅコマンドを受信した際に、Ｗｒｉｔｅコマンドにおける物理アドレス（ＰＢＡ：Physical Block Address）に対してデータを保持するページを割り当てる。ここで、ページは、所定のサイズ（例えば、５１２バイト（Ｂ）、４ＫＢ等）を有する。そして、ＳＳＤ１１０は、ＳＳＤ１１０の内部におけるアドレスマッピングテーブル（不図示）において、割り当て情報を保持する。ここで、ＳＳＤにおいて使用される不揮発性メモリ（NAND Flash Memory）には、同一ページに対する書き換え回数に制限がある。そこで、通常、ＳＳＤは、可能な限り均一にページを利用するようにデータの書き込みを制御する（ウェアレベリング）。そのため、ＳＳＤでは、書き込みデータを保持する領域及び空き領域の断片化が進みやすい。特に、ランダムデータの書き込みでは、シーケンシャルデータの書き込みに比べて、ＳＳＤにおける断片化が顕著に進行する。
【００２６】
予備プール１４０は、現用プール１２０を構成するＳＳＤ１１０と入れ替えるための予備のＳＳＤ１１０のグループである。図１では、初期状態において、予備プール１４０は、１つのＳＳＤ１１０（ＳＳＤ−Ｃ）を含むこととする。
【００２７】
入出力制御部１３０は、現用プール１２０に対する入出力を、現用プール１２０に属するＳＳＤ１１０（例えば、ＳＳＤ−Ａ、ＳＳＤ−Ｂ）に対する入出力に変換する。ここで、入出力は、書き込み命令を含む。又、入出力制御部１３０は、ＳＳＤ１１０への入出力を監視し、入出力管理テーブル１８０を更新する。入出力管理テーブル１８０の更新は、データの書き込み先アドレスの連続性の確認を含む。
【００２８】
入替制御部１５０は、性能特性テーブル１７０と入出力管理テーブル１８０とが保持するデータに基づいて、現用プール１２０に属するＳＳＤ１１０（例えば、ＳＳＤ−Ａ又はＳＳＤ−Ｂの何れか）と、予備プール１４０に属すＳＳＤ１１０（例えば、ＳＳＤ−Ｃ）とを入れ替える。尚、入替制御部１５０は、ＳＳＤ１１０において、書き込みデータが既に書き込まれている、複数のページから成るブロックの一部に新たな書き込みデータを書き込む際に、当該ブロック全体において書き込みデータを予め消去する。ここで、ブロックは、所定の個数のページからなる。
【００２９】
ホスト２００は、ディスクアレイ装置１００に対してデータの読み書きを行う。
【００３０】
インタフェース１６０は、ディスクアレイ装置１００とホスト２００とを接続する。インタフェース１６０は、何れかのＲＡＩＤ（Redundant Arrays of Inexpensive Disks）方式に対応している。
【００３１】
本実施形態における動作について説明する。
【００３２】
図２は、本発明の第１の実施形態における入出力制御部の動作を示すフローチャートである。尚、図２に示すフローチャート及び以下の説明は一例であり、適宜求める処理に応じて、処理順等を入れ替えたり、処理を戻したり、又は処理を繰り返したりしてもよい。
【００３３】
まず、入出力制御部１３０は、ホスト２００から第１の書き込み命令（Ｗｒｉｔｅコマンド）を受信する（ステップＳ１１０）。
【００３４】
次に、入出力制御部１３０は、受信した第１の書き込み命令（Ｗｒｉｔｅコマンド）を、現用プール１２０に属するＳＳＤ１１０（例えば、ＳＳＤ−Ａ、ＳＳＤ−Ｂ）に対する第２の書き込み命令（Ｗｒｉｔｅコマンド）に変換する（ステップＳ１２０）。
【００３５】
続いて、入出力制御部１３０は、当該ＳＳＤ１１０にデータが書き込まれる際に、当該ＳＳＤ１１０に対して発行された第２の書き込み命令における書き込み先アドレス（開始アドレス）が入出力管理テーブル１８０における当該ＳＳＤ１１０のContinuousAddressと一致するか否かを確認する（ステップＳ１３０）。ここで、入出力管理テーブル１８０は、当該ＳＳＤ１１０に関するContinuousAddressに、当該ＳＳＤ１１０に対して発行された１つ前の第２の書き込み命令における、書き込み先アドレスに書き込みデータ長を加算した値を保持している。
【００３６】
一致しなかった場合には（ステップＳ１４０のＮｏ）、入出力制御部１３０は、最新の第２の書き込み命令が不連続なアドレスに対する書き込み命令であると判断して、入出力管理テーブル１８０の当該ＳＳＤ１１０に関するRandomWriteCountに１を加算する（ステップＳ１５０）。
【００３７】
一致した場合には（ステップＳ１４０のＹｅｓ）、入出力制御部１３０は、ステップＳ１６０へ処理を進める。
【００３８】
続いて、入出力制御部１３０は、ＳＳＤ１１０に対する第２の書き込み命令における、書き込み先アドレスに書き込みデータ長を加算した値を、入出力管理テーブル１８０における当該ＳＳＤ１１０に関するContinuousAddressに設定する（ステップＳ１６０）。
【００３９】
ここで、本実施形態における動作例について説明する。
【００４０】
図３は、本発明の第１の実施形態における入替制御部の動作例の前半を説明する図である。
【００４１】
（１）入替制御部１５０は、入出力管理テーブル１８０のＳＳＤ−Ａに関するRandomWriteCountが、性能特性テーブル１７０におけるＳＳＤ−Ａに関するRandomWriteCount閾値を超えたか否かを確認する。
【００４２】
（２）RandomWriteCount−ＡがRandomWriteCount閾値−Ａを超えた場合、入替制御部１５０は、ＳＳＤ−Ａに対する書き込みデータを予備プール１４０に属するＳＳＤ−Ｃへ、断片化が発生しないようにＰＢＡの先頭アドレスからシーケンシャルにコピーする。
【００４３】
図４は、本発明の第１の実施形態における入替制御部の動作例の後半を説明する図である。
【００４４】
（３）入替制御部１５０は、ＳＳＤ−ＡからＳＳＤ−Ｃへのデータコピーを完了する。
【００４５】
（４）入替制御部１５０は、ＳＳＤ−Ａを現用プール１２０から削除する。
【００４６】
（５）入替制御部１５０は、ＳＳＤ−Ａを予備プール１４０に追加する。
【００４７】
（６）入替制御部１５０は、入出力管理テーブル１８０におけるＳＳＤ−Ａに関する情報とＳＳＤ−Ａの内部のアドレスマッピングテーブルとを初期化すると共に、ＳＳＤ−Ａにおけるデータを消去する（以下、ＳＳＤ−Ａの「初期化」とも称す）。ここで、ＳＳＤの初期化は、例えば、ＳＡＴＡ（Serial Advanced Technology Attachment）のＴＲＩＭコマンド又はSecure Eraseコマンド、ＳＡＳ（Serial Attached Small Computer System Interface）のＵＮＭＡＰコマンド等を使用して実現される。即ち、本実施形態では、ＳＳＤの初期化は、市販のＳＳＤにおいて提供される標準的な機能を用いて実現される。
【００４８】
（７）入替制御部１５０は、ＳＳＤ−Ａを予備プール１４０に追加する。
【００４９】
本実施形態における動作の説明に戻る。
【００５０】
図５は、本発明の第１の実施形態における入替制御部の動作を示すフローチャートである。尚、図５に示すフローチャート及び以下の説明は一例であり、適宜求める処理に応じて、処理順等を入れ替えたり、処理を戻したり、又は処理を繰り返したりしてもよい。
【００５１】
まず、入替制御部１５０は、現用プール１２０に属するＳＳＤ１１０のうち、第１のＳＳＤに関するRandomWriteCountがRandomWriteCount閾値を超えたか否かを判定する（ステップＳ２１０）。
【００５２】
RandomWriteCountがRandomWriteCount閾値を超えなかった場合には、入替制御部１５０は、処理を終了する（ステップＳ２２０のＮｏ）。
【００５３】
RandomWriteCountがRandomWriteCount閾値を超えた場合には、入替制御部１５０は、ステップＳ２３０へ処理を進める（ステップＳ２２０のＹｅｓ）。
【００５４】
次に、入替制御部１５０は、予備プール１４０に属し且つ書き込みデータが書き込まれていない第２のＳＳＤにおいて、第１のＳＳＤが保持している全ての書き込みデータについて、複数の書き込みデータを書き込み先アドレスが連続した領域にコピーする（ステップＳ２３０）。
【００５５】
続いて、入替制御部１５０は、現用プール１２０から第１のＳＳＤを削除する（ステップＳ２４０）。
【００５６】
続いて、入替制御部１５０は、現用プール１２０へ第２のＳＳＤを追加する（ステップＳ２５０）。
【００５７】
続いて、入替制御部１５０は、入出力管理テーブル１８０における第１のＳＳＤに関する情報と第１のＳＳＤの内部のアドレスマッピングテーブルとを初期化すると共に、第１のＳＳＤにおけるデータを消去する。（ステップＳ２６０）。
【００５８】
続いて、入替制御部１５０は、第１のＳＳＤを予備プール１４０に追加する（ステップＳ２７０）。
【００５９】
本実施形態のＳＳＤ１１０におけるアドレスマッピングテーブルの初期化について説明する。
【００６０】
図６は、本発明の第１の実施形態におけるＳＳＤに対するデータの書き込みを説明するための図である。より具体的には、図６は、入出力制御部１３０において受信されたＷｒｉｔｅコマンドに対して、ＳＳＤ１１０のページに書き込みデータが書き込まれる動作を模式的に示す。図６において、「ＳＳＤ  ＰＢＡ」と表記されたカラムはＰＢＡを表し、「ＳＳＤ  Ｐａｇｅ」と表記されたカラムはページを表し、「ＳＳＤ  Ｂｌｏｃｋ」と表記されたカラムはブロックを表す。
【００６１】
入出力制御部１３０は、ＳＳＤ１１０に対するＷｒｉｔｅコマンドを受信した際に、ＳＳＤ１１０のＰＢＡに対して書き込みデータを書き込むべきページを割り当て、ＰＢＡと当該ページにおける内部アドレスとの対応関係をアドレスマッピングテーブルとして保持する。例えば、入出力制御部１３０は、ＳＳＤ１１０に対する開始アドレスが９でレングスが１であるＷｒｉｔｅコマンドを受信した際に、ＳＳＤ１１０におけるＰＢＡが９である領域に長さが１セクタである書き込みデータを書き込む。書き込まれた書き込みデータは、ＳＳＤ１１０の内部では、例えば、ページが０でオフセットが０で長さが１セクタである書き込みデータである。この際、入出力制御部１３０は、ＳＳＤ１１０の内部では、ＰＢＡが９で、長さが１セクタである書き込みデータが、ページが０で、オフセットが０で、長さが１セクタであるデータであることをアドレスマッピングテーブルにおいて保持する。
【００６２】
ＳＳＤ１１０に含まれるＮＡＮＤフラッシュメモリは同一ページに対する書き換え可能回数に制限があるため、ＳＳＤ１１０の内部では、可能な限り均一にページが利用されるように書き込みデータの書き込み先が制御される（ウェアレベリング処理）。ウェアレベリング処理等に起因して、ＳＳＤ１１０に対してランダムライトが繰り返されると、ＳＳＤ１１０の内部のページに書き込まれた書き込みデータの断片化が進み、書き込みデータを書き込み可能な空きページが減少する。
【００６３】
図７及び図８は、本発明の第１の実施形態における断片化解消処理を説明するための図である。図７及び図８における表記方法は、図６における表記方法と同様である。又、「ＳＳＤ  Ｂｕｆｆｅｒ」と表記されたカラムは断片化解消処理用の作業バッファを表す。
【００６４】
図７の（Ａ）は、ランダムライトアクセスの結果、空きページ無くなった状態を示す。
【００６５】
図７の（Ｂ）は、空きページ無くなった後に、書き込みデータが追記された状態を示す。ここで、入出力制御部１３０は、追記された書き込みデータと、各ページに書き込まれた書き込みデータとを作業バッファにコピーし、アドレスマッピングテーブルを更新する。
【００６６】
図８の（Ａ）は、書き込みデータの作業バッファへのコピーが終了した後に、書き込みデータがブロック単位で消去された状態を示す。ここで、入出力制御部１３０は、ＳＳＤ１１０において作業バッファにコピーされた書き込みデータを含むブロックを消去して空きページを作成する。
【００６７】
図８の（Ｂ）は、空きページを作成した後に、作業バッファへコピーした書き込みデータを空きページへ連続的にコピーした状態を示す。ここで、入出力制御部１３０は、作業バッファへコピーした書き込みデータを空きページへ連続的にコピーし、アドレスマッピングテーブルを更新する。
【００６８】
図９は、本発明の第１の実施形態におけるＳＳＤにおいてランダムデータライトを継続した際の書き込む性能の変化の一例を示すグラフである。図９において、横軸は時間を、縦軸は１秒あたりの入出力回数（Input/Output per Second）を表す。
【００６９】
ＳＳＤ１１０に対してランダムライトアクセスを継続すると、書き込みデータの断片化が進行し、断片化解消処理が多発する。その結果、長い処理時間を要するブロック消去の処理が頻繁に行われ、入出力性能は低下する。
【００７０】
図１０は、本発明の第１の実施形態における初期化されたＳＳＤにおけるシーケンシャルデータの書き込みを説明するための図であるである。図１０における表記方法は、図６における表記方法と同様である。
【００７１】
ＳＳＤ１１０に対してシーケンシャルデータの書き込みを継続した場合には、書き込みデータは連続したページに書き込まれる。そのため、書き込みデータの断片化は発生せず、入出力性能は低下しない。
【００７２】
以上説明したように、本実施形態におけるディスクアレイ装置１００では、入出力制御部１３０が、ホスト２００から受信した第１の書き込み命令を、現用プール１２０に属する各ＳＳＤ１１０に対する第２の書き込み命令に変換する。ここで、入出力制御部１３０は、当該ＳＳＤ１１０に関する、末尾アドレスと最新の第２の書き込み命令における書き込み先アドレスとが不連続であった不連続回数を保持する。この際、入出力制御部１３０は、当該ＳＳＤ１１０に対する、最新の１つ前における第２の書き込み命令において書き込まれたデータの末尾アドレスを導出可能なデータを保持しており、当該データに基づいて末尾アドレスを導出する。そして、入替制御部１５０が、現用プール１２０に属する第１のＳＳＤに関する不連続回数が、第１のＳＳＤに関する不連続回数の所定の上限値を超えた場合に、第１のＳＳＤが保持している全ての書き込みデータを第２のＳＳＤにコピーする。ここで、第２のＳＳＤは、予備プール１４０に属し且つ書き込みデータが書き込まれていない。又、入替制御部１５０は、第２のＳＳＤにおいて、第１のＳＳＤが保持している複数の書き込みデータを書き込み先アドレスが連続した領域にコピーする。その結果、第２のＳＳＤでは書き込みデータを保持する領域及び空き領域の断片化が解消される。そして、入替制御部１５０は、第１のＳＳＤを断片化が解消された第２のＳＳＤに入れ替える。つまり、ディスクアレイ装置１００は、断片化解消の要否判定に必要な処理において、各ＳＳＤ１１０の各ページについて、不連続回数を繰り返しカウントする必要がない。従って、本実施形態におけるディスクアレイ装置１００には、ディスクアレイ装置１００における断片化解消の要否判定に要する負荷を低減できるという効果がある。
【００７３】
又、本実施形態におけるディスクアレイ装置１００では、断片化解消の要否判定に必要な処理が単純化されるので、入出力制御部１３０をより安価なハードウェアで実現できるという効果がある。
【００７４】
又、本実施形態におけるディスクアレイ装置１００では、入替制御部１５０は、現用プール１２０から削除した第１のＳＳＤを初期化した後に、予備プール１４０に追加する。従って、本実施形態におけるディスクアレイ装置１００には、予備プール１４０に含まれるＳＳＤ１１０を自動的に維持できるという効果がある。
【００７５】
又、本実施形態におけるディスクアレイ装置１００では、ＳＳＤ１１０の初期化は、市販のＳＳＤにおいて提供される標準的な機能（ＳＡＴＡのＴＲＩＭコマンド又はSecure Eraseコマンド、ＳＡＳのＵＮＭＡＰコマンド等）を用いて実現される。つまり、ディスクアレイ装置１００では、ＳＳＤ１１０の外部から、ＳＳＤ１１０における断片化解消を実行させるための特別な機能及びインタフェースが必要ない。従って、本実施形態におけるディスクアレイ装置１００には、専用のＳＳＤを用いることなく、安価な標準的なＳＳＤを用いて実現できるという効果がある。
【００７６】
図１１は、本発明の各実施形態におけるディスクアレイ装置を実現可能なハードウェア構成の一例を示すブロック図である。
【００７７】
ディスクアレイ装置９０７は、記憶装置９０２と、ＣＰＵ（Central Processing Unit）９０３と、キーボード９０４と、モニタ９０５と、Ｉ／Ｏ（Input/Output）装置９０８とを備え、これらが内部バス９０６によって接続されている。記憶装置９０２は、入出力制御部１３０、入替制御部１５０等のＣＰＵ９０３の動作プログラムを格納する。ＣＰＵ９０３は、ディスクアレイ装置９０７の全体を制御し、記憶装置９０２に格納された動作プログラムを実行し、Ｉ／Ｏ装置９０８によって入出力制御部１３０、入替制御部１５０等のプログラムの実行やデータの送受信を行なう。尚、上記のディスクアレイ装置９０７の内部構成は一例である。ディスクアレイ装置９０７は、必要に応じて、キーボード９０４、モニタ９０５を接続する装置構成であってもよい。
【００７８】
上述した本発明の各実施形態におけるディスクアレイ装置９０７は、専用の装置によって実現してもよいが、Ｉ／Ｏ装置９０８が外部との通信を実行するハードウェアの動作以外は、コンピュータ（情報処理装置）によっても実現可能である。本発明の各実施形態において、Ｉ／Ｏ装置９０８は、例えば、ホスト２００等との入出力部である。この場合、係るコンピュータは、記憶装置９０２に格納されたソフトウェア・プログラムをＣＰＵ９０３に読み出し、読み出したソフトウェア・プログラムをＣＰＵ９０３において実行する。上述した各実施形態の場合、係るソフトウェア・プログラムには、上述したところの、図１に示した、ディスクアレイ装置１００の各部の機能を実現可能な記述がなされていればよい。但し、これらの各部には、適宜ハードウェアを含むことも想定される。そして、このような場合、係るソフトウェア・プログラム（コンピュータ・プログラム）は、本発明を構成すると捉えることができる。更に、係るソフトウェア・プログラムを格納した、コンピュータ読み取り可能な記憶媒体も、本発明を構成すると捉えることができる。
【００７９】
以上、本発明を、上述した各実施形態およびその変形例によって例示的に説明した。しかしながら、本発明の技術的範囲は、上述した各実施形態およびその変形例に記載した範囲に限定されない。当業者には、係る実施形態に対して多様な変更又は改良を加えることが可能であることは明らかである。そのような場合、係る変更又は改良を加えた新たな実施形態も、本発明の技術的範囲に含まれ得る。そしてこのことは、特許請求の範囲に記載した事項から明らかである。
【産業上の利用可能性】
【００８０】
本発明は、ディスクアレイ装置を構成するＳＳＤにおける断片化を解消する用途において利用できる。
【符号の説明】
【００８１】
１００  ディスクアレイ装置
１１０  ＳＳＤ
１２０  現用プール
１３０  入出力制御部
１４０  予備プール
１５０  入替制御部
１６０  インタフェース
１７０  性能特性テーブル
１８０  入出力管理テーブル
２００  ホスト
９０２  記憶装置
９０３  ＣＰＵ
９０４  キーボード
９０５  モニタ
９０６  内部バス
９０７  ディスクアレイ装置
９０８  Ｉ／Ｏ装置
【図１】
2019148844.tif 000003
【図２】
2019148844.tif 000004
【図３】
2019148844.tif 000005
【図４】
2019148844.tif 000006
【図５】
2019148844.tif 000007
【図６】
2019148844.tif 000008
【図７】
2019148844.tif 000009
【図８】
2019148844.tif 000010
【図９】
2019148844.tif 000011
【図１０】
2019148844.tif 000012
【図１１】
2019148844.tif 000013