(57)【要約】【課題】リテンションに伴うエラーについて、データ復旧を容易に行う。【解決手段】複数の記憶媒体それぞれの記憶領域を所定の領域に分割した分割領域それぞれに書き込まれたデータ対して、複数の記憶媒体間で第１の誤り検出符号を生成する水平符号生成部１１０と、分割領域それぞれに互いに異なるタイミングで書き込まれたデータ対して、複数の記憶媒体ごとに第２の誤り検出符号を生成する垂直符号生成部１２０と、水平符号生成部１１０が生成した第１の誤り検出符号と、垂直符号生成部１２０が生成した第２の誤り符号とのそれぞれを、分割領域のうちのデータが書き込まれていない分割領域に書き込む符号書き込み部１３０とを有する。【選択図】図１
2018163450.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶媒体それぞれの記憶領域を所定の領域に分割した分割領域それぞれに書き込まれたデータ対して、前記複数の記憶媒体間で第１の誤り検出符号を生成する水平符号生成部と、
前記分割領域それぞれに互いに異なるタイミングで書き込まれたデータ対して、前記複数の記憶媒体ごとに第２の誤り検出符号を生成する垂直符号生成部と、
前記水平符号生成部が生成した前記第１の誤り検出符号と、前記垂直符号生成部が生成した前記第２の誤り符号とのそれぞれを、前記分割領域のうちの前記データが書き込まれていない分割領域に書き込む符号書き込み部とを有するデータ記憶制御装置。
【請求項２】
請求項１に記載のデータ記憶制御装置において、
前記水平符号生成部は、前記複数の記憶媒体のアドレスが互いに同じ分割領域に書き込まれたデータに対して、前記第１の誤り検出符号を生成し、
前記符号書き込み部は、前記水平符号生成部が生成した前記第１の誤り検出符号を、前記アドレスが、前記第１の誤り検出符号の生成の対象であるデータが書き込まれていた前記分割領域のアドレスと同じアドレスの前記分割領域に書き込むデータ記憶制御装置。
【請求項３】
請求項１または請求項２に記載のデータ記憶制御装置において、
前記垂直符号生成部は、前記複数の記憶媒体ごとの前記分割領域のうちの所定の分割領域に書き込まれたデータについて、前記第２の誤り検出符号を生成するデータ記憶制御装置。
【請求項４】
請求項１から３のいずれか１項に記載のデータ記憶制御装置において、
前記複数の記憶媒体に所定の順序で前記データを書き込むデータ書き込み部を有するデータ記憶制御装置。
【請求項５】
請求項１から４のいずれか１項に記載のデータ記憶制御装置において、
前記複数の記憶媒体は、シリコンディスクであるデータ記憶制御装置。
【請求項６】
複数の記憶媒体と、
前記複数の記憶媒体それぞれの記憶領域を所定の領域に分割した分割領域それぞれに書き込まれたデータ対して、前記複数の記憶媒体間で第１の誤り検出符号を生成する水平符号生成部と、
前記分割領域それぞれに互いに異なるタイミングで書き込まれたデータ対して、前記複数の記憶媒体ごとに第２の誤り検出符号を生成する垂直符号生成部と、
前記水平符号生成部が生成した前記第１の誤り検出符号と、前記垂直符号生成部が生成した前記第２の誤り符号とのそれぞれを、前記分割領域のうちの前記データが書き込まれていない分割領域に書き込む符号書き込み部とを有するデータ記憶システム。
【請求項７】
複数の記憶媒体それぞれの記憶領域を所定の領域に分割した分割領域それぞれに書き込まれたデータ対して、前記複数の記憶媒体間で第１の誤り検出符号を生成する処理と、
前記第１の誤り検出符号を、前記分割領域のうちの前記データが書き込まれていない分割領域に書き込む処理と、
前記分割領域それぞれに互いに異なるタイミングで書き込まれたデータ対して、前記複数の記憶媒体ごとに第２の誤り検出符号を生成する処理と、
前記第２の誤り符号を、前記分割領域のうちの前記データが書き込まれていない分割領域に書き込む処理とを行うデータ記憶方法。
【請求項８】
コンピュータに、
複数の記憶媒体それぞれの記憶領域を所定の領域に分割した分割領域それぞれに書き込まれたデータ対して、前記複数の記憶媒体間で第１の誤り検出符号を生成する手順と、
前記第１の誤り検出符号を、前記分割領域のうちの前記データが書き込まれていない分割領域に書き込む手順と、
前記分割領域それぞれに互いに異なるタイミングで書き込まれたデータ対して、前記複数の記憶媒体ごとに第２の誤り検出符号を生成する手順と、
前記第２の誤り符号を、前記分割領域のうちの前記データが書き込まれていない分割領域に書き込む手順とを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ記憶制御装置、データ記憶システム、データ記憶方法およびプログラムに関する。
【背景技術】
【０００２】
近年、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ：Ｓｉｌｉｃｏｎ  Ｄｉｓｃ（シリコンディスク）、フラッシュメモリなどの不揮発性媒体を使用）は、記憶容量の増大に従って、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ：磁気ディスク装置）を上回る物が市場に出てきている。今後のＨＤＤの容量向上も想定されるが、ＳＳＤのビット単価がＨＤＤのビット単価を下回ると予測されており、これまではビット単価が高価で、データ保存用途に用いられなかったＳＳＤを、データ保存用のアーカイブに用いることが予想される。これらのアーカイブの用途では、アクセス特性が、追記（データを書き換えずに、書き込みデータは既存のデータに追加する形で書いていく）を行うことが特徴であり、書き換えの頻度が低い。また、アーカイブの用途には、書き込みを行った直後は読み込みが頻繁に行われるが、時間を経るに従い、読み込みの頻度が急激に低下し、古くに記憶されたデータほど読み込みが行われなくなるという特性も持つ。
【０００３】
また、ＳＳＤに使われているフラッシュメモリは、大容量化が著しい。しかしながら、フラッシュメモリは、小さなコンデンサに電荷を蓄積するとういう原理上、高密度化するに従い、電荷の蓄積量が少なくなり、長期間放置すると電荷が放電し、データが失われ易いという特性も持つ。この電荷の保持期間はリテンション時間と呼ばれ、数年から数十年の間の値を持つ。電荷の再蓄積を行うには、フラッシュメモリに対して、そのセル（電荷の蓄積の単位）に対して同じデータを上書きすることでリテンション時間はリセットされる。
【０００４】
また、通常のＳＳＤの利用方法（書き換えが発生する）では、ＷｅａｒＬｅｖｅｌｉｎｇと呼ばれる、媒体の書き込み量を媒体全体に平準化することで、フラッシュメモリのもう１つの欠点である、セルの書き込み寿命（書き込み回数が限られる）を延ばす方法がある。このＷｅａｒＬｅｖｅｌｉｎｇが発生する条件では、セルへの書き込みの平準化を行うために、書き込まれて時間の経過したセルを優先的に書き直す。そのため、リテンションに関する問題（データの消失）は非常に発生しにくい。しかし、アーカイブの用途のように、追記がほとんどの場合では書き込み回数は既に平準化（１回）された状態であるため、ＷｅａｒＬｅｖｅｌｉｎｇのアルゴリズムは動作せず、古くに記憶されたデータが書き込まれたセルの更新は行われず、セルのデータの消失が発生するおそれがある。
【０００５】
これまでのＲＡＩＤやそれに類する冗長化手法は、ほぼ同時期にそれぞれのＳＳＤやフラッシュメモリの記憶素子単位同士のデータで冗長化が行われる。そのため、ほぼ同時期にデータの消失が発生する可能性が高い。これは、既存のＲＡＩＤの手法だと、冗長化が行われたＳＳＤやフラッシュメモリで同時にデータが消失する可能性があることを意味している。これにより、ＲＡＩＤ等で設定された冗長度を超えて、データの再現が出来ない可能性が高い。これは、フラッシュメモリを使ったＳＳＤのようなリテンションに伴うデータ消失に対して、既存のＲＡＩＤでは、データの保護が行えないことを意味している。これは、アーカイブデータのように、一度書き込まれると、アクセスが殆ど発生しないような用途に対してはデータ保護の手段としては意味をなさない。
【０００６】
ストレージ装置によっては、ＳＳＤやフラッシュメモリ（以下、記憶媒体と称する）を２次元に配列し、記憶媒体へのデータの配置を記憶媒体のエラー状況や、書き込み／Ｅｒａｓｅの状況に基づいて配置の工夫を行い、記憶媒体の寿命などによるエラーに対するデータロストを防ぐ手段を講じる手法が考えられている（例えば、特許文献１〜３参照）。また、さらに記憶媒体の配置を３次元に構成し、ｐａｒｉｔｙ等を用いてＲＡＩＤ構成を３重に行う方法が考えられている（例えば、非特許文献１参照。）。
【０００７】
また、複数行複数列のデータにおいて、同一行についての水平パリティビットと、同一列についての垂直パリティビットとを用いるエラー検出方式が考えられている（例えば、特許文献４参照。）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第５８４８３５３号
【特許文献２】特開２０１６−１０５３２０号公報
【特許文献３】特表２０１３−５３９１３２号公報
【特許文献４】特開２００２−２４６９１７号公報
【非特許文献】
【０００９】
【非特許文献１】上原稔、「大規模仮想ディスクにおける複数パリティ直交ＲＡＩＤ」、情報処理学会研究報告、Vol. 2011-DPS-149 No.4、２０１１年１１月２４日
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１〜３および非特許文献１に記載された技術においては、ｐａｒｉｔｙを用いて保護されるデータの書き込みがほぼ同じ時期に行われ、リテンションによるエラーの発生に対してデータを保護しているとは言い難い。さらに、ｐａｒｉｔｙが２重、３重に行うことでデータロストの確率は減るが、リテンションによるエラーの対策がなされるとは言い難い。
【００１１】
また、特許文献４に記載された技術においては、水平パリティビットと垂直パリティビットとが揃わないと、そのデータを送信することができないという問題点がある。
【００１２】
このように、上述した技術においては、リテンションに伴うエラーについて、データ復旧を容易に行うことができないという問題点がある。
【００１３】
本発明の目的は、上記課題を解決するデータ記憶制御装置、データ記憶システム、データ記憶方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１４】
本発明のデータ記憶制御装置は、
複数の記憶媒体それぞれの記憶領域を所定の領域に分割した分割領域それぞれに書き込まれたデータ対して、前記複数の記憶媒体間で第１の誤り検出符号を生成する水平符号生成部と、
前記分割領域それぞれに互いに異なるタイミングで書き込まれたデータ対して、前記複数の記憶媒体ごとに第２の誤り検出符号を生成する垂直符号生成部と、
前記水平符号生成部が生成した前記第１の誤り検出符号と、前記垂直符号生成部が生成した前記第２の誤り符号とのそれぞれを、前記分割領域のうちの前記データが書き込まれていない分割領域に書き込む符号書き込み部とを有する。
【００１５】
また、本発明のデータ記憶システムは、
複数の記憶媒体と、
前記複数の記憶媒体それぞれの記憶領域を所定の領域に分割した分割領域それぞれに書き込まれたデータ対して、前記複数の記憶媒体間で第１の誤り検出符号を生成する水平符号生成部と、
前記分割領域それぞれに互いに異なるタイミングで書き込まれたデータ対して、前記複数の記憶媒体ごとに第２の誤り検出符号を生成する垂直符号生成部と、
前記水平符号生成部が生成した前記第１の誤り検出符号と、前記垂直符号生成部が生成した前記第２の誤り符号とのそれぞれを、前記分割領域のうちの前記データが書き込まれていない分割領域に書き込む符号書き込み部とを有する。
【００１６】
また、本発明のデータ記憶方法は、
複数の記憶媒体それぞれの記憶領域を所定の領域に分割した分割領域それぞれに書き込まれたデータ対して、前記複数の記憶媒体間で第１の誤り検出符号を生成する処理と、
前記第１の誤り検出符号を、前記分割領域のうちの前記データが書き込まれていない分割領域に書き込む処理と、
前記分割領域それぞれに互いに異なるタイミングで書き込まれたデータ対して、前記複数の記憶媒体ごとに第２の誤り検出符号を生成する処理と、
前記第２の誤り符号を、前記分割領域のうちの前記データが書き込まれていない分割領域に書き込む処理とを行う。
【００１７】
また、本発明のプログラムは、
コンピュータに実行させるためのプログラムであって、
複数の記憶媒体それぞれの記憶領域を所定の領域に分割した分割領域それぞれに書き込まれたデータ対して、前記複数の記憶媒体間で第１の誤り検出符号を生成する手順と、
前記第１の誤り検出符号を、前記分割領域のうちの前記データが書き込まれていない分割領域に書き込む手順と、
前記分割領域それぞれに互いに異なるタイミングで書き込まれたデータ対して、前記複数の記憶媒体ごとに第２の誤り検出符号を生成する手順と、
前記第２の誤り符号を、前記分割領域のうちの前記データが書き込まれていない分割領域に書き込む手順とを実行させる。
【発明の効果】
【００１８】
以上説明したように、本発明においては、リテンションに伴うエラーについて、データ復旧を容易に行うことができる。
【図面の簡単な説明】
【００１９】
【図１】本発明のデータ記憶制御装置の第１の実施の形態を示す図である。
【図２】図１に示したデータ記憶制御装置におけるデータ記憶方法を説明するためのフローチャートである。
【図３】本発明のデータ記憶制御装置の第２の実施の形態を示す図である。
【図４】本データ記憶システムが記憶媒体の記憶領域を管理するための管理テーブルのフォーマットの一例を示す図である。
【図５】図３に示したデータ記憶システムに用いられるデータ記憶制御装置の一形態を示す図である。
【図６】本形態における全体の動作について説明するための図である。
【図７】図５に示したデータ記憶制御装置におけるデータ記憶方法を説明するためのフローチャートである。
【図８】データの読み出しや書き込み時にエラーが発生した際の処理手順の一例を説明するための図である。
【発明を実施するための形態】
【００２０】
以下に本発明の実施の形態について図面を参照して説明する。
（第１の実施の形態）
図１は、本発明のデータ記憶制御装置の第１の実施の形態を示す図である。本形態におけるデータ記憶制御装置１００は図１に示すように、水平符号生成部１１０と、垂直符号生成部１２０と、符号書き込み部１３０とを有する。なお、図１には、本形態におけるデータ記憶制御装置１００が具備する構成要素のうち、本実施の形態に関わる主要な構成要素の一例を示す。
【００２１】
水平符号生成部１１０は、複数の記憶媒体それぞれの記憶領域を所定の領域に分割した分割領域それぞれに書き込まれたデータ対して、複数の記憶媒体間で第１の誤り検出符号を生成する。
【００２２】
垂直符号生成部１２０は、分割領域それぞれに互いに異なるタイミングで書き込まれたデータ対して、複数の記憶媒体ごとに第２の誤り検出符号を生成する。
【００２３】
符号書き込み部１３０は、水平符号生成部１１０が生成した第１の誤り検出符号を、分割領域のうちのデータが書き込まれていない分割領域に書き込む。また、符号書き込み部１３０は、垂直符号生成部１２０が生成した第２の誤り符号を、分割領域のうちのデータが書き込まれていない分割領域に書き込む。
【００２４】
以下に、図１に示したデータ記憶制御装置１００におけるデータ記憶方法について説明する。図２は、図１に示したデータ記憶制御装置１００におけるデータ記憶方法を説明するためのフローチャートである。
【００２５】
まず、水平符号生成部１１０は、複数の記憶媒体それぞれの記憶領域を所定の領域に分割した分割領域それぞれに書き込まれたデータ対して、複数の記憶媒体間で第１の誤り検出符号を生成する（ステップＳ１）。すると、符号書き込み部１３０は、水平符号生成部１１０が生成した第１の誤り検出符号を、分割領域のうちのデータが書き込まれていない分割領域に書き込む（ステップＳ２）。
【００２６】
また、垂直符号生成部１２０は、分割領域それぞれに互いに異なるタイミングで書き込まれたデータ対して、複数の記憶媒体ごとに第２の誤り検出符号を生成する（ステップＳ３）。すると、符号書き込み部１３０は、垂直符号生成部１２０が生成した第２の誤り符号を、分割領域のうちのデータが書き込まれていない分割領域に書き込む（ステップＳ４）。
【００２７】
このように、データ記憶制御装置１００は、複数の記憶媒体の水平方向および垂直方向について誤り検出符号を生成し、生成した誤り符号それぞれをデータが書き込まれていない分割領域に書き込む。そのため、リテンションに伴うエラーについて、データ復旧を容易に行うことができる。
（第２の実施の形態）
図３は、本発明のデータ記憶制御装置の第２の実施の形態を示す図である。図３には、本形態におけるデータ記憶制御装置が設けられたデータ記憶システムの一例を示す。図３に示したデータ記憶システムは、ホスト要求処理手段２０１と、配置マップ検索手段２０２と、配置決定手段２０３と、複数の記憶媒体２０４−１〜２０４−４とを有する。なお、図３には、記憶媒体が４つである形態を示しているが、その数は限定しない。
【００２８】
ホスト要求処理手段２０１は、上位装置であるホストコンピュータからの、読み込み、若しくは書き込みを行うためにコマンドを発行する。
【００２９】
配置マップ検索手段２０２は、ホスト要求処理手段２０１から出力されてきたコマンドを用いて示されるアドレス（ホストアドレス）に該当するデータ領域の情報を検索する。
【００３０】
配置決定手段２０３は、配置マップ検索手段２０２が決定した、図４に示す管理テーブル上の情報を用いて、記憶媒体２０４−１〜２０４−４の記憶領域のどのデータ領域にデータを書き込むべきか判定を行う。また、配置決定手段２０３は、判定したデータ領域にデータを書き込む。
【００３１】
記憶媒体２０４−１〜２０４−４は、情報を記憶するシリコンディスクから構成された記憶媒体である。
【００３２】
図４は、本データ記憶システムが記憶媒体２０４−１〜２０４−４の記憶領域を管理するための管理テーブルのフォーマットの一例を示す図である。図４に示すように、管理テーブル３００には、先頭ホストアドレス３０１と、消去済みフラグ３０２とが対応付けられて記憶されている。図４に示した管理テーブル３００は、配置マップ検索手段２０２が検索を行うテーブルである。
【００３３】
先頭ホストアドレス３０１は、ホストコンピュータからの読み書きのコマンドが送られる際に指定される、ホストアドレスの先頭アドレスを示すものである。消去済みフラグ３０２は、先頭ホストアドレス３０１から始まるデータ領域が消去済みであるかどうかを示すフラグである。先頭ホストアドレス３０１を開始アドレスとする記憶媒体２０４−１〜２０４−４上のデータ格納領域は、記憶媒体２０４−１〜２０４−４それぞれの記憶領域を所定の領域に分割した複数の分割領域から構成され、その分割領域毎に消去済みのフラグ３０２を持つものであっても良い。消去済みフラグ３０２の表現方法は、ビットマップで表現する方法など各種の表現方式を持つことが考えられる。
【００３４】
さらに、管理テーブル３００中の先頭ホストアドレス３０１は昇順に配置されており、ある先頭ホストアドレス３０１から固定値（例えば、１２８ｋバイトなど）の領域を持つ。
【００３５】
また、管理テーブル３００で管理される、消去済みのデータ領域は、装置の初期化時後ホストからデータが転送され、実際にデータが、書き込まれるまで時間を要する場合がある。そのため、上述したように、リテンションによりデータの内容が変わる可能性がある。このため、初期化時に消去済みのデータ領域に記憶されている実データ（記憶媒体２０４−１〜２０４−４に書き込まれたデータ）を使ってパリティデータを生成すると、その後、第２のパリティによりデータの復旧を行う際に、初期化時のデータとは異なるデータを使ってデータの復旧が行われる為、正常なデータが復旧されない。そのため、初期化時のパリティの計算において、消去済みのデータ領域の実データを使うことはできない。そこで、本発明においては、消去済みのデータ領域については、固定データ列を仮想的に生成し、パリティデータの生成を行う。この固定データ列は、データ領域毎に一意に決められ、データ領域毎に異なっても良いし、装置毎に１つのものに決められていても良い。
【００３６】
図５は、図３に示したデータ記憶システムに用いられるデータ記憶制御装置の一形態を示す図である。図３に示したデータ記憶システムに用いられるデータ記憶制御装置１０１は図５に示すように、水平符号生成部１１１と、垂直符号生成部１２１と、符号書き込み部１３１と、データ書き込み部１４１とを有する。なお、図５には、本形態におけるデータ記憶制御装置１０１が具備する構成要素のうち、本実施の形態に関わる主要な構成要素の一例を示す。
【００３７】
水平符号生成部１１１は、複数の記憶媒体２０４−１〜２０４−４それぞれの記憶領域を所定の領域に分割した分割領域それぞれに書き込まれたデータ対して、複数の記憶媒体２０４−１〜２０４−４間で第１の誤り検出符号（パリティ符号）を生成する。水平符号生成部１１１は、複数の記憶媒体２０４−１〜２０４−４のアドレスが互いに同じ分割領域に書き込まれたデータに対して、第１の誤り検出符号を生成する。この詳細については、後述する。
【００３８】
垂直符号生成部１２１は、分割領域それぞれに互いに異なるタイミングで書き込まれたデータ対して、複数の記憶媒体ごとに第２の誤り検出符号（パリティ符号）を生成する。垂直符号生成部１２１は、複数の記憶媒体２０４−１〜２０４−４ごとの分割領域のうちの所定の分割領域に書き込まれたデータについて、第２の誤り検出符号を生成する。この詳細については、後述する。
【００３９】
符号書き込み部１３１は、水平符号生成部１１１が生成した第１の誤り検出符号を、分割領域のうちのデータが書き込まれていない分割領域に書き込む。また、符号書き込み部１３１は、垂直符号生成部１２１が生成した第２の誤り符号を、分割領域のうちのデータが書き込まれていない分割領域に書き込む。符号書き込み部１３１は、水平符号生成部１１１が生成した第１の誤り検出符号を、アドレスが、第１の誤り検出符号の生成の対象であるデータが書き込まれていた分割領域のアドレスと同じアドレスの分割領域に書き込む。
【００４０】
データ書き込み部１４１は、複数の記憶媒体２０４−１〜２０４−４に所定の順序でデータを書き込む。
【００４１】
図５に示したデータ記憶制御装置１０１は、図３に示した配置決定手段２０３が担う機能である。なお、図５に示したデータ記憶制御装置１０１の機能は、図３に示した、ホスト要求処理手段２０１、配置マップ検索手段２０２および配置決定手段２０３に分担して割り当てるものであっても良い。
【００４２】
以下に、本形態における全体の動作について説明する。図６は、本形態における全体の動作について説明するための図である。
［初期化］
まず、初期に記憶媒体への読み書き可能とするための処理について説明する。
【００４３】
初期化の時において、記憶媒体２０４−１〜２０４−４間のデータ冗長化処理を行う。これについては、図６に示した、Ａ１の領域、Ａ２の領域、Ａ３の領域に記憶されているデータに対して、水平符号生成部１１１は、第１のパリティデータ（誤り検出符号）であるＡ  ｐａｒｉｔｙ部分を生成する。初期化時点では、全てのデータ領域（分割領域）のデータが消去済みであるため、パリティの計算は、上述したような固定データ列を対象に行われる。この場合は、水平符号生成部１１１は、Ａ１の固定データ列、Ａ２の固定データ列およびＡ３の固定データ列のＸＯＲ（排他論理）を算出し、その結果をＡ  ｐａｒｉｔｙデータとする。そして、符号書き込み部１３１が、そのパリティデータを記憶媒体上のＡ  ｐａｒｉｔｙの分割領域に書き込む。このとき、通常のデータを格納する分割領域（図６に示した例では、Ａ１〜Ａ３の分割領域）について書き込みは行わず、ＳＳＤあるいはフラッシュメモリが消去された状態を保つ。以下同様に、水平符号生成部１１１は、Ｂ１〜Ｂ３に対するパリティの生成を行い、符号書き込み部１３１が、Ｂ  ｐａｒｉｔｙの分割領域にパリティデータの書き込みを行い、第１のＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）の処理を行う。
【００４４】
続いて、垂直符号生成部１２１は、第２のパリティデータ（誤り検出符号）（時間軸方向にずらしたパリティを格納する分割領域）の生成を行う。図６に示すように、Ａ１とＥ１のように記憶媒体２０４−１の飛び飛びの分割領域に対してパリティデータの生成を行う。第１のパリティデータの生成と同様に、初期化時点では、全てのデータ領域（分割領域）のデータが消去済みであるため、パリティの計算は、上述したような固定データ列を対象に行われる。この場合は、垂直符号生成部１２１は、Ａ１の固定データ列、Ｅ１の固定データ列等のＸＯＲ（排他論理）を算出し、パリティデータを生成し、「Ａ１＋Ｅ１＋・・・のＰａｒｉｔｙ」のデータとする。このとき、第１のパリティデータの箇所があれば、垂直符号生成部１２１は、そのパリティデータを読み込み、ＸＯＲの対象のデータとする。そして、符号書き込み部１３１は、図６に示す「Ａ１＋Ｅ１＋・・・のＰａｒｉｔｙ」で示される領域にパリティデータを書き込む。
【００４５】
水平符号生成部１１１は、記憶媒体２０４−１〜２０４−４の他の領域（図６に示した例ではＢ１、Ｃ１等）に対してもパリティデータの生成を順次行い、符号書き込み部１３１は、記憶媒体２０４−１〜２０４−４の領域に、生成したパリティデータを書き込む。第１のパリティ生成と同様に、このときも通常のデータを書き込む領域（分割領域）に対しては書き込みを行わず、ＳＳＤあるいはフラッシュメモリが消去された状態を保つ。
【００４６】
また、垂直符号生成部１２１は、記憶媒体２０４−２に対しても、同様にＡ２、Ｅ２についての第２のパリティデータの生成を行い、装置を構成する記憶媒体すべてに対して第２のパリティデータの生成を行う。符号書き込み部１３１は、生成したパリティデータの書き込みを行う。ここで、第２のパリティデータの生成対象には、第１のパリティデータも含まれる。
【００４７】
パリティ符号を用いた冗長化方式について記載を行ったが、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）などを用いた方式についても同様に適用可能である。
【００４８】
また、図４に示した管理テーブル３００の初期化が行われる。初期化時点においては、ホストから参照可能なすべてのデータ格納領域が、パリティ生成段階ではＥｒａｓｅされた状態であるため、消去済みフラグ３０２には全て消去済みのフラグを立てる。例えば、これについては、上述した構成で示したように、ビットマップなどを用いた表現方式をとることもできる。また、先頭ホストアドレス３０１については、それぞれ図６に示したＡ１およびＡ２に格納するデータのホスト側から指定されたアドレスの先頭アドレスを格納する。さらに、図６に示したＡ１等で示されるデータ格納領域について、固定長のデータ、配置も規則的に決定することが可能である場合については、先頭ホストアドレス３０１については省略可能である。この際には、第１のパリティデータの配置場所、第２のパリティデータの配置場所、ホストアドレスで示されるデータがどの記憶媒体のどの位置に格納されるか、テーブルなど用いずに一意的に決定できる手段を持てば良い。
［書き込み］
上位装置から書き込みのコマンドが発行され、ホスト要求処理手段２０１がコマンドを受け取ると、そのコマンドが示すホストアドレスについて、配置マップ検索手段２０２が管理テーブル３００の先頭ホストアドレス３０１を検索する。配置マップ検索手段２０２が、書き込みコマンドが示すホストアドレスに該当する管理テーブル３００を検索し、配置決定手段２０３が、消去済みフラグ３０２を消去済みのフラグを立てると同時に記憶媒体２０４−１〜２０４−４の該当箇所へのデータの書き込みを行う。実際の記憶媒体２０４−１〜２０４−４への書き込み手順を、図６を用いてさらに詳細に説明する。
【００４９】
Ａ１に対する書き込みがホストから行われると、配置マップ検索手段２０２が管理テーブル３００の先頭ホストアドレス３０１を検索する。該当するアドレスが見つかると、配置決定手段２０３が管理テーブル３００の消去済みフラグ３０２を落とし、書き込み済みに設定する。
【００５０】
続いて、データ書き込み部１４１は、記憶媒体２０４−１のＡ１の箇所にデータを書き込む。また、水平符号生成部１１１は、Ａ  Ｐａｒｉｔｙのデータを読み出し、データとＡ１のデータとから新規のパリティデータの生成を行う。符号書き込み部１３１は、水平符号生成部１１１が生成したパリティデータをＡ  Ｐａｒｉｔｙの領域に書き込む。このように、配置決定手段２０３は第１のパリティデータの生成と書き込みとを行う。
【００５１】
さらに、第２のパリティデータの生成を行うため、垂直符号生成部１２１は、記憶媒体２０４−１のＥ１と「Ａ１＋Ｅ１＋・・・のｐａｒｉｔｙ」とを読み出し、ホストからデータを受信したＡ１のデータとＸＯＲを算出し、第２のパリティデータを生成する。符号書き込み部１３１は、垂直符号生成部１２１が生成したパリティデータを「Ａ１＋Ｅ１＋・・・のｐａｒｉｔｙ」へ書き込む。こうして、配置決定手段２０３は第２のパリティの生成と書き込みとを完了する。
【００５２】
このようなパリティデータの生成は、通常のＲＡＩＤ５やＲＡＩＤ６などと同じであり、ここでは詳細な説明は省略する。本形態では、ホストからのアドレスは順次、図６に示したＡ１→Ａ２→Ａ３→Ｂ１の順序にデータ格納の順序が決定される、そのため、アーカイブ用途のような追記を行う場合は、Ａ１の書き込みが一番古く、Ａ２、Ａ３、Ｂ１の順序で随時新しいデータが格納される。そのため、第２のパリティデータで保護の対象となるデータは時間軸がずれたデータに対してのパリティ生成が可能となる。図６に示した例では、Ａ１の書き込みのタイミングが一番古く、Ｅ１の書き込みのタイミングがその次という具合に時間軸のずれたデータに対して第２のパリティデータが生成される。
【００５３】
さらに、上述した処理のシーケンスの中で、消去済みのデータ領域への書き込みを行う際には、配置決定手段２０３は、そのデータ領域のデータが消去できているかどうかを確認するために、データを一度読み出す。配置決定手段２０３は、そのデータ領域のデータが消去されていれば書き込みを行い、消去されていなければ消去を行った上で書き込みを行っても良い。また、別の方法として、配置決定手段２０３は、一度読み出すことなくそのデータ領域を消去した上で書き込んでも良い。
【００５４】
なお、Ａ１〜Ａ３およびＡ  Ｐａｒｉｔｙを書き込む分割領域のアドレス（物理アドレス、論理アドレス）は、記憶媒体２０４−１〜２０４−４間で互いに同じものであっても良い。Ｂ１〜Ｂ３およびＢ  Ｐａｒｉｔｙを書き込む分割領域のアドレス、Ｃ１〜Ｃ３およびＣ  Ｐａｒｉｔｙを書き込む分割領域のアドレス、Ｄ１〜Ｄ３およびＤ  Ｐａｒｉｔｙを書き込む分割領域のアドレス、Ｅ１〜Ｅ３およびＥ  Ｐａｒｉｔｙを書き込む分割領域のアドレスについても同様である。
［読み出し］
上位装置から読み出しのコマンドが発行され、ホスト要求処理手段２０１がコマンドを受け取ると、そのコマンドが示すホストアドレスについて、記憶媒体２０４−１〜２０４−４上に該当するデータ読み出しを行い、ホストにデータを転送する。その際に、リテンションによるデータ消失が無いか判定を行う処理を設けても良い。配置決定手段２０３は、Ａ１のデータの読み出しと同時にＥ１等の第２のパリティデータを生成するためのデータと「Ａ１＋Ｅ１＋・・・のｐａｒｉｔｙ」の読み出しを行う。配置決定手段２０３は、Ａ１、Ｅ１等のデータから生成したパリティと、「Ａ１＋Ｅ１＋・・・のｐａｒｉｔｙ」とを比較する。配置決定手段２０３は、比較の結果、両者が一致していればホストにそのデータの転送を行い、一致していなければ、次に示されるデータ復旧を試みる。
【００５５】
以下に、図５に示したデータ記憶制御装置１０１におけるデータ記憶方法について説明する。図７は、図５に示したデータ記憶制御装置１０１におけるデータ記憶方法を説明するためのフローチャートである。
【００５６】
データ書き込み部１４１が、記憶媒体２０４−１〜２０４−４の分割領域に所定の順序でデータを書き込む（ステップＳ１１）。すると、水平符号生成部１１１は、記憶媒体２０４−１〜２０４−４それぞれの記憶領域を所定の領域に分割した分割領域それぞれに書き込まれたデータ対して、記憶媒体２０４−１〜２０４−４間で第１の誤り検出符号（パリティデータ）を生成する（ステップＳ１２）。すると、符号書き込み部１３１は、水平符号生成部１１１が生成した第１の誤り検出符号を、分割領域のうちのデータが書き込まれていない分割領域に書き込む（ステップＳ１３）。
【００５７】
また、垂直符号生成部１２１は、分割領域それぞれに互いに異なるタイミングで書き込まれたデータ対して、記憶媒体２０４−１〜２０４−４ごとに第２の誤り検出符号を生成する（ステップＳ１４）。すると、符号書き込み部１３１は、垂直符号生成部１２１が生成した第２の誤り符号を、分割領域のうちのデータが書き込まれていない分割領域に書き込む（ステップＳ１５）。
【００５８】
以下に、本形態におけるデータ復旧の動作について説明する。
［データ復旧］
図８は、データの読み出しや書き込み時にエラーが発生した際の処理手順の一例を説明するための図である。
【００５９】
上位装置からのデータの読み出しにおいて、上述した第２のパリティデータを用いたパリティ照合、あるいは、読み出し時のＳＳＤからのエラー、あるいはフラッシュメモリのエラー対策で設けられたＥＣＣなどの冗長化符号でのエラー、また、書き込み時のエラーが発生した際の処理手順について説明する。ここでは、図８に示したＡ１の分割領域にアクセスする際に、データの読み出し、または書き込みのエラーが発生したと仮定し、データ復旧の手順について説明する。
【００６０】
１つめの手順として、第１のパリティデータを用いてデータの復旧を行う手順について説明する。本手順は、単発での読み出しや書き込みにおいて、エラーが発生した場合に好適である。図８に示すように、Ａ１での読み出し時またはアクセスでエラーが発生したとする。一般的なＲＡＩＤにおいては、エラーが発生した場合は、該当する記憶媒体が全て欠陥と見なし、記憶媒体全体に対してｐａｒｉｔｙからのデータ生成を行う。一方、本発明のデータ記憶システムは、フラッシュメモリを用いたＳＳＤやフラッシュメモリ自体のエラーを想定し、部分的なエラーの発生が多いとの前提でデータの復旧を試みる。すなわち、本発明のデータ記憶システムは、Ａ１で上述したようなエラーが発生した場合に、Ａ１のデータを復旧する際にＡ２，Ａ３およびＡ  Ｐａｒｉｔｙの読み出しを行い、Ａ１のデータの再現を行い、Ａ１への書き込みを行う。その際に、Ａ１以外にＡ２，Ａ３およびＡ  Ｐａｒｉｔｙでエラーが発生した場合は、データ記憶システムは、第２のパリティを使用した手順を試みる。この際、データ記憶システムは、記憶媒体２０４−１のＢ１以降のデータ復旧動作は行わない。
【００６１】
２つめの手順として、第２のパリティデータを用いてデータの復旧を試みる手順について説明する。本手順は、読み出しをアドレス順にシーケンシャルに行っている場合や読み出し時に第２のパリティデータの照合でエラーが発生した時などに好適である。処理としては、シーケンシャルの先読み動作で、記憶媒体２０４−１と記憶媒体２０４−２とに対して同時にデータの読み出しを行う場合等、複数の記憶媒体から同時にデータを読み出す場合を想定している。例えば、記憶媒体２０４−１のＡ１で読み出しエラーが検出され、記憶媒体２０４−２のＡ２で読み出しエラーが検出された場合に本手順が用いられる。エラーが検出されない場合は、上述した１つ目の手順を用いてデータの復旧を試みると良い。
【００６２】
記憶媒体２０４−１のＡ１と、記憶媒体２０４−２のＡ２とでのエラー発生を検出するとリテンションによるエラー発生の可能性が高い。このとき、データ記憶システムは、Ｅ１等の「Ａ１＋Ｅ１＋・・・のｐａｒｉｔｙ」を構成するＡ１以外のデータの読み込みと、「Ａ１＋Ｅ１＋・・・のｐａｒｉｔｙ」のパリティの読み込みとを行い、これらのデータからＡ１のデータを再生成し、Ａ１の領域に再び書き込む。この際、第２のパリティデータからデータを再生成する手順でエラーが発生した場合は、データ記憶システムは、２つ目の手順の第１のパリティデータを使用したデータの再生成を試みる。この再生成に成功すれば、データ記憶システムは、そのデータを該当する記憶媒体２０４−１の分割領域に書き込み、再度第２のパリティデータを用いたデータ再生成を試み、Ａ１のデータの再現と書き戻しとを実行する。
【００６３】
このような復旧動作中に、管理テーブル３００で示された、消去済みのデータ領域を読み込む際には、そのデータ領域で決められた固定データ列のデータを用いて復旧させる。
これらの復旧手順は並行して動作する他のアクセスでのエラー発生状況に基づいて選択を行い、適宜適切な処理方法を選択することで、リテンションによるエラーのデータ復旧が可能である。
【００６４】
このように、フラッシュメモリを利用したＳＳＤあるいはフラッシュメモリのような記憶媒体間で、記憶媒体の故障に備えるＲＡＩＤ、あるいはＲＡＩＤに準ずる冗長化手段（Ｅｒａｓｕｒｅ  Ｃｏｄｉｎｇなど）に加え、異なる時間に記録されたデータ間でＲＡＩＤ、あるいはＲＡＩＤに準ずる冗長化手段を講ずる。これにより、リテンションに対するエラーに対してもデータの復旧が可能となる。
【００６５】
また、図６に示した構成をストレージ装置に適用した構成とすると、上述した第１のパリティデータを用いた冗長化処理をストレージ装置側で行い、第２のパリティデータを用いた冗長化処理を図６に示した記憶媒体２０４−１〜２０４−４の内部（ＳＳＤの内部処理）で行うことも考えられる。
【００６６】
本発明は、ストレージ装置に関し、特にフラッシュメモリなどを用いたＳＳＤ（シリコンディスク）、あるいはＳＳＤを用いたストレージ装置、さらには、フラッシュメモリが内蔵された、コンピュータやサーバなどの、データ蓄積を行う装置への適用などが考えられる。
【００６７】
以上、各構成要素に各機能（処理）それぞれを分担させて説明したが、この割り当ては上述したものに限定しない。また、構成要素の構成についても、上述した形態はあくまでも例であって、これに限定しない。
【００６８】
上述したデータ記憶制御装置１００，１０１それぞれに設けられた各構成要素が行う処理は、目的に応じてそれぞれ作製された論理回路で行うようにしても良い。また、処理内容を手順として記述したコンピュータプログラム（以下、プログラムと称する）をデータ記憶制御装置１００，１０１それぞれにて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムをデータ記憶制御装置１００，１０１それぞれに読み込ませ、実行するものであっても良い。データ記憶制御装置１００，１０１それぞれにて読取可能な記録媒体とは、フロッピー（登録商標）ディスク、光磁気ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃなどの移設可能な記録媒体の他、データ記憶制御装置１００，１０１それぞれに内蔵されたＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリやＨＤＤ（Ｈａｒｄ  Ｄｉｓｃ  Ｄｒｉｖｅ）等を指す。この記録媒体に記録されたプログラムは、データ記憶制御装置１００，１０１それぞれに設けられたＣＰＵにて読み込まれ、ＣＰＵの制御によって、上述したものと同様の処理が行われる。ここで、ＣＰＵは、プログラムが記録された記録媒体から読み込まれたプログラムを実行するコンピュータとして動作するものである。
【符号の説明】
【００６９】
１００，１０１    データ記憶制御装置
１１０，１１１    水平符号生成部
１２０，１２１    垂直符号生成部
１３０    符号書き込み部
１４１    データ書き込み部
２０１    ホスト要求処理手段
２０２    配置マップ検索手段
２０３    配置決定手段
２０４−１〜２０４−４    記憶媒体
３００    管理テーブル
３０１    先頭ホストアドレス
３０２    消去済みフラグ
【図１】
2018163450.tif 000003
【図２】
2018163450.tif 000004
【図３】
2018163450.tif 000005
【図４】
2018163450.tif 000006
【図５】
2018163450.tif 000007
【図６】
2018163450.tif 000008
【図７】
2018163450.tif 000009
【図８】
2018163450.tif 000010