説明

情報処理装置、情報処理方法及びプログラム

【課題】ファイルのアクセス時に異常を検知した場合に、安全、かつ、確実にファイルを記憶することを目的とする。
【解決手段】複数の記憶デバイスを有する情報処理装置であって、ファイルのアクセス時に異常を検知する検知手段と、複数の記憶デバイスを、検知手段で検知された異常に影響する記憶デバイスか否か判定する判定手段と、判定手段で異常に影響すると判定された記憶デバイスにあるファイルへのアクセスを止め、判定手段で異常に影響しないと判定された記憶デバイスにあるファイルへアクセスさせるアクセス制御手段と、を有することによって課題を解決する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
多くの情報処理装置では、記憶デバイス(記憶装置)にあるデータに対する読み込み、書き込みをファイル単位で行う。これは、オペレーティングシステム(OS)に備わっているファイルシステムによって実現される。ファイルシステムは、記憶デバイスに記録されているデータを管理し、そのデータをファイルとして提供する。
より具体的に、ファイル単位のデータの読み書きを、図19を用いて説明する。
同図において、200は、コンピュータシステムを表し、ユーザ空間とカーネル空間が存在する。カーネル空間には215a〜215zで表されるファイルシステムが備えられる。216a〜216zは、記憶デバイスを表し、この記憶デバイス216a〜216z上にファイルシステム215a〜215zが構築される。
【0003】
記憶デバイス216a〜216z上のデータを読み書きするため、ユーザ空間のユーザはマウント作業を行う。マウント作業は、ユーザが、マウントポイント(ディレクトリ)とマウントする記憶デバイス216a〜216zとを指定してマウントコマンドを呼び出すことで実行される。マウント作業が実行されると、ユーザは、マウントポイントを介して、記憶デバイス216a〜216z上に構築されたファイルシステム215a〜215zを使用して、記憶デバイス216a〜216z上のデータにアクセスすることが可能になる。より具体的には、ユーザがマウントポイントにあるファイルにOPEN/READ/WRITEシステムコール等を実行することで、ファイル単位で読み書きすることが可能になる。
通常のファイルシステムの場合は、1つの記憶デバイスはその記憶デバイスに構築された1つのファイルシステムを使用して、1つのディレクトリにマウントする。そのため、複数の記憶デバイスにあるデータを読み書きする場合は、複数のディレクトリが必要となる。
【0004】
しかしながら、従来の方法では次のような問題点が存在する。
近年、記憶デバイスの種類は多岐にわたって存在し、比較的安価で大容量だが振動に弱いハードディスク、読み込み速度が高速で振動に強いフラッシュメモリ、ネットワーク上にあるストレージ等が挙げられる。これら記憶デバイスの特性を活かすには、それぞれの特性に応じて、記憶デバイスにファイルを記録してアクセスする必要がある。従来の方法では、ユーザが、ファイルを記録するときにそれぞれの特性から記録すべき記憶デバイスを判断し、その記憶デバイスがマウントされているディレクトリにファイルを記録しなくてはならなかった。
そこで特許文献1では、低速な記憶部と高速な記憶部とを備えた装置において、内部や周辺の環境に応じて、アクセスする記憶装置を切り替えることができる技術が記載されている。例えば、振動が発生したときは高速な記憶装置から読み出しのみを行い、振動が発生していないときは低速な記憶装置で読み書きを実施することを可能にする技術である。
特許文献2では、不揮発性記憶媒体と記録媒体という2つの記憶装置のアドレスを、識別情報テーブルが管理する。そして、振動等の環境情報を検出して、その情報と識別情報テーブルとに基づき記録する媒体を切り替えることができる技術が記載されている。
特許文献3では、不揮発性記憶媒体と記録媒体が存在する環境で、振動等で記録に失敗しタイムアウトした場合には、一時的に不揮発性記憶媒体に記録し、同時にデータの管理情報を作成する。一時的に記録したデータは、作成したデータの管理情報に基づき、所定のタイミングで記録媒体に書き戻すことができる技術が記載されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−20051号公報
【特許文献2】特開2006−285943号公報
【特許文献3】特開2008−77780号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記の特許文献1〜3では、特性の異なる2つの記憶デバイスがある場合で、振動等の環境情報を検知したときに、その情報に応じて記録する記憶デバイスを切り替えることを実現している。しかし、3つ以上の記憶デバイスが存在したときに、その環境情報の種類に応じて、記録する記憶デバイス先を切り替えることには至らない。
これに対し、3つ以上の記憶デバイスに統一的にアクセスする方法として、複数の記憶デバイスに構築されたファイルシステムを1つのファイルシステムに統合する統合ファイルシステムというファイルシステムが存在する。
より具体的に、この方法を用いてファイル単位のデータの読み書きすることを、図20を用いて説明する。
同図において、図19と異なる点は201で表す統合ファイルシステムが存在する点であり、統合ファイルシステム201はカーネル空間に存在する。
記憶デバイス216a〜216z上のデータを読み書きするために、ユーザ空間のユーザはマウント作業を行う。マウント作業は、ユーザが、1つのマウントポイントと複数のマウントする記憶デバイス216a〜216zを指定して、マウントコマンドを呼び出すことで実行される。統合ファイルシステム201のマウント作業では、まず202のマウント処理部を実行する。マウント処理部202では、複数の記憶デバイス216a〜216z上にそれぞれ構築されているファイルシステム215a〜215zを透過的に重ね、1つの統合ファイルシステム201を形成する。その後、その統合ファイルシステム201をマウントポイントからアクセス可能にする。これにより、ユーザは、1つのマウントポイントを介して統合ファイルシステム201にアクセスすると、ファイルシステム215a〜215zのいずれかを使用して、記憶デバイス216a〜216z上のデータにアクセスすることが可能となる。
【0007】
マウント処理部202実行時に実行される2000のファイル記録先取得部では、ユーザ空間のユーザからファイルの作成命令があったときに、そのファイルをどの記憶デバイス216a〜216zに作成し、記録するようにするかを判定する情報を取得する。この情報は、マウントコマンドのオプションから取得できる。取得した情報は、ファイルの記録先の情報を2001のファイル記録先情報に記録する。
マウント作業完了後、ユーザはマウントポイントのファイルにOPEN/READ/WRITEシステムコール等を実行することで、複数の記憶デバイス216a〜216z上にあるデータをファイル単位で読み書きすることが可能になる。
ユーザ空間のユーザが、OPENシステムコール等でファイルをオープンする命令を呼び出すと、統合ファイルシステム201では208のファイルオープン処理部が実行される。ファイルオープン処理部208では、統合ファイルシステム201にそのファイルが存在するかを判定する。ファイルオープン処理部208は、存在する場合は、そのファイルが記録されているファイルシステム215a〜215zに備わるオープン処理関数を実行し、そのファイルのオープンを実行する。ファイルオープン処理部208は、そのファイルが存在しない場合は、ファイル記録先情報2001からファイルの記録先を取得する。その後、ファイルオープン処理部208は、ファイルの記録先のファイルシステム215a〜215zに備わるオープン処理関数を実行して、ファイルの作成とオープン処理を実行する。
【0008】
ユーザ空間のユーザが、WRITEシステムコール等でファイルにデータを書き込む命令を呼び出すと、統合ファイルシステム201では209のファイル書き込み処理部が実行される。ファイル書き込み処理部209では、ファイルオープン処理部208でオープンしたファイルに対し書き込みを行う。より具体的には、ファイル書き込み処理部209は、ファイルの記録先のファイルシステム215a〜215zに備わる書き込み処理関数を実行し、ファイルの書き込み処理を実行し、そのファイルシステム215a〜215zが構築されている記憶デバイス216a〜216zにデータを書き込む。
上記に示すように、この方法では、複数の記憶デバイスに構築されたファイルシステムを1つのファイルシステムに統合することは出来る。そのため、各記憶デバイスに構築されたファイルシステム固有の機能やファイルに関するシステム情報を使用して、記憶デバイスに適したファイル処理が可能となる。しかし、記憶デバイスの特性や、周囲の異常に応じてファイルの記録先を切り換えることは出来ない。
【0009】
本発明はこのような問題点に鑑みなされたもので、ファイルのアクセス時に異常を検知した場合に、安全、かつ、確実にファイルを記憶することを目的とする。
【課題を解決するための手段】
【0010】
そこで、本発明の情報処理装置は、複数の記憶デバイスを有する情報処理装置であって、ファイルのアクセス時に異常を検知する検知手段と、前記複数の記憶デバイスを、前記検知手段で検知された異常に影響する記憶デバイスか否か判定する判定手段と、前記判定手段で前記異常に影響すると判定された記憶デバイスにあるファイルへのアクセスを止め、前記判定手段で前記異常に影響しないと判定された記憶デバイスにあるファイルへアクセスさせるアクセス制御手段と、を有する。
【発明の効果】
【0011】
本発明によれば、ファイルのアクセス時に異常を検知した場合に、安全、かつ、確実にファイルを記憶することができる。
【図面の簡単な説明】
【0012】
【図1】情報処理装置のハードウェア構成の一例を示す図である。
【図2】実施形態1の統合ファイルシステムを備えた情報処理装置のソフトウェア構成等の一例を示す図である。
【図3】実施形態1の複数の記憶デバイスをマウントする処理の一例を示すフローチャートである。
【図4】デバイス・ファイルシステム特性テーブルの一例を示す図である。
【図5】ファイルをオープンする処理手順の一例を示すフローチャートである。
【図6】実施形態1のファイルに書き込みを行う処理手順の一例を示すフローチャートである。
【図7】異常項目テーブルの一例を示す図である。
【図8】正常時に記録したファイルと異常時に記録したファイルのデータとを表した図である。
【図9】実施形態2の統合ファイルシステムを備えた情報処理装置のソフトウェア構成等の一例を示す図である。
【図10】実施形態2のファイルに書き込みを行う処理手順の一例を示すフローチャートである。
【図11】記録先識別テーブルの一例を示す図である。
【図12】実施形態2のデータの復旧処理手順の一例を示す図である。
【図13】異常時に記録したファイルのデータを正常時に記録したファイルに復旧する処理を表した図である。
【図14】実施形態3の統合ファイルシステムを備えた情報処理装置のソフトウェア構成等の一例を示す図である。
【図15】実施形態3のデータの復旧処理手順の一例を示す図である。
【図16】実施形態4の統合ファイルシステムを備えた情報処理装置のソフトウェア構成等の一例を示す図である。
【図17】実施形態4の複数の記憶デバイスをマウントする処理の一例を示すフローチャートである。
【図18】ユーザによって変更を加えられた、異常の種類と記憶デバイスとの関係をまとめたテーブルを示す図である。
【図19】従来のファイルシステムを示す図である。
【図20】従来の統合ファイルシステムを備えた情報処理装置のソフトウェア構成を示す図である。
【発明を実施するための形態】
【0013】
以下、本発明の実施形態について図面に基づいて説明する。
【0014】
<実施形態1>
図1は、情報処理装置のハードウェア構成の一例を示す図である。同図において、101は、CPUである。102は、一次記憶装置である。一次記憶装置102は、プログラム及びデータを記録する。103は、I/Oコントローラである。104は、二次記憶装置である。ファイルやディレクトリ等のデータは、二次記憶装置104に記録される。二次記憶装置104にあるファイルの操作は、オペレーティングシステムからI/Oコントローラ103に対して、READ要求、WRITE要求を行うことで実現する。105は、ネットワークである。二次記憶装置104は、ネットワーク105上にある場合も存在する。
CPU101が、一次記憶装置102等に記録されているプログラムに基づき処理を実行することによって、後述する情報処理装置のソフトウェア構成や後述するフローチャートの処理が実現される。
【0015】
図2は、実施形態1の統合ファイルシステムを備えた情報処理装置のソフトウェア構成等の一例を示す図である。同図において図20と異なる点は、同図に203、204、205、206、207、210、211、212、213、214が追加されていることと、2000、2001が削除されてあることであり、これについて説明する。
マウント処理部202の実行時に実行される203の正常時ファイル記録先取得部では、正常時にファイルを記録する記憶デバイスの名前や場所の情報を取得し、その情報を204の正常時ファイル記録先情報に記録する。
正常時ファイル記録先取得部203の実行後に実行される205のデバイス・ファイルシステム特性取得部では、記憶デバイス216a〜216zの容量、速度、構築されているファイルシステム等の特性を取得する。この特性の取得方法は幾つか存在するが、その一例をLinux(登録商標)の場合を例に説明する。Linuxの場合、記憶デバイスにあるファイルに対し、STATFSシステムコールを実行すると、その記憶デバイスに構築されているファイルシステムの型や空きブロック数等統計情報を取得できる。また、記憶デバイスに対し、BLKGETSIZEを指定してIOCTLシステムコールを実行すると、SCSIディスクの容量を取得できる。また、記憶デバイスに対し、hdparmコマンドを実行すると、ハードディスクの速度等のパラメータを取得することができる。
【0016】
デバイス・ファイルシステム特性取得部205の実行後に実行される206のデバイス・ファイルシステム特性テーブル作成部では、デバイス・ファイルシステム特性取得部205で取得したファイルシステム固有の特性情報を纏めて、207のデバイス・ファイルシステム特性テーブルを作成する。
ファイルオープン処理部208では、ファイル記録先情報2001が無い代わりに、正常時ファイル記録先情報204から正常時に記録する記憶デバイスの名前や場所の情報を取得する。ここで取得した情報を基に、正常時に記録する記憶デバイスにあるファイルをオープンする。
ファイル書き込み処理部209実行時に実行される210の異常検知部では、各異常の検知を行い、その後の動作を判定する。異常がなければ処理をファイル書込み処理部209に戻し、ファイルオープン処理部208でオープンしたファイルにデータを記録する。異常が存在すれば、その異常の種類を特定し211のファイル記録先判定部を実行する。この異常の種類を検知する方法はいつくか存在するが、その一例をLinuxの場合を例に説明する。ローカル接続の記憶装置の場合、なんらかの異常があって書き込みに失敗すると、Linuxの中の関数がそのエラーの種類を特定する。記憶デバイスの空き容量以上のデータを試みた場合だと、ENOSPCというエラーが発生する。また、記憶デバイスの故障等で書き込むことができなかった場合だとEIOというエラーが発生する。このエラーの種類によって、この異常が空き容量によるものか、故障によるものかを検知できる。また、ローカル接続の記憶装置の場合、本記憶装置に振動センサ、衝撃センサ、熱センサ等の外的な異常を検出するセンサをとりつけることで、振動、衝撃、熱の異常を検知することが可能になる。ネットワーク接続デバイスの場合は、なんらかの異常があって書き込みに失敗すると、書き込み処理はタイムアウトでエラーになる。このときに、ネットワーク接続先にPINGコマンドをうって、PINGコマンドが失敗するならば、この異常はネットワーク切断によるものだと特定できる。
【0017】
異常検知部210で異常を検出した場合に実行される異常影響判定部211では、検知した異常が正常時に記録する記憶デバイスに影響するかどうかを判定する。判定には、デバイス・ファイルシステム特性テーブル207と213の異常項目テーブルとを用いる。異常項目テーブル213には、異常の種類ごとに、その異常が影響する記憶デバイスの種類とその異常が発生したときに記録する記憶デバイスの種類が記述されている。このとき、発生した異常が、正常時に記録する記憶デバイスに影響しないものならば、この時点で処理をファイル書込み処理部209に戻す。発生した異常が、正常時に記録する記憶デバイスに影響するものならば、ファイル記録先判定部212に移る。
ファイル記録先判定部212は、異常時の記録先となる記憶デバイスを判定する。判定には、デバイス・ファイルシステム特性テーブル207と213の異常項目テーブルを用いる。その後、ファイル記録先判定部212は、214のファイル再オープン部を呼び出す。
ファイル記録先判定部212実行後に実行されるファイル再オープン部214では、ファイルオープン処理部208で開いたファイルをクローズし、ファイル記録先判定部212で判定した記憶デバイスに同名のファイルを作成、オープンする。その後、ファイル書込み処理部209に処理を戻す。これにより、ファイル書込み処理部209では、ファイル記録先判定部212で判定した記憶デバイスにあるファイルにデータを記録することになる。
また、本実施形態では、図20で示したファイル記録先取得部2000とファイル記録先情報2001とを削除している。これとほぼ同じ処理が正常時ファイル記録先取得部203と正常時ファイル記録先情報204とにあたる。この点に関しての本実施形態と図20との異なる点は、本実施形態の場合、正常時ファイル記録先情報204がファイル記録先判定部212でも使用されるという点である。
【0018】
次に、図3、図4、図5、図6、図7、図8を用いて、本実施形態を適用可能な統合ファイルシステムを備えた情報処理装置を、ユーザが利用したときの処理手順について説明する。
まず、図3を用いて、複数の記憶デバイスをマウントする処理手順について説明する。
同図において、S300では、ユーザ空間のユーザが、マウントする複数の記憶デバイスとその中で正常時に記録する記憶デバイス、マウントポイントを指定して、マウントコマンドを実行する。そして、S301に移る。
S301では、S300で指定した引数から、正常時に記録する記憶デバイスの名前や位置の情報を取得し、その情報を正常時ファイル記録先情報204に記録する。そして、S302に移る。
S302では、統合ファイルシステム201が、マウントする全ての記憶デバイスの特性とその記憶デバイスに構築されているファイルシステムの特性とを取得する。そして、S303に移る。
S303では、統合ファイルシステム201が、S302で取得した特性を記憶デバイスごとに纏めて、デバイス・ファイルシステム特性テーブル207を作成する。図4は、デバイス・ファイルシステム特性テーブル207の一例を示す図である。図4の例では、記憶デバイスA、B、C、Dをマウントする場合に、それぞれのパス、記憶デバイスの種類、ファイルシステムの種類、容量、空き容量、読み込み速度といった特性をテーブルに記録している。そして、S304に移る。
S304では、統合ファイルシステム201が、マウント処理を実行して、S300で指定した全ての記憶デバイスに構築されているファイルシステムを重ね合わせ、1つのファイルシステムを形成する。そして、形成したファイルシステムをS300で指定されたマウントポイントにマウントする。
【0019】
次に図5を用いて、ファイルをオープンする処理手順について説明する。
同図において、S500では、ユーザ空間のユーザが、S300で指定したマウントポイントにあるファイルをオープンする、OPENシステムコールを実行する。そして、S501に移る。
S501では、統合ファイルシステム201が、正常時ファイル記録先情報204から、どの記憶デバイスのファイルをオープンするかを判定する。そして、S502に移る。
S502では、統合ファイルシステム201が、S501の判定で得た記憶デバイスにS500で指定したファイル名と同じファイル名のファイルが存在するかを判定する。存在しない場合はS503に移り、存在する場合はS504に移る。
S503では、統合ファイルシステム201が、S501の判定で得たファイルの記憶デバイスにS500で指定したファイル名のファイルを作成する。そして、S504に移る。
S504では、統合ファイルシステム201が、S500で指定されたファイル名のファイルをオープンする処理を行う。このオープンする処理では、S501の判定で得た記憶デバイスに構築されたファイルシステムのオープン処理も呼び出して実行する。そして、オープンしたファイルの情報をファイルディスクリプタに記録して、OPENシステムコールを実行したユーザにファイルディスクリプタを返す。ファイルディスクリプタには、どのファイルを操作するかの識別子が含まれている。そのため、このファイルディスクリプタを引数にファイルをREAD/WRITEすることで、S501の判定で得た記憶デバイスにあるファイルを読み書きすることができる。
【0020】
次に図6を用いて、ファイルに書き込みを行う処理手順について説明する。
同図において、S502、S503に関しては、図5を示したときに説明したとおりであるため、省略する。
S600では、S500でオープンしたファイルのファイルディスクリプタを引数に、WRITEシステムコールを実行する。そして、S601に移る。
S601では、異常検知部210により、異常が発生しているかどうかを確認する。異常を確認した場合は、異常検知部210で取得した異常の種類から、正常時に記録する記憶デバイスに関係する異常かどうかを判定する。判定した結果、関連する異常ならば、異常時に記録する記憶デバイスを判定し、S502に移る。異常を確認しなかった場合、あるいは関係しない異常であった場合は、S604に移る。
【0021】
異常影響判定部211は、異常の判定方法において、異常検知部210から取得した異常の種類、S303で作成したデバイス・ファイルシステム特性テーブル207、異常項目テーブル213を用いる。この判定方法の具体例を、図4、図7を用いて説明する。図4は、S303で説明したとおり、デバイス・ファイルシステム特性テーブル207の一例を示す図である。図7は、異常項目テーブル213の一例を示す図である。図7には、異常項目ごとに、正常時記録先デバイスの条件、異常時記録先デバイスの条件が記述されている。異常項目にある異常が発生したときに、正常時ファイル記録先情報204の記憶デバイスが正常時記録先デバイスの条件に合致すれば、発生した異常は関係する異常だと判定できる。これを、より具体的に正常時に記録する記憶デバイスが記憶デバイスA、S601で確認した異常の種類が「振動が発生」の場合に説明する。図7より、正常時記録先デバイスの条件は「ハードディスク」となる。記憶デバイスAは「ハードディスク」であるため条件に合致する。この異常項目での異常時記録先デバイスの条件は「SDカード」であるため、この条件に合致する記憶デバイスは、図4より記憶デバイスBとなる。また、発生した異常が正常時に記録する記憶デバイスに関係しない異常の場合もある。異常項目にある異常が発生したときに、正常時ファイル記録先情報204の記憶デバイスが正常時記録先デバイスの条件に合致しないと、発生した異常は関係ない異常だと判定できる。これを、より具体的に正常時に記録する記憶デバイスが記憶デバイスC、S601で特定した異常の種類が「ネットワーク切断」の場合に説明する。図7より、正常時記録先デバイスの条件は「ネットワーク接続」となる。記憶デバイスCは「ローカル接続」であるため条件に合致しない。そのため、この異常は関係ない異常だと判定できる。
【0022】
S602では、ファイル記録先判定部212が、S601で判定した異常時に記録する記憶デバイスにある、S500で指定されたファイル名のファイルを別の場所に移動する。これは、既に存在していた同じファイル名のデータが、復旧時のデータに影響しないようにするためである。そのため、テンポラリフォルダへの移動といった方法以外に、ファイルのリネーム、ファイルの削除といった方法でも構わない。そして、S603に移る。
S603では、ファイル再オープン部214は、S504でオープンしていたファイルをクローズする(アクセス制御)。その後、S601で判定した記憶デバイスにある、ファイル再オープン部214は、S500で指定されたファイル名のファイルをオープンする(アクセス制御)。そして、S604に移る。
【0023】
S604では、ファイル書き込み処理部209が、現在オープンされているファイルに対し、書込み処理を実施する。このとき、正常時の書込み処理ならば、先頭から順に書込み処理が行われる。しかし、異常時の書込み処理の場合、先頭からではなく途中からの書き込み処理になる可能性がある。この場合、ファイル書き込み処理部209は、途中までの領域はNULLで埋めて、NULLの後にデータを書き込む。より具体的な例を図8に示す。図8のうち、上部の図が正常時記録先ファイルであり、下部の図が異常時記録先ファイルである。この例では、0x00〜0x05の領域までは正常に「ABCDEF」のデータを書き込むことができたが、0x06を書き込もうとした時点で異常が発生したため、0x06以降は異常時記録先ファイルに「GHIJKL」のデータを書き込んだことを示している。このとき、異常時記録先ファイルの0x00〜0x05の領域は、¥0(NULL)で埋めている。
【0024】
以上が、本実施形態の説明である。本実施形態では、ユーザ空間のユーザがマウントコマンドを実行すると、統合ファイルシステム201のデバイス・ファイルシステム特性取得部205でマウントする複数の記憶デバイスとファイルシステムの特性を取得する。そして、取得した記憶デバイスの特性を基に、デバイス・ファイルシステム特性テーブル207を作成する。次に、ユーザ空間からWRITEシステムコールが実行されると、異常検知部210で異常の有無とその異常が関係する異常かどうかを確認する。関係する異常の発生を確認した場合は、デバイス・ファイルシステム特性テーブル207、異常項目テーブル213を基に、正常時に書き込む記憶デバイスとは別の、異常時に書き込む記憶デバイスを判定する。判定後、異常時に書き込む記憶デバイスに対し書き込み処理を行う。これにより、ファイル記録時に振動等の異常が発生した場合は、その異常の種類に応じて、複数の記録先から最適な記録先を判定し、その判定した記録先に書込み処理を行う。そのため、安全なファイル記録が可能になる。また、記憶デバイスの空き容量が無くなった等の記録デバイス自体に問題が発生した場合も、複数の記録先から最適な記録先を判定し、判定した記録先にファイルを記録するため、確実なファイル記録が可能になる。
【0025】
<実施形態2>
本実施形態は、統合ファイルシステムが、異常の有無を確認し、異常が無くなったことを確認すると、ファイルの復旧を実行する手段を備える。この点で、本実施形態は実施形態1と異なる。
図9は、実施形態2の統合ファイルシステムを備えた情報処理装置のソフトウェア構成等の一例を示す図である。同図において、実施形態1で示した図2と異なる点は、900の記録先識別テーブル作成部、901の記録先識別テーブル、902の復旧確認部、903のファイル復旧部を備えることである。これについて説明する。
900の記録先識別テーブル作成部は、ファイル記録先判定部212実行後に呼び出される。記録先識別テーブル作成部900は、ファイル記録先判定部212実行時に得た、異常時に記録先となる記憶デバイスの情報を纏め、901の記録先識別テーブルに記録する。記録先識別テーブル901には、異常時記録先の記憶デバイスと正常時記録先の記憶デバイス、そしてその異常が復旧する条件を記録する。異常が復旧する条件とは、例えば、その異常が振動によるものだとすれば、復旧する条件は振動が無い状態ということになる。
【0026】
902は、復旧確認部である。復旧確認部902は、デーモンによって呼び出される。デーモンは、カーネル空間に存在し、一定間隔で動作するため、復旧確認部902は一定間隔で呼び出される。復旧確認部902では、異常検知部210で検知した異常が無くなったかどうかを確認する。異常が無くなったことを確認した場合は、903のファイル復旧部を呼び出す。
このときの確認方法は、異常検知部210で使用した方法と同様の方法を用いることができる。より具体的には、異常検知部210で検出した異常が振動、衝撃、熱等のセンサによるものならば、振動センサ、衝撃センサ、熱センサで異常がなくなったことを確認すればよい。ネットワーク切断に関しても、PINGコマンドで成功することを確認すればよい。ただし、正常時記録先の記憶デバイスにあるファイルに対して書き込み処理を実行することはできないため、ENOSPC等のエラーによる判定はできない。この場合、記憶デバイスにあるファイルに対し、STATFSシステムコールを実行し、その記憶デバイスの空きブロック数等の統計情報を取得して、空きブロックが十分かどうかを確かめる方法がある。
復旧確認部902で復旧を確認した場合に実行されるファイル復旧部903では、記録先識別テーブル901を基に、正常時記録先の記憶デバイスを特定する。そして、異常時記録先の記憶デバイスにあるファイルのデータを、正常時記録先の記憶デバイスにある同名のファイルにコピーする。その後、ファイル再オープン部214を呼び出して、異常時記録先の記憶デバイスのファイルをクローズし、正常時記録先の記憶デバイスのファイルをオープンする。
【0027】
次に、図10、図11、図12、図13を用いて、本実施形態を適用可能な統合ファイルシステムを備えた情報処理装置を、ユーザが利用したときの処理手順について説明する。
まず、図10を用いて、ファイルに書き込みを行う処理手順について説明する。
同図において、S502、S503に関しては、図5を示したときに説明したとおりであり、S600、S601、S602、S603、S604に関しては、図6を示したときに説明したとおりであるため、省略する。
S1000では、記録先識別テーブル作成部900が、正常時ファイル記録先情報204とS601で判定した記憶デバイスとを基に、記録先識別テーブル901を作成する。具体例を図11に示す。図11には、復旧条件ごとに、正常時記録先デバイス、異常時記録先デバイス、ファイルパスが記述されている。復旧条件にある条件が達成されたときに、異常時記録先デバイスの中のファイルパスに記載されているファイルのデータを、正常時記録先デバイスにコピーする。そして、S603に移る。
【0028】
次に、図12を用いて、データの復旧処理手順について説明する。
S1200では、一定間隔で動作するデーモンが復旧確認部902を呼び出す。そして、S1201に移る。
S1201では、復旧確認部902が、異常検知部210で検知した異常が無くなったかどうかを確認する。異常が無くなったことを確認した場合は、S1202に移る。異常が無くなっていない場合は、復旧処理は終了する。
S1202では、ファイル復旧部903は、記録先識別テーブル901を基に、異常時記録先の記憶デバイスにあるファイルのデータを正常時記録先の記憶デバイスにあるファイルのデータにコピーする。これをより具体的に図8と図13とを用いて説明する。図8はS604で説明したとおり、0x00〜0x05の領域までは正常時記録先ファイルに「ABCDEF」のデータを書き込み、0x06以降は異常時記録先ファイルに「GHIJKL」のデータを書き込んだことを示している。図13は、図8のデータの復旧を示した図である。この図では、異常時記録先ファイルに書き込まれている0x06以降のデータ「GHIJKL」を、正常時記録先ファイルの0x06以降にコピーしたことを示している。このとき、異常時記録先ファイルの¥0(NULL)で埋めている0x00〜0x05の領域はコピーしない。その後、S602でファイルの移動をしていた場合は、元に戻す。そして、S1203に移る。
S1203では、ファイル再オープン部214は、オープンしているファイルをクローズする。そして、ファイル再オープン部214は、記録先識別テーブル901を基に、正常時記録先の記憶デバイスにあるファイルをオープンする。
【0029】
以上が、本実施形態の説明である。本実施形態では、異常時に記録する記憶デバイスを判定後、その判定した記憶デバイスと正常時に記録する記憶デバイスと記録するファイルの情報を記録先識別テーブル901に纏めて記録する。記録後、異常時に記録する記憶デバイスに対し、書き込み処理を行う。その後、デーモンから呼び出された復旧確認部902が、異常がなくなったことを確認すると、記録先識別テーブル901を基に、ファイルの復旧を行う。これにより、定期的に異常が収まったかどうかを確認し、異常が収まったときには自動的に正常時の記録先に書き戻すことができる。
【0030】
<実施形態3>
本実施形態は、統合ファイルシステムが、ユーザが統合ファイルシステムにアクセスしたタイミングで復旧確認を実行する手段を備える。この点で、本実施形態は実施形態2と異なる。
図14は、実施形態3の統合ファイルシステムを備えた情報処理装置のソフトウェア構成等の一例を示す図である。同図において、実施形態2で示した図9と異なる点は、1400の復旧確認起動部を備えることである。これについて説明する。
復旧確認起動部1400は、ユーザ空間から統合ファイルシステム201に対するアクセスが発生したときに呼び出される。より具体的には、ユーザが、記憶装置上にあるファイルに対してOPEN、READ、WRITE等でアクセスをしたときに、そのアクセスをトリガーとして、復旧確認起動部1400が呼び出される。呼び出された復旧確認起動部1400は、復旧確認部902を実行する。これにより、定期的に復旧確認部902を実行することなく、ユーザがアクセスしたタイミングで復旧確認部902を実行することが可能になる。
【0031】
次に、図15を用いて、本実施形態を適用可能な統合ファイルシステムを備えた情報処理装置を、ユーザが利用したときの処理手順について説明する。
図15では、本実施形態でのデータの復旧処理手順について説明する。
同図において、S1201、S1202、S1203に関しては、図12を示したときに説明したとおりであるため、省略する。
S1500では、ユーザ空間のユーザが、統合ファイルシステム201に対してアクセスしたときに、復旧確認起動部1400を呼び出す。より具体的には、統合ファイルシステム201がマウントされているマウントポイントにアクセスすると、統合ファイルシステム201のファイル操作関数が実行される。そのファイル操作関数に、復旧確認起動部1400を呼び出す仕組みを埋め込むことで、ファイルアクセス時に復旧確認起動部1400が呼び出される。そして、S1501に移る。
S1501では、S1500で呼び出された復旧確認起動部1400が、復旧確認部902を呼び出す。そして、S1201に移る。
【0032】
以上が、本実施形態の説明である。本実施形態では、実施形態2と比べ、復旧処理手順が異なる。実施形態2では、定期的に復旧確認部902を実行していたが、本実施形態では、それを実行せずに、ユーザがアクセスしたタイミングで復旧確認部902を実行することを可能にしている。異常の種類の中には、空き容量や記憶デバイスの故障等のように、即座に復旧しない異常がある。このような場合では、定期的に復旧確認部902を呼び出すよりも、本実施形態の方法が有用といえる。
【0033】
<実施形態4>
本実施形態は、統合ファイルシステムが、異常時のファイル記録先を判定する項目を変更、追加する手段を備える。この点で、本実施形態は実施形態1と異なる。
図16は、実施形態4の統合ファイルシステムを備えた情報処理装置のソフトウェア構成等の一例を示す図である。同図において、実施形態1で示した図2と異なる点は、1600のファイル記録先オプション解析部、1601の異常項目テーブル変更/追加部を備えることである。これについて説明する。
デバイス・ファイルシステム特性テーブル作成部206の実行後に実行されるファイル記録先オプション解析部1600では、マウントやリマウント時等にユーザ空間のユーザから渡された、異常時のファイル記録先を判定する項目に関するオプションを解析する。その後に呼び出される異常項目テーブル変更/追加部1601では、解析したオプション情報を基に、異常項目テーブル213の変更や項目の追加を行う。これにより、ユーザが任意で異常時のファイル記録先を判定する項目を変更、追加することが可能になる。
【0034】
次に、図4、図7、図17、図18を用いて、本実施形態を適用可能な統合ファイルシステムを備えた情報処理装置を、ユーザが利用したときの処理手順について説明する。
図17では、本実施形態での複数の記憶デバイスをマウントする手順について説明する。
同図において、S301、S302、S303、S304に関しては、図3を示したときに説明したとおりであるため、省略する。
S1700では、ユーザ空間のユーザが、マウントする複数の記憶デバイスとその中で正常時に記録する記憶デバイス、1つのマウントポイントと異常時のファイル記録先を判定する項目に関するオプションを指定して、マウントコマンドを実行する。そして、S301に移る。
S1701では、ファイル記録先オプション解析部1600が、S1700で指定した異常時のファイル記録先を判定する項目に関するオプションを解析する。そして、S1702に移る。
【0035】
S1702では、異常項目テーブル変更/追加部1601が、S1701で解析した結果から異常項目テーブル213を変更、追加する。この変更、追加とそれが及ぼす影響について、より具体的に図7、図18を用いて説明する。実施形態1で示した様に、異常時のファイル記録先を判定することに関するオプションを指定せずにマウントしたとき、異常項目テーブル213は図7で示すようになる。これに対し、マウントオプションで、異常項目が「振動が発生」のときの異常時記録先デバイスの条件は「ネットワーク接続デバイス」と指定してマウントを行う。すると、図7の異常項目テーブル213は、図18に示すように、異常項目が「振動が発生」のときの異常時記録先デバイスの条件が「SDカード」から「ネットワーク接続デバイス」へ変更される。これにより、振動が発生したときの記録先デバイスは、ネットワークに接続されたデバイスに限定されることになる。そして、S304を呼び出す。
【0036】
以上が、本実施形態の説明である。本実施形態では、実施形態1に加え、異常時のファイル記録先を判定する項目を変更、追加する手段であるファイル記録先オプション解析部1600と異常項目テーブル変更/追加部1601を備える。これにより、ユーザが異常時のファイル記録先を判定する項目に対し、変更、追加することが可能となる。そのため、それぞれのユーザの環境にあったファイル管理が可能となる。
【0037】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【0038】
以上、上述した各実施形態によれば、ユーザがファイルを記録するときに、振動等の周囲の環境に異常が発生した場合は、その異常の種類に応じて、複数の記録先から最適な記録先を判定し、判定した記録先にファイルを記録するため、安全なファイル記録が可能になる。また、空き容量が無くなった等の記録デバイス自体に問題が発生した場合でも、複数の記録先から最適な記録先を判定し、判定した記録先にファイルを記録するため、確実なファイル記録が可能になる。
したがって、ファイルのアクセス時に異常を検知した場合に、安全、かつ、確実にファイルを記憶することができる。
【0039】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0040】
101 CPU、102 一次記憶装置、104 二次記憶装置

【特許請求の範囲】
【請求項1】
複数の記憶デバイスを有する情報処理装置であって、
ファイルのアクセス時に異常を検知する検知手段と、
前記複数の記憶デバイスを、前記検知手段で検知された異常に影響する記憶デバイスか否か判定する判定手段と、
前記判定手段で前記異常に影響すると判定された記憶デバイスにあるファイルへのアクセスを止め、前記判定手段で前記異常に影響しないと判定された記憶デバイスにあるファイルへアクセスさせるアクセス制御手段と、
を有する情報処理装置。
【請求項2】
一定間隔で前記異常が無くなったかどうかを判定する復旧確認手段と、
前記復旧確認手段で異常が無くなったと判定されたときに、前記判定手段で前記異常に影響しないと判定された記憶デバイスにあるファイルのデータを、前記判定手段で前記異常に影響すると判定された記憶デバイスに記録するファイル復旧手段と、
を更に有する請求項1記載の情報処理装置。
【請求項3】
前記検知手段で異常が検知されたのち、ファイルのアクセスがあったときに、前記判定手段で前記異常に影響しないと判定された記憶デバイスにあるファイルのデータを、前記判定手段で前記異常に影響すると判定された記憶デバイスに記録するファイル復旧手段を更に有する請求項1記載の情報処理装置。
【請求項4】
複数の記憶デバイスを有する情報処理装置が実行する情報処理方法であって、
ファイルのアクセス時に異常を検知する検知ステップと、
前記複数の記憶デバイスを、前記検知ステップで検知された異常に影響する記憶デバイスか否か判定する判定ステップと、
前記判定ステップで前記異常に影響すると判定された記憶デバイスにあるファイルへのアクセスを止め、前記判定ステップで前記異常に影響しないと判定された記憶デバイスにあるファイルへアクセスさせるアクセス制御ステップと、
を含む情報処理方法。
【請求項5】
複数の記憶デバイスを有するコンピュータに、
ファイルのアクセス時に異常を検知する検知ステップと、
前記複数の記憶デバイスを、前記検知ステップで検知された異常に影響する記憶デバイスか否か判定する判定ステップと、
前記判定ステップで前記異常に影響すると判定された記憶デバイスにあるファイルへのアクセスを止め、前記判定ステップで前記異常に影響しないと判定された記憶デバイスにあるファイルへアクセスさせるアクセス制御ステップと、
を実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公開番号】特開2013−37492(P2013−37492A)
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願番号】特願2011−172234(P2011−172234)
【出願日】平成23年8月5日(2011.8.5)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】