(57)【特許請求の範囲】
【請求項１】
第1の記憶装置と、
前記第1の記憶装置への書き込み対象である、主記憶装置が記憶するデータを記憶する第2の記憶装置と、
書き込み命令の発行時間を管理する管理部と、
各データの管理データである各メタデータの前記第1の記憶装置への書き込み順序を、前記メタデータの管理関係を示す管理情報に基づいて決定する決定部と、
各メタデータを識別する識別子と各書き込み命令の発行時間とを対応付けて記憶する場合、決定した前記書き込み順序に基づき、書き込み命令の発行時間に対応して記憶された識別子により識別されるメタデータと、前記メタデータに対応する書き込み命令とを前記第2の記憶装置に順次記憶する割当部と、
前記書き込み命令の発行時間に到達した場合、到達した前記発行時間に対応する書き込み命令よりも前に前記第2の記憶装置に記憶されたメタデータを、前記第1の記憶装置に書き込む制御部を有するファイルシステム。
【請求項２】
前記割当部は、
少なくとも1つの発行時間と複数のメタデータの識別子とを対応付けて記憶する請求項1記載のファイルシステム。
【請求項３】
前記決定部は、
前記管理情報に基づき、第1のメタデータと、第2のメタデータと、前記第1メタデータ及び前記第2のメタデータに関連する第3のメタデータとを前記第1の記憶装置に書き込む書き込み順序を決定し、
前記割当部は、
前記管理部が管理する第1の発行時間と、前記第1のメタデータの識別子と前記第2のメタデータの識別子とを対応付けて記憶し、さらに、前記管理部が管理する第2の発行時間と前記第3のメタデータの識別子とを対応付けて記憶する請求項2記載のファイルシステム。
【請求項４】
前記ファイルシステムはさらに、
前記メタデータに対する処理の履歴を示す履歴データを生成する履歴部を有し、
前記割当部は、
前記メタデータの識別子が対応付けて記憶された発行時間よりも前の発行時間である対象発行時間と前記メタデータの履歴データの履歴識別子とを対応付けて記憶し、
前記割当部は、
決定した前記書き込み順序に基づき、前記対象発行時間と対応付けて記憶された履歴識別子により識別される履歴データと前記対象発行時間に対応する前記書き込み命令とを前記第2の記憶装置に順次記憶し、
前記制御部は、
前記対象発行時間に到達した場合、前記対象発行時間に対応する前記書き込み命令よりも前に前記第2の記憶装置に記憶されたメタデータと履歴データとを前記第1の記憶装置に書き込む請求項1記載のファイルシステム。
【請求項５】
第1の記憶装置と、前記第1の記憶装置への書き込み対象である、主記憶装置が記憶するデータを記憶する第2の記憶装置と、書き込み命令の発行時間を管理する管理部とを有するファイルシステムの制御方法において、
前記ファイルシステムが有する決定部が、各データの管理データである各メタデータの前記第1の記憶装置への書き込み順序を、前記メタデータの管理関係を示す管理情報に基づいて決定し、
前記ファイルシステムが有する割当部が、各メタデータを識別する識別子と各書き込み命令の発行時間とを対応付けて記憶する場合、決定した前記書き込み順序に基づき、書き込み命令の発行時間に対応して記憶された識別子により識別されるメタデータと、前記メタデータに対応する書き込み命令とを前記第2の記憶装置に順次記憶し、
前記ファイルシステムが有する制御部が、前記書き込み命令の発行時間に到達した場合、到達した前記発行時間に対応する書き込み命令よりも前に前記第2の記憶装置に記憶されたメタデータを、前記第1の記憶装置に書き込むファイルシステムの制御方法。
【請求項６】
第1の記憶装置と、前記第1の記憶装置への書き込み対象である、主記憶装置が記憶するデータを記憶する第2の記憶装置と、書き込み命令の発行時間を管理する管理部とを有するファイルシステムの制御プログラムにおいて、
前記ファイルシステムが有する決定部に、各データの管理データである各メタデータの前記第1の記憶装置への書き込み順序を、前記メタデータの管理関係を示す管理情報に基づいて決定させ、
前記ファイルシステムが有する割当部に、各メタデータを識別する識別子と各書き込み命令の発行時間とを対応付けて記憶する場合、決定した前記書き込み順序に基づき、書き込み命令の発行時間に対応して記憶された識別子により識別されるメタデータと、前記メタデータに対応する書き込み命令とを前記第2の記憶装置に順次記憶させ、
前記ファイルシステムが有する制御部に、前記書き込み命令の発行時間に到達した場合、到達した前記発行時間に対応する書き込み命令よりも前に前記第2の記憶装置に記憶されたメタデータを、前記第1の記憶装置に書き込ませるファイルシステムの制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルシステム、ファイルシステムの制御方法、および、ファイルシステムの制御プログラムに関する。
【背景技術】
【０００２】
ファイルサーバ等の情報処理装置が、例えば不揮発性の記憶装置(以下、二次記憶装置と適宜記す)にデータを書き込む場合、書き込み対象のデータとともに当該書き込み対象のデータを管理するメタデータ（例えば、特許文献１参照）を二次記憶装置に書き込む。この書き込みが終了する前に、例えば情報処理装置が異常終了すると、二次記憶装置に書き込まれたメタデータ間の整合性やメタデータ自体の整合性(以下、メタデータの整合性と適宜記す)が失われることがある。異常終了の発生後、情報処理装置は、メタデータの整合性が失われている場合は、メタデータの整合性を回復する処理を実行する。そこで、情報処理装置に異常終了が発生しても、メタデータの整合性を維持する技術が提案されている。メタデータの一貫性(整合性とも呼ぶ)の保証については、例えば特許文献２に記載されている。
【０００３】
かかる技術の一例について説明する。ここで、第1のデータ、第1のデータを管理する第1のメタデータ、第1のメタデータを管理する第2のメタデータを二次記憶装置に書き込む場合を想定する。かかる技術は、前記した書き込み順序を、データとメタデータとの管理関係、メタデータ間の管理関係に基づき決定する。そして、かかる技術は、決定した書き込み順序に従って、第1のデータ、第1のメタデータ、第2のメタデータを二次記憶装置に書き込む。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００４−５１３４２３号公報
【特許文献２】特開２００８−９７６１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
データ管理ソフトは、二次記憶装置にデータが書き込まれた後にアプリケーションソフトに制御を戻す。このアプリケーションソフトに制御を戻す時間を短縮するため、二次記憶装置に書き込むデータを一時的に記憶する例えば揮発性の記憶装置を、二次記憶装置の前段に設ける。以下、二次記憶装置の前段に設けられた記憶装置をキャッシュメモリと適宜記す。
【０００６】
情報処理装置のデータ管理ソフトは、例えばアプリケーションソフトから、主記憶装置に記憶されたデータを二次記憶装置に書き込むように指示を受けると、主記憶装置に記憶された、このデータとこのデータのメタデータとをキャッシュメモリに記憶する。そして、データ管理ソフトは、記憶が終了すると、記憶が終了した旨をアプリケーションソフトに通知し、アプリケーションソフトに制御を戻す。なお、主記憶装置に記憶されたデータは、以後、二次記憶装置に書き込まれる。
【０００７】
このように、キャッシュメモリにデータを記憶後、アプリケーションソフトに制御を戻すことで、アプリケーションソフトに制御を戻す時間を短縮する。なお、かかる短縮が可能なのは、キャッシュメモリの動作動作速度は、二次記憶装置の書き込み速度に比べて早いからである。
【０００８】
前記した技術が適用されたデータ管理ソフトが、第1のデータ、第1のメタデータ、第2のメタデータをこの順で二次記憶装置に書き込むと決定したと想定する。この想定の場合、データ管理ソフトは、第1のデータ、第1のメタデータ、第2のメタデータをこの順でキャッシュメモリに順次記憶する。第1のデータ、第1のメタデータ、第2のメタデータは、二次記憶装置に書き込まれるまでキャッシュメモリに一時的に記憶される。
【０００９】
しかし、例えば、二次記憶装置のディスクの回転待ちによる書き込み遅延を最小化するように、キャッシュメモリに記憶された第1のデータ、第1のメタデータ、第2のメタデータの二次記憶装置に対する書き込み順序が変更されることがある。かかる変更が生じると、データ管理ソフトが決定した順序に従って、キャッシュメモリに記憶された、第1のデータ、第1のメタデータ、および第2のメタデータが二次記憶装置に記憶されない。
【００１０】
そこで、データ管理ソフトは、二次記憶装置に対するデータの明示的な書き込みを指示する書き込み命令(I/Oバリア(I/O barrier)とも呼ぶ)を発行する。I/Oバリアにより、I/Oバリア発行前にキャッシュメモリに記憶されたデータは、確実に二次記憶装置に記憶される。
【００１１】
このI/Oバリアにより、第1のデータ、第1のメタデータ、第2のメタデータの順に、第1のデータ、第1のメタデータ、第2のメタデータが二次記憶装置に確実に書き込まれる。
【００１２】
しかし、I/Oバリアを頻繁に発行すると、通常、アプリケーションソフトに制御が戻るまでの時間が長くなる。その結果、アプリケーションソフトの実行速度が低下する。そこで、I/Oバリアの発行回数を抑制することが求められる。
【００１３】
本実施の形態の一つの側面は、記憶装置に対するデータの明示的な書き込みを指示する書き込み命令の発行回数を抑制することを目的とする。
【課題を解決するための手段】
【００１４】
本実施の形態の第１の側面は、第1の記憶装置と、前記第1の記憶装置への書き込み対象である、主記憶装置が記憶するデータを記憶する第2の記憶装置と、書き込み命令の発行時間を管理する管理部と、各データの管理データである各メタデータの前記第1の記憶装置への書き込み順序を、前記メタデータの管理関係を示す管理情報に基づいて決定する決定部と、各メタデータを識別する識別子と各書き込み命令の発行時間とを対応付けて記憶する場合、決定した前記書き込み順序に基づき、書き込み命令の発行時間に対応して記憶された識別子により識別されるメタデータと、前記メタデータに対応する書き込み命令とを前記第2の記憶装置に順次記憶する割当部と、前記書き込み命令の発行時間に到達した場合、到達した前記発行時間に対応する書き込み命令よりも前に前記第2の記憶装置に記憶されたメタデータを、前記第1の記憶装置に書き込む制御部を有するファイルシステムである。
【発明の効果】
【００１５】
第１の側面によれば、記憶装置に対する明示的なデータの書き込みを指示する書き込み命令の発行回数を抑制することができる。
【図面の簡単な説明】
【００１６】
【図１】図1は、本実施の形態における全体システムSYSのブロック図である。
【図２】図2は、図1のファイルサーバSVRのハードウェアブロック図である。
【図３】図3は、図1のファイルサーバSVRの第1のソフトウェアブロック図である。
【図４】図4は、ファイルとフォルダの階層構造を模式的に示した図である。
【図５】図5は、図4に示したファイルとフォルダの階層構造におけるファイルの管理関係を模式的に示した図である。
【図６】図6は、図5で説明したメタデータの管理関係を示す管理情報を示す図である。
【図７】図7は、書き込み順序、解放順序の保証の処理の流れを説明する第1のフロー図である。
【図８】図8は、書き込み順序、解放順序の保証の処理の流れを説明する第2のフロー図である。
【図９】図9は、書き込み順序、解放順序の保証の処理の流れを説明する第3のフロー図である。
【図１０】図10は、データの書き込み処理を具体的に説明する図である。
【図１１】図11は、書き込みスケジューリングを管理するスケジューリング情報を示す図である。
【図１２】図12は、データの解放処理を具体的に説明する図である。
【図１３】図13は、解放スケジューリングを管理するスケジューリング情報を示す図である。
【図１４】図14は、異なるメタデータがRAM102における同一ページに記憶されている状態を模式的に示した図である。
【図１５】図15は、第2のフォルダのメタデータ(更新前)FD2m'と最上位のメタデータTmとがRAM102のページPG2に記憶されている状態を模式的に示した図である。
【図１６】図16は、図14、図15で例示したメタデータの再スケジューリングを具体的に説明する図である。
【図１７】図17は、再スケジューリング後のスケジューリング情報を示す図である。
【図１８】図18は、図1のファイルサーバSVRの第2のソフトウェアブロック図である。
【図１９】図19は、ログの書き込み処理を具体的に説明する図である。
【図２０】図20は、再グルーピングした情報が更新されたスケジューリング情報を示す図である。
【発明を実施するための形態】
【００１７】
［第１の実施の形態］
図1は、本実施の形態における全体システムSYSのブロック図である。以下の図の説明において、同じ要素については同一の符号を付して、一度した説明を省略する。
【００１８】
全体システムSYSは、ネットワークNに接続された、第1の端末装置TA1〜第m(mは2以上の整数)の端末装置TAmと、大容量のデータの記憶処理を行うファイルサーバ装置SVRとを有する。ネットワークNは、例えばLAN(Local Area Network)である。以下、ファイルサーバ装置SVRをファイルサーバSVRと適宜記す。なお、図1の"…"は、端末装置の図示を省略していることを示す。
【００１９】
第1の端末装置TA1〜第mの端末装置TAmは、ネットワークNを介しファイルサーバSVRにアクセスし、例えばファイルサーバSVRに大容量のデータを記憶する。
【００２０】
[ファイルサーバのハードウェアブロック]
図2は、図1のファイルサーバSVRのハードウェアブロック図である。ファイルサーバSVRは、バスBに接続された、CPU101と、RAM102と、ROM103と、通信装置104と、外部接続インターフェイス装置105とを有する。なお、CPUは"Central Processing Unit"の略語、RAMは"Random Access Memory"の略語、ROMは、"Read Only Memory"の略語である。
【００２１】
ファイルサーバSVRは、さらに、バスBに接続された、I/Oコントローラ106と、揮発性内部バッファ107と、第1の二次記憶装置1081〜第n(nは2以上の整数)の二次記憶装置108nとを有する。このファイルサーバSVRにより、ファイルシステムが形成される。
【００２２】
CPU101は、ファイルサーバSVRを制御する中央演算処理装置である。主記憶装置であるRAM102は、CPU101が実行する処理や、ファイル管理ソフトSFが実行する各ステップにおいて生成(算出)されたデータなどを一時的に記憶する。例えば、RAM102は、データや、データのメタデータを記憶する。RAM102は、例えばDRAM(Dynamic Random Access Memory)などの半導体メモリである。ファイル管理ソフトSFは、例えばデータの書き込み処理を制御する。
【００２３】
ROM103は、各種設定情報を記憶する。通信装置104は、例えばNIC(Network Interface Card)を有し、LANケーブルを介してネットワークNに接続し通信する。
【００２４】
外部接続インターフェイス装置105は、外部の各種装置と接続するためのインターフェイスとして機能する装置である。外部接続インターフェイス装置105は、例えば、カードスロットや、USB(Universal Serial Bus)のポートを有する。外部接続インターフェイス装置105は、外部記憶媒体MD1と接続する。
【００２５】
外部記憶媒体MD1は、USBメモリなどの可搬型の不揮発性記憶装置である。なお、外部接続インターフェイス装置105を介して、記憶媒体に記憶されたデータを読み取る記憶媒体読み取り装置(図示しない)と接続する構成としても良い。この記憶媒体(記録媒体とも呼ばれる)は、例えば、CD-ROM(Compact Disc Read Only Memory)、DVD(Digital Versatile Disc)などの可搬型記憶媒体である。
【００２６】
I/Oコントローラ106は、第1の二次記憶装置1081〜第nの二次記憶装置108nに対する各種データの書き込みを指示する制御コマンドを受信し、この制御コマンドに基づき、各種データの書き込みを実行する。なお、各種データは、例えば、図5で説明するファイルのデータ、フォルダのデータ、メタデータである。
【００２７】
I/Oコントローラ106は、揮発性内部バッファ107に記憶されたデータを第1の二次記憶装置1081〜第nの二次記憶装置108nに書き込む制御を行う制御部の一例である。なお、I/Oコントローラ106を、ハードウェアでなく、ソフトウェア手段で実現してもよい。
【００２８】
揮発性内部バッファ107は、第1の二次記憶装置1081〜第nの二次記憶装置108nの前段に設けられている。揮発性内部バッファ107は、第1の二次記憶装置1081〜第nの二次記憶装置108nの何れかに書き込まれる、RAM102に記憶されたデータを一時的に記憶する。揮発性内部バッファ107は、揮発性の書き込みキャッシュとも呼ばれる。揮発性内部バッファ107は、第2の記憶装置の一例である。
【００２９】
第1の二次記憶装置1081〜第nの二次記憶装置108nは、大容量のデータを記憶可能な二次記憶装置である。二次記憶装置は、例えばハードディスクドライブ(HDD：Hard Disk Drive)や、ソリッドステートドライブ(SSD:Solid State Drive)などの大容量記憶装置である。第1の二次記憶装置1081〜第nの二次記憶装置108nは、第1の記憶装置の一例である。
【００３０】
例えば、第1の二次記憶装置1081は、ファイル管理ソフトSFの実行ファイル(プログラムファイルとも呼ぶ)を記憶している。CPU101は、ファイルサーバSVRの起動時に、第1の二次記憶装置1081からファイル管理ソフトSFの実行ファイルを読み出し、RAM102に展開する。なお、この実行ファイルを外部記憶媒体MD1に記憶してもよい。図2では、CPU101がファイル管理ソフトSFをRAM102に展開している状態を模式的に示す。なお、図2の"…"は、二次記憶装置の図示を省略していることを示す。
【００３１】
RAM102は、ファイルサーバSVRの利用者が二次記憶装置(例えば、第1の二次記憶装置1081)に記憶させたいデータ(以下、ファイルと適宜記す)と、このデータを管理するためのデータ(以下、メタデータと適宜記す)などの各種データを記憶する。なお、メタデータは、他のメタデータも管理する。
【００３２】
次に、二次記憶装置に書き込まれるデータや二次記憶装置から読み込まれたデータが記憶される、RAM102に割り当てられた領域(以下、バッファ領域と適宜記す)について簡単に説明する。書き込み用に割り当てられたRAM102のバッファ領域は、RAM102の空きメモリに余裕がある限り、そのままRAM102に保持されて、ファイルの内容やメタデータの内容を参照するシステムコールの発行時にも使用される。また、読み込み用に割り当てられた、RAM102のバッファ領域は、RAM102の空きメモリに余裕がある限り、そのままRAM102に保持されて、このバッファ領域に記憶されたデータを更新するシステムコールの発行時にも使用される。なお、システムコールは、オペレーティングシステム(OS：Operating System)がアプリケーションソフト(図示しない)に提供するサービスである。
【００３３】
つまり、RAM102のバッファ領域に記憶されたデータと、二次記憶装置に記憶された、このデータに対応するデータとの間には、このバッファ領域がRAM102に保持されている期間中には、一対一の対応関係がある。なお、この関係は、CPUのキャッシュメモリの特定箇所に主記憶装置の特定のアドレスのデータがキャッシュされている時と類似した関係である。前記したバッファは「ファイルシステムのバッファキャッシュ」と呼ばれる場合がある。
【００３４】
[ファイルサーバのソフトウェアブロック]
図3は、図1のファイルサーバSVRの第1のソフトウェアブロック図である。ファイル管理ソフトSFは、タスク受信部11と、グルーピング部(決定部)12と、書き込み順序保証部(割当部)13と、I/Oバリア管理部14と、時間管理部15とを有する。以下、グルーピング部(決定部)12をグルーピング部12と適宜記し、書き込み順序保証部(割当部)13を書き込み順序保証部13と適宜記す。なお、ハードウェア要素である第1の二次記憶装置1081〜第nの二次記憶装置108nを一点鎖線で示している。
【００３５】
タスク受信部11は、ファイル、フォルダ(ディレクトリとも呼ぶ)の書き込みタスク、または、ファイル、フォルダの削除タスクを受信する。グルーピング部12は、各データの管理データである各メタデータの例えば第1の二次記憶装置1081への書き込み順序を、メタデータの管理関係を示す管理情報に基づいて決定する。この管理情報は、図6で説明する。
【００３６】
書き込み順序保証部13は、グルーピング部12が決定した書き込み順序と前記した情報とに基づき、メタデータの識別子をI/Oバリアの発行時間と対応付けて、RAM102に記憶する。この記憶において、書き込み順序保証部13は、少なくとも1つの発行時間と複数のメタデータの識別子とを対応付けてRAM102に記憶する。
【００３７】
書き込み順序保証部13は、決定した書き込み順序に基づき、I/Oバリアの発行時間に対応して記憶された識別子により識別されるメタデータと、メタデータに対応するI/Oバリアとを揮発性内部バッファ107に順次記憶する。なお、I/Oバリアは、書き込み命令の一例である。
【００３８】
図2のI/Oコントローラ106は、I/Oバリアの発行時間に到達した場合、到達した発行時間に対応するI/Oバリアよりも前に揮発性内部バッファ107に記憶されたメタデータを、例えば第1の二次記憶装置1081に書き込む。
【００３９】
I/Oバリア管理部14は、I/Oバリアの発行と解放を行う。時間管理部15は、I/Oバリアの発行時間を管理する。なお、図3の"…"は、二次記憶装置の図示を省略していることを示す。
【００４０】
[メタデータの整合性確認、回復]
次に、メタデータの整合性確認、回復について説明する。アプリケーションソフト(図示しない)は、RAM102に記憶された各種データを二次記憶装置に記憶する指示を行う場合、データを二次記憶装置に書き込むための書き込み用のシステムコール(以下、ライト用システムコールと適宜記す)を呼び出す。
【００４１】
ライト用のシステムコールは、RAM102に記憶されている、ファイル、メタデータなどのデータを二次記憶装置に書き込む。この書き込みが終了する前に、ファイルサーバSVRが異常終了すると、二次記憶装置に書き込まれたメタデータの整合性が失われることがある。そこで、ファイルサーバSVRが異常終了した後に再起動すると、ファイル管理ソフトSFは、メタデータの整合性を確認し、整合性が失われている場合には、失われた整合性を回復する。なお、この異常終了の原因は、例えば、システム電源を含むハードウェアの障害や、ファイルサーバSVRが実行しているオペレーティングシステムの障害である。
【００４２】
このように、メタデータの整合性を確認し、不整合があれば回復する処理は、例えばLinux(登録商標)を含むUnix(登録商標)系のオペレーティングシステムではfsck("file system consistency check ")と呼ばれる。また、かかる処理は、Windows(登録商標)と呼ばれるオペレーティングシステムではchkdsk("check disc")やscandiskと呼ばれる。また、MacOS(登録商標)と呼ばれるオペレーティングシステムではDisk First Aidと呼ばれる。
【００４３】
前記したメタデータ整合性確認、回復処理は、メタデータが記憶されている二次記憶装置の領域全体を検索しメタデータ間の関係を相互に照合する。そのため、二次記憶装置の大容量化に伴い、急速に処理時間が増大する傾向がある。
【００４４】
そこで、このメタデータの整合性を維持する技術が様々提案されている。この技術の一例として、いわゆる"Soft Updates"という技術(以下、メタデータの整合性維持技術と適宜記す)がある。なお、"Soft Updates"は、FreeBSD(登録商標)と呼ばれるオペレーティングシステムのファイル管理方式であるFFS("Fast File System ")で利用されている。次に、図4、図5を参照して、メタデータの整合性維持技術について説明する。
【００４５】
[メタデータの整合性維持技術]
(ファイルとフォルダの階層構造)
図4は、ファイルとフォルダの階層構造を模式的に示した図である。第1のファイルFL1は、第1のデータを格納するファイルである。第2のファイルFL2は、第2のデータを格納するファイルである。第1のフォルダFD1は、第1のファイルFL1、第2のファイルFL2を格納するフォルダである。第2のフォルダFD2は、第1のフォルダFD1を格納するフォルダである。ファイル管理ソフトSFは、図4に示す第2のフォルダFD2、第1のフォルダFD1、第1のファイルFL1、第2のファイルFL2を、例えば、図2、図3の第1の二次記憶装置1081に記憶する。図4に示すように、ファイル管理ソフトSFは、各フォルダを階層構造で管理し、第2のフォルダFD2の直下に第1のフォルダFD1を格納し、第1のフォルダFD1内に、第1のファイルFL1、第2のファイルFL2を格納する。なお、第2のフォルダFD2の上階層にも他のフォルダがあるが、説明を簡明にするため、その図示を省略する。
【００４６】
(ファイルの管理関係)
図5は、図4に示したファイルとフォルダの階層構造におけるファイルの管理関係を模式的に示した図である。図5の下側に示した、第1のファイルのデータFL1dは、図4の第1のファイルFL1のデータであり、第2のファイルのデータFL2dは、図4の第2のファイルFL2のデータである。
【００４７】
第1のファイルのメタデータFL1mは、第1のファイルのデータFL1dのメタデータである。なお、メタデータは、例えばアイノード(inode)と呼ばれるデータ構造で管理されている管理情報を含む。
【００４８】
第1のフォルダのデータFD1dは、図4の第1のフォルダFD1のフォルダデータ(ディレクトリデータとも呼ぶ)である。フォルダのフォルダデータは、例えばこのフォルダ内に格納されているファイルの識別情報(例えば、ファイルの名前)と、このファイルのメタデータを一意に参照する参照記号(アイノード番号とも呼ぶ)とが対応付けられた情報を含む。なお、フォルダのフォルダデータは、このフォルダやこのフォルダの親フォルダのメタデータを一意に参照する参照記号を含む。
【００４９】
第1のフォルダのメタデータFD1mは、第1のフォルダのデータFD1dのメタデータである。第2のフォルダのデータFD2dは、図4の第2のフォルダFD2のフォルダデータである。第2のフォルダのメタデータFD2mは、第2のフォルダのデータFD2dのメタデータである。
【００５０】
最上位のメタデータTmは、全てのメタデータを管理するメタデータである。図5の例では、最上位のメタデータTmは、第2のフォルダのメタデータFD2m、第1のフォルダのメタデータFD1m、第1のファイルのメタデータFL1m、第2のファイルのメタデータFL2mを管理するメタデータである。なお、最上位のメタデータTmに、二次記憶装置におけるブロック単位の記憶領域が使用中または不使用かを示す情報が含まれていてもよい。
【００５１】
図5において、ファイルのデータやフォルダのデータが、メタデータに管理されている状態を点線の矢印で模式的に示す。点線の矢印の終点(矢印が示す先とも呼ぶ)が、管理されているファイルのデータやフォルダのデータを示す。また、点線の矢印の始点(矢印が示す元とも呼ぶ)が、このファイルのデータやフォルダのデータを管理するメタデータを示す。
【００５２】
また、第1のフォルダのメタデータFD1m、第2のフォルダのメタデータFD2m、第1のファイルのメタデータFL1m、第2のファイルのメタデータFL2mが、最上位のメタデータTmにより管理されている状態を実線の矢印で示す。実線の矢印の始点が、最上位のメタデータTmを示し、実線の矢印の終点が、最上位のメタデータTmにより管理されているメタデータを示す。
【００５３】
また、メタデータ間における一点鎖線の矢印は、後記するデータの書き込み順序、解放順序を決定するために参照される依存関係を示す。この依存関係は、フォルダ階層における階層関係に対応しており、例えば、第1のフォルダFDよりも上位階層にある第2のフォルダFD2のメタデータFD2mは、第1のフォルダのメタデータFD1mよりも依存関係において上位であるとする。また、例えば、第1のファイルのメタデータFL1mと第2のファイルのメタデータFL2mとは、第1のフォルダのメタデータFD1mとの依存関係において、下位であり、かつ、同レベルである。
【００５４】
ここで、一点鎖線の矢印の始点は、メタデータ間の依存関係において上位にあるメタデータを示す。一点鎖線の矢印の終点は、メタデータ間の依存関係において下位にあるメタデータを示す。例えば、第2のフォルダのメタデータFD2mと第1のフォルダのメタデータFD1mとの間の依存関係において、第2のフォルダのメタデータFD2mは、第1のフォルダのメタデータFD1mの上位の関係にあることを示す。
【００５５】
なお、図5においては、第2のフォルダFD2の上階層における、フォルダデータや、このフォルダデータのメタデータについては、説明を簡明にするため、その図示を省略している。また、図5の図面上下を示す破線矢印や、矢印近傍に記載した"書き込み"、"削除"については、後記する。
【００５６】
(管理情報)
ファイル管理ソフトSFは、前記したメタデータの管理関係を示す管理情報をRAM102に記憶する。図6は、図5で説明したメタデータの管理関係を示す管理情報を示す図である。なお、管理情報は、管理構造体とも呼ばれる。図6において、管理情報をテーブル形式で示している。図6において、管理関係テーブルTBL1は、上位のメタデータ識別子欄と、下位のメタデータ識別子欄とを有する。管理関係テーブルTBL1は、メタデータの管理関係と依存関係と示す情報を合わせて含む。
【００５７】
上位のメタデータ識別子欄は、図5で説明した依存関係において上位にあるメタデータの識別子を記憶する。下位のメタデータ識別子欄は、図5で説明した依存関係において、上位のメタデータ識別子で識別されるメタデータの下位にあるメタデータの識別子を記憶する。依存関係において上位にあるメタデータは、依存関係において下位にあるメタデータを管理する場合もある。例えば、最上位のメタデータTmは、下位の第2のフォルダのメタデータFD2mを管理する。なお、最上位のメタデータTmについては、図6の管理情報においては、下位のメタデータを第2のフォルダのメタデータFD2mとする。
【００５８】
図6の例では、説明の便宜のため、上位のメタデータ識別子欄、下位のメタデータ識別子欄に、識別子として、図5で示したメタデータの符号を記憶する。メタデータの識別子は、例えば、このメタデータがRAM102に記憶されている場合における、このメタデータのRAM102における記憶位置を特定するための情報(例えば、ポインタとオフセット)に対応している。ファイル管理ソフトSFは、メタデータの識別子を参照し、RAM102に記憶されたこのメタデータにアクセスする。
【００５９】
図5の例では、管理関係テーブルTBL1は、上から2番目の行と上位のメタデータ識別子欄とが交わるセルに、最上位のメタデータTmの識別子"Tm"を記憶する。管理関係テーブルTBL1は、上から2番目の行と下位のメタデータ識別子欄とが交わるセルに、上位のメタデータ識別子"Tm"で識別される最上位のメタデータTmのすぐ下位にある第2のフォルダのメタデータFD2mの識別子"FD2m"を記憶する。
【００６０】
なお、ファイル管理ソフトSFは、ファイルのデータとこのデータのメタデータとの管理関係や、フォルダデータと、このフォルダデータのメタデータとの管理関係も管理情報としてRAM102に記憶している。
【００６１】
(ファイルまたはフォルダの書き込み)
ファイル管理ソフトSFは、前記メタデータの整合性維持技術に基づき、ファイルまたはフォルダを二次記憶装置(例えば、第1の二次記憶装置1081)に書き込む。以下、ファイル管理ソフトSFは、各種データを第1の二次記憶装置1081に書き込む場合を例示する。
【００６２】
ファイル管理ソフトSFは、ファイルまたはフォルダを書き込む場合、書き込みに必要なデータ量のデータブロックを割り当て、割り当てたデータブロックにファイルまたはフォルダを書き込む。なお、以下の説明において、データブロックは、第1の二次記憶装置1081におけるデータブロックである。
【００６３】
そして、ファイル管理ソフトSFは、このファイルまたはフォルダ自体を管理するメタデータを初期化する。そして、ファイル管理ソフトSFは、書き込んだファイルを格納するフォルダに対応して、または、書き込んだフォルダの親フォルダに対応して、初期化したメタデータを参照するエントリ(例えば、フォルダデータ)を書き込む。なお、メタデータの初期化は、メタデータの生成や、メタデータの更新を含む。
【００６４】
すなわち、ファイル管理ソフトSFは、ファイルまたはフォルダの書き込みにおいて、複数のデータ(メタデータも含む)間の管理において階層関係がある場合は、管理される側のデータを管理するデータよりも先に更新し、書き込む。このように、管理される側のデータを管理するデータよりも、先に更新し、書き込む状態を、図5に示す図面下から上に示す破線矢印("書き込み"参照)で示す。
【００６５】
例えば、図4に示した階層構造を有するファイルとフォルダを第1の二次記憶装置1081に書き込む場合を例示して説明する。以下の説明において、データの書き込みの場合、データの書き込みの前に、このデータに対応するデータブロックが割り当てられているとする。ファイル管理ソフトSFは、第1のファイルFL1、第2のファイルFL2を第1の二次記憶装置1081に書き込む。ファイル管理ソフトSFは、第1のファイルのメタデータFL1m、第2のファイルのメタデータFL2mを初期化し、初期化した第1のファイルのメタデータFL1m、第2のファイルのメタデータFL2mを第1の二次記憶装置1081に書き込む。
【００６６】
次いで、ファイル管理ソフトSFは、第1のフォルダのデータFD1dを第1の二次記憶装置1081に書き込む。そして、ファイル管理ソフトSFは、第1のフォルダのメタデータFD1mを初期化し、初期化した第1のフォルダのメタデータFD1mを第1の二次記憶装置1081に書き込む。
【００６７】
次いで、ファイル管理ソフトSFは、第2のフォルダのデータFD2dを第1の二次記憶装置1081に書き込む。そして、ファイル管理ソフトSFは、第2のフォルダのメタデータFD2mを初期化し、初期化した第2のフォルダのメタデータFD2mを第1の二次記憶装置1081に書き込む。最後に、ファイル管理ソフトSFは、前記したメタデータの初期化が反映されるように、最上位のメタデータTmを更新し、更新した最上位のメタデータTmを第1の二次記憶装置1081に書き込む。
【００６８】
以上説明したように、ファイルまたはフォルダの書き込みにおいて、ファイル管理ソフトSFは、管理される側のデータを先に書き込む理由は以下の通りである。すなわち、ファイル管理ソフトSFが、例えば、前記した例示とは逆に、第2のフォルダのメタデータFD2mを先に初期化し、初期化した第2のフォルダのメタデータFD2mを第1の二次記憶装置1081に書き込む場合を想定する。そして、この書き込みの次に、ファイル管理ソフトSFが、第2のフォルダのデータFD2dを第1の二次記憶装置1081に書き込む場合を想定する。そして、第2のフォルダのデータFD2dが書き込まれる前に、ファイルサーバSVRが異常終了すると想定する。
【００６９】
この異常終了後、再起動した場合において、第2のフォルダのメタデータFD2mにより管理されている第1の二次記憶装置1081の記憶領域に、どのようなデータが記憶されるのか不明になる。すなわち、メタデータの不整合が発生する。かかるメタデータの不整合を防止するため、ファイルまたはフォルダの書き込みにおいて、ファイル管理ソフトSFは、管理される側のデータを先に書き込む。
【００７０】
(ファイルまたはフォルダの削除)
ファイル管理ソフトSFが、前記メタデータの整合性維持技術に基づき、ファイルまたはフォルダを削除する場合について説明する。以下の説明において、データの解放は、このデータを二次記憶装置(例えば、第1の二次記憶装置1081)から削除することを含む。
【００７１】
ファイル管理ソフトSFは、ファイルを削除するときは、削除するファイルを格納するフォルダのフォルダデータから、削除するファイルのメタデータへの参照(参照記号)を消去する。また、ファイル管理ソフトSFは、フォルダを削除するときは、削除するフォルダを格納する親フォルダのフォルダデータから、削除するフォルダのメタデータへの参照を消去する。そして、ファイル管理ソフトSFは、このメタデータ自体を解放し、このメタデータにより管理されていたデータブロックを解放する。
【００７２】
すなわち、ファイル管理ソフトSFは、ファイルまたはフォルダの削除において、複数のデータ(メタデータも含む)間の管理において階層関係がある場合は、管理される側のデータを管理するデータよりも、後で、更新、解放する。このように、管理される側のデータを管理するデータよりも、後で、更新、解放する状態を、図5に示す図面上から下に示す破線矢印("削除"参照)で示す。
【００７３】
例えば、ファイル管理ソフトSFが、作成した第1のファイルFL1、第2のファイルFL2、第1のフォルダFD1を第1の二次記憶装置1081から削除する場合を例示して説明する。
【００７４】
まず、ファイル管理ソフトSFは、最上位のメタデータTmについて、第1のフォルダのメタデータFD1m、第1のファイルのメタデータFL1m、第2のファイルのメタデータFL2mの管理情報を削除する更新し、RAM102に記憶する。そして、ファイル管理ソフトSFは、第1のフォルダFD1の削除を反映するように第2のフォルダのデータFD2dを更新し、更新後の第2のフォルダのデータFD2dをRAM102に記憶する。そして、ファイル管理ソフトSFは、第2のフォルダのデータFD2dの更新を反映するように第2のフォルダのメタデータFD2mを更新し、更新後の第2のフォルダのメタデータFD2mをRAM102に記憶する。
【００７５】
かかる更新後、ファイル管理ソフトSFは、更新後の最上位のメタデータTm、更新後の第2のフォルダのメタデータFD2m、第2のフォルダのデータFD2dをこの順で第1の二次記憶装置1081に書き込む。
【００７６】
そして、ファイル管理ソフトSFは、第1のフォルダのメタデータFD1mを解放し、次に、第1のフォルダのデータFD1dを解放する。そして、ファイル管理ソフトSFは、第1のファイルのメタデータFL1m、第2のファイルのメタデータFL2mを解放する。そして、ファイル管理ソフトSFは、第1のファイルのデータFL1d、第2のファイルのデータFL2dを解放する。
【００７７】
ファイルまたはフォルダの削除において、管理される側のメタデータを、後で更新、解放する理由は以下の通りである。すなわち、例えば、前記した例示とは逆に、第1のフォルダのデータFD1dを先に第1の二次記憶装置1081から解放し、第1のフォルダのメタデータFD1mを後で第1の二次記憶装置1081から解放する場合を想定する。そして、第1のフォルダのメタデータFD1mが解放される前に、ファイルサーバSVRが異常終了すると想定する。この異常終了後、再起動した場合において、既に解放された第1のフォルダのデータFD1dが書き込まれていた第1の二次記憶装置1081の記憶領域に他のデータが書き込まれる可能性がある。この書き込みにおいて、この他のデータを管理する他のメタデータも生成される。すると、第1のフォルダのメタデータFD1mと、他のメタデータが同時に、第1の二次記憶装置1081の同じ記憶領域を管理することになる。すなわち、メタデータの不整合が発生する。
【００７８】
以上説明したように、ファイル管理ソフトSFは、書き込み順序、解放順序を制御することで、異常終了後に再起動した場合であっても、二次記憶装置に書き込み済のメタデータの整合性が保たれるようにする。すなわち、前記制御により、二次記憶装置におけるデータブロックや、二次記憶装置に書き込まれたデータが、2つの異なるメタデータにより管理されている状態、換言すれば、メタデータの不整合が、二次記憶装置において発生しないようにしている。
【００７９】
[書き込み、開放順序の変更]
ファイル管理ソフトSFは、メタデータの整合性を維持するため、前記メタデータの整合性維持技術に基づき、データの書き込み、解放順序を決定し、決定した順序に従ってデータの書き込み、解放を行う。ファイル管理ソフトSFは、データを二次記憶装置に書き込むためのライト用コマンドをI/Oコントローラ106に出力する。また、ファイル管理ソフトSFは、二次記憶装置に記憶されたデータを解放するための解放用コマンドをI/Oコントローラ106に出力する。なお、データの解放用コマンドは、二次記憶装置においてこのデータが記憶されている領域に"0"を書き込むコマンドであってもよい。
【００８０】
前記ファイルまたはフォルダの書き込みで説明した例の場合、ファイル管理ソフトSFは、以下の各種データを順次、二次記憶装置に書き込むように指示するライト用コマンドをI/Oコントローラ106に出力する。すなわち、ファイル管理ソフトSFは、以下の各種データをI/Oコントローラ106に出力する。
【００８１】
この順とは、すなわち、第1のファイルのデータFL1d、第2のファイルのデータFL2d、第1のファイルのメタデータFL1m、第2のファイルのメタデータFL2m、第1のフォルダのデータFD1d、第1のフォルダのメタデータFD1mの順である。さらに、この順は、第2のフォルダのデータFD2d、第2のフォルダのメタデータFD2m、更新した最上位のメタデータTmのライト用コマンドの順である。
【００８２】
I/Oコントローラ106は、出力された各種データを受信し、揮発性内部バッファ107に記憶(バッファリング)する。そして、I/Oコントローラ106は、受信した各種データを揮発性内部バッファ107に記憶すると、記憶が終了した旨を示す終了コマンドをファイル管理ソフトSFに出力する。ファイル管理ソフトSFは、終了コマンドを受信すると、次の処理の実行を行う。
【００８３】
ここで、揮発性内部バッファ107に順次記憶された複数の各種データは、記憶された順に第1の二次記憶装置1081に書き込まれるとは限らない。I/Oコントローラ106は、例えば二次記憶装置のディスクの回転待ちによる書き込み遅延を最小化するように、この複数の各種データの書き込み順序を変更する。そして、I/Oコントローラ106は、変更した書き込み順序に従って、複数の各種データを第1の二次記憶装置1081に順次書き込む。
【００８４】
前記の例では、I/Oコントローラ106は、ファイル管理ソフトSFが意図した書き込み順序とは全く逆に、データを書き込む可能性がある。例えば、I/Oコントローラ106は、1番目に、最上位のメタデータTm、2番目に、第2のフォルダのメタデータFD2m、3番目に、第2のフォルダのデータFD2dを第1の二次記憶装置1081に書き込む可能性がある。そのため、ファイル管理ソフトSFが決定した順序に従ってデータの書き込みが行われないことがある。同じく、データの解放順序も、データの書き込み順序と同様に変更されることがある。
【００８５】
[書き込み順序、解放順序の保証]
ファイル管理ソフトSFが決定した順序に従って確実にデータの書き込み、解放が行われるためには、ファイル管理ソフトSFは、以下の処理を行う必要がある。すなわち、ファイル管理ソフトSFは、前記したように、第1の二次記憶装置1081に対する明示的な書き込みを指示する書き込み命令(I/Oバリア)をI/Oコントローラ106に発行する。確かに、各種データの後にI/Oバリアを発行すれば、ファイル管理ソフトSFが決定した順序に従ってデータの書き込み、解放が行われる。
【００８６】
しかし、各種データの後にI/Oバリアを発行するなど、I/Oバリアを頻繁に発行すると、I/Oバリア発行によるファイルサーバSVRの処理負荷が増加する。その結果、アプリケーションソフトの実行速度が低下する。
【００８７】
また、ファイル管理ソフトSFが、I/Oバリアの発行後に通知されるI/Oバリアの終了割り込みを受信した後に、使用者プログラムに制御を戻す場合、アプリケーションソフトに制御が戻るまでの時間が長くなる。その結果、アプリケーションソフトの実行速度が低下する。このように、アプリケーションソフトに制御が戻るまでの時間が長くなるのは、第1の二次記憶装置1081の書き込み速度は、揮発性内部バッファ107の動作速度に比べて遅いからである。
【００８８】
特に、多数のファイル、フォルダの書き込み処理、削除処理が実行されると、多数のI/Oバリアが発行され、I/Oバリア発行によるファイルサーバSVRの処理負荷が大幅に増加する。その結果、アプリケーションソフトの実行速度が大幅に遅くなり、各種処理(例えば、I/O処理)も大幅に遅延する。このように、アプリケーションソフトの実行速度が大幅に低下すると、情報処理システムの実用性が失われかねない。
【００８９】
しかし、I/Oバリアの発行の影響により各種処理が遅延することへの対策は、メタデータの整合性維持技術には含まれていない。そこで、I/Oバリアの発行回数を減らすことが望まれる。
【００９０】
[書き込み順序、解放順序の保証の処理]
そこで、本実施の形態のファイルサーバSVRは、I/Oバリアの発行回数を抑制しつつ、書き込み順序、解放順序の保証を行う。例えば、グルーピング部12は、メタデータの管理関係を示す管理情報に基づき、第1のメタデータと、第2のメタデータと、第1のメタデータ及び第2のメタデータに関連する第3のメタデータとを第1の二次記憶装置1081に書き込む順序を決定する。第3のメタデータは、例えば、第1のメタデータと、第2のメタデータとを管理するメタデータである。また、第1のメタデータと、第2のメタデータとに関連する第3のメタデータは、図5で説明したメタデータ間の依存関係において、第1、第2のメタデータよりも上位または下位にあるメタデータである。例えば、図5において、第2のフォルダFD2のメタデータFD2mは、第1のフォルダのメタデータFD1mに関連するメタデータである。
【００９１】
次いで、書き込み順序保証部13は、第1のI/Oバリアの第1の発行時間と、第1のメタデータの識別子と第2のメタデータの識別子とを対応付けてRAM102に記憶する(図11参照)。さらに、書き込み順序保証部13は、第2のI/Oバリアの第2の発行時間と第3のメタデータの識別子とを対応付けてRAM102に記憶する(図11参照)。
【００９２】
書き込み順序保証部13は、決定した書き込み順序に基づき、第1のI/Oバリアの第1の発行時間と対応付けて記憶された識別子により識別される、第1のメタデータ、第2のメタデータと、第1のI/Oバリアとを揮発性内部バッファ107に順次記憶する。さらに、書き込み順序保証部13は、決定した書き込み順序に基づき、第2のI/Oバリアの第2の発行時間と対応付けて記憶された識別子により識別される、第3のメタデータと、第2のI/Oバリアとを揮発性内部バッファ107に順次記憶する。
【００９３】
図2のI/Oコントローラ106は、第1の発行時間に至ると、第1の発行時間に対応する第1のI/Oバリアよりも前に揮発性内部バッファ107に記憶された第1のメタデータ、第2のメタデータを例えば第1の二次記憶装置1081に書き込む。なお、書き込まれた第1、第2のメタデータは、揮発性内部バッファ107から削除される。また、I/Oバリア管理部14は、第1のI/Oバリアを揮発性内部バッファ107から削除する。
【００９４】
さらに、図2のI/Oコントローラ106は、第2の発行時間に至ると、第2の発行時間に対応する第2のI/Oバリアよりも前に揮発性内部バッファ107に記憶された第3のメタデータを例えば第1の二次記憶装置1081に書き込む。
【００９５】
[書き込み順序、解放順序の保証の処理の流れ]
図7〜図9を参照し、書き込み順序、解放順序の保証の処理の流れを説明する。図7は、書き込み順序、解放順序の保証の処理の流れを説明する第1のフロー図である。なお、以下のフロー図の説明において、"Ss"(小文字sは、1以上の整数)は、ステップSsを示す。
【００９６】
ステップS1:ファイル管理ソフトSFのタスク受信部11は、ファイル、フォルダ書き込みタスクまたはファイル、フォルダの削除タスクを受信する。ファイル、フォルダ書き込みタスクは、ファイルサーバSVRの二次記憶装置(例えば第1の二次記憶装置1081)に、ファイルを書き込む指示、または、フォルダを生成する指示を含むタスクである。また、ファイル、フォルダの削除タスクは、ファイルサーバSVRの二次記憶装置(例えば第1の二次記憶装置1081)からファイルまたはフォルダを削除する指示を含むタスクである。
【００９７】
ステップS2:ファイル管理ソフトSFは、受信したタスクの内容に応じて、RAM102にメタデータを生成したり、RAM102に記憶されたメタデータを更新する。
【００９８】
ステップS3:グルーピング部12は、S1で受信されたタスクの種類に応じて、各種データの書き込み順序、削除順序を決定する。
【００９９】
ステップS4：グルーピング部12は、決定した書き込み順序、削除順序に応じて、各種データのグルーピングを行う。
【０１００】
ここで、書き込み順序保証部13は、異なるメタデータがRAM102における同一ページに記憶されている場合、かかるメタデータの書き込み順序、削除順序を保証する処理(以下、同一ページの保証処理と適宜記す)を行う。なお、同一ページの保証処理については、図14〜図16で説明する。なお、ページのサイズは、例えば4キロバイトである。
【０１０１】
ステップS5:書き込み順序保証部13は、グルーピングした各種データを、時間管理部15が管理する発行時間に割り当てるスケジューリングを行う。
【０１０２】
図8は、書き込み順序、解放順序の保証の処理の流れを説明する第2のフロー図である。
【０１０３】
ステップS11:ファイル管理ソフトSFは、ライト用コマンドまたは解放用コマンドの実行を指示する。具体的には、書き込み順序保証部13は、スケジューリングされた各種データと、I/OバリアとをI/Oコントローラ106に出力する。なお、各種データは、既に、RAM102に記憶されている。なお、書き込み順序保証部13は、I/Oバリア管理部14を利用してI/Oバリアを取得する。
【０１０４】
ステップS12:I/Oコントローラ106は、各種データと、I/Oバリアとを受信し、揮発性内部バッファ107に順次記憶する。I/Oコントローラ106は、各種データと、I/Oバリアとをこの順で、例えば、揮発性内部バッファ107の処理待ちキューに登録している。なお、ファイル管理ソフトSFは、この記憶が終了したことを示すコマンドを受信すると、アプリケーションソフトに制御を戻す。
【０１０５】
図9は、書き込み順序、解放順序の保証の処理の流れを説明する第3のフロー図である。
【０１０６】
ステップS21:書き込み順序保証部13は、現時間がI/Oバリアの発行時間か判定する。現時間がI/Oバリアの発行時間でない場合(S21/NO)、現時間がI/Oバリアの発行時間に至るまで待つためS21に戻る。現時間がI/Oバリアの発行時間の場合(S21/YES)、S22に移る。
【０１０７】
ステップS22:書き込み順序保証部13は、I/Oバリア管理部14にI/Oバリアの発行を指示し、I/Oバリアを発行させる。I/Oバリア管理部14は、この指示に応答して、I/Oバリアを発行する。I/Oコントローラ106は、I/Oバリアの発行により、この発行時間に対応するI/Oバリアよりも前に揮発性内部バッファ107に記憶された各種データを第1の二次記憶装置1081に書き込む。
【０１０８】
I/Oバリア管理部14は、書き込み終了割り込み通知や解放終了割り込み通知を受信すると、発行したI/Oバリアの解放を行う。書き込み終了割り込み通知は、ライト用コマンドが実行されてデータが二次記憶装置に書き込まれた後に通知される。解放終了割り込み通知は、解放用コマンドが実行されてデータが二次記憶装置から解放された後に通知される。
【０１０９】
I/Oバリア管理部14は、前記した割り込み通知を受信すると、終了通知をファイル管理ソフトSFに出力する。
【０１１０】
[データの書き込みの具体例]
図10、図11を参照して、書き込むメタデータがRAM102における同一ページに記憶されていない場合における、データの書き込み処理について具体例に沿って説明する。図10は、データの書き込み処理を具体的に説明する図である。この説明では、図4に示した階層構造を有するファイルとフォルダを第1の二次記憶装置1081に書き込む場合を例示して説明する。
【０１１１】
図10において、第1の時間T1〜第8の時間T8は、I/Oバリアの発行時間を示し、I/Oバリアの発行時間に、各種データがスケジューリングされている状態を模式的に示している。
【０１１２】
時間管理部15は、I/Oバリアの発行時間とこの発行時間の次のI/Oバリアの発行時間との時間間隔を所定の時間間隔とする。この時間間隔は、例えば、10分である。I/Oバリアの発行時間は、第1の時間T1の場合例えば12時00分、第2の時間T2の場合12時10分、第3の時間T3の場合12時20分などである。すなわち、図10において、第p(pは0以上の整数)の時間Tpは、第(p+1)の時間T(p+1)よりも前である。このように時間間隔を一定にすることにより、I/Oバリアの発行タイミングを定期的にして、タイマ管理が複雑にならないようにする。以下、発行時間を時間と適宜記す。
【０１１３】
ファイル管理ソフトSFのタスク受信部11は、図4に示した第1のファイルFL1、第2のファイルFL2を例えば第1の二次記憶装置1081に書き込むように指示する書き込みタスクを受信する(S1)。なお、第1のファイルFL1、第2のファイルFL2は、図4に示したように、第2のフォルダFD2内の第1のフォルダFD1内に格納されている。
【０１１４】
RAM102は、第1のファイルのデータFL1d、第2のファイルのデータFL2d、第1のファイルのメタデータFL1m、第2のファイルのメタデータFL2mを記憶している。さらに、RAM102は、第1のフォルダのデータFD1d、第1のフォルダのメタデータFD1m、第2のフォルダのデータFD2d、第2のフォルダのメタデータFD2m、最上位のメタデータTmを記憶している。
【０１１５】
グルーピング部12は、図6の管理関係テーブルTBL1に基づき、以下に示す書き込み順序を決定する(S3)。この書き込み順序は、図5の例では、図面下から上に示す破線矢印("書き込み"参照)で示す順序である。詳しくは、グルーピング部12は、図面下側のデータから上側のデータに向かって、データが第1の二次記憶装置1081に書き込まれるように書き込み順序を決定する。
【０１１６】
具体的には、この書き込み順序は、1番目が第1のファイルのデータFL1dと第2のファイルのデータFL2d、2番目が第1のファイルのメタデータFL1mと第2のファイルのメタデータFL2mとである。
【０１１７】
このように、第1のファイルのメタデータFL1mと第2のファイルのメタデータFL2mとの書き込み順序を同順番としているのは、以下の理由である。すなわち、図5で説明したように、第1のファイルのメタデータFL1mと第2のファイルのメタデータFL2mとは、依存関係において、同じ階層(換言すれば、同順位)に位置しているからである。換言すれば、前記した2つのファイルのメタデータ(FL1m、FL2m)については、両者において依存関係の上位下位の関係がない。そこで、前記した2つのメタデータ(FL1m、FL2m)を同順番としても、前記した2つのメタデータ(FL1m、FL2m)が、依存関係において上位にあるデータより先に第1の二次記憶装置1081に書き込まれることになる。依存関係において上位にあるデータは、図5の例では、第1のフォルダのメタデータFD1mである。
【０１１８】
また、第1のファイルのデータFL1d、第2のファイルのデータFL2dとの書き込み順序を同順番としているのは、以下の理由である。すなわち、第1のファイルのデータFL1dのメタデータFL1mと第2のファイルのデータFL2dのメタデータFL2mとが、依存関係において、同じ階層に位置しているからである。換言すれば、前記した2つのファイルのデータ(FL1d、FL2d)については、両者において依存関係の上位下位の関係がない。そのため、前記した2つのファイルのデータ(FL1d、FL2d)については、同順番としても、前記した2つのファイルのデータ(FL1d、FL2d)は、このデータのメタデータ(FL1m、FL1m)より先に第1の二次記憶装置1081に書き込まれることになる。
【０１１９】
さらに、3番目が第1のフォルダのデータFD1d、4番目が第1のフォルダのメタデータFD1mである。さらに、この書き込み順序は、5番目が第2のフォルダのデータFD2d、6番目が第2のフォルダのメタデータFD2m、7番目が最上位のメタデータTmである。
【０１２０】
(グルーピング)
グルーピング部12は、決定した書き込み順序に応じて、各種データのグルーピングを行う(S4)。第1のグループは、書き込み順序が1番目である第1のファイルのデータFL1dと第2のファイルのデータFL2dである。第2のグループは、書き込み順序が2番目である第1のファイルのメタデータFL1mと第2のファイルのメタデータFL2mとである。第3のグループは、書き込み順序が3番目である第1のフォルダのデータFD1d、第4のグループは、書き込み順序が4番目である第1のフォルダのメタデータFD1mである。第5のグループは、書き込み順序が5番目である第2のフォルダのデータFD2dである。第6のグループは、書き込み順序が6番目である第2のフォルダのメタデータFD2m、第7のグループは、書き込み順序が7番目である最上位のメタデータTmである。
【０１２１】
書き込み順序保証部13は、グルーピングした各種データを、図10に示すように、予め定められた発行時間に割り当てるスケジューリングを行う(S5)。なお、書き込み順序保証部13は、後記するスケジューリングの終了時間が第1の時間T1よりも前の時間になるように、スケジューリング処理を終了させている。
【０１２２】
書き込み順序保証部13は、第2の時間T2に、第1のグループである第1のファイルのデータFL1dと第2のファイルのデータFL2dとの書き込みが実行されるようにスケジューリングを行う。
【０１２３】
書き込み順序保証部13は、第3の時間T3に、第2のグループである第1のファイルのメタデータFL1mと第2のファイルのメタデータFL2mとの書き込みが実行されるようにスケジューリングを行う。書き込み順序保証部13は、第4の時間T4に、第3のグループである第1のフォルダのデータFD1dの書き込みが実行されるようにスケジューリングを行う。
【０１２４】
書き込み順序保証部13は、第5の時間T5に、第4のグループである第1のフォルダのメタデータFD1mの書き込みが実行されるようにスケジューリングを行う。書き込み順序保証部13は、第6の時間T6に、第5のグループである第2のフォルダのデータFD2dの書き込みが実行されるようにスケジューリングを行う。
【０１２５】
書き込み順序保証部13は、第7の時間T7に、第6のグループである第2のフォルダのメタデータFD2mの書き込みが実行されるようにスケジューリングを行う。書き込み順序保証部13は、第8の時間T8に、第7のグループである最上位のメタデータTmの書き込みが実行されるようにスケジューリングを行う。
【０１２６】
(スケジューリング情報)
書き込み順序保証部13は、I/Oバリアの発行時間と、メタデータの識別子とを対応付けてRAM102に記憶する。具体的には、書き込み順序保証部13は、書き込みスケジューリングを管理するスケジューリング情報(管理構造体とも呼ぶ)をRAM102に記憶する。
【０１２７】
図11は、書き込みスケジューリングを管理するスケジューリング情報を示す図である。図11では、スケジューリング情報をテーブル形式で示している。スケジューリングテーブルTBL2は、発行時間欄と、識別子欄とを有する。発行時間欄は、I/Oバリアの発行時間を記憶する欄である。発行時間欄は、図11の例では、時間経過の順に、I/Oバリアの発行時間を記憶する。図11の例では、発行時間欄の2行目のセルに、第2の時間T2を示す時間情報("T2")を記憶する。そして、発行時間欄の3行目のセルに、第3の時間T3を示す時間情報("T3")を記憶する。
【０１２８】
識別子欄は、この発行時間にスケジューリングされた各種データを一意に識別する識別子を記憶する。この識別子は、図5の識別子と同様である。詳しくは、各種データの識別子は、例えば、この各種データがRAM102に記憶されている場合における、この各種データのRAM102における記憶位置を特定するための情報(例えば、ポインタとオフセット)に対応している。
【０１２９】
前記例では第2の時間T2に、第1のグループである第1のファイルのデータFL1dと第2のファイルのデータFL2dとの書き込みが実行されるようにスケジューリングがされている。そこで、書き込み順序保証部13は、第2の時間T2が記憶されたセル(T2)が属する行と識別子欄とが交わるセルに、第1のファイルのデータFL1dの識別子"FL1d"と第2のファイルのデータFL2dの識別子"FL2d"を記憶する。なお、他の時間については、説明を省略する。
【０１３０】
(揮発性内部バッファへの記憶)
書き込み順序保証部13は、図11のスケジューリングテーブルTBL2に基づき、発行時間の各々にスケジューリングされた各種データと、この発行時間に発行するI/Oバリア(発行時間に対応するI/Oバリアとも呼ぶ)をI/Oコントローラ106に出力する(S11)。
【０１３１】
図11の例では、書き込み順序保証部13は、以下のデータをI/Oコントローラ106に出力する(S11)。すなわち、第2の時間T2にスケジューリングされた、第1のファイルのデータFL1dと第2のファイルのデータFL2d、第2のI/Oバリアである。次に、第3の時間T3にスケジューリングされた、第1のファイルのメタデータFL1mと、第2のファイルのメタデータFL2mと、第3のI/Oバリアである。
【０１３２】
次に、第4の時間T4にスケジューリングされた、第1のフォルダのデータFD1d、第4のI/Oバリアである。次に、第5の時間T5にスケジューリングされた第1のフォルダのメタデータFD1m、第5のI/Oバリアである。次に、第6の時間T6にスケジューリングされた第5のグループである第2のフォルダのデータFD2d、第6のI/Oバリアである。次に、第7の時間T7にスケジューリングされた第6のグループである第2のフォルダのメタデータFD2m、第7のI/Oバリアである。次に、第8の時間T8にスケジューリングされた第7のグループである最上位のメタデータTm、第8のI/Oバリアである。
【０１３３】
I/Oコントローラ106は、受信した各種データとI/Oバリアとを順に、揮発性内部バッファ107に記憶する(S12)。
【０１３４】
前記の例では、I/Oコントローラ106は、以下の順に受信した各種データとI/Oバリアとを揮発性内部バッファ107に記憶する(S12)。すなわち、この順は、第1のファイルのデータFL1d、第2のファイルのデータFL2d、第2のI/Oバリア、第1のファイルのメタデータFL1m、第2のファイルのメタデータFL2m、第3のI/Oバリアである。次に、この順は、第1のフォルダのデータFD1d、第4のI/Oバリア、第1のフォルダのメタデータFD1m、第5のI/Oバリア、第2のフォルダのデータFD2d、第6のI/Oバリアである。次に、この順は、第2のフォルダのメタデータFD2m、第7のI/Oバリア、最上位のメタデータTm、第8のI/Oバリアである。
【０１３５】
(I/Oバリアの発行)
前記スケジューリングと並行して、書き込み順序保証部13は、現時間がI/Oバリアの発行時間か判定する(S21)。以下に説明する処理により、各種データが決定された書き込み順序に従って第1の二次記憶装置1081に書き込まれる。
【０１３６】
書き込み順序保証部13は、現時間が第2の時間T2に至ると(S21/YES)、I/Oバリア管理部14に第2のI/Oバリアを発行させる(S22)。I/Oコントローラ106は、第2のI/Oバリア発行により、第2のI/Oバリアより前に揮発性内部バッファ107に記憶された第1のファイルのデータFL1dと第2のファイルのデータFL2dとを第1の二次記憶装置1081に書き込む。次いで、S21に戻る。なお、揮発性内部バッファ107に記憶されたデータが、第1の二次記憶装置1081に書き込まれると、揮発性内部バッファ107に記憶されたこのデータは解放される。
【０１３７】
書き込み順序保証部13は、現時間が第3の時間T3に至ると(S21/YES)、I/Oバリア管理部14に第3のI/Oバリアを発行させる(S22)。I/Oコントローラ106は、第3のI/Oバリア発行により、第3のI/Oバリアより前に揮発性内部バッファ107に記憶された第1のファイルのメタデータFL1mと第2のファイルのメタデータFL2mとを第1の二次記憶装置1081に書き込む。次いで、S21に戻る。
【０１３８】
書き込み順序保証部13は、現時間が第4の時間T4に至ると(S21/YES)、I/Oバリア管理部14に第4のI/Oバリアを発行させる(S22)。I/Oコントローラ106は、第4のI/Oバリア発行により、第4のI/Oバリアより前に揮発性内部バッファ107に記憶された第1のフォルダのデータFD1dを第1の二次記憶装置1081に書き込む。次いで、S21に戻る。
【０１３９】
書き込み順序保証部13は、現時間が第5の時間T5に至ると(S21/YES)、I/Oバリア管理部14に第5のI/Oバリアを発行させる(S22)。I/Oコントローラ106は、第5のI/Oバリア発行により、第5のI/Oバリアより前に揮発性内部バッファ107に記憶された第1のフォルダのメタデータFD1mを第1の二次記憶装置1081に書き込む。次いで、S21に戻る。
【０１４０】
書き込み順序保証部13は、現時間が第6の時間T6に至ると(S21/YES)、I/Oバリア管理部14に第6のI/Oバリアを発行させる(S22)。I/Oコントローラ106は、第6のI/Oバリア発行により、第6のI/Oバリアより前に揮発性内部バッファ107に記憶された第2のフォルダのデータFD2dを第1の二次記憶装置1081に書き込む。次いで、S21に戻る。
【０１４１】
書き込み順序保証部13は、現時間が第7の時間T7に至ると(S21/YES)、I/Oバリア管理部14に第7のI/Oバリアを発行させる(S22)。I/Oコントローラ106は、第7のI/Oバリア発行により、第7のI/Oバリアより前に揮発性内部バッファ107に記憶された第2のフォルダのメタデータFD2mを第1の二次記憶装置1081に書き込む。次いで、S21に戻る。
【０１４２】
書き込み順序保証部13は、現時間が第8の時間T8に至ると(S21/YES)、I/Oバリア管理部14に第8のI/Oバリアを発行させる(S22)。I/Oコントローラ106は、第8のI/Oバリア発行により、第8のI/Oバリアより前に揮発性内部バッファ107に記憶された最上位のメタデータTmを第1の二次記憶装置1081に書き込む。次いで、S21に戻る。
【０１４３】
以上説明したように、グルーピング部12は、以下のデータを第1の二次記憶装置1081に書き込む指示(書き込みタスク)を受け付ける。以下のデータは、例えば、第1のメタデータ(例えば、第1のファイルのメタデータFL1m)が管理する第1のデータ(例えば、第1のファイルのデータFL1d)である。さらに、以下のデータは、第2のメタデータ(例えば、第2のファイルのメタデータFL2m)が管理する第2のデータ(例えば、第2のファイルのデータFL2d)である。
【０１４４】
グルーピング部12は、図6の管理関係テーブルTBL1に基づき、以下の順番を決定する。すなわち、第1の二次記憶装置1081に書き込む第1の順番が第1、第2のメタデータ、第1の二次記憶装置1081に書き込む第2の順番が第3のメタデータ(例えば、第1のフォルダのメタデータFD1m)である。
【０１４５】
そして、書き込み順序保証部13は、例えば図11のスケジューリングテーブルTBL2に示すように、第1の発行時間と、第1のメタデータの識別子と第2のメタデータの識別子とを対応付けてRAM102に記憶する。第1の発行時間は、例えば第3の時間T3であり、第1のメタデータの識別子は、例えば"FL1m"、第2のメタデータの識別子は、例えば"FL2m"である。
【０１４６】
さらに、書き込み順序保証部13は、第1の発行時間よりも後の第2の発行時間と第3のメタデータの識別子とを対応付けてRAM102に記憶する。第2の発行時間は、例えば第5の時間T5であり、第3のメタデータの識別子は、例えば、"FD1m"である。
【０１４７】
以上説明した、グルーピングした各種データのメタデータを、予め定められた発行時間に割り当てるスケジューリングにより(図10参照)、書き込み順序を確実に維持することができる。
【０１４８】
さらに、このスケジューリングにより、I/Oバリアの発行回数を減らすことができる。例えば、前記したデータの書き込みの具体例において、各種データ毎にI/Oバリアを発行した場合、9単位のデータがあるので、9個のI/Oバリアを発行する。しかし、本実施の形態のファイルサーバの場合、7個のI/Oバリア(第2のI/Oバリア〜第8のI/Oバリア)を発行すればよいので、I/Oバリアの発行回数を2回減らすことができる。特に、多数のファイルを同時に書き込む場合、I/Oバリアの発行回数を大幅に減らすことができる。その結果、書き込み順序を厳密に保証しつつ、I/O処理の遅延、アプリケーションソフトの実行速度の低下を抑制できる。
【０１４９】
[データの削除の具体例]
図12、図13を参照して、解放するメタデータがRAM102における同一ページに記憶されていない場合における、データの解放処理について具体例に沿って説明する。図12は、データの解放処理を具体的に説明する図である。この説明では、図4に示した階層構造を有するファイルとフォルダを第1の二次記憶装置1081から削除する場合を例示して説明する。
【０１５０】
図12の第1の時間T1〜第8の時間T8は、図10と同じく、I/Oバリアが発行される時間を示し、I/Oバリアの発行時間に、各種データがスケジューリングされている状態を模式的に示している。
【０１５１】
ファイル管理ソフトSFのタスク受信部11は、第1のファイルFL1、第2のファイルFL2、第1のフォルダのデータFD1dを例えば第1の二次記憶装置1081から削除するように指示する解放タスクを受信する(S1)。なお、ファイル管理ソフトSFは、第1のファイルFL1、第2のファイルFL2、第1のフォルダのデータFD1dを削除する場合、以下のデータも削除する。この以下のデータは、第1のファイルのメタデータFL1m、第2のファイルのメタデータFL2m、第1のフォルダのメタデータFD1mである。
【０１５２】
ファイル管理ソフトSFは、前記データの削除が反映されるように、RAM102に記憶されている、第2のフォルダのデータFD2d、第2のフォルダのメタデータFD2m、最上位のメタデータTmを更新する。
【０１５３】
グルーピング部12は、図6の管理関係テーブルTBL1に基づき、以下に示す解放順序を決定する(S3)。この解放順序は、図5の例では、図面上から下に示す破線矢印("解放"参照)で示す順序である。詳しくは、グルーピング部12は、図面上側のデータから下側のデータに向かって、データが第1の二次記憶装置1081から解放されるように解放順序を決定する。ここで、前記したデータの削除が反映されるように、RAM102に記憶されている、各種データが更新された場合、この各種データの解放は、この各種データの第1の二次記憶装置1081への書き込みと見なす。前記例では、更新された、第2のフォルダのデータFD2d、第2のフォルダのメタデータFD2m、最上位のメタデータTmの解放は、これらデータ(FD2d、FD2m、Tm)の第1の二次記憶装置1081への書き込みと見なす。
【０１５４】
この解放順序は、1番目が最上位のメタデータTm、2番目が第2のフォルダのメタデータFD2mである。さらに、3番目が第2のフォルダのデータFD2d、4番目が第1のフォルダのメタデータFD1mである。さらに、この解放順序は、5番目が第1のフォルダのデータFD1d、6番目が第1のファイルのメタデータFL1mと第2のファイルのメタデータFL2m、7番目が第1のファイルのデータFL1dと第2のファイルのデータFL2dである。
【０１５５】
(グルーピング)
グルーピング部12は、決定した解放順序に応じて、各種データのグルーピングを行う(S4)。第1のグループは最上位のメタデータTm、第2のグループは第2のフォルダのメタデータFD2mである。第3のグループは第2のフォルダのデータFD2d、第4のグループは第1のフォルダのメタデータFD1mである。さらに、第5のグループは第1のフォルダのデータFD1d、第6のグループは、第1のファイルのメタデータFL1mと第2のファイルのメタデータFL2m、第7のグループは第1のファイルのデータFL1dと第2のファイルのデータFL2dとである。
【０１５６】
書き込み順序保証部13は、グルーピングした各種データを、図12に示すように、予め定められた発行時間に割り当てるスケジューリングを行う(S5)。なお、書き込み順序保証部13は、後記するスケジューリングの終了時間が第1の時間T1よりも前の時間になるように、スケジューリング処理を終了させている。
【０１５７】
書き込み順序保証部13は、第2の時間T2に、第1のグループである、更新後の最上位のメタデータTmの書き込みが実行されるようにスケジューリングを行う。なお、更新後の最上位のメタデータTmはRAM102に記憶されている。
【０１５８】
書き込み順序保証部13は、第3の時間T3に、第2のグループである、更新後の第2のフォルダのメタデータFD2mの書き込みが実行されるようにスケジューリングを行う。なお、更新後の第2のフォルダのメタデータFD2mはRAM102に記憶されている。
【０１５９】
書き込み順序保証部13は、第4の時間T4に、第3のグループである、更新後の第2のフォルダのデータFD2dの書き込みが実行されるようにスケジューリングを行う。なお、更新後の第2のフォルダのメタデータFD2mはRAM102に記憶されている。
【０１６０】
書き込み順序保証部13は、第5の時間T5に、第4のグループである第1のフォルダのメタデータFD1mの解放が実行されるようにスケジューリングを行う。この解放では、第1の二次記憶装置1081から第1のフォルダのメタデータFD1mが削除される。
【０１６１】
書き込み順序保証部13は、第6の時間T6に、第5のグループである第1のフォルダのデータFD1dの解放が実行されるようにスケジューリングを行う。この解放では、第1の二次記憶装置1081から第1のフォルダのデータFD1dが削除される。
【０１６２】
書き込み順序保証部13は、第7の時間T7に、第6のグループである第1のファイルのメタデータFL1mと第2のファイルのメタデータFL2mとの解放が実行されるようにスケジューリングを行う。この解放では、第1の二次記憶装置1081から第1のファイルのメタデータFL1mと第2のファイルのメタデータFL2mとが削除される。
【０１６３】
書き込み順序保証部13は、第8の時間T8に、第7のグループである第1のファイルのデータFL1dと第2のファイルのデータFL2dの解放が実行されるようにスケジューリングを行う。この解放では、第1の二次記憶装置1081から第1のファイルのデータFL1dと第2のファイルのデータFL2dとが削除される。
【０１６４】
(スケジューリング情報)
書き込み順序保証部13は、I/Oバリアの発行時間と、メタデータの識別子とを対応付けてRAM102に記憶する。具体的には、書き込み順序保証部13は、解放スケジューリングを管理するスケジューリング情報をRAM102に記憶する。
【０１６５】
図13は、解放スケジューリングを管理するスケジューリング情報を示す図である。図13では、管理情報をテーブル形式で示している。スケジューリングテーブルTBL3は、図11のスケジューリングテーブルTBL2と同様の構成を有する。発行時間欄は、図13の例では、時間経過の順に、I/Oバリアの発行時間を記憶する。図13の例では、識別子欄に、識別子として、図12で示したデータの符号を記憶する。
【０１６６】
前記例では、第2の時間T2に、更新後の最上位のメタデータTmの書き込みが実行されるようにスケジューリングがされている。そこで、書き込み順序保証部13は、第2の時間T2が記憶されたセル(T2)が属する行と識別子欄とが交わるセルに、最上位のメタデータTmの識別子"Tm"を記憶する。
【０１６７】
また、前記例では、第3の時間T3に、更新後の第2のフォルダのメタデータFD2mの書き込みが実行されるようにスケジューリングがされている。そこで、書き込み順序保証部13は、第3の時間T3が記憶されたセル(T3)が属する行と識別子欄とが交わるセルに、この第3の時間T3にスケジューリングされた第2のフォルダのメタデータFD2mの識別子"FD2m"を記憶する。なお、他の時間については、説明を省略する。
【０１６８】
(揮発性内部バッファへの記憶)
書き込み順序保証部13は、図13のスケジューリングテーブルTBL3に基づき、発行時間の各々にスケジューリングされた各種データや解放用コマンドと、この発行時間に発行するI/OバリアをI/Oコントローラ106に出力する(S11)。
【０１６９】
図13の例では、書き込み順序保証部13は、以下のデータや解放用コマンドをI/Oコントローラ106に出力する(S11)。すなわち、第2の時間T2にスケジューリングされた、更新後の最上位のメタデータTm、第2のI/Oバリアである。次に、第3の時間T3にスケジューリングされた、更新後の第2のフォルダのメタデータFD2m、第3のI/Oバリアである。次に、第4の時間T4にスケジューリングされた、更新後の第2のフォルダのデータFD2d、第4のI/Oバリアである。
【０１７０】
次に、第5の時間T5にスケジューリングされた第1のフォルダのメタデータFD1mの解放用コマンド、第5のI/Oバリアである。次に、第6の時間T6にスケジューリングされた第1のフォルダのデータFD1dの解放用コマンド、第6のI/Oバリアである。次に、第7の時間T7にスケジューリングされた、第1のファイルのメタデータFL1mと第2のファイルのメタデータFL2mの解放用コマンド、第7のI/Oバリアである。次に、第8の時間T8にスケジューリングされた、第1のファイルのデータFL1dと第2のファイルのデータFL2d、第8のI/Oバリアである。
【０１７１】
I/Oコントローラ106は、受信した各種データ、解放用コマンドとI/Oバリアとを順に、揮発性内部バッファ107に記憶する(S12)。
【０１７２】
前記の例では、I/Oコントローラ106は、各種データ、解放用コマンド、I/Oバリアを、以下の順で、揮発性内部バッファ107に記憶する(S12)。すなわち、更新後の最上位のメタデータTm、第2のI/Oバリア、更新後の第2のフォルダのメタデータFD2m、第3のI/Oバリアである。次に、更新後の第2のフォルダのデータFD2d、第4のI/Oバリア、第1のフォルダのメタデータFD1mの解放用コマンド、第5のI/Oバリア、第1のフォルダのデータFD1dの解放用コマンド、第6のI/Oバリアである。次に、第1のファイルのメタデータFL1mと第2のファイルのメタデータFL2mの解放用コマンド、第7のI/Oバリアである。次に、第1のファイルのデータFL1dと第2のファイルのデータFL2d、第8のI/Oバリアである。
【０１７３】
(I/Oバリアの発行)
前記スケジューリングと並行して、書き込み順序保証部13は、現時間がI/Oバリアの発行時間か判定する(S21)。以下に説明する処理により、各種データが決定された書き込み順序に従って第1の二次記憶装置1081に書き込まれる。また、以下に説明する処理により、各種データが決定された書き込み順序に従って第1の二次記憶装置1081から解放される。
【０１７４】
書き込み順序保証部13は、現時間が第1の時間T1に至ると(S21/YES)、I/Oバリア管理部14に第1のI/Oバリアを発行させる。第1のI/Oバリアの発行により、第1の時間T1より前に書き込まれるようにスケジューリングされたデータが、第1の時間T1より後にスケジューリングされたデータより先に書き込まれる。
【０１７５】
書き込み順序保証部13は、現時間が第2の時間T2に至ると(S21/YES)、I/Oバリア管理部14に第2のI/Oバリアを発行させる(S22)。I/Oコントローラ106は、第2のI/Oバリア発行により、第2のI/Oバリアより前に揮発性内部バッファ107に記憶された更新後の最上位のメタデータTmを第1の二次記憶装置1081に書き込む。次いで、S21に戻る。
【０１７６】
書き込み順序保証部13は、現時間が第3の時間T3に至ると(S21/YES)、I/Oバリア管理部14に第3のI/Oバリアを発行させる(S22)。I/Oコントローラ106は、第3のI/Oバリア発行により、第3のI/Oバリアより前に揮発性内部バッファ107に記憶された更新後の第2のフォルダのメタデータFD2mを第1の二次記憶装置1081に書き込む。次いで、S21に戻る。
【０１７７】
書き込み順序保証部13は、現時間が第4の時間T4に至ると(S21/YES)、I/Oバリア管理部14に第4のI/Oバリアを発行させる(S22)。I/Oコントローラ106は、第4のI/Oバリア発行により、第4のI/Oバリアより前に揮発性内部バッファ107に記憶された更新後の第2のフォルダのデータFD2dを第1の二次記憶装置1081に書き込む。次いで、S21に戻る。
【０１７８】
書き込み順序保証部13は、現時間が第5の時間T5に至ると(S21/YES)、I/Oバリア管理部14に第5のI/Oバリアを発行させる(S22)。I/Oコントローラ106は、第5のI/Oバリア発行により、第5のI/Oバリアより前に揮発性内部バッファ107に記憶された第1のフォルダのメタデータFD1mの解放用コマンドを実行する。I/Oコントローラ106は、この実行により、第1のフォルダのメタデータFD1mを第1の二次記憶装置1081から解放する。次いで、S21に戻る。
【０１７９】
書き込み順序保証部13は、現時間が第6の時間T6に至ると(S21/YES)、I/Oバリア管理部14に第6のI/Oバリアを発行させる(S22)。I/Oコントローラ106は、第6のI/Oバリア発行により、第6のI/Oバリアより前に揮発性内部バッファ107に記憶された第1のフォルダのデータFD1dの解放用コマンドを実行する。I/Oコントローラ106は、この実行により、第1のフォルダのデータFD1dを第1の二次記憶装置1081から解放する。次いで、S21に戻る。
【０１８０】
書き込み順序保証部13は、現時間が第7の時間T7に至ると(S21/YES)、I/Oバリア管理部14に第7のI/Oバリアを発行させる(S22)。I/Oコントローラ106は、第7のI/Oバリア発行により、第7のI/Oバリアより前に揮発性内部バッファ107に記憶された第1のファイルのメタデータFL1mと第2のファイルのメタデータFL2mの解放用コマンドを実行する。I/Oコントローラ106は、この実行により、第1のファイルのメタデータFL1mと第2のファイルのメタデータFL2mとを第1の二次記憶装置1081から解放する。次いで、S21に戻る。
【０１８１】
書き込み順序保証部13は、現時間が第8の時間T8に至ると(S21/YES)、I/Oバリア管理部14に第8のI/Oバリアを発行させる(S22)。I/Oコントローラ106は、第8のI/Oバリア発行により、第8のI/Oバリアより前に揮発性内部バッファ107に記憶された第1のファイルのデータFL1dと第2のファイルのデータFL2dの解放用コマンドを実行する。I/Oコントローラ106は、この実行により、第1のファイルのデータFL1dと第2のファイルのデータFL2dとを第1の二次記憶装置1081から解放する。次いで、S21に戻る。
【０１８２】
以上説明したように、グルーピング部12は、以下のデータを第1の二次記憶装置1081から削除する指示(削除タスク)を受け付ける。以下のデータは、例えば、第1のメタデータ(例えば、第1のファイルのメタデータFL1m)が管理する第1のデータ(例えば、第1のファイルのデータFL1d)である。さらに、以下のデータは、第2のメタデータ(例えば、第2のファイルのメタデータFL2m)が管理する第2のデータ(例えば、第2のファイルのデータFL2d)である。
【０１８３】
グルーピング部12は、図6の管理関係テーブルTBL1に基づき、以下の順番を決定する。すなわち、第1の二次記憶装置1081に書き込む第1の順番が、更新された第3のメタデータ、第1の二次記憶装置1081に書き込む第2の順番が、更新された第1、第2のメタデータである。第1のメタデータは、例えば第1のファイルのメタデータFL1m、第2のメタデータは、例えば第2のファイルのメタデータFL1mである。更新された第3のメタデータは、例えば、第1のフォルダのメタデータFD1mや、最上位のメタデータTmである。
【０１８４】
なお、第1のファイルのメタデータFL1m、第2のファイルのメタデータFL1m、第1のフォルダのメタデータFD1mは、前記データの削除の具体例で説明したように、解放されるメタデータである。この例のように、解放されるメタデータの場合、例えば、第1の二次記憶装置1081において解放されるメタデータが記憶されている領域に例えば0が書き込まれるとする。
【０１８５】
書き込み順序保証部13は、第1の発行時間(例えば、第7の時間T7)と、第1のメタデータの識別子(例えば、"FL1m")と第2のメタデータの識別子("例えば、FL2m")とを対応付けてRAM102に記憶する(図13参照)。さらに、書き込み順序保証部13は、第1の発行時間(例えば、第7の時間T7)よりも前の第2の発行時間と第3のメタデータの識別子を対応付けてRAM102に記憶する(図13参照)。なお、第3のメタデータが、例えば第1のフォルダのメタデータFD1mの場合、第2の発行時間は第5の時間T5であり、第3のメタデータの識別子は"FD1m"である。また、第3のメタデータが、例えば最上位のメタデータTmの場合、第2の発行時間は第2の時間T2であり、第3のメタデータの識別子は"Tm"である。
【０１８６】
以上説明した、グルーピングした各種データのメタデータを、予め定められた発行時間に割り当てるスケジューリングにより(図12参照)、解放順序を確実に維持することができる。
【０１８７】
さらに、このスケジューリングにより、I/Oバリアの発行回数を減らすことができる。例えば、前記したデータの解放の具体例において、各種データ毎にI/Oバリアを発行した場合、9単位のデータがあるので、9個のI/Oバリアを発行する。しかし、本実施の形態のファイルサーバの場合、7個のI/Oバリア(第2のI/Oバリア〜第8のI/Oバリア)を発行すればよいので、I/Oバリアの発行回数を2回減らすことができる。特に、多数のファイルを同時に消去する場合、I/Oバリアの発行回数を大幅に減らすことができる。その結果、解放順序を厳密に保証しつつ、アプリケーションソフトの実行速度の低下を抑制できる。
【０１８８】
[同一ページ]
RAM102に記憶されている、異なるメタデータが、RAM102における所定の記憶領域単位(ページとも呼ぶ)に記憶されている場合、書き込み順序保証部13は、かかるメタデータの書き込み順序、削除順序を保証する処理(同一ページの保証処理)を行う。
【０１８９】
図14は、異なるメタデータがRAM102における同一ページに記憶されている状態を模式的に示した図である。図14は、RAM102が、ページPG1内に、最上位のメタデータTm、第2のフォルダのメタデータFD2mを記憶している状態を示している。なお、RAM102は、図示してはいないが、例えば、第2のファイルのデータFL2dなども記憶している。
【０１９０】
このように異なるメタデータがRAM102の同一ページに記憶されている場合、この異なるメタデータは、同時に、第1の二次記憶装置1081に記憶される。これは、RAMに記憶されたデータへのアクセス(書き込み、読み込み)は、ページ単位で行われるからである。異なるメタデータがRAM102の同一ページに記憶され、異なるメタデータの各々が、異なる発行時間にスケジューリングされている場合を想定する。この場合、この異なるメタデータは、同時に、第1の二次記憶装置1081に記憶されるので、前記の決定した書き込み順序、解放順序が守られない。
【０１９１】
(同一ページの保証処理)
そこで、書き込み順序保証部13は、メタデータの書き込み順序を保証するため、以下の処理を実行する。書き込み順序保証部13は、ファイル管理ソフトSFにより異なるメタデータがRAM102の同一ページに記憶された場合、異なるメタデータがRAM102の同一ページに記憶されていることを検知する。そして、書き込み順序保証部13は、この同一ページに記憶された異なるメタデータの何れかのメタデータが更新された場合、更新前の内容を有するメタデータ(更新前のメタデータ)をRAM102に記憶する。
【０１９２】
なお、同一ページの保証処理において、メタデータの更新は、新たにメタデータが生成されることも含む。新たにメタデータが作成される場合、更新前のメタデータは、空のメタデータである。
【０１９３】
そして、書き込み順序保証部13は、RAM102の同一ページに記憶され、かつ、異なる発行時間にスケジューリングされた複数のメタデータを検知する。図14の例の場合、最上位のメタデータTm、第2のフォルダのメタデータFD2mは、RAM102の同一ページに記憶されている。また、図10、図12の例の場合、最上位のメタデータTm、第2のフォルダのメタデータFD2mは、異なる発行時間にスケジューリングされたメタデータである。そのため、書き込み順序保証部13は、第2のフォルダのメタデータFD2m、最上位のメタデータTmを検知する。
【０１９４】
次いで、書き込み順序保証部13は、後の発行時間にスケジューリングされたメタデータに対応する更新前のメタデータをRAM102から特定する。更新前のメタデータは、例えば、図15の第2のフォルダのメタデータ(更新前)FD2m'を参照。
【０１９５】
そして、書き込み順序保証部13は、後の発行時間にスケジューリングされたメタデータと同一ページに記憶された、この後の発行時間よりも前の発行時間にスケジューリングされているメタデータを特定する。図12、図14の例では、後の発行時間にスケジューリングされたメタデータは、第2のフォルダのメタデータFD2mである。また、後の発行時間にスケジューリングされたメタデータと同一ページに記憶された、この後の発行時間よりも前の発行時間にスケジューリングされているメタデータは、最上位のメタデータTmである。
【０１９６】
そして、書き込み順序保証部13は、これら特定したメタデータを、他のページに記憶する。この他のページは、検知された複数のメタデータが記憶されているページとは異なるページである。
【０１９７】
図15は、第2のフォルダのメタデータ(更新前)FD2m'と最上位のメタデータTmとがRAM102のページPG2に記憶されている状態を模式的に示した図である。
【０１９８】
図12、図14の例では、書き込み順序保証部13は、後の発行時間にスケジューリングされた第2のフォルダのメタデータFD2mに対応する更新前のメタデータ(以下、第2のフォルダのメタデータ(更新前)FD2m'と記す)を特定する。そして、書き込み順序保証部13は、この後の発行時間よりも前の発行時間にスケジューリングされている最上位のメタデータTmを特定する。
【０１９９】
書き込み順序保証部13は、図15に示すように、第2のフォルダのメタデータ(更新前)FD2m'と、最上位のメタデータTmとを、ページPG1とは異なるページPG2に記憶する。
【０２００】
(再スケジューリング)
そして、書き込み順序保証部13は、検知された複数のメタデータについて再スケジューリングを行う。具体的には、書き込み順序保証部13は、検知された複数のメタデータについて、以下の再スケジューリングを実行する。すなわち、書き込み順序保証部13は、後の発行時間にスケジューリングされたメタデータに対応する更新前のメタデータを、この後の発行時間よりも前の発行時間にスケジューリングされたメタデータと同じ発行時間にスケジューリングする。換言すれば、書き込み順序保証部13は、第1の二次記憶装置1081に後に書き込むメタデータの内容を更新前の内容に巻き戻したページ(図15の例では、ページPG2)を作成する。そして、書き込み順序保証部13は、前の発行時間にこのページをスケジューリングする。
【０２０１】
そして、書き込み順序保証部13は、後の発行時間に、更新後のメタデータをスケジューリングする。
【０２０２】
図16は、図14、図15で例示したメタデータの再スケジューリングを具体的に説明する図である。
【０２０３】
図12、図14、図15の例では、書き込み順序保証部13は、第2の時間T2の発行時間(前の発行時間)に、最上位のメタデータTm(更新後)と第2のフォルダのメタデータ(更新前)FD2m'とをスケジューリングする。そして、書き込み順序保証部13は、第3の時間T3(後の発行時間)に、最上位のメタデータTm(更新後)と第2のフォルダのメタデータFD2m(更新後)をスケジューリングする。
【０２０４】
書き込み順序保証部13は、再スケジューリングを実行した場合、この再スケジューリングの内容を含むスケジューリング情報を生成し、RAM102に記憶する。
【０２０５】
図17は、再スケジューリング後のスケジューリング情報を示す図である。図17のスケジューリングテーブルTBL4は、図11のスケジューリングテーブルTBL3と同様の構成を有する。図17の例では、識別子欄に、識別子として、図16で示したデータの符号を記憶する。
【０２０６】
図16で説明した例では、第2の時間T2の発行時間に、更新後の最上位のメタデータTm、第2のフォルダのメタデータ(更新前)FD2m'の書き込みが実行されるようにスケジューリングがされている。そこで、グルーピング部12は、第2の時間T2が記憶されたセル(T2)が属する行と識別子欄とが交わるセルに、第2の時間T2にスケジューリングされた最上位のメタデータTmの識別子"Tm"を記憶する。さらに、グルーピング部12は、識別子"Tm"が記憶されたセルに、第2のフォルダのメタデータ(更新前)FD2m'の識別子"FD2m'"を記憶する。
【０２０７】
また、図16で説明した例では、第3の時間T3に、更新後の第2のフォルダのメタデータFD2m、更新後の最上位のメタデータTmの書き込みが実行されるようにスケジューリングがされている。そこで、グルーピング部12は、第3の時間T3が記憶されたセル(T3)が属する行と識別子欄とが交わるセルに、第3の時間T3にスケジューリングされた第2のフォルダのメタデータFD2mの識別子"FD2m"を記憶する。さらに、グルーピング部12は、識別子"FD2m"が記憶されたセルに、最上位のメタデータTmの識別子"Tm"の識別子"Tm"を記憶する。
【０２０８】
前記した再スケジューリングにより、異なるメタデータがRAM102の同一ページに記憶され、異なるメタデータの各々が、異なる発行時間にスケジューリングされていても、前記の決定した書き込み順序、解放順序が守られる。
【０２０９】
書き込み順序保証部13は、図17のスケジューリングテーブルTBL4に基づき、発行時間の各々にスケジューリングされた各種データと、この発行時間に発行するI/OバリアをI/Oコントローラ106に出力する(S11)。I/Oコントローラ106は、受信した各種データとI/Oバリアとを順に、揮発性内部バッファ107に記憶する(S12)。以後、I/Oバリアの発行処理(S21、S22)が実行され、各種データが決定された書き込み順序に従って第1の二次記憶装置1081に書き込まれる。また、各種データが決定された書き込み順序に従って第1の二次記憶装置1081から解放される。
【０２１０】
以上説明したように、書き込み順序保証部13は、以下の第1の場合、第2の場合には、以下の処理を実行する。第1の場合は、RAM102に記憶されている、第2のメタデータ(例えば、第2のフォルダのメタデータFD2m)、第3のメタデータ(例えば、最上位のメタデータTm)が、このRAM102における同一ページに記憶されている場合である。第2の場合は、第1の発行時間が第2の発行時間よりも前の時間の場合である。
【０２１１】
第2の発行時間は、第2のメタデータの識別子が対応付けてRAM102に記憶されている時間である。第2のメタデータが、例えば第2のフォルダのメタデータFD2mの場合、第2の発行時間は、図17のスケジューリングテーブルTBL4によれば、第3の時間T3である。
【０２１２】
書き込み順序保証部13は、第1、第2の場合、第1の発行時間(例えば、第2の時間T2)に更新前の第2のメタデータの識別子(例えば"FD2m'")と更新後の第3のメタデータ(例えば"Tm")の識別子とを対応付けてRAM102に記憶する。さらに、書き込み順序保証部13は、第2の発行時間(例えば、第3の時間T3)と更新後の第2のメタデータの識別子(例えば"FD2m")と更新後の第3のメタデータの識別子("Tm")とを対応付けてRAM102に記憶する。
【０２１３】
なお、前記したファイル管理技術を利用しても、RAM102に記憶されたデータが二次記憶装置に書き込まれる前に異常終了すると、このデータが失われる。しかし、このようにデータが失われる事自体は、ライト用のシステムコールの性能(例えば、システムコールを高速に実行する)とのトレード・オフの観点からやむを得ないと考えられる。そこで、以下に示す第1、第2の方法で、影響範囲の限定や、完了時の書き込み保証が必要な特定のデータの書き込み処理への対応がされている。なお、この特定のデータは、一体不可分の処理単位であるトランザクション処理の対象となるデータである。前記した第1の方法は、定期的に、RAM102に記憶されたデータを、二次記憶装置に書き込む方法である。第2の方法は、ライト用のシステムコールの発行が終了した時点で、書き込むデータとして指定されたデータに対し、二次記憶装置に書き込みが終了することを保証するシステムコールを、ライト用のシステムコールとは別に実装する方法である。
【０２１４】
［第２の実施の形態］
第1の実施の形態で説明した、メタデータの整合性の確認処理や、メタデータの整合性の回復処理の時間を短縮するため、メタデータに対する処理の履歴(更新履歴とも呼ぶ)を示す履歴データを二次記憶装置に書き込む技術が提案されている。この更新内容が書き込まれる領域は、「ジャーナル領域」と呼ばれ、二次記憶装置の特別な領域である。かかる技術は、ジャーナリングとも呼ばれる。かかる技術は、例えば、RAM102のメタデータが更新されると、その履歴データ(ジャーナルログとも呼ばれる)を第1の二次記憶装置1081に書き込む。
【０２１５】
かかるメタデータ整合性の確認、回復処理を高速化した技術は、ジャーナリング・ファイルシステムと呼ばれる。ジャーナリング・ファイルシステムとして、例えばLinux(登録商標)のExt3や、Windows(登録商標)のNTFS、MacOS(登録商標)のHFS+等のジャーナリング・ファイルシステムがある。なお、Ext3は、"third extended file system"の略語、NTFSは、"NT File System"の略語、HFS+は、"Hierarchical File System Plus"の略語である。
【０２１６】
障害発生によりファイルサーバSVRの異常終了後に、再起動した場合、ファイル管理ソフトSFは、メタデータの整合性の確認、回復処理が終了するまでは、この異常終了により影響を受けなかったデータの読み込みもできない。従って、大規模なファイルシステムを有する情報処理システムは、前記したメタデータの整合性維持技術、ジャーナリング・ファイルシステムの何れか1つまたは全てを使用しない場合、"MMTR"が非常に長くなる恐れがある。なお、"MMTR"は、障害が発生した後から回復処理が終了するまでの時間(Mean Time To Repair）である。
【０２１７】
(ジャーナリングの適用)
そこで、メタデータ整合性の確認、回復処理の高速化や、処理負荷を削減するため、第1の実施の形態で説明した、メタデータの整合性維持技術(前記した"Soft Updates")に、ジャーナリングを適用する技術がある。ジャーナリングを適用したメタデータの整合性維持技術は、ジャーナルログを参照し、第1の二次記憶装置1081に対して、前記した確認、回復処理を実行する。
【０２１８】
なお、メタデータの整合性維持技術において、以下の場合にジャーナリングを適用してもよい。データの解放において、前記したようにメタデータが実際に二次記憶装置に書き込まれる前にファイルサーバSVRが異常終了すると、以下の状態が発生することがある。この状態は、実際は解放済みであるはずのデータに対し、二次記憶装置のメタデータにおいては未解放として登録(記憶)されたままの状態である。かかる場合、このような状態から回復する処理を実行することが望まれる。かかる回復処理(回収処理とも呼ばれる)は、ファイルサーバSVRの起動直後に行う必要がないので、回収処理によって、ファイルサーバSVRの再起動時間が遅延することはない。
【０２１９】
しかし、この回収処理が、起動後にバックグラウンドで実行される間、二次記憶装置に対してファイルアクセスが実行されるので、処理負荷が増す。そこで、データの解放において、ジャーナリングを行うことで、ジャーナリングにおけるログのデータ量の削減を図る。ジャーナリングを適用したメタデータの整合性維持技術は、ジャーナルログを参照し、前記した状態から回復する処理を行う。
【０２２０】
(ジャーナルログのスケジューリング)
図18は、図1のファイルサーバSVRの第2のソフトウェアブロック図である。ファイル管理ソフトSFは、図3のファイル管理ソフトSFの各部に加えて、履歴部16を有する。履歴部16は、メタデータに対する処理の履歴を示す履歴データ(以下、ログと適宜記す)を生成する。履歴部16は、メタデータが更新されると、このメタデータのログを作成しRAM102に記憶する。ファイル管理ソフトSFは、更新されたメタデータを第1の二次記憶装置1081に書き込む前に、更新内容を含むログを、第1の二次記憶装置1081に書き込む。換言すれば、ログとメタデータの書き込み順序を守る必要がある。さらに、複数のログがある場合、ログ間の書き込み順序を守る必要がある。この書き込み順序を維持するために、第1の実施の形態で説明したように、I/Oバリアを発行する必要がある。そして、このI/Oバリアの発行による処理遅延を抑制する必要がある。
【０２２１】
特に、ファイル管理ソフトSFが、ログを第1の二次記憶装置1081に書き込む度に、I/Oバリアを発行すると、第1の実施の形態で説明したように、このI/Oバリアの発行の影響により、アプリケーションソフトに制御を戻すまでの時間が大幅に長くなる。その結果、ジャーナリングを適用したファイル管理方式では、ジャーナリングを適用していないファイル管理方式に比べて、アプリケーションソフトに制御を戻すまでの時間が長くなりやすい。
【０２２２】
そこで、グルーピング部12は、更新されたメタデータがスケジューリングされた発行時間よりも前の発行時間(例えば、1つ前の発行時間)に、更新されたメタデータのログをグルーピングする。そして、書き込み順序保証部13は、スケジューリング情報を更新する。
【０２２３】
(グルーピング)
図19は、ログの書き込み処理を具体的に説明する図である。図19では、図12における第8の時間T8の内容を省略し、新たに、第0の時間T0〜第1の時間T1の内容を追加したものである。図19では、図12で説明した順序で、データの削除を実行する。
【０２２４】
ファイル管理ソフトSFは、最上位のメタデータのログTg、第2のフォルダのメタデータのログFD2g、第1のフォルダのメタデータのログFD1g、第1のファイルのメタデータのログFL1g、第2のファイルのメタデータのログFL2gを生成し、RAM102に記憶する。
【０２２５】
そして、グルーピング部12は、前記したデータの削除の具体例で説明したように、ログ以外のデータについて、解放順序を決定する(S3)。次いで、グルーピング部12は、更新されたメタデータがスケジューリングされた発行時間よりも前の発行時間に、更新されたメタデータのログを再グルーピングする。
【０２２６】
グルーピング部12は、第2の時間T2よりも前の発行時間である第1の時間T1に最上位のメタデータのログTgをグルーピングする。グルーピング部12は、第3の時間T3よりも前の発行時間である第2の時間T2に、最上位のメタデータTmに加えて、第2のフォルダのメタデータのログFD2gをグループピングする。グルーピング部12は、第5の時間T5よりも前の発行時間である第4の時間T4に、第2のフォルダのデータFD2dに加えて、第1のフォルダのメタデータのログFD1gをグループピングする。
【０２２７】
グルーピング部12は、第7の時間T7よりも前の発行時間である第6の時間T6に、第1のファイルのメタデータFL1m、第2のファイルのメタデータFL2mに加えて、以下のログをグルーピングする。このログは、第1のファイルのメタデータのログFL1g、第2のファイルのメタデータのログFL2gである。
【０２２８】
(スケジューリング情報)
書き込み順序保証部13は、再グルーピングした情報が更新されたスケジューリング情報を作成し、作成したスケジューリング情報をRAM102に記憶する。
【０２２９】
図20は、再グルーピングした情報が更新されたスケジューリング情報を示す図である。図20では、スケジューリング情報をテーブル形式で示している。スケジューリングテーブルTBL5は、図11のスケジューリングテーブルTBL2と同様の構成を有する。図20の例では、識別子欄に、識別子として、図12で示したデータの符号を記憶する。
【０２３０】
前記例では、第1の時間T1に最上位のメタデータのログTgの書き込みが実行されるようにスケジューリングがされる。そこで、書き込み順序保証部13は、第1の時間T1が記憶されたセル(T1)が属する行と識別子欄とが交わるセルに、第1の時間T1にスケジューリングされた最上位のメタデータのログTgの識別子"Tg"を記憶する。
【０２３１】
また、第2の時間T2に、最上位のメタデータTm、第2のフォルダのメタデータのログFD2gの書き込みが実行されるようにスケジューリングがされる。そこで、書き込み順序保証部13は、第2の時間T2が記憶されたセル(T2)が属する行と識別子欄とが交わるセルに、以下の識別子を記憶する。この識別子は、第2の時間T2にスケジューリングされた最上位のメタデータTmの識別子"Tm"と、第2のフォルダのメタデータのログFD2gの識別子"FD2g"である。なお、他の時間については、説明を省略する。
【０２３２】
以上説明したように、書き込み順序保証部13は、メタデータの識別子が対応付けて記憶された発行時間よりも前の発行時間である対象発行時間とこのメタデータのログの識別子(ログ識別子とも呼ぶ)とを対応付けてRAM102に記憶する。図20の例によれば、このメタデータは例えば最上位のメタデータTmであり、この発行時間は例えば第2の時間T2であり、この発行時間よりも前の発行時間は例えば第1の時間T1である。さらに、このメタデータのログは、例えば最上位のメタデータのログTgであり、このログの識別子は"Tg"である。
【０２３３】
書き込み順序保証部13は、決定した書き込み順序に基づき、前の発行時間である対象発行時間と対応付けて記憶された識別子により識別されるログと前の発行時間である対象発行時間に対応するI/Oバリアとを揮発性内部バッファ107に順次記憶する。
【０２３４】
I/Oコントローラ106は、前の発行時間である対象発行時間に到達した場合、この対象発行時間に対応するI/Oバリアよりも前に揮発性内部バッファ107に記憶されたメタデータとログとを第1の二次記憶装置1081に書き込む。
【０２３５】
詳しくは、書き込み順序保証部13は、図20のスケジューリングテーブルTBL5に基づき、発行時間の各々にスケジューリングされた各種データ(ログも含む)と、この発行時間に発行するI/OバリアをI/Oコントローラ106に出力する(S11)。I/Oコントローラ106は、受信した各種データとI/Oバリアとを順に、揮発性内部バッファ107に記憶する(S12)。以後、I/Oバリアの発行処理(S21、S22)が実行され、各種データが決定された書き込み順序に従って第1の二次記憶装置1081に書き込まれる。また、各種データが決定された書き込み順序に従って第1の二次記憶装置1081から解放される。
【０２３６】
本実施の形態では他の各種データ用に発行されるI/Oバリアを、ログのためのI/Oバリアとして利用している。この利用により、各ログの第1の二次記憶装置1081に対する書き込み順序を守るためにI/Oバリアの発行回数を減らすことができる。図19の例の場合、本実施の形態のスケジューリングを行わない場合、各ログの第1の二次記憶装置1081に対する書き込み順序を守るためには、4つのログ毎に専用のI/Oバリアを4回発行する必要がある。しかし、本実施の形態によれば、他の各種データのためのI/Oバリアを、ログのためのI/Oバリアとして利用しているので、各ログの第1の二次記憶装置1081に対する書き込み順序を守るために専用のI/Oバリアを発行する必要がない。
【０２３７】
なお、I/Oバリアの発行を抑制する方法として、メタデータの変更が比較的少ない情報処理システムにおいて、電源を含む二重化や無停電電源装置等の対策などにより電源断リスクを軽減した上で、I/Oバリアの発行を抑制する方法もある。なお、メタデータの変更が比較的少ない情報処理システムは、例えば、主に更新されるファイルが、データベース管理システムが使用する特定少数のファイルを記憶するファイルサーバを含むシステムである。
【０２３８】
しかし、かかる方法では、前記した対策によるコストの増加の他、電源断対策が有効に機能しなかった場合に、メタデータの整合性が取れなくなるリスクは残存することになり現実的ではない。
【０２３９】
以上の実施の形態をまとめると、次の付記のとおりである。
【０２４０】
（付記１）
第1の記憶装置と、
前記第1の記憶装置への書き込み対象である、主記憶装置が記憶するデータを記憶する第2の記憶装置と、
書き込み命令の発行時間を管理する管理部と、
各データの管理データである各メタデータの前記第1の記憶装置への書き込み順序を、前記メタデータの管理関係を示す管理情報に基づいて決定する決定部と、
各メタデータを識別する識別子と各書き込み命令の発行時間とを対応付けて記憶する場合、決定した前記書き込み順序に基づき、書き込み命令の発行時間に対応して記憶された識別子により識別されるメタデータと、前記メタデータに対応する書き込み命令とを前記第2の記憶装置に順次記憶する割当部と、
前記書き込み命令の発行時間に到達した場合、到達した前記発行時間に対応する書き込み命令よりも前に前記第2の記憶装置に記憶されたメタデータを、前記第1の記憶装置に書き込む制御部を有するファイルシステム。
【０２４１】
（付記２）
前記割当部は、
少なくとも1つの発行時間と複数のメタデータの識別子とを対応付けて記憶する付記1記載のファイルシステム。
【０２４２】
（付記３）
前記決定部は、
前記管理情報に基づき、第1のメタデータと、第2のメタデータと、前記第1メタデータ及び前記第2のメタデータに関連する第3のメタデータとを前記第1の記憶装置に書き込む書き込み順序を決定し、
前記割当部は、
前記管理部が管理する第1の発行時間と、前記第1のメタデータの識別子と前記第2のメタデータの識別子とを対応付けて記憶し、さらに、前記管理部が管理する第2の発行時間と前記第3のメタデータの識別子とを対応付けて記憶する付記2記載のファイルシステム。
【０２４３】
（付記４）
前記決定部は、前記第1のメタデータが管理する第1のデータ、前記第2のメタデータが管理する第2のデータを前記第1の記憶装置に書き込む指示を受け付けると、前記管理情報に基づき、前記第1の記憶装置に書き込む第1の順番が前記第1のメタデータ、第2のメタデータ、前記第1の記憶装置に書き込む第2の順番が前記第3のメタデータと決定し、
前記割当部は、前記第1の発行時間よりも後の前記第2の発行時間と前記第3のメタデータの識別子とを対応付けて記憶することを特徴とする付記3記載のファイルシステム。
【０２４４】
（付記５）
前記決定部は、前記第1のメタデータが管理する、前記第1の記憶装置に書き込み済みの第1のデータ、前記第1の記憶装置に書き込み済みの前記第2のメタデータが管理する第2のデータを前記第1の記憶装置から削除する指示を受け付けると、前記管理情報に基づき、前記第1の記憶装置に書き込む第1の順番が、更新された前記第3のメタデータ、前記第1の記憶装置に書き込む第2の順番が、更新された前記第1のメタデータ、第2のメタデータと決定し、
前記割当部は、前記第1の発行時間よりも前の前記第2の発行時間と前記第3のメタデータの識別子とを対応付けて記憶することを特徴とする付記3記載のファイルシステム。
【０２４５】
（付記６）
前記主記憶装置に記憶されている、前記第2のメタデータ、前記第3のメタデータが、当該主記憶装置における同じ記憶領域単位に記憶され、前記第1の発行時間が前記第2の発行時間よりも後の時間の場合には、前記割当部は、前記第2の発行時間に更新前の前記第2のメタデータの識別子と更新後の前記第3のメタデータの識別子とを対応付けて記憶し、前記第1の発行時間と更新後の前記第2のメタデータの識別子と更新後の前記第3のメタデータの識別子とを対応付けて記憶することを特徴とする付記3記載のファイルシステム。
【０２４６】
（付記７）
前記ファイルシステムはさらに、
前記メタデータに対する処理の履歴を示す履歴データを生成する履歴部を有し、
前記割当部は、
前記メタデータの識別子が対応付けて記憶された発行時間よりも前の発行時間である対象発行時間と前記メタデータの履歴データの履歴識別子とを対応付けて記憶し、
前記割当部は、
決定した前記書き込み順序に基づき、前記対象発行時間と対応付けて記憶された履歴識別子により識別される履歴データと前記対象発行時間に対応する前記書き込み命令とを前記第2の記憶装置に順次記憶し、
前記制御部は、
前記対象発行時間に到達した場合、前記対象発行時間に対応する前記書き込み命令よりも前に前記第2の記憶装置に記憶されたメタデータと履歴データとを前記第1の記憶装置に書き込む請求項1記載のファイルシステム。
【０２４７】
（付記８）
前記管理部は、前記発行時間と当該発行時間の次の発行時間との時間間隔を所定の時間間隔とする付記1記載のファイルシステム。
【０２４８】
（付記９）
第1の記憶装置と、前記第1の記憶装置への書き込み対象である、主記憶装置が記憶するデータを記憶する第2の記憶装置と、書き込み命令の発行時間を管理する管理部とを有するファイルシステムの制御方法において、
前記ファイルシステムが有する決定部が、各データの管理データである各メタデータの前記第1の記憶装置への書き込み順序を、前記メタデータの管理関係を示す管理情報に基づいて決定し、
前記ファイルシステムが有する割当部が、各メタデータを識別する識別子と各書き込み命令の発行時間とを対応付けて記憶する場合、決定した前記書き込み順序に基づき、書き込み命令の発行時間に対応して記憶された識別子により識別されるメタデータと、前記メタデータに対応する書き込み命令とを前記第2の記憶装置に順次記憶し、
前記ファイルシステムが有する制御部が、前記書き込み命令の発行時間に到達した場合、到達した前記発行時間に対応する書き込み命令よりも前に前記第2の記憶装置に記憶されたメタデータを、前記第1の記憶装置に書き込むファイルシステムの制御方法。
【０２４９】
（付記１０）
第1の記憶装置と、前記第1の記憶装置への書き込み対象である、主記憶装置が記憶するデータを記憶する第2の記憶装置と、書き込み命令の発行時間を管理する管理部とを有するファイルシステムの制御プログラムにおいて、
前記ファイルシステムが有する決定部に、各データの管理データである各メタデータの前記第1の記憶装置への書き込み順序を、前記メタデータの管理関係を示す管理情報に基づいて決定させ、
前記ファイルシステムが有する割当部に、各メタデータを識別する識別子と各書き込み命令の発行時間とを対応付けて記憶する場合、決定した前記書き込み順序に基づき、書き込み命令の発行時間に対応して記憶された識別子により識別されるメタデータと、前記メタデータに対応する書き込み命令とを前記第2の記憶装置に順次記憶させ、
前記ファイルシステムが有する制御部に、前記書き込み命令の発行時間に到達した場合、到達した前記発行時間に対応する書き込み命令よりも前に前記第2の記憶装置に記憶されたメタデータを、前記第1の記憶装置に書き込ませるファイルシステムの制御プログラム。
【符号の説明】
【０２５０】
101…CPU、102…RAM、103…ROM、104…通信装置、105…外部接続インターフェイス装置、106…I/Oコントローラ、107…揮発性内部バッファ、1081〜108n…第1の二次記憶装置〜第nの二次記憶装置、SF…ファイル管理ソフト、11…タスク受信部、12…グルーピング部(決定部)、13…書き込み順序保証部(割当部)、14…I/Oバリア管理部、15…時間管理部、16…履歴部。
【図１】
0006398693.tif 000002
【図２】
0006398693.tif 000003
【図３】
0006398693.tif 000004
【図４】
0006398693.tif 000005
【図５】
0006398693.tif 000006
【図６】
0006398693.tif 000007
【図７】
0006398693.tif 000008
【図８】
0006398693.tif 000009
【図９】
0006398693.tif 000010
【図１０】
0006398693.tif 000011
【図１１】
0006398693.tif 000012
【図１２】
0006398693.tif 000013
【図１３】
0006398693.tif 000014
【図１４】
0006398693.tif 000015
【図１５】
0006398693.tif 000016
【図１６】
0006398693.tif 000017
【図１７】
0006398693.tif 000018
【図１８】
0006398693.tif 000019
【図１９】
0006398693.tif 000020
【図２０】
0006398693.tif 000021