(57)【要約】【課題】パディング処理におけるデータ読み込みの際に、データが破損した場合であって、データの誤りを訂正する誤り訂正符号を用いてもデータの復元ができなかった場合であっても、書き込み処理を続行することができるストレージ制御装置、データ復元装置およびストレージシステムを提供する。【解決手段】パディング処理部２２のパディング処理の際に、一の半導体記憶装置３１のデータが破損した場合であって、データの誤りを訂正する誤り訂正符号を用いてもデータの復元ができなかった場合に、ストレージ制御装置２０からデータ復元装置３０に対してデータ復元要求を発行し、データ復元装置３０側でデータ復元要求に応じ、他の半導体記憶装置３１からデータを読み込んでデータの復元処理を行い、復元結果をストレージ制御装置２０のパディング処理部２２に返してパディング処理を実行する。【選択図】        図３
2010015197.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性の半導体記憶装置に対する書き込み要求のサイズを、前記半導体記憶装置に対する書き込みサイズに適合させるパディング処理を実行するパディング処理部と、
前記パディング処理部のパディング処理によって前記半導体記憶装置に対する書き込みサイズに適合させられた前記書き込み要求を、前記半導体記憶装置に書き込む書き込み部と、
前記パディング処理部のパディング処理の際に、前記半導体記憶装置のデータが破損した場合であって、データの誤りを訂正する誤り訂正符号を用いてもデータの復元ができなかった場合に、データの破損を復元するデータ復元装置に対してデータ復元要求を発行する復元要求処理部と、
を備え、
前記パディング処理部は、前記データ復元要求に応じて復元された復元データを前記データ復元装置から受け取って前記パディング処理を実行する、
ことを特徴とするストレージ制御装置。
【請求項２】
前記データ復元装置は、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）コントローラである、
ことを特徴とする請求項１記載のストレージ制御装置。
【請求項３】
前記不揮発性の半導体記憶装置は、ハードディスクドライブと同じ接続インタフェース規格を持つＮＡＮＤ型フラッシュメモリであるＳＳＤ（Solid State Drive）を記録媒体とする、
ことを特徴とする請求項１記載のストレージ制御装置。
【請求項４】
不揮発性の半導体記憶装置を制御するストレージ制御装置から発行された破損データのデータ復元要求に応じ、前記破損データを含まない他の前記半導体記憶装置からデータを読み込み、データの復元処理を行う復元処理部と、
前記復元処理部による復元結果を前記ストレージ制御装置へ出力する復元結果出力部と、
を備えることを特徴とするデータ復元装置。
【請求項５】
前記不揮発性の半導体記憶装置は、ハードディスクドライブと同じ接続インタフェース規格を持つＮＡＮＤ型フラッシュメモリであるＳＳＤ（Solid State Drive）を記録媒体とする、
ことを特徴とする請求項４記載のデータ復元装置。
【請求項６】
不揮発性の半導体記憶装置に対する書き込み要求のサイズを、前記半導体記憶装置に対する書き込みサイズに適合させるパディング処理を実行するパディング処理部と、
前記パディング処理部のパディング処理によって前記半導体記憶装置に対する書き込みサイズに適合させられた前記書き込み要求を、前記半導体記憶装置に書き込む書き込み部と、
前記パディング処理部のパディング処理の際に、前記半導体記憶装置のデータが破損した場合であって、データの誤りを訂正する誤り訂正符号を用いてもデータの復元ができなかった場合に、データ復元要求を発行する復元要求処理部と、
前記復元要求処理部から発行された前記データ復元要求に応じ、他の前記半導体記憶装置からデータを読み込み、データの復元処理を行う復元処理部と、
前記復元処理部による復元結果を前記パディング処理部へ出力する復元結果出力部と、
を備え、
前記パディング処理部は、前記復元結果を用いて前記パディング処理を実行する、
ことを特徴とするストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、データ復元装置およびストレージシステムに関する。
【背景技術】
【０００２】
近年、記憶媒体の１つとして、ＮＡＮＤ型フラッシュメモリが広く普及しつつある。ＮＡＮＤ型フラッシュメモリは、電源供給を停止しても情報が保持可能である不揮発性メモリである。
【０００３】
このようなＮＡＮＤ型フラッシュメモリにおいては、大容量化および高集積化に伴って、書き込んだデータの経年変化や読み出し処理に伴うデータ破損であるリードディスターブの影響が顕著化しており、保存したデータが劣化することにより、記憶したデータを正しく再生できなくなる可能性が高まる、という問題が存在する。経年変化は、時間経過と共に、電荷を蓄積したフローティングゲートから次第に電荷が抜けることでデータに誤りが生じる現象である。また、リードディスターブは、データを読み出したメモリセルに隣接したメモリセルのフローティングゲートに微妙な電荷が蓄えられることによって、記憶したデータに誤りが生じる現象である。
【０００４】
そこで、ＮＡＮＤ型フラッシュメモリにおいては、上述のような経年変化とリードディスターブの問題を解決すべく、発生したデータの誤りを訂正する誤り訂正符号（Error Correcting Code）を用いることで正しいデータを復元することが可能になっている。
【０００５】
加えて、ＮＡＮＤ型フラッシュメモリにおいては、誤り訂正を行った後で、再びＮＡＮＤ型フラッシュメモリへ書き直すリフレッシュ処理を行うことで、ＮＡＮＤ型フラッシュメモリ上へ記憶したデータが完全に破壊されることを防ぎ、データ保持期間を増加させることが可能になっている。
【０００６】
近年、ハードディスクドライブ（ＨＤＤ）と同じ接続インタフェース規格（ＡＴＡ規格）を持つＮＡＮＤ型フラッシュメモリが開発されており、ＳＳＤ（Solid State Drive）と呼ばれている。このようなＳＳＤは、ＨＤＤに比べてデータの読み込み性能に優れるとともに、低消費電力・耐衝撃性を有している。
【０００７】
ところで、ＮＡＮＤ型フラッシュメモリにデータを記憶させる手法としては、ブロックと呼ばれる単位で一度データを消去してから書き込みを行うもの、ページと呼ばれる単位でデータの読み出しや書き込みを行うもの、これらの消去・読み出し・書き込みの単位が固定されていたりするものがある。
【０００８】
一方、サーバコンピュータ，ストレージシステムのコントローラ，パーソナルコンピュータなどのホスト機器が、ＨＤＤに代表される二次記憶装置に対してデータの読み出しおよび書き込みを行う単位は、セクタと呼ばれる。セクタは、ＮＡＮＤ型フラッシュメモリのような半導体記憶素子の消去、読み出し、書き込みの単位とは独立に定められている。たとえば、半導体記憶素子のブロックの大きさ（ブロックサイズ）は５１２キロバイト、ページの大きさ（ページサイズ）は４キロバイトであるのに対して、ホスト機器のセクタの大きさ（セクタサイズ）は、５１２バイトのように定められている。
【０００９】
つまり、ＨＤＤに代えてＳＳＤで二次記憶装置を構成する場合には、ホスト機器からのＳＳＤのブロックサイズやページサイズより小さい書き込み要求（セクタサイズ）を、ＳＳＤのブロックサイズやページサイズに適合させて、ＳＳＤに書き込む必要がある。このような処理は、パディング処理と呼ばれている（例えば、非特許文献１参照）。
【００１０】
パディング処理によるデータ書き込み処理の概要を以下に説明する。
（１）ホスト機器から、ＳＳＤで構成された二次記憶装置に対して、ＳＳＤのブロックサイズやページサイズより小さいデータサイズ（セクタサイズ）の書き込み要求が送られる。
（２）ＳＳＤで構成された二次記憶装置内部の作業領域に書き込み要求のデータを保存するとともに、書き込み先領域内の書き込み要求に応じた更新部分を除く未変更部分のデータをパディング用データとして読み込んで作業領域に書き込み要求のデータとともに保存する。
（３）書き込み先領域の削除処理を行った後、作業領域のデータ（書き込み要求のデータおよびパディング用データ）を書き込み先領域に書き込む。
【００１１】
【非特許文献１】４．４ＢＳＤの設計と実装  Marshall Kirk McKusickほか 著、砂原秀樹 監訳、七丈直弘 訳  P.233  6.2ブロックデバイス
【発明の開示】
【発明が解決しようとする課題】
【００１２】
ところが、上述したようなパディング処理においては、書き込み先領域内の書き込み要求に応じた更新部分を除く未変更部分のデータをパディング用データとして読み込む際に、読み出し処理に伴うデータ破損であるリードディスターブが生じた場合であって、誤り訂正符号（Error Correcting Code）による誤り訂正ができずにデータ読み込みエラーが起きた場合には、書き込み要求のデータおよびＳＳＤ自体には何も問題はなくとも、書き込み処理を続行することができないと判定されてしまう、という問題がある。
【００１３】
本発明は、上記に鑑みてなされたものであって、パディング処理におけるデータ読み込みの際に、データが破損した場合であって、データの誤りを訂正する誤り訂正符号を用いてもデータの復元ができなかった場合であっても、書き込み処理を続行することができるストレージ制御装置、データ復元装置およびストレージシステムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するために、本発明のストレージ制御装置は、不揮発性の半導体記憶装置に対する書き込み要求のサイズを、前記半導体記憶装置に対する書き込みサイズに適合させるパディング処理を実行するパディング処理部と、前記パディング処理部のパディング処理によって前記半導体記憶装置に対する書き込みサイズに適合させられた前記書き込み要求を、前記半導体記憶装置に書き込む書き込み部と、前記パディング処理部のパディング処理の際に、前記半導体記憶装置のデータが破損した場合であって、データの誤りを訂正する誤り訂正符号を用いてもデータの復元ができなかった場合に、データの破損を復元するデータ復元装置に対してデータ復元要求を発行する復元要求処理部と、を備え、前記パディング処理部は、前記データ復元要求に応じて復元された復元データを前記データ復元装置から受け取って前記パディング処理を実行する、ことを特徴とする。
【００１５】
また、本発明のデータ復元装置は、不揮発性の半導体記憶装置を制御するストレージ制御装置から発行された破損データのデータ復元要求に応じ、前記破損データを含まない他の前記半導体記憶装置からデータを読み込み、データの復元処理を行う復元処理部と、前記復元処理部による復元結果を前記ストレージ制御装置へ出力する復元結果出力部と、を備えることを特徴とする。
【００１６】
また、本発明のストレージシステムは、不揮発性の半導体記憶装置に対する書き込み要求のサイズを、前記半導体記憶装置に対する書き込みサイズに適合させるパディング処理を実行するパディング処理部と、前記パディング処理部のパディング処理によって前記半導体記憶装置に対する書き込みサイズに適合させられた前記書き込み要求を、前記半導体記憶装置に書き込む書き込み部と、前記パディング処理部のパディング処理の際に、前記半導体記憶装置のデータが破損した場合であって、データの誤りを訂正する誤り訂正符号を用いてもデータの復元ができなかった場合に、データ復元要求を発行する復元要求処理部と、前記復元要求処理部から発行された前記データ復元要求に応じ、他の前記半導体記憶装置からデータを読み込み、データの復元処理を行う復元処理部と、前記復元処理部による復元結果を前記パディング処理部へ出力する復元結果出力部と、を備え、前記パディング処理部は、前記復元結果を用いて前記パディング処理を実行する、ことを特徴とする。
【発明の効果】
【００１７】
本発明によれば、パディング処理部のパディング処理の際に、一の半導体記憶装置のデータが破損した場合であって、データの誤りを訂正する誤り訂正符号を用いてもデータの復元ができなかった場合に、ストレージ制御装置からデータ復元装置に対してデータ復元要求を発行し、データ復元装置側でデータ復元要求に応じ、他の半導体記憶装置からデータを読み込んでデータの復元処理を行い、復元結果をストレージ制御装置のパディング処理部に返してパディング処理を実行するようにしたことにより、例えデータが破損した場合であって、データの誤りを訂正する誤り訂正符号を用いてもデータの復元ができなかった場合であっても、データ復元装置の復元機能（例えば、ＲＡＩＤ機能）と組み合わせることで当該データを他の半導体記憶装置に保存していたデータから復元することができるので、半導体記憶装置内部での誤り訂正能力を超えた誤り訂正が可能となり、書き込み処理を続行することができる、という効果を奏する。
【発明を実施するための最良の形態】
【００１８】
以下に添付図面を参照して、この発明にかかるストレージ制御装置、データ復元装置およびストレージシステムの最良な実施の形態を詳細に説明する。なお、本発明は以下の記述に限定されるものではなく、本発明の要旨を逸脱しない範囲において適宜変更可能である。
【００１９】
本発明の実施の一形態を図１ないし図８に基づいて説明する。図１は、本発明の第１の実施の形態にかかるストレージシステム１００の概略構成を示すブロック図である。図１に示すように、ストレージシステム１００は、ＰＣ（Personal Computer）等のホスト装置１０と、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）コントローラ３０と、ストレージ装置４０とで構成されている。ストレージ装置４０は、ストレージ制御装置として機能するコントローラ２０と、不揮発性半導体記憶装置３１とを複数組有している。なお、図１においては、コントローラ２０と不揮発性半導体記憶装置３１とを別体で設けたが、コントローラ２０は、不揮発性半導体記憶装置３１内にそれぞれ組み込まれるものであっても良い。
【００２０】
ホスト装置１０は、ＲＡＩＤコントローラ３０を介してコントローラ２０に対してデータの書き込みや読み込みを要求する指示情報を出力する。以下、データの書き込みを要求する指示情報を「書き込み要求」と呼び、データの読み込みを要求する指示情報を「読み込み要求」と呼ぶ。なお、ＲＡＩＤコントローラ３０を介してホスト装置１０からコントローラ２０に出力される書き込み要求には、少なくとも書き込み対象のデータが含まれているものとし、また、読み込み要求には、読み込み先となる複数の不揮発性半導体記憶装置３１のアドレス情報（例えば、ＬＢＡ：Logical  Block  Addressing）が含まれているものとする。
【００２１】
不揮発性半導体記憶装置３１は、不揮発性半導体素子を利用した記憶媒体であり、例えば、ハードディスクドライブ（ＨＤＤ）と同じ接続インタフェース規格（ＡＴＡ規格）を持つＮＡＮＤ型フラッシュメモリ（不揮発性半導体素子）であるＳＳＤ（Solid State Drive）などがある。本実施の形態では、ＳＳＤを例とするが特に限定されるものではない。
【００２２】
ＲＡＩＤコントローラ３０は、ＰＣ等に内蔵される耐障害性・冗長性を持つＲＡＩＤ構成のストレージシステムにおけるデータ復元装置である。ＲＡＩＤコントローラ３０は、複数の不揮発性半導体記憶装置３１を、データの破損を回避するＲＡＩＤ技術を用いて管理し、これら複数の不揮発性半導体記憶装置３１により論理的に構成される記憶領域に対し、データの書き込みや読み出しをホスト装置１０からの要求に応じて実行する。
【００２３】
具体的に、ＲＡＩＤコントローラ３０は、複数の不揮発性半導体記憶装置３１をＲＡＩＤ１、５、６の何れか又はこれらの組み合わせとした構成とすることで、複数の不揮発性半導体記憶装置３１の耐障害性・冗長性を実現している。以下、本実施の形態では複数の不揮発性半導体記憶装置３１をＲＡＩＤ５の構成とした態様について説明する。
【００２４】
ＲＡＩＤ５は、パリティと呼ばれる誤り訂正符号の記憶用に割り当てる記憶装置と、データの記憶用に割り当てる記憶装置とを、ストライプ毎に順次変更するものである。ＲＡＩＤ５を実装するディスクアレイ装置では、耐障害性の向上、大容量化、リード処理の高速化が実現できる。
【００２５】
図２は、ＲＡＩＤ５で構成された複数の不揮発性半導体記憶装置３１の記憶領域を示す模式図である。なお、図２は４台の不揮発性半導体記憶装置３１（不揮発性半導体記憶装置３１１〜３１４）により構成した例であり、当該複数の不揮発性半導体記憶装置３１の記憶領域に記憶された１２個のデータＡ〜Ｌの状態を示している。
【００２６】
ＲＡＩＤ５を構成する不揮発性半導体記憶装置３１の記憶領域は、コントローラ２０により、データの書き込みまたは読み込みの単位となる複数の論理ブロックに分割される。図２に示した例では、データＡ〜Ｌの夫々やパリティＰ１〜Ｐ４の夫々が格納された領域が、１つの論理ブロックを示している。
【００２７】
ここで、パリティＰ１〜Ｐ４は、同一のストライプ領域（０〜３）に属する複数のデータから算出された復元情報であって、この復元情報に基づいて同一のストライプ領域に属するデータを復元することが可能となっている。例えば、パリティＰ１はストライプ番号０に属するデータＡ、Ｂ、Ｃから生成されており、このパリティＰ１を用いることで、データＡ、Ｂ、Ｃのうち何れか一のデータにエラーが発生した場合、残りのデータとパリティＰ１とからエラーの発生したデータを復元することができる。なお、データが格納される論理ブロック及びパリティが格納される論理ブロック（以下、パリティ領域という）は、所定のルールに基づき定められているものとするが、その配置位置は図２の例に限定されないものとする。
【００２８】
複数の不揮発性半導体記憶装置３１は、ＲＡＩＤコントローラ３０によるＲＡＩＤ管理の下、データを記憶する。なお、不揮発性半導体記憶装置３１の個数は、ＲＡＩＤコントローラ３０が使用するＲＡＩＤの規約に応じた個数（例えば、ＲＡＩＤ１であれば２個以上、ＲＡＩＤ５ならば３個以上）であれば特に問わないものとする。
【００２９】
＜コントローラ２０の説明＞
次に、図３を参照して、コントローラ２０の構成および処理について詳細に説明する。図３は、コントローラ２０の詳細構成を示すブロック図である。コントローラ２０は、ＡＳＩＣやＣＰＵ等の処理装置、コントローラ２０の動作を制御する所定のプログラムが格納されたＲＯＭや当該処理装置のワーク領域となるＲＡＭ等の記憶装置を備えており（何れも図示せず）、当該処理装置と記憶装置に格納されたプログラムとの協働により、図３に示すように、ホストインタフェース部２１、パディング処理部２２、コマンド処理部２３、復元要求処理部２４、ストレージインタフェース部２５の各機能部を実現するものとする。
【００３０】
ホストインタフェース部２１は、ホスト装置１０（ＲＡＩＤコントローラ３０）と接続するためのインタフェース装置であって、ホスト装置１０（ＲＡＩＤコントローラ３０）とコントローラ２０（コマンド処理部２３および復元要求処理部２４）との間で行われるコマンドの授受を制御する。
【００３１】
ストレージインタフェース部２５は、不揮発性半導体記憶装置３１と接続するためのインタフェース装置であって、不揮発性半導体記憶装置３１とコントローラ２０（コマンド処理部２３）との間で行われるデータの授受を制御する。
【００３２】
コマンド処理部２３は、ホストインタフェース部２１を介して入力されるホスト装置１０からの要求に応じた不揮発性半導体記憶装置３１に対するデータの書き込みや読み込みを、ストレージインタフェース部２５を介して行う。特に、コマンド処理部２３は、不揮発性半導体記憶装置３１に対するデータの書き込みについては、パディング処理部２２のパディング処理後に行う。
【００３３】
パディング処理部２２は、ＳＳＤである不揮発性半導体記憶装置３１を用いる場合に、ＨＤＤと同じ接続インタフェース規格（ＡＴＡ規格）を持つために生じるホスト装置１０からのＳＳＤのブロックサイズやページサイズより小さい書き込み要求（セクタサイズ）を（図４参照）、ＳＳＤのブロックサイズやページサイズに適合させて、ＳＳＤに書き込む処理であるパディング処理を実行する。
【００３４】
図５は、パディング処理を含むデータ書き込み処理の概要を示す模式図である。図５に示すように、ホスト装置１０から、ＳＳＤである不揮発性半導体記憶装置３１に対して、ＳＳＤのブロックサイズやページサイズより小さいデータサイズ（セクタサイズ）の書き込み要求が送られると、ＳＳＤである不揮発性半導体記憶装置３１の内部の作業領域３３に書き込み要求のデータを保存するとともに、ＳＳＤである不揮発性半導体記憶装置３１の書き込み先領域３２内の書き込み要求に応じた更新部分を除く未変更部分のデータをパディング用データとして読み込んで作業領域３３に書き込み要求のデータとともに保存してパディング処理を完了する（図５の（１））。そして、書き込み先領域３２の削除処理を行った後、作業領域３３のデータ（書き込み要求のデータおよびパディング用データ）を書き込み先領域３２に書き込む（図５の（２））。これにより、ホスト装置１０からのＳＳＤのブロックサイズやページサイズより小さい書き込み要求（セクタサイズ）を、ＳＳＤのブロックサイズやページサイズに適合させることができる。
【００３５】
ところで、ＳＳＤを構成する不揮発性半導体素子がＮＡＮＤ型フラッシュメモリの場合、書き込んだデータの経年変化や読み出し処理に伴うデータ破損であるリードディスターブ等の理由により、記憶セル上のデータが破損する可能性がある。一般に、ＮＡＮＤ型フラッシュメモリを記録媒体とする記憶装置においては、誤り訂正符号（Error Correcting Code）を用いることで破損したデータから正しいデータを復元することが可能になっている。しかしながら、誤り訂正符号（Error Correcting Code）を用いても必ずしも全ての誤りを訂正できるとは限らず、この場合、データを読み込み時にエラーが発生することになる。
【００３６】
そこで、本実施の形態においては、パディング処理部２２のパディング処理における書き込み先領域３２の未変更部分のデータ読み込みの際に、書き込んだデータの経年変化や読み出し処理に伴うデータ破損であるリードディスターブが生じた場合であって、データの誤りを訂正する誤り訂正符号（Error Correcting Code）を用いてもデータの復元ができなかった場合には、コマンド処理部２３が、復元要求処理部２４に対して当該データ復元要求をＲＡＩＤコントローラ３０に対して発行するように指示を出す。
【００３７】
復元要求処理部２４は、ホストインタフェース部２１を介してＲＡＩＤコントローラ３０に対してデータ復元要求を発行するとともに、後述するＲＡＩＤコントローラ３０から出力される復元結果を受け取り、復元結果をコマンド処理部２３に返す。
【００３８】
そして、コマンド処理部２３が復元要求処理部２４から受け取った復元データをパディング処理部２２に渡すと、パディング処理部２２は復元要求処理部２４から受け取った復元データをＳＳＤである不揮発性半導体記憶装置３１の内部の作業領域３３に書き込み要求のデータとともに保存し、ＳＳＤのブロックサイズやページサイズに適合させてパディング処理を完了する。その後、コマンド処理部２３は、書き込み部として機能し、書き込み先領域３２のデータを削除し、作業領域３３のデータを書き込み先領域３２に書き込む。
【００３９】
＜ＲＡＩＤコントローラ３０の説明＞
次に、図６を参照して、ＲＡＩＤコントローラ３０の構成および処理について詳細に説明する。図６は、ＲＡＩＤコントローラ３０の詳細構成を示すブロック図である。図６に示すＲＡＩＤコントローラ３０は、上述したような複数の不揮発性半導体記憶装置３１を接続し、ある特定の不揮発性半導体記憶装置３１が故障してデータの読み込みができなくなった場合でも、その不揮発性半導体記憶装置３１に保存していたデータを、その他の不揮発性半導体記憶装置３１に保存していたデータから復元できるような、耐障害性・冗長性を持つＲＡＩＤ構成のストレージシステムにおけるＲＡＩＤコントローラを想定している。
【００４０】
ＲＡＩＤコントローラ３０は、ＡＳＩＣやＣＰＵ等の処理装置、ＲＡＩＤコントローラ３０の動作を制御する所定のプログラムが格納されたＲＯＭや当該処理装置のワーク領域となるＲＡＭ等の記憶装置を備えており（何れも図示せず）、当該処理装置と記憶装置に格納されたプログラムとの協働により、図６に示すように、インタフェース部１１、復元要求処理部１２、復元処理部１３の各機能部を実現するものとする。
【００４１】
インタフェース部１１は、コントローラ２０と接続するためのインタフェース装置であって、コントローラ２０とＲＡＩＤコントローラ３０（復元要求処理部１２および復元処理部１３）との間で行われるコマンドの授受を制御する。
【００４２】
復元要求処理部１２は、インタフェース部１１を介してコントローラ２０から発行されたデータ復元要求を受け取り、受け取ったデータ復元要求を復元処理部１３に渡す。
【００４３】
復元処理部１３は、復元要求処理部１２からデータ復元要求を受け取ると、当該データ復元に必要なデータを他の不揮発性半導体記憶装置３１（ＳＳＤ）から読み込み、データの復元を試みる。より詳細には、復元処理部１３は、読み込みエラーが発生したデータについて、当該データと同一のストライプ領域に属する他のデータ及びパリティを用いて、読み込みエラーが発生したデータの復元を行う。
【００４４】
復元処理部１３は、復元結果出力部としても機能し、当該データを復元できた場合は、インタフェース部１１を介して復元結果をコントローラ２０に対して出力する。
【００４５】
これにより、パディング処理部２２のパディング処理における書き込み先領域３２の未変更部分のデータ読み込みの際に、書き込んだデータの経年変化や読み出し処理に伴うデータ破損であるリードディスターブが生じた場合であってデータの誤りを訂正する誤り訂正符号（Error Correcting Code）を用いてもデータの復元ができなかった場合には、データの破損について、ＲＡＩＤコントローラ３０の復元処理部１３が読み込みエラーの発生したデータを当該データと同一のストライプ領域に属する他のデータ及びパリティに基づいて復元し、コントローラ２０のパディング処理部２２はＲＡＩＤコントローラ３０から受け取った復元データをＳＳＤである不揮発性半導体記憶装置３１の内部の作業領域３３に書き込み要求のデータとともに保存し、ＳＳＤのブロックサイズやページサイズに適合させてパディング処理を完了する。その後、コマンド処理部２３は、書き込み先領域３２のデータを削除し、作業領域３３のデータを書き込み先領域３２に書き込ませる。
【００４６】
＜コントローラ２０の書き込み処理＞
次に、コントローラ２０の書き込み処理の流れについて説明する。図７は、コントローラ２０により実行される書き込み処理の流れを示すフローチャートである。なお、本処理の前提として、複数の不揮発性半導体記憶装置３１はＲＡＩＤ５で構成されているものとし、データの書き込みは複数の不揮発性半導体記憶装置３１のストライプ単位で行われるものとする。
【００４７】
コントローラ２０のコマンド処理部２３は、書き込み要求を受け取ると（ステップＳ１）、書き込み要求がＳＳＤのブロックサイズに合致したデータサイズであるか否かを判断する（ステップＳ２）。
【００４８】
書き込み要求がＳＳＤのブロックサイズに合致したデータサイズでない場合、パディング処理部２２によるパディング処理前である場合には（ステップＳ２のＮｏ）、パディング処理部２２は、ＳＳＤである不揮発性半導体記憶装置３１の書き込み先領域３２内の書き込み要求に応じた更新部分を除く未変更部分のデータをパディング用データとして読み込む（ステップＳ３）。
【００４９】
読み込みエラーが起きなかった場合には（ステップＳ４のＮｏ）、読み取った未変更部分のデータ（パディング用データ）を書き込み要求のデータとともに作業領域３３に保存する（ステップＳ５）。上述のようなステップＳ３〜Ｓ５の処理は、ＳＳＤのブロックサイズに合致したデータサイズになるまで繰り返される。
【００５０】
ＳＳＤのブロックサイズに合致したデータサイズになったと判断された場合（ステップＳ２のＹｅｓ）、コマンド処理部２３は、書き込み先領域３２の削除処理を行った後（ステップＳ６）、作業領域３３のデータ（書き込み要求のデータおよびパディング用データ）を書き込み先領域３２に書き込み（ステップＳ７）、書き込み成功の応答をＲＡＩＤコントローラ３０（ホスト装置１０）に返す（ステップＳ８）。
【００５１】
一方、データの誤りを訂正する誤り訂正符号（Error Correcting Code）を用いてもデータの復元ができず、読み込みエラーが起きた場合には（ステップＳ４のＹｅｓ）、復元要求処理部２４は、ホストインタフェース部２１を介してＲＡＩＤコントローラ３０に対してデータ復元要求を発行する（ステップＳ９）。
【００５２】
その後、復元要求処理部２４は、ＲＡＩＤコントローラ３０から出力される復元結果を受け取ると、復元結果をコマンド処理部２３に返し（ステップＳ１０のＹｅｓ）、コマンド処理部２３はデータの復元ができたか否かを判断する（ステップＳ１１）。
【００５３】
コマンド処理部２３がデータの復元ができないと判断した場合には（ステップＳ１１のＮｏ）、書き込み失敗の応答をＲＡＩＤコントローラ３０（ホスト装置１０）に返す（ステップＳ１２）。
【００５４】
コマンド処理部２３がデータの復元ができたと判断した場合には（ステップＳ１１のＹｅｓ）、ステップＳ５に戻り、パディング処理部２２は受け取った復元データを書き込み要求のデータとともに作業領域３３に保存する（ステップＳ５）。
【００５５】
＜ＲＡＩＤコントローラ３０のデータ復元処理＞
次に、ＲＡＩＤコントローラ３０のデータ復元処理の流れについて説明する。図８は、ＲＡＩＤコントローラ３０により実行されるデータ復元処理の流れを示すフローチャートである。
【００５６】
ＲＡＩＤコントローラ３０の復元要求処理部１２は、インタフェース部１１を介してコントローラ２０から発行されたデータ復元要求を受け取ると（ステップＳ２１のＹｅｓ）、復元処理部１３は、当該データ復元に必要なデータを他の不揮発性半導体記憶装置３１（ＳＳＤ）から読み込み、データの復元を試みる（ステップＳ２２）。
【００５７】
復元処理部１３は、当該データを復元できた場合には（ステップＳ２３のＹｅｓ）、インタフェース部１１を介して復元結果（復元データ）をコントローラ２０に対して出力し、復元成功の応答を返す（ステップＳ２４）。
【００５８】
一方、復元処理部１３は、当該データを復元できなかった場合には（ステップＳ２３のＮｏ）、復元失敗の応答を返す（ステップＳ２５）。
【００５９】
このように本実施の形態によれば、パディング処理部２２のパディング処理におけるデータ読み込みの際に、ＲＡＩＤが構成された複数の不揮発性半導体記憶装置３１のデータが破損した場合であって、データの誤りを訂正する誤り訂正符号を用いてもデータの復元ができなかった場合に、コントローラ２０からＲＡＩＤコントローラ３０に対してデータ復元要求を発行し、ＲＡＩＤコントローラ３０側でデータ復元要求に応じ、ＲＡＩＤを構成する他の半導体記憶装置３１からデータを読み込んでデータの復元処理を行い、復元結果をコントローラ２０のパディング処理部２２に返してパディング処理を実行するようにしたことにより、例えデータが破損した場合であって、データの誤りを訂正する誤り訂正符号を用いてもデータの復元ができなかった場合であっても、ＲＡＩＤ機能と組み合わせることで当該データを他の半導体記憶装置３１に保存していたデータから復元することができるので、半導体記憶装置３１の内部での誤り訂正能力を超えた誤り訂正が可能となり、書き込み処理を続行することができる。
【００６０】
なお、本実施の形態においては、データ復元装置としてＲＡＩＤ構成のストレージシステムにおけるＲＡＩＤコントローラ３０を想定しているが、専用のストレージシステムではなく、そのような機能を持ったコンピュータシステムでもよい。
【００６１】
また、データ復元処理は、たとえば耐障害性・冗長性を持つストレージシステムのデータ復元処理を利用するのではなく、専用に設計されたものを利用してもよい。
【図面の簡単な説明】
【００６２】
【図１】本発明の第１の実施の形態にかかるストレージシステムの概略構成を示すブロック図である。
【図２】ＲＡＩＤ５で構成されたストレージの記憶領域を示す模式図である。
【図３】コントローラの詳細構成を示すブロック図である。
【図４】書き込み要求のサイズを示す模式図である。
【図５】パディング処理を含むデータ書き込み処理の概要を示す模式図である。
【図６】ＲＡＩＤコントローラの詳細構成を示すブロック図である。
【図７】コントローラにより実行される書き込み処理の流れを示すフローチャートである。
【図８】ＲＡＩＤコントローラにより実行されるデータ復元処理の流れを示すフローチャートである。
【符号の説明】
【００６３】
１３      復元処理部、復元結果出力部
２０      ストレージ制御装置
２２      パディング処理部
２３      書き込み部
２４      復元要求処理部
３０      データ復元装置
３１      半導体記憶装置
１００    ストレージシステム
【図１】
2010015197.tif 000003
【図２】
2010015197.tif 000004
【図３】
2010015197.tif 000005
【図４】
2010015197.tif 000006
【図５】
2010015197.tif 000007
【図６】
2010015197.tif 000008
【図７】
2010015197.tif 000009
【図８】
2010015197.tif 000010