(57)【要約】      （修正有）【課題】記憶装置に書き込まれていないデータがメモリ内にある状態でオペレーティングシステムがクラッシュしても、メモリ内のデータを記憶装置に復旧する。【解決手段】情報処理装置は、メインメモリと、第１記憶装置と、第２記憶装置と、第１書込手段と、第２書込手段と、第３書込手段と、を具備する。第１記憶装置は、オペレーティングシステムを格納する。第１書込手段は、第２記憶装置に書き込まれるデータをメインメモリに書き込み、データの第２記憶装置内の書き込まれる位置を示す書き込み位置情報をメインメモリに書き込む。第２書込手段は、オペレーティングシステムのクラッシュ時に、メインメモリ内のデータおよび書き込み位置情報を第１記憶装置内の書込領域に書き込む。第３書込手段は、クラッシュ後の起動時に、第１記憶装置内のデータを第１記憶装置内の書き込み位置情報に基づいて第２記憶装置に書き込む。【選択図】図１
2012014435.tif 000002
【特許請求の範囲】
【請求項１】
メインメモリと、
オペレーティングシステムを実行するためのファイルが格納される第１の記憶装置と、
第２の記憶装置と、
第２の記憶装置に書き込まれるデータの前記第２の記憶装置内の書き込まれる位置を示し、前記第２の記憶装置内の設定された位置に書き込まれる書込位置情報を前記メインメモリに書き込む第１書き込み手段と、
前記オペレーティングシステムのクラッシュ時に、前記メインメモリ内の前記書込位置情報を前記第１の記憶装置内に設定された書込領域に書き込む第２書き込み手段と、
前記書込位置情報を第２の記憶装置内の設定された位置に書き込む第３書き込み手段と、
を具備する情報処理装置。
【請求項２】
前記第３書き込み手段は、前記クラッシュ後の起動時に、前記書込位置情報を第２の記憶装置内の設定された位置に書き込む
請求項１に記載の情報処理装置。
【請求項３】
第１書き込み手段は、前記メインメモリおよび前記第２の記憶装置を前記第１の記憶装置に対するアクセスのキャッシュメモリとして利用するキャッシュ手段を含み、
前記キャッシュ手段は、前記メインメモリを前記第２記憶装置より高位のキャッシュとして利用し、前記メインメモリに第１キャッシュデータをキャッシュし、前記第１キャッシュデータの前記第１の記憶装置内の書き込み位置を示す情報を含む第１キャッシュ管理情報を記録し、前記第２の記憶装置に第２キャッシュデータをキャッシュし、前記書込位置情報として前記第２キャッシュデータの前記第１の記憶装置内の書き込み位置を示す情報を含む第２キャッシュ管理情報を前記メインメモリおよび前記第２の記憶装置に書き込み、
前記第２書き込み手段は、前記オペレーティングシステムのクラッシュ時に、前記メインメモリ内の前記第１キャッシュデータ、前記第１キャッシュ管理情報、および前記第２キャッシュ管理情報を前記第１の記憶装置内のキャッシュデータ書込領域に書き込み、
前記第３書き込み手段は、前記クラッシュ後の起動時に、前記第１の記憶装置内の前記第１キャッシュデータを前記第１の記憶装置内の前記第１キャッシュ管理情報に基づいて前記第１の記憶装置に書き込み、前記第２キャッシュ管理情報を前記第２の記憶装置に書き込む、
請求項１に記載の情報処理装置。
【請求項４】
前記オペレーティングシステムのクラッシュ時に、前記メインメモリのダンプデータを前記第１の記憶装置に書き込むダンプデータ書込手段を更に具備する
請求項３に記載の情報処理装置。
【請求項５】
前記キャッシュ手段は、前記メインメモリおよび前記第２の記憶装置をキャッシュメモリとして用いるための設定を有するキャッシュ設定情報が前記メインメモリに記録し、
前記第１書き込み手段は、前記メインメモリ内の前記キャッシュ設定情報を前記キャッシュデータ書込領域内に書き込み、
前記第２書き込み手段は、前記キャッシュデータ書込領域内の前記キャッシュ設定情報を前記第２の記憶装置に書き込む、
請求項３に記載の情報処理装置。
【請求項６】
前記第１書き込み手段および前記第２書き込み手段は、プロセッサによって実行されるソフトウェアである
請求項３に記載の情報処理装置。
【請求項７】
前記第１の記憶装置はＨＤＤ（Hard Disk Drive）によって構成され、前記第２の記憶装置はＳＳＤ（Solid State Drive）によって構成される
請求項３に記載の情報処理装置。
【請求項８】
前記第２の記憶装置は複数の第３の記憶装置を有し、
前記第１書き込み手段は、前記複数の第３の記憶装置の内の一部の第４の記憶装置にデータを分散して書き込むと共に、分散して書き込まれたデータから生成される冗長コードを前記第４の記憶装置とは異なる前記複数の第３の記憶装置の内の第５の記憶装置に書き込むデータ冗長化手段であって、前記冗長コードを前記メインメモリ内に生成し、前記書込位置情報として前記冗長コードの前記第５の記憶装置内の書き込み位置を示す情報を含む設定情報を前記メインメモリ内に格納する冗長化手段を有し、
前記第２書き込み手段は、前記オペレーティングシステムのクラッシュ時に、前記メインメモリ内の前記冗長化コードおよび前記設定情報を前記第１の記憶装置内のデータ書込領域に書き込み、
前記第３書き込み手段は、前記クラッシュ後の起動時に、前記第１の記憶装置内の前記冗長コードを前記第１の記憶装置内の前記設定情報に基づいて前記第４の記憶装置に書き込み、前記第１の記憶装置内の設定情報を前記複数の第２の記憶装置に書き込む、
請求項１に記載の情報処理装置。
【請求項９】
前記冗長化手段および前記書き込み手段は、プロセッサによって実行されるソフトウェアである
請求項８に記載の情報処理装置。
【請求項１０】
メインメモリと、オペレーティングシステムを実行するためのファイルが格納される第１の記憶装置と、第２の記憶装置とを有する情報処理装置のデータ復旧方法であって、
第２の記憶装置に書き込まれるデータを前記メインメモリに書き込み、
前記データの前記第２の記憶装置内の書き込まれる位置を示す書き込み位置情報を前記メインメモリに書き込み、
前記オペレーティングシステムのクラッシュ時に、前記メインメモリ内の前記データおよび前記書き込み位置情報を前記第１の記憶装置内の書込領域に書き込み、
前記クラッシュ後の起動時に、前記第１の記憶装置内の前記データを前記第１の記憶装置内の前記書き込み位置情報に基づいて前記第２の記憶装置に書き込む
データ復旧方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶装置に書き込まれていないデータを復旧する情報処理装置およびデータの復旧方法に関する。
【背景技術】
【０００２】
ハードディスクは半導体メモリに比べてアクセスが遅い。そこで、メインメモリの一部をキャッシュ領域として使用して、キャッシュデータをメインメモリに記録することで、データのアクセス速度を高速化することが行われている。
【０００３】
また、ハードディスク内に不揮発性メモリを搭載し、不揮発性メモリをキャッシュメモリとして使用するハイブリッドハードディスクドライブが存在する。
【０００４】
また、近年、ハードディスクドライブの代わりに記憶媒体として不揮発性メモリを用いたＳＳＤ（Solid State Drive）を採用するコンピュータが市販されている。
【０００５】
現在、メインメモリおよびＳＳＤをキャッシュとして用いるシステムが提案されている。このシステムでは、メインメモリおよびＳＳＤにキャッシュするには、ドライバが用いられる。ドライバによってメインメモリおよびＳＳＤにキャッシュしている状態で、オペレーティングシステムがクラッシュした場合、キャッシュされたデータを失ってしまう恐れがある。そこで、オペレーティングシステムがクラッシュした場合、記憶装置に書き込まれていないキャッシュされたデータを失ってしまう恐れがあるので、キャッシュされたデータを記憶装置に復旧する技術が望まれている。
【０００６】
また、データの冗長化を図るためにＲＡＩＤ（Redundant Array of Inexpensive Disks）が用いられている。ＲＡＩＤには専用のハードウェアで実行するハードウェアＲＡＩＤと、ＣＰＵがＲＡＩＤに関する処理を行うソフトウェアＲＡＩＤとがある。ソフトウェアＲＡＩＤの場合、メインメモリを用いてパリティ（冗長化コード）の計算を行う。そのため、パリティを記憶装置に書き込む前にオペレーティングシステムがクラッシュした場合、パリティが失われて冗長性が損なわれる恐れがある。そのため、パリティが記憶装置に書き込まれていない状態でオペレーティングシステムがクラッシュした場合、パリティを記憶装置に復旧する技術が望まれている。
【０００７】
以上説明したように、記憶装置に書き込まれていないデータがある状態でオペレーティングシステムがクラッシュしても、データを記憶装置に復旧できるようにすることが望まれている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平９−２４４９０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
記憶装置に書き込まれていないデータがある状態でオペレーティングシステムがクラッシュしても、データを記憶装置に復旧できるようにすることが望まれている。
【００１０】
本発明の目的は、記憶装置に書き込まれていないデータがメモリ内にある状態でオペレーティングシステムがクラッシュしても、メモリ内のデータを記憶装置に復旧することが可能な情報処理装置およびデータ復旧方法を提供することにある。
【課題を解決するための手段】
【００１１】
実施形態によれば、情報処理装置は、メインメモリと、第１の記憶装置と、第２の記憶装置と、第１書き込み手段と、第２書き込み手段と、第３書き込み手段と、を具備する。第１の記憶装置は、オペレーティングシステムを実行するためのファイルを格納する。第１書き込み手段は、第２の記憶装置に書き込まれるデータを前記メインメモリに書き込み、前記データの前記第２の記憶装置内の書き込まれる位置を示す書き込み位置情報を前記メインメモリに書き込む。第２書き込み手段は、前記オペレーティングシステムのクラッシュ時に、前記メインメモリ内の前記データおよび前記書き込み位置情報を前記第１の記憶装置内の書込領域に書き込む第２書き込む。第３書き込み手段は、前記クラッシュ後の起動時に、前記第１の記憶装置内の前記データを前記第１の記憶装置内の前記書き込み位置情報に基づいて前記第２の記憶装置に書き込む。
【図面の簡単な説明】
【００１２】
【図１】第１の実施形態に係わる情報処理装置のストレージに対するアクセス経路を示すブロック図。
【図２】システム起動からＯＳ起動までの処理を示すフローチャート。
【図３】オペレーティングシステム起動時の処理の手順を示すフローチャート。
【図４】クラッシュ時の処理の手順を示すフローチャート。
【図５】修復ツールによる処理の手順を示すフローチャート。
【図６】第２の実施形態に係わるソフトウェアで実現されるＲＡＩＤサブシステムをもつ情報処理装置のストレージに対するアクセス経路を示すブロック図。
【図７】第２の実施形態に係わるソフトウェアで実現されるＲＡＩＤサブシステムをもつ情報処理装置のストレージに対するアクセス経路を示すブロック図。
【発明を実施するための形態】
【００１３】
以下、実施の形態について図面を参照して説明する。
【００１４】
（第１の実施形態）
図１は、第１の実施形態に係わる情報処理装置のストレージに対するアクセス経路を示すブロック図である。この情報処理装置は、パーソナルコンピュータやサーバ等のコンピュータによって実現される。
【００１５】
なお、図１に示すソフトウェア構成は、左から通常のオペレーティングシステム（ＯＳ）稼働時、クラッシュダンプ時のオペレーティングシステム（ＯＳ）稼働時、オペレーティングシステム起動時を示している。
【００１６】
コンピュータは、ＡＴＡ（AT Attachment）ストレージコントローラ１００、ハードディスクドライブ（ＨＤＤ）１１０、ＳＳＤ（Solid State Drive）１２０、およびメインメモリ１３０等を備えている。
【００１７】
ＨＤＤ１１０の一部もしくはすべての領域がキャッシュ対象領域１１１になっており、ＳＳＤ（Solid State Drive）１２０およびメインメモリ１３０をＨＤＤ１１０へのアクセスに対するキャッシュメモリとして用いる。メインメモリ１３０は１次キャッシュメモリとして用いられ、ＳＳＤ１２０は２次キャッシュメモリとして用いられる。メインメモリ１３０は、揮発性メモリであるＲＡＭによって構成されている。
【００１８】
キャッシュ対象領域１１１中にオペレーティングシステム（ＯＳ）１１２が格納されている。オペレーティングシステム１１２の中には、メモリダンプデータを書き込むためのダンプデータ書込領域１１３があらかじめ確保されている。なお、オペレーティングシステム１１２は必ずしもキャッシュ対象領域１１１の中に存在する必要はない。
【００１９】
ＳＳＤ１２０内には、キャッシュ設定データＢ１２１、２次キャッシュ管理情報Ｂ１２２、および２次キャッシュデータ１２３が格納される。ここでは２次キャッシュデバイスとしてＳＳＤを使用しているが、ＨＤＤ１１０よりもデータ転送速度が高速なストレージであればよく、特にＳＳＤに限定するものではない。２次キャッシュ管理情報Ｂ１２２のＳＳＤ１２０内の記録位置は予め決められている。
【００２０】
オペレーティングシステム１１２の起動前においては、拡張ローダ１６３が２次キャッシュの処理を行う。拡張ローダ１６３は、ＯＳブートローダ１６２が要求するリクエストを解釈し、ＯＳブートローダ１６２からリクエストされたデータが２次キャッシュデータ１２３内にあるかを判定する。２次キャッシュデータ１２３内にあると判定した場合、拡張ローダ１６３は、２次キャッシュデータ１２３からデータをリードする。２次キャッシュデータ１２３内にないと判定した場合は、拡張ローダ１６３は、ＨＤＤ１１０からデータをリードする。
【００２１】
オペレーティングシステム１１２の稼働中、キャッシュドライバ１４４が汎用ディスクドライバ１４３とＡＴＡストレージドライバ１４５との間に入り、メインメモリ１３０上に確保された１次キャッシュデータ１３４とＳＳＤ１２０内の２次キャッシュデータの管理および制御を行う。メインメモリ１３０内には、キャッシュ設定データＡ１３１、２次キャッシュ管理情報Ａ１３２、１次キャッシュ管理情報１３３が保存されている。
【００２２】
２次キャッシュ管理情報Ａ１３２は、２次キャッシュデータ１２３がＨＤＤ１１０内に書き込まれる位置の情報を含む。また、１次キャッシュ管理情報１３３は、１次キャッシュデータ１３１がＨＤＤ１１０内に書き込まれる位置の情報を含む。
【００２３】
キャッシュ設定データＡ１３１および２次キャッシュ管理情報Ａ１３２は、オペレーティングシステム１１２の起動時にＳＳＤ１２０からキャッシュ設定データＢ１２１および２次キャッシュ管理情報Ｂ１２２を読み込み、メインメモリ１３０上に展開されたデータである。オペレーティングシステム１１２の稼働中はメインメモリ１３０上でキャッシュ設定データＡ１３１および２次キャッシュ管理情報Ａ１３２の更新および管理が行われる。オペレーティングシステム１１２のシャットダウン時に、メインメモリ内のキャッシュ設定データＡ１３１および２次キャッシュ管理情報Ａ１３２がＳＳＤ１２０にキャッシュ設定データＢ１２１および２次キャッシュ管理情報Ｂ１２２として書き出される。
【００２４】
１次キャッシュデータ１３４および１次キャッシュ管理情報１３３は、オペレーティングシステム１１２の稼働中のみ有効である。オペレーティングシステム１１２のシャットダウン時にダーティーデータを２次キャッシュやＨＤＤに書き出した後に破棄される。
【００２５】
キャッシュドライバ１４４は、汎用ディスクドライバ１４３からのリード・ライト要求に対して、１次キャッシュデータ１３４、２次キャッシュデータ１２３、ＨＤＤ１１０のそれぞれ、もしくは、複数に対して適切にコマンドを発行し、ディスクシステムの性能の向上を図っている。
【００２６】
オペレーティングシステムがクラッシュし、メインメモリ１３０のダンプデータをＨＤＤ１１０に書き込む場合は、オペレーティングシステムのカーネル空間内のカーネルダンプ書込部１５１が処理を行う。カーネルダンプ書込部１５１は、ＨＤＤ１１０内のダンプデータ書込領域１１３にダンプデータを書き込むために、ダンプ用ＡＴＡストレージドライバ１５３にライトコマンドを送信する。ダンプ用ＡＴＡストレージドライバ１５３は、ＡＴＡストレージコントローラ１００経由で、ＨＤＤ１１０にダンプデータを書き込む。なお、ダンプ用ＡＴＡストレージドライバ１５３は、通常稼動時のＡＴＡストレージドライバ１４５と同じものであるが、カーネル内に別の実体として用意されており、ＡＴＡストレージドライバ１４５自身がクラッシュの原因である場合でも、メインメモリ１３０ダンプをＨＤＤ１１０に記録することができるようになっている。
【００２７】
ダンプキャッシュドライバ１５２は、クラッシュ時にメインメモリ１３０ダンプを書き込むカーネルダンプ書込部１５１とダンプ用ＡＴＡストレージドライバ１５３との間に入りキャッシュデータの書き込みを行う。まず、ダンプキャッシュドライバ１５２は、カーネルダンプ書込部１５１から受け取ったダンプデータを書き込む処理を行う。これは、２次キャッシュ管理情報１３２、１次キャッシュ管理情報１３３に、ダンプデータ書込領域１１３のデータが存在した場合、その情報を削除するためである。
【００２８】
ダンプデータが書き込まれた後、ダンプキャッシュドライバ１５２は、キャッシュデータをＨＤＤ１１０内のキャッシュデータ書込領域１１４に書き込む処理を行う。キャッシュデータ書込領域１１４内には、通常稼働時に動作しているキャッシュドライバ１４４がメインメモリ１３０上に確保しているキャッシュ設定データＡ１３１、２次キャッシュ管理情報１３２、１次キャッシュデータ１３４、および１次キャッシュ管理情報１３４が書き込まれる。
【００２９】
カーネルダンプ書込部１５１とダンプ用ＡＴＡストレージドライバ１５３は、ダンプデータ書込領域１１３が存在するＨＤＤ１１０のみへのアクセスしか想定されていないため、ダンプキャッシュドライバ１５２はＳＳＤ１２０にアクセスすることができない。そこで、キャッシュデータ書込領域１１４は、ダンプデータ書込領域１１３が確保されているＨＤＤ１１０上に確保される。
【００３０】
クラッシュダンプ後のオペレーティングシステム起動前に、拡張ローダ１６３が正常シャットダウンができなかったことを検出した時に修復ツール６６１が起動される。修復ツール６６１は、ＨＤＤ１１０内のキャッシュデータ書込領域１１４およびＳＳＤ１２０内の２次キャッシュデータ１２３からキャッシュ対象領域１１１のデータを復元する。
【００３１】
図２のフローチャートを参照してシステム起動からＯＳ起動までの処理を説明する。なお、図２に示すフローチャートでは、通常の処理の部分を一部省いている。
【００３２】
システムＢＩＯＳは、オペレーティングシステム１１２を起動する前に、拡張ローダ１６３を起動する（ステップ２０１）。拡張ローダ１６３は、ＳＳＤ１２０内に格納されているキャッシュ設定データＢ１２１からクラッシュが発生したかを判定する（ステップ２０２）。クラッシュ発生後の起動と判定した場合（ステップ２０２のＹｅｓ）、拡張ローダ１６３は、修復ツール１６１を起動する。クラッシュ発生後の起動ではなく正常時の起動であると判定した場合（ステップ２０２のＮｏ）、拡張ローダ１６３は、ＯＳブートローダ１６２を起動する。ＯＳブートローダ１６２は、オペレーティングシステム１１２の起動に必要なデータを読み込んだり／書き込んだりするたびに、拡張ローダ１６３はそのデータがＳＳＤ１２０内の２次キャッシュデータ１２３内に存在するかを判定する。存在する場合、拡張ローダ１６３は、ＳＳＤ１２０内の２次キャッシュデータ１２３からデータを読み書きし、無い場合にはＨＤＤ１１０からデータを読み書きする。以上で、システム起動からＯＳ起動までの処理の説明を終了する。
【００３３】
次に、図３のフローチャートを参照して、オペレーティングシステム１１２起動時の処理の手順を説明する。なお、図３に示すフローチャートでは、通常の処理の部分を一部省いている。
【００３４】
ドライバはハードウェアに近いレイヤから起動される。ＡＴＡストレージドライバ１４５が起動された後（ステップ３０１）、キャッシュドライバ１４４が起動される。
【００３５】
キャッシュドライバ１４４の起動時、キャッシュドライバ１４４は、ＳＳＤ１２０およびＨＤＤ１１０を認識する（ステップ３０２）。そして、キャッシュドライバ１４４は、ＳＳＤ１２０からキャッシュ設定データＢ１２１、２次キャッシュ管理情報Ｂ１３２をそれぞれメインメモリ１３０内に展開する（ステップ３０３）。
【００３６】
次に、キャッシュドライバ１４４は、メインメモリ１３０内に１次キャッシュデータ１３４が記録される領域を確保した後、１次キャッシュ管理情報１３４を作成する（ステップ３０４）。その後、キャッシュドライバ１４４は、ダンプ用ＡＴＡストレージドライバ１５３のエントリーポイントを検索し、ダンプキャッシュドライバ１５２に書き換える（ステップ３０５）。元のエントリーポイントは記憶しておき、クラッシュ時に使用する。キャッシュドライバの起動後、汎用ディスクドライバ１４３が起動される（ステップ３０６）。以上でオペレーティングシステム１１２起動時の処理の手順の説明を終了する。
【００３７】
次に、図４のフローチャートを参照してクラッシュ時の処理の手順を説明する。システムがクラッシュするとカーネルダンプ書込部１５１およびダンプキャッシュドライバ１５２が順に起動する（ステップ４０１）。従来、ダンプキャッシュドライバ１５２ではなく、ダンプ用ＡＴＡストレージドライバ１５３が起動するが、本システムでは、ダンプ用ＡＴＡストレージドライバ１５３のエントリーポイントをダンプキャッシュドライバ１５２に書き換えているため、ダンプキャッシュドライバ１５２が起動する。
【００３８】
ダンプキャッシュドライバ１５２は、保存していたエントリーポイントを使用し、ダンプ用ＡＴＡストレージドライバ１５３を起動する（ステップ４０２）。ダンプ用ＡＴＡストレージドライバ１５３からダンプキャッシュドライバ１５２に関数ポインタが渡される（ステップ４０３）。関数ポインタには、ダンプデバイスをオープンする関数、ダンプデータを書き込む関数、及び、ダンプデバイスをクローズする関数等が含まれる。ダンプキャッシュドライバ１５２は、それらの関数ポインタを記憶し（ステップ４０４）、対応する自分自身の関数ポインタをカーネルダンプ書込部１５１に渡す（ステップ４０５）。ここで、ダンプデバイスとは、ダンプ書き込み領域が存在するデバイスであり、ＨＤＤ１１０を指す。
【００３９】
次に、カーネルダンプ書込部１５１は、ダンプデバイスをオープンする関数をコールする（ステップ４０６）。ダンプキャッシュドライバ１５２は、対応するダンプ用ＡＴＡストレージドライバ１５３の関数をコールする（ステップ４０７）。ダンプデバイスのオープンが完了すると、ダンプデータの書き込みが始まる。
【００４０】
カーネルダンプ書込部１５１が、ダンプキャッシュドライバ１５２の書き込みルーチンをコールすると（ステップ４０８）、ダンプキャッシュドライバ１５２はダンプ用ＡＴＡストレージドライバ１５３の書き込みルーチンをコールする（ステップ４０９）。それが終了すると、ダンプキャッシュドライバ１５２は、メインメモリ１３０内に１次キャッシュ管理情報１３４及び、２次キャッシュ管理情報Ａ１３２に対応するデータが存在するか確認する。データが存在する場合、カーネルダンプ書込部１５１、それらのデータを無効にする（ステップ４１０）。カーネルダンプ書込部１５１は、この処理をダンプデータをすべてＨＤＤ１１０に書き込むまで繰り返す。
【００４１】
ダンプデータの書き込みが完了すると、カーネルダンプ書込部１５１は、ダンプデバイスのクローズを行うために、ダンプキャッシュドライバ１５２にデバイスクローズ関数をコールする（ステップ４１１）。ダンプキャッシュドライバ１５２は、デバイスクローズ関数がコールされると、まず、書き込むキャッシュデータを生成する（ステップ４１２）。書き込むデータはメインメモリ１３０上に存在するキャッシュ設定データＡ１３１、１次キャッシュデータ１３４、１次キャッシュ管理情報１３４、および２次キャッシュ管理情報１３２であるが、例えばポインタで位置を表しているデータ等がある場合は、先頭からの相対位置等に変換する必要がある。
【００４２】
次に、ダンプキャッシュドライバ１５２は、ダンプ用ＡＴＡストレージドライバ１５３の書き込み関数を使用して、キャッシュデータをＨＤＤ１１０上にあるキャッシュデータ書込領域１１４に書き込む（ステップ４１３）。すべてのキャッシュデータを書き込むまで、繰り返しダンプ用ＡＴＡストレージドライバ１５３の書き込み関数をコールする。書き込みが完了したら、ダンプ用ＡＴＡストレージドライバ１５３にクローズ関数をコールしてダンプデータの書き込みを完了する（ステップ４１４）。以上で、クラッシュ時の処理の手順を説明を終了する。
【００４３】
次に、図５のフローチャートを参照して、修復ツールによる処理の手順を説明する。図２に示すフローチャートにおいて、拡張ローダ１６３がクラッシュしたと判断した場合（ステップ２０２のＹｅｓ）、修復ツール１６１が起動される（ステップ２０５）。修復ツール１６１は、ＨＤＤ１１０に書き込まれたキャッシュデータから、ＳＳＤ１２０内のキャッシュ設定データＢ１２１、２次キャッシュ管理情報Ｂ１３２、及び、２次キャッシュデータ１２３を復旧する処理を行う。
【００４４】
修復ツール１６１は起動すると、ＨＤＤ１１０のキャッシュデータ書込領域１１４からダンプキャッシュドライバ１５２によって書き込まれたキャッシュデータを読み込む（ステップ５０１）。次に、修復ツール１６１は、キャッシュデータ書込領域１１４からから読み込まれた１次キャッシュ管理情報１３４から１次キャッシュデータ１３４を対応するＨＤＤ１１０上のキャッシュ対象領域１１１に書き込む（ステップ５０２）。さらに、修復ツール１６１は、キャッシュデータ書込領域１１４から読み込まれた２次キャッシュ管理情報Ａ１３２およびキャッシュ設定データＡ１３１を、ＳＳＤ１２０内に２次キャッシュ管理情報Ｂ１３２およびキャッシュ設定データＢ１２１として書き込む（ステップ５０３）。キャッシュ設定データＢ１２１は予め決められた位置に書き込まれる。そして、修復ツール１６１は、キャッシュデータ書込領域１１４のデータを削除する（ステップ５０４）。最後に修復ツール１６１はシステムをリブートさせる。
【００４５】
以上の処理で、システムクラッシュが発生しても、キャッシュされてＨＤＤ１１０に書き込まれていないデータを失ってしまうことを防ぐことが可能になる。
【００４６】
（第２の実施形態）
ソフトウェアＲＡＩＤにおいても、正常にオペレーティングシステムをシャットダウンできないことは、データの消失を発生させる重大な問題となりうる。
【００４７】
例えば、３台のＨＤＤで構成したＲＡＩＤ５のアレイにおいて、あるデータＤ００をＤ００’に更新する場合を考える。ここで、データＤ００はＨＤＤ０上に存在し、データＤ０１はＨＤＤ１に存在し、データＤ００，Ｄ０１に対応するパリティＰ０はＨＤＤ２に存在するものとする。なお、Ｐ０＝Ｄ００ｘｏｒＤ０１（ｘｏｒは排他的論理和を表す）が成り立つ。ＲＡＩＤ５でのデータの更新は、対応するパリティの更新を伴うものである。すなわち、Ｄ００に対応するパリティＰ０は、Ｄ００’に対応するパリティＰ０’（＝Ｄ００’ｘｏｒＤ０１）に更新される必要がある。
【００４８】
データＤ００’およびパリティＰ０’を書き込むコマンドを発行し、パリティＰ０’の書き込みのみが完了した状態で、システムがクラッシュしてしまうと、データＤ００がでーたＤ００’に更新されていないため、データとパリティとの整合が取れていない状態となる。ここでＨＤＤ１が故障すると、Ｐ０’ｘｏｒＤ００≠Ｄ０１であり、正しいデータを復旧できず、データ消失となる。以下に、システムクラッシュ時には上記問題を回避するシステムについて説明する。
【００４９】
図６は、第２の実施形態に係わるソフトウェアで実現されるＲＡＩＤサブシステムをもつ情報処理装置のストレージに対するアクセス経路を示すブロック図である。この情報処理装置は、パーソナルコンピュータやサーバ等のコンピュータによって実現される。
【００５０】
オペレーティングシステム１１２がインストールされているＨＤＤ１１０は、第１ＡＴＡストレージコントローラ６００Ａに接続されている。ＨＤＤ１１０には、ダンプデータ書込領域１１３とＲＡＩＤデータ書き込み領域が存在する。第１ＡＴＡストレージコントローラ６００Ａは、第１ＡＴＡストレージドライバ６４５Ａによって制御されている。第２ＡＴＡストレージコントローラ６００Ｂには、３台のＨＤＤ６２０Ａ，６２０Ｂ，６２０Ｃが接続されている。第２ＡＴＡストレージコントローラ６００Ｂを制御する第２ＡＴＡストレージドライバ６４５Ｂの上位に位置するＲＡＩＤドライバ６４４によって、３台のＨＤＤ６２０Ａ，６２０Ｂ，６２０Ｃは、ＲＡＩＤ５のアレイとして制御される。それぞれのＨＤＤ６２０Ａ，６２０Ｂ，６２０ＣにはそれぞれＲＡＩＤ設定情報６２１Ａ，６２１Ｂ，６２１Ｃが記録されている。ＲＡＩＤドライバ６４４は、起動時にＲＡＩＤ設定情報６２１Ａ，６２１Ｂ，６２１Ｃを元にアレイを構築する。なお、ＲＡＩＤ設定情報６２１Ａ，６２１Ｂ，６２１Ｃは、ＨＤＤ６２０Ａ，６２０Ｂ，６２０Ｃの設定された位置に書き込まれている。
【００５１】
ＲＡＩＤドライバ６４４は、メインメモリ６３０上にＲＡＩＤ設定情報６３１、コマンド受付情報６３２、コマンド発行情報６３３、およびパリティ計算データ６３４を記録する。ＲＡＩＤドライバ６４４は、ＲＡＩＤ設定情報６３１、コマンド受付情報６３２、コマンド発行情報６３３、およびパリティ計算データ６３４を使用してＲＡＩＤの機能を実現する。
【００５２】
アプリケーション１４１がファイルに対してリード・ライトを行うと、ファイルシステム１４２が汎用ディスクドライバ１４３を経由して、ＲＡＩＤドライバ６４４や第１ＡＴＡストレージドライバ６４５Ａへ対応するコマンドを発行する。クラッシュが発生すると、カーネルダンプ書込部１５１が起動するが、図１を用いて説明した場合と同様に、ダンプ用ＡＴＡストレージドライバ１５３とカーネルダンプ書込部１５１との間にダンプＲＡＩＤドライバ６５２が入ることで、ＲＡＩＤ設定情報６３１、コマンド受付情報６３２、コマンド発行情報６３３、およびパリティ計算データ６３４をＨＤＤ１１０内のＲＡＩＤデータ書込領域６１４に書き込むことができる。
【００５３】
図７は、ＯＳ起動前のストレージに対するアクセス経路を記述している。拡張ローダ６６３がＲＡＩＤの機能を実現する。ＯＳブートローダ１６２の要求がＲＡＩＤに対するものである場合、拡張ローダ６６３は、第２ＡＴＡストレージコントローラ６００Ｂに接続されているＨＤＤ６２０Ａ，６２０Ｂ，６２０Ｃに適切なコマンドを発行する。Ｉｎｔ１３ｈルーチン６６４Ａ，６６４Ｂはネストされてイル。Ｉｎｔ１３ｈルーチン６６４Ａ，６６４Ｂは、自分の配下のＨＤＤに対するコマンドであると認識した場合に、処理を行う。
【００５４】
また、拡張ローダ６６３がクラッシュ後の起動であると判断した場合には、修復ツール６６１が起動される。修復ツール６６１は、ＲＡＩＤデータ書込領域６１４から、ＲＡＩＤ設定情報、コマンド受付情報、コマンド発行情報、及び、パリティ計算データを読み込む。そして、処理中だったコマンドを検出し、正しいデータを書き込んだ後、ＲＡＩＤデータ書き込み領域からデータを削除し、システムをリブートする。
【００５５】
以上説明したように、ＨＤＤ６２０Ａ，６２０Ｂ，６２０Ｃに書き込まれていないパリティがメインメモリ６３０内にある状態でオペレーティングシステムがクラッシュしても、メインメモリ６３０内のデータをＨＤＤ６２０Ａ，６２０Ｂ，６２０ＣをＨＤＤ６２０Ａ，６２０Ｂ，６２０Ｃの設定された位置に復旧することができる。
【００５６】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【００５７】
１００…ＡＴＡストレージコントローラ，１１０…ハードディスクドライブ（ＨＤＤ），１１１…キャッシュ対象領域，１１２…オペレーティングシステム，１１３…ダンプデータ書込領域，１１４…キャッシュデータ書込領域，１２０…ＳＳＤ，１２３…２次キャッシュデータ，１３０…メインメモリ，１３１…キャッシュ設定データＡ，１３２…２次キャッシュ管理情報Ａ，１３３…１次キャッシュ管理情報，１３４…１次キャッシュデータ，１４１…アプリケーション，１４２…ファイルシステム，１４３…汎用ディスクドライバ，１４４…キャッシュドライバ，１４５…ＡＴＡストレージドライバ，１５１…カーネルダンプ書込部，１５２…ダンプキャッシュドライバ，１５３…ＡＴＡストレージドライバ，１６１…修復ツール。
【図１】
2012014435.tif 000003
【図２】
2012014435.tif 000004
【図３】
2012014435.tif 000005
【図４】
2012014435.tif 000006
【図５】
2012014435.tif 000007
【図６】
2012014435.tif 000008
【図７】
2012014435.tif 000009
【手続補正書】
【提出日】平成23年8月18日(2011.8.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メインメモリと、
オペレーティングシステムを実行するためのファイルが格納される第１の記憶装置と、
第２の記憶装置と、
第２の記憶装置に書き込まれるデータの前記第２の記憶装置内の書き込まれる位置を示し、前記第２の記憶装置内の設定された位置に書き込まれる書込位置情報を前記メインメモリに書き込む第１書き込み手段と、
前記オペレーティングシステムのクラッシュ時に、前記メインメモリ内の前記書込位置情報を前記第１の記憶装置内に設定された書込領域に書き込む第２書き込み手段と、
前記クラッシュ後の起動時に、前記第１の記憶装置内の前記データを前記第１の記憶装置内の前記書込位置情報に基づいて第２の記憶装置内に書き込む第３書き込み手段と、
を具備する情報処理装置。
【請求項２】
前記第３書き込み手段は、前記クラッシュ後の起動時に、前記書込位置情報を第２の記憶装置内の設定された位置に書き込む
請求項１に記載の情報処理装置。
【請求項３】
第１書き込み手段は、前記メインメモリおよび前記第２の記憶装置を前記第１の記憶装置に対するアクセスのキャッシュメモリとして利用するキャッシュ手段を含み、
前記キャッシュ手段は、前記メインメモリを前記第２記憶装置より高位のキャッシュとして利用し、前記メインメモリに第１キャッシュデータをキャッシュし、前記第１キャッシュデータの前記第１の記憶装置内の書き込み位置を示す情報を含む第１キャッシュ管理情報を記録し、前記第２の記憶装置に第２キャッシュデータをキャッシュし、前記第２キャッシュデータの前記第１の記憶装置内の書き込み位置を示す情報を含む第２キャッシュ管理情報を前記メインメモリおよび前記第２の記憶装置に書き込み、
前記第２書き込み手段は、前記オペレーティングシステムのクラッシュ時に、前記メインメモリ内の前記第１キャッシュデータ、前記第１キャッシュ管理情報、および前記第２キャッシュ管理情報を前記第１の記憶装置内のキャッシュデータ書込領域に書き込み、
前記第３書き込み手段は、前記クラッシュ後の起動時に、前記第１の記憶装置内の前記第１キャッシュデータを前記第１の記憶装置内の前記第１キャッシュ管理情報に基づいて前記第１の記憶装置に書き込み、前記第２キャッシュ管理情報を前記第２の記憶装置に書き込む、
請求項１に記載の情報処理装置。
【請求項４】
前記オペレーティングシステムのクラッシュ時に、前記メインメモリのダンプデータを前記第１の記憶装置に書き込むダンプデータ書込手段を更に具備する
請求項３に記載の情報処理装置。
【請求項５】
前記キャッシュ手段は、前記メインメモリおよび前記第２の記憶装置をキャッシュメモリとして用いるための設定を有するキャッシュ設定情報が前記メインメモリに記録し、
前記第１書き込み手段は、前記メインメモリ内の前記キャッシュ設定情報を前記キャッシュデータ書込領域内に書き込み、
前記第２書き込み手段は、前記キャッシュデータ書込領域内の前記キャッシュ設定情報を前記第２の記憶装置に書き込む、
請求項３に記載の情報処理装置。
【請求項６】
前記第１書き込み手段および前記第２書き込み手段は、プロセッサによって実行されるソフトウェアである
請求項３に記載の情報処理装置。
【請求項７】
前記第１の記憶装置はＨＤＤ（Hard Disk Drive）によって構成され、前記第２の記憶装置はＳＳＤ（Solid State Drive）によって構成される
請求項３に記載の情報処理装置。
【請求項８】
前記第２の記憶装置は複数の第３の記憶装置を有し、
前記第１書き込み手段は、前記複数の第３の記憶装置の内の一部の第４の記憶装置にデータを分散して書き込むと共に、分散して書き込まれたデータから生成される冗長コードを前記第４の記憶装置とは異なる前記複数の第３の記憶装置の内の第５の記憶装置に書き込むデータ冗長化手段であって、前記冗長コードを前記メインメモリ内に生成し、前記冗長コードの前記第５の記憶装置内の書き込み位置を示す情報を含む設定情報を前記メインメモリ内に格納する冗長化手段を有し、
前記第２書き込み手段は、前記オペレーティングシステムのクラッシュ時に、前記メインメモリ内の前記冗長化コードおよび前記設定情報を前記第１の記憶装置内のデータ書込領域に書き込み、
前記第３書き込み手段は、前記クラッシュ後の起動時に、前記第１の記憶装置内の前記冗長コードを前記第１の記憶装置内の前記設定情報に基づいて前記第４の記憶装置に書き込み、前記第１の記憶装置内の設定情報を前記複数の第２の記憶装置に書き込む、
請求項１に記載の情報処理装置。
【請求項９】
前記冗長化手段および前記書き込み手段は、プロセッサによって実行されるソフトウェアである
請求項８に記載の情報処理装置。
【請求項１０】
メインメモリと、オペレーティングシステムを実行するためのファイルが格納される第１の記憶装置と、第２の記憶装置とを有する情報処理装置のデータ復旧方法であって、
第２の記憶装置に書き込まれるデータを前記メインメモリに書き込み、
前記データの前記第２の記憶装置内の書き込まれる位置を示す書き込み位置情報を前記メインメモリに書き込み、
前記オペレーティングシステムのクラッシュ時に、前記メインメモリ内の前記データおよび前記書き込み位置情報を前記第１の記憶装置内の書込領域に書き込み、
前記クラッシュ後の起動時に、前記第１の記憶装置内の前記データを前記第１の記憶装置内の前記書き込み位置情報に基づいて前記第２の記憶装置に書き込む
データ復旧方法。
【請求項１１】
前記クラッシュ後の起動時に、前記書込位置情報を第２の記憶装置内の設定された位置に書き込む
請求項１０に記載のデータ復旧方法。
【請求項１２】
前記メインメモリおよび前記第２の記憶装置を前記第１の記憶装置に対するアクセスのキャッシュメモリとして利用し、
前記メインメモリを前記第２記憶装置より高位のキャッシュとして利用し、
前記メインメモリに第１キャッシュデータをキャッシュし、
前記第１キャッシュデータの前記第１の記憶装置内の書き込み位置を示す情報を含む第１キャッシュ管理情報を記録し、
前記第２の記憶装置に第２キャッシュデータをキャッシュし、
前記第２キャッシュデータの前記第１の記憶装置内の書き込み位置を示す情報を含む第２キャッシュ管理情報を前記メインメモリおよび前記第２の記憶装置に書き込み、
前記オペレーティングシステムのクラッシュ時に、前記メインメモリ内の前記第１キャッシュデータ、前記第１キャッシュ管理情報、および前記第２キャッシュ管理情報を前記第１の記憶装置内のキャッシュデータ書込領域に書き込み、
前記クラッシュ後の起動時に、前記第１の記憶装置内の前記第１キャッシュデータを前記第１の記憶装置内の前記第１キャッシュ管理情報に基づいて前記第１の記憶装置に書き込み、前記第２キャッシュ管理情報を前記第２の記憶装置に書き込む、
請求項１０に記載のデータ復旧方法。
【請求項１３】
前記オペレーティングシステムのクラッシュ時に、前記メインメモリのダンプデータを前記第１の記憶装置に書き込むダンプデータ書込手段を更に具備する
請求項１２に記載のデータ復旧方法。
【請求項１４】
前記キャッシュ手段は、前記メインメモリおよび前記第２の記憶装置をキャッシュメモリとして用いるための設定を有するキャッシュ設定情報が前記メインメモリに記録し、
前記第１書き込み手段は、前記メインメモリ内の前記キャッシュ設定情報を前記キャッシュデータ書込領域内に書き込み、
前記第２書き込み手段は、前記キャッシュデータ書込領域内の前記キャッシュ設定情報を前記第２の記憶装置に書き込む、
請求項１２に記載のデータ復旧方法。
【請求項１５】
前記第１の記憶装置はＨＤＤ（Hard Disk Drive）によって構成され、前記第２の記憶装置はＳＳＤ（Solid State Drive）によって構成される
請求項１２に記載のデータ復旧方法。
【請求項１６】
前記第２の記憶装置は複数の第３の記憶装置を有し、
前記複数の第３の記憶装置の内の一部の第４の記憶装置にデータを分散して書き込み、
分散して書き込まれたデータから生成される冗長コードを前記第４の記憶装置とは異なる前記複数の第３の記憶装置の内の第５の記憶装置に書き込み、
前記冗長コードを前記メインメモリ内に生成し、
前記冗長コードの前記第５の記憶装置内の書き込み位置を示す情報を含む設定情報を前記メインメモリ内に格納し、
前記オペレーティングシステムのクラッシュ時に、前記メインメモリ内の前記冗長化コードおよび前記設定情報を前記第１の記憶装置内のデータ書込領域に書き込み、
前記クラッシュ後の起動時に、前記第１の記憶装置内の前記冗長コードを前記第１の記憶装置内の前記設定情報に基づいて前記第４の記憶装置に書き込み、
前記第１の記憶装置内の設定情報を前記複数の第２の記憶装置に書き込む、
請求項１０に記載のデータ復旧方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
実施形態によれば、情報処理装置は、メインメモリと、第１の記憶装置と、第２の記憶装置と、第１書き込み手段と、第２書き込み手段と、第３書き込み手段と、を具備する。第１の記憶装置は、オペレーティングシステムを実行するためのファイルを格納する。第１書き込み手段は、第２の記憶装置に書き込まれるデータを前記メインメモリに書き込み、前記データの前記第２の記憶装置内の書き込まれる位置を示す書き込み位置情報を前記メインメモリに書き込む。第２書き込み手段は、前記オペレーティングシステムのクラッシュ時に、前記メインメモリ内の前記データおよび前記書き込み位置情報を前記第１の記憶装置内の書込領域に書き込む第２書き込む。第３書き込み手段は、前記クラッシュ後の起動時に、前記第１の記憶装置内の前記データを前記第１の記憶装置内の前記書込位置情報に基づいて第２の記憶装置内に書き込む。