(57)【要約】【課題】ＯＳの障害発生時に主記憶装置の内容を保護することを目的とする。【解決手段】フラッシュメモリ３のデータを更新する際、更新データに識別子を付加した保持データを生成して、主記憶装置２の複写領域２３に格納し、ＯＳ２２の障害発生時に主記憶装置２の複写領域２３および退避領域２４をフラッシュメモリ３へ格納し、前記ＯＳ２２の再起動時に前記識別子２３２’を基に保持データ２３１’を抽出し、保持データ２３１’に含まれる差分データ２４１を抽出し、抽出した差分データ２４１を前記主記憶装置２の退避領域２４へ格納することを特徴とする。【選択図】図７
2009266115.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性半導体メモリが補助記憶装置として接続されており、作業時には、前記不揮発性半導体メモリのデータを主記憶装置へ呼び出し、前記主記憶装置を作業領域とし、作業終了時に、前記主記憶装置のデータを前記不揮発性半導体メモリへ格納することによって、前記不揮発性半導体メモリのデータを更新する機能と、オペレーティングシステムの障害が発生した際に、前記主記憶装置のデータを前記不揮発性半導体メモリにコピーするメモリダンプ機能を有するデータ復旧装置におけるデータ復旧方法であって、
前記データ復旧装置のデータ復旧処理部は、
前記作業により生成される更新内容のデータに識別子を付加して、前記主記憶装置の所定の領域へ格納し、
前記オペレーティングシステムの再起動を検知すると、
前記識別子を基に、前記メモリダンプ機能において前記不揮発性半導体メモリにコピーした前記更新内容のデータを検出し、前記検出したデータを前記主記憶装置へ格納することを特徴とするデータ復旧方法。
【請求項２】
前記不揮発性半導体メモリは、フラッシュメモリであることを特徴とする請求項１に記載のデータ復旧方法。
【請求項３】
前記主記憶装置には、前記不揮発性半導体メモリに格納されているデータと、作業によって更新されたデータとの差分データが記憶されており、前記識別子が付加されている更新内容のデータは、前記不揮発性半導体メモリのデータと、前記差分データとを合わせた内容のデータであることを特徴とする請求項１に記載のデータ復旧方法。
【請求項４】
前記識別子には、前記メモリダンプ機能によって前記不揮発性半導体メモリにコピーされたデータを検索するための検索コード、データ名およびデータサイズのうち、少なくとも１つが記載されることを特徴とする請求項１に記載のデータ復旧方法。
【請求項５】
補助記憶装置が接続されており、作業時には、前記補助記憶装置のデータを主記憶装置へ呼び出し、前記主記憶装置を作業領域とし、作業終了時に、前記主記憶装置のデータを前記補助記憶装置へ格納することによって、前記補助記憶装置のデータを更新する機能と、オペレーティングシステムの障害が発生した際に、前記主記憶装置のデータを前記補助記憶装置にコピーするメモリダンプ機能を有するデータ復旧装置におけるデータ復旧方法であって、
前記データ復旧装置のデータ復旧処理部は、
前記作業により生成される更新内容のデータに識別子を付加して、前記主記憶装置の所定の領域へ格納し、
前記オペレーティングシステムの再起動を検知すると、
前記識別子を基に、前記メモリダンプ機能において前記補助記憶装置にコピーした前記更新内容のデータを検出し、前記検出したデータを前記主記憶装置へ格納することを特徴とするデータ復旧方法。
【請求項６】
前記主記憶装置には、前記補助記憶装置に格納されているデータと、作業によって更新されたデータとの差分データが記憶されており、前記識別子が付加されている更新内容のデータは、前記補助記憶装置のデータと、前記差分データとを合わせた内容のデータであることを特徴とする請求項５に記載のデータ復旧方法。
【請求項７】
前記識別子には、前記メモリダンプ機能によって前記補助記憶装置にコピーされたデータを検索するための検索コード、データ名およびデータサイズのうち、少なくとも１つが記載されることを特徴とする請求項５に記載のデータ復旧方法。
【請求項８】
請求項１から請求項７のいずれか一項に記載のデータ復旧方法をコンピュータに実行させることを特徴とするプログラム。
【請求項９】
不揮発性半導体メモリが補助記憶装置として接続されており、作業時には、前記不揮発性半導体メモリのデータを主記憶装置へ呼び出し、前記主記憶装置を作業領域とし、作業終了時に、前記主記憶装置のデータを前記不揮発性半導体メモリへ格納することによって、前記不揮発性半導体メモリのデータを更新する機能と、オペレーティングシステムの障害が発生した際に、前記主記憶装置のデータを前記不揮発性半導体メモリにコピーするメモリダンプ機能を有するデータ復旧装置であって、
前記作業により生成される更新内容のデータに識別子を付加して、前記主記憶装置の所定の領域へ格納するデータ複写部、
前記オペレーティングシステムの再起動を検知すると、前記識別子を基に、前記メモリダンプ機能において前記不揮発性半導体メモリにコピーした前記更新内容のデータを検出し、前記検出したデータを前記主記憶装置へ格納するデータ抽出部とを有することを特徴とするデータ復旧装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ復旧方法、プログラムおよびデータ復旧装置の技術に関する。
【背景技術】
【０００２】
一般的なＰＣ（Personal Computer）では、補助記憶装置としてＨＤＤ（Hard Disk Drive）が一般的に用いられている。ＨＤＤは、記憶容量が大きく、１バイト当たりの単価が安いというメリットがある。しかしながら、ＨＤＤは、ＰＣに用いられる部品の中で故障率が高く、寿命も短いというデメリットがある。このようなデメリットは、ＨＤＤに駆動部品が用いられているためであり、このような駆動部品を用いない補助記憶装置が模索されている。
【０００３】
このような駆動部品を用いない補助記憶装置の中で、他の記憶装置より大容量で、安価な不揮発性半導体メモリの１つであるフラッシュメモリが採用され始めている。しかし、フラッシュメモリは、原理上、書込み回数が有限であるため、書込み可能な回数を超えると正しく書込みや読込みができなくなるという欠点がある。また、半導体の微細化加工の進歩に伴いフラッシュメモリに書込み可能な回数は、減少する傾向にあるため、ＰＣの補助記憶装置のような繰り返し書込みが行われる用途においてフラッシュメモリの使用可能時間も短くなってきている。
【０００４】
このような理由から、コンパクトフラッシュ（登録商標）や、ＵＳＢ（Univesal Serial Bus）メモリなどに利用されているフラッシュメモリへの書込みを抑止することが必要となってきている。フラッシュメモリへの書込み抑止の方法として、フラッシュメモリへ書込むデータを主記憶装置へ一時的に退避する方法がとられている。そして、主記憶装置が揮発性メモリであることから、主記憶装置に格納されているデータは、ＯＳ（Operating System）のシャットダウン時に失われてしまうため、主記憶装置に退避されているデータをフラッシュメモリへ書き戻す方法もとられている。
【０００５】
また、特許文献１には、ＯＳが不安定になると主記憶装置に記憶されている情報をフラッシュメモリに退避させてＯＳにリセットを要求し、再起動後、ＯＳが、フラッシュメモリに退避した情報を主記憶装置に復帰させる携帯端末が開示されている。
【特許文献１】特開２００８−３７７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
前記した方法によりフラッシュメモリの書込みを抑止しながら、主記憶装置に退避したデータの保持を可能としている。しかしながら、ＯＳに障害が発生した場合、主記憶装置に退避しているデータがフラッシュメモリに書き戻されず、また、障害解析のために補助記憶装置に取得されるメモリダンプデータにデータは残るものの、補助記憶装置中の他のデータと、メモリダンプデータとを区別することが困難なことから、メモリダンプデータを補助記憶装置から取り出すことが困難となり、結果として主記憶装置に退避しているデータが失われてしまうという問題がある。
特許文献１では、障害発生時以外のデータの格納や、フラッシュメモリにおける他のデータの中からメモリダンプデータをどのように抽出するかに関する方法に言及していない。
【０００７】
このような背景に鑑みて本発明がなされたのであり、本発明は、ＯＳの障害発生時に主記憶装置の内容を保護することを目的とする。
【課題を解決するための手段】
【０００８】
前記課題を解決するため、本発明は、補助記憶装置のデータを更新する際、更新内容のデータに識別子を付加して、主記憶装置に格納し、前記オペレーティングシステムの再起動時に前記識別子を基に、メモリダンプ機能によって前記補助記憶装置に格納された前記更新内容のデータを抽出し、前記抽出した更新内容のデータを前記主記憶装置へ格納することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ＯＳの障害発生時に主記憶装置の内容を保護することが可能となる。
【発明を実施するための最良の形態】
【００１０】
次に、本発明を実施するための最良の形態（「実施形態」という）について、適宜図面を参照しながら詳細に説明する。
【００１１】
（装置構成）
図１は、本実施形態に係るデータ復旧装置の構成例を示すブロック図である。
データ復旧装置１は、バスによって相互に接続した、主記憶装置２と、補助記憶装置としてのフラッシュメモリ３（不揮発性半導体メモリ）と、ＣＰＵ（Central Processing Unit）４とを有してなる。
主記憶装置２には、本実施形態に係るデータ復旧処理を行うデータ復旧処理部２１と、ＯＳ２２とが展開されている。また、主記憶装置２には、フラッシュメモリ３のデータを更新する際に生成されるフラッシュメモリ３内のデータ（元データ３１）と更新後データとの差分である差分データ２４１が格納される退避領域２４が予め設けられ、さらに更新後データに識別子２３２が付加された保持データ２３１が格納される複写領域２３が予め設けられている。なお、元データ３１と、更新後データと、差分データ２４１とは、例えば、フラッシュメモリ３から元データ３１を読出し、加筆する作業を行った場合は、図２（ａ）のような関係になる。
【００１２】
データ復旧処理部２１は、作業中のデータが更新されるか（書込み指示がなされるか）否かを監視するデータ更新監視部２１３と、データの更新が検知された際に、更新後データに識別子２３２を付加した保持データ２３１を複写領域２３に格納するデータ複写部２１２を有する。さらに、データ復旧処理部２１は、ＯＳ２２の障害発生時にフラッシュメモリ３へ退避された主記憶装置２の保持データ２３１を、ＯＳ２２の再起動時に抽出し、フラッシュメモリ３へ書き戻すデータ抽出部２２１とを有してなる。なお、データ抽出部２２１がフラッシュメモリ３へ保持データ２３１を書き戻す際には、後記する退避処理部２２２が元データ３１と保持データ２３１とを比較して差分データ２４１を生成し主記憶装置２へ戻す。
【００１３】
ＯＳ２２は、フラッシュメモリ３のデータ更新時にフラッシュメモリ３へデータを書き込まないで、前記した差分データ２４１を生成し、この差分データ２４１を主記憶装置２の退避領域２４に格納する退避処理部２２２と、ＯＳ２２の障害発生時に主記憶装置２の内容をフラッシュメモリ３へ退避させるメモリダンプ部２２１とを有してなる。なお、退避処理部２２２は、ＯＳ２２の障害発生時ではない通常のシャットダウン時に、退避領域２４の差分データ２４１と、元データ３１とを結合した更新後データを元データ３１と置換する機能も有する。なお、元データ３１には、ファイル名や、サイズなどの属性情報が付加されている。
【００１４】
なお、データ復旧処理部２１、データ更新監視部２１３、データ複写部２１２、データ抽出部２１１、ＯＳ２２、メモリダンプ部２２１および退避処理部２２２は、フラッシュメモリ３などの補助記憶装置に格納されているプログラムが主記憶装置２に展開され、ＣＰＵ４によって実行させることにより具現化する。
【００１５】
（保持データ）
図２（ｂ）は、本実施形態に係る保持データの構成例を示す図である。保持データ２３１は、図１における主記憶装置２の複写領域２３に格納されるデータである。
保持データ２３１は、識別子２３２と、更新後データ（更新内容のデータ）のデータ本体２３６とを有してなる。識別子２３２は、ＯＳ２２（図１）の再起動時に、検索のためのキーとなる検索コード２３３、データ名２３４およびデータのサイズ２３５とを有してなる。
【００１６】
（データ更新時の処理）
次に、図３から図５に沿って本実施形態に係るアプリケーション２５によるデータ更新時の処理を説明する。なお、図３および図４で、該処理の概略を説明し、図５において該処理のフローチャートを説明することとする。
【００１７】
図３および図４は、本実施形態に係るアプリケーションによるデータ更新時の処理の概略を示す図である。なお、図３および図４の構成要素は、アプリケーション２５が新たに実行されている以外は図１と同様であるため、アプリケーション２５以外の構成については、図１と同一の符号を付して説明を省略する。
まず、図３において、フラッシュメモリ３には元データ３１が格納されているが、アプリケーション２５が、この元データ３１を更新するときの処理を説明する。このとき、退避処理部２２２は、更新後のデータ（更新後データ）と、元データ３１との差分データ２４１を生成し、フラッシュメモリ３ではなく、この差分データ２４１を退避領域２４に書込む（Ｓ１０１）。つまり、差分データ２４１と元データ３１とを合わせることで、更新後データとなる。データ更新監視部２１３は、アプリケーション２５の動作を監視しており（Ｓ１０２）、アプリケーション２５によるフラッシュメモリ３のデータ更新が検知されると、データ更新が行われた旨をデータ複写部２１２に通知する（Ｓ１０３）。
【００１８】
次に、図４を参照して説明を行う。
図３のステップＳ１０３において、通知を受けたデータ複写部２１２は、退避処理部２２２に更新後データ（つまり、主記憶装置２の差分データ２４１と、フラッシュメモリ３の元データ３１とを合わせたデータ）をデータ複写部２１２自身に送るよう指示する。指示を受けた退避処理部２２２は、退避領域２４の差分データ２４１と、フラッシュメモリ３の元データ３１とを読込んだ上で、これらのデータを合わせて更新後データを生成すると、生成した更新後データをデータ複写部２１２へ送る（Ｓ１１０）。
更新後データを送られたデータ複写部２１２は、この更新後データに識別子２３２を付加して保持データ２３１を生成し、生成した保持データ２３１を主記憶装置２の複写領域２３へ書込む（Ｓ１１１）。
【００１９】
次に、図２、図３および図４を参照しつつ、図５に沿ってアプリケーション２５によるデータ更新時における処理の詳細な流れを説明する。
図５は、本実施形態に係るアプリケーションによるデータ更新時の処理の流れを示すフローチャートである。前記したように図５は、図３および図４で説明した処理をフローチャートにまとめたものである。
まず、データ複写部２１２は、データ更新監視部２１３からデータ更新が行われた旨の通知があるか否かを判定する（Ｓ１５１）ことによって、データ更新監視部２１３からの通知を待機する。
ステップＳ１５１の結果、通知がない場合（Ｓ１５１→Ｎｏ）、データ復旧処理部２１は、ステップＳ１５１へ処理を戻す。
【００２０】
ステップＳ１５１の結果、通知があった場合（Ｓ１５１→Ｙｅｓ）、つまり、データ更新監視部２１１がアプリケーション２５によるデータ更新を検知した場合、データ複写部２１２へその旨を通知し、それを受けたデータ複写部２１２は、退避処理部２２２に更新後データ（つまり、主記憶装置２の差分データ２４１と、フラッシュメモリ３の元データ３１とを合わせたデータ）をデータ複写部２１２自身に送るよう指示する。指示を受けた退避処理部２２２は、主記憶装置２の差分データ２４１（差分データ２４１は、ここまでのデータ復旧処理部２１の動作とは別に、退避処理部２２２の処理により生成されている（図３のステップＳ１０１））と、フラッシュメモリ３の元データ３１とを読込んだ上で、これらのデータを結合して更新後データを生成すると、生成した更新後データをデータ複写部２１２へ送ることによって、データ複写部２１２は、更新後データを取得する（Ｓ１５２）。
【００２１】
続いて、データ複写部２１２は、取得した更新後データに識別子２３２を付加して（Ｓ１５３）保持データ２３１を生成すると、生成した保持データ２３１を主記憶装置２の複写領域２３に書込む（Ｓ１５４）。
【００２２】
（ＯＳ障害発生時の処理）
次に、図６を参照して、本実施形態に係るＯＳ２２障害発生時の処理を説明する。
図６は、本実施形態に係るＯＳ障害発生時の処理の概略を示す図である。図６において、図３および図４と同様の構成要素に対しては同一の符号を付して説明を省略するが、図６において破線で示されている構成は、ＯＳ２２の障害により停止状態となっている構成要素であることを示す。
ＯＳ２２の障害が発生すると、ＯＳ２２において標準的に備わっているメモリダンプ部２２１以外の各部は停止状態となる。このとき、ＯＳ２２のメモリダンプ部２２１は、主記憶装置２の複写領域２３および退避領域２４を含む主記憶装置２のデータをまるごとフラッシュメモリ３へコピー（メモリダンプ）する（Ｓ２０１）。メモリダンプ部２２１によってフラッシュメモリ３へメモリダンプされたデータをメモリダンプデータ３２と記載する。メモリダンプデータ３２は、主記憶装置２における複写領域２３および退避領域２４のコピーも含まれたものであるので、識別子２３２’が付加されている保持データ２３１’を格納している複写領域２３’と、差分データ２４１’を格納している退避領域２４’とを有する。
前記したように、図６に示す処理は、ＯＳ２２において標準的に備わっている機能を利用して行われる処理である。
【００２３】
（再起動時）
次に、図７および図８に沿ってＯＳ２２の再起動時における処理を説明する。まず、図７で該処理の概略を説明し、図８で該処理のフローチャートを説明することとする。
【００２４】
図７は、本実施形態に係るＯＳの再起動時における処理の概略を示す図である。なお、図７において図６と同様の構成要素に対しては、同一の符号を付して説明を省略する。
ＯＳ２２が再起動されると、これに伴いデータ復旧処理も再起動される。
すると、ＯＳ２２の再起動を検知したデータ抽出部２１１は、フラッシュメモリ３内のメモリダンプデータ３２内の識別子２３２’（具体的には、検索コード２３３（図２））を検索することによって、メモリダンプデータ内の保持データ２３１’を検出する。データ抽出部２１１は、保持データ２３１’を検出すると、識別子２３２’に格納されているサイズ２３５（図２）を基に、メモリダンプデータ３２から保持データ２３１’におけるデータ本体２３６（図２に示す更新後データ）を切り出す（Ｓ３０１）。そして、データ抽出部２１１は、保持データ２３１’の識別子２３２’に格納されているデータ名２３４（図２）を基に保持データ２３１’と対である元データ３１を特定し、保持データ２３１’から切り出したデータ本体２３６を退避処理部２２２に送り、元データ３１に上書きするよう、退避処理部２２２に指示する（Ｓ３０２）。指示を受けた退避処理部２２２は、データ本体２３６（図２）と、元データ３１との差分データ２４１を生成し、生成した差分データ２４１を退避領域２４へ格納する。
この後、データ抽出部２１１は、メモリダンプデータ３２の保持データ２３１’から識別子２３２’をクリアする。
なお、フラッシュメモリ３内のすべての保持データ２３１’について、以上の処理を終了したとき、フラッシュメモリ３のメモリダンプデータ３２を削除してもよい。
【００２５】
次に、図２および図７を参照しつつ、図８に沿って本実施形態に係る再起動時の処理の詳細な流れを説明する。
図８は、本実施形態に係る再起動時の処理の流れを示すフローチャートである。
まず、データ抽出部２１１は、フラッシュメモリ３内の検索コード２３３を検索する（Ｓ３５１）。
そして、データ抽出部２１１は、検索コード２３３が検出できたか否かを判定する（Ｓ３５２）。
ステップＳ３５２の結果、検索コード２３３が検出できなかった場合（Ｓ３５２→Ｎｏ）、データ抽出部２１１は、処理を終了する。このとき、データ復旧処理部２１が、メモリダンプデータ３２を削除してもよい。
ステップＳ３５２の結果、検索コード２３３が検出できた場合（Ｓ３５２→Ｙｅｓ）、データ抽出部２１１は、該検索コード２３３に付随しているデータ名２３４と、データのサイズ２３５とを主記憶装置２に読み込む（Ｓ３５３，Ｓ３５４）。
【００２６】
次に、データ抽出部２１１は、読み込んだサイズ２３５を基に保持データ２３１’のデータ本体２３６（更新後データ）の切り出しを行う（Ｓ３５５）。次に、読み込んだデータ名２３４を基に、保持データ２３１’の対となる元データ３１を特定し、保持データ２３１’から切り出したデータ本体２３６を退避処理部２２２に送り、元データ３１に上書きするよう、退避処理部２２２に指示する（Ｓ３５６）。
退避処理部２２２は、ステップＳ３５６でデータ抽出部２１１から送られた本体データ２３６を主記憶装置２上に読出し、フラッシュメモリ３の元データも主記憶装置２上に読出した上で、差分データ２４１を生成し、生成した差分データ２４１を退避領域２４へ書込む。
次に、データ抽出部２１１は、同じ保持データ２３１’に対して同様の処理を行わないようにするため、メモリダンプデータ３２において処理の対象となっている識別子２３２をクリアした（Ｓ３５７）後、他の検索コード２３３の検索を開始し（Ｓ３５８）、データ復旧処理部２１は、ステップＳ３５２へ処理を戻す。
【００２７】
次に、図９および図１０を参照して、本実施形態に係るデータ復旧処理（図３から図８で説明した処理）の各時刻におけるデータの状態を説明する。
図９は、本実施形態に係るデータ復旧処理の流れを示すシーケンス図であり、図１０は、各時刻におけるデータの状態を示す表である。
なお、図１０において「Ａ」はフラッシュメモリ３に格納されている元データ３１を示し、「ａ」が差分データ２４１を示す。つまり「Ａ＋ａ」で更新後データを示すこととなる。そして、「ｂ」が識別子２３２を示す。つまり、「ｂＡ＋ａ」で識別子２３２がついた保持データ２３１を示す。また、図１０において「−」は、データが格納されていないことを示す。そして、図１０における時刻は、図９に示す各時刻５０１〜５０５に相当するものであり、図１０のアプリケーションの項目は、アプリケーション２５から見たデータの状態を示している。さらに、図９における各部の符号は、図３に準ずるものとし、説明を省略する。
まず、アプリケーション２５によるデータの更新が行われる前、すなわちアプリケーション２５が退避処理部２２２に更新後データの書込み指示を行う前（時刻５０１）は、図１０に示すようにフラッシュメモリ３に元データ３１「Ａ」が格納されており、アプリケーション２５から見たデータは、元データ「Ａ」である。
【００２８】
そして、アプリケーション２５によるデータの更新が行われ、すなわちアプリケーション２５が退避処理部２２２に更新後データの書込み指示が行われ（Ｓ４０１）、データ更新監視部２１３によるデータ更新の検出が行われた（Ｓ４０２）とき（時刻５０２）では、図１０に示すように、退避領域２４に差分データ２４１「ａ」が格納され、フラッシュメモリ３に元データ３１「Ａ」が格納されている。また、このときアプリケーション２５から見たデータは、更新後データ「Ａ＋ａ」である。
【００２９】
そして、データ更新監視部２１３によるデータ複写部２１２へのデータ更新検出の通知が行われ（Ｓ４０３）、データ複写部２１２が退避処理部２２２へ更新後データの読み込みを指示し（Ｓ４０４）、退避処理部２２２から読み込んだ（Ｓ４０５）更新後データに識別子２３２を付加した保持データ２３１を複写領域２３へ書き込んだ（Ｓ４０６）後（時刻５０３）におけるデータの状態は、以下に記載する通りである。つまり、図１０に示すように、複写領域２３には保持データ２３１「ｂＡ＋ａ」が格納されており、退避領域２４には差分データ２４１「ａ」が格納されており、フラッシュメモリ３には、元データ３１「Ａ」が格納されている。また、アプリケーション２５から見たデータは、更新後データ「Ａ＋ａ」である。
【００３０】
次に、ＯＳ２２に障害が発生した（Ｓ４０７）後（時刻５０４）のデータの状態は、メモリダンプ処理が行われているため、複写領域２３および退避領域２４にはデータが格納されておらず（主記憶装置２の内容がクリアされるため）、フラッシュメモリ３に元データ３１「Ａ」と、メモリダンプデータ３２内の保持データ２３１「ｂＡ＋ａ」とが格納されている。さらに、図示しないがフラッシュメモリ３にはメモリダンプ内の複写領域２３’に格納されている差分データ２４１’「ａ」も格納されている。また、アプリケーション２５からデータを見ることはできない。
【００３１】
そして、再起動が行われ（Ｓ４０８）、データ抽出部２１１が退避処理部２２２へ本体データ２３６の書込みを指示し（Ｓ４０９）、退避処理部２２２が差分データ２４１を生成し、退避領域２４に書込んだ後（時刻５０５）におけるデータの状態は、以下に記載する通りである。すなわち、複写領域２３には、データが格納されておらず、退避領域２４には差分データ２４１「ａ」が格納されている。フラッシュメモリ３には、元データ３１「Ａ」と保持データ２３１とから識別子２３２が削除された更新後データ「Ａ＋ａ」が格納されている。識別子２３２の削除は、図８のステップＳ３５７の処理によるものである。また、再起動された直後のアプリケーション２５は、データを見ることができないが、ＯＳ２２にアクセスし、業務を再開することにより、アプリケーション２５から見たデータは、更新後データ「Ａ＋ａ」となる。
【００３２】
（比較例）
次に、図１１から図１４を参照して比較例としての一般的なフラッシュメモリ３ａに対するデータ復旧処理の説明を行う。
図１１は、比較例に係る通常時のシャットダウン（つまり、ＯＳ２２ａの障害発生時ではないシャットダウン）時におけるデータ復旧処理の概略を示す図である。
図１１において、データ復旧装置１ａは、バスで相互に接続された主記憶装置２ａと、補助記憶装置としてのフラッシュメモリ３ａと、ＣＰＵ４ａとを有する。主記憶装置２ａでは、ＯＳ２２ａおよびアプリケーション２５ａが実行されており、また差分データ２４１ａを格納するための退避領域２４ａが設けられている。ＯＳ２２ａは、メモリダンプ処理を行うためのメモリダンプ部２２１ａと、差分データ２４１ａの生成や、フラッシュメモリ３ａに格納されている元データ３１ａおよび差分データ２４１から更新後データを生成する退避処理部２２２ａを有してなる。
図１１のデータ復旧装置１ａが、図３のデータ復旧装置１と異なっている点は、データ復旧処理部２１およびデータ復旧処理部２１の各部を有していない点と、主記憶装置２ａに複写領域２３が設けられていない点である。
【００３３】
まず、アプリケーション２５ａがデータの更新を行おうとすると、退避処理部２２２ａが、フラッシュメモリ３の元データ３１ａを更新することなく、差分データ２４１ａを生成し、生成した差分データ２４１ａを退避領域２４ａへ格納する（Ｓ５０１）。
アプリケーション２５ａが、データの読込みを行うときには、退避処理部２２２ａによって退避領域２４ａの差分データ２４１ａと、補助記憶装置の元データ３１ａとを結合した更新後データが生成され、この更新後データをアプリケーション２５ａが読込む（Ｓ５０２）。
そして、シャットダウン時には、退避処理部２２２ａは、退避領域２４ａに格納してある差分データ２４１ａと、フラッシュメモリ３ａの元データ３１ａとを読み出した上で、これらのデータを結合して更新後データとし、元データ３１ａと置換することによってフラッシュメモリ３ａに格納する（Ｓ５０３）。
【００３４】
次に、図１１を参照しつつ、図１２に沿って図１１の処理の各時刻におけるデータの状態を説明する。
図１２は、比較例における通常時のシャットダウン時の処理の流れと、データの状態を示す図であり、（ａ）は、シーケンス図を示し、（ｂ）は、各時刻におけるデータの状態を示す表である。なお、図１２（ｂ）の表における「Ａ」および「ａ」は、図１０に準ずるものとする。また、図１２（ｂ）における時刻は、図１２（ａ）の各時刻６０１〜６０４に相当し、図１２（ｂ）におけるアプリケーションの項目は、アプリケーション２５ａから見たデータを示している。
まず、アプリケーション２５ａによる更新が行われる前、すなわちアプリケーション２５ａが、更新後データの書込み指示を退避処理部２２２ａに送る前（時刻６０１）、図１２（ｂ）に示すように、退避領域２４ａにはデータが格納されておらず、フラッシュメモリ３ａに元データ３１ａ「Ａ」が格納されており、アプリケーション２５ａから見たデータは、元データ３１ａ「Ａ」である。
【００３５】
アプリケーション２５ａによる更新が行われた後、すなわちアプリケーション２５ａが、更新後データの書込み指示を退避処理部２２２ａに送った（Ｓ５１１）後（時刻６０２）のデータの状態は、図１２（ｂ）に示すように、退避領域２４ａに差分データ２４１ａ「ａ」が格納されており、フラッシュメモリ３ａには、元データ３１ａ「Ａ」が格納されている。また、アプリケーション２５ａから見たデータは、更新後データ「Ａ＋ａ」である。
【００３６】
ここで、ＯＳ２２ａのシャットダウンが行われた（Ｓ５１２）後（時刻６０３）のデータの状態は、図１２（ｂ）に示すように、退避領域２４ａがクリアされるため、退避領域２４ａにデータは格納されておらず、シャットダウン直前に退避処理部２２２ａが、退避領域２４ａの差分データ２４１ａ「ａ」と、フラッシュメモリ３ａの元データ３１ａ「Ａ」とを読み込んだ上で、これらを結合させてフラッシュメモリ３ａの元データ３１ａ「Ａ」と置換して格納するため、フラッシュメモリ３ａには更新後データ「Ａ＋ａ」が格納される。なお、このとき、アプリケーション２５ａはデータを見ることができない。
【００３７】
そして、ＯＳ２２ａの起動が行われた（Ｓ５１３）後（時刻６０４）のデータの状態は、図１２（ｂ）に示すように退避領域２４ａには、データが格納されておらず、フラッシュメモリ３ａには、更新後データ「Ａ＋ａ」が格納されている。アプリケーション２５ａは、フラッシュメモリ３ａの更新後データ「Ａ＋ａ」を読み取ることによって業務を再開する。このときのアプリケーション２５ａから見たデータは、更新後データ「Ａ＋ａ」である。
【００３８】
次に、図１３および図１４を参照して、比較例におけるＯＳ２２ａの障害発生時の処理を説明する。
図１３は、比較例に係るＯＳの障害発生時の処理を示す概略図である。
図１３において、図１１と同様の構成要素には同一の符号を付して説明を省略する。また、図６と同様にＯＳ２２ａの障害によって停止している構成要素を破線で示すこととする。
ＯＳ２２ａの障害発生によってＯＳ２２ａおよびアプリケーション２５ａが停止すると、ＯＳ２２ａに備えられているメモリダンプ部２２１ａが退避領域２４ａのデータをフラッシュメモリ３ａへコピーする（Ｓ５２１）メモリダンプ処理を行う。このようにメモリダンプ部２２１ａによってフラッシュメモリ３ａへコピーされた退避領域２４ａのデータ（メモリダンプデータ３２ａ）には、差分データ２４１ａ’が格納されている。
【００３９】
図１４は、比較例に係るＯＳ障害発生時の処理の流れと、データの状態を示す図であり、（ａ）は、シーケンス図を示し、（ｂ）は、各時刻におけるデータの状態を示す表である。なお、図１４（ｂ）の表における「Ａ」および「ａ」は、図１０に準ずるものとする。また、図１４（ｂ）における時刻は、図１４（ａ）の各時刻６１１〜６１４に相当し、図１４（ｂ）におけるアプリケーションの項目は、アプリケーション２５ａから見たデータを示している。
アプリケーション２５ａによる更新が行われる前、すなわちアプリケーション２５ａが、差分データ２４１ａの退避領域２４ａへの書込み指示を退避処理部２２２ａに送る前（時刻６１１）、図１４（ｂ）に示すように、退避領域２４ａにはデータが格納されておらず、フラッシュメモリ３ａに元データ３１ａ「Ａ」が格納されており、アプリケーション２５ａから見たデータは、元データ３１ａ「Ａ」である。
【００４０】
アプリケーション２５ａによる更新が行われた後、すなわちアプリケーション２５ａが、データの書込み指示を退避処理部２２２ａに送った（Ｓ５３１）後（時刻６１２）のデータの状態は、図１４（ｂ）に示すように、退避領域２４ａに差分データ２４１ａ「ａ」が格納されており、フラッシュメモリ３ａには、元データ３１ａ「Ａ」が格納されている。また、アプリケーション２５ａから見たデータは、更新後データ「Ａ＋ａ」である。
【００４１】
ＯＳ２２ａに障害が発生し（Ｓ５３２）、メモリダンプ処理が行われた後（時刻６１３）におけるデータの状態は、図１４（ｂ）に示すように、フラッシュメモリ３ａに、元データ３１ａ「Ａ」と、メモリダンプデータ３２ａの差分データ２４１ａ「ａ」とが格納される。このとき、アプリケーション２５ａは、データを見ることができない。
【００４２】
そして、ＯＳ２２ａが再起動した（Ｓ５３３）後（時刻６１４）、図１２（ｂ）に示すように、メモリダンプデータ３２ａから差分データ２４１ａを退避領域２４ａに戻そうとしても、メモリダンプデータ３２ａ中の差分データ２４１ａを他のデータと区別する手段がないため、退避処理部２２２ａは、差分データ２４１ａを退避領域２４ａに戻すことができない。
従って、時刻６１４におけるデータの状態は、時刻６１３と変わらず、アプリケーション２５ａは、元データ３１ａ「Ａ」しか読み取ることができない。
【００４３】
このように、書込み回数が有限回であるフラッシュメモリ３ａなどにおける書込み回数を制限するため、更新時に差分データ２４１ａを主記憶装置２ａの退避領域２４ａに格納する方法では、ＯＳ２２ａの障害時にメモリダンプを行っても、更新データを復活させることは困難である。
【００４４】
（効果）
本実施形態によれば、更新後のデータ（データ本体２３６）に検索可能な識別子２３２を付加した状態で主記憶装置２ａの複写領域２３に格納し、ＯＳ２２の障害発生時にメモリダンプ機能を利用してこの複写領域２３をフラッシュメモリ３にコピーすることによって、再起動時に識別子２３２を検索することによって、データを復活させることが可能となる。
【００４５】
本実施形態では、補助記憶装置としてフラッシュメモリ３を用いたが、これに限らず、例えば、ＳＤ（Secure Digital）メモリカードなど補助記憶装置として使用可能な不揮発性半導体メモリや、ＨＤＤや、ＦＤ（Flexible Disk）などの磁気記憶装置や、ＣＤ‐Ｒ（Compact Disk Recordable）や、ＤＶＤ（Digital Versatile Disk）などの光学記憶媒体でもよい。
【図面の簡単な説明】
【００４６】
【図１】本実施形態に係るデータ復旧装置の構成例を示すブロック図である。
【図２】本実施形態に係るデータの構成例を示す図であり、（ａ）は、更新後データと、差分データと、元データの関係を示す模式図であり、（ｂ）は、保持データの構成例を示す図である。
【図３】本実施形態に係るアプリケーションによるデータ更新時の処理の概略を示す図である（その１）。
【図４】本実施形態に係るアプリケーションによるデータ更新時の処理の概略を示す図である（その２）。
【図５】本実施形態に係るアプリケーションによるデータ更新時の処理の流れを示すフローチャートである。
【図６】本実施形態に係るＯＳ障害発生時の処理の概略を示す図である。
【図７】本実施形態に係るＯＳの再起動時における処理の概略を示す図である。
【図８】本実施形態に係る再起動時の処理の流れを示すフローチャートである。
【図９】本実施形態に係るデータ復旧処理の流れを示すシーケンス図である。
【図１０】各時刻におけるデータの状態を示す表である。
【図１１】比較例に係る通常時のシャットダウン時におけるデータ復旧処理の概略を示す図である。
【図１２】比較例における通常時のシャットダウン時の処理の流れと、データの状態を示す図であり、（ａ）は、シーケンス図を示し、（ｂ）は、各時刻におけるデータの状態を示す表である。
【図１３】比較例に係るＯＳの障害発生時の処理を示す概略図である。
【図１４】比較例に係るＯＳ障害発生時の処理の流れと、データの状態を示す図であり、（ａ）は、シーケンス図を示し、（ｂ）は、各時刻におけるデータの状態を示す表である。
【符号の説明】
【００４７】
１      データ復旧装置
２      主記憶装置
３      フラッシュメモリ（不揮発性半導体メモリ）
４      ＣＰＵ
２１    データ復旧処理部
２３，２３’  複写領域
２４，２４’  退避領域
２５    アプリケーション
３１    元データ
３２    メモリダンプデータ
２１１  データ抽出部
２１２  データ複写部
２１３  データ更新監視部
２１４  退避処理部
２２１  メモリダンプ部
２２２  退避処理部
２３１，２３１’  保持データ
２３２，２３２’  識別子
２３３  検索コード
２３４  データ名
２３５  サイズ
２３６  データ本体
２４１，２４１’  差分データ
【図１】
2009266115.tif 000003
【図２】
2009266115.tif 000004
【図３】
2009266115.tif 000005
【図４】
2009266115.tif 000006
【図５】
2009266115.tif 000007
【図６】
2009266115.tif 000008
【図７】
2009266115.tif 000009
【図８】
2009266115.tif 000010
【図９】
2009266115.tif 000011
【図１０】
2009266115.tif 000012
【図１１】
2009266115.tif 000013
【図１２】
2009266115.tif 000014
【図１３】
2009266115.tif 000015
【図１４】
2009266115.tif 000016