(57)【要約】【課題】ファイルのアクセス時に異常を検知した場合に、安全、かつ、確実にファイルを記憶することを目的とする。【解決手段】複数の記憶デバイスを有する情報処理装置であって、ファイルのアクセス時に異常を検知する検知手段と、複数の記憶デバイスを、検知手段で検知された異常に影響する記憶デバイスか否か判定する判定手段と、判定手段で異常に影響すると判定された記憶デバイスにあるファイルへのアクセスを止め、判定手段で異常に影響しないと判定された記憶デバイスにあるファイルへアクセスさせるアクセス制御手段と、を有することによって課題を解決する。【選択図】図２
2013037492.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶デバイスを有する情報処理装置であって、
ファイルのアクセス時に異常を検知する検知手段と、
前記複数の記憶デバイスを、前記検知手段で検知された異常に影響する記憶デバイスか否か判定する判定手段と、
前記判定手段で前記異常に影響すると判定された記憶デバイスにあるファイルへのアクセスを止め、前記判定手段で前記異常に影響しないと判定された記憶デバイスにあるファイルへアクセスさせるアクセス制御手段と、
を有する情報処理装置。
【請求項２】
一定間隔で前記異常が無くなったかどうかを判定する復旧確認手段と、
前記復旧確認手段で異常が無くなったと判定されたときに、前記判定手段で前記異常に影響しないと判定された記憶デバイスにあるファイルのデータを、前記判定手段で前記異常に影響すると判定された記憶デバイスに記録するファイル復旧手段と、
を更に有する請求項１記載の情報処理装置。
【請求項３】
前記検知手段で異常が検知されたのち、ファイルのアクセスがあったときに、前記判定手段で前記異常に影響しないと判定された記憶デバイスにあるファイルのデータを、前記判定手段で前記異常に影響すると判定された記憶デバイスに記録するファイル復旧手段を更に有する請求項１記載の情報処理装置。
【請求項４】
複数の記憶デバイスを有する情報処理装置が実行する情報処理方法であって、
ファイルのアクセス時に異常を検知する検知ステップと、
前記複数の記憶デバイスを、前記検知ステップで検知された異常に影響する記憶デバイスか否か判定する判定ステップと、
前記判定ステップで前記異常に影響すると判定された記憶デバイスにあるファイルへのアクセスを止め、前記判定ステップで前記異常に影響しないと判定された記憶デバイスにあるファイルへアクセスさせるアクセス制御ステップと、
を含む情報処理方法。
【請求項５】
複数の記憶デバイスを有するコンピュータに、
ファイルのアクセス時に異常を検知する検知ステップと、
前記複数の記憶デバイスを、前記検知ステップで検知された異常に影響する記憶デバイスか否か判定する判定ステップと、
前記判定ステップで前記異常に影響すると判定された記憶デバイスにあるファイルへのアクセスを止め、前記判定ステップで前記異常に影響しないと判定された記憶デバイスにあるファイルへアクセスさせるアクセス制御ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
多くの情報処理装置では、記憶デバイス（記憶装置）にあるデータに対する読み込み、書き込みをファイル単位で行う。これは、オペレーティングシステム（ＯＳ）に備わっているファイルシステムによって実現される。ファイルシステムは、記憶デバイスに記録されているデータを管理し、そのデータをファイルとして提供する。
より具体的に、ファイル単位のデータの読み書きを、図１９を用いて説明する。
同図において、２００は、コンピュータシステムを表し、ユーザ空間とカーネル空間が存在する。カーネル空間には２１５ａ〜２１５ｚで表されるファイルシステムが備えられる。２１６ａ〜２１６ｚは、記憶デバイスを表し、この記憶デバイス２１６ａ〜２１６ｚ上にファイルシステム２１５ａ〜２１５ｚが構築される。
【０００３】
記憶デバイス２１６ａ〜２１６ｚ上のデータを読み書きするため、ユーザ空間のユーザはマウント作業を行う。マウント作業は、ユーザが、マウントポイント（ディレクトリ）とマウントする記憶デバイス２１６ａ〜２１６ｚとを指定してマウントコマンドを呼び出すことで実行される。マウント作業が実行されると、ユーザは、マウントポイントを介して、記憶デバイス２１６ａ〜２１６ｚ上に構築されたファイルシステム２１５ａ〜２１５ｚを使用して、記憶デバイス２１６ａ〜２１６ｚ上のデータにアクセスすることが可能になる。より具体的には、ユーザがマウントポイントにあるファイルにＯＰＥＮ／ＲＥＡＤ／ＷＲＩＴＥシステムコール等を実行することで、ファイル単位で読み書きすることが可能になる。
通常のファイルシステムの場合は、１つの記憶デバイスはその記憶デバイスに構築された１つのファイルシステムを使用して、１つのディレクトリにマウントする。そのため、複数の記憶デバイスにあるデータを読み書きする場合は、複数のディレクトリが必要となる。
【０００４】
しかしながら、従来の方法では次のような問題点が存在する。
近年、記憶デバイスの種類は多岐にわたって存在し、比較的安価で大容量だが振動に弱いハードディスク、読み込み速度が高速で振動に強いフラッシュメモリ、ネットワーク上にあるストレージ等が挙げられる。これら記憶デバイスの特性を活かすには、それぞれの特性に応じて、記憶デバイスにファイルを記録してアクセスする必要がある。従来の方法では、ユーザが、ファイルを記録するときにそれぞれの特性から記録すべき記憶デバイスを判断し、その記憶デバイスがマウントされているディレクトリにファイルを記録しなくてはならなかった。
そこで特許文献１では、低速な記憶部と高速な記憶部とを備えた装置において、内部や周辺の環境に応じて、アクセスする記憶装置を切り替えることができる技術が記載されている。例えば、振動が発生したときは高速な記憶装置から読み出しのみを行い、振動が発生していないときは低速な記憶装置で読み書きを実施することを可能にする技術である。
特許文献２では、不揮発性記憶媒体と記録媒体という２つの記憶装置のアドレスを、識別情報テーブルが管理する。そして、振動等の環境情報を検出して、その情報と識別情報テーブルとに基づき記録する媒体を切り替えることができる技術が記載されている。
特許文献３では、不揮発性記憶媒体と記録媒体が存在する環境で、振動等で記録に失敗しタイムアウトした場合には、一時的に不揮発性記憶媒体に記録し、同時にデータの管理情報を作成する。一時的に記録したデータは、作成したデータの管理情報に基づき、所定のタイミングで記録媒体に書き戻すことができる技術が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２００５１号公報
【特許文献２】特開２００６−２８５９４３号公報
【特許文献３】特開２００８−７７７８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記の特許文献１〜３では、特性の異なる２つの記憶デバイスがある場合で、振動等の環境情報を検知したときに、その情報に応じて記録する記憶デバイスを切り替えることを実現している。しかし、３つ以上の記憶デバイスが存在したときに、その環境情報の種類に応じて、記録する記憶デバイス先を切り替えることには至らない。
これに対し、３つ以上の記憶デバイスに統一的にアクセスする方法として、複数の記憶デバイスに構築されたファイルシステムを１つのファイルシステムに統合する統合ファイルシステムというファイルシステムが存在する。
より具体的に、この方法を用いてファイル単位のデータの読み書きすることを、図２０を用いて説明する。
同図において、図１９と異なる点は２０１で表す統合ファイルシステムが存在する点であり、統合ファイルシステム２０１はカーネル空間に存在する。
記憶デバイス２１６ａ〜２１６ｚ上のデータを読み書きするために、ユーザ空間のユーザはマウント作業を行う。マウント作業は、ユーザが、１つのマウントポイントと複数のマウントする記憶デバイス２１６ａ〜２１６ｚを指定して、マウントコマンドを呼び出すことで実行される。統合ファイルシステム２０１のマウント作業では、まず２０２のマウント処理部を実行する。マウント処理部２０２では、複数の記憶デバイス２１６ａ〜２１６ｚ上にそれぞれ構築されているファイルシステム２１５ａ〜２１５ｚを透過的に重ね、１つの統合ファイルシステム２０１を形成する。その後、その統合ファイルシステム２０１をマウントポイントからアクセス可能にする。これにより、ユーザは、１つのマウントポイントを介して統合ファイルシステム２０１にアクセスすると、ファイルシステム２１５ａ〜２１５ｚのいずれかを使用して、記憶デバイス２１６ａ〜２１６ｚ上のデータにアクセスすることが可能となる。
【０００７】
マウント処理部２０２実行時に実行される２０００のファイル記録先取得部では、ユーザ空間のユーザからファイルの作成命令があったときに、そのファイルをどの記憶デバイス２１６ａ〜２１６ｚに作成し、記録するようにするかを判定する情報を取得する。この情報は、マウントコマンドのオプションから取得できる。取得した情報は、ファイルの記録先の情報を２００１のファイル記録先情報に記録する。
マウント作業完了後、ユーザはマウントポイントのファイルにＯＰＥＮ／ＲＥＡＤ／ＷＲＩＴＥシステムコール等を実行することで、複数の記憶デバイス２１６ａ〜２１６ｚ上にあるデータをファイル単位で読み書きすることが可能になる。
ユーザ空間のユーザが、ＯＰＥＮシステムコール等でファイルをオープンする命令を呼び出すと、統合ファイルシステム２０１では２０８のファイルオープン処理部が実行される。ファイルオープン処理部２０８では、統合ファイルシステム２０１にそのファイルが存在するかを判定する。ファイルオープン処理部２０８は、存在する場合は、そのファイルが記録されているファイルシステム２１５ａ〜２１５ｚに備わるオープン処理関数を実行し、そのファイルのオープンを実行する。ファイルオープン処理部２０８は、そのファイルが存在しない場合は、ファイル記録先情報２００１からファイルの記録先を取得する。その後、ファイルオープン処理部２０８は、ファイルの記録先のファイルシステム２１５ａ〜２１５ｚに備わるオープン処理関数を実行して、ファイルの作成とオープン処理を実行する。
【０００８】
ユーザ空間のユーザが、ＷＲＩＴＥシステムコール等でファイルにデータを書き込む命令を呼び出すと、統合ファイルシステム２０１では２０９のファイル書き込み処理部が実行される。ファイル書き込み処理部２０９では、ファイルオープン処理部２０８でオープンしたファイルに対し書き込みを行う。より具体的には、ファイル書き込み処理部２０９は、ファイルの記録先のファイルシステム２１５ａ〜２１５ｚに備わる書き込み処理関数を実行し、ファイルの書き込み処理を実行し、そのファイルシステム２１５ａ〜２１５ｚが構築されている記憶デバイス２１６ａ〜２１６ｚにデータを書き込む。
上記に示すように、この方法では、複数の記憶デバイスに構築されたファイルシステムを１つのファイルシステムに統合することは出来る。そのため、各記憶デバイスに構築されたファイルシステム固有の機能やファイルに関するシステム情報を使用して、記憶デバイスに適したファイル処理が可能となる。しかし、記憶デバイスの特性や、周囲の異常に応じてファイルの記録先を切り換えることは出来ない。
【０００９】
本発明はこのような問題点に鑑みなされたもので、ファイルのアクセス時に異常を検知した場合に、安全、かつ、確実にファイルを記憶することを目的とする。
【課題を解決するための手段】
【００１０】
そこで、本発明の情報処理装置は、複数の記憶デバイスを有する情報処理装置であって、ファイルのアクセス時に異常を検知する検知手段と、前記複数の記憶デバイスを、前記検知手段で検知された異常に影響する記憶デバイスか否か判定する判定手段と、前記判定手段で前記異常に影響すると判定された記憶デバイスにあるファイルへのアクセスを止め、前記判定手段で前記異常に影響しないと判定された記憶デバイスにあるファイルへアクセスさせるアクセス制御手段と、を有する。
【発明の効果】
【００１１】
本発明によれば、ファイルのアクセス時に異常を検知した場合に、安全、かつ、確実にファイルを記憶することができる。
【図面の簡単な説明】
【００１２】
【図１】情報処理装置のハードウェア構成の一例を示す図である。
【図２】実施形態１の統合ファイルシステムを備えた情報処理装置のソフトウェア構成等の一例を示す図である。
【図３】実施形態１の複数の記憶デバイスをマウントする処理の一例を示すフローチャートである。
【図４】デバイス・ファイルシステム特性テーブルの一例を示す図である。
【図５】ファイルをオープンする処理手順の一例を示すフローチャートである。
【図６】実施形態１のファイルに書き込みを行う処理手順の一例を示すフローチャートである。
【図７】異常項目テーブルの一例を示す図である。
【図８】正常時に記録したファイルと異常時に記録したファイルのデータとを表した図である。
【図９】実施形態２の統合ファイルシステムを備えた情報処理装置のソフトウェア構成等の一例を示す図である。
【図１０】実施形態２のファイルに書き込みを行う処理手順の一例を示すフローチャートである。
【図１１】記録先識別テーブルの一例を示す図である。
【図１２】実施形態２のデータの復旧処理手順の一例を示す図である。
【図１３】異常時に記録したファイルのデータを正常時に記録したファイルに復旧する処理を表した図である。
【図１４】実施形態３の統合ファイルシステムを備えた情報処理装置のソフトウェア構成等の一例を示す図である。
【図１５】実施形態３のデータの復旧処理手順の一例を示す図である。
【図１６】実施形態４の統合ファイルシステムを備えた情報処理装置のソフトウェア構成等の一例を示す図である。
【図１７】実施形態４の複数の記憶デバイスをマウントする処理の一例を示すフローチャートである。
【図１８】ユーザによって変更を加えられた、異常の種類と記憶デバイスとの関係をまとめたテーブルを示す図である。
【図１９】従来のファイルシステムを示す図である。
【図２０】従来の統合ファイルシステムを備えた情報処理装置のソフトウェア構成を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態について図面に基づいて説明する。
【００１４】
＜実施形態１＞
図１は、情報処理装置のハードウェア構成の一例を示す図である。同図において、１０１は、ＣＰＵである。１０２は、一次記憶装置である。一次記憶装置１０２は、プログラム及びデータを記録する。１０３は、Ｉ／Ｏコントローラである。１０４は、二次記憶装置である。ファイルやディレクトリ等のデータは、二次記憶装置１０４に記録される。二次記憶装置１０４にあるファイルの操作は、オペレーティングシステムからＩ／Ｏコントローラ１０３に対して、ＲＥＡＤ要求、ＷＲＩＴＥ要求を行うことで実現する。１０５は、ネットワークである。二次記憶装置１０４は、ネットワーク１０５上にある場合も存在する。
ＣＰＵ１０１が、一次記憶装置１０２等に記録されているプログラムに基づき処理を実行することによって、後述する情報処理装置のソフトウェア構成や後述するフローチャートの処理が実現される。
【００１５】
図２は、実施形態１の統合ファイルシステムを備えた情報処理装置のソフトウェア構成等の一例を示す図である。同図において図２０と異なる点は、同図に２０３、２０４、２０５、２０６、２０７、２１０、２１１、２１２、２１３、２１４が追加されていることと、２０００、２００１が削除されてあることであり、これについて説明する。
マウント処理部２０２の実行時に実行される２０３の正常時ファイル記録先取得部では、正常時にファイルを記録する記憶デバイスの名前や場所の情報を取得し、その情報を２０４の正常時ファイル記録先情報に記録する。
正常時ファイル記録先取得部２０３の実行後に実行される２０５のデバイス・ファイルシステム特性取得部では、記憶デバイス２１６ａ〜２１６ｚの容量、速度、構築されているファイルシステム等の特性を取得する。この特性の取得方法は幾つか存在するが、その一例をＬｉｎｕｘ（登録商標）の場合を例に説明する。Ｌｉｎｕｘの場合、記憶デバイスにあるファイルに対し、ＳＴＡＴＦＳシステムコールを実行すると、その記憶デバイスに構築されているファイルシステムの型や空きブロック数等統計情報を取得できる。また、記憶デバイスに対し、ＢＬＫＧＥＴＳＩＺＥを指定してＩＯＣＴＬシステムコールを実行すると、ＳＣＳＩディスクの容量を取得できる。また、記憶デバイスに対し、ｈｄｐａｒｍコマンドを実行すると、ハードディスクの速度等のパラメータを取得することができる。
【００１６】
デバイス・ファイルシステム特性取得部２０５の実行後に実行される２０６のデバイス・ファイルシステム特性テーブル作成部では、デバイス・ファイルシステム特性取得部２０５で取得したファイルシステム固有の特性情報を纏めて、２０７のデバイス・ファイルシステム特性テーブルを作成する。
ファイルオープン処理部２０８では、ファイル記録先情報２００１が無い代わりに、正常時ファイル記録先情報２０４から正常時に記録する記憶デバイスの名前や場所の情報を取得する。ここで取得した情報を基に、正常時に記録する記憶デバイスにあるファイルをオープンする。
ファイル書き込み処理部２０９実行時に実行される２１０の異常検知部では、各異常の検知を行い、その後の動作を判定する。異常がなければ処理をファイル書込み処理部２０９に戻し、ファイルオープン処理部２０８でオープンしたファイルにデータを記録する。異常が存在すれば、その異常の種類を特定し２１１のファイル記録先判定部を実行する。この異常の種類を検知する方法はいつくか存在するが、その一例をＬｉｎｕｘの場合を例に説明する。ローカル接続の記憶装置の場合、なんらかの異常があって書き込みに失敗すると、Ｌｉｎｕｘの中の関数がそのエラーの種類を特定する。記憶デバイスの空き容量以上のデータを試みた場合だと、ＥＮＯＳＰＣというエラーが発生する。また、記憶デバイスの故障等で書き込むことができなかった場合だとＥＩＯというエラーが発生する。このエラーの種類によって、この異常が空き容量によるものか、故障によるものかを検知できる。また、ローカル接続の記憶装置の場合、本記憶装置に振動センサ、衝撃センサ、熱センサ等の外的な異常を検出するセンサをとりつけることで、振動、衝撃、熱の異常を検知することが可能になる。ネットワーク接続デバイスの場合は、なんらかの異常があって書き込みに失敗すると、書き込み処理はタイムアウトでエラーになる。このときに、ネットワーク接続先にＰＩＮＧコマンドをうって、ＰＩＮＧコマンドが失敗するならば、この異常はネットワーク切断によるものだと特定できる。
【００１７】
異常検知部２１０で異常を検出した場合に実行される異常影響判定部２１１では、検知した異常が正常時に記録する記憶デバイスに影響するかどうかを判定する。判定には、デバイス・ファイルシステム特性テーブル２０７と２１３の異常項目テーブルとを用いる。異常項目テーブル２１３には、異常の種類ごとに、その異常が影響する記憶デバイスの種類とその異常が発生したときに記録する記憶デバイスの種類が記述されている。このとき、発生した異常が、正常時に記録する記憶デバイスに影響しないものならば、この時点で処理をファイル書込み処理部２０９に戻す。発生した異常が、正常時に記録する記憶デバイスに影響するものならば、ファイル記録先判定部２１２に移る。
ファイル記録先判定部２１２は、異常時の記録先となる記憶デバイスを判定する。判定には、デバイス・ファイルシステム特性テーブル２０７と２１３の異常項目テーブルを用いる。その後、ファイル記録先判定部２１２は、２１４のファイル再オープン部を呼び出す。
ファイル記録先判定部２１２実行後に実行されるファイル再オープン部２１４では、ファイルオープン処理部２０８で開いたファイルをクローズし、ファイル記録先判定部２１２で判定した記憶デバイスに同名のファイルを作成、オープンする。その後、ファイル書込み処理部２０９に処理を戻す。これにより、ファイル書込み処理部２０９では、ファイル記録先判定部２１２で判定した記憶デバイスにあるファイルにデータを記録することになる。
また、本実施形態では、図２０で示したファイル記録先取得部２０００とファイル記録先情報２００１とを削除している。これとほぼ同じ処理が正常時ファイル記録先取得部２０３と正常時ファイル記録先情報２０４とにあたる。この点に関しての本実施形態と図２０との異なる点は、本実施形態の場合、正常時ファイル記録先情報２０４がファイル記録先判定部２１２でも使用されるという点である。
【００１８】
次に、図３、図４、図５、図６、図７、図８を用いて、本実施形態を適用可能な統合ファイルシステムを備えた情報処理装置を、ユーザが利用したときの処理手順について説明する。
まず、図３を用いて、複数の記憶デバイスをマウントする処理手順について説明する。
同図において、Ｓ３００では、ユーザ空間のユーザが、マウントする複数の記憶デバイスとその中で正常時に記録する記憶デバイス、マウントポイントを指定して、マウントコマンドを実行する。そして、Ｓ３０１に移る。
Ｓ３０１では、Ｓ３００で指定した引数から、正常時に記録する記憶デバイスの名前や位置の情報を取得し、その情報を正常時ファイル記録先情報２０４に記録する。そして、Ｓ３０２に移る。
Ｓ３０２では、統合ファイルシステム２０１が、マウントする全ての記憶デバイスの特性とその記憶デバイスに構築されているファイルシステムの特性とを取得する。そして、Ｓ３０３に移る。
Ｓ３０３では、統合ファイルシステム２０１が、Ｓ３０２で取得した特性を記憶デバイスごとに纏めて、デバイス・ファイルシステム特性テーブル２０７を作成する。図４は、デバイス・ファイルシステム特性テーブル２０７の一例を示す図である。図４の例では、記憶デバイスＡ、Ｂ、Ｃ、Ｄをマウントする場合に、それぞれのパス、記憶デバイスの種類、ファイルシステムの種類、容量、空き容量、読み込み速度といった特性をテーブルに記録している。そして、Ｓ３０４に移る。
Ｓ３０４では、統合ファイルシステム２０１が、マウント処理を実行して、Ｓ３００で指定した全ての記憶デバイスに構築されているファイルシステムを重ね合わせ、１つのファイルシステムを形成する。そして、形成したファイルシステムをＳ３００で指定されたマウントポイントにマウントする。
【００１９】
次に図５を用いて、ファイルをオープンする処理手順について説明する。
同図において、Ｓ５００では、ユーザ空間のユーザが、Ｓ３００で指定したマウントポイントにあるファイルをオープンする、ＯＰＥＮシステムコールを実行する。そして、Ｓ５０１に移る。
Ｓ５０１では、統合ファイルシステム２０１が、正常時ファイル記録先情報２０４から、どの記憶デバイスのファイルをオープンするかを判定する。そして、Ｓ５０２に移る。
Ｓ５０２では、統合ファイルシステム２０１が、Ｓ５０１の判定で得た記憶デバイスにＳ５００で指定したファイル名と同じファイル名のファイルが存在するかを判定する。存在しない場合はＳ５０３に移り、存在する場合はＳ５０４に移る。
Ｓ５０３では、統合ファイルシステム２０１が、Ｓ５０１の判定で得たファイルの記憶デバイスにＳ５００で指定したファイル名のファイルを作成する。そして、Ｓ５０４に移る。
Ｓ５０４では、統合ファイルシステム２０１が、Ｓ５００で指定されたファイル名のファイルをオープンする処理を行う。このオープンする処理では、Ｓ５０１の判定で得た記憶デバイスに構築されたファイルシステムのオープン処理も呼び出して実行する。そして、オープンしたファイルの情報をファイルディスクリプタに記録して、ＯＰＥＮシステムコールを実行したユーザにファイルディスクリプタを返す。ファイルディスクリプタには、どのファイルを操作するかの識別子が含まれている。そのため、このファイルディスクリプタを引数にファイルをＲＥＡＤ／ＷＲＩＴＥすることで、Ｓ５０１の判定で得た記憶デバイスにあるファイルを読み書きすることができる。
【００２０】
次に図６を用いて、ファイルに書き込みを行う処理手順について説明する。
同図において、Ｓ５０２、Ｓ５０３に関しては、図５を示したときに説明したとおりであるため、省略する。
Ｓ６００では、Ｓ５００でオープンしたファイルのファイルディスクリプタを引数に、ＷＲＩＴＥシステムコールを実行する。そして、Ｓ６０１に移る。
Ｓ６０１では、異常検知部２１０により、異常が発生しているかどうかを確認する。異常を確認した場合は、異常検知部２１０で取得した異常の種類から、正常時に記録する記憶デバイスに関係する異常かどうかを判定する。判定した結果、関連する異常ならば、異常時に記録する記憶デバイスを判定し、Ｓ５０２に移る。異常を確認しなかった場合、あるいは関係しない異常であった場合は、Ｓ６０４に移る。
【００２１】
異常影響判定部２１１は、異常の判定方法において、異常検知部２１０から取得した異常の種類、Ｓ３０３で作成したデバイス・ファイルシステム特性テーブル２０７、異常項目テーブル２１３を用いる。この判定方法の具体例を、図４、図７を用いて説明する。図４は、Ｓ３０３で説明したとおり、デバイス・ファイルシステム特性テーブル２０７の一例を示す図である。図７は、異常項目テーブル２１３の一例を示す図である。図７には、異常項目ごとに、正常時記録先デバイスの条件、異常時記録先デバイスの条件が記述されている。異常項目にある異常が発生したときに、正常時ファイル記録先情報２０４の記憶デバイスが正常時記録先デバイスの条件に合致すれば、発生した異常は関係する異常だと判定できる。これを、より具体的に正常時に記録する記憶デバイスが記憶デバイスＡ、Ｓ６０１で確認した異常の種類が「振動が発生」の場合に説明する。図７より、正常時記録先デバイスの条件は「ハードディスク」となる。記憶デバイスＡは「ハードディスク」であるため条件に合致する。この異常項目での異常時記録先デバイスの条件は「ＳＤカード」であるため、この条件に合致する記憶デバイスは、図４より記憶デバイスＢとなる。また、発生した異常が正常時に記録する記憶デバイスに関係しない異常の場合もある。異常項目にある異常が発生したときに、正常時ファイル記録先情報２０４の記憶デバイスが正常時記録先デバイスの条件に合致しないと、発生した異常は関係ない異常だと判定できる。これを、より具体的に正常時に記録する記憶デバイスが記憶デバイスＣ、Ｓ６０１で特定した異常の種類が「ネットワーク切断」の場合に説明する。図７より、正常時記録先デバイスの条件は「ネットワーク接続」となる。記憶デバイスＣは「ローカル接続」であるため条件に合致しない。そのため、この異常は関係ない異常だと判定できる。
【００２２】
Ｓ６０２では、ファイル記録先判定部２１２が、Ｓ６０１で判定した異常時に記録する記憶デバイスにある、Ｓ５００で指定されたファイル名のファイルを別の場所に移動する。これは、既に存在していた同じファイル名のデータが、復旧時のデータに影響しないようにするためである。そのため、テンポラリフォルダへの移動といった方法以外に、ファイルのリネーム、ファイルの削除といった方法でも構わない。そして、Ｓ６０３に移る。
Ｓ６０３では、ファイル再オープン部２１４は、Ｓ５０４でオープンしていたファイルをクローズする（アクセス制御）。その後、Ｓ６０１で判定した記憶デバイスにある、ファイル再オープン部２１４は、Ｓ５００で指定されたファイル名のファイルをオープンする（アクセス制御）。そして、Ｓ６０４に移る。
【００２３】
Ｓ６０４では、ファイル書き込み処理部２０９が、現在オープンされているファイルに対し、書込み処理を実施する。このとき、正常時の書込み処理ならば、先頭から順に書込み処理が行われる。しかし、異常時の書込み処理の場合、先頭からではなく途中からの書き込み処理になる可能性がある。この場合、ファイル書き込み処理部２０９は、途中までの領域はＮＵＬＬで埋めて、ＮＵＬＬの後にデータを書き込む。より具体的な例を図８に示す。図８のうち、上部の図が正常時記録先ファイルであり、下部の図が異常時記録先ファイルである。この例では、０ｘ００〜０ｘ０５の領域までは正常に「ＡＢＣＤＥＦ」のデータを書き込むことができたが、０ｘ０６を書き込もうとした時点で異常が発生したため、０ｘ０６以降は異常時記録先ファイルに「ＧＨＩＪＫＬ」のデータを書き込んだことを示している。このとき、異常時記録先ファイルの０ｘ００〜０ｘ０５の領域は、￥０（ＮＵＬＬ）で埋めている。
【００２４】
以上が、本実施形態の説明である。本実施形態では、ユーザ空間のユーザがマウントコマンドを実行すると、統合ファイルシステム２０１のデバイス・ファイルシステム特性取得部２０５でマウントする複数の記憶デバイスとファイルシステムの特性を取得する。そして、取得した記憶デバイスの特性を基に、デバイス・ファイルシステム特性テーブル２０７を作成する。次に、ユーザ空間からＷＲＩＴＥシステムコールが実行されると、異常検知部２１０で異常の有無とその異常が関係する異常かどうかを確認する。関係する異常の発生を確認した場合は、デバイス・ファイルシステム特性テーブル２０７、異常項目テーブル２１３を基に、正常時に書き込む記憶デバイスとは別の、異常時に書き込む記憶デバイスを判定する。判定後、異常時に書き込む記憶デバイスに対し書き込み処理を行う。これにより、ファイル記録時に振動等の異常が発生した場合は、その異常の種類に応じて、複数の記録先から最適な記録先を判定し、その判定した記録先に書込み処理を行う。そのため、安全なファイル記録が可能になる。また、記憶デバイスの空き容量が無くなった等の記録デバイス自体に問題が発生した場合も、複数の記録先から最適な記録先を判定し、判定した記録先にファイルを記録するため、確実なファイル記録が可能になる。
【００２５】
＜実施形態２＞
本実施形態は、統合ファイルシステムが、異常の有無を確認し、異常が無くなったことを確認すると、ファイルの復旧を実行する手段を備える。この点で、本実施形態は実施形態１と異なる。
図９は、実施形態２の統合ファイルシステムを備えた情報処理装置のソフトウェア構成等の一例を示す図である。同図において、実施形態１で示した図２と異なる点は、９００の記録先識別テーブル作成部、９０１の記録先識別テーブル、９０２の復旧確認部、９０３のファイル復旧部を備えることである。これについて説明する。
９００の記録先識別テーブル作成部は、ファイル記録先判定部２１２実行後に呼び出される。記録先識別テーブル作成部９００は、ファイル記録先判定部２１２実行時に得た、異常時に記録先となる記憶デバイスの情報を纏め、９０１の記録先識別テーブルに記録する。記録先識別テーブル９０１には、異常時記録先の記憶デバイスと正常時記録先の記憶デバイス、そしてその異常が復旧する条件を記録する。異常が復旧する条件とは、例えば、その異常が振動によるものだとすれば、復旧する条件は振動が無い状態ということになる。
【００２６】
９０２は、復旧確認部である。復旧確認部９０２は、デーモンによって呼び出される。デーモンは、カーネル空間に存在し、一定間隔で動作するため、復旧確認部９０２は一定間隔で呼び出される。復旧確認部９０２では、異常検知部２１０で検知した異常が無くなったかどうかを確認する。異常が無くなったことを確認した場合は、９０３のファイル復旧部を呼び出す。
このときの確認方法は、異常検知部２１０で使用した方法と同様の方法を用いることができる。より具体的には、異常検知部２１０で検出した異常が振動、衝撃、熱等のセンサによるものならば、振動センサ、衝撃センサ、熱センサで異常がなくなったことを確認すればよい。ネットワーク切断に関しても、ＰＩＮＧコマンドで成功することを確認すればよい。ただし、正常時記録先の記憶デバイスにあるファイルに対して書き込み処理を実行することはできないため、ＥＮＯＳＰＣ等のエラーによる判定はできない。この場合、記憶デバイスにあるファイルに対し、ＳＴＡＴＦＳシステムコールを実行し、その記憶デバイスの空きブロック数等の統計情報を取得して、空きブロックが十分かどうかを確かめる方法がある。
復旧確認部９０２で復旧を確認した場合に実行されるファイル復旧部９０３では、記録先識別テーブル９０１を基に、正常時記録先の記憶デバイスを特定する。そして、異常時記録先の記憶デバイスにあるファイルのデータを、正常時記録先の記憶デバイスにある同名のファイルにコピーする。その後、ファイル再オープン部２１４を呼び出して、異常時記録先の記憶デバイスのファイルをクローズし、正常時記録先の記憶デバイスのファイルをオープンする。
【００２７】
次に、図１０、図１１、図１２、図１３を用いて、本実施形態を適用可能な統合ファイルシステムを備えた情報処理装置を、ユーザが利用したときの処理手順について説明する。
まず、図１０を用いて、ファイルに書き込みを行う処理手順について説明する。
同図において、Ｓ５０２、Ｓ５０３に関しては、図５を示したときに説明したとおりであり、Ｓ６００、Ｓ６０１、Ｓ６０２、Ｓ６０３、Ｓ６０４に関しては、図６を示したときに説明したとおりであるため、省略する。
Ｓ１０００では、記録先識別テーブル作成部９００が、正常時ファイル記録先情報２０４とＳ６０１で判定した記憶デバイスとを基に、記録先識別テーブル９０１を作成する。具体例を図１１に示す。図１１には、復旧条件ごとに、正常時記録先デバイス、異常時記録先デバイス、ファイルパスが記述されている。復旧条件にある条件が達成されたときに、異常時記録先デバイスの中のファイルパスに記載されているファイルのデータを、正常時記録先デバイスにコピーする。そして、Ｓ６０３に移る。
【００２８】
次に、図１２を用いて、データの復旧処理手順について説明する。
Ｓ１２００では、一定間隔で動作するデーモンが復旧確認部９０２を呼び出す。そして、Ｓ１２０１に移る。
Ｓ１２０１では、復旧確認部９０２が、異常検知部２１０で検知した異常が無くなったかどうかを確認する。異常が無くなったことを確認した場合は、Ｓ１２０２に移る。異常が無くなっていない場合は、復旧処理は終了する。
Ｓ１２０２では、ファイル復旧部９０３は、記録先識別テーブル９０１を基に、異常時記録先の記憶デバイスにあるファイルのデータを正常時記録先の記憶デバイスにあるファイルのデータにコピーする。これをより具体的に図８と図１３とを用いて説明する。図８はＳ６０４で説明したとおり、０ｘ００〜０ｘ０５の領域までは正常時記録先ファイルに「ＡＢＣＤＥＦ」のデータを書き込み、０ｘ０６以降は異常時記録先ファイルに「ＧＨＩＪＫＬ」のデータを書き込んだことを示している。図１３は、図８のデータの復旧を示した図である。この図では、異常時記録先ファイルに書き込まれている０ｘ０６以降のデータ「ＧＨＩＪＫＬ」を、正常時記録先ファイルの０ｘ０６以降にコピーしたことを示している。このとき、異常時記録先ファイルの￥０（ＮＵＬＬ）で埋めている０ｘ００〜０ｘ０５の領域はコピーしない。その後、Ｓ６０２でファイルの移動をしていた場合は、元に戻す。そして、Ｓ１２０３に移る。
Ｓ１２０３では、ファイル再オープン部２１４は、オープンしているファイルをクローズする。そして、ファイル再オープン部２１４は、記録先識別テーブル９０１を基に、正常時記録先の記憶デバイスにあるファイルをオープンする。
【００２９】
以上が、本実施形態の説明である。本実施形態では、異常時に記録する記憶デバイスを判定後、その判定した記憶デバイスと正常時に記録する記憶デバイスと記録するファイルの情報を記録先識別テーブル９０１に纏めて記録する。記録後、異常時に記録する記憶デバイスに対し、書き込み処理を行う。その後、デーモンから呼び出された復旧確認部９０２が、異常がなくなったことを確認すると、記録先識別テーブル９０１を基に、ファイルの復旧を行う。これにより、定期的に異常が収まったかどうかを確認し、異常が収まったときには自動的に正常時の記録先に書き戻すことができる。
【００３０】
＜実施形態３＞
本実施形態は、統合ファイルシステムが、ユーザが統合ファイルシステムにアクセスしたタイミングで復旧確認を実行する手段を備える。この点で、本実施形態は実施形態２と異なる。
図１４は、実施形態３の統合ファイルシステムを備えた情報処理装置のソフトウェア構成等の一例を示す図である。同図において、実施形態２で示した図９と異なる点は、１４００の復旧確認起動部を備えることである。これについて説明する。
復旧確認起動部１４００は、ユーザ空間から統合ファイルシステム２０１に対するアクセスが発生したときに呼び出される。より具体的には、ユーザが、記憶装置上にあるファイルに対してＯＰＥＮ、ＲＥＡＤ、ＷＲＩＴＥ等でアクセスをしたときに、そのアクセスをトリガーとして、復旧確認起動部１４００が呼び出される。呼び出された復旧確認起動部１４００は、復旧確認部９０２を実行する。これにより、定期的に復旧確認部９０２を実行することなく、ユーザがアクセスしたタイミングで復旧確認部９０２を実行することが可能になる。
【００３１】
次に、図１５を用いて、本実施形態を適用可能な統合ファイルシステムを備えた情報処理装置を、ユーザが利用したときの処理手順について説明する。
図１５では、本実施形態でのデータの復旧処理手順について説明する。
同図において、Ｓ１２０１、Ｓ１２０２、Ｓ１２０３に関しては、図１２を示したときに説明したとおりであるため、省略する。
Ｓ１５００では、ユーザ空間のユーザが、統合ファイルシステム２０１に対してアクセスしたときに、復旧確認起動部１４００を呼び出す。より具体的には、統合ファイルシステム２０１がマウントされているマウントポイントにアクセスすると、統合ファイルシステム２０１のファイル操作関数が実行される。そのファイル操作関数に、復旧確認起動部１４００を呼び出す仕組みを埋め込むことで、ファイルアクセス時に復旧確認起動部１４００が呼び出される。そして、Ｓ１５０１に移る。
Ｓ１５０１では、Ｓ１５００で呼び出された復旧確認起動部１４００が、復旧確認部９０２を呼び出す。そして、Ｓ１２０１に移る。
【００３２】
以上が、本実施形態の説明である。本実施形態では、実施形態２と比べ、復旧処理手順が異なる。実施形態２では、定期的に復旧確認部９０２を実行していたが、本実施形態では、それを実行せずに、ユーザがアクセスしたタイミングで復旧確認部９０２を実行することを可能にしている。異常の種類の中には、空き容量や記憶デバイスの故障等のように、即座に復旧しない異常がある。このような場合では、定期的に復旧確認部９０２を呼び出すよりも、本実施形態の方法が有用といえる。
【００３３】
＜実施形態４＞
本実施形態は、統合ファイルシステムが、異常時のファイル記録先を判定する項目を変更、追加する手段を備える。この点で、本実施形態は実施形態１と異なる。
図１６は、実施形態４の統合ファイルシステムを備えた情報処理装置のソフトウェア構成等の一例を示す図である。同図において、実施形態１で示した図２と異なる点は、１６００のファイル記録先オプション解析部、１６０１の異常項目テーブル変更／追加部を備えることである。これについて説明する。
デバイス・ファイルシステム特性テーブル作成部２０６の実行後に実行されるファイル記録先オプション解析部１６００では、マウントやリマウント時等にユーザ空間のユーザから渡された、異常時のファイル記録先を判定する項目に関するオプションを解析する。その後に呼び出される異常項目テーブル変更／追加部１６０１では、解析したオプション情報を基に、異常項目テーブル２１３の変更や項目の追加を行う。これにより、ユーザが任意で異常時のファイル記録先を判定する項目を変更、追加することが可能になる。
【００３４】
次に、図４、図７、図１７、図１８を用いて、本実施形態を適用可能な統合ファイルシステムを備えた情報処理装置を、ユーザが利用したときの処理手順について説明する。
図１７では、本実施形態での複数の記憶デバイスをマウントする手順について説明する。
同図において、Ｓ３０１、Ｓ３０２、Ｓ３０３、Ｓ３０４に関しては、図３を示したときに説明したとおりであるため、省略する。
Ｓ１７００では、ユーザ空間のユーザが、マウントする複数の記憶デバイスとその中で正常時に記録する記憶デバイス、１つのマウントポイントと異常時のファイル記録先を判定する項目に関するオプションを指定して、マウントコマンドを実行する。そして、Ｓ３０１に移る。
Ｓ１７０１では、ファイル記録先オプション解析部１６００が、Ｓ１７００で指定した異常時のファイル記録先を判定する項目に関するオプションを解析する。そして、Ｓ１７０２に移る。
【００３５】
Ｓ１７０２では、異常項目テーブル変更／追加部１６０１が、Ｓ１７０１で解析した結果から異常項目テーブル２１３を変更、追加する。この変更、追加とそれが及ぼす影響について、より具体的に図７、図１８を用いて説明する。実施形態１で示した様に、異常時のファイル記録先を判定することに関するオプションを指定せずにマウントしたとき、異常項目テーブル２１３は図７で示すようになる。これに対し、マウントオプションで、異常項目が「振動が発生」のときの異常時記録先デバイスの条件は「ネットワーク接続デバイス」と指定してマウントを行う。すると、図７の異常項目テーブル２１３は、図１８に示すように、異常項目が「振動が発生」のときの異常時記録先デバイスの条件が「ＳＤカード」から「ネットワーク接続デバイス」へ変更される。これにより、振動が発生したときの記録先デバイスは、ネットワークに接続されたデバイスに限定されることになる。そして、Ｓ３０４を呼び出す。
【００３６】
以上が、本実施形態の説明である。本実施形態では、実施形態１に加え、異常時のファイル記録先を判定する項目を変更、追加する手段であるファイル記録先オプション解析部１６００と異常項目テーブル変更／追加部１６０１を備える。これにより、ユーザが異常時のファイル記録先を判定する項目に対し、変更、追加することが可能となる。そのため、それぞれのユーザの環境にあったファイル管理が可能となる。
【００３７】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００３８】
以上、上述した各実施形態によれば、ユーザがファイルを記録するときに、振動等の周囲の環境に異常が発生した場合は、その異常の種類に応じて、複数の記録先から最適な記録先を判定し、判定した記録先にファイルを記録するため、安全なファイル記録が可能になる。また、空き容量が無くなった等の記録デバイス自体に問題が発生した場合でも、複数の記録先から最適な記録先を判定し、判定した記録先にファイルを記録するため、確実なファイル記録が可能になる。
したがって、ファイルのアクセス時に異常を検知した場合に、安全、かつ、確実にファイルを記憶することができる。
【００３９】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００４０】
１０１  ＣＰＵ、１０２  一次記憶装置、１０４  二次記憶装置
【図１】
2013037492.tif 000003
【図２】
2013037492.tif 000004
【図３】
2013037492.tif 000005
【図４】
2013037492.tif 000006
【図５】
2013037492.tif 000007
【図６】
2013037492.tif 000008
【図７】
2013037492.tif 000009
【図８】
2013037492.tif 000010
【図９】
2013037492.tif 000011
【図１０】
2013037492.tif 000012
【図１１】
2013037492.tif 000013
【図１２】
2013037492.tif 000014
【図１３】
2013037492.tif 000015
【図１４】
2013037492.tif 000016
【図１５】
2013037492.tif 000017
【図１６】
2013037492.tif 000018
【図１７】
2013037492.tif 000019
【図１８】
2013037492.tif 000020
【図１９】
2013037492.tif 000021
【図２０】
2013037492.tif 000022