(57)【要約】【課題】書き込み性能を改善することができる情報処理システムを実現する。【解決手段】ストレージ制御部は、複数のストレージデバイス内の第１のストレージデバイスの除去が決定され且つ追加のストレージデバイスがストレージ制御部に接続された場合、第１のストレージデバイスに既に書き込まれているデータ部それぞれに対応する更新データ部それぞれを、第１のストレージデバイスを除く残りの一つ以上のストレージデバイスと追加のストレージデバイスとの中から選択される任意のストレージデバイスに書き込み、残りの一つ以上のストレージデバイスに既に書き込まれているデータ部それぞれに対応する更新データ部それぞれを、残りの一つ以上のストレージデバイスと追加のストレージデバイスとの中から選択される任意のストレージデバイスに書き込む。【選択図】図１１
2020021232.tif 000002
【特許請求の範囲】
【請求項１】
各々が不揮発性メモリを含む複数のストレージデバイスと、
ストレージ制御部とを具備し、
前記ストレージ制御部は、
ホストから受信されるライト要求それぞれに応じて、第１の論理アドレス空間に属する論理アドレスそれぞれに対応するデータ部の各々を前記複数のストレージデバイスの中から選択される任意のストレージデバイスに書き込み、
前記論理アドレスそれぞれと前記データ部それぞれが書き込まれた前記複数のストレージデバイス内の記憶位置を示すアドレスそれぞれとの間のマッピングを、アドレス変換テーブルを使用して管理し、
前記複数のストレージデバイス内の第１のストレージデバイスが除去されるべきことが決定され且つ不揮発性メモリを含む追加のストレージデバイスが前記ストレージ制御部に接続された場合、
前記第１のストレージデバイスをデータの書き込みが禁止されデータの読み出しが許可される第１のモードで制御し、
前記ホストから受信される後続のライト要求それぞれに応じて、前記第１のストレージデバイスに既に書き込まれているデータ部それぞれに対応する更新データ部それぞれを、前記第１のストレージデバイスを除く前記複数のストレージデバイス内の残りの一つ以上のストレージデバイスと前記追加のストレージデバイスとの中から選択される任意のストレージデバイスに書き込む第１の処理と、前記残りの一つ以上のストレージデバイスに既に書き込まれているデータ部それぞれに対応する更新データ部それぞれを、前記残りの一つ以上のストレージデバイスと前記追加のストレージデバイスとの中から選択される任意のストレージデバイスに書き込む第２の処理とを実行するように構成されている、情報処理システム。
【請求項２】
前記ストレージ制御部は、前記第１の処理によって前記第１のストレージデバイス内の有効データの量が閾値未満に減少された場合、前記第１のストレージデバイス内の前記有効データを、前記残りの一つ以上のストレージデバイスと前記追加のストレージデバイスとの中から選択される任意のストレージデバイスにコピーするように構成されている請求項１記載の情報処理システム。
【請求項３】
前記第１のストレージデバイスが前記第１のモードである期間中において、前記第１のストレージデバイスは、前記第１のストレージデバイス内の不揮発性メモリに含まれる複数のブロックのうち、誤りビット数が閾値を上回るデータが格納されているブロックそれぞれを検出する動作と、前記検出された各ブロック内の有効データを他のストレージデバイスにコピーするように前記ストレージ制御部に要求する動作とを含むリフレッシュ動作を実行するように構成され、
前記ストレージ制御部は、前記第１のストレージデバイスからの前記要求の受信に応じて、前記検出された各ブロック内の有効データを、前記残りの一つ以上のストレージデバイスと前記追加のストレージデバイスとの中から選択される任意のストレージデバイスにコピーするように構成されている請求項１記載の情報処理システム。
【請求項４】
前記ストレージ制御部は、書き込むべきデータ部に対応する前記第１の論理アドレス空間内の一つの論理アドレスを含むライトコマンドを、前記複数のストレージデバイスの中から選択される任意のストレージデバイスに送信するように構成され、
前記第１のストレージデバイスは、前記検出された各ブロック内の有効データに対応する前記第１の論理アドレス空間内の論理アドレスを示す情報を前記ストレージ制御部に送信するように構成されている請求項３記載の情報処理システム。
【請求項５】
前記ストレージ制御部は、前記第１のストレージデバイスに有効データが存在しなくなることによって前記第１のストレージデバイスが除去可能になった場合、前記第１のストレージデバイスが除去可能であることを示すように構成されたインジケータを駆動するように構成されている請求項１記載の情報処理システム。
【請求項６】
前記残りの一つ以上のストレージデバイスの一つに既に書き込まれているデータ部に対応する更新データ部が前記第２の処理によって前記残りの一つ以上のストレージデバイスの他の一つまたは前記追加のストレージデバイスに書き込まれた場合、前記データ部を無効化するためのコマンドを前記残りの一つ以上のストレージデバイスの前記一つに送信するように構成されている請求項１記載の情報処理システム。
【請求項７】
前記ストレージ制御部は、前記論理アドレスそれぞれと前記複数のストレージデバイスおよび前記追加のストレージデバイスを含むストレージシステム内の論理記憶位置を示すローカル論理アドレスそれぞれとの間のマッピングを、前記アドレス変換テーブルを使用して管理し、各ローカル論理アドレスは、ストレージデバイスの識別子と、このストレージデバイス用の論理アドレス範囲内の一つの論理アドレスとを含む請求項１記載の情報処理システム。
【請求項８】
前記ストレージ制御部は、前記論理アドレスそれぞれと前記複数のストレージデバイスおよび前記追加のストレージデバイスとを含むストレージシステム内の物理記憶位置を示す物理アドレスそれぞれとの間のマッピングを前記アドレス変換テーブルを使用して管理し、各物理アドレスは、ストレージデバイスの識別子と、このストレージデバイス内の不揮発性メモリの一つの物理記憶位置を示す物理アドレスとを含む請求項１記載の情報処理システム。
【請求項９】
前記ストレージ制御部は、
記複数のストレージデバイスの不揮発性メモリそれぞれに含まれるフリーブロックそれぞれを前記複数のストレージデバイスによって共有される共有フリーブロックの集合として管理し、
前記第１のストレージデバイスが除去されるべきことが決定され且つ前記追加のストレージデバイスが前記ストレージ制御部に接続された場合、前記第１のストレージデバイスの各フリーブロックを前記共有フリーブロックの集合から削除し、且つ前記追加のストレージデバイスの全てのフリーブロックを前記共有フリーブロックの集合に追加するように構成されている請求項１記載の情報処理システム。
【請求項１０】
前記ストレージ制御部は、前記第１のストレージデバイスに有効データが存在しなくなった場合、前記第１のストレージデバイスの不揮発性メモリ内の各ブロックの消去動作を指示する消去コマンドを前記第１のストレージデバイスに送信するように構成されている請求項１記載の情報処理システム。
【請求項１１】
前記ストレージ制御部は、前記消去動作が実行された各ブロックに予め指定されたデータを書き込むように構成されている請求項１０記載の情報処理システム。
【請求項１２】
前記ストレージ制御部は、
前記論理アドレスそれぞれと前記複数のストレージデバイスおよび前記追加のストレージデバイスとを含むストレージシステム内の物理記憶位置を示す物理アドレスそれぞれとの間のマッピングを前記アドレス変換テーブルを使用して管理し、
前記第１のストレージデバイス内の不揮発性メモリのブロックの一つが前記書き込み処理によって有効データを含まないブロックとなる度、有効データを含まない前記ブロックの消去動作を指示する消去コマンドを前記第１のストレージデバイスに送信するように構成されている請求項１記載の情報処理システム。
【請求項１３】
前記ストレージ制御部は、前記第１のストレージデバイス内の不揮発性メモリの一つのブロックの消去動作が実行される度に、この消去動作が実行されたブロックに予め指定されたデータを書き込むように構成されている請求項１２記載の情報処理システム。
【請求項１４】
情報処理システムであって、
各々が不揮発性メモリを含む複数のストレージデバイスと、
ストレージ制御部とを具備し、
前記ストレージ制御部は、
ホストから受信されるライト要求それぞれに応じて、第１の論理アドレス区間に属する論理アドレスそれぞれに対応するデータ部の各々を前記複数のストレージデバイスの中から選択される任意のストレージデバイスに書き込み、
前記論理アドレスそれぞれと前記データ部それぞれが書き込まれた前記複数のストレージデバイス内の記憶位置を示すアドレスそれぞれとの間のマッピングを、アドレス変換テーブルを使用して管理し、
前記複数のストレージデバイス内の第１のストレージデバイスが除去されるべきことが決定され且つ不揮発性メモリを含む追加のストレージデバイスが前記ストレージ制御部に接続された場合、
前記第１のストレージデバイスをデータの書き込みが禁止されデータの読み出しが許可される第１のモードで制御し、
前記ホストから受信される後続のライト要求それぞれに応じて、前記第１のストレージデバイスに既に書き込まれているデータ部それぞれに対応する更新データ部それぞれと、前記第１のストレージデバイスを除く前記複数のストレージデバイス内の残りの一つ以上のストレージデバイスに既に書き込まれているデータ部それぞれに対応する更新データ部それぞれとを前記追加のストレージデバイスに書き込む第１の書き込み処理と、前記第１の書き込み処理によって前記残りの一つ以上のストレージデバイスに空き領域が確保された後、前記ホストから受信されるさらに後続のライト要求それぞれに応じて、前記第１のストレージデバイスに既に書き込まれているデータ部それぞれに対応する更新データ部それぞれと、前記残りの一つ以上のストレージデバイスに既に書き込まれているデータ部それぞれに対応する更新データ部それぞれとを前記残りの一つ以上のストレージデバイスに書き込む第２の書き込み処理とを実行するように構成されている、情報処理システム。
【請求項１５】
前記ストレージ制御部は、前記第１のストレージデバイスに既に書き込まれている前記データ部それぞれに対応する前記更新データ部それぞれの書き込みによって前記第１のストレージデバイス内の有効データの量が閾値未満に減少された場合、前記第１のストレージデバイス内の前記有効データを、前記残りの一つ以上のストレージデバイスと前記追加のストレージデバイスとの中から選択される任意のストレージデバイスにコピーするように構成されている請求項１４記載の情報処理システム。
【請求項１６】
前記第１のストレージデバイスが前記第１のモードである期間中において、前記第１のストレージデバイスは、前記第１のストレージデバイス内の不揮発性メモリに含まれる複数のブロックのうち、誤りビット数が閾値を上回るデータが格納されているブロックそれぞれを検出する動作と、前記検出された各ブロック内の有効データを他のストレージデバイスにコピーするように前記ストレージ制御部に要求する動作とを含むリフレッシュ動作を実行するように構成され、
前記ストレージ制御部は、前記第１のストレージデバイスからの前記要求の受信に応じて、前記検出された各ブロック内の有効データを、前記残りの一つ以上のストレージデバイスと前記追加のストレージデバイスとの中から選択される任意のストレージデバイスにコピーするように構成されている請求項１４記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを備えるストレージデバイスを制御する技術に関する。
【背景技術】
【０００２】
近年、不揮発性メモリを備えるストレージデバイスが広く普及している。このようなストレージデバイスの一つとして、ＮＡＮＤフラッシュ技術ベースのソリッドステートドライブ（ＳＳＤ）が知られている。
ＳＳＤのようなストレージデバイスは、コンピュータのような様々な情報処理装置の外部ストレージデバイスとして使用されている。
【０００３】
情報処理装置においては、あるストレージデバイスの不揮発性メモリに格納されたデータを他のストレージデバイスの不揮発性メモリにバックアップするためのデータコピー処理が行われる場合がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１８２５０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、ストレージデバイス間でデータコピー処理が行われている間は、これらストレージデバイスを含むストレージシステムに書き込まれるデータの総量が増える。したがって、ホストまたはユーザから見た書き込み性能が低下される場合がある。
本発明が解決しようとする課題は、書き込み性能を改善することができる情報処理システムを提供することである。
【課題を解決するための手段】
【０００６】
実施形態によれば、情報処理システムは、各々が不揮発性メモリを含む複数のストレージデバイスと、ストレージ制御部とを具備する。前記ストレージ制御部は、ホストから受信されるライト要求それぞれに応じて、第１の論理アドレス空間に属する論理アドレスそれぞれに対応するデータ部の各々を前記複数のストレージデバイスの中から選択される任意のストレージデバイスに書き込む。前記ストレージ制御部は、前記論理アドレスそれぞれと前記データ部それぞれが書き込まれた前記複数のストレージデバイス内の記憶位置を示すアドレスそれぞれとの間のマッピングを、アドレス変換テーブルを使用して管理する。前記複数のストレージデバイス内の第１のストレージデバイスが除去されるべきことが決定され且つ不揮発性メモリを含む追加のストレージデバイスが前記ストレージ制御部に接続された場合、前記ストレージ制御部は、前記第１のストレージデバイスをデータの書き込みが禁止されデータの読み出しが許可される第１のモードで制御し、前記ホストから受信される後続のライト要求それぞれに応じて、前記第１のストレージデバイスに既に書き込まれているデータ部それぞれに対応する更新データ部それぞれを、前記第１のストレージデバイスを除く前記複数のストレージデバイス内の残りの一つ以上のストレージデバイスと前記追加のストレージデバイスとの中から選択される任意のストレージデバイスに書き込む第１の処理と、前記残りの一つ以上のストレージデバイスに既に書き込まれているデータ部それぞれに対応する更新データ部それぞれを、前記残りの一つ以上のストレージデバイスと前記追加のストレージデバイスとの中から選択される任意のストレージデバイスに書き込む第２の処理とを実行する。
【図面の簡単な説明】
【０００７】
【図１】実施形態に係る情報処理システムの構成例を示すブロック図。
【図２】同実施形態の情報処理システムに含まれるホストデバイスの筐体の構造の例を示すブロック図。
【図３】同実施形態の情報処理システムに含まれる各ストレージデバイス（フラッシュストレージデバイス）の構成例〜示すブロック図。
【図４】各フラッシュストレージデバイスによって管理されるルックアップテーブルの構成例を示す図。
【図５】各フラッシュストレージデバイスによって管理されるＬＢＡ／グローバルＬＢＡ管理テーブルの構成例を示す図。
【図６】各フラッシュストレージデバイスによって実行される、不揮発性メモリのブロックにデータとグローバルＬＢＡとを書き込む動作を説明するための図。
【図７】通常動作モードにおいて各フラッシュストレージデバイスによって実行されるリフレッシュ動作の手順と、ライト禁止モードにおいて各フラッシュストレージデバイスによって実行されるリフレッシュ動作の手順とを示すフローチャート。
【図８】同実施形態の情報処理システムに含まれるホストデバイスのストレージ制御部（ホスト側ストレージコントローラ）の構成例を示すブロック図。
【図９】第１の論理アドレス空間に属する論理アドレス（グローバルＬＢＡ）それぞれに対応するデータ部を複数のストレージデバイス（＃１〜＃３）内の記憶位置に書き込む処理を説明するためのブロック図。
【図１０】論理アドレス（グローバルＬＢＡ）それぞれに対応するデータ部の各々を、除去されるべきことが決定されたストレージデバイス（＃１）以外のストレージデバイス（＃２、＃３）それぞれと追加ストレージデバイス（＃４）の中から選択される任意の一つのストレージデバイス内の任意の記憶位置に書き込む処理を説明するためのブロック図。
【図１１】ストレージデバイス（＃１〜＃３）に既に書き込まれているデータに対応する更新データを、ストレージデバイス（＃２〜＃４）の中から選択される任意の一つのストレージデバイスに書き込む処理の例を説明するための図。
【図１２】ストレージデバイス（＃１〜＃３）に既に書き込まれている各データ部に対応する更新データ部を、ストレージデバイス（＃２〜＃４）の中から選択される任意の一つのストレージデバイスに書き込む処理の例と、ストレージデバイス（＃１）の有効データ量が許容量にまで減少された場合に、この有効データをストレージデバイス（＃２〜＃４）の中から選択される任意の一つにコピーする処理の例を説明するための図。
【図１３】ストレージデバイス（＃１〜＃３）に既に書き込まれている各データ部に対応する更新データ部を、ストレージデバイス（＃２〜＃４）の中から選択される任意の一つのストレージデバイスに書き込む処理の別の例を説明するための図。
【図１４】ストレージデバイス（＃１〜＃３）に既に書き込まれている各データ部に対応する更新データ部をストレージデバイス（＃２〜＃４）の中から選択される任意の一つのストレージデバイスに書き込む処理の例と、ストレージデバイス（＃１）のリフレッシュ動作によって検出されるリフレッシュ対象の各ブロック内の有効データを他のストレージデバイスにコピーする処理の例を説明するための図。
【図１５】ホストデバイスのストレージ制御部（ホスト側ストレージコントローラ）によって実行される書き込み／コピー／読み出し処理の手順を示すフローチャート。
【図１６】ホストデバイスのストレージ制御部（ホスト側ストレージコントローラ）によって実行される書き込み／コピー／読み出し処理の別の手順を示すフローチャート。
【図１７】同実施形態の情報処理システムに含まれるホストデバイスのストレージ制御部（ホスト側ストレージコントローラ）の別の構成例を示すブロック図。
【図１８】第１の論理アドレス空間に属する論理アドレス（グローバルＬＢＡ）それぞれに対応するデータ部を複数のストレージデバイス（＃１〜＃３）内の記憶位置（物理記憶位置）に書き込む処理を説明するためのブロック図。
【図１９】論理アドレス（グローバルＬＢＡ）それぞれに対応するデータ部の各々を、除去されるべきことが決定されたストレージデバイス（＃１）以外のストレージデバイス（＃２、＃３）それぞれと追加ストレージデバイス（＃４）の中から選択される任意の一つのストレージデバイス内の任意の物理記憶位置に書き込む処理を説明するためのブロック図。
【発明を実施するための形態】
【０００８】
以下、図面を参照して、実施形態を説明する。  
まず、図１を参照して、一実施形態に係る情報処理システム１の構成を説明する。
この情報処理システム１は、複数のフラッシュストレージデバイスと、ホスト（ホストデバイス）２とを含む。これらフラッシュストレージデバイスの各々は不揮発性メモリを含んでおり、この不揮発性メモリにデータを書き込み、この不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。図１においては、図示の簡単化のために３台のフラッシュストレージデバイス３−１、３−２、３−３がホスト２に接続されているケースが例示されているが、ホスト２に接続されるフラッシュストレージデバイスの台数は３台に限らず、例えば、５台、１０台、または数十台のように幾つであってもよい。
【０００９】
フラッシュストレージデバイス３−１、３−２、３−３の各々は、ＮＡＮＤフラッシュ技術ベースのフラッシュストレージデバイスとして実現されていてもよい。
ホスト２は、フラッシュストレージデバイス３をアクセスする情報処理装置（コンピューティングデバイス）として実現されてもよい。ホスト２は、サーバコンピュータであってもよいし、パーソナルコンピュータであってもよい。フラッシュストレージデバイス３−１、３−２、３−３の各々は、ホスト２として機能する情報処理装置の外部ストレージとして使用され得る。フラッシュストレージデバイス３−１、３−２、３−３の各々は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
【００１０】
フラッシュストレージデバイス３−１、３−２、３−３の各々は、コネクタ５１および通信線５０を介してホスト２に接続される。これらコネクタ５１は、例えば、情報処理装置に内蔵されたプリント回路基板上のソケットによって実現されてもよい。あるいは、これらコネクタ５１は、情報処理装置の筐体に設けられたスロットとして実現されてもよい。
【００１１】
通信線５０は、ホスト２とフラッシュストレージデバイス３−１、３−２、３−３の各々とを相互接続するためのインタフェースとして使用される。このインタフェース用の規格としては、ＳＣＳＩ、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）、ＡＴＡ、Ｓｅｒｉａｌ  ＡＴＡ（ＳＡＴＡ）、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）（登録商標）、Ｅｔｈｅｒｎｅｔ（登録商標）、Ｆｉｂｒｅ  ｃｈａｎｎｅｌ、ＮＶＭ  Ｅｘｐｒｅｓｓ（ＮＶＭｅ）（登録商標）等を使用し得る。
【００１２】
さらに、ホスト２は、追加のフラッシュストレージデバイス３−４をホスト２に接続するための追加のコネクタ５１（ソケット、またはスロット）も含んでいる。
あるフラッシュストレージデバイスが寿命に到達すると、このフラッシュストレージデバイスはもはや正常に動作することができなくなる。
【００１３】
このため、フラッシュストレージデバイス３−１、３−２、３−３内のある一つのフラッシュストレージデバイスが実際に寿命に到達する前に、このフラッシュストレージデバイス内に格納されているデータをバックアップするための仕組みが必要とされる。追加のコネクタ５１に接続されるフラッシュストレージデバイス３−４は、例えば、消耗度が大きくなった特定のフラッシュストレージデバイス内に格納されているデータを、このフラッシュストレージデバイスが実際に寿命に到達する前に、効率よくバックアップするために使用される。
【００１４】
フラッシュストレージデバイス３−１、３−２、３−３の各々の消耗度は、時間の経過や、不揮発性メモリ内のブロック（物理ブロック）のプログラム／イレーズサイクルの数の増加に伴って、徐々に増加する可能性がある。あるフラッシュストレージデバイスの消耗度が増加するにつれて、正常に利用できない不良ブロックの数が徐々に増加する。不良ブロックの数がある限界値にまで達すると、このフラッシュストレージデバイスは寿命に達する。
【００１５】
このように、フラッシュストレージデバイスの消耗度は、不良ブロックの数等に基づいて予測することができる。このため、ホスト２は、消耗度が増加したフラッシュストレージデバイスを除去（取り外し）されるべきフラッシュストレージデバイスとして決定でき、この決定されたフラッシュストレージデバイス内に格納されているデータを安全にバックアップするための処理を行うことができる。
【００１６】
ホスト２は、プロセッサ４１、メモリ４２、ホスト側ストレージコントローラ４３、ネットワークインタフェース４４等を含む。これらプロセッサ４１、メモリ４２、ホスト側ストレージコントローラ４３、ネットワークインタフェース４４は、バス４０を介して相互接続されてもよい。
【００１７】
プロセッサ４１は、ホスト２内の様々なコンポーネントを制御するように構成されたＣＰＵである。プロセッサ４１は、メモリ４２上のホストソフトウェアを実行する。ホストソフトウェアには、アプリケーションプログラムレイヤ３０１、オペレーティングシステム（ＯＳ）３０２、ストレージ管理プログラム３０３等が含まれる。メモリ４２は、ＤＲＡＭのようなランダムアクセスメモリから構成される。
【００１８】
一般に知られているように、オペレーティングシステム（ＯＳ）３０２は、ホスト２全体を管理し、ホスト２内のハードウェアを制御し、アプリケーションプログラムレイヤ３０１上で走る様々なアプリケーションがハードウェアおよびフラッシュストレージデバイス３−１〜３−３（あるいは、フラッシュストレージデバイス３−１〜３−４）等を使用することを可能にするための制御を実行するように構成されたソフトウェアである。
【００１９】
ストレージ管理プログラム３０３は、フラッシュストレージデバイス３−１〜３−３（あるいは、フラッシュストレージデバイス３−１〜３−４）を制御するために使用される。ストレージ管理プログラム３０３は、オペレーティングシステム（ＯＳ）３０２の制御の下、リード／ライト要求それぞれをホスト側ストレージコントローラ４３に送信する処理を実行する。
【００２０】
さらに、ストレージ管理プログラム３０３は、ホスト２から除去すべきフラッシュストレージデバイスを特定する処理、フラッシュストレージデバイスをホスト２に追加すべきことをオペレータに促す処理、等を実行する。ストレージ管理プログラム３０３は、フラッシュストレージデバイス３−１〜３−３の各々の消耗度を監視し、ある閾値を上回る消耗度を有するフラッシュストレージデバイスをホスト２から除去すべきフラッシュストレージデバイスとして特定する。各フラッシュストレージデバイスの消耗度は、例えば、各フラッシュストレージデバイスに含まれる不良ブロックの数に基づいて判定されてもよい。
【００２１】
ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１〜３−３（あるいは、フラッシュストレージデバイス３−１〜３−４）を制御するように構成されたストレージ制御部である。ホスト側ストレージコントローラ４３は、ホスト２（ホストソフトウェア）からのリード／ライト要求それぞれに応じて、フラッシュストレージデバイス３−１〜３−３（あるいは、フラッシュストレージデバイス３−１〜３−４）を制御する。
【００２２】
また、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１〜３−４にそれぞれ対応する複数のＬＥＤ５２の一つを駆動することによって、ホスト２から除去することが可能になったフラッシュストレージデバイスをオペレータに通知する処理を実行する。つまり、これらＬＥＤ５２の各々は、このＬＥＤに対応するフラッシュストレージデバイスが除去可能であることを示すように構成されたインジケータとして機能する。あるフラッシュストレージデバイスが除去可能になった場合、ホスト側ストレージコントローラ４３は、このフラッシュストレージデバイスに対応するＬＥＤ５２を駆動してこのＬＥＤ５２を点灯する。
【００２３】
このホスト側ストレージコントローラ４３は、ＲＡＩＤコントローラとして実現されていてもよい。
なお、ホスト２が、ソフトウェアＲＡＩＤ機能を有する情報処理装置として実現されている場合には、ホスト側ストレージコントローラ４３の機能はプロセッサ４１によって実現されてもよい。
【００２４】
あるいは、フラッシュストレージデバイス３−１、３−２、３−３（あるいは、フラッシュストレージデバイス３−１〜３−４）は、ホスト２として機能する情報処理装置にケーブルまたはネットワークを介して接続されるストレージアレイ内に設けられていてもよい。この場合、ホスト側ストレージコントローラ４３は、ホスト２として機能する情報処理装置ないではなく、このストレージアレイ内に設けられていてもよい。
【００２５】
ホスト側ストレージコントローラ４３がホスト２内に設けられる構成またはホスト側ストレージコントローラ４３がストレージアレイ内に設けられる構成のどちらにおいても、フラッシュストレージデバイス３−１、３−２、３−３（あるいは、フラッシュストレージデバイス３−１〜３−４）の各々は、コネクタ５１および通信線５０を介してこのホスト側ストレージコントローラ４３に接続される。
【００２６】
フラッシュストレージデバイス３−１、３−２、３−３（あるいは、フラッシュストレージデバイス３−１〜３−４）がストレージアレイ内に設けられるケースにおいては、これらコネクタ５１は、例えば、ストレージアレイに内蔵されたプリント回路基板上のソケットによって実現されてもよい。あるいは、これらコネクタ５１は、ストレージアレイの筐体に設けられたスロットとして実現されてもよい。
【００２７】
以下では、ホスト２がサーバコンピュータのような情報処理装置によって実現されているケースについて主として説明する。
フラッシュストレージデバイス３−１〜３−３がホスト側ストレージコントローラ４３に接続されており且つフラッシュストレージデバイス３−４がホスト側ストレージコントローラ４３に接続されていない通常動作状態においては、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１〜３−３をアクセスするための第１の論理アドレス空間に属する論理アドレスそれぞれとこれら論理アドレスそれぞれに対応するデータ部それぞれが書き込まれたフラッシュストレージデバイス３−１〜３−３内の記憶位置を示すアドレスそれぞれとの間のマッピングを、アドレス変換テーブルを使用して管理する。
【００２８】
第１の論理アドレス空間に属する論理アドレスそれぞれは、フラッシュストレージデバイス３−１〜３−３（あるいは、フラッシュストレージデバイス３−１〜３−４）を含むストレージシステムをアクセスするためにホスト２（ホストソフトウェア）によって使用される論理アドレスである。換言すれば、第１の論理アドレス空間に属する論理アドレスそれぞれは、ホスト２（ホストソフトウェア）からホスト側ストレージコントローラ４３に送信されるリード／ライト要求によって指定される論理アドレスである。ホスト２（ホストソフトウェア）は、第１の論理アドレス空間に属するある論理アドレスへのデータの書き込み、または第１の論理アドレス空間に属するある論理アドレスからのデータの読み出しをホスト側ストレージコントローラ４３に要求する。
【００２９】
通常、ホストソフトウェアによって使用される論理アドレスとしては、論理ブロックアドレス（ＬＢＡ）が使用される。第１の論理アドレス空間に属する論理アドレスは、グローバルＬＢＡとしても参照される。
第１の論理アドレス空間に属する論理アドレス（グローバルＬＢＡ）それぞれに対応するデータ部それぞれが書き込まれたフラッシュストレージデバイス３−１〜３−３内の記憶位置は、これらフラッシュストレージデバイス内の論理記憶位置であってもよいし、あるいは、これらフラッシュストレージデバイス内の物理記憶位置であってもよい。
【００３０】
前者の場合においては、このアドレス変換テーブルは、第１の論理アドレス空間に属する論理アドレス（グローバルＬＢＡ）それぞれとこれら論理アドレス（グローバルＬＢＡ）それぞれに対応するデータ部それぞれが書き込まれたフラッシュストレージデバイス３−１〜３−３内の論理記憶位置を示すローカル論理アドレス（ローカルＬＢＡ）それぞれとの間のマッピングを管理する。ある一つのフラッシュストレージデバイス内のある一つの論理記憶位置は、このフラッシュストレージデバイスの識別子と、このフラッシュストレージデバイス用の論理アドレス範囲（ＬＢＡ範囲）内の一つの論理アドレス（ＬＢＡ）とによって表される。したがって、アドレス変換テーブルによって管理される各ローカル論理アドレス（ローカルＬＢＡ）は、フラッシュストレージデバイスの識別子と、このフラッシュストレージデバイス用の論理アドレス範囲（ＬＢＡ範囲）内の一つの論理アドレス（ＬＢＡ）とを含む。
【００３１】
後者の場合においては、このアドレス変換テーブルは、第１の論理アドレス空間に属する論理アドレス（グローバルＬＢＡ）それぞれとこれら論理アドレス（グローバルＬＢＡ）それぞれに対応するデータ部それぞれが書き込まれたフラッシュストレージデバイス３−１〜３−３の物理記憶位置を示す物理アドレスそれぞれとの間のマッピングを管理する。ある一つのフラッシュストレージデバイス内のある一つの物理記憶位置は、このフラッシュストレージデバイスの識別子と、このフラッシュストレージデバイス内の不揮発性メモリの一つの物理記憶位置を示す物理アドレスとによって表される。したがって、アドレス変換テーブルによって管理される各物理アドレスは、フラッシュストレージデバイスの識別子と、このフラッシュストレージデバイス内の不揮発性メモリの一つの物理記憶位置を示す物理アドレスとを含む。
【００３２】
ホスト側ストレージコントローラ４３は、ホスト２（ホストソフトウェア）から受信されるライト要求それぞれに応じて、第１の論理アドレス空間に属する論理アドレス（グローバルＬＢＡ）それぞれに対応するデータ部の各々を、フラッシュストレージデバイス３−１〜３−３の中から選択される任意のフラッシュストレージデバイスに書き込む。
【００３３】
例えば、ホスト側ストレージコントローラ４３が特定のグローバルＬＢＡを指定するライト要求をホストソフトウェアから受信した場合、ホスト側ストレージコントローラ４３は、このグローバルＬＢＡに対応するデータ部を書き込むべきフラッシュストレージデバイスをフラッシュストレージデバイス３−１〜３−３内から選択でき、さらに、このデータ部を書き込むべき、この選択されたフラッシュストレージデバイス内の論理記憶位置（または物理記憶位置）も決定できる。
【００３４】
ホスト側ストレージコントローラ４３は、決定された論理記憶位置を示すＬＢＡ（または決定された物理記憶位置を示す物理アドレス）を指定するライトコマンドを、この決定されたフラッシュストレージデバイスに送出する。そして、ホスト側ストレージコントローラ４３は、アドレス変換テーブルを更新して、このデータ部が書き込まれた論理記憶位置を示すローカルＬＢＡ（またはこのデータ部が書き込まれた物理記憶位置を示す物理アドレス）を上述の特定のグローバルＬＢＡにマッピングする。
【００３５】
フラッシュストレージデバイス３−１〜３−３内のある特定のフラッシュストレージデバイス（例えばフラッシュストレージデバイス３−１）が除去（交換）されるべきことが決定され、且つ追加のフラッシュストレージデバイス３−４が空きスロット５１に取り付けられることによってホスト側ストレージコントローラ４３に接続された場合、ホスト側ストレージコントローラ４３は、以下の処理を実行する。
【００３６】
すなわち、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１を、データの書き込みが禁止され且つデータの読み出しが許可される第１のモード（ライト禁止モード）で制御する。
この場合、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１をデータが書き込まれるべきフラッシュストレージデバイスとして選択せず、ライトコマンドをフラッシュストレージデバイス３−１に送出しない。ホスト側ストレージコントローラ４３が特定のグローバルＬＢＡを指定するリード要求をホスト２（ホストソフトウェア）から受信した場合には、ホスト側ストレージコントローラ４３は、アドレス変換テーブルを参照して、この特定のグローバルＬＢＡに関連付けられているローカル論理アドレス（または物理アドレス）をアドレス変換テーブルから取得する。取得されたローカル論理アドレス（または物理アドレス）がフラッシュストレージデバイス３−１を指しているならば、ホスト側ストレージコントローラ４３は、このローカル論理アドレスを指定するリードコマンドをフラッシュストレージデバイス３−１に送信する。
【００３７】
さらに、除去されるべきフラッシュストレージデバイス（ここではフラッシュストレージデバイス３−１）内に格納されている有効データの量を減らすために、ホスト側ストレージコントローラ４３は、ホスト２（ホストソフトウェア）から受信される後続のライト要求それぞれに応じて、（ｉ）除去されるべきフラッシュストレージデバイス（ここではフラッシュストレージデバイス３−１）に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれを、除去されるべきフラッシュストレージデバイスを除く複数のフラッシュストレージデバイス（ここではフラッシュストレージデバイス３−１〜３−３）内の残りの一つ以上のフラッシュストレージデバイス（ここではフラッシュストレージデバイス３−２、３−３）と追加のフラッシュストレージデバイス（ここではフラッシュストレージデバイス３−４）との中から選択される任意のフラッシュストレージデバイスに書き込む第１の処理と、（ｉｉ）残りの一つ以上のフラッシュストレージデバイス（ここではフラッシュストレージデバイス３−２、３−３）に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれを、残りの一つ以上のフラッシュストレージデバイス（ここではフラッシュストレージデバイス３−２、３−３）と追加のストレージデバイス（ここではフラッシュストレージデバイス３−４）との中から選択される任意のストレージデバイスに書き込む第２の処理とを実行する。
【００３８】
ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−２、３−３、３−４から任意のフラッシュストレージデバイスを選択することができ、この選択されたフラッシュストレージデバイスにこれら更新データ部それぞれを書き込むことができる。
【００３９】
例えば、ある期間においては、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−４を選択してもよく、後続の期間においては、フラッシュストレージデバイス３−３を選択してもよく、さらに後続の期間においては、フラッシュストレージデバイス３−２を選択してもよく、さらに後続の期間においては、フラッシュストレージデバイス３−４を再び選択してもよい。
【００４０】
よって、第１の処理においては、フラッシュストレージデバイス３−１に既に格納されているデータ部それぞれに対応する更新データ部それぞれが、例えば、フラッシュストレージデバイス３−２、フラッシュストレージデバイス３−３、またはフラッシュストレージデバイス３−４に書き込まれる。フラッシュストレージデバイス３−１に既に格納されているデータ部それぞれに対応する更新データ部それぞれがフラッシュストレージデバイス３−２〜３−４から選択される任意のフラッシュストレージデバイス書き込まれることにより、フラッシュストレージデバイス３−１内に格納されている有効データの量が減少される。
【００４１】
ここで、フラッシュストレージデバイス３−１内に格納されている有効データとは、グローバルＬＢＡに関連付けられている最新のデータを意味する。
また、第２の処理においては、フラッシュストレージデバイス３−３に既に格納されているデータ部それぞれに対応する更新データ部それぞれが、例えば、フラッシュストレージデバイス３−２、またはフラッシュストレージデバイス３−４に書き込まれる。これにより、フラッシュストレージデバイス３−３に既に格納されているデータ部それぞれに対応する更新データ部それぞれを書き込むための空き領域をフラッシュストレージデバイス３−３の不揮発性メモリ内に確保するためのガベージコレクションを行うことなく、これら更新データ部それぞれの書き込みが可能となる。したがって、フラッシュストレージデバイス３−４の空き領域を、フラッシュストレージデバイス３−３用のオーバープロビジョニング領域として利用することが可能となる。換言すれば、フラッシュストレージデバイス３−４の空き領域を、フラッシュストレージデバイス３−３のＧＣの必要性をなくすための記憶領域として利用することが可能となる。
【００４２】
同様に、フラッシュストレージデバイス３−２に既に格納されているデータ部それぞれに対応する更新データ部それぞれも、例えば、フラッシュストレージデバイス３−３、またはフラッシュストレージデバイス３−４に書き込まれる。これにより、フラッシュストレージデバイス３−２に既に格納されているデータ部それぞれに対応する更新データ部それぞれを書き込むための空き領域をフラッシュストレージデバイス３−２の不揮発性メモリ内に確保するためのガベージコレクションを行うことなく、これら更新データ部それぞれの書き込みが可能となる。したがって、フラッシュストレージデバイス３−４の空き領域を、フラッシュストレージデバイス３−２用のオーバープロビジョニング領域として利用することが可能となる。換言すれば、フラッシュストレージデバイス３−４の空き領域を、フラッシュストレージデバイス３−２のＧＣの必要性をなくすための記憶領域として利用することが可能となる。
【００４３】
フラッシュストレージデバイス３−４の空き容量はフラッシュストレージデバイス３−１の空き容量よりも遙かに大きい。したがって、フラッシュストレージデバイス３−４が追加されると、フラッシュストレージデバイス３−１〜３−４を含むストレージシステムのオーバープロビジョニング領域の量は増えた状態となる。そして、フラッシュストレージデバイス３−１に既に格納されているデータ部それぞれに対応する更新データ部それぞれがフラッシュストレージデバイス３−２〜３−４から選択される任意のフラッシュストレージデバイスに書き込まれるにつれて、ストレージシステム全体のオーバープロビジョニング領域の量が徐々に減少される。フラッシュストレージデバイス３−１に格納されている有効データ量がゼロになると、フラッシュストレージデバイス３−１はホスト２から除去可能となる。この時点で、ストレージシステム全体のオーバープロビジョニング領域の量はフラッシュストレージデバイス３−４が追加される直前のストレージシステム全体のオーバープロビジョニング領域の量と同じになる。
【００４４】
このように、本実施形態では、フラッシュストレージデバイス３−４の大きなサイズの空き領域をフラッシュストレージデバイス３−２、３−３のＧＣの必要性をなくすための記憶領域として利用することができる。したがって、ストレージシステム全体のオーバープロビジョニング領域の量が増やされた状態で、フラッシュストレージデバイス３−２〜３−４へのデータの書き込みを行うことが可能となる。よって、ホスト２から見たストレージシステムの書き込み性能の低下、ひいてはアプリケーション／エンドユーザから見たストレージシステムの書き込み性能の低下を招くことなく、フラッシュストレージデバイス３−１内に格納されている有効データの量を減らすことが可能となり、フラッシュストレージデバイス３−１内に格納されている有効データのバックアップ作業を軽減できる。
【００４５】
もし、第１の論理アドレス空間を分割することによって得られる３つのグローバルＬＢＡ範囲がフラッシュストレージデバイス３−１、３−２、３−３にそれぞれ固定的にマップされたならば、例えば、フラッシュストレージデバイス３−３に既に格納されているデータ部それぞれに対応する更新データ部は、常に、フラッシュストレージデバイス３−３に書き込まれなければならない。したがって、新たにホスト２に接続されたフラッシュストレージデバイス３−４内の不揮発性メモリの大きな空き領域（つまり、多数のフリーブロック）を、フラッシュストレージデバイス３−３用のオーバープロビジョニング領域として利用することができなくなる。同様に、フラッシュストレージデバイス３−２に既に格納されているデータ部それぞれに対応する更新データ部も、常に、フラッシュストレージデバイス３−２に書き込まれなければならない。したがって、新たにホスト２に接続されたフラッシュストレージデバイス３−４の不揮発性メモリ内の大きな空き領域（つまり、多数のフリーブロック）を、フラッシュストレージデバイス３−３用のオーバープロビジョニング領域として利用することができなくなる。また、フラッシュストレージデバイス３−４の空き領域は、フラッシュストレージデバイス３−１に格納されているデータの複製を格納するための専用領域として予約された状態となる。つまり、フラッシュストレージデバイス３−４の空き領域は、フラッシュストレージデバイス３−１のデータをコピーするために専有されてしまうので、フラッシュストレージデバイス３−２、３−３のＧＣの必要性をなくすための記憶領域として利用することができなくなる。
【００４６】
よって、第１の論理アドレス空間を分割することによって得られる３つのグローバルＬＢＡ範囲がフラッシュストレージデバイス３−１、３−２、３−３にそれぞれ固定的にマップするという方法が使用されたならば、たとえフラッシュストレージデバイス３−４が追加されても、ストレージシステム全体のオーバープロビジョニング領域の量を増やすという効果は得られない。
【００４７】
図２は、ホスト（情報処理装置）２の構成例を示す。
このホスト２は、ラックに収容可能な薄い箱形の筐体２０１を備える。例えば、筐体２０１の前面２０１Ａ側には、複数のフラッシュストレージデバイス３を収容可能な複数のスロットが設けられている。
【００４８】
これらスロットのうちの一つは、追加のフラッシュストレージデバイス３−４をホスト２に接続するための空きスロットとして利用される。
前面２０１Ａにおいては、これらスロットそれぞれの近くに上述のＬＥＤ５２がそれぞれ配置されていてもよい。
【００４９】
システムボード（マザーボード）２０２は筐体２０１内に配置される。システムボード（マザーボード）２０２上においては、プロセッサ４１、メモリ４２、ホスト側ストレージコントローラ４３等を含む様々な電子部品が実装されている。
図２の筐体２０１の構造は、フラッシュストレージデバイス３−１、３−２、３−３（あるいは、フラッシュストレージデバイス３−１〜３−４）とホスト側ストレージコントローラ４３とを含むストレージアレイに適用することもできる。
【００５０】
図３は、フラッシュストレージデバイス３−１〜３−４のいずれかとして使用されるフラッシュストレージデバイス３の構成例を示す。
フラッシュストレージデバイス３は、コントローラ４および不揮発性メモリ（ＮＡＮＤ型フラッシュメモリ）５を備える。フラッシュストレージデバイス３は、ランダムアクセスメモリ、例えば、ＤＲＡＭ６も備えていてもよい。
【００５１】
ＮＡＮＤ型フラッシュメモリ５は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。ＮＡＮＤ型フラッシュメモリ５は、２次元構造のＮＡＮＤ型フラッシュメモリであってもよいし、３次元構造のＮＡＮＤ型フラッシュメモリであってもよい。
【００５２】
ＮＡＮＤ型フラッシュメモリ５のメモリセルアレイは、複数のブロックＢＬＫ０〜ＢＬＫｍ−１を含む。ブロックＢＬＫ０〜ＢＬＫｍ−１の各々は複数のページ（ここではページＰ０〜Ｐｎ−１）によって編成される。ブロックＢＬＫ０〜ＢＬＫｍ−１は、消去単位として機能する。ブロックは、「消去ブロック」、「物理ブロック」、または「物理消去ブロック」と称されることもある。ページＰ０〜Ｐｎ−１の各々は、同一ワード線に接続された複数のメモリセルを含む。ページＰ０〜Ｐｎ−１は、データ書き込み動作およびデータ読み込み動作の単位である。
【００５３】
コントローラ４は、ＴｏｇｇｌｅＮＡＮＤフラッシュインタフェース、オープンＮＡＮＤフラッシュインタフェース（ＯＮＦＩ）のようなＮＡＮＤインタフェース１３を介して、不揮発性メモリであるＮＡＮＤ型フラッシュメモリ５に電気的に接続されている。コントローラ４は、ＮＡＮＤ型フラッシュメモリ５を制御するように構成されたメモリコントローラとして動作する。このコントローラ４は、Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ（ＳｏＣ）のような回路によって実現されてもよい。
【００５４】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ５のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層（ＦＴＬ）として機能し得る。このＦＴＬによって実行されるデータ管理には、（１）フラッシュストレージデバイス用の論理アドレス範囲内の論理アドレスそれぞれとＮＡＮＤ型フラッシュメモリ５の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、（２）ＮＡＮＤ型フラッシュメモリ５の制約（例えば、ページ単位のリード／ライト動作とブロック単位の消去動作）を隠蔽するための処理、等が含まれる。フラッシュストレージデバイス３用の論理アドレス範囲内の各論理アドレスは、フラッシュストレージデバイス３の論理アドレス範囲内の位置（論理記憶位置）をアドレス指定するためにホスト２によって使用されるアドレスである。この論理アドレスとしては、ＬＢＡ（logical block address(addressing)）が使用され得る。
【００５５】
フラッシュストレージデバイス用の論理アドレス範囲内の論理アドレスそれぞれとＮＡＮＤ型フラッシュメモリ５の物理アドレスそれぞれとの間のマッピングの管理は、アドレス変換テーブル（論理物理アドレス変換テーブル）として機能するルックアップテーブル（ＬＵＴ）３１を用いて実行される。フラッシュストレージデバイス用の論理アドレス範囲内の論理アドレスは、上述のデバイスＬＢＡを意味する。コントローラ４は、ＬＵＴ３１を使用して、論理アドレス（デバイスＬＢＡ）それぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。管理サイズ単位は、例えば、４Ｋバイトであってもよい。ある論理アドレス（デバイスＬＢＡ）に対応する物理アドレスは、この論理アドレス（デバイスＬＢＡ）に対応するデータが書き込まれたＮＡＮＤ型フラッシュメモリ５内の最新の物理記憶位置を示す。ＬＵＴ３１は、フラッシュストレージデバイス３の電源オン時にＮＡＮＤ型フラッシュメモリ５からＤＲＡＭ６にロードされてもよい。
【００５６】
ＮＡＮＤ型フラッシュメモリ５においては、ページへのデータ書き込みは１消去サイクル当たり１回のみ可能である。このため、コントローラ４は、ある論理アドレス（デバイスＬＢＡ）に対応する更新データを、この論理アドレス（デバイスＬＢＡ）に対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ４は、ＬＵＴ３１を更新してこの論理アドレス（デバイスＬＢＡ）にこの別の物理記憶位置の物理アドレスを関連付けると共に、以前のデータを無効化する。
【００５７】
ブロック管理には、不良ブロック（バッドブロック）の管理と、ウェアレベリングと、ガベージコレクション（ＧＣ）と、リフレッシュ等が含まれる。
不良ブロックとは、このブロックへのデータの書き込み、このブロックからのデータの読み出し、このブロックに対する消去動作、等が正常に実行できないブロックを意味する。
【００５８】
ウェアレベリングは、ブロックそれぞれの書き換え回数（プログラム／イレーズサイクルの数）を均一化するための動作である。
ＧＣは、フリーブロックの個数を増やすための動作である。フリーブロックとは、有効データを含まないブロックを意味する。ＧＣにおいては、コントローラ４は、有効データと無効データとが混在する幾つかのブロック内の有効データを別のブロック（例えばフリーブロック）にコピーする。ここで、フラッシュストレージデバイス３においては、有効データとは、ある論理アドレス（デバイスＬＢＡ）に関連付けられているデータを意味する。例えば、フラッシュストレージデバイス３のＬＵＴ３１から参照されているデータ（すなわちデバイスＬＢＡから最新のデータとして紐付けられているデータ）は有効データであり、後にホスト２からリードされる可能性がある。無効データとは、どのデバイスＬＢＡにも関連付けられていないデータを意味する。どのデバイスＬＢＡにも関連付けられていないデータは、もはやホスト２からリードされる可能性が無いデータである。そして、コントローラ４は、ＬＵＴ３１を更新して、コピーされた有効データのデバイスＬＢＡそれぞれに、コピー先の物理アドレスそれぞれをマッピングする。有効データが別のブロックにコピーされることによって無効データのみになったブロックはフリーブロックとして解放される。これによって、このブロックは、このブロックに対する消去動作が実行された後に再利用することが可能となる。
【００５９】
リフレッシュは、誤りビット数が閾値を上回るデータが格納されているブロックそれぞれを検出し、検出された各ブロック内の有効データを別のブロックに書き直す動作である。
コントローラ４は、ホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４、符号化／復号回路１５等を含んでもよい。これらホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４、符号化／復号回路１５は、バス１０を介して相互接続されていてもよい。
【００６０】
ホストインタフェース１１は、ホスト２との通信を実行するように構成されたホストインタフェース回路である。ホストインタフェース１１は、ホスト２から様々なコマンドを受信する。これらコマンドには、ライトコマンド、リードコマンド、トリムコマンド、他の様々なコマンドが含まれる。
【００６１】
ＣＰＵ１２は、ホストインタフェース１１、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４、符号化／復号回路１５を制御するように構成されたプロセッサである。ＣＰＵ１２は、フラッシュストレージデバイス３の電源オンに応答してＮＡＮＤ型フラッシュメモリ５または図示しないＲＯＭから制御プログラム（ファームウェア）をＤＲＡＭ６にロードし、そしてこのファームウェアを実行することによって様々な処理を行う。なお、ファームウェアはコントローラ４内の図示しないＳＲＡＭ上にロードされてもよい。このＣＰＵ１２は、ホスト２からの様々なコマンドを処理するためのコマンド処理等を実行することができる。ＣＰＵ１２の動作は、ＣＰＵ１２によって実行される上述のファームウェアによって制御される。なお、コマンド処理の一部または全部は、コントローラ４内の専用ハードウェアによって実行してもよい。
【００６２】
ＣＰＵ１２は、ライト制御部２１、リード制御部２２、およびリフレッシュ制御部２３として機能することができる。これらライト制御部２１、リード制御部２２、およびリフレッシュ制御部２３の各々の一部または全部も、コントローラ４内の専用ハードウェアによって実現されてもよい。
【００６３】
ライト制御部２１は、ホスト２から受信されるライトコマンドに従って、このライトコマンドに関連付けられたデータ（ライトデータ）をＮＡＮＤ型フラッシュメモリ５内の書き込み先ブロックに書き込む書き込み動作を実行する。ライトコマンドは、論理アドレス（開始論理アドレス）、データ長を含んでいてもよい。論理アドレス（開始論理アドレス）は、ライトデータが書き込まれるべき論理記憶位置（最初の論理記憶位置）を示すアドレスである。フラッシュストレージデバイス用の論理アドレス範囲内のある論理アドレス（デバイスＬＢＡ）が、論理アドレス（開始論理アドレス）として使用される。データ長は、書き込まれるべきデータの長さを示す。本実施形態では、ライトコマンドは、さらに、このライトデータに対応する第１の論理アドレス空間内の論理アドレス（グローバルＬＢＡ）を含んでいてもよい。
【００６４】
なお、ライトコマンドとしては、ライトデータが書き込まれるべき物理記憶位置を直接指定するタイプのライトコマンドが使用されてもよい。この場合には、このライトコマンドは、ライトデータが書き込まれるべき物理記憶位置を示す物理アドレスと、データ長とを含む。このライトコマンドは、さらに、ライトデータに対応する第１の論理アドレス空間内の論理アドレス（グローバルＬＢＡ）を含んでいてもよい。ライトコマンドに含まれる物理アドレスは、書き込み先ブロックを示すブロックアドレスと、この書き込み先ブロック内の書き込み先位置を示すブロック内オフセットとを含んでいてもよい。ブロック内オフセットは、ページアドレスとページ内オフセットとによって表されてもよい。
【００６５】
あるいは、ライトコマンドに含まれる物理アドレスは、書き込み先ブロックを示すブロックアドレスのみを含み、ブロック内オフセットを含まなくてもよい。この場合には、ライト制御部２１は、書き込み先ブロック内の書き込み先位置を決定し、ライトコマンドに関連付けられたデータ部を、この書き込み先ブロック内の決定された書き込み先位置に書き込む。そして、ライト制御部２１は、書き込み先ブロックを示すブロックアドレスと、この決定された書き込み先位置を示すブロック内オフセットとを含む物理アドレスを、ホスト２に通知する。これにより、ホスト側ストレージコントローラ４３は、グローバルＬＢＡそれぞれと物理アドレス（ブロックアドレス、ブロック内オフセット）それぞれとの間のマッピングを管理でき、且つフラッシュストレージデバイス３−１〜３−４内のデータ配置を効率よく管理することができる。つまり、ホスト側ストレージコントローラ４３は、あるグローバルＬＢＡへ書き込むべきデータ部を、フラッシュストレージデバイス３−１〜３−４から選択される任意のフラッシュストレージデバイス内の任意の空き領域（任意のフリーブロック）に書き込むことができる。
【００６６】
リード制御部２２は、ホスト２から受信されるリードライトコマンドに従って、このリードコマンドによって指定されたデータをＮＡＮＤ型フラッシュメモリ５から読み出す。リードコマンドは、論理アドレス（開始論理アドレス）、データ長を含んでいてもよい。論理アドレス（開始論理アドレス）は、読み出されるべきデータが格納されている論理記憶位置を示すアドレスである。フラッシュストレージデバイス用の論理アドレス範囲内のある論理アドレス（デバイスＬＢＡ）が、この論理アドレス（開始論理アドレス）として使用される。データ長は、読み出されるべきデータの長さを示す。あるいは、リードコマンドは、論理アドレス（開始論理アドレス）、物理アドレス（ブロックアドレス、ブロック内オフセット）と、データ長を含んでいてもよい。この場合には、リード制御部２２は、物理アドレス（ブロックアドレス、ブロック内オフセット）に基づいて、ＮＡＮＤ型フラッシュメモリ５からデータを読み出す。
【００６７】
リフレッシュ制御部２３は、誤りビット数が閾値を上回るデータが格納されている各ブロック内の有効データを別のブロックに書き直すリフレッシュ動作を実行する。より詳しくは、リフレッシュ制御部２３は、ＮＡＮＤ型フラッシュメモリ５に含まれる複数のブロックのうち、誤りビット数が閾値を上回るデータが格納されているブロックそれぞれを検出するパトロールリードを実行する。パトロールリードでは、各ブロックから有効データが所定データ長単位で読み出され、この読み出されたデータの誤りビット数（ＥＣＣエラービットの数）が符号化／復号回路１５に含まれるＥＣＣデコーダによってチェックされる。例えば、読み出されたデータの誤りビット数が所定のビット数を上回り、且つこの誤りビット数が、ＥＣＣデコーダによって訂正可能なビット数以下である場合、この読み出されたデータが格納されているブロックは、リフレッシュ対象のブロックとして決定される。有効データを含む全てのブロックに対するパトロールリードは、所定のリフレッシュ期間内に実行される。フラッシュストレージデバイス３がデータの書き込みおよびデータの読み出しの双方が許可される通常動作モードである場合には、リフレッシュ制御部２３は、誤りビット数が閾値を上回るデータが格納されているブロックそれぞれを検出する動作（パトロールリード）と、検出された各ブロック内の有効データを、ＮＡＮＤ型フラッシュメモリ５内の別のブロックに書き直す動作とを含むリフレッシュ動作を実行する。
【００６８】
一方、フラッシュストレージデバイス３がデータの書き込みが禁止されデータの読み出しが許可されるライト禁止モードである場合には、リフレッシュ制御部２３は、誤りビット数が閾値を上回るデータが格納されているブロックそれぞれを検出する動作（パトロールリード）と、検出された各ブロック内の有効データを、他のフラッシュストレージデバイスにコピーするようにホスト２に要求（リフレッシュ要求）する動作とを含むリフレッシュ動作を実行する。このリフレッシュ要求は、リフレッシュのためのコピー要求である。このリフレッシュ要求は、誤りビット数が閾値を上回るデータが格納されている各ブロック内の有効データに対応するグローバルＬＢＡを示す情報を含んでいてもよい。これにより、フラッシュストレージデバイス３は、フラッシュストレージデバイス３から他のフラッシュストレージデバイスにコピー（書き直し）することが必要な有効データのグローバルＬＢＡをホスト２に通知することができる。
【００６９】
ＮＡＮＤインタフェース１３は、ＣＰＵ１２の制御の下、ＮＡＮＤ型フラッシュメモリ５を制御するように構成されたメモリ制御回路である。ＤＲＡＭインタフェース１４は、ＣＰＵ１２の制御の下、ＤＲＡＭ６を制御するように構成されたＤＲＡＭ制御回路である。ＤＲＡＭ６の記憶領域の一部は、ＬＵＴ３１の格納のために使用される。また、ＤＲＡＭ６の記憶領域の他の一部は、ブロック管理テーブル３２、ＬＢＡ／グローバルＬＢＡ管理テーブル３３の格納のために使用される。
【００７０】
ブロック管理テーブル３２は、有効データ／無効データの管理のために使用される。このブロック管理テーブル３２は、例えば、ＮＡＮＤ型フラッシュメモリ５内のブロック毎に存在してもよい。あるブロックに対応するブロック管理テーブル３２においては、このブロック内のデータ部それぞれの有効／無効を示すビットマップフラグが格納されている。
【００７１】
ＬＢＡ／グローバルＬＢＡ管理テーブル３３は、フラッシュストレージデバイス３用のＬＢＡそれぞれとグローバルＬＢＡそれぞれとの間の対応関係を管理する管理テーブルである。
符号化／復号回路１５は、エラー訂正コード（ＥＣＣ）エンコーダおよびＥＣＣデコーダとして機能し得る。ＮＡＮＤ型フラッシュメモリ５にデータをライトすべき時、符号化／復号回路１５は、データ（書き込むべきライトデータ）をエンコード（ＥＣＣエンコード）することによってこのデータにエラー訂正コード（ＥＣＣ）を冗長コードとして付加する。ＮＡＮＤ型フラッシュメモリ５からデータがリードされた時、符号化／復号回路１５は、リードされたデータに付加されたＥＣＣを使用して、このデータのエラー訂正を行う（ＥＣＣデコード）。
【００７２】
図４は、フラッシュストレージデバイス３によって管理されるＬＵＴ３１の構成例を示す。
ＬＵＴ３１は、フラッシュストレージデバイス３用のＬＢＡ（ここでは、ＬＢＡ０〜ＬＢＡｘ）にそれぞれ対応する複数のエントリを含む。各エントリは、このエントリに対応するＬＢＡのデータが格納されているＮＡＮＤ型フラッシュメモリ５内の物理記憶位置を示す物理アドレス（ＰＢＡ）を格納するために使用される。
【００７３】
図５は、フラッシュストレージデバイス３によって管理されるＬＢＡ／グローバルＬＢＡ管理テーブル３３の構成例を示す。
ＬＢＡ／グローバルＬＢＡ管理テーブル３３は、フラッシュストレージデバイス３用のＬＢＡ（ここでは、ＬＢＡ０〜ＬＢＡｘ）にそれぞれ対応する複数のエントリを含んでいてもよい。この場合、各エントリは、このエントリに対応するＬＢＡに対応するグローバルＬＢＡを格納するために使用される。
【００７４】
図６は、フラッシュストレージデバイス３によって実行される、ＮＡＮＤ型フラッシュメモリ５の書き込み先ブロックＢＬＫにデータとグローバルＬＢＡの双方を書き込む動作を示す。
上述したように、ホスト２からフラッシュストレージデバイス３に送信される各ライトコマンドは、ライトデータ部が書き込まれるべきフラッシュストレージデバイス３内の論理記憶位置を示すＬＢＡ（またはライトデータ部が書き込まれるべきフラッシュストレージデバイス３のＮＡＮＤ型フラッシュメモリ５内の物理記憶位置を示す物理アドレス）と、このライトデータ部に対応するグローバルＬＢＡとを含む。フラッシュストレージデバイス３のコントローラ４（ライト制御部２１）は、図６に示すように、ライトデータ部とこのライトデータ部に対応するグローバルＬＢＡとのペアを、書き込み先ブロックＢＬＫに書き込んでもよい。例えば、各ブロックにおいて、各ページは、ユーザデータを格納するためのユーザデータ領域（１６ＫＢ）と管理データを格納するための冗長領域とを含んでもよい。ページサイズは１６ＫＢ＋アルファである。コントローラ４は、ＬＵＴ３１の上述の管理サイズ（例えば４Ｋバイト）と同じサイズを有するライトデータ部とこのライトデータ部に対応するグローバルＬＢＡとの双方を書き込み先ブロックＢＬＫ内のページに書き込んでもよい。
【００７５】
あるいは、コントローラ４は、管理サイズ（例えば４Ｋバイト）と同じサイズを有するライトデータ部とこのライトデータ部に対応するグローバルＬＢＡとこのライトデータ部に対応するＬＢＡ（デバイスＬＢＡ）とを、書き込み先ブロックＢＬＫ内のページに書き込んでもよい。
【００７６】
図７のフローチャートは、通常動作モードにおいて各フラッシュストレージデバイスによって実行されるリフレッシュ動作の手順と、ライト禁止モードにおいて各フラッシュストレージデバイスによって実行されるリフレッシュ動作の手順とを示す。
ホスト２に接続されている各フラッシュストレージデバイスのコントローラ４（リフレッシュ制御部２３）は、このフラッシュストレージデバイスが通常動作モードまたはライト禁止モードのいずれに設定されているかを判定する（ステップＳ１１）。
【００７７】
このフラッシュストレージデバイスが通常動作モードであるならば（ステップＳ１１のＮＯ）、コントローラ４は、有効データを含む全てのブロックに対するパトロールリードを実行する（ステップＳ１２）。このパトロールリードは、有効データを含む全てのブロックに対するパトロールリードがリフレッシュ期間内に実行されるようなスケジュールで実行される。そして、コントローラ４は、パトロールリードによって読み出された有効データの誤りビット数を検出し、検出される誤りビット数が所定の閾値を上回っているか否かを判定する（ステップＳ１３）。検出される誤りビット数が所定の閾値を上回っているならば（ステップＳ１３のＹＥＳ）、コントローラ４は、この検出される誤りビット数を含む有効データが格納されているブロックを、リフレッシュ対象のブロック（つまり、誤りビット数が閾値を上回るデータが格納されているブロック）として検出する。そして、コントローラ４は、この検出されるリフレッシュ対象のブロック内の有効データを他のブロック（フリーブロック）に書き直す（ステップＳ１４）。ステップＳ１４では、符号化／復号回路１５によってエラー訂正された有効データが他のブロックに書き直される。
【００７８】
このフラッシュストレージデバイスがライト禁止モードであるならば（ステップＳ１１のＹＥＳ）、コントローラ４は、有効データを含む全てのブロックに対するパトロールリードを実行する（ステップＳ１５）。このパトロールリードは、有効データを含む全てのブロックに対するパトロールリードがリフレッシュ期間内に実行されるようなスケジュールで実行される。そして、コントローラ４は、パトロールリードによって読み出された有効データの誤りビット数を検出し、検出される誤りビット数が上述の所定の閾値を上回っているか否かを判定する（ステップＳ１６）。検出される誤りビット数が所定の閾値を上回っているならば（ステップＳ１６のＹＥＳ）、コントローラ４は、この検出される誤りビット数を含む有効データが格納されているブロックを、リフレッシュ対象のブロック（つまり、誤りビット数が閾値を上回るデータが格納されているブロック）として検出する。そして、コントローラ４は、この検出されるリフレッシュ対象のブロック内の有効データを他のフラッシュストレージデバイスにコピーするようにホスト２（ホスト側ストレージコントローラ４３）に要求するリフレッシュ動作を実行する（ステップＳ１７）。ステップＳ１７では、コントローラ４は、この検出されるリフレッシュ対象のブロック内の有効データに対応するグローバルＬＢＡを示す情報を含むリフレッシュ要求を自発的にホスト２（ホスト側ストレージコントローラ４３）に送信してもよい。あるいは、ステップＳ１７では、コントローラ４は、リフレッシュ対象のブロックが存在することを示す割り込み信号をホスト２（ホスト側ストレージコントローラ４３）に送信してもよい。ホスト側ストレージコントローラ４３がこの割り込み信号を受信した場合、ホスト側ストレージコントローラ４３は、リフレッシュ対象のブロック内の有効データに対応するグローバルＬＢＡを示す情報をコントローラ４から取得してもよい。
【００７９】
図８は、ホスト側ストレージコントローラ４３の構成例を示す。
ホスト側ストレージコントローラ４３は、記憶位置管理部４３１、空き領域管理部４３２、および除去管理部４３３を含む。記憶位置管理部４３１は、ホスト側のアドレス変換テーブルとして機能するルックアップテーブル（ＬＵＴ）４３１Ａを管理する。ホスト側ストレージコントローラ４３は、ＬＵＴ４３１Ａを使用して、第１の論理アドレス空間に属する論理アドレス（グローバルＬＢＡ）それぞれとグローバルＬＢＡそれぞれに対応するデータ部それぞれが書き込まれたフラッシュストレージデバイス３−１〜３−３（あるいはフラッシュストレージデバイス３−１〜３−４）内の記憶位置それぞれとの間のマッピングを管理する。
【００８０】
この場合、記憶位置管理部４３１は、ＬＵＴ４３１Ａを使用して、第１の論理アドレス空間に属する論理アドレス（グローバルＬＢＡ）それぞれとグローバルＬＢＡそれぞれに対応するデータ部それぞれが書き込まれたフラッシュストレージデバイス３−１〜３−３（あるいはフラッシュストレージデバイス３−１〜３−４）内の論理記憶位置を示すローカル論理アドレス（ローカルＬＢＡ）それぞれとの間のマッピングを管理してもよい。あるいは、記憶位置管理部４３１は、ＬＵＴ４３１Ａを使用して、第１の論理アドレス空間に属する論理アドレス（グローバルＬＢＡ）それぞれとグローバルＬＢＡそれぞれに対応するデータ部それぞれが書き込まれたフラッシュストレージデバイス３−１〜３−３（あるいはフラッシュストレージデバイス３−１〜３−４）内の物理記憶位置を示す物理アドレスそれぞれとの間のマッピングを管理してもよい。
【００８１】
図８では、グローバルＬＢＡそれぞれとローカルＬＢＡそれぞれとの間のマッピングがＬＵＴ４３１Ａによって管理される場合が想定されている。
すなわち、ＬＵＴ４３１Ａは、グローバルＬＢＡ（グローバルＬＢＡ０〜グローバルＬＢＡｎ）それぞれに対応する複数のエントリを含む。あるグローバルＬＢＡに対応するエントリは、このグローバルＬＢＡに対応するデータ部が格納されているフラッシュストレージデバイス３−１〜３−３（あるいはフラッシュストレージデバイス３−１〜３−４）内の特定の論理記憶位置を示すローカルＬＢＡを格納する。各ローカルＬＢＡは、デバイスＩＤとデバイスＬＢＡとを含む。デバイスＩＤは、あるフラッシュストレージデバイスの識別子である。デバイスＬＢＡは、このストレージデバイス用のＬＢＡ範囲内の一つのＬＢＡを示す。
【００８２】
ホスト側ストレージコントローラ４３にフラッシュストレージデバイス３−１〜３−３が接続されている状態においては、記憶位置管理部４３１は、グローバルＬＢＡそれぞれに対応するデータ部の各々を、フラッシュストレージデバイス３−１〜３−３の中から選択される任意のストレージデバイス内の任意の論理記憶位置（デバイスＬＢＡ）に書き込むことができる。より詳しくは、記憶位置管理部４３１がある特定のグローバルＬＢＡとある特定のデータ長とを含むライト要求をホストソフトウェア（例えばストレージ管理プログラム３０３）から受信した場合、記憶位置管理部４３１は、この特定のグローバルＬＢＡに対応するライトデータ部が書き込まれるべきフラッシュストレージデバイスをフラッシュストレージデバイス３−１〜３−３の中から選択でき、且つこの選択されたストレージデバイス用のＬＢＡ範囲の中から、この特定のグローバルＬＢＡに対応するライトデータ部が書き込まれるべきＬＢＡ（デバイスＬＢＡ）を選択することができる。記憶位置管理部４３１は、このデータ部を書き込むためのライトコマンドを、選択されたフラッシュストレージデバイスに送信する。このライトコマンドは、選択されたデバイスＬＢＡと、この特定のデータ長とを含んでもよい。さらに、このライトコマンドは、この特定のグローバルＬＢＡを含んでいてもよい。そして、記憶位置管理部４３１は、ＬＵＴ４３１Ａを更新して、この特定のグローバルＬＢＡに、このデータ部が書き込まれた論理記憶位置を示すローカルＬＢＡ（このデータ部が書き込まれたフラッシュストレージデバイスのデバイスＩＤ、このデータ部が書き込まれた論理記憶位置を示すデバイスＬＢＡ）を関連付ける。
【００８３】
ホスト側ストレージコントローラ４３にフラッシュストレージデバイス３−１〜３−３が接続されている状態においては、空き領域管理部４３２は、共有フリーブロックリストを使用して、フラッシュストレージデバイス３−１〜３−３それぞれの空き領域（フラッシュストレージデバイス３−１〜３−３の各々のＮＡＮＤ型フラッシュメモリに含まれる全てのフリーブロック）を、これらフラッシュストレージデバイス３−１〜３−３によって共有される空き領域（フリーブロック）の集合として管理する。データ部それぞれが書き込まれるべきフラッシュストレージデバイスを選択するためのポリシーとしては、フラッシュストレージデバイス３−１〜３−３の中で最も大きなサイズの空き領域を有するフラッシュストレージデバイスを、データ部が書き込まれるべきフラッシュストレージデバイスとして優先的に選択するというポリシーが使用されてもよい。あるいは、フラッシュストレージデバイス３−１〜３−３それぞれの空き領域が均等に消費されるようにフラッシュストレージデバイス３−１〜３−３をデータ部それぞれが書き込まれるべきフラッシュストレージデバイスとして同じ割合で選択するというポリシーが使用されてもよい。
【００８４】
記憶位置管理部４３１は、データ部それぞれが書き込まれるべき書き込み先ブロックを共有フリーブロックリスト４３２Ａによって管理される共有フリーブロックの集合から選択することによって、グローバルＬＢＡそれぞれに対応するデータ部の各々を、フラッシュストレージデバイス３−１〜３−３の中から選択される任意の一つのストレージデバイスに書き込んでもよい。共有フリーブロックの集合から選択されたフリーブロックは、書き込み先ブロックとして割り当てられる。この書き込み先ブロックを含むフラッシュストレージデバイスが、データ部それぞれが書き込まれるべきフラッシュストレージデバイスとして選択されてもよい。各フラッシュストレージデバイスにおいて、あるブロック内の全てのデータが上書き／アンマップ、ＧＣ等によって無効化されると、このブロックは共有フリーブロックリスト４３２Ａに返却される。返却されたブロックは共有フリーブロックとして再利用される。
【００８５】
次に、フラッシュストレージデバイス３−１〜３−３のうち、例えば、フラッシュストレージデバイス３−１の不良ブロック数の増加等によってフラッシュストレージデバイス３−１がホスト側ストレージコントローラ４３から除去されるべきことが決定され、且つフラッシュストレージデバイス３−４がホスト側ストレージコントローラ４３に接続された場合を想定する。
【００８６】
記憶位置管理部４３１は、フラッシュストレージデバイス３−１をデータの書き込みが禁止されデータの読み出しが許可される上述のライト禁止モードで制御する。さらに、記憶位置管理部４３１は、グローバルＬＢＡそれぞれに対応するデータ部の各々を、フラッシュストレージデバイス３−２〜３−４の中から選択される任意の一つのフラッシュストレージデバイス内の任意の論理記憶位置に書き込むことによって、除去されるべきフラッシュストレージデバイス３−１内に格納されている有効データの量を減らす書き込み処理を実行する。この場合、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部の各々は、フラッシュストレージデバイス３−２、３−３、３−４の中から選択される任意のフラッシュストレージデバイスに書き込まれる。同様に、フラッシュストレージデバイス３−２に既に書き込まれているデータ部それぞれに対応する更新データ部の各々も、フラッシュストレージデバイス３−２、３−３、３−４の中から選択される任意のフラッシュストレージデバイスに書き込まれる。同様に、フラッシュストレージデバイス３−３に既に書き込まれているデータ部それぞれに対応する更新データ部の各々も、フラッシュストレージデバイス３−２、３−３、３−４の中から選択される任意のフラッシュストレージデバイスに書き込まれる。
【００８７】
フラッシュストレージデバイス３−４がホスト２に接続された時点で、空き領域管理部４３２は、フラッシュストレージデバイス３−４のＮＡＮＤ型フラッシュメモリに含まれる全てのフリーブロックを共有フリーブロックリスト４３２Ａに追加し、さらに、フラッシュストレージデバイス３−１に含まれる各フリーブロックを共有フリーブロックリスト４３２Ａから削除する。これにより、フラッシュストレージデバイス３−４がホスト２に接続された場合には、空き領域管理部４３２は、共有フリーブロックリスト４３２Ａを使用して、フラッシュストレージデバイス３−２のＮＡＮＤ型フラッシュメモリに含まれるフリーブロックそれぞれと、フラッシュストレージデバイス３−３のＮＡＮＤ型フラッシュメモリに含まれるフリーブロックそれぞれと、フラッシュストレージデバイス３−４のＮＡＮＤ型フラッシュメモリに含まれるフリーブロックそれぞれとを、これらフラッシュストレージデバイス３−１〜３−４によって共有される共有フリーブロックの集合として管理することができる。
【００８８】
記憶位置管理部４３１は、最も大きなサイズの空き領域（つまり最も多くのフリーブロック）を有するフラッシュストレージデバイスをデータ部が書き込まれるべきフラッシュストレージデバイスとして優先的に選択するというポリシーを使用してもよい。
この場合、記憶位置管理部４３１は、（１）ホスト２（ホストソフトウェア）から受信されるライト要求それぞれに応じて、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれと、フラッシュストレージデバイス３−２に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれと、フラッシュストレージデバイス３−３に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれとをフラッシュストレージデバイス３−４に書き込む第１の書き込む処理と、（２）第１の書き込む処理によってフラッシュストレージデバイス３−２または３−３に空き領域が確保された後、ホスト２（ホストソフトウェア）から受信される後続のライト要求それぞれに応じて、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれと、フラッシュストレージデバイス３−２に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれと、フラッシュストレージデバイス３−３に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれとを、フラッシュストレージデバイス３−２または３−３に書き込む第２の書き込み処理とを実行する。
【００８９】
第１の書き込み処理では、フラッシュストレージデバイス３−１に既に格納されているデータ部それぞれに対応する更新データ部の各々だけでなく、フラッシュストレージデバイス３−２または３−３に既に格納されているデータ部それぞれに対応する更新データ部の各々も、フラッシュストレージデバイス３−４の空き領域に書き込まれる。したがって、フラッシュストレージデバイス３−２または３−３に空き領域（フリーブロック）を確保するためのＧＣを実行することなく、フラッシュストレージデバイス３−２または３−３に既に格納されているデータ部それぞれに対応する更新データ部の各々をフラッシュストレージデバイス３−４の大きなサイズの空き領域に書き込むことができる。したがって、フラッシュストレージデバイス３−４のＮＡＮＤ型フラッシュメモリに含まれる多数のフリーブロックに対応する容量を、フラッシュストレージデバイス３−１〜３−４を含むストレージシステム全体のオーバープロビジョニング領域として有効利用することができる。また、第１の書き込み処理によって、フラッシュストレージデバイス３−２または３−３内の空き領域の量（フリーブロックの数）を増やすことができる。よって、第２の書き込み処理では、第１の書き込み処理によって確保された空き領域を有効利用することが可能となる。
【００９０】
さらに、記憶位置管理部４３１は、ホスト２から除去されるべきフラッシュストレージデバイス３−１内の有効データの量が許容量にまで減少された場合、フラッシュストレージデバイス３−１内の有効データを、フラッシュストレージデバイス３−２〜３−４の中から選択される任意の一つにコピーしてもよい。
【００９１】
もしフラッシュストレージデバイス３−１内の有効データを他のフラッシュストレージデバイス３−２〜３−４のいずれかにコピーする処理を無条件に開始すると、フラッシュストレージデバイス３−１内に格納されている多くの量の有効データをコピーすることが必要とされ、これによってストレージシステム全体に対するデータの書き込み量が増加する。この結果、ホストソフトウェアから見たストレージシステムの性能が低下される可能性がある。
【００９２】
本実施形態では、フラッシュストレージデバイス３−１内の有効データの量が閾値未満に減少された場合にフラッシュストレージデバイス３−１内の有効データを他のフラッシュストレージデバイス３−２〜３−４のいずれかにコピーする処理が実行される。これにより、ホストソフトウェアから見たストレージシステムの性能低下を効率よく抑制することができる。
【００９３】
また、記憶位置管理部４３１がフラッシュストレージデバイス３−１からリフレッシュ要求を受信した場合、記憶位置管理部４３１は、フラッシュストレージデバイス３−１によって実行されるリフレッシュ動作によって検出される各ブロック（誤りビット数が閾値を上回るデータが格納されているブロック）内の有効データを、フラッシュストレージデバイス３−２〜３−４の中から選択される任意の一つにコピーする動作を実行してもよい。リフレッシュのためのデータコピー動作は、フラッシュストレージデバイス３−１が除去されるか否かに関係なく、実行されるべきデータ書き込み動作である。したがって、フラッシュストレージデバイス３−１によって実行されるリフレッシュ動作によって検出される各ブロック内の有効データを他のフラッシュストレージデバイス３−２〜３−４にコピーする動作は、フラッシュストレージシステム全体へのデータ書き込み量を増加させることはない。
【００９４】
また、記憶位置管理部４３１は、フラッシュストレージデバイス３−１に格納されている有効データが無くなったか否かを判定する。グローバルＬＢＡそれぞれとこれらグローバルＬＢＡに対応するデータ部が格納されている最新の論理記憶位置を示すローカルＬＢＡそれぞれとの間のマッピングはＬＵＴ４３１Ａによって管理されている。したがって、記憶位置管理部４３１は、ＬＵＴ４３１Ａを参照することによって、フラッシュストレージデバイス３−１に格納されている有効データが無くなったか否かを判定することができる。この場合、フラッシュストレージデバイス３−１を指すエントリがＬＵＴ４３１Ａ内に存在しないならば、記憶位置管理部４３１は、フラッシュストレージデバイス３−１に有効データが存在しなくなったと判定することができる。
【００９５】
フラッシュストレージデバイス３−１に有効データが存在しなくなった場合、記憶位置管理部４３１は、フラッシュストレージデバイス３−１がホスト２から除去可能であることを除去管理部４３３に通知してもよい。
フラッシュストレージデバイス３−１に有効データが存在しなくなった場合、除去管理部４３３は、フラッシュストレージデバイス３−１のＮＡＮＤ型フラッシュメモリ内の各ブロックの消去動作を指示する消去コマンドをフラッシュストレージデバイス３−１に送出してもよい。さらに、除去管理部４３３は、フラッシュストレージデバイス３−１内の消去動作が実行された各ブロックに予め指定されたデータ（ダミーデータ）を書き込んでもよい。
【００９６】
あるいは、記憶位置管理部４３１が、ＬＵＴ４３１Ａを使用して、グローバルＬＢＡそれぞれと物理アドレスそれぞれとの間のマッピングを管理するように構成されているケースにおいては、記憶位置管理部４３１は、フラッシュストレージデバイス３−１内の個々のブロックが有効データを含まないフリーブロックとなったか否かを容易に判定することができる。したがって、このケースにおいては、除去管理部４３３は、フラッシュストレージデバイス３−１内のＮＡＮＤ型フラッシュメモリのブロックの一つが上述の更新データの書き込み処理またはコピー処理等によって有効データを含まないブロックとなる度、この有効データを含まないブロックの消去動作を指示する消去コマンドをフラッシュストレージデバイス３−１に送信してもよい。これにより、上述の書き込み処理またはコピー処理等によってフラッシュストレージデバイス３−１の有効データの量を減らす処理と並行して、有効データを含まない各ブロックの消去動作を行うことができる。この結果、フラッシュストレージデバイス３−１に格納されている有効データが無くなった時点からフラッシュストレージデバイス３−１の全てのブロックの消去動作が完了する時点までの期間を最小化することができる。
【００９７】
なお、除去管理部４３３は、フラッシュストレージデバイス３−１の一つのブロックの消去動作が実行される度に、この消去動作が実行されたブロックに、予め指定されたデータ（ダミーデータ）を書き込んでもよい。
フラッシュストレージデバイス３−１に格納されている有効データが無くなった場合、またはフラッシュストレージデバイス３−１の全てのブロックに対する消去動作が完了した場合、あるいは全てのブロックに対する消去動作とダミーデータ書き込み動作の双方が完了した場合に、除去管理部４３３は、フラッシュストレージデバイス３−１が除去可能であることをストレージ管理プログラム３０３に通知してもよい。
【００９８】
そして、例えば、ストレージ管理プログラム３０３の制御の下、除去管理部４３３は、フラッシュストレージデバイス３−１に対応するＬＥＤ５２を駆動してもよい。
図９は、グローバルＬＢＡそれぞれに対応するデータ部をフラッシュストレージデバイス３−１〜３−３内の記憶位置に書き込む処理を示す。
【００９９】
図９においては、図示の簡単化のために、フラッシュストレージデバイス３−１〜３−３が同じ容量を有しており、フラッシュストレージデバイス３−１〜３−３の各々にデバイスＬＢＡ範囲（ＬＢＡ０〜ＬＢＡ９９９）が割り当てられている場合が例示されている。
【０１００】
上述したように、ホストソフトウェアからホスト側ストレージコントローラ４３に送信されるライト要求の各々に関連付けられたデータ部（つまり、各グローバルＬＢＡに対応するデータ部）は、フラッシュストレージデバイス３−１〜３−３を含むストレージシステム内の任意の論理記憶位置に書き込むことができる。図９では、グローバルＬＢＡ０に対応するデータ部がフラッシュストレージデバイス３−１内のＬＢＡ１００に書き込まれ、グローバルＬＢＡ１に対応するデータ部がフラッシュストレージデバイス３−１内のＬＢＡ１１０に書き込まれ、グローバルＬＢＡ２に対応するデータ部がフラッシュストレージデバイス３−２内のＬＢＡ５０に書き込まれ、グローバルＬＢＡ３に対応するデータ部がフラッシュストレージデバイス３−２内のＬＢＡ６０に書き込まれ、グローバルＬＢＡ４に対応するデータ部がフラッシュストレージデバイス３−１内のＬＢＡ２００に書き込まれ、グローバルＬＢＡ５に対応するデータ部がフラッシュストレージデバイス３−３内のＬＢＡ５００に書き込まれ、グローバルＬＢＡ６に対応するデータ部がフラッシュストレージデバイス３−３内のＬＢＡ６００に書き込まれ、グローバルＬＢＡ７に対応するデータ部がフラッシュストレージデバイス３−２内のＬＢＡ１００に書き込まれ、グローバルＬＢＡ１０に対応するデータ部がフラッシュストレージデバイス３−２内のＬＢＡ１０に書き込まれ、グローバルＬＢＡ１１に対応するデータ部がフラッシュストレージデバイス３−１内のＬＢＡ９００に書き込まれ、そして、グローバルＬＢＡｎに対応するデータ部がフラッシュストレージデバイス３−３内のＬＢＡ７０に書き込まれた場合が想定されている。
【０１０１】
グローバルＬＢＡ０に対応するＬＵＴエントリには、デバイスＩＤ＝＃１、デバイスＬＢＡ＝１００が格納される。グローバルＬＢＡ１に対応するＬＵＴエントリには、デバイスＩＤ＝＃１、デバイスＬＢＡ＝１１０が格納される。グローバルＬＢＡ２に対応するＬＵＴエントリには、デバイスＩＤ＝＃２、デバイスＬＢＡ＝５０が格納される。グローバルＬＢＡ３に対応するＬＵＴエントリには、デバイスＩＤ＝＃２、デバイスＬＢＡ＝６０が格納される。グローバルＬＢＡ４に対応するＬＵＴエントリには、デバイスＩＤ＝＃１、デバイスＬＢＡ＝２００が格納される。グローバルＬＢＡ５に対応するＬＵＴエントリには、デバイスＩＤ＝＃３、デバイスＬＢＡ＝５００が格納される。グローバルＬＢＡ６に対応するＬＵＴエントリには、デバイスＩＤ＝＃３、デバイスＬＢＡ＝６００が格納される。グローバルＬＢＡ７に対応するＬＵＴエントリには、デバイスＩＤ＝＃２、デバイスＬＢＡ＝１００が格納される。グローバルＬＢＡ１０に対応するＬＵＴエントリには、デバイスＩＤ＝＃２、デバイスＬＢＡ＝１０が格納される。グローバルＬＢＡ１１に対応するＬＵＴエントリには、デバイスＩＤ＝＃１、デバイスＬＢＡ＝９００が格納される。グローバルＬＢＡｎに対応するＬＵＴエントリには、デバイスＩＤ＝＃３、デバイスＬＢＡ＝７０が格納される。
【０１０２】
データ部が書き込まれていないグローバルＬＢＡに対応するＬＵＴエントリにおいては、あらかじめ定められた定数（ＮＵＬＬ）が格納されてもよい。
図１０は、グローバルＬＢＡそれぞれに対応するデータ部の各々を、除去されるべきことが決定されたフラッシュストレージデバイス３−１以外のフラッシュストレージデバイス３−２、３−３それぞれと追加のフラッシュストレージデバイス３−４の中から選択される任意の一つのフラッシュストレージデバイス内の任意の記憶位置（論理記憶位置）に書き込む処理を示す。
【０１０３】
追加のフラッシュストレージデバイス３−４の容量は、除去されるべきことが決定されたフラッシュストレージデバイス３−１の容量未満であってもよいし、フラッシュストレージデバイス３−１の容量と同じであってもよいし、フラッシュストレージデバイス３−１の容量よりも大きくてもよい。図１０においては、図示の簡単化のために、フラッシュストレージデバイス３−３がフラッシュストレージデバイス３−１と同じ容量を有しており、フラッシュストレージデバイス３−１〜３−４の各々にデバイスＬＢＡ範囲（ＬＢＡ０〜ＬＢＡ９９９）が割り当てられている場合が例示されている。
【０１０４】
追加のフラッシュストレージデバイス３−４がホスト２（ホスト側ストレージコントローラ４３）に接続されると、フラッシュストレージデバイス３−４に対応するエントリが共有フリーブロックリスト４３２Ａに追加される。そして、このフラッシュストレージデバイス３−４に対応するエントリに、フラッシュストレージデバイス３−４のＮＡＮＤ型フラッシュメモリ内の全てのフリーブロックのリストが追加される。共有フリーブロックリスト４３２Ａは、各フラッシュストレージデバイスに含まれるフリーブロックの数だけを管理してもよいし、各フラッシュストレージデバイスに含まれるフリーブロックそれぞれを識別するブロックアドレスを管理してもよい。
【０１０５】
上述したように、各グローバルＬＢＡに対応するデータ部は、フラッシュストレージデバイス３−２〜３−４を含むストレージシステム内の任意の論理記憶位置に書き込むことができる。図１０では、追加のフラッシュストレージデバイス３−４がホスト２に接続された後に、ホストソフトウェアからホスト側ストレージコントローラ４３に送信される幾つかのライト要求それぞれに関連付けられたデータ部それぞれが、フラッシュストレージデバイス３−４に書き込まれる場合が例示されている。これらライト要求は、既にデータ部が書き込まれているグローバルＬＢＡへの更新データ部の書き込み（上書き）を要求するライト要求と、データ部が書き込まれていないグローバルＬＢＡへの新規データ部の書き込みを要求するライト要求とが含まれ得る。
【０１０６】
図１０では、既にデータ部それぞれが書き込まれているグローバルＬＢＡ０〜グローバルＬＢＡ５への更新データ部それぞれの書き込み（上書き）を要求するライト要求それぞれがホストソフトウェアからホスト側ストレージコントローラ４３に送信された場合が例示されている。
【０１０７】
記憶位置管理部４３１がグローバルＬＢＡ０へのデータ部の書き込みを要求するライト要求をホストソフトウェアから受信した場合、記憶位置管理部４３１は、受信されたライト要求に関連付けられたデータ部を、例えば、フラッシュストレージデバイス３−４のＬＢＡ０に書き込む。このデータ部は、グローバルＬＢＡ０へ書き込むべき更新データ部である。グローバルＬＢＡ０に対応するローカルＬＢＡはフラッシュストレージデバイス３−１を指しているので、このデータ部は、フラッシュストレージデバイス３−１に既に書き込まれているデータ部に対応する更新データ部である。したがって、フラッシュストレージデバイス３−１に既に書き込まれているデータ部に対応する更新データ部が、フラッシュストレージデバイス３−４の論理記憶位置（ＬＢＡ０）に書き込まれる。そして、記憶位置管理部４３１は、この更新データ部が書き込まれた記憶位置（論理記憶位置）を示すアドレス（ローカルＬＢＡ）をこの更新データ部に対応するグローバル論理アドレス（グローバルＬＢＡ０）に関連付ける。つまり、記憶位置管理部４３１は、グローバルＬＢＡ０に対応するＬＵＴエントリを更新して、グローバルＬＢＡ０にマッピングされているローカルＬＢＡを、（デバイスＩＤ＝＃１、デバイスＬＢＡ＝１００）から、（デバイスＩＤ＝＃４、デバイスＬＢＡ＝０）に変更する。さらに、記憶位置管理部４３１は、デバイスＬＢＡ＝１００のデータ部を無効化するためのコマンド（トリムコマンド）をフラッシュストレージデバイス３−１に送信してもよい。
【０１０８】
なお、フラッシュストレージデバイス３−１はライト禁止モードであるため、フラッシュストレージデバイス３−１の空き領域を増加させる必要は無い、したがって、フラッシュストレージデバイス３−１に対しては、トリムコマンドは送信されてもよいし、送信されなくてもよい。
【０１０９】
記憶位置管理部４３１がグローバルＬＢＡ１へのデータ部の書き込みを要求するライト要求をホストソフトウェアから受信した場合、記憶位置管理部４３１は、受信されたライト要求に関連付けられたデータ部を、例えば、フラッシュストレージデバイス３−４のＬＢＡ５に書き込む。このデータ部は、グローバルＬＢＡ１へ書き込むべき更新データ部である。グローバルＬＢＡ１に対応するローカルＬＢＡはフラッシュストレージデバイス３−１を指しているので、このデータ部は、フラッシュストレージデバイス３−１に既に書き込まれているデータ部に対応する更新データ部である。したがって、フラッシュストレージデバイス３−１に既に書き込まれているデータ部に対応する更新データ部が、フラッシュストレージデバイス３−４のＬＢＡ５に書き込まれる。そして、記憶位置管理部４３１は、グローバルＬＢＡ１に対応するＬＵＴエントリを更新して、グローバルＬＢＡ１にマッピングされているローカルＬＢＡを、（デバイスＩＤ＝＃１、デバイスＬＢＡ＝１１０）から、（デバイスＩＤ＝＃４、デバイスＬＢＡ＝５）に変更する。さらに、記憶位置管理部４３１は、デバイスＬＢＡ＝１１０のデータ部を無効化するためのトリムコマンドをフラッシュストレージデバイス３−１に送信してもよい。
【０１１０】
記憶位置管理部４３１がグローバルＬＢＡ２へのデータ部の書き込みを要求するライト要求をホストソフトウェアから受信した場合、記憶位置管理部４３１は、受信されたライト要求に関連付けられたデータ部を、例えば、フラッシュストレージデバイス３−４のＬＢＡ１０に書き込む。このデータ部は、グローバルＬＢＡ２へ書き込むべき更新データ部である。グローバルＬＢＡ２に対応するローカルＬＢＡはフラッシュストレージデバイス３−２を指しているので、このデータ部は、フラッシュストレージデバイス３−２に既に書き込まれているデータ部に対応する更新データ部である。したがって、フラッシュストレージデバイス３−２に既に書き込まれているデータ部に対応する更新データ部が、フラッシュストレージデバイス３−４のＬＢＡ１０に書き込まれる。そして、記憶位置管理部４３１は、グローバルＬＢＡ２に対応するＬＵＴエントリを更新して、グローバルＬＢＡ２にマッピングされているローカルＬＢＡを、（デバイスＩＤ＝＃２、デバイスＬＢＡ＝５０）から、（デバイスＩＤ＝＃４、デバイスＬＢＡ＝１０）に変更する。さらに、記憶位置管理部４３１は、デバイスＬＢＡ＝５０のデータ部を無効化するためのトリムコマンドをフラッシュストレージデバイス３−２に送信する。これにより、フラッシュストレージデバイス３−２の空き領域を容易に増加させることができる。
【０１１１】
記憶位置管理部４３１がグローバルＬＢＡ３へのデータ部の書き込みを要求するライト要求をホストソフトウェアから受信した場合、記憶位置管理部４３１は、受信されたライト要求に関連付けられたデータ部を、例えば、フラッシュストレージデバイス３−４のＬＢＡ２０に書き込む。このデータ部は、グローバルＬＢＡ３へ書き込むべき更新データ部である。グローバルＬＢＡ３に対応するローカルＬＢＡはフラッシュストレージデバイス３−２を指しているので、このデータ部は、フラッシュストレージデバイス３−２に既に書き込まれているデータ部に対応する更新データ部である。したがって、フラッシュストレージデバイス３−２に既に書き込まれているデータ部に対応する更新データ部が、フラッシュストレージデバイス３−４のＬＢＡ２０に書き込まれる。そして、記憶位置管理部４３１は、グローバルＬＢＡ３に対応するＬＵＴエントリを更新して、グローバルＬＢＡ３にマッピングされているローカルＬＢＡを、（デバイスＩＤ＝＃２、デバイスＬＢＡ＝６０）から、（デバイスＩＤ＝＃４、デバイスＬＢＡ＝２０）に変更する。さらに、記憶位置管理部４３１は、デバイスＬＢＡ＝６０のデータ部を無効化するためのトリムコマンドをフラッシュストレージデバイス３−２に送信する。
【０１１２】
記憶位置管理部４３１がグローバルＬＢＡ４へのデータ部の書き込みを要求するライト要求をホストソフトウェアから受信した場合、記憶位置管理部４３１は、受信されたライト要求に関連付けられたデータ部を、例えば、フラッシュストレージデバイス３−４のＬＢＡ３０に書き込む。このデータ部は、グローバルＬＢＡ４へ書き込むべき更新データ部である。グローバルＬＢＡ４に対応するローカルＬＢＡはフラッシュストレージデバイス３−１を指しているので、このデータ部は、フラッシュストレージデバイス３−１に既に書き込まれているデータ部に対応する更新データ部である。したがって、フラッシュストレージデバイス３−１に既に書き込まれているデータ部に対応する更新データ部が、フラッシュストレージデバイス３−４のＬＢＡ３０に書き込まれる。そして、記憶位置管理部４３１は、グローバルＬＢＡ４に対応するＬＵＴエントリを更新して、グローバルＬＢＡ４にマッピングされているローカルＬＢＡを、（デバイスＩＤ＝＃１、デバイスＬＢＡ＝２００）から、（デバイスＩＤ＝＃４、デバイスＬＢＡ＝３０）に変更する。さらに、記憶位置管理部４３１は、デバイスＬＢＡ＝２００のデータ部を無効化するためのトリムコマンドをフラッシュストレージデバイス３−１に送信してもよい。
【０１１３】
記憶位置管理部４３１がグローバルＬＢＡ５へのデータ部の書き込みを要求するライト要求をホストソフトウェアから受信した場合、記憶位置管理部４３１は、受信されたライト要求に関連付けられたデータ部を、例えば、フラッシュストレージデバイス３−４のＬＢＡ４０に書き込む。このデータ部は、グローバルＬＢＡ５へ書き込むべき更新データ部である。グローバルＬＢＡ５に対応するローカルＬＢＡはフラッシュストレージデバイス３−３を指しているので、このデータ部は、フラッシュストレージデバイス３−３に既に書き込まれているデータ部に対応する更新データ部である。したがって、フラッシュストレージデバイス３−３に既に書き込まれているデータ部に対応する更新データ部が、フラッシュストレージデバイス３−４のＬＢＡ４０に書き込まれる。そして、記憶位置管理部４３１は、グローバルＬＢＡ５に対応するＬＵＴエントリを更新して、グローバルＬＢＡ５にマッピングされているローカルＬＢＡを、（デバイスＩＤ＝＃３、デバイスＬＢＡ＝５００）から、（デバイスＩＤ＝＃４、デバイスＬＢＡ＝４０）に変更する。さらに、記憶位置管理部４３１は、デバイスＬＢＡ＝５００のデータ部を無効化するためのトリムコマンドをフラッシュストレージデバイス３−３に送信してもよい。
【０１１４】
図１１は、フラッシュストレージデバイス３−１〜３−３に既に書き込まれているデータ部それぞれに対応する更新データ部の各々を、フラッシュストレージデバイス３−２〜３−４の中から選択される任意のフラッシュストレージデバイスに書き込む処理の例を示す。
【０１１５】
ここでは、最も大きなサイズの空き領域を有するフラッシュストレージデバイスにデータ部を優先的に書き込むというポリシーが使用される場合を想定する。
フラッシュストレージデバイス３−４がホスト２に追加接続された直後（Ｓｔａｒｔ）においては、例えば、フラッシュストレージデバイス３−１〜３−３の各々のＮＡＮＤ型フラッシュメモリはデータでほぼ満たされている。フラッシュストレージデバイス３−４のＮＡＮＤ型フラッシュメモリは大きなサイズの空き領域（多くのフリーブロック）を含む。
【０１１６】
ホスト側ストレージコントローラ４３は、グローバルＬＢＡをそれぞれ指定するライト要求それぞれをホスト２（ホストソフトウェア）から受信し、これらライト要求に関連付けられたデータ部それぞれをフラッシュストレージデバイス３−４のＮＡＮＤ型フラッシュメモリに書き込む。これにより、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれがフラッシュストレージデバイス３−４に書き込まれる。さらに、フラッシュストレージデバイス３−２〜３−３に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれもフラッシュストレージデバイス３−４に書き込まれる。
【０１１７】
フラッシュストレージデバイス３−４がデータでほぼ満たされた状態になると（中間状態：Ｍｉｄ（１））、フラッシュストレージデバイス３−１内に格納されている有効データの量が減少される。同様に、フラッシュストレージデバイス３−２、３−３内に格納されている有効データの量も減少される。これにより、フラッシュストレージデバイス３−２、３−３の各々に空き領域が確保される。ホスト側ストレージコントローラ４３は、グローバルＬＢＡをそれぞれ指定する後続のライト要求それぞれをホスト２（ホストソフトウェア）から受信し、これら後続のライト要求に関連付けられたデータ部それぞれをフラッシュストレージデバイス３−３のＮＡＮＤ型フラッシュメモリに書き込む。これにより、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれがフラッシュストレージデバイス３−３に書き込まれる。さらに、フラッシュストレージデバイス３−２、３−３、３−４に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれもフラッシュストレージデバイス３−３に書き込まれる。
【０１１８】
フラッシュストレージデバイス３−３がデータでほぼ満たされた状態になると（中間状態：Ｍｉｄ（２））、フラッシュストレージデバイス３−１内に格納されている有効データの量がさらに減少される。同様に、フラッシュストレージデバイス３−２内に格納されている有効データの量もさらに減少される。これにより、フラッシュストレージデバイス３−２に大きなサイズの空き領域が確保される。フラッシュストレージデバイス３−４内に格納されている有効データの量も減少される。ホスト側ストレージコントローラ４３は、グローバルＬＢＡをそれぞれ指定する後続のライト要求それぞれをホスト２（ホストソフトウェア）から受信し、これら後続のライト要求に関連付けられたデータ部それぞれをフラッシュストレージデバイス３−２のＮＡＮＤ型フラッシュメモリに書き込む。これにより、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれがフラッシュストレージデバイス３−２に書き込まれる。さらに、フラッシュストレージデバイス３−２、３−３、３−４に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれもフラッシュストレージデバイス３−２に書き込まれる。
【０１１９】
フラッシュストレージデバイス３−２がデータでほぼ満たされた状態になると（中間状態：Ｍｉｄ（３））、フラッシュストレージデバイス３−１内に格納されている有効データの量がさらに減少される。同様に、フラッシュストレージデバイス３−３内に格納されている有効データの量も減少される。同様に、フラッシュストレージデバイス３−４内に格納されている有効データの量も減少される。これにより、フラッシュストレージデバイス３−４に十分なサイズを有する空き領域が確保される。ホスト側ストレージコントローラ４３は、グローバルＬＢＡをそれぞれ指定する後続のライト要求それぞれをホスト２（ホストソフトウェア）から受信し、これら後続のライト要求に関連付けられたデータ部それぞれをフラッシュストレージデバイス３−４のＮＡＮＤ型フラッシュメモリに書き込む。これにより、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれがフラッシュストレージデバイス３−４に書き込まれる。さらに、フラッシュストレージデバイス３−２、３−３、３−４に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれもフラッシュストレージデバイス３−４に書き込まれる。
【０１２０】
フラッシュストレージデバイス３−４がデータでほぼ満たされた状態になると（中間状態：Ｍｉｄ（４））、フラッシュストレージデバイス３−１内に格納されている有効データの量がさらに減少される。同様に、フラッシュストレージデバイス３−２内に格納されている有効データの量も減少される。同様に、フラッシュストレージデバイス３−３内に格納されている有効データの量も減少される。これにより、フラッシュストレージデバイス３−３に十分なサイズを有する空き領域が確保される。ホスト側ストレージコントローラ４３は、グローバルＬＢＡをそれぞれ指定する後続のライト要求それぞれをホスト２（ホストソフトウェア）から受信し、これら後続のライト要求に関連付けられたデータ部それぞれをフラッシュストレージデバイス３−３のＮＡＮＤ型フラッシュメモリに書き込む。これにより、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれがフラッシュストレージデバイス３−３に書き込まれる。さらに、フラッシュストレージデバイス３−２、３−３、３−４に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれもフラッシュストレージデバイス３−３に書き込まれる。
【０１２１】
フラッシュストレージデバイス３−３がデータでほぼ満たされた状態になると（中間状態：Ｍｉｄ（５））、フラッシュストレージデバイス３−１内に格納されている有効データの量がさらに減少される。同様に、フラッシュストレージデバイス３−２内に格納されている有効データの量も減少される。これにより、フラッシュストレージデバイス３−２に空き領域が確保される。同様に、フラッシュストレージデバイス３−４内に格納されている有効データの量も減少される。ホスト側ストレージコントローラ４３は、グローバルＬＢＡをそれぞれ指定する後続のライト要求それぞれをホスト２（ホストソフトウェア）から受信し、これら後続のライト要求に関連付けられたデータ部それぞれをフラッシュストレージデバイス３−２のＮＡＮＤ型フラッシュメモリに書き込む。これにより、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれがフラッシュストレージデバイス３−２に書き込まれる。さらに、フラッシュストレージデバイス３−２、３−３、３−４に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれもフラッシュストレージデバイス３−２に書き込まれる。
【０１２２】
このように、フラッシュストレージデバイス３−４へのデータの書き込み、フラッシュストレージデバイス３−３へのデータ書き込み、フラッシュストレージデバイス３−２へのデータ書き込み、フラッシュストレージデバイス３−４へのデータの書き込み、…が繰り返し実行されてもよい。フラッシュストレージデバイス３−１に既に書き込まれている全データが更新されると、フラッシュストレージデバイス３−１に格納されている有効データ量がゼロになり、フラッシュストレージデバイス３−１はホスト２から除去可能となる。
【０１２３】
このように、本実施形態では、ホスト側ストレージコントローラ４３は、ホスト２（ホストソフトウェア）から受信されるライト要求それぞれに関連付けられたデータ部の各々を、フラッシュストレージデバイス３−２〜３−４内の任意のフラッシュストレージデバイスに書き込む。これにより、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部の各々とフラッシュストレージデバイス３−２、３−３に既に書き込まれているデータ部にそれぞれに対応する更新データ部の各々とをフラッシュストレージデバイス３−４に書き込む処理が実行可能となる。さらに、この書き込み処理により、フラッシュストレージデバイス３−２〜３−３に空き領域を確保することができる。よって、この空き領域を利用することが可能となるので、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する後続の更新データ部の各々とフラッシュストレージデバイス３−２、３−３に既に書き込まれているデータ部にそれぞれに対応する後続の更新データ部の各々とを、フラッシュストレージデバイス３−２、３−３に書き込む処理が実行可能となる。
【０１２４】
図１２は、フラッシュストレージデバイス３−１〜３−３に既に書き込まれているデータ部それぞれに対応する更新データ部の各々を、フラッシュストレージデバイス３−２〜３−４の中から選択される任意の一つのストレージデバイスに書き込む処理の例と、フラッシュストレージデバイス３−１に格納されている有効データ量が許容量にまで減少された場合に、この有効データをフラッシュストレージデバイス３−２〜３−４の中から選択される任意の一つにコピーする処理の例を示す。
【０１２５】
図１２のＳｔａｒｔからＭｉｄ（４）までの期間に実行される動作は、図１１で説明したＳｔａｒｔからＭｉｄ（４）までの期間に実行される動作と同じである。図１２のＭｉｄ（１）、Ｍｉｄ（２）、Ｍｉｄ（３）の各時点では、フラッシュストレージデバイス３−１に格納されている有効データ量は許容量よりも多い。Ｍｉｄ（４）の時点で、フラッシュストレージデバイス３−１に格納されている有効データ量は許容量にまで減少される。この場合、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１に格納されている有効データを、フラッシュストレージデバイス３−２〜３−４の中から選択される任意の一つにコピーする。この場合、フラッシュストレージデバイス３−１に格納されている有効データ全体がフラッシュストレージデバイス３−２〜３−４の中から選択される一つのフラッシュストレージデバイスにコピーされてもよいし、有効データの一部がフラッシュストレージデバイス３−２〜３−４の中から選択される一つのフラッシュストレージデバイスにコピーされ、有効データの残り部がフラッシュストレージデバイス３−２〜３−４の中から選択される別のフラッシュストレージデバイスにコピーされてもよい。
【０１２６】
このように、フラッシュストレージデバイス３−１に格納されている有効データ量が許容量にまで減少された場合に、この有効データをフラッシュストレージデバイス３−２〜３−４の中から選択される任意の一つにコピーする処理を実行することにより、ストレージシステムに書き込むことが必要なデータ量の増加は最小限にとどめられる。したがって、ホスト２から見たストレージシステムの性能低下を抑制することができる。
【０１２７】
図１３は、フラッシュストレージデバイス３−１〜３−３に既に書き込まれているデータ部それぞれに対応する更新データ部の各々を、フラッシュストレージデバイス３−２〜３−４の中から選択される任意の一つのストレージデバイスに書き込む処理の例を示す。
【０１２８】
ここでは、フラッシュストレージデバイス３−４がホスト２に追加接続された直後（Ｓｔａｒｔ）においては、フラッシュストレージデバイス３−３にあるサイズ以上の空き領域が存在している場合が想定されている。
この場合、ホスト側ストレージコントローラ４３は、ホスト２（ホストソフトウェア）から受信されるライト要求それぞれに関連付けられたデータ部それぞれをフラッシュストレージデバイス３−３のＮＡＮＤ型フラッシュメモリに書き込んでもよい。これにより、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれがフラッシュストレージデバイス３−３に書き込まれる。さらに、フラッシュストレージデバイス３−２〜３−３に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれもフラッシュストレージデバイス３−３に書き込まれる。
【０１２９】
フラッシュストレージデバイス３−３がデータでほぼ満たされた状態になると（中間状態：Ｍｉｄ（１））、フラッシュストレージデバイス３−１内に格納されている有効データの量が減少される。同様に、フラッシュストレージデバイス３−２内に格納されている有効データの量も減少される。ホスト側ストレージコントローラ４３は、グローバルＬＢＡをそれぞれ指定する後続のライト要求それぞれをホスト２（ホストソフトウェア）から受信し、これら後続のライト要求に関連付けられたデータ部それぞれをフラッシュストレージデバイス３−４のＮＡＮＤ型フラッシュメモリに書き込む。これにより、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれがフラッシュストレージデバイス３−４に書き込まれる。さらに、フラッシュストレージデバイス３−２、３−３に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれもフラッシュストレージデバイス３−４に書き込まれる。
【０１３０】
フラッシュストレージデバイス３−４がデータでほぼ満たされた状態になると（中間状態：Ｍｉｄ（２））、フラッシュストレージデバイス３−１内に格納されている有効データの量がさらに減少される。同様に、フラッシュストレージデバイス３−２内に格納されている有効データの量もさらに減少される。これにより、フラッシュストレージデバイス３−２に大きなサイズの空き領域が確保される。同様に、フラッシュストレージデバイス３−３内に格納されている有効データの量も減少される。ホスト側ストレージコントローラ４３は、グローバルＬＢＡをそれぞれ指定する後続のライト要求それぞれをホスト２（ホストソフトウェア）から受信し、これら後続のライト要求に関連付けられたデータ部それぞれをフラッシュストレージデバイス３−２のＮＡＮＤ型フラッシュメモリに書き込む。これにより、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれがフラッシュストレージデバイス３−２に書き込まれる。さらに、フラッシュストレージデバイス３−２、３−３、３−４に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれもフラッシュストレージデバイス３−２に書き込まれる。
【０１３１】
フラッシュストレージデバイス３−２がデータでほぼ満たされた状態になると（中間状態：Ｍｉｄ（３））、フラッシュストレージデバイス３−１に格納されている有効データ量は許容量にまで減少される。この場合、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１に格納されている有効データを、フラッシュストレージデバイス３−２〜３−４の中から選択される任意の一つにコピーする。この場合、フラッシュストレージデバイス３−１に格納されている有効データ全体がフラッシュストレージデバイス３−２〜３−４の中から選択される一つのフラッシュストレージデバイスにコピーされてもよいし、有効データの一部がフラッシュストレージデバイス３−２〜３−４の中から選択される一つのフラッシュストレージデバイスにコピーされ、有効データの残り部がフラッシュストレージデバイス３−２〜３−４の中から選択される別のフラッシュストレージデバイスにコピーされてもよい。
【０１３２】
図１４は、フラッシュストレージデバイス３−１〜３−３に既に書き込まれているデータ部それぞれに対応する更新データ部の各々をフラッシュストレージデバイス３−２〜３−４の中から選択される任意の一つのストレージデバイスに書き込む処理の例と、フラッシュストレージデバイス３−１のリフレッシュ動作によって検出されるリフレッシュ対象の各ブロック内の有効データを他のストレージデバイスにコピーする処理の例を示す。
【０１３３】
フラッシュストレージデバイス３−４がホスト２に追加接続された直後（Ｓｔａｒｔ）において、ホスト側ストレージコントローラ４３は、グローバルＬＢＡをそれぞれ指定するライト要求それぞれをホスト２（ホストソフトウェア）から受信し、これらライト要求に関連付けられたデータ部それぞれをフラッシュストレージデバイス３−４のＮＡＮＤ型フラッシュメモリに書き込む。これにより、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれがフラッシュストレージデバイス３−４に書き込まれる。さらに、フラッシュストレージデバイス３−２〜３−３に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれもフラッシュストレージデバイス３−４に書き込まれる。また、ホスト側ストレージコントローラ４３がフラッシュストレージデバイス３−１からリフレッシュ要求を受信した場合、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１によって検出されるリフレッシュ対象のブロック内の有効データをフラッシュストレージデバイス３−４のＮＡＮＤ型フラッシュメモリに書き込む。
【０１３４】
フラッシュストレージデバイス３−４がデータでほぼ満たされた状態になると（中間状態：Ｍｉｄ（１））、フラッシュストレージデバイス３−１内に格納されている有効データの量が減少される。同様に、フラッシュストレージデバイス３−２、３−３内に格納されている有効データの量も減少される。これにより、フラッシュストレージデバイス３−２、３−３の各々に空き領域が確保される。ホスト側ストレージコントローラ４３は、グローバルＬＢＡをそれぞれ指定する後続のライト要求それぞれをホスト２（ホストソフトウェア）から受信し、これら後続のライト要求に関連付けられたデータ部それぞれをフラッシュストレージデバイス３−３のＮＡＮＤ型フラッシュメモリに書き込む。これにより、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれがフラッシュストレージデバイス３−３に書き込まれる。さらに、フラッシュストレージデバイス３−２、３−３、３−４に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれもフラッシュストレージデバイス３−３に書き込まれる。また、ホスト側ストレージコントローラ４３がフラッシュストレージデバイス３−１からリフレッシュ要求を受信した場合、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１によって検出されるリフレッシュ対象のブロック内の有効データをフラッシュストレージデバイス３−３のＮＡＮＤ型フラッシュメモリに書き込む。
【０１３５】
フラッシュストレージデバイス３−３がデータでほぼ満たされた状態になると（中間状態：Ｍｉｄ（２））、フラッシュストレージデバイス３−１内に格納されている有効データの量がさらに減少される。同様に、フラッシュストレージデバイス３−２内に格納されている有効データの量もさらに減少される。これにより、フラッシュストレージデバイス３−２に大きなサイズの空き領域が確保される。フラッシュストレージデバイス３−４内に格納されている有効データの量も減少される。ホスト側ストレージコントローラ４３は、グローバルＬＢＡをそれぞれ指定する後続のライト要求それぞれをホスト２（ホストソフトウェア）から受信し、これら後続のライト要求に関連付けられたデータ部それぞれをフラッシュストレージデバイス３−２のＮＡＮＤ型フラッシュメモリに書き込む。これにより、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれがフラッシュストレージデバイス３−２に書き込まれる。さらに、フラッシュストレージデバイス３−２、３−３、３−４に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれもフラッシュストレージデバイス３−２に書き込まれる。また、ホスト側ストレージコントローラ４３がフラッシュストレージデバイス３−１からリフレッシュ要求を受信した場合、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１によって検出されるリフレッシュ対象のブロック内の有効データをフラッシュストレージデバイス３−２のＮＡＮＤ型フラッシュメモリに書き込む。
【０１３６】
フラッシュストレージデバイス３−２がデータでほぼ満たされた状態になると（中間状態：Ｍｉｄ（３））、フラッシュストレージデバイス３−１内に格納されている有効データの量がさらに減少される。同様に、フラッシュストレージデバイス３−３内に格納されている有効データの量も減少される。同様に、フラッシュストレージデバイス３−４内に格納されている有効データの量も減少される。これにより、フラッシュストレージデバイス３−４に十分なサイズを有する空き領域が確保される。ホスト側ストレージコントローラ４３は、グローバルＬＢＡをそれぞれ指定する後続のライト要求それぞれをホスト２（ホストソフトウェア）から受信し、これら後続のライト要求に関連付けられたデータ部それぞれをフラッシュストレージデバイス３−４のＮＡＮＤ型フラッシュメモリに書き込む。これにより、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれがフラッシュストレージデバイス３−４に書き込まれる。さらに、フラッシュストレージデバイス３−２、３−３、３−４に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれもフラッシュストレージデバイス３−４に書き込まれる。また、ホスト側ストレージコントローラ４３がフラッシュストレージデバイス３−１からリフレッシュ要求を受信した場合、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１によって検出されるリフレッシュ対象のブロック内の有効データをフラッシュストレージデバイス３−４のＮＡＮＤ型フラッシュメモリに書き込む。
【０１３７】
フラッシュストレージデバイス３−４がデータでほぼ満たされた状態になると（中間状態：Ｍｉｄ（４））、フラッシュストレージデバイス３−１内に格納されている有効データの量がさらに減少される。同様に、フラッシュストレージデバイス３−２内に格納されている有効データの量も減少される。同様に、フラッシュストレージデバイス３−３内に格納されている有効データの量も減少される。これにより、フラッシュストレージデバイス３−３に十分なサイズを有する空き領域が確保される。ホスト側ストレージコントローラ４３は、グローバルＬＢＡをそれぞれ指定する後続のライト要求それぞれをホスト２（ホストソフトウェア）から受信し、これら後続のライト要求に関連付けられたデータ部それぞれをフラッシュストレージデバイス３−３のＮＡＮＤ型フラッシュメモリに書き込む。これにより、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれがフラッシュストレージデバイス３−３に書き込まれる。さらに、フラッシュストレージデバイス３−２、３−３、３−４に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれもフラッシュストレージデバイス３−３に書き込まれる。また、ホスト側ストレージコントローラ４３がフラッシュストレージデバイス３−１からリフレッシュ要求を受信した場合、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１によって検出されるリフレッシュ対象のブロック内の有効データをフラッシュストレージデバイス３−２のＮＡＮＤ型フラッシュメモリに書き込む。
【０１３８】
フラッシュストレージデバイス３−３がデータでほぼ満たされた状態になると（中間状態：Ｍｉｄ（５））、フラッシュストレージデバイス３−１内に格納されている有効データの量がさらに減少される。同様に、フラッシュストレージデバイス３−２内に格納されている有効データの量も減少される。これにより、フラッシュストレージデバイス３−２に空き領域が確保される。同様に、フラッシュストレージデバイス３−４内に格納されている有効データの量も減少される。ホスト側ストレージコントローラ４３は、グローバルＬＢＡをそれぞれ指定する後続のライト要求それぞれをホスト２（ホストソフトウェア）から受信し、これら後続のライト要求に関連付けられたデータ部それぞれをフラッシュストレージデバイス３−２のＮＡＮＤ型フラッシュメモリに書き込む。これにより、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれがフラッシュストレージデバイス３−２に書き込まれる。さらに、フラッシュストレージデバイス３−２、３−３、３−４に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれもフラッシュストレージデバイス３−２に書き込まれる。また、ホスト側ストレージコントローラ４３がフラッシュストレージデバイス３−１からリフレッシュ要求を受信した場合、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１によって検出されるリフレッシュ対象のブロック内の有効データをフラッシュストレージデバイス３−２のＮＡＮＤ型フラッシュメモリに書き込む。
【０１３９】
このように、図１４では、ライト要求それぞれに関連付けられたデータ部のみならず、フラッシュストレージデバイス３−１に含まれるリフレッシュ対象のブロック内の有効データも、フラッシュストレージデバイス３−２〜３−４に書き込まれる。したがって、フラッシュストレージデバイス３−１が劣化している状況においては、フラッシュストレージデバイス３−１の一つのリフレッシュ期間が終了するタイミング、またはフラッシュストレージデバイス３−１に既に書き込まれている全データの更新が完了されるタイミングのいずれか早い方のタイミングで、フラッシュストレージデバイス３−１に格納されている有効データ量がゼロになり、フラッシュストレージデバイス３−１はホスト２から除去可能となる。
【０１４０】
なお、図１４の動作に、図１２または図１３で説明したように、フラッシュストレージデバイス３−１に格納されている有効データ量が許容量にまで減少された場合にこの有効データをフラッシュストレージデバイス３−２〜３−４の中から選択される任意の一つにコピーする処理を適用してもよい。
【０１４１】
図１５のフローチャートは、ホスト側ストレージコントローラ４３によって実行される書き込み／コピー／読み出し処理の手順を示す。
ホスト側ストレージコントローラ４３は、例えば、フラッシュストレージデバイス３−１〜３−３の各々に含まれる不良ブロックの数を監視し、不良ブロックの数がある閾値を超えたフラッシュストレージデバイスを除去されるべきフラッシュストレージデバイスとして検出する（ステップＳ２１）。除去されるべきフラッシュストレージデバイスが検出された場合、ホスト側ストレージコントローラ４３は、オペレータにフラッシュストレージデバイスの追加を促してもよい（ステップＳ２２）。
【０１４２】
フラッシュストレージデバイス３−４がホスト側ストレージコントローラ４３に接続されると（ステップＳ２３のＹＥＳ）、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−４の全フリーブロックを共有フリーブロックリスト４３２Ａに追加すると共に（ステップＳ２４）、フラッシュストレージデバイス３−１のフリーブロックそれぞれを共有フリーブロックリスト４３２Ａから削除する（ステップＳ２５）。ステップＳ２５では、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１の動作モードをライト禁止モードに設定する処理も実行する。
【０１４３】
ホスト側ストレージコントローラ４３が特定のグローバルＬＢＡを指定するライト要求をホスト２（ホストソフトウェア）から受信した場合（ステップＳ２６のＹＥＳ）、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−２〜３−４の中から書き込み先フラッシュストレージデバイスを決定し、さらに書き込み先フラッシュストレージデバイス内の書き込み先デバイスＬＢＡを決定する。ここで、書き込み先フラッシュストレージデバイスは、受信されたライト要求に関連付けられたデータ部が書き込まれるべきフラッシュストレージデバイスである。また、書き込み先フラッシュストレージデバイス内の書き込み先デバイスＬＢＡは、このデータ部が書き込まれるべき論理記憶位置を示す。
【０１４４】
そして、ホスト側ストレージコントローラ４３は、このデータ部を書き込むためのライトコマンドを書き込み先フラッシュストレージデバイスに送信することによって、このデータ部をフラッシュストレージデバイス３−２〜３−４内の任意のフラッシュストレージデバイスに書き込む（ステップＳ２７）。このライトコマンドは、上述の特定のグローバルＬＢＡ、書き込み先デバイスＬＢＡ、およびデータ長を含む。
【０１４５】
ホスト側ストレージコントローラ４３は、ＬＵＴ４３１Ａを更新し、上述の特定のグローバルＬＢＡに新たなローカルＬＢＡ（書き込み先フラッシュストレージデバイスの識別子、書き込み先デバイスＬＢＡ）を関連付ける（ステップＳ２８）。さらに、ホスト側ストレージコントローラ４３は、上述の特定のグローバルＬＢＡに関連付けられていた旧ローカルＬＢＡによって指されるフラッシュストレージデバイスに対して、この旧ローカルＬＢＡによって示されるデバイスＬＢＡを含むトリムコマンドを送信してもよい。
【０１４６】
ホスト側ストレージコントローラ４３は、ＬＵＴ４３１Ａを参照して、フラッシュストレージデバイス３−１に残り有効データが存在するか否かを判定する（ステップＳ２９）。
フラッシュストレージデバイス３−１に残り有効データが存在するならば（ステップＳ２９のＹＥＳ）、ホスト側ストレージコントローラ４３の処理はステップＳ２６に戻る。
【０１４７】
ホスト側ストレージコントローラ４３がフラッシュストレージデバイス３−１からリフレッシュ要求を受信したならば（ステップＳ３０のＹＥＳ）、ホスト側ストレージコントローラ４３は、リフレッシュ対象のブロック内の有効データを示す情報をフラッシュストレージデバイス３−１から受信する（ステップＳ３１）。このリフレッシュ対象のブロック内の有効データを示す情報は、この有効データに対応するグローバルＬＢＡを含む。
【０１４８】
ホスト側ストレージコントローラ４３は、このグローバルＬＢＡを使用してＬＵＴ４３１Ａを参照して、このグローバルＬＢＡに関連付けられている現在のローカルＬＢＡがフラッシュストレージデバイス３−１を指しているか否かを判定してもよい。
もしこのグローバルＬＢＡに関連付けられている現在のローカルＬＢＡがフラッシュストレージデバイス３−１を指していないならば、このグローバルＬＢＡに対応する更新データが既に他のフラッシュストレージデバイスに書き込まれているので、ホスト側ストレージコントローラ４３は、この有効データを他のフラッシュストレージデバイスにコピーする処理を実行しない。
【０１４９】
もしこのグローバルＬＢＡに関連付けられている現在のローカルＬＢＡがフラッシュストレージデバイス３−１を指しているならば、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−２〜３−４の中からコピー先フラッシュストレージデバイスを決定し、さらにコピー先フラッシュストレージデバイス内のコピー先デバイスＬＢＡを決定する。
【０１５０】
次いで、ホスト側ストレージコントローラ４３は、このグローバルＬＢＡに関連付けられている現在のローカルＬＢＡ内のデバイスＬＢＡを含むリードコマンドをフラッシュストレージデバイス３−１に送信することによって、この有効データをフラッシュストレージデバイス３−１から読み出す。この有効データはフラッシュストレージデバイス３−１によってエラー訂正された後の有効データである。そして、ホスト側ストレージコントローラ４３は、この読み出された有効データを書き込むためのライトコマンドをコピー先フラッシュストレージデバイスに送信する。これにより、ホスト側ストレージコントローラ４３は、この有効データをフラッシュストレージデバイス３−２〜３−４内の任意のフラッシュストレージデバイスに書き込む（コピー）することができる（ステップＳ３２）。このライトコマンドは、上述の特定のグローバルＬＢＡ、コピー先デバイスＬＢＡ、およびデータ長を含む。
【０１５１】
ホスト側ストレージコントローラ４３は、ＬＵＴ４３１Ａを更新し、上述の特定のグローバルＬＢＡに新たなローカルＬＢＡ（コピー先フラッシュストレージデバイスの識別子、コピー先デバイスＬＢＡ）を関連付ける（ステップＳ３３）。
ホスト側ストレージコントローラ４３は、ＬＵＴ４３１Ａを参照して、フラッシュストレージデバイス３−１に残り有効データが存在するか否かを判定する（ステップＳ２９）。
【０１５２】
フラッシュストレージデバイス３−１に残り有効データが存在するならば（ステップＳ２９のＹＥＳ）、ホスト側ストレージコントローラ４３の処理はステップＳ２６に戻る。
ホスト側ストレージコントローラ４３が特定のグローバルＬＢＡを指定するリード要求をホスト２（ホストソフトウェア）から受信した場合（ステップＳ３４のＹＥＳ）、ホスト側ストレージコントローラ４３は、リードすべきデータが格納されているフラッシュストレージデバイスからこのリードすべきデータを読み出す（ステップＳ３５）。ステップＳ３５では、ホスト側ストレージコントローラ４３は、まず、この特定のグローバルＬＢＡに関連付けられているローカルＬＢＡ（または物理アドレス）をＬＵＴ４３１Ａから取得する。そして、ホスト側ストレージコントローラ４３は、取得されたローカルＬＢＡに含まれるデバイスＬＢＡを含むリードコマンドを、取得されたローカルＬＢＡに含まれるデバイスＩＤによって示されるフラッシュストレージデバイスに送信する。
【０１５３】
フラッシュストレージデバイス３−１に残り有効データが存在しないならば（ステップＳ２９のＮＯ）、ホスト側ストレージコントローラ４３の処理はステップＳ３６に進む。
ステップＳ３６では、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１のＮＡＮＤ型フラッシュメモリ内の各ブロックの消去動作を指示する消去コマンドをフラッシュストレージデバイス３−１に送出してもよい。さらに、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１内の消去動作が実行された各ブロックに、予め指定されたデータ（ダミーデータ）を書き込んでもよい。
【０１５４】
そして、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１が除去可能であることを示すように構成されたインジケータ（フラッシュストレージデバイス３−１が取り付けられているスロットに配置されたＬＥＤ５２）を駆動して、フラッシュストレージデバイス３−１が除去可能であることをオペレータに通知する（ステップＳ３７）。オペレータがフラッシュストレージデバイス３−１をスロット５１から除去すると、このスロット５１は追加のフラッシュストレージデバイスが接続可能な空きスロットとなる。
【０１５５】
図１６のフローチャートは、ホスト側ストレージコントローラ４３によって実行される書き込み／コピー／読み出し処理の別の手順を示す。
図１６のフローチャートによって示される手順は、図１５のフローチャートで示される手順に比し、図１５のステップＳ２９の処理の代わりにステップＳ１００の処理が実行される点と、ステップＳ１００の処理とステップＳ３６の処理との間にステップＳ１０１の処理が実行される点のみが異なっており、他の部分は図１５のフローチャートで示される手順と同じである。
【０１５６】
ステップＳ１００では、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１の残り有効データ量が上述の許容量に対応する閾値Ｔｈ１未満であるか否かを判定する。
フラッシュストレージデバイス３−１の残り有効データ量が閾値Ｔｈ１未満でないならば（ステップＳ１００のＮＯ）、ホスト側ストレージコントローラ４３の処理はステップＳ２６に戻る。
【０１５７】
フラッシュストレージデバイス３−１の残り有効データ量が閾値Ｔｈ１未満であるならば（ステップＳ１００のＹＥＳ）、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−１の残り有効データを、フラッシュストレージデバイス３−２〜３−４の中から選択されるフラッシュストレージデバイスにコピーする（ステップＳ１０１）。ステップＳ１０１では、ホスト側ストレージコントローラ４３は、さらに、ＬＵＴ４３１Ａを更新して、残り有効データに対応するグローバルＬＢＡにコピー先ローカルＬＢＡ（コピー先フラッシュストレージデバイスの識別子、コピー先デバイスＬＢＡ）を関連付ける。
【０１５８】
なお、ホスト側ストレージコントローラ４３は、残り有効データに対応する全てのグローバルＬＢＡを示す情報をフラッシュストレージデバイス３−１から受信してもよい。この場合、ステップＳ１０１では、受信されたグローバルＬＢＡの各々について、ホスト側ストレージコントローラ４３は、以下の処理を実行してもよい。
【０１５９】
ホスト側ストレージコントローラ４３は、受信されたグローバルＬＢＡから処理対象のグローバルＬＢＡを選択し、選択したグローバルＬＢＡを使用してＬＵＴ４３１Ａを参照し、この選択したグローバルＬＢＡに関連付けられている現在のローカルＬＢＡがフラッシュストレージデバイス３−１を指しているか否かを判定してもよい。
【０１６０】
もしこの選択したグローバルＬＢＡに関連付けられている現在のローカルＬＢＡがフラッシュストレージデバイス３−１を指していないならば、この選択したグローバルＬＢＡに対応する更新データが既に他のフラッシュストレージデバイスに書き込まれているので、ホスト側ストレージコントローラ４３は、この選択したグローバルＬＢＡに対応する有効データを他のフラッシュストレージデバイスにコピーする処理を実行しない。
【０１６１】
もしこの選択したグローバルＬＢＡに関連付けられている現在のローカルＬＢＡがフラッシュストレージデバイス３−１を指しているならば、ホスト側ストレージコントローラ４３は、フラッシュストレージデバイス３−２〜３−４の中からコピー先フラッシュストレージデバイスを決定し、さらにコピー先フラッシュストレージデバイス内のコピー先デバイスＬＢＡを決定する。
【０１６２】
次いで、ホスト側ストレージコントローラ４３は、この選択したグローバルＬＢＡに関連付けられている現在のローカルＬＢＡ内のデバイスＬＢＡを含むリードコマンドをフラッシュストレージデバイス３−１に送信することによって、この選択したグローバルＬＢＡに対応する有効データをフラッシュストレージデバイス３−１から読み出す。そして、ホスト側ストレージコントローラ４３は、この読み出された有効データを書き込むためのライトコマンドをコピー先フラッシュストレージデバイスに送信することによって、この有効データをフラッシュストレージデバイス３−２〜３−４内の任意のフラッシュストレージデバイスにコピーする。このライトコマンドは、上述の特定のグローバルＬＢＡ、書き込み先デバイスＬＢＡ、およびデータ長を含む。
【０１６３】
ホスト側ストレージコントローラ４３は、ＬＵＴ４３１Ａを更新し、上述の選択したグローバルＬＢＡに新たなローカルＬＢＡ（コピー先フラッシュストレージデバイスの識別子、コピー先デバイスＬＢＡ）を関連付ける。
図１７は、ホスト側ストレージコントローラ４３の別の構成例を示す。
【０１６４】
図１７においては、ホスト側ストレージコントローラ４３は、図８の記憶位置管理部４３１の代わりに、記憶位置管理部５３１を含む。
記憶位置管理部５３１は、ＬＵＴ５３１Ａを使用して、第１の論理アドレス空間に属する論理アドレス（グローバルＬＢＡ）それぞれとグローバルＬＢＡそれぞれに対応するデータ部それぞれが書き込まれたフラッシュストレージデバイス３−１〜３−３（あるいはフラッシュストレージデバイス３−１〜３−４）内の物理記憶位置を示す物理アドレスそれぞれとの間のマッピングを管理する。
【０１６５】
すなわち、ＬＵＴ５３１Ａは、グローバルＬＢＡ（グローバルＬＢＡ０〜グローバルＬＢＡｎ）それぞれに対応する複数のエントリを含む。あるグローバルＬＢＡに対応するエントリは、このグローバルＬＢＡに対応するデータ部が格納されている特定のフラッシュストレージデバイス内の特定の物理記憶位置を示す物理アドレス（ＰＢＡ）を格納する。各ＰＢＡは、デバイスＩＤとデバイス物理アドレス（デバイスＰＢＡ）とを含む。デバイスＩＤは、あるフラッシュストレージデバイスの識別子である。デバイス物理アドレス（デバイスＰＢＡ）は、このフラッシュストレージデバイス内のＮＡＮＤ型フラッシュメモリの一つの物理記憶位置を示す物理アドレスである。
【０１６６】
ホスト側ストレージコントローラ４３にフラッシュストレージデバイス３−１〜３−３が接続されている状態においては、記憶位置管理部５３１は、グローバルＬＢＡそれぞれに対応するデータ部の各々を、フラッシュストレージデバイス３−１〜３−３の中から選択される任意の一つのフラッシュストレージデバイス内の任意の物理記憶位置に書き込む。より詳しくは、記憶位置管理部５３１がある特定のグローバルＬＢＡとある特定のデータ長とを含むライト要求をホストソフトウェア（例えばストレージ管理プログラム３０３）から受信した場合、記憶位置管理部５３１は、この特定のグローバルＬＢＡに対応するライトデータ部が書き込まれるべきフラッシュストレージデバイスをフラッシュストレージデバイス３−１〜３−３の中から選択し、且つこの特定のグローバルＬＢＡに対応するライトデータ部が書き込まれるべき物理記憶位置を決定する。記憶位置管理部５３１は、このデータ部を書き込むためのライトコマンドを、選択されたフラッシュストレージデバイスに送信する。このライトコマンドは、決定された物理アドレスと、この特定のデータ長とを含んでもよい。さらに、このライトコマンドは、この特定のグローバルＬＢＡを含んでいてもよい。そして、記憶位置管理部５３１は、ＬＵＴ４３１Ａを更新して、この特定のグローバルＬＢＡに、このデータ部が書き込まれた物理記憶位置を示す物理アドレス（デバイスＩＤ、デバイスＰＢＡ）を関連付ける。
【０１６７】
記憶位置管理部５３１は、データ部それぞれが書き込まれるべき書き込み先ブロックを共有フリーブロックリスト４３２Ａによって管理される共有フリーブロックの集合から選択することによって、グローバルＬＢＡそれぞれに対応するデータ部の各々を、フラッシュストレージデバイス３−１〜３−３の中から選択される任意の一つのストレージデバイス内の任意の物理記憶位置に書き込んでもよい。共有フリーブロックの集合から選択されたフリーブロックは、書き込み先ブロックとして割り当てられる。この書き込み先ブロックを含むフラッシュストレージデバイスが、データ部それぞれが書き込まれるべきフラッシュストレージデバイスとして選択されてもよい。各フラッシュストレージデバイスにおいて、あるブロック内の全てのデータが上書き／アンマップ、ＧＣ等によって無効化されると、このブロックは共有フリーブロックリスト４３２Ａに返却される。返却されたブロックは共有フリーブロックとして再利用される。
【０１６８】
次に、フラッシュストレージデバイス３−１〜３−３のうち、例えば、フラッシュストレージデバイス３−１の不良ブロック数の増加等によってフラッシュストレージデバイス３−１が除去されるべきことが決定され、且つフラッシュストレージデバイス３−４がホスト側ストレージコントローラ４３に接続された場合を想定する。
【０１６９】
記憶位置管理部５３１は、フラッシュストレージデバイス３−１をデータの書き込みが禁止されデータの読み出しが許可される上述のライト禁止モードで制御する。さらに、記憶位置管理部５３１は、グローバルＬＢＡそれぞれに対応するデータ部の各々を、フラッシュストレージデバイス３−２〜３−４の中から選択される任意の一つのフラッシュストレージデバイス内の任意の物理記憶位置に書き込むことによって、除去されるべきフラッシュストレージデバイス３−１内に格納されている有効データの量を減らす書き込み処理を実行する。この場合、フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部の各々は、フラッシュストレージデバイス３−２、３−３、３−４の中から選択される任意の一つのフラッシュストレージデバイス内の空き領域に書き込まれる。同様に、フラッシュストレージデバイス３−２に既に書き込まれているデータ部それぞれに対応する更新データ部の各々も、フラッシュストレージデバイス３−２、３−３、３−４の中から選択される任意の一つのフラッシュストレージデバイス内の空き領域に書き込まれる。同様に、フラッシュストレージデバイス３−３に既に書き込まれているデータ部それぞれに対応する更新データ部の各々も、フラッシュストレージデバイス３−２、３−３、３−４の中から選択される任意の一つのフラッシュストレージデバイス内の空き領域に書き込まれる。
【０１７０】
図１８は、グローバルＬＢＡそれぞれに対応するデータ部をフラッシュストレージデバイス３−１〜３−３内の記憶位置（物理記憶位置）に書き込む処理を示す。
上述したように、ホストソフトウェアからホスト側ストレージコントローラ４３に送信されるライト要求の各々に関連付けられたデータ部（つまり、各グローバルＬＢＡに対応するデータ部）は、フラッシュストレージデバイス３−１〜３−３を含むストレージシステム内の任意の物理記憶位置に書き込むことができる。図１８では、グローバルＬＢＡ０に対応するデータ部がフラッシュストレージデバイス３−１内の物理アドレス（デバイスＰＢＡ）１００に書き込まれ、グローバルＬＢＡ１に対応するデータ部がフラッシュストレージデバイス３−１内の物理アドレス（デバイスＰＢＡ）１１０に書き込まれ、グローバルＬＢＡ２に対応するデータ部がフラッシュストレージデバイス３−２内の物理アドレス（デバイスＰＢＡ）５０に書き込まれ、グローバルＬＢＡ３に対応するデータ部がフラッシュストレージデバイス３−２内の物理アドレス（デバイスＰＢＡ）６０に書き込まれ、グローバルＬＢＡ４に対応するデータ部がフラッシュストレージデバイス３−１内の物理アドレス（デバイスＰＢＡ）２００に書き込まれ、グローバルＬＢＡ５に対応するデータ部がフラッシュストレージデバイス３−３内の物理アドレス（デバイスＰＢＡ）５００に書き込まれ、グローバルＬＢＡ６に対応するデータ部がフラッシュストレージデバイス３−３内の物理アドレス（デバイスＰＢＡ）６００に書き込まれ、グローバルＬＢＡ７に対応するデータ部がフラッシュストレージデバイス３−２内の物理アドレス（デバイスＰＢＡ）１００に書き込まれ、グローバルＬＢＡ１０に対応するデータ部がフラッシュストレージデバイス３−２内の物理アドレス（デバイスＰＢＡ）１０に書き込まれ、グローバルＬＢＡ１１に対応するデータ部がフラッシュストレージデバイス３−１内の物理アドレス（デバイスＰＢＡ）９００に書き込まれ、そして、グローバルＬＢＡｎに対応するデータ部がフラッシュストレージデバイス３−３内の物理アドレス（デバイスＰＢＡ）７０に書き込まれた場合が想定されている。
【０１７１】
図１９は、グローバルＬＢＡそれぞれに対応するデータ部の各々を、除去されるべきことが決定されたフラッシュストレージデバイス３−１以外のフラッシュストレージデバイス３−２、３−３それぞれと追加のフラッシュストレージデバイス３−４の中から選択される任意の一つのフラッシュストレージデバイスの空き領域内の任意の物理記憶位置に書き込む処理を示す。
【０１７２】
追加のフラッシュストレージデバイス３−４がホスト側ストレージコントローラ４３に接続されると、フラッシュストレージデバイス３−４に対応するエントリが共有フリーブロックリスト４３２Ａに追加される。そして、このフラッシュストレージデバイス３−４に対応するエントリに、フラッシュストレージデバイス３−４のＮＡＮＤ型フラッシュメモリ内の全てのフリーブロックのリストが追加される。共有フリーブロックリスト４３２Ａは、各フラッシュストレージデバイスに含まれるフリーブロックそれぞれを識別するブロックアドレスを管理してもよい。
【０１７３】
図１９では、既にデータ部それぞれが書き込まれているグローバルＬＢＡ０〜グローバルＬＢＡ５への更新データ部それぞれの書き込み（上書き）を要求するライト要求それぞれがホストソフトウェアからホスト側ストレージコントローラ４３に送信された場合が例示されている。
【０１７４】
記憶位置管理部５３１がグローバルＬＢＡ０へのデータ部の書き込みを要求するライト要求をホストソフトウェアから受信した場合、記憶位置管理部５３１は、受信されたライト要求に関連付けられたデータ部を、例えば、フラッシュストレージデバイス３−４の空き領域内のＰＢＡ０に書き込む。そして、記憶位置管理部５３１は、グローバルＬＢＡ０に対応するＬＵＴエントリを更新して、グローバルＬＢＡ０にマッピングされている物理アドレスを、（デバイスＩＤ＝＃１、デバイスＰＢＡ＝１００）から、（デバイスＩＤ＝＃４、デバイスＰＢＡ＝０）に変更する。さらに、記憶位置管理部５３１は、デバイスＰＢＡ＝１００のデータ部を無効化するためのコマンド（トリムコマンド）をフラッシュストレージデバイス３−１に送信してもよい。
【０１７５】
なお、フラッシュストレージデバイス３−１はライト禁止モードであるため、フラッシュストレージデバイス３−１の空き領域を増加させる必要は無い、したがって、フラッシュストレージデバイス３−１に対しては、トリムコマンドは送信されてもよいし、送信されなくてもよい。
【０１７６】
記憶位置管理部５３１がグローバルＬＢＡ１へのデータ部の書き込みを要求するライト要求をホストソフトウェアから受信した場合、記憶位置管理部５３１は、受信されたライト要求に関連付けられたデータ部を、例えば、フラッシュストレージデバイス３−４の空き領域内のＰＢＡ５に書き込む。そして、記憶位置管理部４３１は、グローバルＬＢＡ１に対応するＬＵＴエントリを更新して、グローバルＬＢＡ１にマッピングされている物理アドレスを、（デバイスＩＤ＝＃１、デバイスＰＢＡ＝１１０）から、（デバイスＩＤ＝＃４、デバイスＰＢＡ＝５）に変更する。さらに、記憶位置管理部５３１は、デバイスＰＢＡ＝１１０のデータ部を無効化するためのトリムコマンドをフラッシュストレージデバイス３−１に送信してもよい。
【０１７７】
記憶位置管理部５３１がグローバルＬＢＡ２へのデータ部の書き込みを要求するライト要求をホストソフトウェアから受信した場合、記憶位置管理部５３１は、受信されたライト要求に関連付けられたデータ部を、例えば、フラッシュストレージデバイス３−４の空き領域内のＰＢＡ１０に書き込む。そして、記憶位置管理部５３１は、グローバルＬＢＡ２に対応するＬＵＴエントリを更新して、グローバルＬＢＡ２にマッピングされている物理アドレスを、（デバイスＩＤ＝＃２、デバイスＰＢＡ＝５０）から、（デバイスＩＤ＝＃４、デバイスＰＢＡ＝１０）に変更する。さらに、記憶位置管理部５３１は、デバイスＰＢＡ＝５０のデータ部を無効化するためのトリムコマンドをフラッシュストレージデバイス３−２に送信する。これにより、フラッシュストレージデバイス３−２の空き領域を容易に増加させることができる。
【０１７８】
記憶位置管理部５３１がグローバルＬＢＡ３へのデータ部の書き込みを要求するライト要求をホストソフトウェアから受信した場合、記憶位置管理部５３１は、受信されたライト要求に関連付けられたデータ部を、例えば、フラッシュストレージデバイス３−４の空き領域内のＰＢＡ２０に書き込む。そして、記憶位置管理部５３１は、グローバルＬＢＡ３に対応するＬＵＴエントリを更新して、グローバルＬＢＡ３にマッピングされている物理アドレスを、（デバイスＩＤ＝＃２、デバイスＰＢＡ＝６０）から、（デバイスＩＤ＝＃４、デバイスＰＢＡ＝２０）に変更する。さらに、記憶位置管理部５３１は、デバイスＰＢＡ＝６０のデータ部を無効化するためのトリムコマンドをフラッシュストレージデバイス３−２に送信する。
【０１７９】
記憶位置管理部５３１がグローバルＬＢＡ４へのデータ部の書き込みを要求するライト要求をホストソフトウェアから受信した場合、記憶位置管理部５３１は、受信されたライト要求に関連付けられたデータ部を、例えば、フラッシュストレージデバイス３−４の空き領域内のＰＢＡ３０に書き込む。そして、記憶位置管理部５３１は、グローバルＬＢＡ４に対応するＬＵＴエントリを更新して、グローバルＬＢＡ４にマッピングされている物理アドレスを、（デバイスＩＤ＝＃１、デバイスＰＢＡ＝２００）から、（デバイスＩＤ＝＃４、デバイスＰＢＡ＝３０）に変更する。さらに、記憶位置管理部５３１は、デバイスＰＢＡ＝２００のデータ部を無効化するためのトリムコマンドをフラッシュストレージデバイス３−１に送信してもよい。
【０１８０】
記憶位置管理部５３１がグローバルＬＢＡ５へのデータ部の書き込みを要求するライト要求をホストソフトウェアから受信した場合、記憶位置管理部５３１は、受信されたライト要求に関連付けられたデータ部を、例えば、フラッシュストレージデバイス３−４の空き領域内のＰＢＡ４０に書き込む。そして、記憶位置管理部５３１は、グローバルＬＢＡ５に対応するＬＵＴエントリを更新して、グローバルＬＢＡ５にマッピングされている物理アドレスを、（デバイスＩＤ＝＃３、デバイスＰＢＡ＝５００）から、（デバイスＩＤ＝＃４、デバイスＰＢＡ＝４０）に変更する。さらに、記憶位置管理部５３１は、デバイスＰＢＡ＝５００のデータ部を無効化するためのトリムコマンドをフラッシュストレージデバイス３−３に送信してもよい。
【０１８１】
以上説明したように、本実施形態によれば、複数のフラッシュストレージデバイス３−１〜３−３内のフラッシュストレージデバイス３−１がホスト２から除去されるべきことが決定され、且つフラッシュストレージデバイス３−４がホスト側ストレージコントローラ４３に接続された場合、フラッシュストレージデバイス３−１がデータの書き込みが禁止されデータの読み出しが許可される第１のモードで制御される。さらに、（ｉ）フラッシュストレージデバイス３−１に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれを、フラッシュストレージデバイス３−２、３−３と追加のフラッシュストレージデバイス３−４との中から選択される任意のフラッシュストレージデバイスに書き込む第１の処理と、（ｉｉ）フラッシュストレージデバイス３−２、３−３に既に書き込まれているデータ部それぞれに対応する更新データ部それぞれを、フラッシュストレージデバイス３−２、３−３と追加のフラッシュストレージデバイス３−４との中から選択される任意のフラッシュストレージデバイスに書き込む第２の処理とが実行される。このように、特定のグローバルＬＢＡ範囲を各フラッシュストレージデバイスに固定的にマッピングするのではなく、任意のグローバルＬＢＡに対応するデータ部（更新テータ部）をフラッシュストレージデバイス３−２、３−３と追加のフラッシュストレージデバイス３−４との中から選択される任意のフラッシュストレージデバイスに書き込むという構成を採用することにより、追加のフラッシュストレージデバイス３−４のＮＡＮＤ型フラッシュメモリに含まれる多数のフリーブロックに対応する容量を、フラッシュストレージデバイス３−１〜３−４を含むストレージシステム全体のオーバープロビジョニング領域として有効利用することができる。このため、ストレージシステム全体のオーバープロビジョニング領域の量が増やされた状態でフラッシュストレージデバイス３−２〜３−４へのデータ書き込み処理を行うことが可能となるので、ホスト２から見たストレージシステム全体の書き込み性能の低下、ひいてはアプリケーション／エンドユーザから見たストレージシステム全体の書き込み性能の低下を招くことなく、フラッシュストレージデバイス３−１内に格納されているデータを他のフラッシュストレージデバイスに移行することができる。この結果、ストレージシステム全体の書き込み性能を改善することが可能となる。
【０１８２】
なお、本実施形態では、通常状態で３台のフラッシュストレージデバイス３−１〜３−３が使用される場合を説明したが、通常状態で使用されるフラッシュストレージデバイスの数は３台に限定されず、２台以上の任意の数のフラッシュストレージデバイスが使用されてもよい。
【０１８３】
また、本実施形態では、ホスト側ストレージコントローラ４３が、コントローラと不揮発性メモリとを各々が含む複数のフラッシュストレージデバイスを制御する場合を説明した。しかし、ホスト側ストレージコントローラ４３は、プリント回路基板とこのプリント回路基板上に配置された不揮発性メモリとを各々が含み且つコントローラを各々が含んでいない複数の記憶部を制御するように構成することもできる。この場合、ホスト側ストレージコントローラ４３は、グローバルＬＢＡそれぞれとこれらグローバルＬＢＡに対応するデータ部それぞれかせ格納されている複数の記憶部内の物理記憶位置を示す物理アドレスそれぞれとの間のマッピングを管理すればよい。
【０１８４】
また、本実施形態では、不揮発性メモリとしてＮＡＮＤ型フラッシュメモリを例示した。しかし、本実施形態の機能は、例えば、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、又は、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような他の様々な不揮発性メモリにも適用できる。
【０１８５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１８６】
２…ホスト、３−１〜３−４…フラッシュストレージデバイス、４…コントローラ、５…ＮＡＮＤ型フラッシュメモリ、２１…ライト制御部、２２…リード制御部、２３…リフレッシュ制御部、４３…ホスト側ストレージコントローラ。
【図１】
2020021232.tif 000003
【図２】
2020021232.tif 000004
【図３】
2020021232.tif 000005
【図４】
2020021232.tif 000006
【図５】
2020021232.tif 000007
【図６】
2020021232.tif 000008
【図７】
2020021232.tif 000009
【図８】
2020021232.tif 000010
【図９】
2020021232.tif 000011
【図１０】
2020021232.tif 000012
【図１１】
2020021232.tif 000013
【図１２】
2020021232.tif 000014
【図１３】
2020021232.tif 000015
【図１４】
2020021232.tif 000016
【図１５】
2020021232.tif 000017
【図１６】
2020021232.tif 000018
【図１７】
2020021232.tif 000019
【図１８】
2020021232.tif 000020
【図１９】
2020021232.tif 000021