(57)【要約】【課題】フラッシュメモリへの書き込み回数を平均化し、フラッシュメモリの使用寿命を長期化する。【解決手段】ストレージシステム１０は、複数のフラッシュメモリを有するフラッシュディスク３１と、各フラッシュメモリのライト寿命を所定の記憶領域単位で階層的に管理する管理テーブルと、管理テーブルに基づいてフラッシュメモリへの書き込み処理を階層的に分散するコントローラ２０とを備える。【選択図】図１
2008015769.tif 000002
【特許請求の範囲】
【請求項１】
複数のフラッシュメモリを有するフラッシュディスクと、
各フラッシュメモリのライト寿命を所定の記憶領域単位で階層的に管理する管理テーブルと、
前記管理テーブルに基づいて前記フラッシュメモリへの書き込み処理を階層的に分散するコントローラと、
を備えるストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記コントローラは、書き込み先である第一の記憶領域のライト寿命が所定の閾値を超えた場合に、ライト寿命が所定の閾値未満の第二の記憶領域に前記第一の記憶領域のデータを移動し、前記第一の記憶領域宛の書き込みを前記第二の記憶領域に行う、ストレージシステム。
【請求項３】
請求項１に記載のストレージシステムであって、
前記フラッシュメモリは、複数のセクタから成る記憶領域を有しており、
前記フラッシュディスクは、複数のフラッシュメモリから成るスロットを複数有しており、
前記コントローラは、一つのフラッシュメモリ内における書き込み処理をセクタ単位で分散し、一つのフラッシュメモリ内の各セクタのライト寿命が均等化した段階で、一つのスロット内における書き込み処理をセクタ単位で分散し、一つのスロット内の各セクタのライト寿命が均等化した段階で、一つのフラッシュディスク内における書き込み処理をセクタ単位で分散する、ストレージシステム。
【請求項４】
請求項２に記載のストレージシステムであって、
ライト寿命が所定の閾値を超えた前記第一の記憶領域は、バックアップデータの格納領域として使用される、ストレージシステム。
【請求項５】
請求項２に記載のストレージシステムであって、
ライト寿命が所定の閾値を超えた前記第一の記憶領域は、書き込み回数が制限されるデータの格納に使用される、ストレージシステム。
【請求項６】
複数のフラッシュメモリを有するフラッシュディスクと、
各フラッシュメモリのライト寿命を所定の記憶領域単位で階層的に管理する管理テーブルと、
前記管理テーブルに基づいて前記フラッシュメモリへの書き込み先を変更するコントローラと、
を備えるストレージシステム。
【請求項７】
請求項６に記載のストレージシステムであって、
前記コントローラは、変更先の記憶領域単位の論理アドレスを変更元の記憶領域単位の論理アドレスに変更することにより前記書き込み先の変更を行う、ストレージシステム。
【請求項８】
複数のフラッシュメモリを有するフラッシュディスクについて各フラッシュメモリのライト寿命を所定の記憶領域単位で階層的に管理するステップと、
前記管理テーブルに基づいて前記フラッシュメモリへの書き込み処理を階層的に分散するステップと、
を備える書き込み分散方法。
【請求項９】
請求項８に記載の書き込み分散方法であって、
前記書き込み処理を階層的に分散するステップは、書き込み先である第一の記憶領域のライト寿命が所定の閾値を超えた場合に、ライト寿命が所定の閾値未満の第二の記憶領域に前記第一の記憶領域のデータを移動し、前記第一の記憶領域宛の書き込みを前記第二の記憶領域に行うステップを含む、書き込み分散方法。
【請求項１０】
請求項８に記載の書き込み分散方法であって、
前記フラッシュメモリは、複数のセクタから成る記憶領域を有しており、
前記フラッシュディスクは、複数のフラッシュメモリから成るスロットを複数有しており、
前記書き込み処理を階層的に分散するステップは、一つのフラッシュメモリ内における書き込み処理をセクタ単位で分散し、一つのフラッシュメモリ内の各セクタのライト寿命が均等化した段階で、一つのスロット内における書き込み処理をセクタ単位で分散し、一つのスロット内の各セクタのライト寿命が均等化した段階で、一つのフラッシュディスク内における書き込み処理をセクタ単位で分散するステップを含む、書き込み分散方法。
【請求項１１】
請求項９に記載の書き込み分散方法であって、
ライト寿命が所定の閾値を超えた前記第一の記憶領域は、バックアップデータの格納領域として使用される、書き込み分散方法。
【請求項１２】
請求項９に記載の書き込み分散方法であって、
ライト寿命が所定の閾値を超えた前記第一の記憶領域は、書き込み回数が制限されるデータの格納に使用される、書き込み分散方法。
【請求項１３】
請求項８に記載の書き込み分散方法であって、
前記書き込み処理を階層的に分散するステップは、前記フラッシュメモリへの書き込み先を変更するステップを含む、書き込み分散方法。
【請求項１４】
請求項１３に記載の書き込み分散方法であって、
前記書き込み処理を階層的に分散するステップは、変更先の記憶領域単位の論理アドレスを変更元の記憶領域単位の論理アドレスに変更することにより前記書き込み先の変更を行うステップを含む、書き込み分散方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータを格納するための記録媒体としてフラッシュディスクを有するストレージシステム及び書き込み分散方法に関する。
【背景技術】
【０００２】
特開平５−２７９２４号公報には、データを格納するための記録媒体として、フラッシュディスクを有するストレージシステムが開示されている。フラッシュディスクは不揮発性のフラッシュメモリを使用した半導体ディスク装置である。フラッシュメモリは、複数のブロックにより構成され、更にこれらの各ブロックが、複数のページにより構成されている。ページは、リード（書込み）／ライト（読出し）の単位であり、通常、磁気ディスク装置等のハードディスク装置におけるリード／ライトの最小単位であるセクタと同じ大きさで、５１２バイトである。ページ内のデータを書換える場合には、通常、旧データを消去した後、新たなデータを書込む。ブロックは、消去の単位（一般的には１６Ｋバイト）であり、書換えがこのブロック内の一部のページであっても、この１つのブロック全部を消去する必要がある。
【特許文献１】特開平５−２７９２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、このような特質を有するフラッシュメモリを使用したフラッシュディスクでは、フラッシュメモリに保存されたデータが或る一定の確率でビットエラーを発生すること、及び、ブロックと呼ばれる単位で消去を行うが、ブロック毎に消去回数の寿命が例えば１０万回〜１００万回の短寿命であるという制約がある。
【０００４】
そこで、本発明はフラッシュメモリへの書き込み回数を平均化し、フラッシュメモリの使用寿命を長期化することを課題とする。
【課題を解決するための手段】
【０００５】
上記の課題を解決するため、本発明に係るストレージシステムは、複数のフラッシュメモリを有するフラッシュディスクと、各フラッシュメモリのライト寿命を所定の記憶領域単位で階層的に管理する管理テーブルと、管理テーブルに基づいてフラッシュメモリへの書き込み処理を階層的に分散するコントローラと、を備える。フラッシュメモリへの書き込み処理を階層的に分散することで、フラッシュメモリへの書き込み回数を平均化し、フラッシュメモリの使用寿命を長期化することができる。
【０００６】
コントローラは、書き込み先である第一の記憶領域のライト寿命が所定の閾値を超えた場合に、ライト寿命が所定の閾値未満の第二の記憶領域に第一の記憶領域のデータを移動し、第一の記憶領域宛の書き込みを第二の記憶領域に行う。書き込み回数の多い第一の記憶領域に書き込まれるべきデータを、書き込み回数の少ない第二の記憶領域に書き込むことで、各記憶領域のライト寿命を平均化できる。このとき、第二の記憶領域の論理アドレスを第一の記憶領域の論理アドレスに変更することにより、ホスト計算機が書き込み先の変更を意識することなく、書き込みを分散できる。ライト寿命が所定の閾値を超えた第一の記憶領域は、例えば、バックアップデータの格納領域として使用される。
【０００７】
ここで、フラッシュメモリは、複数のセクタから成る記憶領域を有している。フラッシュディスクは、複数のフラッシュメモリから成るスロットを複数有している。コントローラは、一つのフラッシュメモリ内における書き込み処理をセクタ単位で分散し、一つのフラッシュメモリ内の各セクタのライト寿命が均等化した段階で、一つのスロット内における書き込み処理をセクタ単位で分散し、一つのスロット内の各セクタのライト寿命が均等化した段階で、一つのフラッシュディスク内における書き込み処理をセクタ単位で分散することにより、フラッシュメモリへの書き込みを階層的に分散できる。
【０００８】
本発明の他の観点によれば、ストレージシステムは、複数のフラッシュメモリを有するフラッシュディスクと、各フラッシュメモリのライト寿命を所定の記憶領域単位で階層的に管理する管理テーブルと、管理テーブルに基づいてフラッシュメモリへの書き込み先を変更するコントローラと、を備える。コントローラは、変更先の記憶領域単位の論理アドレスを変更元の記憶領域単位の論理アドレスに変更することにより書き込み先の変更を行う。
【発明の効果】
【０００９】
本発明によれば、フラッシュメモリへの書き込み回数を平均化し、フラッシュメモリの使用寿命を長期化することができる。
【発明を実施するための最良の形態】
【００１０】
以下、各図を参照しながら本発明の実施形態について説明する。
図１は本実施形態に係るストレージシステム１０のハードウェア構成を示す。ストレージシステム１０は、ホスト計算機４０に記憶資源を提供するための記憶装置３０と、ホスト計算機４０からのデータ入出力要求に応答して記憶装置３０へのデータ入出力を制御するためのストレージコントローラ２０とを備える。記憶装置３０は、複数のフラッシュディスク３１を有する。
【００１１】
ホスト計算機４０は、ＣＰＵ（Central Processing Unit）、メモリ、入出力インタフェース等を備える上位装置であり、具体的には、パーソナルコンピュータ、ワークステーション、メインフレーム等である。ストレージシステム１０は、通信ネットワーク４５を介してホスト計算機４０に接続している。通信ネットワーク４５は、ＳＡＮ（Storage Area Network）、ＬＡＮ(Local Area Network)、ＷＡＮ（Wide Area Network）、ＭＡＮ（Metropolitan Area Network）、インターネット、専用回線、公衆回線等である。
【００１２】
例えば、ホスト計算機４０がＳＡＮを介してストレージシステム１０に接続する場合、ホスト計算機４０は、ファイバチャネルプロトコル又はｉＳＣＳＩ（internet Small Computer System Interface）等のプロトコルにより、ストレージシステム１０の記憶資源のデータ管理単位であるブロックを単位としてデータ入出力を要求する。
【００１３】
例えば、ホスト計算機４０がＬＡＮを介してストレージシステム１０に接続する場合、ホスト計算機４０は、ＮＦＳ（Network File System）又はＣＩＦＳ（Common Interface File System）等のプロトコルにより、ファイル名を指定してファイル単位でのデータ入出力を要求する。
【００１４】
ストレージコントローラ２０は、複数のコントローラ２１を有する。各コントローラ２１は、記憶装置３０をいわゆるＲＡＩＤ方式に規定されるＲＡＩＤレベル（例えば、０，１，３，４，５，６）で制御することができる。ＲＡＩＤグループは、例えば、４つのフラッシュディスク３１を一組としてグループ化することにより（３Ｄ＋１Ｐ）、或いは８つのフラッシュディスク３１を一組としてグループ化することにより（７Ｄ＋１Ｐ）、構成される。即ち、複数のフラッシュディスク３１のそれぞれが提供する記憶領域が集合して一つのＲＡＩＤグループが構成される。ＲＡＩＤグループは、パリティグループ又はＥＣＣグループと別称することもできる。ＲＡＩＤグループ上には、ホスト計算機４０からのアクセス単位である一つ以上の論理ボリュームが定義される。各論理ボリュームには、ＬＵＮ（Logical Unit Number）がアサインされる。
【００１５】
各コントローラ２１は、ホストインタフェース（ホストＩ／Ｆ）２２、ディスクインタフェース（ディスクＩ／Ｆ）２３、マイクロプロセッサ（ＭＰＵ）２４、キャッシュメモリ（ＣＭ）２５、及びローカルメモリ（ＬＭ）２６を備える。
【００１６】
ホストインタフェース２２は、ホスト計算機４０とコントローラ２０との間のインタフェースを制御するためのコントローラであり、例えば、ファイバチャネルプロトコルに基づくホスト計算機４０からのブロックアクセス要求や、ファイル転送プロトコルに基づくホスト計算機４０からのファイルアクセス要求を受信する機能を有する。ホスト計算機４０からのファイルアクセス要求を処理するためには、ホストインタフェース２２は、ＮＡＳ（Network Attached Storage）機能を搭載している必要がある。
【００１７】
ディスクインタフェース２３は、記憶装置３０とコントローラ２０との間のインタフェースを制御するためのコントローラであり、例えば、記憶装置３０を制御するプロトコルに従って、記憶装置３０へのデータ入出力要求を制御する機能を有する。
【００１８】
マイクロプロセッサ２４は、ホスト計算機４０からのデータ入出力要求に応答して記憶装置３０へのＩ／Ｏ処理（ライトアクセス、又はリードアクセス）を制御する。
【００１９】
キャッシュメモリ２５は、記憶装置３０に読み書きするデータを一時的に格納するためのバッファメモリである。キャッシュメモリ２５は、電源バックアップされており、ストレージシステム１０に電源障害が発生した場合でも、キャッシュデータのロストを防ぐ不揮発性メモリとして構成されている。
【００２０】
ローカルメモリ２６は、マイクプロセッサ２４の制御プログラムや後述するフラッシュディスク管理テーブル５００（図５乃至図６参照）などを格納する。
【００２１】
ストレージシステム１０には、管理端末（ＳＶＰ）５０が接続されている。管理端末５０は、ストレージシステム１０を保守管理するためのコンピュータである。ストレージ管理者は、管理端末５０に実装されているＷｅｂブラウザを介して、ストレージ管理用のコマンドを入力することにより、ストレージシステム１０を保守管理できる。ストレージ管理用のコマンドとして、例えば、フラッシュディスク３１の追加又は削除、又はＲＡＩＤ構成の変更を指示するためのコマンド、ホスト計算機４０とストレージシステム１０との間の通信パスを設定するためのコマンドなどがある。
【００２２】
図２はフラッシュディスクのハードウェア構成を示す。フラッシュディスク３１は、アレイ状に配列される複数のフラッシュメモリ３００と、フラッシュメモリ３００へのデータ入出力を制御するフラッシュメモリコントローラ３２０と、コントローラ２０に接続するためのインタフェースを制御するインタフェース３３０と、フラッシュディスク３１全体を制御するマイクロプロセッサ３４０と、マイクロプロセッサ３４０の制御プログラムやフラッシュメモリ管理テーブル６１０、スロット内管理テーブル６２０、及びスロット間管理テーブル６３０等を格納するメモリ３５０とを備える。フラッシュメモリ管理テーブル６１０、スロット内管理テーブル６２０、及びスロット間管理テーブル６３０の詳細については後述する。
【００２３】
フラッシュメモリコントローラ３２０は、複数のフラッシュメモリ３００から成るスロット３１０に接続するためのポート３２１と、各フラッシュメモリ３００内の各セクタへの書き込み回数をカウントするカウンタ３２２と、インタフェース３３０と各フラッシュメモリ３００との間でデータをＤＭＡ転送するためのＤＭＡ回路３２３を有する。ポート３２１は、書き込みアドレスを識別し、各セクタへの書き込み回数をカウントする。
【００２４】
図３はフラッシュディスク３１のメモリ空間を示す。ここでは、一例として、一つのスロット３１０は、４つのフラッシュメモリ３００によって構成されるものとする。フラッシュメモリ３００一つあたりのメモリ空間を５Ｇバイトとすると、スロット３１０一つあたりのメモリ空間は２０Ｇバイトになる。また、セクタ３００Ａ一つあたりのメモリ空間を、例えば、６４Ｋバイトとする。セクタ３００Ａは、フラッシュメモリ３００におけるデータの読み書き単位である。
【００２５】
次に、図４乃至図６を参照しながら、各フラッシュディスクＤ０〜Ｄ９への書き込み処理を分散する処理について説明する。ここでは、各フラッシュディスクＤ０〜Ｄ９を区別するため、説明の便宜上、各フラッシュディスクＤ０〜Ｄ９には、それぞれ異なる符号を付しているが、各フラッシュディスクＤ０〜Ｄ９の内部構成は、図２に示したフラッシュディスク３１の内部構成と同様である。
【００２６】
図４に示すようにフラッシュディスクＤ０〜Ｄ４は、（４Ｄ＋１Ｐ）のドライブ構成を有するＲＡＩＤレベル５のＲＡＩＤグループ４１０に所属し、フラッシュディスクＤ５〜Ｄ９は、（３Ｄ＋１Ｐ）のドライブ構成を有するＲＡＩＤレベル３のＲＡＩＤグループ４２０に所属する。ここで、フラッシュディスクＤ９は、スペア用の空きディスクである。また、ＲＡＩＤグループ４１０は、論理ユニット（ＬＵ０）の記憶領域をホスト計算機４０に提供し、ＲＡＩＤグループ４２０は、論理ユニット（ＬＵ１）の記憶領域をホスト計算機４０に提供するものとする。
【００２７】
ストレージコントローラ２０は、フラッシュディスク管理テーブル５００を保持している。フラッシュディスク管理テーブル５００は、各フラッシュディスクの管理情報を格納するためのものであり、例えば、図５に示すようにＦＤ識別子５０１、アクセス属性５０２、ライト寿命５０３、移動先５０４、及びＶＤＥＶ番号５０５を対応付けている。ＦＤ識別子５０１は、各フラッシュディスクを識別するための情報である。アクセス属性５０２は、例えば、リード／ライト（Read/Write）可能、リードオンリ（Read Only）、リード／ライト（Read/Write）不可などの情報を示す。ライト寿命５０３は、各フラッシュディスクへの書き込み回数が使用寿命（書き込み可能回数の上限値）に対してどの程度の割合であるかを示す。移動先５０４は、フラッシュディスクのライト寿命が所定の閾値を越えた場合にそのフラッシュディスクに書き込まれていたデータの移動先となるフラッシュディスクの識別子を示す。ＶＤＥＶ番号５０５は、フラッシュディスクが所属するＲＡＩＤグループの番号を示す。例えば、ＲＡＩＤグループ４１０に所属するフラッシュディスクのＶＤＥＶ番号は「１」であり、ＲＡＩＤグループ４２０に所属するフラッシュディスクのＶＤＥＶ番号は「２」である。ライト制限用途のＲＡＩＤグループに所属するフラッシュディスクのＶＤＥＶ番号は「０」である。
【００２８】
ストレージコントローラ２０によるフラッシュディスクＤ０〜Ｄ９への書き込み分散処理は、以下のようになる。
（１）ストレージコントローラ２０は、ホスト計算機４０から論理ユニット（ＬＵ０）へのライトアクセス要求を受けると、フラッシュディスク管理テーブル５００を参照し、論理ユニット（ＬＵ０）を構成する複数のフラッシュディスクＤ０〜Ｄ４のうち何れかのライト寿命が所定の閾値（例えば、８０％）を越えたか否かをチェックする。
（２）図５に示す例では、フラッシュディスクＤ２のライト寿命が所定の閾値を超えているので、ストレージコントローラ２０は、フラッシュディスクＤ２のライト寿命が所定の閾値を超えたことを検出する。
（３）ストレージコントローラ２０は、書き込み回数の少ないフラッシュディスクを記憶装置３０の中から検索する。図４に示す例では、フラッシュディスクＤ９が空きディスク（スペアディスク）である場合を想定しているので、コントローラ２０は、フラッシュディスクＤ９をフラッシュディスクＤ２（移動元ディスク）の移動先ディスクとして選定する。移動先ディスクを選択する優先順位としては、例えば、スペアディスクのような空きディスクを最優先とし、このような空きディスクが存在しない場合は、移動元ディスクと同一のＲＡＩＤグループに所属しており且つ書き込み回数の少ないフラッシュディスクが望ましい。
（４）ストレージコントローラ２０は、フラッシュディスクＤ２のデータをフラッシュディスクＤ９に移動させる。
（５）ストレージコントローラ２０は、フラッシュディスクＤ２の移動先がフラッシュディスクＤ９であることを示すようにフラッシュディスク管理テーブル５００を更新する。かかるテーブル更新により、今後、フラッシュディスクＤ２に書き込まれるべきデータはフラッシュディスクＤ９に書き込まれる。
（６）ストレージコントローラ２０は、フラッシュディスクＤ２のアクセス属性をライト制限用途に更新する。
【００２９】
ライト制限用途とは、書き込み回数が制限される用途を意味し、例えば、あるボリュームのスナップショットを保持するためのスナップショットボリュームとしての用途、あるプライマリボリュームのレプリカを保持するためのセカンダリボリュームとしての用途、バックアップ用のボリュームとしての用途などがある。バックアップ用途としては、例えば、書き込みは一度だけ可能であり読み出しは何回でも可能なＷＯＲＭ領域としての使用（電子メールの保存等のアーカイブ用途）が考えられる。
【００３０】
図６は上述のテーブル更新後のフラッシュディスク管理テーブル５００を示す。フラッシュディスクＤ２のアクセス属性は、“Ｒ／Ｗ”から“Ｒ／Ｗ＊”に更新される。“Ｒ／Ｗ＊”はライト制限用途であることを示す。また、フラッシュディスクＤ２の移動先としてフラッシュディスクＤ９の識別子が登録され、フラッシュディスクＤ２のＶＤＥＶ番号が「１」から「０」に更新される。更に、フラッシュディスクＤ９のＶＤＥＶ番号は、「２」から「１」に更新される。かかるテーブル更新により、フラッシュディスクＤ２のデータの移動先がフラッシュディスクＤ９であることが示されるとともに、フラッシュディスクＤ２はライト制限用途のＲＡＩＤグループに所属することが示される。また、フラッシュディスクＤ９が所属するＲＡＩＤグループがＲＡＩＤグループ４２０からＲＡＩＤグループ４１０に変更されたことが示される。
【００３１】
尚、論理ユニット（ＬＵ０）を構成する何れのフラッシュディスクＤ０〜Ｄ４についても、ライト寿命が所定の閾値を超えてない場合には、ストレージコントローラ２０は、各フラッシュディスクＤ０〜Ｄ４について通常のライトアクセスを実行する。
【００３２】
次に、図７乃至図９を参照しながら、各フラッシュディスクＤ０〜Ｄ１２への書き込み処理を分散する他の処理について説明する。ここでは、各フラッシュディスクＤ０〜Ｄ１２を区別するため、説明の便宜上、各フラッシュディスクＤ０〜Ｄ１２には、それぞれ異なる符号を付しているが、各フラッシュディスクＤ０〜Ｄ１２の内部構成は、図２に示したフラッシュディスク３１の内部構成と同様である。
【００３３】
図７に示すようにフラッシュディスクＤ０〜Ｄ４は、（４Ｄ＋１Ｐ）のドライブ構成を有するＲＡＩＤレベル５のＲＡＩＤグループ４１０に所属し、フラッシュディスクＤ５〜Ｄ８は、（３Ｄ＋１Ｐ）のドライブ構成を有するＲＡＩＤレベル３のＲＡＩＤグループ４２０に所属し、フラッシュディスクＤ９〜Ｄ１２は、（３Ｄ＋１）のドライブ構成を有するＲＡＩＤレベル５のＲＡＩＤグループ４３０に所属する。また、ＲＡＩＤグループ４１０，４２０，４３０は、それぞれホスト計算機４０に論理ユニット（ＬＵ０），（ＬＵ１），（ＬＵ２）を提供し、それぞれのＶＤＥＶ番号は「１」，「２」，「３」とする。
【００３４】
ストレージコントローラ２０によるフラッシュディスクＤ０〜Ｄ９への書き込み分散処理は、以下のようになる。
（１）ストレージコントローラ２０は、ホスト計算機４０から論理ユニット（ＬＵ０）へのライトアクセス要求を受けると、フラッシュディスク管理テーブル５００を参照し、論理ユニット（ＬＵ０）を構成する複数のフラッシュディスクＤ０〜Ｄ４のうち何れかのライト寿命が所定の閾値（例えば、８０％）を越えたか否かをチェックする。
（２）図５に示す例では、フラッシュディスクＤ２のライト寿命が所定の閾値を超えているので、ストレージコントローラ２０は、フラッシュディスクＤ２のライト寿命が所定の閾値を超えたことを検出する。
（３）ストレージコントローラ２０は、書き込み回数の少ないフラッシュディスクを記憶装置３０の中から検索する。図７に示す例ではフラッシュディスクＤ２の全てのデータを格納できるだけの空き容量を有するフラッシュディスクが一つも存在しないものとする。すると、ストレージコントローラ２０は、フラッシュディスクＤ２の移動先として複数のフラッシュディスクを選択する。移動先として選択されるフラッシュディスクは、できるだけ多くの空き容量を有し且つ書き込み回数の少ないものが好ましい。ここでは、ストレージコントローラ２０は、フラッシュディスクＤ２の移動先として、フラッシュディスクＤ８とフラッシュディスクＤ１１とを選択する。
（４）ストレージコントローラ２０は、図８に示すようにフラッシュディスクＤ２の一部のデータＣ１をフラッシュディスクＤ８のアドレス範囲Ａ１に移動し、残りのデータＣ２をフラッシュディスクＤ１１のアドレス範囲Ａ２に移動させる。
（５）ストレージコントローラ２０は、フラッシュディスクＤ２の移動先がフラッシュディスクＤ８とＤ１１であることを示すようにフラッシュディスク管理テーブル５００を更新する。かかるテーブル更新により、今後、フラッシュディスクＤ２に書き込まれるべきデータはフラッシュディスクＤ８とＤ１１に書き込まれる。
（６）ストレージコントローラ２０は、フラッシュディスクＤ２のアクセス属性をライト制限用途に更新する。
【００３５】
図９は上述のテーブル更新後のフラッシュディスク管理テーブル５００を示す。フラッシュディスクＤ２のアクセス属性は、“Ｒ／Ｗ”から“Ｒ／Ｗ＊”に更新される。フラッシュディスクＤ２の移動先として、フラッシュディスクＤ８の識別子及びアドレス範囲Ａ１と、フラッシュディスクＤ１１の識別子及びアドレス範囲Ａ２とがそれぞれ登録される。フラッシュディスクＤ２のＶＤＥＶ番号が「１」から「０」に更新される。更に、フラッシュディスクＤ８のＶＤＥＶ番号は、「２」から「１」に更新され、フラッシュディスクＤ１１のＶＤＥＶ番号は、「３」から「１」に更新される。かかるテーブル更新により、フラッシュディスクＤ２のデータの移動先がフラッシュディスクＤ８とＤ１１であることが示されるとともに、フラッシュディスクＤ２はライト制限用途のＲＡＩＤグループに所属することが示される。また、フラッシュディスクＤ８のアドレス範囲Ａ１が所属するＲＡＩＤグループがＲＡＩＤグループ４２０からＲＡＩＤグループ４１０に変更され、フラッシュディスクＤ１１のアドレス範囲Ａ２が所属するＲＡＩＤグループがＲＡＩＤグループ４３０からＲＡＩＤグループ４１０に変更されたことが示される。
【００３６】
ここで、フラッシュディスクＤ２の一部のデータＣ１をフラッシュディスクＤ８のアドレス範囲Ａ１に移動し、残りのデータＣ２をフラッシュディスクＤ１１のアドレス範囲Ａ２に移動させた場合における、パリティ更新方法について説明する。ストレージコントローラ２０は、フラッシュディスクＤ２のデータＣ１に更新データを書き込むと、ＲＡＩＤグループ４１０のパリティを新しい値に更新する。更に、フラッシュディスクＤ８のアドレス範囲Ａ１に当該更新データを書き込み、ＲＡＩＤグループ４２０のパリティを更新する。また、例えば、フラッシュディスクＤ１へ更新データを書き込むことにより、フラッシュディスクＤ２内のデータＣ１又はＣ２にあるパリティを更新する必要があるときは、フラッシュディスクＤ２内のデータＣ１又はＣ２にあるパリティを更新するとともに、フラッシュディスクＤ８のアドレス範囲Ａ１にあるパリティ又はフラッシュディスクＤ１１のアドレス範囲Ａ２にあるパリティも新しい値に更新する。
【００３７】
次に、図１０乃至図１６を参照しながらフラッシュディスク内部で書き込み処理を分散する例について説明する。フラッシュディスク内部における書き込み処理の分散は、階層的に複数の段階に分けて実施する。第一段階の分散処理として、フラッシュメモリ３００内で書き込み処理を分散する。第一段階の分散処理では、フラッシュメモリ管理テーブル６１０（図１１乃至図１２参照）を用いて、フラッシュメモリ３００内の各セクタのライト寿命を管理し、ライト寿命が所定の閾値を超えたセクタのデータを他のセクタ（書き込み回数の少ないセクタ）に移動することによって、フラッシュメモリ３００内の書き込みを均等に分散する。
【００３８】
フラッシュメモリ３００内の各セクタへの書き込み回数がほぼ全体的に使用寿命に近づきつつあると、第一段階の分散処理だけでは書き込み処理を分散できない。このような場合に、スロット３１０内で書き込み処理を分散する。これが第二段階の分散処理である。第二段階の分散処理では、スロット内管理テーブル６２０（図１３乃至図１４参照）を用いて、スロット３１０内の各セクタのライト寿命を管理し、ライト寿命が所定の閾値を超えたセクタのデータを他のセクタ（書き込み回数の少ないセクタ）に移動することによって、スロット３１０内の書き込みを均等に分散する。
【００３９】
スロット３１０内の各セクタへの書き込み回数がほぼ全体的に使用寿命に近づきつつあると、第二段階の分散処理だけでは書き込み処理を分散できない。このような場合に、スロット３１０間で書き込み処理を分散する。これが第三段階の分散処理である。第三段階の分散処理では、スロット間管理テーブル６３０（図１５乃至図１６参照）を用いて、スロット３１０間の各セクタのライト寿命を管理し、ライト寿命が所定の閾値を超えたセクタのデータを他のセクタ（書き込み回数の少ないセクタ）に移動することによって、スロット３１０間の書き込みを均等に分散する。
【００４０】
このように複数の段階に分けて、書き込み処理を階層的に分散することで、フラッシュディスク３１内の各セクタへの書き込み回数を全体的に均等化できる。
【００４１】
図１０はフラッシュディスク３１内のマイクロプロセッサ３４０が実行する書き込み分散処理を示すフローチャートである。マイクロプロセッサ３４０は、ストレージコントローラ２０からライトコマンドを受信すると（ステップ１０１）、ライトコマンド内に含まれている書き込みアドレスへの書き込み処理を起動する（ステップ１０２）。
【００４２】
このとき、書き込み先セクタのライト寿命が所定の閾値を超えていると、フラッシュメモリコントローラ３２０から割り込み入力がなされる（ステップ１０３）。この割り込み入力が分散処理要求である場合には（ステップ１０４；ＹＥＳ）、マイクロプロセッサ３４０は、フラッシュディスク３１内の各セクタへの書き込み状態に応じて、フラッシュメモリ３００内の書き込み分散処理、スロット３１０内の書き込み分散処理、又はスロット３１０間の書き込み分散処理のうち何れかの処理を選択する（ステップ１０５）。
【００４３】
そして、マイクロプロセッサ３４０は、移動元セクタから移動先セクタへデータを移動し（ステップ１０６）、フラッシュメモリ管理テーブル６１０、スロット内管理テーブル６２０、又はスロット間管理テーブル６３０を更新する（ステップ１０７）。
【００４４】
一方、割り込み要求が分散処理要求でない場合には（ステップ１０４；ＮＯ）、マイクロプロセッサ３４０は、書き込み容量不足に対処するための処理（例えば、書き込みエラーの報告や書き込み制限などの処理）を実行する。
【００４５】
次に、図１１乃至図１２を参照しながら、フラッシュメモリ３００内の書き込み分散処理に伴うフラッシュメモリ管理テーブル６１０の更新処理について説明する。
【００４６】
フラッシュメモリ管理テーブル６１０は、フラッシュメモリ３００内の管理情報を格納するためのものであり、セクタ識別子６０１、ライト寿命６０２、アクセス属性６０３、論理セクタ６０４、物理セクタ６０５、及び変更回数６０６を対応付けている。セクタ識別子６０１は、セクタを識別するための情報である。ライト寿命６０２は、各セクタへの書き込み回数が使用寿命（書き込み可能回数の上限値）に対してどの程度の割合であるかを示す。アクセス属性６０３は、例えば、リード／ライト（Read/Write）可能、リードオンリ（Read Only）、リード／ライト（Read/Write）不可などの情報を示す。論理セクタ６０４は、セクタの論理番号を示す。物理セクタ６０５は、セクタの物理番号を示す。変更回数６０６は、セクタの論理番号を入れ替えた回数を示す。
【００４７】
マイクロプロセッサ３４０は、フラッシュメモリ３００内のセクタのライト寿命が所定の閾値（例えば、５０％）を超えているか否かを、フラッシュメモリ管理テーブル６１０を参照することによりチェックする。図１１に示す例では、セクタ０のライト寿命が所定の閾値を超えているので、マイクロプロセッサ３４０は、フラッシュメモリ管理テーブル６１０を参照し、ライト寿命が所定値（例えば、３０％）未満のセクタを検索する。図１１に示す例では、セクタｎのライト寿命が０％なので、マイクロプロセッサ３４０は、セクタｎを移動先セクタとして選択する。そして、マイクロプロセッサ３４０は、移動元セクタ（セクタ０）から移動先セクタ（セクタｎ）へデータを移動し、それぞれの論理番号を交換する。更に、マイクロプロセッサ３４０は、移動元セクタ（セクタ０）と移動先セクタ（セクタｎ）のそれぞれの変更回数を１だけインクリメントする。かかる処理を経てフラッシュメモリ管理テーブル６１０は、図１２に示すように更新される。
【００４８】
尚、セクタＲは、書き込み容量が不足した場合に備えて予め用意されている冗長セクタである。セクタ０〜セクタｎの中で移動先となり得るものがない場合には、セクタＲを移動先セクタとして選定してもよい。
【００４９】
次に、図１３乃至図１４を参照しながら、スロット３１０内の書き込み分散処理に伴うスロット内管理テーブル６２０の更新処理について説明する。
【００５０】
スロット内管理テーブル６２０は、スロット３１０内の管理情報を格納するためのものであり、セクタ識別子６０１、ライト寿命６０２、アクセス属性６０３、論理セクタ６０４、物理セクタ６０５、変更回数６０６、及びフラッシュメモリ識別子６０７を対応付けている。フラッシュメモリ識別子６０７は、フラッシュメモリ３００を識別するための情報である。
【００５１】
マイクロプロセッサ３４０は、スロット３１０内のセクタのライト寿命が所定の閾値（例えば、５０％）を超えているか否かを、スロット内管理テーブル６２０を参照することによりチェックする。図１３に示す例では、フラッシュメモリ０のセクタ０のライト寿命が所定の閾値を超えているので、マイクロプロセッサ３４０は、スロット内管理テーブル６２０を参照し、ライト寿命が所定値（例えば、３０％）未満のセクタを検索する。図１３に示す例では、フラッシュメモリ１のセクタｎのライト寿命が０％なので、マイクロプロセッサ３４０は、フラッシュメモリ１のセクタｎを移動先セクタとして選択する。そして、マイクロプロセッサ３４０は、移動元セクタ（フラッシュメモリ０のセクタ０）から移動先セクタ（フラッシュメモリ１のセクタｎ）へデータを移動し、それぞれの論理番号を交換する。更に、マイクロプロセッサ３４０は、移動元セクタ（フラッシュメモリ０のセクタ０）と移動先セクタ（フラッシュメモリ１のセクタｎ）のそれぞれの変更回数を１だけインクリメントする。かかる処理を経て、スロット内管理テーブル６２０は、図１４に示すように更新される。
【００５２】
次に、図１５乃至図１６を参照しながら、スロット３１０間の書き込み分散処理に伴うスロット間管理テーブル６３０の更新処理について説明する。
【００５３】
スロット間管理テーブル６３０は、スロット３１０間の管理情報を格納するためのものであり、セクタ識別子６０１、ライト寿命６０２、アクセス属性６０３、論理セクタ６０４、物理セクタ６０５、変更回数６０６、フラッシュメモリ識別子６０７、及びスロット識別子６０８を対応付けている。スロット識別子６０８は、スロット３１０を識別するための情報である。
【００５４】
マイクロプロセッサ３４０は、スロット３１０間のセクタのライト寿命が所定の閾値（例えば、５０％）を超えているか否かを、スロット間管理テーブル６３０を参照することによりチェックする。図１５に示す例では、スロット０のフラッシュメモリ０のセクタ０のライト寿命が所定の閾値を超えているので、マイクロプロセッサ３４０は、スロット間管理テーブル６３０を参照し、ライト寿命が所定値（例えば、３０％）未満のセクタを検索する。図１５に示す例では、スロットＮのフラッシュメモリ１のセクタｎのライト寿命が０％なので、マイクロプロセッサ３４０は、スロットＮのフラッシュメモリ１のセクタｎを移動先セクタとして選択する。そして、マイクロプロセッサ３４０は、移動元セクタ（スロット０のフラッシュメモリ０のセクタ０）から移動先セクタ（スロットＮのフラッシュメモリ１のセクタｎ）へデータを移動し、それぞれの論理番号を交換する。更に、マイクロプロセッサ３４０は、移動元セクタ（スロット０のフラッシュメモリ０のセクタ０）と移動先セクタ（スロットＮのフラッシュメモリ１のセクタｎ）のそれぞれの変更回数を１だけインクリメントする。かかる処理を経て、スロット間管理テーブル６３０は、図１６に示すように更新される。
【００５５】
ところで、一つのスロット３１０は、ホスト計算機４０からは一つの論理的な記憶領域として認識されるので、フラッシュディスク３１内のフラッシュメモリ３００をスロット単位で交換することができる。フラッシュメモリ３００をスロット単位で交換する方式においては、フラッシュメモリコントローラ３２０は、フラッシュディスク３１に新規に実装されたスロット３１０に搭載されているフラッシュメモリ３００の書き込み回数を把握する手段が必要になる。かかる手段として、例えば、スロット３１０内の各フラッシュメモリ３００に自身の書き込み回数を記憶しておき、或いはスロット３１０内の不揮発性メモリにフラッシュメモリ３００の書き込み回数を記憶させておくことで、新規のスロット３１０がフラッシュディスク３１に実装されたことを契機として、フラッシュメモリコントローラ３２０がそれぞれのフラッシュメモリ３００の書き込み回数を読み取るように構成してもよい。
【００５６】
尚、フラッシュメモリ３００をスロット単位で交換する場合には、フラッシュメモリ３００の書き込み回数がスロット間でばらつく可能性がある。スロット間で書き込み分散処理を実行することで、このようなばらつきを解消し、フラッシュメモリ３００への書き込み回数をスロット間で均等化できる。
【００５７】
また、記憶装置３０全体の中の複数の記憶領域（スロット、フラッシュメモリ又はセクタ等の記憶単位）において、ライト寿命が所定の閾値を超えるタイミングがほぼ同時に重なる場合も想定され得る。このような場合には、ライト寿命が所定の閾値を超えるタイミングが先行する記憶領域のデータを優先的に移動させた後で、ライト寿命が所定の閾値を超えるタイミングが後行する記憶領域のデータを移動させるのが好ましい。
【００５８】
次に、図１７乃至図１８を参照しながら、管理端末５０に表示される管理画面について説明する。図１７は、フラッシュディスク３１の管理画面を示す。この管理画面では、フラッシュディスク３１のアクセス属性や容量（ライト可能容量、限定ライト容量、残存ライト容量、リードオンリ容量など）が表示される。同図において“Ｎ”は通常状態のフラッシュディスクを示し、“Ｌ”はライト制限用途のフラッシュディスクを示し、“Ｓ”はスペア用のフラッシュディスクを示し、“Ｆ”は障害が生じたフラッシュディスクを示し、“Ｒ”はリードオンリのアクセス属性が設定されたフラッシュディスクを示す。ここで、ストレージ管理者が何れかのフラッシュディスク３１を管理画面上で選択すると、選択されたフラッシュディスク３１のライト寿命、残存使用回数、予測使用期間などが表示される。
【００５９】
本実施形態によれば、フラッシュメモリの書き込み回数を階層的に均等化できるので、フラッシュディスクの使用寿命を長期化できる。また、本実施形態では、セクタ単位で書き込み分散処理を実行する例を示したが、セクタ単位よりも大きな記憶容量を単位として書き込み処理を分散してもよく、或いはセクタ単位よりも小さな記憶容量を単位として書き込み処理を分散してもよい。
【図面の簡単な説明】
【００６０】
【図１】本実施形態に係るストレージシステムのハードウェア構成図である。
【図２】フラッシュディスクのハードウェア構成図である。
【図３】フラッシュディスクのメモリ空間の説明図である。
【図４】各フラッシュディスクへの書き込み処理を分散する処理を示す説明図である。
【図５】フラッシュディスク管理テーブルの説明図である。
【図６】フラッシュディスク管理テーブルの説明図である。
【図７】各フラッシュディスクへの書き込み処理を分散する処理を示す説明図である。
【図８】フラッシュディスクの対応関係を示す説明図である。
【図９】フラッシュディスク管理テーブルの説明図である。
【図１０】書き込み分散処理を示すフローチャートである。
【図１１】フラッシュメモリ管理テーブルの説明図である。
【図１２】フラッシュメモリ管理テーブルの説明図である。
【図１３】スロット内管理テーブルの説明図である。
【図１４】スロット内管理テーブルの説明図である。
【図１５】スロット間管理テーブルの説明図である。
【図１６】スロット間管理テーブルの説明図である。
【図１７】フラッシュディスク管理画面の説明図である。
【図１８】フラッシュディスク管理画面の説明図である。
【符号の説明】
【００６１】
１０…ストレージシステム  ２０…コントローラ  ３０…記憶装置  ３１…フラッシュディスク  ３００…フラッシュメモリ  ３１０…スロット  ３２０…フラッシュメモリコントローラ  ３３０…インタフェース  ３４０…マイクロプロセッサ  ３５０…メモリ
【図１】
2008015769.tif 000003
【図２】
2008015769.tif 000004
【図３】
2008015769.tif 000005
【図４】
2008015769.tif 000006
【図５】
2008015769.tif 000007
【図６】
2008015769.tif 000008
【図７】
2008015769.tif 000009
【図８】
2008015769.tif 000010
【図９】
2008015769.tif 000011
【図１０】
2008015769.tif 000012
【図１１】
2008015769.tif 000013
【図１２】
2008015769.tif 000014
【図１３】
2008015769.tif 000015
【図１４】
2008015769.tif 000016
【図１５】
2008015769.tif 000017
【図１６】
2008015769.tif 000018
【図１７】
2008015769.tif 000019
【図１８】
2008015769.tif 000020