"ファイルに対する処理を行うために、当該ファイルの実データと、当該ファイルの実データの格納位置情報を含むメタデータと、を一時的に記憶するキャッシュメモリと、前記キャッシュメモリ上のファイルの実データ及びメタデータを前記補助記憶装置に書き込む書込処理部と、メタデータに基づいてファイルの実データにアクセスするファイルアクセス部と、ファイルシステムが構築された情報処理装置自体から発行され、当該情報処理装置の起動毎に異なる起動識別情報を取得する起動識別情報取得部と、を備え、前記書込処理部は、ファイルの実データ及びメタデータを前記補助記憶装置に書き込むと共に、当該ファイルのメタデータに、情報処理装置自体から現在発行されている前記起動識別情報と、前記補助記憶装置に書き込みが完了したファイルの実データ部分を特定する書込完了済み情報と、を含めて前記補助記憶装置に記憶する機能を有する、ファイルシステム。請求項1に記載のファイルシステムであって、前記ファイルアクセス部は、ファイルへのアクセス時に当該ファイルのメタデータが前記キャッシュメモリに記憶されていない場合に、当該メタデータを前記補助記憶装置から前記キャッシュメモリに読み出して、当該メタデータ内の前記起動識別情報が情報処理装置自体から現在発行されている前記起動識別情報と異なる場合に、ファイルのメタデータ内の前記書込完了済み情報にて特定される実データ部分のファイルにアクセスする、ファイルシステム。請求項2に記載のファイルシステムであって、前記書込処理部は、ファイルのメタデータ内に、前記キャッシュメモリ上におけるファイルの実データのサイズを表すファイルサイズ情報を含めると共に、当該ファイルの前記補助記憶装置に対する書き込みが完了した実データ部分のサイズを前記書込完了済み情報として含めて、ファイルのメタデータを前記補助記憶装置に記憶し、前記ファイルアクセス部は、前記補助記憶装置から前記キャッシュメモリに読み出したファイルのメタデータ内の前記起動識別情報が情報処理装置自体から現在発行されている前記起動識別情報と異なり、当該メタデータ内の前記書込完了済み情報の値が当該メタデータ内の前記ファイルサイズ情報の値と異なる場合に、当該ファイルサイズに前記書込済み情報の値を上書きする、ファイルシステム。請求項3に記載のファイルシステムであって、前記ファイルアクセス部は、前記補助記憶装置から前記キャッシュメモリに読み出したファイルのメタデータ内の前記ファイルサイズ情報に対応するサイズの実データ部分のファイルにアクセスする、ファイルシステム。請求項2に記載のファイルシステムであって、前記書込処理部は、ファイルの実データを分割した分割ファイル毎に、当該分割ファイルの実データ、及び、当該分割ファイルの前記補助記憶装置に対する格納位置情報と当該分割ファイルの分割前のファイルに対する位置情報とを含むメタデータ、を前記補助記憶装置に書き込むと共に、当該分割ファイルのメタデータに、情報処理装置自体から現在発行されている前記起動識別情報と、当該分割ファイルの前記補助記憶装置に対する書き込みが完了したことを表す前記書込完了済み情報と、を含めて前記補助記憶装置に記憶する機能を有する、ファイルシステム。請求項5に記載のファイルシステムであって、前記ファイルアクセス部は、前記補助記憶装置から前記キャッシュメモリに読み出したファイルの分割ファイルに対応するメタデータ内の前記起動識別情報が情報処理装置自体から現在発行されている前記起動識別情報と異なる場合に、前記補助記憶装置から前記キャッシュメモリに読み出したファイルの各分割ファイルに対応する各メタデータのうち、ファイルの先頭から見て前記書込み完了済み情報が含まれている最後方のメタデータに対応する分割ファイルまでの実データ部分のファイルにアクセスする、ファイルシステム。ファイルに対する処理を行うために、当該ファイルの実データと、当該ファイルの実データの格納位置情報を含むメタデータと、を一時的に記憶するキャッシュメモリを備え、ファイルシステムを構成する情報処理装置に、前記キャッシュメモリ上のファイルの実データ及びメタデータを前記補助記憶装置に書き込む書込処理部と、メタデータに基づいてファイルの実データにアクセスするファイルアクセス部と、ファイルシステムが構築された情報処理装置自体から発行され、当該情報処理装置の起動毎に異なる起動識別情報を取得する起動識別情報取得部と、を実現させると共に、前記書込処理部は、ファイルの実データ及びメタデータを前記補助記憶装置に書き込むと共に、当該ファイルのメタデータに、情報処理装置自体から現在発行されている前記起動識別情報と、前記補助記憶装置に書き込みが完了したファイルの実データ部分を特定する書込完了済み情報と、を含めて前記補助記憶装置に記憶する、ことを実現させるためのプログラム。請求項7に記載のプログラムであって、前記ファイルアクセス部は、ファイルへのアクセス時に当該ファイルのメタデータが前記キャッシュメモリに記憶されていない場合に、当該メタデータを前記補助記憶装置から前記キャッシュメモリに読み出して、当該メタデータ内の前記起動識別情報が情報処理装置自体から現在発行されている前記起動識別情報と異なる場合に、ファイルのメタデータ内の前記書込完了済み情報にて特定される実データ部分のファイルにアクセスする、プログラム。ファイルに対する処理を行うために、当該ファイルの実データと、当該ファイルの実データの格納位置情報を含むメタデータと、を一時的に記憶するキャッシュメモリを備えたファイルシステムにて、前記キャッシュメモリ上のファイルの実データ及びメタデータを前記補助記憶装置に書き込み、メタデータに基づいてファイルの実データにアクセスすると共に、ファイルの実データ及びメタデータを前記補助記憶装置に書き込むときに、当該ファイルのメタデータに、ファイルシステムが構築された情報処理装置自体から現在発行されている当該情報処理装置の起動毎に異なる起動識別情報と、前記補助記憶装置に書き込みが完了したファイルの実データ部分を特定する書込完了済み情報と、を含めて前記補助記憶装置に記憶する、ファイル処理方法。請求項9に記載のファイル処理方法であって、ファイルへのアクセス時に、当該ファイルのメタデータが前記キャッシュメモリに記憶されていない場合に、当該メタデータを前記補助記憶装置から前記キャッシュメモリに読み出して、当該メタデータ内の前記起動識別情報が情報処理装置自体から現在発行されている前記起動識別情報と異なる場合に、ファイルのメタデータ内の前記書込完了済み情報にて特定される実データ部分のファイルにアクセスする、ファイル処理方法。しかし、アプリケーションに処理の再開機能resume機能が実装されていない場合には、resume機能を利用者が独自に作り込む必要が出てくる。作り込みの手間を考えると、利用者がプロトコルを意識してresume機能を実現するのは現実的には難しい。そのため、例えばCIFSCommonInternetFileSystem経由でファイルのバックアップをする場合、バックアップサーバ側で障害が発生するとファイルの先頭からバックアップをしなおすのが一般的となる。ただしこの場合、ファイルサイズが非常に大きくなると時間的なロスが大きくなってしまう。ここで、ファイルを復旧に関連する技術の一例が、特許文献1に開示されている。特許文献1に開示のシステムでは、データブロックをトランザクション毎の識別子に関連付けておき、システム故障発生時にいずれの識別子が起動していたかを起動中の識別子リストからチェックしている。しかしながら、上述した技術を用いた場合には、識別子リストを用いて全てのデータの復旧処理を明示的に開始して実行する必要がある。すると、復旧処理自体が複雑となると共に、復旧処理中におけるファイルへのアクセスが不可能となったり、ファイルシステムの負荷が高くなるなどの問題が生じ、ファイルシステムの安定した稼働が困難となる。このため、本発明の目的は、上述した課題である、簡易な構成にてファイル復旧が可能であると共に、安定した稼働が可能なファイルシステムを提供することにある。本発明の一形態であるファイルシステムは、ファイルに対する処理を行うために、当該ファイルの実データと、当該ファイルの実データの格納位置情報を含むメタデータと、を一時的に記憶するキャッシュメモリと、前記キャッシュメモリ上のファイルの実データ及びメタデータを前記補助記憶装置に書き込む書込処理部と、メタデータに基づいてファイルの実データにアクセスするファイルアクセス部と、ファイルシステムが構築された情報処理装置自体から発行され、当該情報処理装置の起動毎に異なる起動識別情報を取得する起動識別情報取得部と、を備え、前記書込処理部は、ファイルの実データ及びメタデータを前記補助記憶装置に書き込むと共に、当該ファイルのメタデータに、情報処理装置自体から現在発行されている前記起動識別情報と、前記補助記憶装置に書き込みが完了したファイルの実データ部分を特定する書込完了済み情報と、を含めて前記補助記憶装置に記憶する機能を有する、という構成を取る。また、本発明の他の形態であるプログラムは、ファイルに対する処理を行うために、当該ファイルの実データと、当該ファイルの実データの格納位置情報を含むメタデータと、を一時的に記憶するキャッシュメモリを備え、ファイルシステムを構成する情報処理装置に、前記キャッシュメモリ上のファイルの実データ及びメタデータを前記補助記憶装置に書き込む書込処理部と、メタデータに基づいてファイルの実データにアクセスするファイルアクセス部と、ファイルシステムが構築された情報処理装置自体から発行され、当該情報処理装置の起動毎に異なる起動識別情報を取得する起動識別情報取得部と、を実現させると共に、前記書込処理部は、ファイルの実データ及びメタデータを前記補助記憶装置に書き込むと共に、当該ファイルのメタデータに、情報処理装置自体から現在発行されている前記起動識別情報と、前記補助記憶装置に書き込みが完了したファイルの実データ部分を特定する書込完了済み情報と、を含めて前記補助記憶装置に記憶する、ことを実現させるためのプログラムである。また、本発明の他の形態であるファイル処理方法は、ファイルに対する処理を行うために、当該ファイルの実データと、当該ファイルの実データの格納位置情報を含むメタデータと、を一時的に記憶するキャッシュメモリを備えたファイルシステムにて、前記キャッシュメモリ上のファイルの実データ及びメタデータを前記補助記憶装置に書き込み、メタデータに基づいてファイルの実データにアクセスすると共に、ファイルの実データ及びメタデータを前記補助記憶装置に書き込むときに、当該ファイルのメタデータに、ファイルシステムが構築された情報処理装置自体から現在発行されている当該情報処理装置の起動毎に異なる起動識別情報と、前記補助記憶装置に書き込みが完了したファイルの実データ部分を特定する書込完了済み情報と、を含めて前記補助記憶装置に記憶する、という構成を取る。本発明は、上記構成を取ることにより、簡易な構成にてファイル復旧が可能であると共に、安定した稼働が可能なファイルシステムを提供することができる。本発明の第1の実施形態を、図1乃至図8を参照して説明する。図1乃至図2は、ファイルシステムの構成を説明するための図であり、図3乃至図8は、ファイルシステムの動作を説明するための図である。[構成]本実施形態1における情報処理システムは、図1に示すように、アプリケーションG1と、ファイルシステムG2と、OSOperatingSystemG4と、を備えている。なお、ファイルシステムG2とOSG4とは、情報処理システムを構成する情報処理装置に、プログラムが組み込まれることで構築される。また、情報処理システムは、補助記憶装置として、ディスクG3を備えている。上記アプリケーションG1は、ファイルシステムG2が構築された同じ情報処理装置内で動作するものである。但し、アプリケーションG1は、NFSNetworkFileSystemやCIFSCommonInternetFileSystemのように別装置からネットワーク経由で動作するものであってもよい。また、アプリケーションG1は、書き込みログを保持しておく必要は無いが、オリジナルのデータは保持している。従って、本実施形態におけるアプリケーションG1は、例えば、CIFS経由でデータをバックアップする機能を有するものであることが考えられる。但し、アプリケーションG1は、上述した機能を有するものに限定されず、後述するように、ディスクG3に対して、ファイルの書き込み、読み込み、更新などを行うべく、アクセスする機能を有していればよい。上記OSG4は、ファイルシステムが構築された情報処理装置単位あるいはファイルシステム単位で、当該情報処理装置の起動毎に一意に決まる識別情報である起動ID起動識別情報を出力する起動ID払出処理部B0を有する。具体的に、起動ID払出処理部B0は、情報処理装置が起動、再起動したときに、更新された新たな起動IDを払い出す。なお、起動IDとしては、例えば、システムの起動時刻、あるファイルシステムのマウント時刻、などが考えられるが、これらに限定されない。上記ファイルシステムG1は、図1に示すように、インタフェース部A0,inodeコピー処理部C0、キャッシュ管理部D0、ディスクアクセス部E0、を有する。また、データを一時保存するためのキャッシュメモリに形成された、メタデータ記憶領域F1、データキャッシュ領域F2、を有する。上記インタフェース部A0は、上記起動ID払出処理部B0から払い出された起動IDを取得する起動ID取得処理部A1起動識別情報取得部を備える。また、インタフェース部A0は、アプリケーションG1がファイルのアクセスを行うためにやり取りを行うファイルアクセス部として機能する構成として、オープン処理部A2、読み込み処理部A3、書き込み処理部A4、クローズ処理部A5を備える。なお、これら各処理部A2~A5は、まず、ファイルのメタデータであるinode情報にアクセスし、そのinode情報に基づいてファイルの実データにアクセスする。これら各処理部A2~A5の機能については、後述する動作説明時に詳述する。上記inodeコピー処理部C0は、上述したオープン処理部A2、読み込み処理部A3、書き込み処理部A4、クローズ処理部A5と協働してファイルアクセス部として機能し、上記オープン処理部A2等によってファイルにアクセスするとき、つまり、ディスクG3からinodeなどのファイルのinode情報を読み込むときに、当該inode情報を書き換えてメタデータ記憶領域F1に格納する機能を有する。なお、inodeコピー処理部C0は、図1に示すように、再立上判定処理部C1と、コミット情報チェック処理部C2と、inode書換処理部C3と、を備えており、当該inode処理部C0によるinodeの書き換え処理の詳細については、後述する動作説明時に詳述する。上記キャッシュ管理部D0は、データキャッシュ領域F2にキャッシュがたまって書き込みが滞ることを防ぐための処理であり、一定時間時間が経過した場合や、キャッシュ領域に一定量データがたまった場合、アプリケーションG1がコミット要求を発行した場合などに、ディスクアクセス部E0に要求して、データキャッシュ領域F2内のファイルの実データをディスクG3に反映させる。なお、以下では、データキャッシュ領域F2内のデータをディスクG3に反映させる処理を、コミットと呼ぶこととする。従って、このキャッシュ管理部D0は、上記書込み処理部A4と共に、ファイルの実データ及びinode情報を、ディスクに書き込む書込処理部として機能する。上記ディスクアクセス部E0は、データのディスクG3への書き込みや、ディスクG3にあるデータの読み込みを行なうための処理を行い、ファイルシステムG2とディスクG3とのインタフェースとして機能する。上記データキャッシュ領域F2は、アプリケーションG1からディスクG3への書き込みの性能を向上させるために用いられ、特に、ファイルの実データを一時的に記憶するキャッシュメモリの領域である。また、上記メタデータ記憶領域F2は、ファイルのinode情報を保存しておくための一時的なキャッシュメモリの領域である。ここで、inode情報の一例を、図2を参照して説明する。図2Bに示すように、本実施形態におけるinode情報は、データキャッシュ領域F2で処理されているファイル全体つまりファイルの実データのサイズを表すファイルサイズ情報と、対応するファイルの補助記憶装置に対する格納場所を表すデータの格納場所情報と、を含む。また、inode情報は、対応するファイルに関する情報として、所有者ID、グループID、inode番号、パーミッション、最終ファイル更新時や最終inode更新時、最終参照時等を表すタイムスタンプ、を含む。さらに、本実施形態におけるinode情報は、図2Bに示すように、上述した起動ID取得処理部A1にて取得した起動IDを含む。また、本実施形態におけるinode情報は、ディスクG3に対して書込みが完了したファイルの実データ部分のサイズを表すコミット済サイズを含む。これら起動IDとコミット済サイズとは、図2Aに示す一般的なファイルシステムで使用されるファイルのinode情報には含まれない情報である。なお、上記起動IDとコミット済サイズとは、ファイルの実データがデータキャッシュ領域F2やディスクG3に書き込まれるときに更新される。ここで、上記コミット済サイズは、必ずしもデータのサイズを表す情報であることに限定されず、ファイルの実データのうちディスクG3に書き込みが完了した部分を特定する情報であれば、他の情報であってもよい。[動作]次に、上述した情報処理システムの動作を説明する。はじめに、図3を参照して、既にファイルがディスクG3に格納されており、当該ディスクG3からファイルを参照したり更新するときの動作を説明する。まず、アプリケーションG1が、ファイルの参照や更新を行なおうとした場合には、ファイルのパス名とディスクに格納されている位置情報を対応付けるため、ファイルのinode情報を参照する。このとき、アクセスに必要なinode情報がメタデータ記憶領域F1内にあればそれを利用するがステップS1、ステップS2でYes、なかった場合にはステップS2でNo、ディスクG3からinode情報を読み込む。続いて、ディスクG3からinode情報を読み込むために、インタフェース部A0はinodeコピー処理部C0を実行するステップS3。inodeコピー処理部C0は、ディスクアクセス部E0に要求して、ディスクG3から必要とするinode情報を、メタデータ記憶領域F1に読み込むステップS4。続いて、メタデータ記憶領域F1にinode情報の読み込みができたら、当該inode情報内の起動IDと、起動ID取得処理部A1にて取得した現在の情報処理装置あるいはファイルシステムの起動IDと、を比較するステップS5。これは、前回書き込みを行なったのが、システムの再起動を行う前か後かを判断するための比較である。従って、起動IDが一致している場合にはステップS6でYes、前回の書き込みがシステムの再起動の後であると言え、データを書き込んだ後にシステム障害が発生していないことが言える。なお、起動ID取得処理部A1によるシステムの起動IDの取得は、システムが起動してから一度行なっていればよく、例えば、システム起動後の最初にinodeコピー処理C0が実行された場合やシステムの起動スクリプトから読み込んでおけばよい。そして、システムの取得した起動IDとinode上の起動IDとが一致していなかった場合にはステップS6でNo、前回、データを書き込んでいる最中にシステム障害が発生した可能性がある。そのため、inode情報の中にあるファイルサイズとコミット済サイズとを比較しステップS7、ファイルの実データをディスクG3に書き込む処理であるコミットが完了した以降に、データの書き込みが発生したかどうかを確認する。システムの起動IDとinode上の起動IDとが一致しておらず、ファイルサイズとコミット済サイズとが一致していなかった場合ステップS8でNo、ファイルのロールバック処理を実行するため、inode情報内のファイルサイズの値をコミット済サイズの値に上書きするステップS9。続いて、inode情報のファイルサイズの値がコミット済サイズの値に上書きされると、ファイルサイズは小さくなるため、今まで利用していたデータブロックが利用されなくなる場合がある。そのため、ファイルサイズの変更に合わせて、inodeに記載されているデータの格納場所を修正し、メタデータのデータブロックビットマップの情報を未使用に変更するステップS10。その後、変更したinode情報や他のメタデータの値を、メタデータ格納領域F1に格納するステップS11。そして、inodeコピー処理部C0は、処理が完了したことをインタフェース部A0に通知し、オープン処理部A2や読み込み処理部A3等によって、コミットした時点までロールバックしたファイルへのアクセスができるようにするステップS12。上述した処理を行うことによるファイルの状況を、図8を参照して説明する。まず、図8Aは、一般的なファイルシステムにおけるinode情報とファイルの実データとの関係を示す図である。この図に示すように、一般的なファイルシステムでは、ファイルサイズに従ってファイルの実データにアクセスされるため、未コミット部分が残ってしまい、アクセスが不可能となる。一方、本実施形態におけるファイルシステムでは、図8Bの上段に示すように、上述したinodeコピー処理部C0による処理の前には、ファイルサイズがデータ未コミット部分まで含んでいるが、inodeコピー処理部C0による処理後には、コミット済サイズがファイルサイズに上書きされるため、図8Bの下段の実践部分に示すように、ファイル自体がコミット済みのデータ部分までとなる。逆に言うと、図8Bの下段に示す点線部分は、ディスクG3には残っているものの、存在しないように見えるため、コミットが完了した時点までロールバックして、ファイルにアクセスすることが可能となる。次に、ファイルシステムによるファイルのオープン、ファイルの書き込み非同期、ファイルの書き込み同期、ファイルの読み込み、ファイルのクローズの各動作を説明する。ファイルのオープン図4を参照して、ファイルのオープン処理の動作を説明する。1.アプリケーションG1がインタフェース部A0に対してファイルのオープンを要求する。2.インタフェース部A0は、オープン処理部A2に処理を渡す。オープン処理部A2では、要求された該当ファイルのinodeがメタデータ記憶領域F1に存在しているか確認する。存在していれば、下記手順4に進み、存在していなければ、下記手順3に進む。3.オープン処理部A2は、inodeコピー処理部C0による処理を実行する。inodeコピー処理部C0による処理は、上述した処理と同じ処理を行い、処理が完了したことをオープン処理部A2に通知する。4.オープン処理部A2は、メタデータ記憶領域F1内のinode情報に基づき、ファイルのオープン処理を行ない、処理が完了したらアプリケーションG1に処理が完了したことを通知する。ファイルの書き込み非同期図5を参照して、ファイルの書き込み非同期処理の動作を説明する。1.アプリケーションG1がインタフェース部A0に対して書き込むデータを送信する。2.インタフェース部A0は、書き込み処理部A4に処理を渡す。書き込み処理部A4では、要求された該当ファイルのinodeが、メタデータ記憶領域F1に存在しているか確認する。存在していれば下記手順4に進み、存在していなければ下記手順3に進む。なお、ファイルのオープンができていたとしても、メモリを解放するためにメタデータ記憶領域F1から必要なinode情報がクリアされている可能性もあるため、inodeの存在確認処理を行う。3.書き込み処理部A4は、inodeコピー処理部C0による処理を実行する。inodeコピー処理部C0による処理は、上述した処理と同じ処理を行い、処理が完了したことを書き込み処理部A4に通知する。4.書き込み処理部A4は、メタデータ記憶領域F1内のinode情報に基づき、受け取った書き込みデータファイルの実データをデータキャッシュ領域F2に書き込む。このとき、書き込むデータに合わせてinode情報も変更する必要があるが、そのときにインタフェース部A0で保持している現在の起動IDの情報を、inode情報内に反映する。5.書き込み処理部A4は、メタデータ記憶領域F1内のinodeの更新と、データキャッシュ領域F2へのファイルの実データの書き込みが完了したら、アプリケーションG1に書き込みの完了を通知する。ファイルの書き込み同期図6を参照して、ファイルの書き込み同期処理の動作を説明する。1.アプリケーションG1がインタフェース部A0に対して、ファイルの実データである書き込むデータを送信する。2.インタフェース部A0は、書き込み処理部A4に処理を渡す。書き込み処理部A4では、要求された該当ファイルのinodeが、メタデータ記憶領域F1に存在しているか確認する。存在していれば下記手順4に進み、存在していなければ下記手順3に進む。なお、ファイルのオープンができていたとしても、メモリを解放するためにメタデータ記憶領域F1から必要なinode情報がクリアされている可能性もあるため、inodeの存在確認処理を行う。3.書き込み処理部A4は、inodeコピー処理部C0による処理を実行する。inodeコピー処理部C0は、上述した処理と同じ処理を行い、処理が完了したことを書き込み処理部A4に通知する。4.書き込み処理部A4は、メタデータ記憶領域F1内のinode情報に基づき、受け取った書き込みデータであるファイルの実データをデータキャッシュ領域F2に書き込む。このとき、書き込むデータに合わせてinode情報も変更する必要があるが、そのときにインタフェース部A0で保持している起動IDの情報をinode内に反映する。5.書き込み処理部A4は、メタデータ記憶領域F1内のinode情報の更新とデータキャッシュ領域F2へのデータの書き込みが完了したら、ディスクアクセス部E0にディスクへの反映を要求する。6.ディスクアクセス部E0は、ディスクG3への反映が完了したら、書き込み処理部A4に通知する。7.書き込み処理部A4は、メタデータ記憶領域F1内のinode内のコミット済サイズの値を、ファイルサイズの値に上書きする。8.書き込み処理部A4は、ディスクアクセス部E0に対し、メタデータ記憶領域F1内のinodeのディスクG3への反映を要求する。9.ディスクアクセス部E0は、ディスクG3への反映が完了したら、書き込み処理部A4に通知する。10.書き込み処理部A4は、アプリケーションG1に書き込みの完了を通知する。ファイルの読み込み図7を参照して、ファイルの読み込み処理の動作を説明する。1.アプリケーションG1が、インタフェース部A0に対してファイルの読み込みを要求する。2.インタフェース部A0は、読み込み処理部A3に処理を渡す。読み込み処理部A3では、要求された該当ファイルのinodeが、メタデータ記憶領域F1に存在しているか確認する。存在していれば下記手順4に進み、存在していなければ下記手順3に進む。3.読み込み処理部A3は、inodeコピー処理部C0の処理を実行する。inodeコピー処理部C0は、上述した処理と同じ処理を行い、処理が完了したことを読み込み処理部A3に通知する。4.読み込み処理部A3は、メタデータ記憶領域F1内のinode情報に基づき、ディスクアクセス部E0にデータの読み込みを要求する。5.ディスクアクセス部E0は、ディスクG3からデータを読み込んだら、読み込み処理部A3に返却する。なお、通常は読み込んだデータについても書き込み時と同じようにキャッシュを利用する実装が一般に行なわれるが、ここでは、説明を省略し、直接読み込み処理部A3に渡す例を記載している。6.読み込み処理部A3は、アプリケーションG1に書き込みの完了を通知する。ファイルのクローズ次に、ファイルのクローズ処理の動作を説明する。1.アプリケーションG1が、インタフェース部A0に対してファイルのクローズを要求する。2.インタフェース部A0は、クローズ処理部A5に処理を渡す。クローズ処理部A5では、要求された該当ファイルのinodeが、メタデータ記憶領域F1に存在しているか確認する。存在していれば下記手順4に進み、存在していなければ下記手順3に進む。3.クローズ処理部A5は、メタデータコピー処理部C0による処理を実行する。inodeコピー処理部C0による処理は上述した処理と同じ処理を行い、処理が完了したことをクローズ処理部A5に通知する。4.クローズ処理部A5は、メタデータ記憶領域F1内のinode情報に基づき、ディスクアクセス部E0にデータキャッシュ領域F2内のデータのディスクG3への反映を要求する。5.ディスクアクセス部E0は、ディスクG3への反映が完了したら、クローズ処理部A5に通知する。6.クローズ処理部A5は、メタデータ記憶領域F1内のinode内のコミット済サイズの値をファイルサイズの値に上書きする。7.クローズ処理部A5は、ディスクアクセス部E0に対し、メタデータ記憶領域F1内のinodeのディスクG3への反映を要求する。8.ディスクアクセス部E0は、ディスクG3への反映が完了したら、クローズ処理部A5に通知する。9.クローズ処理部A5は、アプリケーションG1にクローズの完了を通知する。データの非同期の反映上述した非同期書き込みを行う場合、データキャッシュ領域F2内のデータをディスクG3に反映するための処理が別途必要となる。以下、その処理について説明する。1.一定時間時間が経過した場合、データキャッシュ領域F2に一定量データがたまった場合などに、キャッシュ管理部D0からディスクアクセス部E0に要求してデータキャッシュ領域F2のデータをディスクG3に書き込む処理を要求する。2.ディスクアクセス部E0は、メタデータ記憶領域F1およびデータキャッシュ領域F2のキャッシュを読み込み、ディスクG3に反映する。3.データおよびinodeなどのメタデータの反映後、さらにinodeのコミット済サイズだけ更新し、inodeについて再度ディスクG3に反映する。resume処理次に、アプリケーションG1が、書き込みデータのresumeを行う場合の処理について説明する。1.アプリケーションG1は、インタフェース部A0に対してファイルのオープンを要求する。なお、この時点では、システムに障害が発生していないこととする。2.インタフェース部A0は、オープン処理部A2に処理を渡し、オープン処理部A2からinodeコピー処理部C0による処理を実行する。3.この時点で障害は発生していないため、ディスクG3にあるinode情報を、メタデータ格納領域F1にそのままコピーする。4.inodeコピー処理部C0が、オープン処理部A2に完了を通知し、オープン処理部A2はアプリケーションG1にオープン完了を通知する。5.アプリケーションG1は、インタフェース部A0に対してデータの送信を行なう。6.インタフェース部A0は、書き込み処理部A4に処理を渡す。7.書き込み処理部A4は、メタデータ記憶領域F1内のinode情報に基づき、受け取った書き込みデータをデータキャッシュ領域F2に書き込む。このとき、書き込むデータに合わせてinode情報も変更する。また、inode更新では起動IDの情報をinodeに反映する。8.その後、システム障害が発生すると、システムが再起動する。このとき、アプリケーションG1も異常終了してしまう。9.システム再起動後、アプリケーションG1で書き込んでいたデータをresumeするため、ファイルのサイズを確認する。ファイルサイズを確認するため、アプリケーションG1はファイルのオープンを要求する。10.インタフェース部A0は、オープン処理部A2に処理を渡す。オープン処理部A2では、該当ファイルのinodeがメタデータ記憶領域F1に存在しているか確認する。但し、この時点では、メタデータ記憶領域F1にinodeは存在していないものとする。11.オープン処理部A2は、inodeコピー処理部C0による処理を実行する。12.inodeコピー処理部C0では、ディスクアクセス部E0に要求して、ディスクG3から必要とするinode情報を読み込む。13.inodeの読み込みができたら、システムの起動IDとinode上の起動IDを比較する。システム再起動の前にinodeの更新が行なわれていたため、システムの起動IDとinode上の起動IDは異なる値を持つ。14.次に、inode情報の中にあるファイルサイズとコミット済サイズを比較する。書き込み中に障害が発生したため、ファイルサイズとコミット済サイズは異なる値を持つ。なお、コミットの処理が完了した直後に障害が発生する可能性もあるが、一般には極めて稀なタイミングであるため、この例では考えないものとする。15.システムの起動IDとinode上の起動IDが一致しておらず、ファイルサイズとコミット済サイズが一致していなかったため、inode内のファイルサイズの値をコミット済サイズの値に上書きする。16.inodeのファイルサイズの値がコミット済サイズの値に上書きされると、ファイルサイズは小さくなるため、ファイルサイズの変更に合わせて、inodeに記載されているデータの格納場所の情報を修正し、メタデータのデータブロックビットマップの情報を未使用に変更する。17.上記手順15と手順16で変更したinodeや他のメタデータの情報をメタデータ格納領域F1に格納する。18.inodeコピー処理部C0は、オープン処理部A2に処理が完了したことを通知する。19.オープン処理部A2は、ファイルのオープン処理を実行する。オープン処理が完了したら、アプリケーションG1に対してオープン処理が完了したことを通知する。20.アプリケーションG1はファイルサイズの参照を要求する。21.インタフェース部A0は、メタデータ記憶領域F1にあるinode情報からファイルサイズを通知する。22.アプリケーションG1は、データの書き込みを再開させるため、受け取ったファイルサイズの値のファイルとして認識し、当該ファイルサイズの値から先のデータの書き込みを始める。以上のように、本実施形態によると、保証されていないデータは、かかるデータへのアクセス時に削除されるため、最終的に参照可能なデータは、保証されたコミットされたデータだけとなる。そして、データのアクセス時にメタデータをディスクからメモリにコピーするときに、メモリ上でメタデータを書き換えることでロールバック処理をしているため、データのロールバック処理に時間が掛からない。さらに、本実施形態によると、アプリケーションG1からは保証されたデータのみディスクG3に格納されているように見えるため、ファイルサイズを確認してそれ以降のデータのみ書き込めばresumeしたことになるため、アプリケーションG1で書き込みログを用意していなくても、データの書き込みのresumeが容易に行なえる。<実施形態2>次に、本発明の第2の実施形態を、図9乃至図12を参照して説明する。図9と図12は、本発明の構成を示すブロック図であり、図10と図11は、本発明におけるファイルのデータ構造を示す図である。[構成]本実施形態におけるファイルシステムは、ファイルを格納する前に分割し、その分割データについて同一内容のデータは重複して記憶されることを排除する重複排除機能を有する。そして、このような重複排除機能を有するファイルシステムにて、以下に説明するロールバック機能を導入し、重複排除率の低下を防ぐ、というものである。図9に示すように、本実施形態における情報処理システムは、OSQ2と、ファイルシステムQ3と、クラスタ機能Q5と、ディスクQ4と、アプリケーションQ1と、を備えて構成されている。なお、本実施形態における情報処理システムは、図12に示すように、それぞれファイルシステムを構成する複数の情報処理装置がネットワークを介して接続された構成をとっている。上記クラスタ機能Q5は、負荷分散などのために、外部からのアクセスを他の装置に切り替えるために用いられる。切り替え前の装置でファイルシステム終了スクリプトR2を実行し、切り替え後の装置でファイルシステム起動スクリプトR1を実行することで切り替えを実現する。上記OSQ2は、実施形態1と同様に、起動ID払出処理部P0を有しており、システムの起動毎に更新される起動IDを払い出す。上記ファイルシステムQ3は、インタフェース部L0と、分割管理部N1と、ディスクアクセス部N2と、メタデータ記憶領域M1と、データキャッシュ領域M2と、保留データキャッシュ領域M3と、を備える。また、上記インタフェース部L0は、起動ID取得処理部L1、クローズ処理部L2、オープン処理部L3、読み込み処理部L4、書込み処理部L5、キャッシュ削除処理部L6を備える。以下、主に、実施形態1と異なる構成について詳述する。上記キャッシュ削除処理部L6は、上述したクラスタ機能Q5のファイルシステム終了スクリプトR2から呼び出され、キャッシュ削除処理を実行する。上記分割管理部N1は、書き込み時は特定のルールに従い1つのファイルを複数のファイルに分割してディスクQ4に格納し、読み込み時は複数のファイルに分割されたデータを元の1つのファイルとして読めるようにする処理を行なう。例えば、ファイルの書き込み時には、図10Aに示すファイルを、図10Bに示すように、ファイルの実データをa1、b1等の各分割ファイルに分割し、予め設定されたルールにて各分割ファイルを種類別に分割データD2としてまとめて、ディスクQ4に格納する。同時に、各分割ファイルに対応して、当該分割ファイルのディスクQ4に対する格納位置情報と当該分割ファイルの分割前におけるファイルに対する位置情報とを含む各メタデータからなる位置情報ファイルD1を生成して、ディスクQ4に格納する。そして、読み出し時には、位置情報ファイルD1の各メタデータに含まれる格納位置情報から当該各メタデータに対応する各分割ファイルを読み出し、元ファイルに対する位置情報に基づいてファイルを復元して読み出す。なお、位置情報ファイルD1の各エントリを構成する各メタデータは、上述したように、対応する分割ファイルの格納位置情報や分割前のファイルに対する位置情報の他、対応する分割ファイルの種類実データ/非データ、対応する分割ファイルのサイズ、CRCなどの情報も含んでいる。そして、分割管理部N1では、上述したメタデータに含まれる対応する分割ファイルの格納位置情報として、当該分割ファイルのデータ内容に固有なコンテンツアドレスを用いている。従って、同一のデータ内容の分割ファイルはコンテンツアドレスが同一となるため、1つの分割ファイルをディスクQ4に格納しておけばよい。つまり、同一データ内容の他の分割ファイルを書き込むときには、既に記憶されている同一データ内容の分割ファイルのコンテンツアドレスである格納位置を参照することで、重複記憶を排除することができる。上記保留データキャッシュ領域M3は、ファイルを分割するためのルールで判断ができなかったものを保留しておき、後から来るデータと合わせて判断できるようにするために用いられる一時的なキャッシュ領域である。なお、本実施形態におけるシステムは、実施形態1と比較して、以下の相違点がある。1.まず、アーカイブソフトなどのアプリケーションを使ってファイルシステムにファイル実データを格納すると、実データにアーカイブソフトで管理するための日付などの情報非データが付与されて格納する場合がある。すると、実データの更新がなくても、非データの更新が行なわれると、ファイルシステムにとっては別々のファイルとして扱う。このため、ファイルシステムが重複排除機能を有していた場合であっても、うまく重複排除できないことがある。かかる状況であっても効率よく重複排除を行うために、本実施形態では、実データと非データを分割して格納することにより、効率的に重複排除を行う機能を有する。なお、複数のファイルに分割して格納する技術はすでにあるため、その詳細な説明は省略する。2.本実施形態では、各分割ファイルの格納位置情報などを含む各メタデータに、対応する分割ファイルがコミットされたか否かを表すコミット情報と起動IDとを含む。3.実施形態1では、ファイルのメタデータであるinodeをメタデータ記憶領域F1に記憶するときに、inodeコピー処理部C0による処理により書き換えを行なってから記憶していたが、本実施形態では、分割して格納されているデータを1つのファイルのように見せるため、分割管理部N1で元のファイルの状態に復元してから見せるようにしている。4.本実施形態では、データキャッシュ領域M2のデータをディスクQ4に格納するときに、意味のある形で分割できるように保留データキャッシュ領域M3を備えている。5.本実施形態では、クラスタ機能Q5と、当該クラスタ機能Q5のファイルシステム終了スクリプトR2から呼び出されるキャッシュ削除処理部L6を備えている。[動作]次に、上述したシステムの動作の概略を説明する。まず、アプリケーションQ1がファイルの参照や更新を行なおうとした場合、ファイルが複数の分割ファイルに分割されてディスクQ4に格納されていると、分割ファイルを元に戻して処理しなければならない。そのため、インタフェース部L0からメタデータやデータにアクセスするためには、すべて分割管理部N1を通してアクセスを行なう。このとき、ファイルの実データである各分割ファイルに関する情報である各メタデータには、対応する分割データのディスクG4への書き込みに完了したか否かを表すコミット情報と起動IDとを記憶している。なお、ファイルを分割してディスクに書き込む目的として、データの暗号化を行なったり重複排除を行なったりすることが考えられるが、書き込まれたデータを処理するときに、データキャッシュ領域に十分データがたまっていないと、どのように分割するべきかの情報を得られない場合がある。そのような場合、保留データキャッシュ領域M3に分割できなかったデータを一時格納しておき、次に書き込まれるデータとあわせることで有効な分割を行うことができる。しかし、保留データキャッシュ領域M3にデータが存在している状態で、コミット要求があると、分割するのに必要な情報が足りていなくても、ディスクに書き込む必要がある。この場合、重複排除を行うファイルシステムであると、重複排除率が低下してしまう。また一般に、負荷分散のために別の装置からファイルシステムをアクセスできるようにすると、負荷分散前に利用していた装置でのアクセスをすべて停止する必要があり、このときにはコミット要求が来る。以上のように、負荷分散を繰り返し行なうだけで重複排除率が低下してしまうため、本実施形態では、負荷分散などでの切り替えを行なう場合にはコミットを行なわず、キャッシュデータをすべて捨てる処理を行う。次に、コミット情報の登録処理について説明する。本実施形態では、コミット要求があった場合、分割ファイルをディスクに書き込んだ後、その分割ファイルに対応するメタデータを更新して、当該メタデータにコミットしたことを示すフラグを立てることで、コミットが完了した旨を表すコミット情報を登録する。例えば、図11Aの黒丸印に示すように、メタデータにコミット情報を登録する。次に、ロールバック処理について説明する。ディスクQ4からファイルを読むためには、当該ファイルに対応したメタデータ群からなる位置情報ファイルD1を参照する必要があるが、まず、位置情報ファイルD1内のメタデータ中の起動IDが、起動ID取得処理部L1にて取得した現在の起動IDと一致するか否かを調べる。一致しない場合には、障害発生前に行われたファイルの変更内容がコミットされていない場合が考えられるため、続いて、位置情報ファイルD1内の各メタデータ中のコミット情報を探す。このとき、位置情報ファイルD1の終端側からさかのぼって各メタデータ内のコミット情報を探す。なお、位置情報ファイルの各エントリである各メタデータを固定長にすることにより、コミット情報をすばやく確認することができる。そして、メタデータ記憶領域M1上に位置情報ファイルD1を展開するときには、最終コミットの地点以降のメタデータはないものとして扱う。つまり、位置情報ファイルD1内のメタデータからコミット情報を検出すると、当該コミット情報を検出したメタデータのうち位置情報ファイルD1の最後端側に位置するメタデータ以降のメタデータを0に変更し、この0となったメタデータに対応する分割ファイルも0に変更する。このとき、対応するメタデータがない分割ファイルも0に変更する。換言すると、オープン処理部L3、読み込み処理部L4等のインタフェース部L0は、図11Bに示すように、位置情報ファイルD1の先頭から見て、黒丸印であるコミット情報が含まれる最後方のメタデータに対応する分割ファイルまでで復元されるファイルを、アクセス可能とする。具体的に、図11Bの例では、点線部分のデータがないものとして扱われる。次に、キャッシュ削除処理について、図9及び図12を参照して説明する。1.負荷分散の切り替えのため、クラスタ機能Q5のファイルシステム終了スクリプトR2が実行される。2.ファイルシステム終了スクリプトR2は、インタフェース部L0のキャッシュ削除処理部L6による処理を呼び出す。3.キャッシュ削除処理部L6では、インタフェース部L0へのアクセスをすべて停止する。これは、アプリケーションQ1からの追加の書き込みやコミット要求を受けないようにするためである。4.アクセスがすべて停止した段階で、データキャッシュ領域M2のデータと保留データキャッシュ領域M3のデータをすべて削除する。つまり、ディスクQ4に書き込みを行わない。5.キャッシュのデータがすべて削除できたら、ファイルシステム終了スクリプトR2の残りの処理を実施する。これにより、ファイルシステムのアンマウントなどが行なわれる。6.負荷分散により切り替わる先の装置で、ファイルシステム起動スクリプトR1を実行する。これにより、ファイルシステムのマウントなどが行なわれる。以上により、保留データキャッシュ領域M3内にあったデータはディスクに書き込まれないことになり、分割できない状態で強制的にディスクQ4へ書き込む必要が無くなる。そのため、重複排除率の低下を防ぐことができる。また、切り替わる先の装置でデータのロールバックが実行されるため、データは保証されることになる。<付記>上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるファイルシステム等の構成を説明する。但し、本発明は、以下の構成に限定されない。付記1ファイルに対する処理を行うために、当該ファイルの実データと、当該ファイルの実データの格納位置情報を含むメタデータと、を一時的に記憶するキャッシュメモリと、前記キャッシュメモリ上のファイルの実データ及びメタデータを前記補助記憶装置に書き込む書込処理部と、メタデータに基づいてファイルの実データにアクセスするファイルアクセス部と、ファイルシステムが構築された情報処理装置自体から発行され、当該情報処理装置の起動毎に異なる起動識別情報を取得する起動識別情報取得部と、を備え、前記書込処理部は、ファイルの実データ及びメタデータを前記補助記憶装置に書き込むと共に、当該ファイルのメタデータに、情報処理装置自体から現在発行されている前記起動識別情報と、前記補助記憶装置に書き込みが完了したファイルの実データ部分を特定する書込完了済み情報と、を含めて前記補助記憶装置に記憶する機能を有する、ファイルシステム。付記2付記1に記載のファイルシステムであって、前記ファイルアクセス部は、ファイルへのアクセス時に当該ファイルのメタデータが前記キャッシュメモリに記憶されていない場合に、当該メタデータを前記補助記憶装置から前記キャッシュメモリに読み出して、当該メタデータ内の前記起動識別情報が情報処理装置自体から現在発行されている前記起動識別情報と異なる場合に、ファイルのメタデータ内の前記書込完了済み情報にて特定される実データ部分のファイルにアクセスする、ファイルシステム。付記3付記2に記載のファイルシステムであって、前記書込処理部は、ファイルのメタデータ内に、前記キャッシュメモリ上におけるファイルの実データのサイズを表すファイルサイズ情報を含めると共に、当該ファイルの前記補助記憶装置に対する書き込みが完了した実データ部分のサイズを前記書込完了済み情報として含めて、ファイルのメタデータを前記補助記憶装置に記憶し、前記ファイルアクセス部は、前記補助記憶装置から前記キャッシュメモリに読み出したファイルのメタデータ内の前記起動識別情報が情報処理装置自体から現在発行されている前記起動識別情報と異なり、当該メタデータ内の前記書込完了済み情報の値が当該メタデータ内の前記ファイルサイズ情報の値と異なる場合に、当該ファイルサイズに前記書込済み情報の値を上書きする、ファイルシステム。付記4付記3に記載のファイルシステムであって、前記ファイルアクセス部は、前記補助記憶装置から前記キャッシュメモリに読み出したファイルのメタデータ内の前記ファイルサイズ情報に対応するサイズの実データ部分のファイルにアクセスする、ファイルシステム。付記5付記2に記載のファイルシステムであって、前記書込処理部は、ファイルの実データを分割した分割ファイル毎に、当該分割ファイルの実データ、及び、当該分割ファイルの前記補助記憶装置に対する格納位置情報と当該分割ファイルの分割前のファイルに対する位置情報とを含むメタデータ、を前記補助記憶装置に書き込むと共に、当該分割ファイルのメタデータに、情報処理装置自体から現在発行されている前記起動識別情報と、当該分割ファイルの前記補助記憶装置に対する書き込みが完了したことを表す前記書込完了済み情報と、を含めて前記補助記憶装置に記憶する機能を有する、ファイルシステム。付記6付記5に記載のファイルシステムであって、前記ファイルアクセス部は、前記補助記憶装置から前記キャッシュメモリに読み出したファイルの分割ファイルに対応するメタデータ内の前記起動識別情報が情報処理装置自体から現在発行されている前記起動識別情報と異なる場合に、前記補助記憶装置から前記キャッシュメモリに読み出したファイルの各分割ファイルに対応する各メタデータのうち、ファイルの先頭から見て前記書込み完了済み情報が含まれている最後方のメタデータに対応する分割ファイルまでの実データ部分のファイルにアクセスする、ファイルシステム。付記7ファイルに対する処理を行うために、当該ファイルの実データと、当該ファイルの実データの格納位置情報を含むメタデータと、を一時的に記憶するキャッシュメモリを備え、ファイルシステムを構成する情報処理装置に、前記キャッシュメモリ上のファイルの実データ及びメタデータを前記補助記憶装置に書き込む書込処理部と、メタデータに基づいてファイルの実データにアクセスするファイルアクセス部と、ファイルシステムが構築された情報処理装置自体から発行され、当該情報処理装置の起動毎に異なる起動識別情報を取得する起動識別情報取得部と、を実現させると共に、前記書込処理部は、ファイルの実データ及びメタデータを前記補助記憶装置に書き込むと共に、当該ファイルのメタデータに、情報処理装置自体から現在発行されている前記起動識別情報と、前記補助記憶装置に書き込みが完了したファイルの実データ部分を特定する書込完了済み情報と、を含めて前記補助記憶装置に記憶する、ことを実現させるためのプログラム。付記8付記7に記載のプログラムであって、前記ファイルアクセス部は、ファイルへのアクセス時に当該ファイルのメタデータが前記キャッシュメモリに記憶されていない場合に、当該メタデータを前記補助記憶装置から前記キャッシュメモリに読み出して、当該メタデータ内の前記起動識別情報が情報処理装置自体から現在発行されている前記起動識別情報と異なる場合に、ファイルのメタデータ内の前記書込完了済み情報にて特定される実データ部分のファイルにアクセスする、プログラム。付記9ファイルに対する処理を行うために、当該ファイルの実データと、当該ファイルの実データの格納位置情報を含むメタデータと、を一時的に記憶するキャッシュメモリを備えたファイルシステムにて、前記キャッシュメモリ上のファイルの実データ及びメタデータを前記補助記憶装置に書き込み、メタデータに基づいてファイルの実データにアクセスすると共に、ファイルの実データ及びメタデータを前記補助記憶装置に書き込むときに、当該ファイルのメタデータに、ファイルシステムが構築された情報処理装置自体から現在発行されている当該情報処理装置の起動毎に異なる起動識別情報と、前記補助記憶装置に書き込みが完了したファイルの実データ部分を特定する書込完了済み情報と、を含めて前記補助記憶装置に記憶する、ファイル処理方法。付記10付記9に記載のファイル処理方法であって、ファイルへのアクセス時に、当該ファイルのメタデータが前記キャッシュメモリに記憶されていない場合に、当該メタデータを前記補助記憶装置から前記キャッシュメモリに読み出して、当該メタデータ内の前記起動識別情報が情報処理装置自体から現在発行されている前記起動識別情報と異なる場合に、ファイルのメタデータ内の前記書込完了済み情報にて特定される実データ部分のファイルにアクセスする、ファイル処理方法。"