(57)【要約】【課題】データ損失の危険性を低減させることができるデータ制御装置、ストレージシステムおよびプログラムを提供する。【解決手段】複数の不揮発性の半導体記憶装置に対するデータの書き込み頻度に差をつける必要があると判断した場合（Ｓ１）、各半導体記憶装置に対するデータの書き込み頻度に差をつけるべく、各半導体記憶装置に対してデータと共に誤り訂正符号データをストライプブロック単位で分散させて記録するデータ破損の復元機能にかかるデータおよび誤り訂正符号データの配置情報を記録したマッピング表で管理されているストライプブロックのデータを入れ替えて配置情報を変更する（Ｓ２）。これにより、各半導体記憶装置に対するデータの書き込み頻度に差がつき、複数の半導体記憶装置が同時期に故障してしまうことを回避させることができるので、データ損失の危険性を低減させることができる。【選択図】        図１０
2010015516.tif 000002
【特許請求の範囲】
【請求項１】
データと共に、当該データとは別に付加される冗長なデータである誤り訂正符号データを、複数の不揮発性の半導体記憶装置に対してストライプブロック単位で分散させて記録するデータ破損の復元機能に関するものであって、前記データおよび前記誤り訂正符号データの配置情報を記録したマッピング表を管理するマッピング表管理部と、
前記各半導体記憶装置に対するデータの書き込み頻度に差をつける必要があるか否かを判断する判断部と、
前記判断部により前記各半導体記憶装置に対するデータの書き込み頻度に差をつける必要があると判断した場合、前記各半導体記憶装置に対するデータの書き込み頻度に差をつけるべく、前記マッピング表で管理されている前記ストライプブロックのデータを入れ替えて前記配置情報を変更する変更処理部と、
を備えることを特徴とするデータ制御装置。
【請求項２】
前記ストライプブロック毎の書き込み頻度の情報を管理する書込頻度管理部と、
前記各半導体記憶装置の残り寿命の情報を管理する寿命情報管理部と、
を備え、
前記判断部は、前記ストライプブロック毎の前記書き込み頻度の情報と、前記各半導体記憶装置の前記残り寿命の情報と、前記マッピング表および前記ストライプブロック毎の前記書き込み頻度の情報から算出できる前記各半導体記憶装置に対する書き込み頻度の情報とに応じて、前記各半導体記憶装置に対するデータの書き込み頻度に差をつける必要があるか否かを判断する、
ことを特徴とする請求項１記載のデータ制御装置。
【請求項３】
前記変更処理部は、前記各半導体記憶装置に対するデータの書き込み頻度について段階的に差がつくように、前記マッピング表で管理されている前記ストライプブロックのデータを入れ替えて前記配置情報を変更するとともに、前記ストライプブロックのデータを入れ替える、
ことを特徴とする請求項１記載のデータ制御装置。
【請求項４】
前記変更処理部は、前記各半導体記憶装置に対するデータの書き込み頻度に差をつけた後、一定期間が経過した場合に、前記各半導体記憶装置に対するデータの書き込み頻度が平滑化するように、前記マッピング表で管理されている前記ストライプブロックのデータを入れ替えて前記配置情報を変更する、
ことを特徴とする請求項３記載のデータ制御装置。
【請求項５】
前記変更処理部は、余命が短い上位２つの前記半導体記憶装置の余命差が所定の閾値を下回った場合に、余命が短い上位２つの前記半導体記憶装置への書き込み頻度に差がつくように、前記マッピング表で管理されている前記ストライプブロックのデータを入れ替えて前記配置情報を変更する、
ことを特徴とする請求項１記載のデータ制御装置。
【請求項６】
前記変更処理部は、余命が短い前記半導体記憶装置により多くの書き込み頻度を割り当てる、
ことを特徴とする請求項５記載のデータ制御装置。
【請求項７】
前記変更処理部は、前記ストライプブロック入れ替え判定についての制約事項として、耐障害性構成を保持しておくために、同一ストライプグループ内での入れ替えのみを許可する、
ことを特徴とする請求項１記載のデータ制御装置。
【請求項８】
前記変更処理部は、前記ストライプブロック入れ替え判定についての制約事項として、耐障害性構成を保持しておくために、同一の前記半導体記憶装置上の前記ストライプブロックの入れ替えのみを許可する、
ことを特徴とする請求項１記載のデータ制御装置。
【請求項９】
前記変更処理部は、前記ストライプブロックのデータの入れ替えに、スワップ領域を用いる、
ことを特徴とする請求項１記載のデータ制御装置。
【請求項１０】
前記変更処理部は、前記ストライプブロックのデータの入れ替えに、ＲＡＩＤ（Redundant Arrays of Independent/Inexpensive Disks）の復元機能を用いる、
ことを特徴とする請求項１記載のデータ制御装置。
【請求項１１】
複数の不揮発性の半導体記憶装置と、
請求項１ないし１０のいずれか一記載のデータ制御装置と、
を備えることを特徴とするストレージシステム。
【請求項１２】
コンピュータを、
データと共に、当該データとは別に付加される冗長なデータである誤り訂正符号データを、複数の不揮発性の半導体記憶装置に対してストライプブロック単位で分散させて記録するデータ破損の復元機能に関するものであって、前記データおよび前記誤り訂正符号データの配置情報を記録したマッピング表を管理するマッピング表管理部と、
前記各半導体記憶装置に対するデータの書き込み頻度に差をつける必要があるか否かを判断する判断部と、
前記判断部により前記各半導体記憶装置に対するデータの書き込み頻度に差をつける必要があると判断した場合、前記各半導体記憶装置に対するデータの書き込み頻度に差をつけるべく、前記マッピング表で管理されている前記ストライプブロックのデータを入れ替えて前記配置情報を変更する変更処理部と、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ制御装置、ストレージシステムおよびプログラムに関する。
【背景技術】
【０００２】
近年、記憶媒体の１つとして、ＮＡＮＤ型フラッシュメモリが広く普及しつつある。ＮＡＮＤ型フラッシュメモリは、電源供給を停止しても情報が保持可能である不揮発性メモリである。
【０００３】
このようなＮＡＮＤ型フラッシュメモリにおいては、大容量化および高集積化に伴って、書き込んだデータの経年変化や読み出し処理に伴うデータ破損であるリードディスターブの影響が顕著化しており、保存したデータが劣化することにより、記憶したデータを正しく再生できなくなる可能性が高まる、という問題が存在する。経年変化は、時間経過と共に、電荷を蓄積したフローティングゲートから次第に電荷が抜けることでデータに誤りが生じる現象である。また、リードディスターブは、データを読み出したメモリセルに隣接したメモリセルのフローティングゲートに微妙な電荷が蓄えられることによって、記憶したデータに誤りが生じる現象である。
【０００４】
そこで、ＮＡＮＤ型フラッシュメモリにおいては、上述のような経年変化とリードディスターブの問題を解決すべく、発生したデータの誤りを訂正する誤り訂正符号（Error Correcting Code）を用いることで正しいデータを復元することが可能になっている。
【０００５】
加えて、ＮＡＮＤ型フラッシュメモリにおいては、誤り訂正を行った後で、再びＮＡＮＤ型フラッシュメモリへ書き直すリフレッシュ処理を行うことで、ＮＡＮＤ型フラッシュメモリ上へ記憶したデータが完全に破壊されることを防ぎ、データ保持期間を増加させることが可能になっている。
【０００６】
また、ＮＡＮＤ型フラッシュメモリにおいては、特定のブロックのみにデータの書き込み／消去が集中するとそのブロックだけ早く寿命を迎えてしまうことから、外部からのアドレス信号をチップ内部的に異なるアドレスに変換して、各ブロックの書き込み／消去回数を平均化するウェアレベリングが行われている。
【０００７】
近年、ハードディスクドライブ（ＨＤＤ）と同じ接続インタフェース規格（ＡＴＡ規格）を持つＮＡＮＤ型フラッシュメモリが開発されており、ＳＳＤ（Solid State Drive）と呼ばれている。このようなＳＳＤは、ＨＤＤに比べてデータの読み込み性能に優れるとともに、低消費電力・耐衝撃性を有している。
【０００８】
一方、サーバ環境で使用されるディスクアレイなどのストレージシステムでは、信頼性を向上させるために、非特許文献１に示すような複数の記憶装置を接続したＲＡＩＤ（Redundant Arrays of Independent/Inexpensive Disks）を構成することが多い。例えばＲＡＩＤ５は、パリティと呼ばれる誤り訂正符号の記憶用に割り当てる記憶装置と、データの記憶用に割り当てる記憶装置とを、ストライプ毎に順次変更することにより、ある特定の記憶装置が故障してデータの読み込みができなくなった場合でも、故障した記憶装置に保存していたデータを、その他の記憶装置に保存していたデータから復元することができる。このようなＲＡＩＤ機能を実装するディスクアレイ装置では、耐障害性の向上、大容量化、リード処理の高速化が実現できる。また、読み書き要求を、各記憶装置に対してストライプブロックと呼ばれる単位で要求を分散することにより、各記憶装置の負荷分散を図ることもできる。このような負荷分散を行うことにより、各記憶装置へのアクセスが均一化されると期待される。
【０００９】
そして、上述のようにＨＤＤに代えてＳＳＤで二次記憶装置を構成する場合にも、ＲＡＩＤを構成することは可能である。
【００１０】
【非特許文献１】D. Patterson, G. Gibsonand R. Katz. “A Case for Redundant Arrays of Inexpensive Disks （RAID）”,Proceedings of the 1988 ACM SIGMOD, pp.109-116, June 1988.
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、ＨＤＤに代えてＳＳＤで二次記憶装置を構成し、かつ、ＲＡＩＤを構成する場合、ＳＳＤにおけるウェアレベリングによる書き込み／消去回数の平滑化が行われるとともに、ＲＡＩＤ機能による負荷分散によって、各ＳＳＤへの書き込み回数が均一化される可能性が高くなり、複数のＳＳＤが同時期に故障する可能性が高くなってしまうという問題がある。このようにＲＡＩＤを構成するＳＳＤが同時期に故障してしまうと、交換保守作業が難しくなるため、データ損失の危険性が生じる。
【００１２】
本発明は、上記に鑑みてなされたものであって、データ損失の危険性を低減させることができるデータ制御装置、ストレージシステムおよびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決し、目的を達成するために、本発明のデータ制御装置は、データと共に、当該データとは別に付加される冗長なデータである誤り訂正符号データを、複数の不揮発性の半導体記憶装置に対してストライプブロック単位で分散させて記録するデータ破損の復元機能に関するものであって、前記データおよび前記誤り訂正符号データの配置情報を記録したマッピング表を管理するマッピング表管理部と、前記各半導体記憶装置に対するデータの書き込み頻度に差をつける必要があるか否かを判断する判断部と、前記判断部により前記各半導体記憶装置に対するデータの書き込み頻度に差をつける必要があると判断した場合、前記各半導体記憶装置に対するデータの書き込み頻度に差をつけるべく、前記マッピング表で管理されている前記ストライプブロックのデータを入れ替えて前記配置情報を変更する変更処理部と、を備えることを特徴とする。
【００１４】
また、本発明のストレージシステムは、複数の不揮発性の半導体記憶装置と、請求項１ないし１０のいずれか一記載のデータ制御装置と、を備えることを特徴とする。
【００１５】
また、本発明のプログラムは、コンピュータを、データと共に、当該データとは別に付加される冗長なデータである誤り訂正符号データを、複数の不揮発性の半導体記憶装置に対してストライプブロック単位で分散させて記録するデータ破損の復元機能に関するものであって、前記データおよび前記誤り訂正符号データの配置情報を記録したマッピング表を管理するマッピング表管理部と、前記各半導体記憶装置に対するデータの書き込み頻度に差をつける必要があるか否かを判断する判断部と、前記判断部により前記各半導体記憶装置に対するデータの書き込み頻度に差をつける必要があると判断した場合、前記各半導体記憶装置に対するデータの書き込み頻度に差をつけるべく、前記マッピング表で管理されている前記ストライプブロックのデータを入れ替えて前記配置情報を変更する変更処理部と、として機能させることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、複数の不揮発性の半導体記憶装置に対するデータの書き込み頻度に差をつける必要があると判断した場合、各半導体記憶装置に対するデータの書き込み頻度に差をつけるべく、各半導体記憶装置に対してデータと共に誤り訂正符号データをストライプブロック単位で分散させて記録するデータ破損の復元機能にかかるデータおよび誤り訂正符号データの配置情報を記録したマッピング表で管理されているストライプブロックのデータを入れ替えて配置情報を変更することにより、例えば同一ストライプグループ内では、誤り訂正符号データを書き込むストライプブロック（パリティブロック）の書き込み回数が一番多くなるため、パリティブロックを所望の半導体記憶装置に多く割り当てるようにすれば、各半導体記憶装置に対するデータの書き込み頻度に差がつき、複数の半導体記憶装置が同時期に故障してしまうことを回避させることができるので、データ損失の危険性を低減させることができる、という効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下に添付図面を参照して、この発明にかかるデータ制御装置、ストレージシステムおよびプログラムの最良な実施の形態を詳細に説明する。なお、本発明は以下の記述に限定されるものではなく、本発明の要旨を逸脱しない範囲において適宜変更可能である。
【００１８】
本発明の実施の一形態を図１ないし図２０に基づいて説明する。図１は、本発明の実施の一形態にかかるストレージシステム１００の概略構成を示すブロック図である。図１に示すように、ストレージシステム１００は、ＰＣ（Personal Computer）等のホスト装置１０と、データ制御装置であるＲＡＩＤ（Redundant Arrays of Independent/Inexpensive Disks）コントローラ３０と、ストレージ装置４０とで構成されている。ストレージ装置４０は、記憶素子へのアクセス制御を行なうコントローラ２０と、不揮発性半導体記憶装置３１とを複数組有している。なお、図１においては、コントローラ２０と不揮発性半導体記憶装置３１とを別体で設けたが、コントローラ２０は、不揮発性半導体記憶装置３１内にそれぞれ組み込まれるものであっても良い。
【００１９】
ホスト装置１０は、ＲＡＩＤコントローラ３０を介してコントローラ２０に対してデータの書き込みや読み込みを要求する指示情報を出力する。以下、データの書き込みを要求する指示情報を「書き込み要求」と呼び、データの読み込みを要求する指示情報を「読み込み要求」と呼ぶ。なお、ＲＡＩＤコントローラ３０を介してホスト装置１０からコントローラ２０に出力される書き込み要求には、少なくとも書き込み対象のデータが含まれているものとし、また、読み込み要求には、読み込み先となる複数の不揮発性半導体記憶装置３１のアドレス情報（例えば、ＬＢＡ：Logical  Block  Addressing）が含まれているものとする。
【００２０】
不揮発性半導体記憶装置３１は、不揮発性半導体素子を利用した記憶媒体であり、例えば、ハードディスクドライブ（ＨＤＤ）と同じ接続インタフェース規格（ＡＴＡ規格）を持つＮＡＮＤ型フラッシュメモリ（不揮発性半導体素子）であるＳＳＤ（Solid State Drive）などがある。本実施の形態では、ＳＳＤを例とするが特に限定されるものではない。
【００２１】
ＲＡＩＤコントローラ３０は、ＰＣ等に内蔵される耐障害性・冗長性を持つＲＡＩＤ構成のストレージシステムにおけるデータ復元装置である。ＲＡＩＤコントローラ３０は、複数の不揮発性半導体記憶装置３１を、データの破損を回避するＲＡＩＤ技術を用いて管理し、これら複数の不揮発性半導体記憶装置３１により論理的に構成される記憶領域に対し、データの書き込みや読み出しをホスト装置１０からの要求に応じて実行する。
【００２２】
具体的に、ＲＡＩＤコントローラ３０は、複数の不揮発性半導体記憶装置３１をＲＡＩＤ５、６の何れか又はこれらの組み合わせとした構成とすることで、複数の不揮発性半導体記憶装置３１の耐障害性・冗長性を実現している。以下、本実施の形態では複数の不揮発性半導体記憶装置３１をＲＡＩＤ５の構成とした態様について説明する。
【００２３】
ＲＡＩＤ５は、パリティと呼ばれる誤り訂正符号の記憶用に割り当てる記憶装置と、データの記憶用に割り当てる記憶装置とを、ストライプ毎に順次変更するものである。ＲＡＩＤ５を実装するディスクアレイ装置では、耐障害性の向上、大容量化、リード処理の高速化が実現できる。
【００２４】
図２は、ＲＡＩＤ５で構成された複数の不揮発性半導体記憶装置３１の記憶領域を示す模式図である。なお、図２は４台の不揮発性半導体記憶装置３１（不揮発性半導体記憶装置３１１〜３１４）により構成した例であり、当該複数の不揮発性半導体記憶装置３１の記憶領域に記憶された１２個のデータＡ〜Ｌの状態を示している。
【００２５】
ＲＡＩＤ５を構成する不揮発性半導体記憶装置３１の記憶領域は、コントローラ２０により、データの書き込みまたは読み込みの単位となる複数の論理ブロックに分割される。図２に示した例では、データＡ〜Ｌの夫々やパリティＰ１〜Ｐ４の夫々が格納された領域が、１つの論理ブロックを示している。
【００２６】
ここで、パリティＰ１〜Ｐ４は、同一のストライプ領域（０〜３）に属する複数のデータから算出された復元情報であって、この復元情報に基づいて同一のストライプ領域に属するデータを復元することが可能となっている。例えば、パリティＰ１はストライプ番号０に属するデータＡ、Ｂ、Ｃから生成されており、このパリティＰ１を用いることで、データＡ、Ｂ、Ｃのうち何れか一のデータにエラーが発生した場合、残りのデータとパリティＰ１とからエラーの発生したデータを復元することができる。なお、データが格納される論理ブロック及びパリティが格納される論理ブロック（以下、パリティ領域という）は、所定のルールに基づき定められているものとするが、その配置位置は図２の例に限定されないものとする。
【００２７】
複数の不揮発性半導体記憶装置３１は、ＲＡＩＤコントローラ３０によるＲＡＩＤ管理の下、データを記憶する。なお、不揮発性半導体記憶装置３１の個数は、ＲＡＩＤコントローラ３０が使用するＲＡＩＤの規約に応じた個数（例えば、ＲＡＩＤ５ならば３個以上）であれば特に問わないものとする。
【００２８】
＜ストレージ装置４０の説明＞
次に、図３を参照して、ストレージ装置４０の構成および処理について詳細に説明する。図３は、ストレージ装置４０の詳細構成を示すブロック図である。ストレージ装置４０のコントローラ２０は、ＡＳＩＣやＣＰＵ等の処理装置、コントローラ２０の動作を制御する所定のプログラムが格納されたＲＯＭや当該処理装置のワーク領域となるＲＡＭ等の記憶装置を備えており（何れも図示せず）、当該処理装置と記憶装置に格納されたプログラムとの協働により、図３に示すように、ホストインタフェース部２１、パディング処理部２２、コマンド処理部２３、ストレージインタフェース部２５の各機能部を実現するものとする。
【００２９】
ホストインタフェース部２１は、ホスト装置１０（ＲＡＩＤコントローラ３０）と接続するためのインタフェース装置であって、ホスト装置１０（ＲＡＩＤコントローラ３０）とコントローラ２０（コマンド処理部２３）との間で行われるコマンドの授受を制御する。
【００３０】
ストレージインタフェース部２５は、不揮発性半導体記憶装置３１と接続するためのインタフェース装置であって、不揮発性半導体記憶装置３１とコントローラ２０（コマンド処理部２３）との間で行われるデータの授受を制御する。
【００３１】
コマンド処理部２３は、ホストインタフェース部２１を介して入力されるホスト装置１０からの要求に応じた不揮発性半導体記憶装置３１に対するデータの書き込みや読み込みを、ストレージインタフェース部２５を介して行う。特に、コマンド処理部２３は、不揮発性半導体記憶装置３１に対するデータの書き込みについては、パディング処理部２２のパディング処理後に行う。
【００３２】
パディング処理部２２は、ＳＳＤである不揮発性半導体記憶装置３１を用いる場合に、ＨＤＤと同じ接続インタフェース規格（ＡＴＡ規格）を持つために生じるホスト装置１０からのＳＳＤのブロックサイズやページサイズより小さい書き込み要求（セクタサイズ）を（図４参照）、ＳＳＤのブロックサイズやページサイズに適合させて、ＳＳＤに書き込む処理であるパディング処理を実行する。
【００３３】
図５は、パディング処理を含むデータ書き込み処理の概要を示す模式図である。図５に示すように、ホスト装置１０から、ＳＳＤである不揮発性半導体記憶装置３１に対して、ＳＳＤのブロックサイズやページサイズより小さいデータサイズ（セクタサイズ）の書き込み要求が送られると、ＳＳＤである不揮発性半導体記憶装置３１の内部の作業領域３３に書き込み要求のデータを保存するとともに、ＳＳＤである不揮発性半導体記憶装置３１の書き込み先領域３２内の書き込み要求に応じた更新部分を除く未変更部分のデータをパディング用データとして読み込んで作業領域３３に書き込み要求のデータとともに保存してパディング処理を完了する（図５の（１））。そして、書き込み先領域３２の削除処理を行った後、作業領域３３のデータ（書き込み要求のデータおよびパディング用データ）を書き込み先領域３２に書き込む（図５の（２））。これにより、ホスト装置１０からのＳＳＤのブロックサイズやページサイズより小さい書き込み要求（セクタサイズ）を、ＳＳＤのブロックサイズやページサイズに適合させることができる。
【００３４】
ＳＳＤを構成する不揮発性半導体素子がＮＡＮＤ型フラッシュメモリの場合、書き込んだデータの経年変化や読み出し処理に伴うデータ破損であるリードディスターブ等の理由により、記憶セル上のデータが破損する可能性がある。一般に、ＮＡＮＤ型フラッシュメモリを記録媒体とする記憶装置においては、誤り訂正符号（Error Correcting Code）を用いることで破損したデータから正しいデータを復元することが可能になっている。
【００３５】
＜ＲＡＩＤコントローラ３０の説明＞
次に、図６を参照して、ＲＡＩＤコントローラ３０の構成および処理について詳細に説明する。図６は、ＲＡＩＤコントローラ３０の詳細構成を示すブロック図である。図６に示すＲＡＩＤコントローラ３０は、上述したような複数の不揮発性半導体記憶装置３１を接続し、ある特定の不揮発性半導体記憶装置３１が故障してデータの読み込みができなくなった場合でも、その不揮発性半導体記憶装置３１に保存していたデータを、その他の不揮発性半導体記憶装置３１に保存していたデータから復元できるような、耐障害性・冗長性を持つＲＡＩＤ構成のストレージシステムにおけるＲＡＩＤコントローラを想定している。
【００３６】
ＲＡＩＤコントローラ３０は、ＡＳＩＣやＣＰＵ等の処理装置、ＲＡＩＤコントローラ３０の動作を制御する所定のプログラムが格納されたＲＯＭや当該処理装置のワーク領域となるＲＡＭ等の記憶装置を備えており（何れも図示せず）、当該処理装置と記憶装置に格納されたプログラムとの協働により、図６に示すように、ホストインタフェース部１１、コマンド処理部１２、マッピング表管理部１３、書込頻度管理部１４、寿命情報管理部１５、マッピング変更処理部１６、インタフェース部１７の各機能部を実現するものとする。
【００３７】
ホストインタフェース部１１は、ホスト装置１０からのコマンドを受け付け、また、コマンドに対する応答をホスト装置１０に対して返却する。
【００３８】
コマンド処理部１２は、ホスト装置１０から受け付けたコマンドを処理する。コマンド処理部１２は、ホスト装置１０から受け付けたコマンドを処理するにあたり、マッピング表管理部１３のマッピング情報に基づき、必要なコマンドをそれぞれのストレージ装置４０の各不揮発性半導体記憶装置３１に発行する。また、コマンド処理部１２は、書き込みの実行情報を書込頻度管理部１４と、寿命情報管理部１５に伝える。
【００３９】
マッピング表管理部１３は、ストライプマッピング表を管理する。図７は、ストライプマッピング表の一例を示す模式図である。図７に示すストライプマッピング表の例は、図２のストライプブロックと対応関係を有しているものである。このようなストライプマッピング表は、複数の不揮発性半導体記憶装置３１に対してデータと共に誤り訂正符号データをストライプブロック単位で分散させて記録するデータ破損の復元機能にかかるデータおよび誤り訂正符号データの配置情報を記録する。
【００４０】
なお、ストライプマッピング表は、ＲＡＩＤコントローラ３０上の不揮発性記憶領域に保存してもよいし、不揮発性半導体記憶装置３１の定められた領域に保存するようにしておいて、ストレージシステム１００の起動時にＲＡＩＤコントローラ３０が読み込むようにしてもよい。
【００４１】
書込頻度管理部１４は、それぞれのストライプブロックの書き込み頻度の情報を管理する。例えば、書き込み頻度を算出する指標の一例として、各ストライプブロックに対する書き込み回数が挙げられる。図８は、ストライプブロック単位の書き込み回数計測表の一例を示す模式図である。図８に示すストライプブロック単位の書き込み回数計測表は、書き込み頻度を算出する情報として書き込み回数を採用した場合の書き込み情報表である。図８に示すストライプブロック単位の書き込み回数計測表においては、例えばストライプブロック６の書き込みが、８００回発生したことを示している。
【００４２】
このようなストライプブロック単位の書き込み回数計測表は、後述するマッピング変更処理部１６におけるストライプブロックの入れ替えの判断材料として利用することができる。計測時点までのアクセスパターンが分かることから、書き込み回数計測表を用いることにより、どのストライプブロックを入れ替えたらどのくらい書き込み頻度が変化するかが分かるようになる。また、書き込み回数が支配的なストライプブロックが分かることから、書き込み回数計測表を用いることにより、どのストライプブロックを入れ替えたらより効率的に書き込み頻度を変化させることができるかが分かるようになる。
【００４３】
ストライプブロック単位の書き込み回数計測表は、上述したストライプマッピング表と同様に、ＲＡＩＤコントローラ３０上の不揮発性記憶領域に保存してもよいし、不揮発性半導体記憶装置３１の定められた領域に保存するようにしておいて、ストレージシステム１００の起動時にＲＡＩＤコントローラ３０が読み込むようにしてもよい。
【００４４】
寿命情報管理部１５は、各不揮発性半導体記憶装置３１の残り寿命の情報を管理する。例えば、残り寿命を算出する指標の一例として、各不揮発性半導体記憶装置３１（ドライブ）に対する書き込み回数が挙げられる。図９は、ドライブ毎の書き込み回数計測表の一例を示す模式図である。図９に示す不揮発性半導体記憶装置３１（ドライブ）毎の書き込み回数計測表は、残り寿命を算出する情報として書き込み回数を採用した場合の情報表である。図９に示す不揮発性半導体記憶装置３１（ドライブ）毎の書き込み回数計測表においては、どの不揮発性半導体記憶装置３１（ドライブ）にどのぐらい書き込み回数があるのかを記憶しておくことにより、書き込み頻度の割り当ての判断材料とすることができ、例えば書き込み回数が多いドライブにより多い書き込み頻度を割り当てることができる。
【００４５】
ドライブ毎の書き込み回数計測表は、上述したストライプマッピング表と同様に、ＲＡＩＤコントローラ３０上の不揮発性記憶領域に保存してもよいし、不揮発性半導体記憶装置３１の定められた領域に保存するようにしておいて、ストレージシステム１００の起動時にＲＡＩＤコントローラ３０が読み込むようにしてもよい。また、残り寿命を算出するために必要な情報（書き込み回数等）が、各不揮発性半導体記憶装置３１のＳＭＡＲＴ情報等から直接取得できる場合は、ＲＡＩＤコントローラ３０上の不揮発性記憶領域に保存しておく必要はない。
【００４６】
マッピング変更処理部１６は、マッピング（配置情報）を変更する処理を行う。マッピング変更処理部１６は入れ替え処理部１８を有している。入れ替え処理部１８は、マッピングを変更する際に、ストライプブロックのデータを入れ替える処理を行う。また、マッピング変更処理部１６は判断部１９を有している。判断部１９は、各不揮発性半導体記憶装置３１（ドライブ）に対するデータの書き込み頻度に差をつける必要があるか否かを判断する。
【００４７】
インタフェース部１７は、ストレージ装置４０のコントローラ２０と接続するためのインタフェース装置であって、コントローラ２０とＲＡＩＤコントローラ３０との間で行われるコマンドの授受を制御する。
【００４８】
＜ＲＡＩＤコントローラ３０のマッピング変更処理＞
次に、ＲＡＩＤコントローラ３０のマッピング変更処理の流れについて説明する。図１０は、マッピング変更処理の流れを概略的に示すフローチャートである。図１０に示すように、自動または手動による任意のタイミング、定期的に実行されるようなスケジューリング等により、処理が開始されると、マッピング変更処理部１６の判断部１９は、現在の状態から、
・それぞれの不揮発性半導体記憶装置３１の書き込み頻度に差をつける必要があるか
・それぞれの不揮発性半導体記憶装置３１の書き込み頻度を平滑化する必要があるか
・そのままの状態でよいか
を判断する（ステップＳ１）。
【００４９】
なお、現在の状態を判断する指標としては、図９に示すドライブ毎の書き込み回数計測表から判断できる各不揮発性半導体記憶装置３１の残り寿命と、図８に示すストライプブロック単位の書き込み回数計測表から算出できる各ストライプブロックの書き込み頻度と、各不揮発性半導体記憶装置３１に対する現在の書き込み頻度と、が挙げられる。各不揮発性半導体記憶装置３１に対する現在の書き込み頻度は、図７に示すストライプマッピング表と各ストライプブロックの書き込み頻度とから算出できる。
【００５０】
ここで、各不揮発性半導体記憶装置３１の書き込み頻度に差をつける必要があると判断する場合は、例えば書き込み限界の手前である閾値内に、複数の不揮発性半導体記憶装置３１が存在するような場合である。
【００５１】
マッピング変更処理部１６は、各不揮発性半導体記憶装置３１の書き込み頻度に差をつける必要があると判断した場合は（ステップＳ１のＡ）、ステップＳ２に進み、各不揮発性半導体記憶装置３１の書き込み頻度に差をつける処理を行う。ステップＳ２の処理の詳細は後述する。
【００５２】
マッピング変更処理部１６は、各不揮発性半導体記憶装置３１の書き込み頻度を平滑化する必要があると判断した場合は（ステップＳ１のＣ）、ステップＳ３に進み、各不揮発性半導体記憶装置３１の書き込み頻度を平滑化する処理を行う。ステップＳ３の処理の詳細は後述する。
【００５３】
マッピング変更処理部１６は、そのままの状態でよいと判断した場合は（ステップＳ１のＢ）、特に処理を行わない。
【００５４】
なお、必要に応じて上記処理を繰り返してもよい。
【００５５】
次に、ステップＳ２の各不揮発性半導体記憶装置３１の書き込み頻度に差をつける処理について詳述する。ここで、書き込み頻度に差をつける方法として２つの方法を例示するが、例示する方法だけに限られない。
【００５６】
（第１の書き込み頻度に差をつける方法）
第１の書き込み頻度に差をつける方法としては、書き込み頻度を段階的に差をつける方法がある。図１１に示すように、初回設置後（１）、しばらくの間はストライプブロックごとのアクセス回数を計測し（２）、調査結果に基づき、書き込み頻度を段階的に差をつけて（書き込み頻度を傾かせて）、書き込み回数をばらつかせる（３）。その後、書き込み頻度を平滑化し、（必要であれば）平滑状態を維持するように随時調整する（４）。これにより、各不揮発性半導体記憶装置３１は、順番に寿命を迎えることになる。
【００５７】
なお、書き込み回数をばらつかせた後、書き込み頻度を平滑化するようにしたのは、不揮発性半導体記憶装置３１を交換した後も書き込み回数をばらつかせた状態であると、図１２に示すように、将来の交換時期に同程度の寿命のドライブが発生してしまうからである。
【００５８】
また、書き込み頻度を段階的に差をつけるようにしたのは（書き込み頻度を傾かせるようにしたのは）、図１３に示すように一極集中で書き込み頻度に差をつけた場合、交換後に同程度の寿命のドライブが顕在化するためである。
【００５９】
（第２の書き込み頻度に差をつける方法）
第２の書き込み頻度に差をつける方法としては、図１４に示すように、余命が短い上位２つのドライブの余命差が所定の閾値を下回った場合に（１）、余命が短い上位２つのドライブへの書き込み頻度に差をつける（２）。この場合、余命が短い方により多くの書き込み頻度を割り当てた方が効果的である。
【００６０】
ここで、図１５はステップＳ２の各不揮発性半導体記憶装置３１の書き込み頻度に差をつける処理の流れを示すフローチャートである。図１５に示すように、マッピング変更処理部１６は、書き込み頻度に差をつけるにあたって、どのように差をつけるか、各不揮発性半導体記憶装置３１の順位付けを行う（ステップＳ１１）。なお、順位付けの実施方法は、書き込み頻度に差をつける方法により異なる。
【００６１】
次に、マッピング変更処理部１６は、書き込み頻度に差をつける方法に応じ、書き込み頻度の目標値に近づけるために、どのストライプブロックを入れ替えればよいかを判定する（ステップＳ１２）。この場合、入れ替え判定結果として、複数のストライプブロックの入れ替えが判定される場合がある。
【００６２】
ところで、ストライプブロック入れ替え判定については、以下に示す制約事項があるため、最適な値になるとは限らない。
【００６３】
ＲＡＩＤに代表されるストレージシステムでは、ある特定の記憶装置が故障し、データの読み込みができなくなった場合でも、その記憶装置に保存していたデータを、その他の記憶装置に保存していたデータから復元できるように、耐障害性・冗長性を持っている。そのため、ストライプブロックを入れ替えたあとでも、前記冗長性を保っておく必要がある。
【００６４】
図２を例に挙げて説明する。図２に示すように、パリティブロックＰ１のパリティデータは、Ａ，Ｂ，Ｃのブロックから生成されるため、Ａ，Ｂ，Ｃ，Ｐ１のグループが冗長性を持っている（以降、冗長性を持っているグループをストライプグループと呼ぶ）。また、耐障害性を持つために、それぞれのブロックは独立した半導体記憶装置３１（ドライブ）に記録されている。例えば、Ａ，Ｂ，Ｃ，Ｐ１のストライプグループ内で、パリティブロックＰ１を含む任意の２つのストライプブロックを入れ替えても、それぞれのブロックが独立した半導体記憶装置３１（ドライブ）に記録されているため、耐障害性は保持される。したがって、ストライプグループ内でのストライプブロック入れ替えは可能である。
【００６５】
一方、ストライプブロックＣとＦを入れ替えると、Ａ，Ｂ，Ｃ，Ｐ１のストライプグループと、Ｄ，Ｅ，Ｆ，Ｐ２のストライプグループにおいて、それぞれのストライプグループを構成するブロックが独立した半導体記憶装置３１（ドライブ）に記録されない状態となるため、耐障害性がなくなってしまうため、データ損失の危険性がある。したがって、ストライプグループをまたがったストライプブロックの入れ替えは不可能である。
【００６６】
つまり、ストライプブロック入れ替え判定についての制約事項としては、耐障害性構成を保持しておくために、同一ストライプグループ内での入れ替えのみを許可している。なお、同一ドライブ上のストライプブロックは入れ替えても良い。
【００６７】
同一ストライプグループ内では、パリティブロックの書き込み回数が一番多くなる。したがって、結果的には、パリティブロックをある不揮発性半導体記憶装置３１に多く割り当てることになる。
【００６８】
続いて、マッピング変更処理部１６は、ステップＳ１２の判定結果に基づき、入れ替え処理部１８にてストライプブロックの入れ替え処理を行う（ステップＳ１３）。入れ替え処理は、図７に示すストライプマッピング表の情報を更新する処理と、ストライプブロックのデータを入れ替える処理の２つがある。入れ替え処理部１８における入れ替え処理は、判定結果の数だけ繰り返す。
【００６９】
なお、フローチャートには図示していないが、上記２つのストライプブロック入れ替え処理を行う際には、排他制御を行い、たとえば同時刻にコマンド処理部１２による処理が開始された場合の整合性を取る必要がある。
【００７０】
ここで、ストライプブロックのデータの入れ替え処理の具体例を説明する。なお、ストライプブロックのデータ入れ替え方法は例示する方法だけに限らない。また、入れ替え対象は、ストライプグループ内のストライプブロックなので、ストライプブロック内のパリティデータを更新する必要はない。
【００７１】
（第１のストライプブロックのデータの入れ替え処理）
第１のストライプブロックのデータの入れ替え処理としては、スワップ領域を用いる方法がある。図１６はスワップ領域を用いる入れ替え処理の流れを示すフローチャート、図１７はその模式図である。図１６に示すように、入れ替え処理部１８は、まず、入れ替える２つのストライプブロックの領域のうち、どちらか一方を領域１、他方を領域２とする（ステップＳ２１）。
【００７２】
次いで、入れ替え処理部１８は、図１７の（１）に示すように、領域１のデータをスワップ領域にコピーした後（ステップＳ２２）、図１７の（２）に示すように、領域２のデータを領域１にコピーする（ステップＳ２３）。
【００７３】
最後に、入れ替え処理部１８は、図１７の（３）に示すように、スワップ領域にコピーしたデータを領域２にコピーする（ステップＳ２４）。
【００７４】
（第２のストライプブロックのデータの入れ替え処理）
第２のストライプブロックのデータの入れ替え処理としては、ＲＡＩＤの復元機能を用いる方法がある。図１８はＲＡＩＤの復元機能を用いる入れ替え処理の流れを示すフローチャート、図１９はその模式図である。図１８に示すように、入れ替え処理部１８は、まず、入れ替える２つのストライプブロックの領域のうち、どちらか一方を領域１、他方を領域２とする（ステップＳ３１）。
【００７５】
次いで、入れ替え処理部１８は、図１９の（１）に示すように、領域１のデータを領域２にコピーした後（ステップＳ３２）、図１９の（２）に示すように、領域１を無効領域とみなし（ステップＳ３３）、図１９の（３）に示すように、ＲＡＩＤコントローラ３０が有しているＲＡＩＤの復元機能を用いて領域１のデータを復元する（ステップＳ３４）。復元されたデータは、もともと領域２にあったデータと同一になる。
【００７６】
最後に、入れ替え処理部１８は、図１９の（４）に示すように、復元されたデータを領域１にコピーする（ステップＳ３５）。
【００７７】
次に、ステップＳ３の各不揮発性半導体記憶装置３１の書き込み頻度を平滑化する処理について詳述する。
【００７８】
ここで、図２０はステップＳ３の各不揮発性半導体記憶装置３１の書き込み頻度を平滑化する処理の流れを示すフローチャートである。図２０に示すように、マッピング変更処理部１６は、全ての不揮発性半導体記憶装置３１の書き込み頻度が同程度になるためには、どのストライプブロックを入れ替えればよいかを判定する（ステップＳ４１）。この場合、入れ替え判定結果として、複数のストライプブロックの入れ替えが判定される場合がある。なお、ストライプブロック入れ替え判定については、前述したような制約事項があるため、最適な値になるとは限らない。
【００７９】
続いて、マッピング変更処理部１６は、ステップＳ４１の判定結果に基づき、入れ替え処理部１８にてストライプブロックの入れ替え処理を行う（ステップＳ４２）。前述した書き込み頻度に差をつける処理のときと同様に、入れ替え処理は、図７に示すストライプマッピング表の情報を更新する処理と、ストライプブロックのデータを入れ替える処理の２つがある。入れ替え処理部１８における入れ替え処理は、判定結果の数だけ繰り返す。ストライプブロックのデータの入れ替え処理については、前述したので、ここでの説明は、省略する。
【００８０】
このように本実施の形態によれば、複数の不揮発性の半導体記憶装置３１に対するデータの書き込み頻度に差をつける必要があると判断した場合、各半導体記憶装置３１に対するデータの書き込み頻度に差をつけるべく、各半導体記憶装置３１に対してデータと共に誤り訂正符号データをストライプブロック単位で分散させて記録するデータ破損の復元機能にかかるデータおよび誤り訂正符号データの配置情報を記録したマッピング表で管理されているストライプブロックのデータを入れ替えて配置情報を変更することにより、例えば同一ストライプグループ内では、誤り訂正符号データを書き込むストライプブロック（パリティブロック）の書き込み回数が一番多くなるため、パリティブロックを所望の半導体記憶装置３１に多く割り当てるようにすれば、各半導体記憶装置３１に対するデータの書き込み頻度に差がつき、複数の半導体記憶装置３１が同時期に故障してしまうことを回避させることができるので、データ損失の危険性を低減させることができる。
【００８１】
なお、本実施の形態においては、書込頻度管理部１４で管理する書き込み頻度を算出する情報として、図８に示すストライプブロック単位の書き込み回数を一例としてあげた。ストレージシステムコントローラ（ＲＡＩＤコントローラ３０）にはキャッシュメモリが搭載されていることが多く、キャッシュメモリにはアクセス頻度が高いストライプブロックの内容がキャッシュされていると考えることができる。したがって、図８に示したように書き込み回数を実際に計測するよりも精度が落ちる可能性があるものの、キャッシュの情報を参照することにより、ストライプブロック単位の書き込み頻度を算出することができる。また、当該情報はキャッシュメモリ上にあるため、書込頻度管理部１４が、図８に示すようなストライプブロック単位の書き込み回数計測表を持っていなくてもよい。
【００８２】
また、本実施の形態においては、寿命情報管理部１５で管理する寿命情報を算出する情報として、図９に示す不揮発性半導体記憶装置３１（ドライブ）の書き込み回数を一例としてあげた。このほかにも、不揮発性半導体記憶装置３１（ドライブ）から書き込み可能残り回数の情報が取得できる場合は、その情報を利用してもよい。前述したように、残り寿命を算出するために必要な情報が、不揮発性半導体記憶装置３１（ドライブ）から直接取得できる場合は、寿命情報表を持っていなくてもよい。
【００８３】
また、不揮発性半導体記憶装置３１（ドライブ）毎の書き込み可能上限回数の情報が取得できる場合は、不揮発性半導体記憶装置３１（ドライブ）ごとの書き込み回数を計測することで、書き換え可能な残り回数を算出することができるため、これが寿命情報となる。この場合、不揮発性半導体記憶装置３１（ドライブ）ごとの書き込み可能上限回数は、手動で入力してもよいし、自動的に情報を取得して入力できるようにしてもよい。
【００８４】
なお、本実施の形態においては、データ制御装置としてＲＡＩＤ構成のストレージシステムにおけるＲＡＩＤコントローラ３０を想定しているが、専用のストレージシステムではなく、そのような機能を持ったコンピュータシステムでもよい。
【図面の簡単な説明】
【００８５】
【図１】本発明の実施の一形態にかかるストレージシステムの概略構成を示すブロック図である。
【図２】ＲＡＩＤ５で構成された複数の不揮発性半導体記憶装置の記憶領域を示す模式図である。
【図３】ストレージ装置の詳細構成を示すブロック図である。
【図４】書き込み要求のサイズを示す模式図である。
【図５】パディング処理を含むデータ書き込み処理の概要を示す模式図である。
【図６】ＲＡＩＤコントローラの詳細構成を示すブロック図である。
【図７】ストライプマッピング表の一例を示す模式図である。
【図８】ストライプブロック単位の書き込み回数計測表の一例を示す模式図である。
【図９】ドライブ毎の書き込み回数計測表の一例を示す模式図である。
【図１０】マッピング変更処理の流れを概略的に示すフローチャートである。
【図１１】第１の書き込み頻度に差をつける方法を示す模式図である。
【図１２】半導体記憶装置毎の書き込み頻度を段階的に差をつける理由を示す模式図である。
【図１３】半導体記憶装置毎の書き込み頻度を段階的に差をつける理由を示す模式図である。
【図１４】第２の書き込み頻度に差をつける方法を示す模式図である。
【図１５】半導体記憶装置の書き込み頻度に差をつける処理の流れを示すフローチャートである。
【図１６】スワップ領域を用いる入れ替え処理の流れを示すフローチャートである。
【図１７】その模式図である。
【図１８】ＲＡＩＤの復元機能を用いる入れ替え処理の流れを示すフローチャートである。
【図１９】その模式図である。
【図２０】半導体記憶装置の書き込み頻度を平滑化する処理の流れを示すフローチャートである。
【符号の説明】
【００８６】
１３      マッピング表管理部
１４      書込頻度管理部
１５      寿命情報管理部
１６      変更処理部
１９      判断部
３０      データ制御装置
３１      半導体記憶装置
１００    ストレージシステム
【図１】
2010015516.tif 000003
【図２】
2010015516.tif 000004
【図３】
2010015516.tif 000005
【図４】
2010015516.tif 000006
【図５】
2010015516.tif 000007
【図６】
2010015516.tif 000008
【図７】
2010015516.tif 000009
【図８】
2010015516.tif 000010
【図９】
2010015516.tif 000011
【図１０】
2010015516.tif 000012
【図１１】
2010015516.tif 000013
【図１２】
2010015516.tif 000014
【図１３】
2010015516.tif 000015
【図１４】
2010015516.tif 000016
【図１５】
2010015516.tif 000017
【図１６】
2010015516.tif 000018
【図１７】
2010015516.tif 000019
【図１８】
2010015516.tif 000020
【図１９】
2010015516.tif 000021
【図２０】
2010015516.tif 000022