(57)【要約】【課題】サーバーと、複数のクライアントと、それらによって共用されるファイルシステムとから構成されるファイル共有システムにおいて、サーバーにおいて、無駄なシステム資源を使用することなく、各クライアントから送られてくるＩ／Ｏ要求を効率良く処理できるようにする。【解決手段】サーバー２では、Ｉ／Ｏ処理プロセス２０４により、各クライアント１−１〜１−ｎから送られてきたＩ／Ｏ要求を処理する。ここで、Ｉ／Ｏ処理プロセス２０４の数は、固定ではなく、サーバー２のＩ／Ｏ負荷に応じて動的に変更される。この動的なＩ／Ｏ処理プロセス数の変更は、プロセス数制御手段２１３がＩ／Ｏキュー２０６にキューイングされているＩ／Ｏ要求数や、Ｉ／Ｏ要求によって占有されているＩ／Ｏ処理プロセス２０４の数に基づいて行う。【選択図】      図１
2004348233.tif 000002
【特許請求の範囲】
【請求項１】
ファイルシステムを管理するサーバーと、該サーバーに対してＩ／Ｏ要求を送信する複数のクライアントとを備えたファイル共有システムにおいて、
前記サーバーが、
前記クライアントから送られてきたＩ／Ｏ要求に従った処理を行うＩ／Ｏ処理プロセスであって、前記Ｉ／Ｏ要求に従った処理が完了するまで前記Ｉ／Ｏ要求に占有されるＩ／Ｏ処理プロセスと、
該Ｉ／Ｏ処理プロセスの数を、自サーバーのＩ／Ｏ負荷に応じて動的に変更するプロセス数制御手段とを備えたことを特徴とするファイル共有システム。
【請求項２】
ファイルシステムを管理するサーバーと、該サーバーに対してＩ／Ｏ要求を送信する複数のクライアントとを備えたファイル共有システムにおいて、
前記サーバーが、
前記クライアントから送られてきたＩ／Ｏ要求をキューイングするＩ／Ｏキューと、
該Ｉ／ＯキューからＩ／Ｏ要求を取り出し、該Ｉ／Ｏ要求に従って処理を行うＩ／Ｏ処理プロセスであって、前記Ｉ／Ｏ要求に従った処理が完了するまで、前記Ｉ／Ｏ要求に占有されるＩ／Ｏ処理プロセスと、
前記Ｉ／ＯキューにキューイングされているＩ／Ｏ要求数と、Ｉ／Ｏ処理プロセスを占有しているＩ／Ｏ要求数との和である処理対象Ｉ／Ｏ要求数が増加する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも閾値以上大きい場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで増加させ、処理対象Ｉ／Ｏ要求数が減少する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも前記閾値以上小さい場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで減少させるプロセス数制御手段とを備えたことを特徴とするファイル共有システム。
【請求項３】
請求項２記載のファイル共有システムにおいて、
前記プロセス数制御手段が、
処理対象Ｉ／Ｏ要求数が増加する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも閾値以上多い場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで増加させるための起動プロセス数増加指示を出力し、処理対象Ｉ／Ｏ要求数が減少する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも前記閾値以上少ない場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで減少させるための起動プロセス数減少指示を出力するという処理を所定時間毎に行う処理対象Ｉ／Ｏ要求数増減判別手段と、
該処理対象Ｉ／Ｏ要求数増減判別手段から出力される起動プロセス数増加指示に従って、新たなＩ／Ｏ処理プロセスを起動するプロセス起動手段と、
前記処理対象Ｉ／Ｏ要求数増減判別手段から出力される起動プロセス数減少指示に従って、Ｉ／Ｏ要求待ち状態にあるＩ／Ｏ処理プロセスを終了させるプロセス終了手段とを備えたことを特徴とするファイル共有システム。
【請求項４】
請求項２記載のファイル共有システムにおいて、
前記各クライアントが、
前記ファイルシステム上の論理位置を含むＩ／Ｏ要求を前記サーバーに送信し、前記サーバーから前記Ｉ／Ｏ要求中の論理位置に対応する物理位置を含むｒａｗ  Ｉ／Ｏ情報が返信されたとき、前記ｒａｗ  Ｉ／Ｏ情報に従ってディスク装置に対するＩ／Ｏ処理を行うＩ／Ｏ発行手段を備え、
前記サーバーが、
送信キューと、
該送信キューからｒａｗ  Ｉ／Ｏ情報を取り出し、該ｒａｗ  Ｉ／Ｏ情報に対応するＩ／Ｏ要求の送信元のクライアントへ返信するサーバー側送信手段とを備え、且つ、
前記Ｉ／Ｏ処理プロセスが、
前記Ｉ／ＯキューからＩ／Ｏ要求を取り出し、該取り出したＩ／Ｏ要求中の論理位置に対応する物理位置を含むｒａｗ  Ｉ／Ｏ情報を前記送信キューにキューイングする構成を有することを特徴とするファイル共有システム。
【請求項５】
ファイルシステムを管理するサーバーと、該サーバーに対してＩ／Ｏ要求を送信する複数のクライアントとを備えたファイル共有システムにおいて、
前記各クライアントが、
前記ファイルシステム上の論理位置を含むＩ／Ｏ要求を前記サーバーに送信し、前記サーバーから前記Ｉ／Ｏ要求中の論理位置に対応する物理位置を含む複数のｒａｗ  Ｉ／Ｏ情報が返信される毎に既に行っているＩ／Ｏ処理の終了を待たずに前記ｒａｗ  Ｉ／Ｏ情報に従ってディスク装置に対するＩ／Ｏ処理を行い、前記サーバーから前記Ｉ／Ｏ要求に対するＩ／Ｏ終了通知が送られてきたとき、終了処理を行うＩ／Ｏ発行手段と、
前記ｒａｗ  Ｉ／Ｏ情報に従ったＩ／Ｏ処理が終了する毎に、前記サーバーへＩ／Ｏ終了情報を送信する、前記Ｉ／Ｏ発行手段とは独立して動作するクライアント側送信手段とを備え、
前記サーバーが、
Ｉ／Ｏキューと、
送信キューと、
前記各クライアントから送られてきたＩ／Ｏ要求を前記Ｉ／ＯキューにキューイングするＩ／Ｏ要求受信手段と、
前記Ｉ／ＯキューにキューイングされているＩ／Ｏ要求を取り出し、該取り出したＩ／Ｏ要求中の論理位置に対応する各物理位置毎のｒａｗ  Ｉ／Ｏ情報であって対応する物理位置を含むｒａｗ  Ｉ／Ｏ情報を前記送信キューにキューイングし、前記各ｒａｗ  Ｉ／Ｏ情報に対応するＩ／Ｏ終了情報を全て受信したとき、前記Ｉ／Ｏ要求の送信元のクライアントに対してＩ／Ｏ終了通知を送信するＩ／Ｏ処理プロセスと、
前記送信キューからｒａｗ  Ｉ／Ｏ情報を取り出し、該ｒａｗ  Ｉ／Ｏ情報に対応するＩ／Ｏ要求の送信元のクライアントへ送信するサーバー側送信手段と、
前記各クライアントからのＩ／Ｏ終了情報を受信し、該受信したＩ／Ｏ終了情報を、該Ｉ／Ｏ終了情報と対応するＩ／Ｏ要求によって占有されているＩ／Ｏ処理プロセスに渡す受信手段と、
前記Ｉ／ＯキューにキューイングされているＩ／Ｏ要求数と、Ｉ／Ｏ処理プロセスを占有しているＩ／Ｏ要求数との和である処理対象Ｉ／Ｏ要求数が増加する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも閾値以上大きい場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで増加させ、処理対象Ｉ／Ｏ要求数が減少する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも前記閾値以上小さい場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで減少させるプロセス数制御手段とを備えたことを特徴とするファイル共有システム。
【請求項６】
ファイルシステムを管理すると共に、複数のクライアントからＩ／Ｏ要求が送られてくるサーバーであって、
前記クライアントから送られてきたＩ／Ｏ要求に従った処理を行うＩ／Ｏ処理プロセスであって、前記Ｉ／Ｏ要求に従った処理が完了するまで前記Ｉ／Ｏ要求に占有されるＩ／Ｏ処理プロセスと、
該Ｉ／Ｏ処理プロセスの数を、自サーバーのＩ／Ｏ負荷に応じて動的に変更するプロセス数制御手段とを備えたことを特徴とするサーバー。
【請求項７】
ファイルシステムを管理すると共に、複数のクライアントからＩ／Ｏが送られてくるサーバーであって、
前記クライアントから送られてきたＩ／Ｏ要求をキューイングするＩ／Ｏキューと、
該Ｉ／ＯキューからＩ／Ｏ要求を取り出し、該Ｉ／Ｏ要求に従って処理を行うＩ／Ｏ処理プロセスであって、前記Ｉ／Ｏ要求に従った処理が完了するまで、前記Ｉ／Ｏ要求に占有されるＩ／Ｏ処理プロセスと、
前記Ｉ／ＯキューにキューイングされているＩ／Ｏ要求数と、Ｉ／Ｏ処理プロセスを占有しているＩ／Ｏ要求数との和である処理対象Ｉ／Ｏ要求数が増加する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも閾値以上大きい場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで増加させ、処理対象Ｉ／Ｏ要求数が減少する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも前記閾値以上小さい場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで減少させるプロセス数制御手段とを備えたことを特徴とするサーバー。
【請求項８】
コンピュータを、ファイルシステムを管理すると共に、複数のクライアントからのＩ／Ｏ要求を処理するサーバーとして機能させるためのプログラムであって、
前記コンピュータを、
前記クライアントから送られてきたＩ／Ｏ要求に従った処理を行うＩ／Ｏ処理プロセスであって、前記Ｉ／Ｏ要求に従った処理が完了するまで前記Ｉ／Ｏ要求に占有されるＩ／Ｏ処理プロセス、
該Ｉ／Ｏ処理プロセスの数を、自サーバーのＩ／Ｏ負荷に応じて動的に変更するプロセス数制御手段として機能させるためのプログラム。
【請求項９】
コンピュータを、ファイルシステムを管理すると共に、複数のクライアントからのＩ／Ｏ要求を処理するサーバーとして機能させるためのプログラムであって、
前記クライアントから送られてきたＩ／Ｏ要求をキューイングするＩ／ＯキューからＩ／Ｏ要求を取り出し、該Ｉ／Ｏ要求に従って処理を行うＩ／Ｏ処理プロセスであって、前記Ｉ／Ｏ要求に従った処理が完了するまで、前記Ｉ／Ｏ要求に占有されるＩ／Ｏ処理プロセス、
前記Ｉ／ＯキューにキューイングされているＩ／Ｏ要求数と、Ｉ／Ｏ処理プロセスを占有しているＩ／Ｏ要求数との和である処理対象Ｉ／Ｏ要求数が増加する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも閾値以上大きい場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで増加させ、処理対象Ｉ／Ｏ要求数が減少する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも前記閾値以上小さい場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで減少させるプロセス数制御手段として機能させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ファイルシステムを管理するサーバーと、サーバーに対してＩ／Ｏ要求を送信する複数のクライアントとを備えたファイル共有システムに関し、特に、サーバー上に無駄なシステム資源を確保することなく、効率良くＩ／Ｏ要求を処理することが可能なファイル共有システムに関する。
【０００２】
【従来の技術】
従来から図１４に示すように、ネットワーク回線６を介して相互に接続された複数のクライアント１−１〜１−ｎとサーバー２とが、複数のディスク装置５−１〜５−ｍからなるファイルシステム４を交換機３を介して共有するファイル共有システムが知られている（例えば、特許文献１参照）。
【０００３】
この特許文献１に示されているファイル共有システムは、次のようにしてデータの入出力を行う。先ず、クライアント１−ｉ（１≦ｉ≦ｎ）が、ネットワーク回線６を介してサーバー２へ、Ｉ／Ｏ処理の対象にするファイルのファイル名等を含むＩ／Ｏ要求を送信する。サーバー２内には、Ｉ／Ｏ要求を処理するプロセスである入出力制御手段（図示せず）が存在し、この入出力制御手段は、クライアント１−ｉからＩ／Ｏ要求が送られてくると、Ｉ／Ｏ処理の対象にするディスク装置５−ｊ（１≦ｊ≦ｍ）のネットワークアドレスを求め、このネットワークアドレスをＩ／Ｏ要求に付加した拡張入出力命令をクライアント１−ｉに返信する。クライアント１−ｉでは、拡張入出力命令をディスク装置５−ｊに対するＩ／Ｏ命令に変換し、交換機３を介してディスク装置５−ｊへ発行する。これにより、クライアント１−ｉとディスク装置５−ｊとの間で、サーバー２を介さずに直接データの入出力が行われる。データの入出力が完了すると、クライアント１−ｉは、サーバー２に対して送信完了通知を送り、この通知を受けたサーバー２内の入出力制御手段は、Ｉ／Ｏ要求の完了通知をクライアント１−ｉに返信する。
【０００４】
【特許文献１】
特開２０００−２５０８２１号公報
【０００５】
【発明が解決しようとする課題】
上述した特許文献１に記載された従来の技術によれば、サーバーを介さずに、クライアントとディスク装置との間で直接データを入出力することができるので、サーバーを介してデータを入出力する場合に比較して、高速にデータを入出力することができる。しかし、特許文献１では、Ｉ／Ｏ要求を処理するプロセス（入出力制御手段）のプロセス数については、全く言及していないため、次のような問題があった。
【０００６】
サーバーに多数のクライアントから多数の入出力要求が送られてきた場合、Ｉ／Ｏ要求を処理するプロセス数が少ないと、待ちが発生し、Ｉ／Ｏ処理効率が悪くなる。また、この問題を解消するために、常時多数のプロセスを起動したとすると、Ｉ／Ｏ負荷が低い場合は、サーバーのシステム資源を無駄に消費することになり、Ｉ／Ｏ処理以外の他の処理の処理効率が悪くなる可能性がある。
【０００７】
そこで、本発明の目的は、サーバー上に無駄なシステム資源を確保することなく、効率良くＩ／Ｏ要求を処理できるようにすることにある。
【０００８】
【課題を解決するための手段】
本発明にかかるファイル共有システムは、上記目的を達成するため、
ファイルシステムを管理するサーバーと、該サーバーに対してＩ／Ｏ要求を送信する複数のクライアントとを備えたファイル共有システムにおいて、
前記サーバーが、
前記クライアントから送られてきたＩ／Ｏ要求に従った処理を行うＩ／Ｏ処理プロセスであって、前記Ｉ／Ｏ要求に従った処理が完了するまで前記Ｉ／Ｏ要求に占有されるＩ／Ｏ処理プロセスと、
該Ｉ／Ｏ処理プロセスの数を、自サーバーのＩ／Ｏ負荷に応じて動的に変更するプロセス数制御手段とを備えたことを特徴とする。
【０００９】
より具体的には、本発明にかかるファイル共有システムは、
ファイルシステムを管理するサーバーと、該サーバーに対してＩ／Ｏ要求を送信する複数のクライアントとを備えたファイル共有システムにおいて、
前記サーバーが、
前記クライアントから送られてきたＩ／Ｏ要求をキューイングするＩ／Ｏキューと、
該Ｉ／ＯキューからＩ／Ｏ要求を取り出し、該Ｉ／Ｏ要求に従って処理を行うＩ／Ｏ処理プロセスであって、前記Ｉ／Ｏ要求に従った処理が完了するまで、前記Ｉ／Ｏ要求に占有されるＩ／Ｏ処理プロセスと、
前記Ｉ／ＯキューにキューイングされているＩ／Ｏ要求数と、Ｉ／Ｏ処理プロセスを占有しているＩ／Ｏ要求数との和である処理対象Ｉ／Ｏ要求数が増加する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも閾値以上大きい場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで増加させ、処理対象Ｉ／Ｏ要求数が減少する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも前記閾値以上小さい場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで減少させるプロセス数制御手段とを備えたことを特徴とする。
【００１０】
また、本発明にかかるファイル共有システムは、
前記プロセス数制御手段が、
処理対象Ｉ／Ｏ要求数が増加する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも閾値以上多い場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで増加させるための起動プロセス数増加指示を出力し、処理対象Ｉ／Ｏ要求数が減少する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも前記閾値以上少ない場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで減少させるための起動プロセス数減少指示を出力するという処理を所定時間毎に行う処理対象Ｉ／Ｏ要求数増減判別手段と、
該処理対象Ｉ／Ｏ要求数増減判別手段から出力される起動プロセス数増加指示に従って、新たなＩ／Ｏ処理プロセスを起動するプロセス起動手段と、
前記処理対象Ｉ／Ｏ要求数増減判別手段から出力される起動プロセス数減少指示に従って、Ｉ／Ｏ要求待ち状態にあるＩ／Ｏ処理プロセスを終了させるプロセス終了手段とを備えたことを特徴とする。
【００１１】
また、本発明にかかるファイル共有システムは、クライアントとサーバーとの間でデータをやり取りせず、クライアントとディスク装置との間で直接データを入出力できるようにするため、
前記各クライアントが、
前記ファイルシステム上の論理位置を含むＩ／Ｏ要求を前記サーバーに送信し、前記サーバーから前記Ｉ／Ｏ要求中の論理位置に対応する物理位置を含むｒａｗ  Ｉ／Ｏ情報が返信されたとき、前記ｒａｗ  Ｉ／Ｏ情報に従ってディスク装置に対するＩ／Ｏ処理を行うＩ／Ｏ発行手段を備え、
前記サーバーが、
送信キューと、
該送信キューからｒａｗ  Ｉ／Ｏ情報を取り出し、該ｒａｗ  Ｉ／Ｏ情報に対応するＩ／Ｏ要求の送信元のクライアントへ返信するサーバー側送信手段とを備え、且つ、
前記Ｉ／Ｏ処理プロセスが、
前記Ｉ／ＯキューからＩ／Ｏ要求を取り出し、該取り出したＩ／Ｏ要求中の論理位置に対応する物理位置を含むｒａｗ  Ｉ／Ｏ情報を前記送信キューにキューイングする構成を有することを特徴とする。
【００１２】
また、本発明にかかるファイル共有システムは、Ｉ／Ｏ対象にするファイルが、複数のディスク装置によってストライピングされたファイルシステム上に存在する場合であっても、並列Ｉ／Ｏ性能を損なわないようにするため、
ファイルシステムを管理するサーバーと、該サーバーに対してＩ／Ｏ要求を送信する複数のクライアントとを備えたファイル共有システムにおいて、
前記各クライアントが、
前記ファイルシステム上の論理位置を含むＩ／Ｏ要求を前記サーバーに送信し、前記サーバーから前記Ｉ／Ｏ要求中の論理位置に対応する物理位置を含む複数のｒａｗ  Ｉ／Ｏ情報が返信される毎に既に行っているＩ／Ｏ処理の終了を待たずに前記ｒａｗ  Ｉ／Ｏ情報に従ってディスク装置に対するＩ／Ｏ処理を行い、前記サーバーから前記Ｉ／Ｏ要求に対するＩ／Ｏ終了通知が送られてきたとき、終了処理を行うＩ／Ｏ発行手段と、
前記ｒａｗ  Ｉ／Ｏ情報に従ったＩ／Ｏ処理が終了する毎に、前記サーバーへＩ／Ｏ終了情報を送信する、前記Ｉ／Ｏ発行手段とは独立して動作するクライアント側送信手段とを備え、
前記サーバーが、
Ｉ／Ｏキューと、
送信キューと、
前記各クライアントから送られてきたＩ／Ｏ要求を前記Ｉ／ＯキューにキューイングするＩ／Ｏ要求受信手段と、
前記Ｉ／ＯキューにキューイングされているＩ／Ｏ要求を取り出し、該取り出したＩ／Ｏ要求中の論理位置に対応する各物理位置毎のｒａｗ  Ｉ／Ｏ情報であって対応する物理位置を含むｒａｗ  Ｉ／Ｏ情報を前記送信キューにキューイングし、前記各ｒａｗ  Ｉ／Ｏ情報に対応するＩ／Ｏ終了情報を全て受信したとき、前記Ｉ／Ｏ要求の送信元のクライアントに対してＩ／Ｏ終了通知を送信するＩ／Ｏ処理プロセスと、
前記送信キューからｒａｗ  Ｉ／Ｏ情報を取り出し、該ｒａｗ  Ｉ／Ｏ情報に対応するＩ／Ｏ要求の送信元のクライアントへ送信するサーバー側送信手段と、
前記各クライアントからのＩ／Ｏ終了情報を受信し、該受信したＩ／Ｏ終了情報を、該Ｉ／Ｏ終了情報と対応するＩ／Ｏ要求によって占有されているＩ／Ｏ処理プロセスに渡す受信手段と、
前記Ｉ／ＯキューにキューイングされているＩ／Ｏ要求数と、Ｉ／Ｏ処理プロセスを占有しているＩ／Ｏ要求数との和である処理対象Ｉ／Ｏ要求数が増加する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも閾値以上大きい場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで増加させ、処理対象Ｉ／Ｏ要求数が減少する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも前記閾値以上小さい場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで減少させるプロセス数制御手段とを備えたことを特徴とする。
【００１３】
【作用】
サーバーに対して、多数のクライアントから多数のＩ／Ｏ要求が発行され、サーバーのＩ／Ｏ負荷が高くなった場合、Ｉ／Ｏ要求を効率的に処理するためには、多くのＩ／Ｏ処理プロセスが必要になる。一方、Ｉ／Ｏ負荷が低い場合は、多数のＩ／Ｏ処理プロセスは必要としないが、Ｉ／Ｏ負荷が上がった場合のことを考慮して、予めクライアントからのＩ／Ｏ要求数に見合った数のＩ／Ｏ処理プロセスを起動しておく必要がある。しかし、負荷が低い場合に、Ｉ／Ｏ負荷が上がった場合のことを考慮して多くのＩ／Ｏ処理プロセスを起動しておくと、システム資源が無駄に消費され、他の処理に悪影響を与える可能性がある。
【００１４】
そこで、本発明では、Ｉ／Ｏ要求を処理するＩ／Ｏ処理プロセスの数を、サーバーのＩ／Ｏ負荷に応じて動的に変更するプロセス数制御手段を設けることにより、サーバー上に無駄なシステム資源を確保することなく、効率良くＩ／Ｏ要求を処理できるようにしている。プロセス数制御手段では、Ｉ／ＯキューにキューイングされているＩ／Ｏ要求数と、Ｉ／Ｏ処理プロセスを占有しているＩ／Ｏ要求数との和である処理対象Ｉ／Ｏ要求数が増加する傾向にあるのか、減少する傾向にあるのかを判断している。そして、処理対象Ｉ／Ｏ要求数が増加する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が、現時点における起動Ｉ／Ｏ処理プロセス数よりも閾値以上大きい場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで増加させる。これに対して、処理対象Ｉ／Ｏ要求数が減少する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が、現時点における起動Ｉ／Ｏ処理プロセス数よりも閾値以上小さい場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで減少させる。
【００１５】
また、本発明のファイル共有システムは、ファイルに対する入出力を行う場合、クライアントからサーバーに対しては、ファイルシステム上の論理位置を含むＩ／Ｏ要求を送信し、サーバーからクライアントに対しては、上記Ｉ／Ｏ要求に含まれている論理位置に対応する物理位置を含むｒａｗ  Ｉ／Ｏ情報を送信するだけであるので、クライアントとサーバーとの間では、入出力するデータをやり取りせずに、クライアントとディスク装置との間で直接データを入出力することが可能になる。
【００１６】
更に、本発明のファイル共有システムは、Ｉ／Ｏ対象にするファイルが、複数のディスク装置によってストライピングされたファイルシステム上に存在する場合における並列Ｉ／Ｏ性能を損なわないようにするため、次のようにしている。Ｉ／Ｏ対象にするファイルが、複数のディスク装置によってストライピングされたファイルシステム上に存在する場合、サーバーは、クライアントに対して、上記ファイルの論理位置に対応する各物理位置毎のｒａｗ  Ｉ／Ｏ情報を送信する。クライアントのＩ／Ｏ発行手段は、ｒａｗ  Ｉ／Ｏ情報を受信する毎に、受信したｒａｗ  Ｉ／Ｏ情報に従ってディスク装置に対してＩ／Ｏ処理を行う。このとき、Ｉ／Ｏ発行手段は、各ｒａｗ  Ｉ／Ｏ情報に対応したＩ／Ｏ処理の終了を待ち合わせずに、ｒａｗ  Ｉ／Ｏ情報を受信する毎に（連続的に）、ｒａｗ  Ｉ／Ｏ情報に従ったＩ／Ｏ処理を行うので、並列Ｉ／Ｏ性能を損なわないようにできる。
【００１７】
【発明の実施の形態】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【００１８】
【実施例の構成】
図１は本発明にかかるファイル共有システムの実施例のブロック図である。同図を参照すると、本実施例にかかるファイル共有システムは、複数のクライアント１−１〜１−ｎと、サーバー２と、交換機３と、複数のディスク装置５−１〜５−ｍを含むファイルシステム４と、クライアント１−１〜１−ｎとサーバー２とを相互に接続するネットワーク回線６とから構成されている。
【００１９】
クライアント１−１は、Ｉ／Ｏ発行プロセス１０１と、割込み処理手段１０５と、送信キュー１０６と、送信プロセス１０７とを備えている。なお、他のクライアントも同様の構成を有している。
【００２０】
Ｉ／Ｏ発行プロセス１０１は、アプリケーションプログラムを実行する一般のプロセスであり、Ｉ／Ｏ要求手段１０２と、Ｉ／Ｏ発行手段１０３と、受信手段１０４とを備えている。
【００２１】
Ｉ／Ｏ要求手段１０２は、アプリケーションプログラムからの要求に従って、Ｉ／Ｏ要求をネットワーク回線６を介してサーバー２へ送信する機能を有する。なお、Ｉ／Ｏ要求には、Ｉ／Ｏ処理の処理対象にするファイルの論理位置、このＩ／Ｏ要求を一意に識別するためのＩ／Ｏ要求識別子、およびｒｅａｄ／ｗｒｉｔｅ種別が含まれている。また、処理対象にするファイルの論理位置は、対象ファイルのファイルハンドラ、ファイルオフセットおよびＩ／Ｏサイズにより表すものとする。また、必要に応じて、Ｉ／Ｏ要求に認証情報を含ませるようにしても良い。
【００２２】
受信手段１０４は、サーバー２からネットワーク回線６を介して送られてくるｒａｗ  Ｉ／Ｏ情報やＩ／Ｏ終了通知を受信する機能、受信したｒａｗ  Ｉ／Ｏ情報をＩ／Ｏ発行手段１０３に渡す機能、および、受信したＩ／Ｏ終了通知に従った終了処理を行う機能を有する。なお、ｒａｗ  Ｉ／Ｏ情報については、後で詳しく説明する。
【００２３】
Ｉ／Ｏ発行手段１０３は、受信手段１０４からｒａｗ  Ｉ／Ｏ情報が渡される毎に、そのｒａｗ  Ｉ／Ｏ情報をディスクドライバが解釈できるＩ／Ｏ命令に変換し、該当するディスク装置５−ｊにＩ／Ｏ命令を発行する機能を有する。
【００２４】
割込み処理手段１０５は、Ｉ／Ｏ発行手段１０３が発行したＩ／Ｏ命令に従ったＩ／Ｏ処理が終了する毎に、Ｉ／Ｏ終了情報を送信キュー１０６にキューイングする機能を有する。なお、Ｉ／Ｏ終了情報には、上記Ｉ／Ｏ命令を発行する契機となったｒａｗ  Ｉ／Ｏ情報とＩ／Ｏ処理結果とが含まれる。
【００２５】
送信プロセス１０７は、システム管理者によって起動されるシステムプロセスであり、送信手段１０８を備えている。この送信手段１０８は、送信キュー１０６にキューイングされているＩ／Ｏ終了情報をネットワーク回線６を介してサーバー２へ送信する機能を有している。
【００２６】
サーバー２は、Ｉ／Ｏ要求受信プロセス２０１と、Ｉ／Ｏキュー２０３と、Ｉ／Ｏ処理プロセス２０４と、送信キュー２０６と、送信プロセス２０７と、受信プロセス２０９と、監視プロセス２１２とを備えている。なお、サーバー２内の各プロセス２０１、２０４、２０７、２０９、２１２は、システム管理者によって起動されるシステムプロセスである。
【００２７】
Ｉ／Ｏ要求受信プロセス２０１は、Ｉ／Ｏ要求受信手段２０２を備えている。このＩ／Ｏ要求受信手段２０２は、クライアント１−ｉから送られてきたＩ／Ｏ要求にクライアント１−ｉのネットワークアドレスを付加してＩ／Ｏキュー２０３にキューイングする機能を有している。
【００２８】
Ｉ／Ｏ処理プロセス２０４は、Ｉ／Ｏ手段２０５と、Ｉ／Ｏ終了通知手段２１１とを備えている。なお、図１では、１個のＩ／Ｏ処理プロセス２０４しか図示していないが、実際にはサーバー２のＩ／Ｏ負荷に応じた数のＩ／Ｏ処理プロセスが起動されている。
【００２９】
Ｉ／Ｏ処理プロセス２０４内のＩ／Ｏ手段２０５は、Ｉ／Ｏキュー２０３にキューイングされているＩ／Ｏ要求（Ｉ／Ｏ要求元クライアントのネットワークアドレスが付加されている）の内の最も古いものを１つ取り出し、取り出したＩ／Ｏ要求に基づいてｒａｗ  Ｉ／Ｏ情報を作成する機能や、作成したｒａｗ  Ｉ／Ｏ情報を送信キュー２０６にキューイングする機能を有する。
【００３０】
ここで、ｒａｗ  Ｉ／Ｏ情報の作成方法について説明しておく。Ｉ／Ｏ要求に基づいてｒａｗ  Ｉ／Ｏ情報を作成する際、Ｉ／Ｏ手段２０５は、例えば、次のような処理を行う。先ず、ファイルシステム４を呼び出し、上記Ｉ／Ｏ要求中の論理位置（ファイルハンドラ、ファイルオフセット及びＩ／Ｏサイズ）をファイルシステム４に渡す。これにより、ファイルシステム４は、上記論理位置に対応する物理位置（Ｉ／Ｏ処理に対象にしているファイルが存在するディスク装置のデバイス番号、開始セクタ番号およびセクタ数）を、Ｉ／Ｏ手段２０５に返却する。Ｉ／Ｏ対象にするファイルが、複数のディスク装置によってストライピングされたファイルシステム上に存在する場合などは、複数の物理位置が返却される。Ｉ／Ｏ手段２０５は、返却された各物理位置毎に、その物理位置と、上記Ｉ／Ｏ要求に含まれていたＩ／Ｏ要求識別子、ｒｅａｄ／ｗｒｉｔｅ種別およびネットワークアドレスと、Ｉ／Ｏ発行プロセス内のＩ／Ｏ対象の仮想メモリの開始アドレスからのオフセットとを含むｒａｗ  Ｉ／Ｏ情報を作成する。
【００３１】
また、Ｉ／Ｏ処理プロセス２０４内のＩ／Ｏ終了通知手段２１１は、受信プロセス２０９から受け取ったＩ／Ｏ終了情報に基づいて、Ｉ／Ｏ要求によって要求されたＩ／Ｏ処理が全て終了したと判断したとき（上記Ｉ／Ｏ要求に基づいて作成した全てのｒａｗ  Ｉ／Ｏ情報に対応するＩ／Ｏ終了情報を受け取ったとき）、ファイルシステムとしての終了処理を行うと共に、エラー情報、Ｉ／Ｏサイズ、Ｉ／Ｏ処理後のファイルオフセット、ファイルの更新情報、Ｉ／Ｏ要求識別子などを含むＩ／Ｏ終了通知を要求元のクライアントへ返信する機能を有する。
【００３２】
送信プロセス２０７は、送信手段２０８を含んでいる。この送信手段２０８は、送信キュー２０６にキューイングされているｒａｗ  Ｉ／Ｏ情報を古いものから順番に取り出し、ｒａｗ  Ｉ／Ｏ情報に含まれているネットワークアドレスに従ってＩ／Ｏ要求元のクライアントへ送信する機能を有する。
【００３３】
受信プロセス２０９は、受信手段２１０を含んでいる。この受信手段２１０は、クライアント１−ｉから送られてきたＩ／Ｏ終了情報を、起動されているＩ／Ｏ処理プロセスの内の、上記Ｉ／Ｏ終了情報に含まれているＩ／Ｏ要求識別子によって特定されるＩ／Ｏ要求を処理しているＩ／Ｏ処理プロセスに渡す機能を有する。
【００３４】
監視プロセス２１２は、プロセス数制御手段２１３を含んでいる。このプロセス数制御手段２１３は、サーバー２のＩ／Ｏ負荷に応じて、Ｉ／Ｏ処理プロセス数を動的に変更する機能を有する。
【００３５】
記録媒体Ｋは、ディスク、半導体メモリ、その他の記録媒体であり、コンピュータからなるサーバー２を、ファイル共有システムの一部として機能させるためのプログラムが記録されている。このプログラムは、サーバー２によって読み取られ、その動作を制御することで、サーバー２上に、Ｉ／Ｏ要求受信プロセス２０１、Ｉ／Ｏキュー２０３、Ｉ／Ｏ処理プロセス２０４、送信キュー２０６、送信プロセス２０７、受信プロセス２０９、監視プロセス２１２を実現する。
【００３６】
【実施例の動作の説明】
次に各図を参照して本実施例の動作について詳細に説明する。なお、図２は、クライアント１−１がＩ／Ｏ要求（このＩ／Ｏ要求が対象にしているファイルが、複数のディスク装置によってストライピングされたファイルシステム上に存在する場合）をサーバー２に送信したときのネットワークシステム全体の処理例を示すフローチャート、図３はＩ／Ｏ発行プロセス１０１の処理例を示すフローチャート、図４は割込み処理手段１０５の処理例を示すフローチャート、図５は送信プロセス１０７の処理例を示すフローチャート、図６はＩ／Ｏ要求受信プロセス２０１の処理例を示すフローチャート、図７はＩ／Ｏ処理プロセス２０４の処理例を示すフローチャート、図８は送信プロセス２０７の処理例を示すフローチャート、図９は受信プロセス２０９の処理例を示すフローチャート、図１０はプロセス数制御手段２１３の構成例を示すブロック図、図１１は監視プロセス２１２の処理例を示すフローチャート、図１２は監視プロセス２１２の処理内容を説明するための図、図１３はクライアント１−１がＩ／Ｏ要求（このＩ／Ｏ要求が対象にしているファイルが、単一のディスク装置上に存在する場合）をサーバー２に送信したときのネットワークシステム全体の処理例を示すフローチャートである。
【００３７】
クライアント１−１内のＩ／Ｏ発行プロセス１０１は、アプリケーションプログラム（図示せず）からファイルのＩ／Ｏ処理が要求されると、Ｉ／Ｏ要求手段１０２を使用してサーバー２へＩ／Ｏ要求を送信する（図２のステップＳ２０１、図３のステップＳ３１）。なお、Ｉ／Ｏ要求には、Ｉ／Ｏ処理の対象にするファイルの論理位置（対象ファイルのファイルハンドラ、ファイルオフセット、Ｉ／Ｏサイズ）と、ｒｅａｄ／ｗｒｉｔｅ種別と、上記Ｉ／Ｏ要求を一意に識別するためのＩ／Ｏ要求識別子とが含まれている。この後、Ｉ／Ｏ発行プロセス１０１においては、受信手段１０４がサーバー２からのパケットを待ち合わせる受信待ち状態となる（図３のステップＳ３２、Ｓ３３）。
【００３８】
クライアント１−１からサーバー２に送信されたＩ／Ｏ要求は、Ｉ／Ｏ要求受信プロセス２０１内のＩ／Ｏ要求受信手段２０２で受信され、Ｉ／Ｏキュー２０３にキューイングされる（図２のステップＳ２０２、図６のステップＳ６１、Ｓ６２）。なお、Ｉ／Ｏ要求をＩ／Ｏキュー２０３にキューイングする際、Ｉ／Ｏ要求受信手段２０２は、要求元クライアント１−１のネットワークアドレスをＩ／Ｏ要求に付加する。この後、Ｉ／Ｏ要求受信手段２０２は、他に受信したＩ／Ｏ要求がなければ、受信待ち状態となる（ステップＳ６３）。
【００３９】
Ｉ／Ｏ処理プロセス２０４内のＩ／Ｏ手段２０５は、図７のフローチャートに示すように、Ｉ／Ｏキュー２０３が空の場合はＩ／Ｏ要求待ち状態となっているが（ステップＳ７１がＮｏ、Ｓ７２）、Ｉ／Ｏキュー２０３にＩ／Ｏ要求がキューイングされている場合には、その内の最も古いＩ／Ｏ要求を１つ取り出す（ステップＳ７１がＹｅｓ、Ｓ７３）。今、例えば、Ｉ／Ｏ手段２０５が、ステップＳ２０２においてＩ／Ｏキュー２０３にキューイングされた、クライアント１−１からのＩ／Ｏ要求およびそれに付加されているクライアント１−１のネットワークアドレスを取り出したとする。
【００４０】
Ｉ／Ｏ手段２０５は、クライアント１−１からのＩ／Ｏ要求およびネットワークアドレスを取り出すと、ファイルシステム４を呼び出し、上記Ｉ／Ｏ要求中の論理位置（ファイルハンドラ、ファイルオフセット及びＩ／Ｏサイズ）をファイルシステム４に渡す。これにより、ファイルシステム４は、上記論理位置に対応する物理位置（Ｉ／Ｏ処理に対象にしているファイルが存在するディスク装置のデバイス番号、開始セクタ番号およびセクタ数）を、Ｉ／Ｏ手段２０５に返却する。Ｉ／Ｏ対象にするファイルが、複数のディスク装置によってストライピングされたファイルシステム上に存在する場合などは、複数の物理位置が返却される（ステップＳ７４）。Ｉ／Ｏ手段２０５は、返却された各物理位置毎に、その物理位置と、上記Ｉ／Ｏ要求に含まれていたＩ／Ｏ要求識別子、ｒｅａｄ／ｗｒｉｔｅ種別およびネットワークアドレスと、Ｉ／Ｏ発行プロセス内のＩ／Ｏ対象の仮想メモリの開始アドレスからのオフセットとを含むｒａｗ  Ｉ／Ｏ情報を作成し、送信キュー２０６にキューイングする（ステップＳ７５、図２のステップＳ２０３）。今、例えば、クライアント１−１からのＩ／Ｏ要求に対して第１番目〜第ｋ番目までの、ｋ個のｒａｗ  Ｉ／Ｏ情報が送信キュー２０６にキューイングされたとする。その後、Ｉ／Ｏ処理プロセス２０４においては、Ｉ／Ｏ終了通知手段２１１がＩ／Ｏ終了情報の受信待ち状態になる（ステップＳ７６）。
【００４１】
送信プロセス２０７内の送信手段２０８は、図８のフローチャートに示すように、送信キュー２０６が空の場合は送信待ち状態となっているが（ステップＳ８１がＮｏ、Ｓ８２）、送信キュー２０６にｒａｗ  Ｉ／Ｏ情報がキューイングされている場合は、最も古いｒａｗ  Ｉ／Ｏ情報を１つ取り出す（ステップＳ８３）。そして、取り出したｒａｗ  Ｉ／Ｏ情報をパケット化し、上記ｒａｗ  Ｉ／Ｏ情報に含まれているネットワークアドレスによって特定されるクライアントへ送信する（ステップＳ８４）。今、例えば、送信手段２０８がクライアント１−１のネットワークアドレスを含んだ第１番目のｒａｗ  Ｉ／Ｏ情報を送信キュー２０６から取り出したとすると、図２に示すように、パケット化された第１番目のｒａｗ  Ｉ／Ｏ情報が、クライアント１−１へ送信される（ステップＳ２０４−１）。
【００４２】
受信手段１０４で受信待ち状態の、クライアント１−１内のＩ／Ｏ発行プロセス１０１は、サーバー２からパケットを受信すると、それがｒａｗ  Ｉ／Ｏ情報なのか、Ｉ／Ｏ終了通知なのかを判断する（ステップＳ３２がＹｅｓ、Ｓ３４）。この例の場合、サーバー２からは、第１番目のｒａｗ  Ｉ／Ｏ情報が送られてきているので、受信手段１０４は、ｒａｗ  Ｉ／Ｏ情報をＩ／Ｏ発行手段１０３に渡す。Ｉ／Ｏ発行手段１０３は、受信手段１０４から第１番目のｒａｗ  Ｉ／Ｏ情報が渡されと、それをディスクドライバが解釈できる第１番目のＩ／Ｏ命令に変換し、該当するディスク装置５−ｊにＩ／Ｏ命令を発行する（ステップＳ３５、Ｓ３６）。これにより、図２に示すように、ディスク装置５−ｊにおいて、第１番目のＩ／Ｏ命令に従ったＩ／Ｏ処理が実行される（ステップＳ２０５−１）。その後、Ｉ／Ｏ発行プロセス１０１は、第１番目のＩ／Ｏ命令に従ったＩ／Ｏ処理の終了待ち合わせは行わず、再度受信手段１０４で受信待ち状態となる（ステップＳ３３）。
【００４３】
ここで、第１番目のＩ／Ｏ命令に従ったＩ／Ｏ処理を実行しているディスク装置５−ｊの処理速度は、クライアント１−１〜１−ｎやサーバー２の処理速度に比較して非常に低速であるため、第１番目のＩ／Ｏ命令に従ったＩ／Ｏ処理が終了する前に、サーバー２内の送信プロセス２０７からクライアント１−１内のＩ／Ｏ発行プロセス１０１に対して第２番目〜第ｋ番目のｒａｗ  Ｉ／Ｏ情報が連続的に送られてくる（ステップＳ２０４−２〜Ｓ２０４−ｋ）。Ｉ／Ｏ発行プロセス１０１は、前述したようにＩ／Ｏ処理の終了待ち合わせは行わず、受信手段１０４で受信待ち状態となっているので（ステップＳ３３）、第２番目〜第ｋ番目のｒａｗ  Ｉ／Ｏ情報が送られてくる毎に、該当するディスク装置にＩ／Ｏ命令を発行し（ステップＳ３５、Ｓ３６）、該当する各ディスク装置においてＩ／Ｏ処理が実行される（ステップＳ２０５−２〜Ｓ２０５−ｋ）。つまり、複数のｒａｗ  Ｉ／Ｏ情報に対応したＩ／Ｏ処理が並行して実行されることになる。
【００４４】
その後、第１番目〜第ｋ番目のＩ／Ｏ命令に従ったＩ／Ｏ処理を実行しているディスク装置の内の、あるディスク装置（例えば、第１番目のＩ／Ｏ命令に従ったＩ／Ｏ処理を実行しているディスク装置５−ｊ）で、第１番目のＩ／Ｏ命令に従ったＩ／Ｏ処理が終了すると、割込み処理手段１０５は、第１番目のＩ／Ｏ終了情報を送信キュー１０６にキューイングする（図４、ステップＳ４１、Ｓ４２）。なお、Ｉ／Ｏ終了情報には、上記Ｉ／Ｏ命令を発行する契機となった第１番目のｒａｗ  Ｉ／Ｏ情報とＩ／Ｏ処理結果とが含まれる。また、上記した処理は、例えば、ディスクドライバの終了処理から起動されるコールバック関数において行われる。この割込み処理手段１０５による処理は、Ｉ／Ｏ命令に従ったＩ／Ｏ処理が終了する毎に行われ、送信キュー１０６には、第１番目〜第ｋ番目のＩ／Ｏ終了情報がキューイングされる。
【００４５】
送信プロセス１０７内の送信手段１０８は、図５のフローチャートに示すように、送信キュー１０６が空の場合は送信待ち状態になっているが（ステップＳ５１がＮｏ、Ｓ５２）、送信キュー１０６にＩ／Ｏ終了情報がキューイングされている場合は、最も古いＩ／Ｏ終了情報を１つ取り出し、それをパケット化してサーバー２へ送信する（ステップＳ５１がＹｅｓ、Ｓ５３、Ｓ５４）。今、例えば、送信キュー１０６に第１番目〜第ｋ番目のＩ／Ｏ終了情報が、その順でキューイングされたとすると、送信手段１０８は、図２に示すように、第１番目〜第ｋ番目のＩ／Ｏ終了情報を順次サーバー２へ送信することになる（ステップＳ２０６−１〜Ｓ２０６−ｋ）。
【００４６】
クライアント１−１から最初に送られてくる第１番目のＩ／Ｏ終了情報は、受信プロセス２０９の受信手段２１０によって受信され、上記第１番目のＩ／Ｏ終了情報に含まれているＩ／Ｏ要求識別子によって特定されるＩ／Ｏ要求を処理しているＩ／Ｏ処理プロセス２０４内のＩ／Ｏ終了通知手段２１１に渡される（図９のステップＳ９１がＹｅｓ、Ｓ９３）。その後、受信手段２１０は、Ｉ／Ｏ終了情報の受信待ち状態となる（ステップＳ９２）。
【００４７】
Ｉ／Ｏ終了通知手段２１１は、受信手段２１０から第１番目のＩ／Ｏ終了情報が渡されると、ファイルシステム４を利用して、現在処理中のＩ／Ｏ要求に関する全てのＩ／Ｏ終了情報を受信したか否かを判断する（図７のステップＳ７７、Ｓ７８）。この例の場合、第１番目〜第ｋ番目のＩ／Ｏ終了情報の内の第１番目のＩ／Ｏ終了情報しか受信していないので、Ｉ／Ｏ終了通知手段２１１は、Ｉ／Ｏ処理終了待ち状態となる（ステップＳ７８がＮｏ、Ｓ７６）。
【００４８】
クライアント１−１から送られてくる第２番目〜第（ｋ−１）番目のＩ／Ｏ終了情報についても、受信手段２１０及びＩ／Ｏ終了通知手段２１１において前述した処理と同様の処理が行われる。
【００４９】
サーバー２内のＩ／Ｏ終了通知手段２１１は、受信プロセス２０９を介してクライアント１−１からの第ｋ番目（最後）のＩ／Ｏ処理情報を受信すると、ファイルシステム４を利用して、現在処理中のＩ／Ｏ要求に関する全てのＩ／Ｏ終了情報を受信したか否かを判断する（図７のステップＳ７７、Ｓ７８）。そして、この第ｋ番目のＩ／Ｏ終了情報を受信することにより、第１番目〜第ｋ番目のＩ／Ｏ終了要求を全て受信したと判断すると、第１番目〜第ｋ番目のＩ／Ｏ終了情報に基づいて、ファイルシステム４に対する終了処理を行い、その後、処理結果（エラー情報等）や、Ｉ／Ｏサイズ、Ｉ／Ｏ後のファイルオフセット、ファイルの更新情報、Ｉ／Ｏ要求識別子等を含むＩ／Ｏ終了通知をパケット化してクライアント１−１へ送信する（図２のステップＳ２０７、図７のステップＳ７９）。
【００５０】
受信手段１０４で受信待ち状態のＩ／Ｏ発行プロセス１０１は、サーバー２からパケット化されたＩ／Ｏ終了通知を受信すると（図３のステップＳ３２がＹｅｓ、Ｓ３４がＹｅｓ）、処理結果を要求元のアプリケーションプログラムに返却する等の終了処理を行った後、ユーザモードに復帰する（ステップＳ３７、Ｓ３８、図２のステップＳ２０８）。
【００５１】
なお、図２は、Ｉ／Ｏ対象にするファイルが、複数のディスク装置によってストライピングされたファイルシステム上に存在する場合の動作例を示したが、Ｉ／Ｏ対象にするファイルが単一ディスク装置上に存在する場合は、例えば、図１３に示すような動作が行われる。
【００５２】
クライアント１−１内のＩ／Ｏ発行プロセス１０１が、Ｉ／Ｏ要求をサーバー２に送信すると（ステップＳ１３１）、サーバー２内のＩ／Ｏ要求受信手段２０２が、クライアント１−１からのＩ／Ｏ要求をＩ／Ｏキュー２０３にキューイングし（ステップＳ１３２）、Ｉ／Ｏ手段２０５がＩ／Ｏキュー２０３からＩ／Ｏ要求を取り出し、取り出したＩ／Ｏ要求に対応するｒａｗ  Ｉ／Ｏ情報を送信キュー２０６にキューイングする（ステップＳ１３３）。この例の場合、Ｉ／Ｏ対象ファイルが単一のディスク装置上に存在するので、Ｉ／Ｏ手段２０５は、１個のｒａｗ  Ｉ／Ｏ情報を送信キュー２０６にキューイングすることになる。送信キュー２０６にキューイングされたｒａｗ  Ｉ／Ｏ情報は、送信手段２０８によってクライアント１−１に送信される（ステップＳ１３４）。
【００５３】
クライアント１−１内のＩ／Ｏ発行プロセス１０１は、送信手段２０８から送られてきたｒａｗ  Ｉ／Ｏ情報に対応したＩ／Ｏ命令を該当するディスク装置に発行する。これにより、該当するディスク装置において、Ｉ／Ｏ命令に従ったＩ／Ｏ処理が実行される（ステップＳ１３５）。
【００５４】
ディスク装置でのＩ／Ｏ処理が終了すると、割込み処理手段１０５がＩ／Ｏ終了情報を送信キュー１０６にキューイングし、送信手段１０８が送信キュー１０６にキューイングされているＩ／Ｏ終了情報をサーバー２へ送信する（ステップＳ１３６）。
【００５５】
サーバー２内のＩ／Ｏ終了通知手段２１１は、受信手段２１０を介してＩ／Ｏ終了情報を受信すると、全てのＩ／Ｏ終了情報を受信したことになるので、Ｉ／Ｏ終了通知をクライアント１−１へ送信する（ステップＳ１３８）。クライアント１−１内のＩ／Ｏ発行プロセス１０１は、Ｉ／Ｏ終了通知を受信すると、終了処理を行う（ステップＳ１３８）。図１３の例においては、クライアント１−１が１個のＩ／Ｏ要求をサーバー２に送信した場合の動作を示したが、例えば、クライアント１−１がステップＳ１３１の直後に他のＩ／Ｏ要求をサーバー２へ送信した場合は、この他のＩ／Ｏ要求に対応するｒａｗ  Ｉ／Ｏ情報が、ステップＳ１３５とステップＳ１３６との間（最初のｒａｗ  Ｉ／Ｏ情報に従ったＩ／Ｏ処理をディスク装置が行っている間）において、クライアント１−１内のＩ／Ｏ発行プロセス１０１で受信され、このｒａｗ  Ｉ／Ｏ情報に従ったＩ／Ｏ処理が実行される。つまり、上記他のＩ／Ｏ要求に従ったＩ／Ｏ処理と、最初のＩ／Ｏ要求に従ったＩ／Ｏ処理とが並列に実行される。
【００５６】
なお、上述した説明において、Ｉ／Ｏキュー２０３、送信キュー２０６及び送信キュー１０６を操作する場合は、排他制御をして、競合が発生しないようにする。
【００５７】
監視プロセス２１２は、上記一連のＩ／Ｏ処理とは独立に動作する。図１０に監視プロセス２１２内のプロセス数制御手段２１３の構成例を示す。同図に示すように、プロセス数制御手段２１３は、処理対象Ｉ／Ｏ要求数増減判別手段２１３−１と、処理対象Ｉ／Ｏ要求数管理表２１３−２と、プロセス起動手段２１３−３と、プロセス終了手段２１３−４とを備えている。
【００５８】
処置対象Ｉ／Ｏ要求数増減判別手段２１３−１は、所定時間ｄｔ毎の観測点において処理対象Ｉ／Ｏ要求数（Ｉ／Ｏキュー２０３にキューイングされているＩ／Ｏ要求の数と、Ｉ／Ｏ処理プロセス２０４を占有しているＩ／Ｏ要求の数との和）を求め、処理対象Ｉ／Ｏ要求数管理表２１２−２に登録する機能や、処理対象Ｉ／Ｏ要求数管理表２１２−２に登録されている過去ｎ回分の処理対象Ｉ／Ｏ要求数に基づいて、処理対象Ｉ／Ｏ要求数が増加する傾向にあるのか、減少する傾向にあるのかを判別する機能を有する。更に、処理対象Ｉ／Ｏ要求数増減判別手段２１３−１は、処理対象Ｉ／Ｏ要求数が増加する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも閾値α以上多い場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで増加させるための起動プロセス数増加指示を出力し、処理対象Ｉ／Ｏ要求数が減少する傾向にあり、且つ現時点における処理対象Ｉ／Ｏ要求数が現時点における起動Ｉ／Ｏ処理プロセス数よりも閾値α以上少ない場合は、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで減少させるための起動プロセス数減少指示を出力する機能を有する。
【００５９】
処理対象Ｉ／Ｏ要求数管理表２１３−２には、過去ｎ回分の処理対象Ｉ／Ｏ要求数（最新のｎ個の観測点における処理対象Ｉ／Ｏ要求数）が格納される。
【００６０】
プロセス起動手段２１３−３は、処理対象Ｉ／Ｏ要求数増減判別手段２１３−１から出力される起動プロセス数増加指示に従って、起動Ｉ／Ｏ処理プロセス数が現時点の処理対象Ｉ／Ｏ要求数になるまで新たなＩ／Ｏ処理プロセス２０４を起動する機能を有する。
【００６１】
プロセス終了手段２１３−４は、処理対象Ｉ／Ｏ要求数増減判別手段２１３−１から出力される起動プロセス数減少指示に従って、起動Ｉ／Ｏ処理プロセス数が現時点の処理対象Ｉ／Ｏ要求数になるまで、Ｉ／Ｏ要求待ち状態にあるＩ／Ｏ処理プロセス２０４を終了させる機能を有する。
【００６２】
次に、このような構成を有するプロセス数制御手段２１３の動作について説明する。
【００６３】
処理対象Ｉ／Ｏ要求数増減判別手段２１３−１は、図１１のフローチャートに示すように、ステップＳ１１１において、現時点の処理対象Ｉ／Ｏ要求数を求め、今回求めた処理対象Ｉ／Ｏ要求数を処理対象Ｉ／Ｏ要求数管理表２１２−２に追加登録する。更に、処理対象Ｉ／Ｏ要求数増減判別手段２１３−１は、ステップＳ１１１において、処理対象Ｉ／Ｏ要求数管理表２１２−２に登録されている過去ｎ回分の処理対象Ｉ／Ｏ要求数に基づいて、処理対象Ｉ／Ｏ要求数がどのような割合で増減しているのかを示す傾きを求める。この傾きは、例えば、次式（１）により求める。なお、式（１）において、Ｋ１、Ｋｎは観測点１、ｎにおける処理対象Ｉ／Ｏ要求数を表し、ｔ１、ｔｎは観測点１、ｎの時刻を表している（図１２参照）。また、本実施例では、式（１）により傾きを求めるようにしたが、他の計算式により求めるようにしても良い。
【００６４】
傾き＝（Ｋｎ−Ｋ１）／（ｔｎ−ｔ１）  …（１）
【００６５】
その後、処理対象Ｉ／Ｏ要求数増減判別手段２１３−１は、現時点において起動されているＩ／Ｏ処理プロセス２０４の数を示す起動Ｉ／Ｏ処理プロセス数に閾値αを加算し、ステップＳ１１１で求めた現在の処理対象Ｉ／Ｏ要求数が上記加算結果を超えているか否かを調べる（ステップＳ１１２、Ｓ１１３）。但し、運用開始直後で、処理対象Ｉ／Ｏ要求数管理表２１２−２に過去ｎ回分の処理対象Ｉ／Ｏ要求数が登録されていない場合は、ステップＳ１２０の処理を行う。
【００６６】
ステップＳ１１３において、現時点の処理対象Ｉ／Ｏ要求数が（現時点の起動Ｉ／Ｏ処理プロセス数＋α）を超えていると判断した場合は、ステップＳ１１１で求めた傾きに基づいて、処理対象Ｉ／Ｏ要求数が増加する傾向にあるか否かを判断する（ステップＳ１１４）。本実施例では、傾きが正または０の場合、増加する傾向にあると判断するが、傾きが正の場合のみ増加する傾向にあると判断するようにしても良い。
【００６７】
そして、増加する傾向にあると判断した場合（ステップＳ１１４がＹｅｓ）は、プロセス起動手段２１３−３に対して、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで増加させることを指示する起動プロセス数増加指示を出力する（ステップＳ１１５）。これにより、プロセス起動手段２１３−３は、起動Ｉ／Ｏ処理プロセス数が現時点の処理対象Ｉ／Ｏ要求数になるまで、新たなＩ／Ｏ処理プロセスを起動する。その後、処理対象Ｉ／Ｏ要求数増減判別手段２１３−１は、一定時間ｄｔだけ停止し（ステップＳ１２０）、再びステップＳ１１１の処理を行う。
【００６８】
これに対して、増加する傾向にないと判断した場合（ステップＳ１１４がＮｏ）は、ステップＳ１２０の処理に移る。
【００６９】
また、ステップＳ１１３において、現時点の処理対象Ｉ／Ｏ要求数が（現時点の起動Ｉ／Ｏ処理プロセス数＋α）を超えていないと判断した場合は、ステップＳ１１６の処理を行う。ステップＳ１１６では、現時点の起動Ｉ／Ｏ処理プロセス数から閾値αを減算し、次のステップＳ１１７では、現時点の処理対象Ｉ／Ｏ要求数が（現時点の起動Ｉ／Ｏ処理プロセス数−α）を下回っているか否かを判断する。
【００７０】
ステップＳ１１７において、現時点の処理対象Ｉ／Ｏ要求数が（現時点の起動Ｉ／Ｏ処理プロセス数−α）を下回っていると判断した場合は、ステップＳ１１１で求めた傾きに基づいて、処理対象Ｉ／Ｏ要求数が減少する傾向にあるか否かを判断する（ステップＳ１１８）。本実施例では、傾きが負または０の場合、減少する傾向にあると判断するが、傾きが負の場合のみ減少する傾向にあると判断するようにしても良い。
【００７１】
そして、減少する傾向にあると判断した場合（ステップＳ１１８がＹｅｓ）は、プロセス終了手段２１３−４に対して、起動Ｉ／Ｏ処理プロセス数を現時点の処理対象Ｉ／Ｏ要求数まで減少させることを指示する、起動プロセス数減少指示を出力する（ステップＳ１１９）。これにより、プロセス終了手段２１３−４は、起動Ｉ／Ｏ処理プロセス数が現時点の処理対象Ｉ／Ｏ要求数になるまで、Ｉ／Ｏ要求待ち状態のＩ／Ｏ処理プロセスを終了させる。その後、処理対象Ｉ／Ｏ要求数増減判別手段２１３−１は、一定時間ｄｔだけ停止し（ステップＳ１２０）、再びステップＳ１１１の処理を行う。
【００７２】
これに対して、減少する傾向にないと判断した場合（ステップＳ１１８がＮｏ）は、ステップＳ１２０の処理に移る。
【００７３】
なお、上記ｎ，α，ｄｔの値は、システム管理者が適当な値を設定する。
【００７４】
図１２は、処理対象Ｉ／Ｏ要求数の変化と起動Ｉ／Ｏ処理プロセス数の変化の１例を示したものである。この例の場合、処理対象Ｉ／Ｏ要求数は局所的には減少している部分もあるが、全体的には増加傾向にある。観測点ｎ−１までは、起動Ｉ／Ｏ処理プロセス数と処理対象Ｉ／Ｏ要求数との差分が閾値α以内であるため、起動Ｉ／Ｏ処理プロセス数の変更は行われない。しかし、観測点ｎにおいて、差分が閾値αを超えるため、起動Ｉ／Ｏ処理プロセス数が現時点の処理対象Ｉ／Ｏ要求数まで増やされることになる。
【００７５】
【発明の効果】
第１の効果は、サーバー上のシステム資源を無駄に使用することなく、クライアントからのＩ／Ｏ要求を効率的に処理できることにある。
【００７６】
その理由は、Ｉ／Ｏ負荷に応じて、動的にＩ／Ｏ処理プロセスの数を変更するからである。
【００７７】
第２の効果は、Ｉ／Ｏ対象にするファイルが、複数のディスク装置によってストライピングされたファイルシステム上に存在する場合、並列Ｉ／Ｏ性能を損なわないことにある。
【００７８】
その理由は、Ｉ／Ｏ対象にするファイルが、複数のディスク装置によってストライピングされたファイルシステム上に存在する場合、サーバーからクライアントに対して複数のｒａｗ  Ｉ／Ｏ情報が送られ、クライアントのＩ／Ｏ発行手段が受信した各ｒａｗ  Ｉ／Ｏ情報に従ったＩ／Ｏ処理を行うが、その際、本発明のＩ／Ｏ発行手段では、各ｒａｗ  Ｉ／Ｏ情報に対応したＩ／Ｏ処理の終了を待ち合わせずに、ｒａｗ  Ｉ／Ｏ情報を受信する度に（連続的に）Ｉ／Ｏ処理を行うからである。
【図面の簡単な説明】
【図１】本発明にかかるファイル共有システムの実施例のブロック図である。
【図２】Ｉ／Ｏ対象にするファイルが、複数のディスク装置によってストライピングされたファイルシステム上に存在する場合の、実施例の全体的な処理例を示すフローチャートである。
【図３】Ｉ／Ｏ発行プロセス１０１の処理例を示すフローチャートである。
【図４】割込み処理手段１０５の処理例を示すフローチャートである。
【図５】送信プロセス１０７の処理例を示すフローチャートである。
【図６】Ｉ／Ｏ要求受信プロセス２０１の処理例を示すフローチャートである。
【図７】Ｉ／Ｏ処理プロセス２０４の処理例を示すフローチャートである。
【図８】送信プロセス２０７の処理例を示すフローチャートである。
【図９】受信プロセス２０９の処理例を示すフローチャートである。
【図１０】プロセス数制御手段２１３の構成例を示すブロック図である。
【図１１】監視プロセス２１２の処理例を示すフローチャートである。
【図１２】処理対象Ｉ／Ｏ要求数の変化と起動Ｉ／Ｏ処理プロセス数との変化の一例を示す図である。
【図１３】Ｉ／Ｏ対象にするファイルが、単一のディスク装置上に存在する場合の、実施例の全体的な処理例を示すフローチャートである。
【図１４】一般的なファイル共有システムの構成を示すブロック図である。
【符号の説明】
１−１〜１−ｎ…クライアント
１０１…Ｉ／Ｏ発行プロセス
１０２…Ｉ／Ｏ要求手段
１０３…Ｉ／Ｏ発行手段
１０４…受信手段
１０５…割込み処理手段
１０６…送信キュー
１０７…送信プロセス
１０８…送信手段
２…サーバー
２０１…Ｉ／Ｏ要求受信プロセス
２０２…Ｉ／Ｏ要求受信手段
２０３…Ｉ／Ｏキュー
２０４…Ｉ／Ｏ処理プロセス
２０５…Ｉ／Ｏ手段
２０６…送信キュー
２０７…送信プロセス
２０８…送信手段
２０９…受信プロセス
２１０…受信手段
２１１…Ｉ／Ｏ終了通知手段
２１２…監視プロセス
２１３…プロセス数制御手段
２１３−１…処理対象Ｉ／Ｏ要求数増減判別手段
２１３−２…処理対象Ｉ／Ｏ要求数管理表
２１３−３…プロセス起動手段
２１３−４…プロセス終了手段
Ｋ…記録媒体
３…交換機
４…ファイルシステム
５−１〜５−ｍ…ディスク装置
６…ネットワーク回線
【図１】
2004348233.tif 000003
【図２】
2004348233.tif 000004
【図３】
2004348233.tif 000005
【図４】
2004348233.tif 000006
【図５】
2004348233.tif 000007
【図６】
2004348233.tif 000008
【図７】
2004348233.tif 000009
【図８】
2004348233.tif 000010
【図９】
2004348233.tif 000011
【図１０】
2004348233.tif 000012
【図１１】
2004348233.tif 000013
【図１２】
2004348233.tif 000014
【図１３】
2004348233.tif 000015
【図１４】
2004348233.tif 000016