JPH08212090A - サーバシステム - Google Patents
サーバシステムInfo
- Publication number
- JPH08212090A JPH08212090A JP7017153A JP1715395A JPH08212090A JP H08212090 A JPH08212090 A JP H08212090A JP 7017153 A JP7017153 A JP 7017153A JP 1715395 A JP1715395 A JP 1715395A JP H08212090 A JPH08212090 A JP H08212090A
- Authority
- JP
- Japan
- Prior art keywords
- request
- server
- processing
- disk
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】
【目的】 各デバイスへのアクセスの効率を向上させた
移植性の高いサーバシステムを提供する。 【構成】 サーバシステム20は、ファイルサーバ23
およびI/Oサーバ24を有する。クライアントからデ
ィスク40へのアクセス要求を受け取ると、ファイルサ
ーバ23は、物理的な処理を依頼するI/Oリクエスト
をI/Oサーバ24に対して転送し、現在実行している
スレッドの処理を中断して他のスレッドの処理を実行す
る。I/Oサーバ24は、受信したI/Oリクエストを
リクエストテーブル25に書き込み、所定の順番で各I
/Oリクエストの処理を実行し、そのI/O処理が終了
する毎にI/O終了メッセージをファイルサーバ23へ
返送する。ファイルサーバ23は、I/O終了メッセー
ジに従って中断していたスレッドの処理を再開する。
移植性の高いサーバシステムを提供する。 【構成】 サーバシステム20は、ファイルサーバ23
およびI/Oサーバ24を有する。クライアントからデ
ィスク40へのアクセス要求を受け取ると、ファイルサ
ーバ23は、物理的な処理を依頼するI/Oリクエスト
をI/Oサーバ24に対して転送し、現在実行している
スレッドの処理を中断して他のスレッドの処理を実行す
る。I/Oサーバ24は、受信したI/Oリクエストを
リクエストテーブル25に書き込み、所定の順番で各I
/Oリクエストの処理を実行し、そのI/O処理が終了
する毎にI/O終了メッセージをファイルサーバ23へ
返送する。ファイルサーバ23は、I/O終了メッセー
ジに従って中断していたスレッドの処理を再開する。
Description
【0001】
【産業上の利用分野】本発明は、クライアント・サーバ
方式におけるサーバシステムに係わり、特にファイルを
格納した記憶装置をアクセスするサーバシステムに関す
る。
方式におけるサーバシステムに係わり、特にファイルを
格納した記憶装置をアクセスするサーバシステムに関す
る。
【0002】
【従来の技術】情報処理システムの高速化やダウンサイ
ジング等の要求を受けて、クライアント・サーバ方式が
浸透しつつある。クライアント・サーバ方式のシステム
では、一般に、情報や資源を一元的に管理し提供するコ
ンピュータ(ハードまたはソフト)をサーバと呼び、サ
ーバに対して要求を出してサーバが有する情報や資源を
利用する役割のハードウェアまたはソフトをクライアン
トと呼ぶ。
ジング等の要求を受けて、クライアント・サーバ方式が
浸透しつつある。クライアント・サーバ方式のシステム
では、一般に、情報や資源を一元的に管理し提供するコ
ンピュータ(ハードまたはソフト)をサーバと呼び、サ
ーバに対して要求を出してサーバが有する情報や資源を
利用する役割のハードウェアまたはソフトをクライアン
トと呼ぶ。
【0003】クライアントは、例えばLANにおいて
は、ネットワーク上に接続されたパソコン等の各ユーザ
端末であり、並列計算機等のマルチプロセッサ・システ
ムにおいては、他のマシンまたはプログラム(サーバ)
からサービスを受けるプロセッサまたはプログラムであ
る。また、サーバは、例えばLANにおいては、ネット
ワーク上に接続されたワークステーション等であり、マ
ルチプロセッサ・システムにおいては、クライアントに
対してサービスを提供するプロセッサまたはプログラム
である。サーバとしては、ファイル管理およびそのファ
イルを格納したディスクとの入出力処理(I/O処理)
を行うファイルサーバの他に、Xサーバ、プリントサー
バ、通信サーバ、データベースサーバ等がある。
は、ネットワーク上に接続されたパソコン等の各ユーザ
端末であり、並列計算機等のマルチプロセッサ・システ
ムにおいては、他のマシンまたはプログラム(サーバ)
からサービスを受けるプロセッサまたはプログラムであ
る。また、サーバは、例えばLANにおいては、ネット
ワーク上に接続されたワークステーション等であり、マ
ルチプロセッサ・システムにおいては、クライアントに
対してサービスを提供するプロセッサまたはプログラム
である。サーバとしては、ファイル管理およびそのファ
イルを格納したディスクとの入出力処理(I/O処理)
を行うファイルサーバの他に、Xサーバ、プリントサー
バ、通信サーバ、データベースサーバ等がある。
【0004】従来のサーバでは、一般に、1タスク方式
で処理が実行されていた。例えば、ファイルサーバにお
いては、ディスクに格納されている膨大な量のファイル
を管理するとともに、ディスクへのデータ書込み及びデ
ィスクからのデータ読出し等のI/O処理の起動や、I
/O処理の監視などを1つのファイルサーバ内で行って
いた。
で処理が実行されていた。例えば、ファイルサーバにお
いては、ディスクに格納されている膨大な量のファイル
を管理するとともに、ディスクへのデータ書込み及びデ
ィスクからのデータ読出し等のI/O処理の起動や、I
/O処理の監視などを1つのファイルサーバ内で行って
いた。
【0005】
【発明が解決しようとする課題】上述のように、1タス
ク方式のファイルサーバは、ファイル管理を含むユーザ
タスクの他に、ディスクへアクセスするためのI/O処
理を行うので、特に複数のクライアントからのI/O要
求が集中すると、ファイルサーバの負荷が大きくなって
しまう。すなわち、CPUがディスクへのI/O処理の
ために費やされる時間が増加することによって、ユーザ
タスクを処理するための実行時間が減少してしまい、シ
ステム全体の処理能力が低下してしまう。
ク方式のファイルサーバは、ファイル管理を含むユーザ
タスクの他に、ディスクへアクセスするためのI/O処
理を行うので、特に複数のクライアントからのI/O要
求が集中すると、ファイルサーバの負荷が大きくなって
しまう。すなわち、CPUがディスクへのI/O処理の
ために費やされる時間が増加することによって、ユーザ
タスクを処理するための実行時間が減少してしまい、シ
ステム全体の処理能力が低下してしまう。
【0006】また、ファイルサーバを他の環境に移植す
る場合には、環境ごとにソフト(プログラム)を用意す
る必要があるが、1タスク方式のファイルサーバでは、
例えば異なるベンダのディスクに対応させるために、フ
ァイルサーバのソフト全体を置き換えなければならず、
移植性が悪い。
る場合には、環境ごとにソフト(プログラム)を用意す
る必要があるが、1タスク方式のファイルサーバでは、
例えば異なるベンダのディスクに対応させるために、フ
ァイルサーバのソフト全体を置き換えなければならず、
移植性が悪い。
【0007】ところで、ストリーム入出力においては、
ファイルは単なるバイト列とりて扱われるので、ファイ
ルのI/O処理の実行の時間保証が必要になる。たとえ
ば、動画再生のための画像データをディスクから読み出
す処理においては、読出し速度がばらつくと画像が途切
れる等の不具合が発生するため、時間保証が必要になっ
ている。ところが、一般に、ディスクは、例えば所定間
隔ごとの温度補償制御のような自己補償制御などを行う
ので、時間保証を必要とする処理をクライアントが依頼
したときにこのディスクの自己補償制御が実行される
と、クライアントに対して提供するサービスの時間保証
が出来なくなる場合がある。
ファイルは単なるバイト列とりて扱われるので、ファイ
ルのI/O処理の実行の時間保証が必要になる。たとえ
ば、動画再生のための画像データをディスクから読み出
す処理においては、読出し速度がばらつくと画像が途切
れる等の不具合が発生するため、時間保証が必要になっ
ている。ところが、一般に、ディスクは、例えば所定間
隔ごとの温度補償制御のような自己補償制御などを行う
ので、時間保証を必要とする処理をクライアントが依頼
したときにこのディスクの自己補償制御が実行される
と、クライアントに対して提供するサービスの時間保証
が出来なくなる場合がある。
【0008】上述のような課題は、ファイルサーバのみ
に起因するものではなく、他の各種サーバにおいても考
慮すべき問題である。本発明は、上記課題を解決するも
のであり、各デバイスへのアクセスの効率を向上させた
移植性の高いサーバシステムを提供することを目的とす
る。
に起因するものではなく、他の各種サーバにおいても考
慮すべき問題である。本発明は、上記課題を解決するも
のであり、各デバイスへのアクセスの効率を向上させた
移植性の高いサーバシステムを提供することを目的とす
る。
【0009】
【課題を解決するための手段】本発明の手段を図1を参
照しながら説明する。本発明のサーバシステムは、以下
の2つのサーバから構成される。
照しながら説明する。本発明のサーバシステムは、以下
の2つのサーバから構成される。
【0010】ファイルサーバ(上位サーバ)1は、ファ
イルの管理を行い、上記ファイルを格納するディスク
(デバイスまたは記憶装置)3へのアクセス要求をクラ
イアントから受信したときに、その要求に基づいてディ
スクへの物理的なアクセスを指示するリクエストを発行
する。I/Oサーバ(下位サーバ)2は、ファイルサー
バ1が発行したリクエストに従ってディスク3へのアク
セスを実行する。ファイルサーバ1およびI/Oサーバ
2は、それぞれ独立したCPUを有する。
イルの管理を行い、上記ファイルを格納するディスク
(デバイスまたは記憶装置)3へのアクセス要求をクラ
イアントから受信したときに、その要求に基づいてディ
スクへの物理的なアクセスを指示するリクエストを発行
する。I/Oサーバ(下位サーバ)2は、ファイルサー
バ1が発行したリクエストに従ってディスク3へのアク
セスを実行する。ファイルサーバ1およびI/Oサーバ
2は、それぞれ独立したCPUを有する。
【0011】I/Oサーバ2は、ファイルサーバ1から
リクエストを複数個受信すると、それら複数のリクエス
トを所定のアルゴリズムに基づく順番で実行キューに入
れ、その実行キューに並べられた順番でリクエストの処
理を実行してディスク3を順次アクセスする。このアル
ゴリズムは、たとえば、上記リクエストにプライオリテ
ィ情報を設定し、I/Oサーバ2が、各リクエストのプ
ライオリティ情報に従ってディスク3へのアクセスの順
番を制御するものである。あるいは、ディスク3をアク
セスするための物理情報をリクエストに設定し、I/O
サーバ2が、各リクエストの物理情報に従ってディスク
3へのアクセスの順番を制御するようにしてもよい。
リクエストを複数個受信すると、それら複数のリクエス
トを所定のアルゴリズムに基づく順番で実行キューに入
れ、その実行キューに並べられた順番でリクエストの処
理を実行してディスク3を順次アクセスする。このアル
ゴリズムは、たとえば、上記リクエストにプライオリテ
ィ情報を設定し、I/Oサーバ2が、各リクエストのプ
ライオリティ情報に従ってディスク3へのアクセスの順
番を制御するものである。あるいは、ディスク3をアク
セスするための物理情報をリクエストに設定し、I/O
サーバ2が、各リクエストの物理情報に従ってディスク
3へのアクセスの順番を制御するようにしてもよい。
【0012】I/Oサーバ2にアドレス変換機能を持た
せる。ファイルサーバ1が、ディスク3をアクセスする
ための所定のアドレスをリクエストに設定したときに、
I/Oサーバ2は、その受信したリクエストのアドレス
をディスク3に対応した物理アドレスに変換して、ディ
スク3をアクセスする。
せる。ファイルサーバ1が、ディスク3をアクセスする
ための所定のアドレスをリクエストに設定したときに、
I/Oサーバ2は、その受信したリクエストのアドレス
をディスク3に対応した物理アドレスに変換して、ディ
スク3をアクセスする。
【0013】ファイルサーバ1をマルチスレッド方式と
し、各リクエストをそれぞれ1つのスレッドに対応して
発行するように構成してもよい。この場合、以下の各手
段を設ける。ファイルサーバ1がI/Oサーバ2に対し
て第1のリクエストを発行した時に、その第1のリクエ
ストに対応するスレッドの処理を中断し、実行スレッド
を他のスレッドへ切り換える手段。上記第1のリクエス
トに基づくディスク3へのアクセス処理が終了したとき
に、I/Oサーバ2からファイルサーバ1に対して、上
記第1のリクエストに基づく処理が終了したことを示す
応答を通知する手段。その応答を受信したときに、上記
第1のリクエストに対応するスレッドの処理を再開する
手段。
し、各リクエストをそれぞれ1つのスレッドに対応して
発行するように構成してもよい。この場合、以下の各手
段を設ける。ファイルサーバ1がI/Oサーバ2に対し
て第1のリクエストを発行した時に、その第1のリクエ
ストに対応するスレッドの処理を中断し、実行スレッド
を他のスレッドへ切り換える手段。上記第1のリクエス
トに基づくディスク3へのアクセス処理が終了したとき
に、I/Oサーバ2からファイルサーバ1に対して、上
記第1のリクエストに基づく処理が終了したことを示す
応答を通知する手段。その応答を受信したときに、上記
第1のリクエストに対応するスレッドの処理を再開する
手段。
【0014】さらに、以下の各手段を設ける構成として
もよい。即ち、設定手段は、リクエストに時間情報を設
定する。キュー手段は、複数のリクエストを上記時間情
報に従って並べる。処理手段は、上記キュー手段の先頭
のリクエストに設定されている時間情報に基づいて、そ
のリクエストの処理を実行する。計時手段は、上記時間
情報を計時する。指示手段は、上記キュー手段の先頭の
リクエストに設定されている時間情報が指定する時間の
タイムアウトを上記計時手段によって検出されたとき
に、上記処理手段に対して該リクエストの処理を実行す
るように指示を出す。指示リクエスト作成手段は、ディ
スク3に対して所定の自己処理を行うように指示する指
示リクエストを作成し、その指示リクエストに対して時
間情報を設定する。この指示リクエスト作成手段を設け
る場合、上記キュー手段は、上記リクエストおよび指示
リクエストに設定されている時間情報に従ってそれらリ
クエストおよび指示リクエストを並べ、上記処理手段
は、上記キュー手段の先頭のリクエストまたは指示リク
エストに設定されている時間情報に基づいて、該リクエ
ストまたは指示リクエストの処理を実行する。
もよい。即ち、設定手段は、リクエストに時間情報を設
定する。キュー手段は、複数のリクエストを上記時間情
報に従って並べる。処理手段は、上記キュー手段の先頭
のリクエストに設定されている時間情報に基づいて、そ
のリクエストの処理を実行する。計時手段は、上記時間
情報を計時する。指示手段は、上記キュー手段の先頭の
リクエストに設定されている時間情報が指定する時間の
タイムアウトを上記計時手段によって検出されたとき
に、上記処理手段に対して該リクエストの処理を実行す
るように指示を出す。指示リクエスト作成手段は、ディ
スク3に対して所定の自己処理を行うように指示する指
示リクエストを作成し、その指示リクエストに対して時
間情報を設定する。この指示リクエスト作成手段を設け
る場合、上記キュー手段は、上記リクエストおよび指示
リクエストに設定されている時間情報に従ってそれらリ
クエストおよび指示リクエストを並べ、上記処理手段
は、上記キュー手段の先頭のリクエストまたは指示リク
エストに設定されている時間情報に基づいて、該リクエ
ストまたは指示リクエストの処理を実行する。
【0015】上記各手段は、例えば上述の処理手順を記
述したプログラム、該プログラムを実行するCPU、該
プログラムが格納されるメモリ等から構成される。本発
明のサーバシステムを、一般的なクライアント・サーバ
システムに適用する場合は、クライアントからのデバイ
スアクセス要求を受信し、該要求に基づいたリクエスト
を発行する上位サーバ1と、上位サーバ1が発行したリ
クエストに従ってデバイスへのアクセスを実行する下位
サーバ2とを設ける。
述したプログラム、該プログラムを実行するCPU、該
プログラムが格納されるメモリ等から構成される。本発
明のサーバシステムを、一般的なクライアント・サーバ
システムに適用する場合は、クライアントからのデバイ
スアクセス要求を受信し、該要求に基づいたリクエスト
を発行する上位サーバ1と、上位サーバ1が発行したリ
クエストに従ってデバイスへのアクセスを実行する下位
サーバ2とを設ける。
【0016】
【作用】本発明のサーバシステムによれば、ディスク3
への物理的なアクセス処理をI/Oサーバ(下位サー
バ)2が担当するので、ファイルサーバ(上位サーバ)
1の負荷が軽減される。したがって、ファイルサーバ1
においてユーザタスクを実行する時間が増加する。ま
た、ディスク3の物理的な条件に依存する処理は、すべ
てI/Oサーバ2が実行するので、このサーバシステム
を他の環境へ移植する場合は、ファイルサーバ1を変更
する必要はなく、I/Oサーバ2のみを変更すればよ
い。
への物理的なアクセス処理をI/Oサーバ(下位サー
バ)2が担当するので、ファイルサーバ(上位サーバ)
1の負荷が軽減される。したがって、ファイルサーバ1
においてユーザタスクを実行する時間が増加する。ま
た、ディスク3の物理的な条件に依存する処理は、すべ
てI/Oサーバ2が実行するので、このサーバシステム
を他の環境へ移植する場合は、ファイルサーバ1を変更
する必要はなく、I/Oサーバ2のみを変更すればよ
い。
【0017】I/Oサーバ2は、受信した複数のリクエ
ストをキュー方式で実行するので、ファイルサーバ1
は、所望のタイミングでリクエストを発行することがで
きる。そして、各リクエストにプライオリティ情報を設
定することによって、たとえば優先度の高いサービスの
処理を迅速に行うことができる。また、I/Oサーバ2
が、各リクエストの物理情報に従ってディスク3へのア
クセスの順番を制御するので、たとえばシーク量を最小
にする等、効率的なアクセスが可能になる。
ストをキュー方式で実行するので、ファイルサーバ1
は、所望のタイミングでリクエストを発行することがで
きる。そして、各リクエストにプライオリティ情報を設
定することによって、たとえば優先度の高いサービスの
処理を迅速に行うことができる。また、I/Oサーバ2
が、各リクエストの物理情報に従ってディスク3へのア
クセスの順番を制御するので、たとえばシーク量を最小
にする等、効率的なアクセスが可能になる。
【0018】I/Oサーバ2がアドレス変換機能を有す
るので、ファイルサーバ1は、所定のメモリ空間上でデ
ィスク3へのアクセスアドレスを指定したときに、I/
Oサーバ2は、そのアドレスをディスク3に対応した物
理アドレスに変換する。従って、ファイルサーバ1は、
ディスク3を複数個設けた構成においても、ディスクが
複数個存在することを意識することなくアクセスアドレ
スを指定できる。
るので、ファイルサーバ1は、所定のメモリ空間上でデ
ィスク3へのアクセスアドレスを指定したときに、I/
Oサーバ2は、そのアドレスをディスク3に対応した物
理アドレスに変換する。従って、ファイルサーバ1は、
ディスク3を複数個設けた構成においても、ディスクが
複数個存在することを意識することなくアクセスアドレ
スを指定できる。
【0019】ファイルサーバ1をマルチスレッド方式と
し、I/Oサーバ2へのアクセス処理の依頼時に、発行
したリクエストに対応するスレッドの処理を中断して実
行スレッドを他のスレッドへ切り換え、ディスク3への
アクセス処理の終了時に、上記処理を中断していたスレ
ッドの処理を再開するので、非同期で効率よくI/O処
理を実行できる。
し、I/Oサーバ2へのアクセス処理の依頼時に、発行
したリクエストに対応するスレッドの処理を中断して実
行スレッドを他のスレッドへ切り換え、ディスク3への
アクセス処理の終了時に、上記処理を中断していたスレ
ッドの処理を再開するので、非同期で効率よくI/O処
理を実行できる。
【0020】さらに、本発明のサーバシステムは、時間
情報を用いるので、クライアントまたはファイルサーバ
1が所望するタイミングで所定のアクセス処理を実行で
き、ディスク3へのアクセス処理の実時間保証が可能と
なる。また、ディスク3の自己制御処理は、指示リクエ
スト作成手段が作成する指示リクエストによって起動さ
れ、ディスク3へのアクセス処理と合わせて一元的に管
理できるので、ディスク3へのアクセス処理がディスク
3の自己制御処理によって妨げられることはなく、確実
に実時間保証を行うことができる。
情報を用いるので、クライアントまたはファイルサーバ
1が所望するタイミングで所定のアクセス処理を実行で
き、ディスク3へのアクセス処理の実時間保証が可能と
なる。また、ディスク3の自己制御処理は、指示リクエ
スト作成手段が作成する指示リクエストによって起動さ
れ、ディスク3へのアクセス処理と合わせて一元的に管
理できるので、ディスク3へのアクセス処理がディスク
3の自己制御処理によって妨げられることはなく、確実
に実時間保証を行うことができる。
【0021】
【実施例】以下、本発明の実施例について図面を参照し
ながら説明する。図2は、本発明のサーバシステムの一
例として採り上げたファイルサーバの適用例を示す全体
構成図である。ここでは、マルチプロセッサ構成の並列
計算機を例に説明する。本発明のサーバシステムをLA
N等のシステムの適用することも可能である。
ながら説明する。図2は、本発明のサーバシステムの一
例として採り上げたファイルサーバの適用例を示す全体
構成図である。ここでは、マルチプロセッサ構成の並列
計算機を例に説明する。本発明のサーバシステムをLA
N等のシステムの適用することも可能である。
【0022】クライアント10は、多数のプロセッサか
ら構成され、複数のユーザタスクが互いに並列に処理さ
れる。クライアント10が、ディスク40へデータを書
き込む場合、またはディスク40からデータを読み出す
場合は、サーバシステム20に対して書込み要求または
読出し要求(これらの要求を、ディスクアクセス要求と
呼ぶ)を転送してその処理を依頼する。
ら構成され、複数のユーザタスクが互いに並列に処理さ
れる。クライアント10が、ディスク40へデータを書
き込む場合、またはディスク40からデータを読み出す
場合は、サーバシステム20に対して書込み要求または
読出し要求(これらの要求を、ディスクアクセス要求と
呼ぶ)を転送してその処理を依頼する。
【0023】サーバシステム20は、セルボード21お
よびDDV(Distributed Disk andVideo)ボード22か
ら構成され、クライアント10から転送されてきたディ
スクアクセス要求に従ってディスク40をアクセスす
る。セルボード21は、CPUを有し、ファイルサーバ
23を備える。また、DDVボード22は、CPUを有
し、I/Oサーバ24を備える。
よびDDV(Distributed Disk andVideo)ボード22か
ら構成され、クライアント10から転送されてきたディ
スクアクセス要求に従ってディスク40をアクセスす
る。セルボード21は、CPUを有し、ファイルサーバ
23を備える。また、DDVボード22は、CPUを有
し、I/Oサーバ24を備える。
【0024】ファイルサーバ23は、ディスク40に格
納されているファイルの管理を行うとともに、上記ディ
スクアクセス要求に従って、ディスク40へアクセスす
るためのI/Oリクエスト(デバイス処理命令)を含ん
だメッセージをDDVボード22へ転送して、ディスク
40との間のI/O処理を依頼する。I/Oサーバ24
は、上記メッセージに従って、ディスク40への実際の
物理的なアクセス処理を行い、その処理結果をファイル
サーバ23へ通知する。
納されているファイルの管理を行うとともに、上記ディ
スクアクセス要求に従って、ディスク40へアクセスす
るためのI/Oリクエスト(デバイス処理命令)を含ん
だメッセージをDDVボード22へ転送して、ディスク
40との間のI/O処理を依頼する。I/Oサーバ24
は、上記メッセージに従って、ディスク40への実際の
物理的なアクセス処理を行い、その処理結果をファイル
サーバ23へ通知する。
【0025】ネットワーク30は、クライアント10を
構成する多数のプロセッサどうしの間、およびクライア
ント10とサーバシステム20との間でデータを転送す
るための相互結合網である。ディスク40は、各種ファ
イルを格納する記憶装置である。
構成する多数のプロセッサどうしの間、およびクライア
ント10とサーバシステム20との間でデータを転送す
るための相互結合網である。ディスク40は、各種ファ
イルを格納する記憶装置である。
【0026】図3は、サーバシステム20の動作を説明
するためのシステム構成図である。ファイルサーバ23
は、マルチスレッド化されており、ファイル管理のため
の処理や、クライアント10から転送されてきた各ディ
スクアクセス要求に関する処理をそれぞれ独立したスレ
ッドに割り当て、それらスレッドを切り換えることによ
って複数の処理を効率よく実行する。
するためのシステム構成図である。ファイルサーバ23
は、マルチスレッド化されており、ファイル管理のため
の処理や、クライアント10から転送されてきた各ディ
スクアクセス要求に関する処理をそれぞれ独立したスレ
ッドに割り当て、それらスレッドを切り換えることによ
って複数の処理を効率よく実行する。
【0027】たとえば、ファイルサーバ23が、クライ
アント10から第1および第2のディスクアクセス要求
を受信すると、それらのディスクアクセス要求をそれぞ
れ第1のスレッド(スレッド番号=1)および第2のス
レッド(スレッド番号=2)に割り当てる。そして、第
1のディスクアクセス要求に対応するI/Oリクエスト
を含んだメッセージを生成して、そのメッセージをI/
Oサーバ24へ転送する。このとき、第1のスレッドの
状態をスタックに退避してその処理を中断し、第2のス
レッドの処理の実行に移る。同様にして、第2のディス
クアクセス要求に対応するメッセージをI/Oサーバ2
4へ転送する時には、第2のスレッドの状態をスタック
(第1のスレッドの状態を格納したスタックとは別のス
タック)に退避する。その後、直ちに他のスレッドの処
理を実行する。
アント10から第1および第2のディスクアクセス要求
を受信すると、それらのディスクアクセス要求をそれぞ
れ第1のスレッド(スレッド番号=1)および第2のス
レッド(スレッド番号=2)に割り当てる。そして、第
1のディスクアクセス要求に対応するI/Oリクエスト
を含んだメッセージを生成して、そのメッセージをI/
Oサーバ24へ転送する。このとき、第1のスレッドの
状態をスタックに退避してその処理を中断し、第2のス
レッドの処理の実行に移る。同様にして、第2のディス
クアクセス要求に対応するメッセージをI/Oサーバ2
4へ転送する時には、第2のスレッドの状態をスタック
(第1のスレッドの状態を格納したスタックとは別のス
タック)に退避する。その後、直ちに他のスレッドの処
理を実行する。
【0028】I/Oサーバ24は、ファイルサーバ23
から上記メッセージを受信すると、それらの各メッセー
ジをリクエストテーブル25に順次格納する。そして、
後述するアクセス順番制御に基づいて、リクエストテー
ブル25に格納されている各I/Oリクエストに従って
ディスク40へのアクセスを実行する。I/Oサーバ2
4は、1つのI/Oリクエストに対応するディスク40
へのアクセス処理が終了すると、その処理結果をメッセ
ージとしてファイルサーバ23へ通知(データ読出しア
クセスのときは、読み出したデータも転送)する。
から上記メッセージを受信すると、それらの各メッセー
ジをリクエストテーブル25に順次格納する。そして、
後述するアクセス順番制御に基づいて、リクエストテー
ブル25に格納されている各I/Oリクエストに従って
ディスク40へのアクセスを実行する。I/Oサーバ2
4は、1つのI/Oリクエストに対応するディスク40
へのアクセス処理が終了すると、その処理結果をメッセ
ージとしてファイルサーバ23へ通知(データ読出しア
クセスのときは、読み出したデータも転送)する。
【0029】ファイルサーバ23は、I/Oサーバ24
からの通知を受信すると、スタックに退避しておいた上
記した通知に対応するスレッドの状態を呼び出して、そ
の処理が中断されていたスレッドの処理を再開する。た
とえば、第1のスレッドに対応して生成されたメッセー
ジに含まれていたI/OリクエストがI/Oサーバ24
によって処理され、その処理結果を示すメッセージが返
送されてくると、ファイルサーバ23は、第1のスレッ
ドの状態をスタックから呼び出して、その第1のスレッ
ドの処理を再開する。
からの通知を受信すると、スタックに退避しておいた上
記した通知に対応するスレッドの状態を呼び出して、そ
の処理が中断されていたスレッドの処理を再開する。た
とえば、第1のスレッドに対応して生成されたメッセー
ジに含まれていたI/OリクエストがI/Oサーバ24
によって処理され、その処理結果を示すメッセージが返
送されてくると、ファイルサーバ23は、第1のスレッ
ドの状態をスタックから呼び出して、その第1のスレッ
ドの処理を再開する。
【0030】図4は、ファイルサーバ23およびI/O
サーバ24の処理を説明するタイムチャートである。フ
ァイルサーバ23は、上述したように、第1のスレッド
を実行してその第1のスレッドに対応するI/Oリクエ
ストを発行すると、第1のスレッドの処理を中断し、実
行スレッドを他のスレッドに切り換える。そして、I/
Oサーバ24において第1のスレッドに対応するI/O
リクエストに基づく処理が実行される期間(そのI/O
リクエストの処理が実行されるまでの待ち時間を含
む)、ファイルサーバ23は、第1のスレッド以外の処
理を実行する。そして、I/Oサーバ24から第1のス
レッドに対応するI/Oリクエストに基づく処理の終了
通知(I/O終了応答)が返送されると、ファイルサー
バ23は、再び実行スレッドを切り換えて第1のスレッ
ドの処理を再開する。
サーバ24の処理を説明するタイムチャートである。フ
ァイルサーバ23は、上述したように、第1のスレッド
を実行してその第1のスレッドに対応するI/Oリクエ
ストを発行すると、第1のスレッドの処理を中断し、実
行スレッドを他のスレッドに切り換える。そして、I/
Oサーバ24において第1のスレッドに対応するI/O
リクエストに基づく処理が実行される期間(そのI/O
リクエストの処理が実行されるまでの待ち時間を含
む)、ファイルサーバ23は、第1のスレッド以外の処
理を実行する。そして、I/Oサーバ24から第1のス
レッドに対応するI/Oリクエストに基づく処理の終了
通知(I/O終了応答)が返送されると、ファイルサー
バ23は、再び実行スレッドを切り換えて第1のスレッ
ドの処理を再開する。
【0031】このように、ファイルサーバ23は、ある
スレッドに対応するI/Oリクエストを発行すると、そ
のI/Oリクエストの処理応答を待つことなく他のスレ
ッドの処理を実行するので、ファイルサーバ23のCP
Uの待ち時間が減少してシステム全体の処理効率が向上
する。
スレッドに対応するI/Oリクエストを発行すると、そ
のI/Oリクエストの処理応答を待つことなく他のスレ
ッドの処理を実行するので、ファイルサーバ23のCP
Uの待ち時間が減少してシステム全体の処理効率が向上
する。
【0032】図5は、ファイルサーバ23およびI/O
サーバ24の役割を説明するためのファイルシステムの
階層構成図である。ここでは、UNIXを例として示す。ク
ライアント10が、ディスク40へデータを書き込む場
合またはディスク40からデータを読み出す場合は、ユ
ーザプログラムからシステムコールでOSが呼び出され
る。そして、クライアント10からの要求に従って、サ
ーバレベルのファイルシステムにリクエスト(ディスク
アクセス要求)が転送される。
サーバ24の役割を説明するためのファイルシステムの
階層構成図である。ここでは、UNIXを例として示す。ク
ライアント10が、ディスク40へデータを書き込む場
合またはディスク40からデータを読み出す場合は、ユ
ーザプログラムからシステムコールでOSが呼び出され
る。そして、クライアント10からの要求に従って、サ
ーバレベルのファイルシステムにリクエスト(ディスク
アクセス要求)が転送される。
【0033】ファイルシステムは、階層構造になってお
り、ファイルサーバ23がその上位レベルの処理を行
い、I/Oサーバ24がその下位レベルの処理を行う。
すなわち、システムコールによって呼び出されたコマン
ドに基づいてユーザレベルから転送されてきたリクエス
トは、ファイルサーバ23に渡され、システムコールレ
ベルの処理が行われる。つづいて、ファイルサーバ23
は、必要に応じてiノード割当てアルゴリズムまたはデ
ィスクブロック割当てアルゴリズムを行い、さらに、バ
ッファ割当てアルゴリズム等を行う。
り、ファイルサーバ23がその上位レベルの処理を行
い、I/Oサーバ24がその下位レベルの処理を行う。
すなわち、システムコールによって呼び出されたコマン
ドに基づいてユーザレベルから転送されてきたリクエス
トは、ファイルサーバ23に渡され、システムコールレ
ベルの処理が行われる。つづいて、ファイルサーバ23
は、必要に応じてiノード割当てアルゴリズムまたはデ
ィスクブロック割当てアルゴリズムを行い、さらに、バ
ッファ割当てアルゴリズム等を行う。
【0034】ファイルサーバ23は、これよりも下位レ
ベルの処理は行わず、その処理をI/Oリクエストとし
てI/Oサーバ24に依頼する。I/Oサーバ24は、
ファイルサーバ23からのI/Oリクエストに従って、
装置ドライバ(ディスクドライバ)レベルの処理を実行
し、さらにその下位レベルのハードウェア制御レベルへ
制御を渡す。そして、このハードウェア制御レベルで、
ディスク40とのインタフェースを行い、物理的な制御
を行う。ディスク40との間のI/O処理の結果は、上
記ファイルシステムを下位レベルから上位レベルへ通知
される。
ベルの処理は行わず、その処理をI/Oリクエストとし
てI/Oサーバ24に依頼する。I/Oサーバ24は、
ファイルサーバ23からのI/Oリクエストに従って、
装置ドライバ(ディスクドライバ)レベルの処理を実行
し、さらにその下位レベルのハードウェア制御レベルへ
制御を渡す。そして、このハードウェア制御レベルで、
ディスク40とのインタフェースを行い、物理的な制御
を行う。ディスク40との間のI/O処理の結果は、上
記ファイルシステムを下位レベルから上位レベルへ通知
される。
【0035】このように、ファイルサーバ23は、階層
構造のファイルシステムにおいて、装置ドライバレベル
およびそれよりも下位レベルの処理をI/Oサーバ24
へ依頼し、その処理結果を受け取ることによってディス
ク40へのアクセス処理を進める。
構造のファイルシステムにおいて、装置ドライバレベル
およびそれよりも下位レベルの処理をI/Oサーバ24
へ依頼し、その処理結果を受け取ることによってディス
ク40へのアクセス処理を進める。
【0036】次に、ファイルサーバ23からI/Oサー
バ24へ転送されるI/Oリクエストの構成を説明す
る。I/Oリクエストは、クライアント10から受信し
たディスクアクセス要求に従ってファイルサーバ23が
生成し、キュー番号、ディスク処理命令、パラメータ、
プライオリティからなる。
バ24へ転送されるI/Oリクエストの構成を説明す
る。I/Oリクエストは、クライアント10から受信し
たディスクアクセス要求に従ってファイルサーバ23が
生成し、キュー番号、ディスク処理命令、パラメータ、
プライオリティからなる。
【0037】キュー番号は、当該I/OリクエストがI
/Oサーバ24において処理されるときに利用される番
号である。ディスク処理命令は、ディスク40への書込
みまたはディスク40からの読出しを指示するコマンド
である。パラメータは、アクセスすべきディスク40の
ディスクアドレス(ブロック番号)、ディスク40から
読み出したデータを格納するメモリアドレス、および書
込みまたは読出しを行うデータ量を示すI/Oサイズか
らなる。プライオリティは、ディスク40へのアクセス
の優先度を示す値であり、プライオリティが「2」であ
るI/Oリクエストは、プライオリティが「1」である
I/Oリクエストよりも高い優先順位が与えられる。
/Oサーバ24において処理されるときに利用される番
号である。ディスク処理命令は、ディスク40への書込
みまたはディスク40からの読出しを指示するコマンド
である。パラメータは、アクセスすべきディスク40の
ディスクアドレス(ブロック番号)、ディスク40から
読み出したデータを格納するメモリアドレス、および書
込みまたは読出しを行うデータ量を示すI/Oサイズか
らなる。プライオリティは、ディスク40へのアクセス
の優先度を示す値であり、プライオリティが「2」であ
るI/Oリクエストは、プライオリティが「1」である
I/Oリクエストよりも高い優先順位が与えられる。
【0038】図6は、上記I/Oリクエストを格納する
リクエストテーブル25の一例を示す図である。リクエ
ストテーブル25は、I/Oサーバ24内に設けられ、
ファイルサーバ23から転送されたI/Oリクエストを
順次格納する。
リクエストテーブル25の一例を示す図である。リクエ
ストテーブル25は、I/Oサーバ24内に設けられ、
ファイルサーバ23から転送されたI/Oリクエストを
順次格納する。
【0039】リクエストテーブル25に複数のI/Oリ
クエストが格納されたときには、各I/Oリクエストに
設定されているプライオリティに基づいて実行順番を制
御する。図6に示す例では、プライオリティが「1」で
あるキュー番号1のI/Oリクエストよりも、プライオ
リティが「2」であるキュー番号2のI/Oリクエスト
を優先して実行する。このような方式でI/Oリクエス
トの実行順番を決めるので、クライアント10またはフ
ァイルサーバ23の要求に応じて、所定のアクセス処理
を優先的に実行することができ、時間的に制約のある処
理を効率よく進めることができる。
クエストが格納されたときには、各I/Oリクエストに
設定されているプライオリティに基づいて実行順番を制
御する。図6に示す例では、プライオリティが「1」で
あるキュー番号1のI/Oリクエストよりも、プライオ
リティが「2」であるキュー番号2のI/Oリクエスト
を優先して実行する。このような方式でI/Oリクエス
トの実行順番を決めるので、クライアント10またはフ
ァイルサーバ23の要求に応じて、所定のアクセス処理
を優先的に実行することができ、時間的に制約のある処
理を効率よく進めることができる。
【0040】図7は、I/Oリクエストの実行順番制御
の他の方法を説明する図である。同図に示す例では、プ
ライオリティが同じ3つのI/Oリクエスト(キュー番
号1〜3)がリクエストテーブル25に格納されてい
る。この場合、I/Oサーバ24は、上記3つのI/O
リクエストに対してそれぞれ指定されているディスクの
ディスクアドレスを参照し、それら3つのI/Oリクエ
ストを連続して実行したときにそのシーク量が最小にな
るように実行順番を決定(ストラティジイ制御)する。
すなわち、キュー番号2のI/Oリクエスト、キュー番
号3のI/Oリクエスト、キュー番号1のI/Oリクエ
ストの順番で実行する。上記順番で上記3つのI/Oリ
クエストを実行すれば、ディスク40において、ディス
クアドレス500、700、1000の順番でアクセス
されるので、シーク時間が最小になる。
の他の方法を説明する図である。同図に示す例では、プ
ライオリティが同じ3つのI/Oリクエスト(キュー番
号1〜3)がリクエストテーブル25に格納されてい
る。この場合、I/Oサーバ24は、上記3つのI/O
リクエストに対してそれぞれ指定されているディスクの
ディスクアドレスを参照し、それら3つのI/Oリクエ
ストを連続して実行したときにそのシーク量が最小にな
るように実行順番を決定(ストラティジイ制御)する。
すなわち、キュー番号2のI/Oリクエスト、キュー番
号3のI/Oリクエスト、キュー番号1のI/Oリクエ
ストの順番で実行する。上記順番で上記3つのI/Oリ
クエストを実行すれば、ディスク40において、ディス
クアドレス500、700、1000の順番でアクセス
されるので、シーク時間が最小になる。
【0041】サーバシステム20は、上記2つの方法を
組み合わせてI/Oリクエストの実行順番を制御する。
なお、他の制御方法として、I/Oサーバ24がI/O
リクエストを受け取った順番にそのI/Oリクエストの
処理を実行するようにしてもよい。
組み合わせてI/Oリクエストの実行順番を制御する。
なお、他の制御方法として、I/Oサーバ24がI/O
リクエストを受け取った順番にそのI/Oリクエストの
処理を実行するようにしてもよい。
【0042】図8は、ファイルサーバ23およびI/O
サーバ24による非同期I/O処理を説明する図であ
る。ファイルサーバ23は、非同期管理テーブル26を
有する。非同期管理テーブル26は、ファイルサーバ2
3で実行されるスレッドに対応づけて、そのスレッドの
状態およびキュー番号(リクエストキュー番号)を格納
する。スレッド状態は、そのスレッドが現在実行中であ
るのか、そのスレッドに対応するI/O処理の応答待ち
であるのか、あるいは現在起動されていないのかを示
す。リクエストキュー番号は、I/Oサーバ24のリク
エストテーブル25に格納されている各I/Oリクエス
トに付された番号(キュー番号)である。
サーバ24による非同期I/O処理を説明する図であ
る。ファイルサーバ23は、非同期管理テーブル26を
有する。非同期管理テーブル26は、ファイルサーバ2
3で実行されるスレッドに対応づけて、そのスレッドの
状態およびキュー番号(リクエストキュー番号)を格納
する。スレッド状態は、そのスレッドが現在実行中であ
るのか、そのスレッドに対応するI/O処理の応答待ち
であるのか、あるいは現在起動されていないのかを示
す。リクエストキュー番号は、I/Oサーバ24のリク
エストテーブル25に格納されている各I/Oリクエス
トに付された番号(キュー番号)である。
【0043】以下、図9〜12を参照しながら、ファイ
ルサーバ23およびI/Oサーバ24による非同期I/
O処理を詳しく説明する。図9は、ファイルサーバ23
の全体処理を説明するフローチャートである。ステップ
S1でメッセージを受信すると、ステップS2におい
て、その受信メッセージがクライアント10から転送さ
れたものか否かを調べる。クライアント10からのメッ
セージであれば、図10に示す処理へ進み、クライアン
ト10以外からのメッセージであれば、ステップS3へ
進む。ステップS3では、上記メッセージがI/Oサー
バ24から転送されてきたI/O終了メッセージ(I/
O終了応答)であるか否かを調べる。I/O終了メッセ
ージであれば、図11に示す処理へ進み、それ以外に場
合は、ステップS1へ戻る。
ルサーバ23およびI/Oサーバ24による非同期I/
O処理を詳しく説明する。図9は、ファイルサーバ23
の全体処理を説明するフローチャートである。ステップ
S1でメッセージを受信すると、ステップS2におい
て、その受信メッセージがクライアント10から転送さ
れたものか否かを調べる。クライアント10からのメッ
セージであれば、図10に示す処理へ進み、クライアン
ト10以外からのメッセージであれば、ステップS3へ
進む。ステップS3では、上記メッセージがI/Oサー
バ24から転送されてきたI/O終了メッセージ(I/
O終了応答)であるか否かを調べる。I/O終了メッセ
ージであれば、図11に示す処理へ進み、それ以外に場
合は、ステップS1へ戻る。
【0044】図10は、クライアント10からのメッセ
ージを受信した場合のファイルサーバ23の処理を説明
するフローチャートである。ステップS11において、
ディスク40との間のI/O処理以外の処理を実行す
る。たとえば、図5に示すシステムコールレベルの処理
や、各種アルゴリズムを実行する。ステップS12で
は、リクエストテーブル25を検索し、「命令」の項目
が「free」となっているエントリを探し出す。ステップ
S13では、上記ステップS12で探し出したエントリ
にI/Oリクエストを書き込む。このI/Oリクエスト
は、ファイルサーバ23からI/Oサーバ24へ転送さ
れるメッセージであり、上述したように、命令と共にデ
ィスク40のディスクアドレス、メモリアドレス、I/
Oサイズ、プライオリティ等から構成される。
ージを受信した場合のファイルサーバ23の処理を説明
するフローチャートである。ステップS11において、
ディスク40との間のI/O処理以外の処理を実行す
る。たとえば、図5に示すシステムコールレベルの処理
や、各種アルゴリズムを実行する。ステップS12で
は、リクエストテーブル25を検索し、「命令」の項目
が「free」となっているエントリを探し出す。ステップ
S13では、上記ステップS12で探し出したエントリ
にI/Oリクエストを書き込む。このI/Oリクエスト
は、ファイルサーバ23からI/Oサーバ24へ転送さ
れるメッセージであり、上述したように、命令と共にデ
ィスク40のディスクアドレス、メモリアドレス、I/
Oサイズ、プライオリティ等から構成される。
【0045】ステップS14では、I/Oサーバ24で
実行される実行キューに入れられているI/Oリクエス
トを調べ、当該I/Oリクエストのプライオリティより
も低いか等しいプライオリティを有するI/Oリクエス
トを探し、そのI/Oリクエストの直前に当該I/Oリ
クエストを挿入する。そして、各I/Oリクエストを接
続する実行キューのリンクを張り替える。尚、このステ
ップS14の処理は、I/Oサーバ24で行うようにし
てもよい。
実行される実行キューに入れられているI/Oリクエス
トを調べ、当該I/Oリクエストのプライオリティより
も低いか等しいプライオリティを有するI/Oリクエス
トを探し、そのI/Oリクエストの直前に当該I/Oリ
クエストを挿入する。そして、各I/Oリクエストを接
続する実行キューのリンクを張り替える。尚、このステ
ップS14の処理は、I/Oサーバ24で行うようにし
てもよい。
【0046】ステップS15では、非同期管理テーブル
26上のスレッド番号と現在実行しているスレッドの番
号とが一致するエントリを探し出す。ステップS16で
は、上記ステップS15で探し出したエントリのリクエ
ストキュー番号の項目に、上記ステップS12で取り出
したエントリのキュー番号を書き込み、さらにスレッド
状態を「recv wait 」(応答待ち)に書き換える。たと
えば、スレッド番号2のスレッドに対応するI/Oリク
エストが、リクエストテーブル25おいてキュー番号1
に対応づけて書き込まれると、図8に示すように、非同
期管理テーブル26のスレッド番号2のエントリのリク
エストキュー番号として「1」が書き込まれ、スレッド
状態に「Wait Recv 」が設定される。
26上のスレッド番号と現在実行しているスレッドの番
号とが一致するエントリを探し出す。ステップS16で
は、上記ステップS15で探し出したエントリのリクエ
ストキュー番号の項目に、上記ステップS12で取り出
したエントリのキュー番号を書き込み、さらにスレッド
状態を「recv wait 」(応答待ち)に書き換える。たと
えば、スレッド番号2のスレッドに対応するI/Oリク
エストが、リクエストテーブル25おいてキュー番号1
に対応づけて書き込まれると、図8に示すように、非同
期管理テーブル26のスレッド番号2のエントリのリク
エストキュー番号として「1」が書き込まれ、スレッド
状態に「Wait Recv 」が設定される。
【0047】ステップS17では、現在実行中のスレッ
ドに対応するI/Oリクエストをリクエストテーブル2
5に書き込んだ後に実行スレッドを他のスレッドにを切
り換えるために、非同期管理テーブル26のスレッド状
態の項目が「free」であるエントリを探し出す。すなわ
ち、未使用スレッドを探す。ステップS18では、現在
実行中のスレッドの環境を退避する。すなわち、現在実
行中のスレッドの実行状態であるプログラムカウンタ、
ポインタ値等をスタックに入れる。ステップS19で
は、上記ステップS17で探し出したスレッドの環境と
して、上記スタックポインタを設定する。この後、処理
をスタートに戻す。
ドに対応するI/Oリクエストをリクエストテーブル2
5に書き込んだ後に実行スレッドを他のスレッドにを切
り換えるために、非同期管理テーブル26のスレッド状
態の項目が「free」であるエントリを探し出す。すなわ
ち、未使用スレッドを探す。ステップS18では、現在
実行中のスレッドの環境を退避する。すなわち、現在実
行中のスレッドの実行状態であるプログラムカウンタ、
ポインタ値等をスタックに入れる。ステップS19で
は、上記ステップS17で探し出したスレッドの環境と
して、上記スタックポインタを設定する。この後、処理
をスタートに戻す。
【0048】上記ステップS13において書き込まれた
I/Oリクエストは、I/Oサーバ24によって処理さ
れるので、図11の処理を説明する前に、図12のフロ
ーチャートを参照しながら、I/Oサーバ24の処理を
説明する。
I/Oリクエストは、I/Oサーバ24によって処理さ
れるので、図11の処理を説明する前に、図12のフロ
ーチャートを参照しながら、I/Oサーバ24の処理を
説明する。
【0049】ステップS31では、実行キューに入れら
れているI/Oリクエストを調べ、リクエストテーブル
25に書き込まれているI/Oリクエストの中でプライ
オリティが最も高いI/Oリクエストのエントリのグル
ープを求める。図5に示す例では、プライオリティが
「2」のI/Oリクエストを捜し出す。ステップS32
では、上記ステップS31で求めたエントリに書き込ま
れているキュー番号を元に、リクエストテーブル25を
検索する。そして、ディスク40のシーク時間が最小と
なるようなキュー番号を求める、この処理は、図6に示
す処理であり、たとえば前回アクセスしたディスクアド
レスと次にアクセスするディスクアドレスとの差が最小
になるようなI/Oリクエストを上記プライオリティが
最も高いI/Oリクエストグループの中から選ぶことに
よって行う。
れているI/Oリクエストを調べ、リクエストテーブル
25に書き込まれているI/Oリクエストの中でプライ
オリティが最も高いI/Oリクエストのエントリのグル
ープを求める。図5に示す例では、プライオリティが
「2」のI/Oリクエストを捜し出す。ステップS32
では、上記ステップS31で求めたエントリに書き込ま
れているキュー番号を元に、リクエストテーブル25を
検索する。そして、ディスク40のシーク時間が最小と
なるようなキュー番号を求める、この処理は、図6に示
す処理であり、たとえば前回アクセスしたディスクアド
レスと次にアクセスするディスクアドレスとの差が最小
になるようなI/Oリクエストを上記プライオリティが
最も高いI/Oリクエストグループの中から選ぶことに
よって行う。
【0050】ステップS33は、上記ステップS32で
求めたI/Oリクエストのエントリに書き込まれている
ディスクアドレス、メモリアドレス、I/Oサイズを元
にI/O処理を行う。ステップS34では、上記I/O
処理が終了したときにI/O終了メッセージを作成し
て、ファイルサーバ23へ送信する。I/O終了メッセ
ージには、上記I/O処理の実行結果(成功・失敗)を
示すステータス情報、返り値およびキュー番号が書き込
まれている。なお、上記I/O処理の結果が失敗であっ
た場合には、エラーの種別を示すエラー情報もI/O終
了メッセージに書き込まれてファイルサーバ23へ通知
される。
求めたI/Oリクエストのエントリに書き込まれている
ディスクアドレス、メモリアドレス、I/Oサイズを元
にI/O処理を行う。ステップS34では、上記I/O
処理が終了したときにI/O終了メッセージを作成し
て、ファイルサーバ23へ送信する。I/O終了メッセ
ージには、上記I/O処理の実行結果(成功・失敗)を
示すステータス情報、返り値およびキュー番号が書き込
まれている。なお、上記I/O処理の結果が失敗であっ
た場合には、エラーの種別を示すエラー情報もI/O終
了メッセージに書き込まれてファイルサーバ23へ通知
される。
【0051】ステップS35では、上記ステップS32
で求めたI/Oリクエストのエントリのプライオリティ
を「0」に設定するとともに、「命令」の項目に「fre
e」を書き込む。ステップS36では、上記ステップS
32で求めたI/Oリクエストを実行キューから削除す
る。この後、ステップS31へ戻って、次のI/Oリク
エストを実行する。
で求めたI/Oリクエストのエントリのプライオリティ
を「0」に設定するとともに、「命令」の項目に「fre
e」を書き込む。ステップS36では、上記ステップS
32で求めたI/Oリクエストを実行キューから削除す
る。この後、ステップS31へ戻って、次のI/Oリク
エストを実行する。
【0052】図11は、I/Oサーバ24からI/O終
了メッセージを受信した場合のファイルサーバ23の処
理を説明するフローチャートである。このI/O終了メ
ッセージは、図12のステップS34で作成されたもの
である。ファイルサーバ23は、I/O終了メッセージ
を受信すると、例えばファイルサーバ23自身のCPU
に対して割込みを発生して該受信を通知し、その割込み
によってOSのカーネルから以下のステップS21以降の
処理を実行するようなコマンドを発行する。
了メッセージを受信した場合のファイルサーバ23の処
理を説明するフローチャートである。このI/O終了メ
ッセージは、図12のステップS34で作成されたもの
である。ファイルサーバ23は、I/O終了メッセージ
を受信すると、例えばファイルサーバ23自身のCPU
に対して割込みを発生して該受信を通知し、その割込み
によってOSのカーネルから以下のステップS21以降の
処理を実行するようなコマンドを発行する。
【0053】ステップS21では、受信したI/O終了
メッセージからキュー番号を取り出す。ステップS22
では、上記ステップS21で獲得したキュー番号をキー
として非同期管理テーブル25を検索し、そのキュー番
号と同じリクエストキュー番号を有するエントリを捜し
出す。ステップS23では、プログラムカウンタおよび
スタックポイントの値を、上記ステップS22で探し出
したエントリに書き込まれているスレッド番号のスレッ
ドの環境に設定する。
メッセージからキュー番号を取り出す。ステップS22
では、上記ステップS21で獲得したキュー番号をキー
として非同期管理テーブル25を検索し、そのキュー番
号と同じリクエストキュー番号を有するエントリを捜し
出す。ステップS23では、プログラムカウンタおよび
スタックポイントの値を、上記ステップS22で探し出
したエントリに書き込まれているスレッド番号のスレッ
ドの環境に設定する。
【0054】上記ステップS21〜S23の処理によっ
て、スレッドの状態は、I/Oリクエストを発行した直
後の状態に戻る。たとえば、図8に示す状態において、
I/Oサーバ24からキュー番号1のI/O終了メッセ
ージを受信すると、ファイルサーバ23は、そのキュー
番号に基づいて、スレッド番号2のエントリを取り出
す。そして、そのスレッド番号2のスレッドに、上記ス
テップS18で退避したプログラムカウンタおよびスタ
ックポインタの値などを設定する。すなわち、スレッド
番号2のスレッドを「応答待ち状態」から実行状態へ切
り換える(スレッド切換え)。
て、スレッドの状態は、I/Oリクエストを発行した直
後の状態に戻る。たとえば、図8に示す状態において、
I/Oサーバ24からキュー番号1のI/O終了メッセ
ージを受信すると、ファイルサーバ23は、そのキュー
番号に基づいて、スレッド番号2のエントリを取り出
す。そして、そのスレッド番号2のスレッドに、上記ス
テップS18で退避したプログラムカウンタおよびスタ
ックポインタの値などを設定する。すなわち、スレッド
番号2のスレッドを「応答待ち状態」から実行状態へ切
り換える(スレッド切換え)。
【0055】続いて、ステップS24では、上記プログ
ラムカウンタおよびスタックポインタの値などを設定し
たスレッドの処理を再開し、I/O処理につづく処理を
実行する。ステップS25では、ユーザタスクにシステ
ムコールに返り値を返す。
ラムカウンタおよびスタックポインタの値などを設定し
たスレッドの処理を再開し、I/O処理につづく処理を
実行する。ステップS25では、ユーザタスクにシステ
ムコールに返り値を返す。
【0056】以上説明したように、サーバシステム20
によるI/O処理においては、ファイルサーバ23がI
/Oリクエストを発行した後は、ファイルサーバ23の
CPUは、I/O処理以外の処理を実行することができ
る。一方、I/Oサーバ24は、ファイルサーバ23と
は独立したCPUを有し、I/Oリクエストを受信する
と、ファイルサーバ23とは独立した処理としてディス
ク40への物理的なアクセスを実行する。このとき、I
/Oサーバ24は、複数のI/Oリクエストを受け付け
ていた場合、I/Oサーバ24自身が、それら複数のI
/Oリクエストの実行順番が最適(合計の実行時間が最
短)になるように制御する。そして、I/Oサーバ24
は、各I/Oリクエストの処理が終了するごとにI/O
終了メッセージをファイルサーバ23へ通知し、ファイ
ルサーバ23は、その通知に従って上記I/Oリクエス
トによるディスク40への物理的なアクセスに続く上位
レベルの処理を実行する。このように、ファイルサーバ
23は、クライアント10からのディスクアクセス要求
のうち、ディスク40への物理的なアクセス処理をI/
Oサーバ24へ依頼し、その間に他の処理を実行する非
同期処理を行う。
によるI/O処理においては、ファイルサーバ23がI
/Oリクエストを発行した後は、ファイルサーバ23の
CPUは、I/O処理以外の処理を実行することができ
る。一方、I/Oサーバ24は、ファイルサーバ23と
は独立したCPUを有し、I/Oリクエストを受信する
と、ファイルサーバ23とは独立した処理としてディス
ク40への物理的なアクセスを実行する。このとき、I
/Oサーバ24は、複数のI/Oリクエストを受け付け
ていた場合、I/Oサーバ24自身が、それら複数のI
/Oリクエストの実行順番が最適(合計の実行時間が最
短)になるように制御する。そして、I/Oサーバ24
は、各I/Oリクエストの処理が終了するごとにI/O
終了メッセージをファイルサーバ23へ通知し、ファイ
ルサーバ23は、その通知に従って上記I/Oリクエス
トによるディスク40への物理的なアクセスに続く上位
レベルの処理を実行する。このように、ファイルサーバ
23は、クライアント10からのディスクアクセス要求
のうち、ディスク40への物理的なアクセス処理をI/
Oサーバ24へ依頼し、その間に他の処理を実行する非
同期処理を行う。
【0057】図13は、ファイルサーバに複数のディス
クが接続されたときの仮想ディスク構造を説明する図で
ある。ディスクの物理構成は、図13(a) に示すよう
に、I/Oサーバ24に2台のディスク41および42
が接続されている。ディスク41および42は、それぞ
れ1GBの容量を持ち、ディスク番号0、1が割り当てら
れている。
クが接続されたときの仮想ディスク構造を説明する図で
ある。ディスクの物理構成は、図13(a) に示すよう
に、I/Oサーバ24に2台のディスク41および42
が接続されている。ディスク41および42は、それぞ
れ1GBの容量を持ち、ディスク番号0、1が割り当てら
れている。
【0058】ファイルサーバ23(図8には示していな
い)は、2台のディスク41及び42が、2GBの容量を
持った1台のディスク43であるものとしてI/Oリク
エストを発行する。ここで、図13(b) に示すディスク
43は仮想ディスクである。ファイルサーバ23は、フ
ァイルのI/O処理に際して、当該ファイルがディスク
41または42のいずれに格納されているのかを意識せ
ずに、I/Oリクエストを用いて実際のディスクアドレ
スのかわりに0〜2GBの論理アドレスを指定する。
い)は、2台のディスク41及び42が、2GBの容量を
持った1台のディスク43であるものとしてI/Oリク
エストを発行する。ここで、図13(b) に示すディスク
43は仮想ディスクである。ファイルサーバ23は、フ
ァイルのI/O処理に際して、当該ファイルがディスク
41または42のいずれに格納されているのかを意識せ
ずに、I/Oリクエストを用いて実際のディスクアドレ
スのかわりに0〜2GBの論理アドレスを指定する。
【0059】I/Oサーバ24は、ファイルサーバ23
が指定した論理アドレスを、ディスク41または42を
指定するディスク番号および各ディスク41または42
上の物理的なディスクアドレスとの組合せに変換するテ
ーブルを有する。そして、I/Oリクエストを受け取る
と、このテーブルを用いてアクセスすべきディスクおよ
びそのディスク上でのディスクアドレスを取り出して、
ファイルサーバ23から要求されたアクセスを実行す
る。
が指定した論理アドレスを、ディスク41または42を
指定するディスク番号および各ディスク41または42
上の物理的なディスクアドレスとの組合せに変換するテ
ーブルを有する。そして、I/Oリクエストを受け取る
と、このテーブルを用いてアクセスすべきディスクおよ
びそのディスク上でのディスクアドレスを取り出して、
ファイルサーバ23から要求されたアクセスを実行す
る。
【0060】また、アクセスしようとするファイル実体
が複数のディスク(ディスク41および42)に分散さ
れて配置されている場合には、ディスクインタフェース
の性能を最大限に引き出せるように、I/Oサーバ24
が複数のディスクとの間で非同期I/O処理を実行す
る。この場合、I/Oサーバ24は、ディスク41およ
び42に対して命令(例えば、読出し命令)を発行した
後に一旦それらディスクとの接続を切る。ディスク41
および42は、それぞれ受信した命令に従って所定のデ
ータを自身のキャッシュに読み込み、その読込み処理が
終了したことをI/Oサーバ24へ通知する。そして、
I/Oサーバ24は、ディスク41または42からの読
込み処理の終了通知を受信すると、その通知を出力した
ディスクと結合してデータを受け取る。
が複数のディスク(ディスク41および42)に分散さ
れて配置されている場合には、ディスクインタフェース
の性能を最大限に引き出せるように、I/Oサーバ24
が複数のディスクとの間で非同期I/O処理を実行す
る。この場合、I/Oサーバ24は、ディスク41およ
び42に対して命令(例えば、読出し命令)を発行した
後に一旦それらディスクとの接続を切る。ディスク41
および42は、それぞれ受信した命令に従って所定のデ
ータを自身のキャッシュに読み込み、その読込み処理が
終了したことをI/Oサーバ24へ通知する。そして、
I/Oサーバ24は、ディスク41または42からの読
込み処理の終了通知を受信すると、その通知を出力した
ディスクと結合してデータを受け取る。
【0061】上記仮想ディスク方式を用いると、ファイ
ルサーバ23では複数のディスクを意識する必要がない
ので、ファイル管理およびI/O処理に関する制御が容
易になる。また、I/Oサーバ24による非同期I/O
処理を実行するので、アクセス時間が短縮される。
ルサーバ23では複数のディスクを意識する必要がない
ので、ファイル管理およびI/O処理に関する制御が容
易になる。また、I/Oサーバ24による非同期I/O
処理を実行するので、アクセス時間が短縮される。
【0062】ところで、ディスクには様々な種類のデー
タが格納されているが、たとえば、動画再生用データや
音声データ等の場合は、所定時間内にアクセスできない
と、画像が乱れたり音声が途絶えたりする。この問題を
解決するために、優先度情報としてI/Oリクエストに
プライオリティを持たせているが、プライオリティ制御
のみでは実時間を保証するためには不十分な場合もあ
る。このため、サーバシステム20は、実時間保証機能
を有する。
タが格納されているが、たとえば、動画再生用データや
音声データ等の場合は、所定時間内にアクセスできない
と、画像が乱れたり音声が途絶えたりする。この問題を
解決するために、優先度情報としてI/Oリクエストに
プライオリティを持たせているが、プライオリティ制御
のみでは実時間を保証するためには不十分な場合もあ
る。このため、サーバシステム20は、実時間保証機能
を有する。
【0063】図14(a) は、実時間保証機能を実現する
I/Oリクエストのフォーマットを示す図である。この
I/Oリクエストは、ファイルサーバ23で作成されて
I/Oサーバ24へ転送されるものであり、命令、パラ
メータ、時間保証フラグ、実行時間から構成される。命
令およびパラメータは、前述したものと同じである。時
間保証フラグは、当該I/Oリクエストが実時間保証を
必要とするか否かを示すフラグである。実行時間は、当
該I/Oリクエストを実行する時間(時刻)を指定する
時間情報である。
I/Oリクエストのフォーマットを示す図である。この
I/Oリクエストは、ファイルサーバ23で作成されて
I/Oサーバ24へ転送されるものであり、命令、パラ
メータ、時間保証フラグ、実行時間から構成される。命
令およびパラメータは、前述したものと同じである。時
間保証フラグは、当該I/Oリクエストが実時間保証を
必要とするか否かを示すフラグである。実行時間は、当
該I/Oリクエストを実行する時間(時刻)を指定する
時間情報である。
【0064】図14(b) は、I/Oサーバ24が作成す
るディスク制御リクエストを示す図である。このディス
ク制御リクエストの命令は、たとえばディスク40に対
して動作補償処理の実行を指示するキャリブ命令であ
り、定期的に温度補償制御の実行などを指示する。な
お、ディスク40は、自発的に動作補償処理を行うこと
はなく、ディスク制御リクエストによって実行するよう
に設定されている。また、ディスク制御リクエストの実
行時間は、当該ディスク制御リクエストを実行する時間
(時刻)を指定する時間情報である。
るディスク制御リクエストを示す図である。このディス
ク制御リクエストの命令は、たとえばディスク40に対
して動作補償処理の実行を指示するキャリブ命令であ
り、定期的に温度補償制御の実行などを指示する。な
お、ディスク40は、自発的に動作補償処理を行うこと
はなく、ディスク制御リクエストによって実行するよう
に設定されている。また、ディスク制御リクエストの実
行時間は、当該ディスク制御リクエストを実行する時間
(時刻)を指定する時間情報である。
【0065】I/Oサーバ24は、ファイルサーバ23
から図14(a) に示すI/Oリクエストを受け取ると、
時間補償フラグを調べ、そのフラグが「有効」に設定さ
れているI/Oリクエストを、時間補償キューへ入れ
る。なお、時間補償フラグの状態に係わらず、受信した
すべてのI/Oリクエストは、リクエストテーブル25
に書き込まれる。また、I/Oサーバ24は、所定アル
ゴリズムに従って(例えば、所定間隔ごとに)ディスク
制御リクエストを生成して、そのディスク制御リクエス
トを上記時間補償キューへ入れる。
から図14(a) に示すI/Oリクエストを受け取ると、
時間補償フラグを調べ、そのフラグが「有効」に設定さ
れているI/Oリクエストを、時間補償キューへ入れ
る。なお、時間補償フラグの状態に係わらず、受信した
すべてのI/Oリクエストは、リクエストテーブル25
に書き込まれる。また、I/Oサーバ24は、所定アル
ゴリズムに従って(例えば、所定間隔ごとに)ディスク
制御リクエストを生成して、そのディスク制御リクエス
トを上記時間補償キューへ入れる。
【0066】図15は、時間補償キューを用いた実時間
処理を説明する図である。I/Oサーバ24は、I/O
リクエストおよびディスク制御リクエストを、そのリク
エストに設定されている実行時間に従って時間補償キュ
ーに入れる。同図の例では、実行時間が10(時間を表
す任意の単位)に設定されているI/Oリクエスト51
が時間補償キューの先頭に置かれ、実行時間が50に設
定されているディスク制御リクエスト52、実行時間が
60に設定されているI/Oリクエスト53がその後ろ
に続いてリンクされている。各リクエスト51〜53ど
うしの間は、次ポインタおよび前ポインタによってリン
クされる。
処理を説明する図である。I/Oサーバ24は、I/O
リクエストおよびディスク制御リクエストを、そのリク
エストに設定されている実行時間に従って時間補償キュ
ーに入れる。同図の例では、実行時間が10(時間を表
す任意の単位)に設定されているI/Oリクエスト51
が時間補償キューの先頭に置かれ、実行時間が50に設
定されているディスク制御リクエスト52、実行時間が
60に設定されているI/Oリクエスト53がその後ろ
に続いてリンクされている。各リクエスト51〜53ど
うしの間は、次ポインタおよび前ポインタによってリン
クされる。
【0067】I/Oサーバ24は、不図示のタイマを有
し、時間補償キューの先頭のリクエストに設定されてい
る実行時間のタイムアウトを検出する。すなわち、I/
Oリクエスト51に設定されている実行時間を計時す
る。そして、タイムアウトすると、タイマ割込みを発生
させ、即座にI/Oリクエスト51を実行し、時間補償
キューから削除する。この削除によって、ディスク制御
リクエスト52が時間補償キューの先頭に置かれるの
で、I/Oサーバ24は、ディスク制御リクエスト52
に設定されている実行時間のタイムアウトを待ち、タイ
ムアウトが発生するとディスク制御リクエスト52を実
行する。このようにして、時間補償キューに並べられて
いるリクエストを、そこに設定されている実行時間に従
って次々に実行していく。
し、時間補償キューの先頭のリクエストに設定されてい
る実行時間のタイムアウトを検出する。すなわち、I/
Oリクエスト51に設定されている実行時間を計時す
る。そして、タイムアウトすると、タイマ割込みを発生
させ、即座にI/Oリクエスト51を実行し、時間補償
キューから削除する。この削除によって、ディスク制御
リクエスト52が時間補償キューの先頭に置かれるの
で、I/Oサーバ24は、ディスク制御リクエスト52
に設定されている実行時間のタイムアウトを待ち、タイ
ムアウトが発生するとディスク制御リクエスト52を実
行する。このようにして、時間補償キューに並べられて
いるリクエストを、そこに設定されている実行時間に従
って次々に実行していく。
【0068】上記処理は、図6または図7等に示すリク
エストテーブル25およびその実行キューを用いた処理
と平行して行う。すなわち、通常は、リクエストテーブ
ル25およびその実行キューを用いた処理によって順次
I/Oリクエストを実行しているが、その間、タイマの
計時動作は継続しており、上記タイムアウトが発生する
と、タイマ割込みによる処理を最優先で実行する。した
がって、I/Oリクエスト51は、実行時間として設定
した時間通りに実行される。また、音声の途切れ等を防
ぐためにディスクからデータを必要以上に先読みする
と、そのデータを所定タイミングで転送するために設け
たバッファが溢れてしまうという問題があるが、上記方
法によれば、ディスクからデータを必要以上に先読みす
ることはなく、所望のタイミングでディスク40をアク
セスすることができる。
エストテーブル25およびその実行キューを用いた処理
と平行して行う。すなわち、通常は、リクエストテーブ
ル25およびその実行キューを用いた処理によって順次
I/Oリクエストを実行しているが、その間、タイマの
計時動作は継続しており、上記タイムアウトが発生する
と、タイマ割込みによる処理を最優先で実行する。した
がって、I/Oリクエスト51は、実行時間として設定
した時間通りに実行される。また、音声の途切れ等を防
ぐためにディスクからデータを必要以上に先読みする
と、そのデータを所定タイミングで転送するために設け
たバッファが溢れてしまうという問題があるが、上記方
法によれば、ディスクからデータを必要以上に先読みす
ることはなく、所望のタイミングでディスク40をアク
セスすることができる。
【0069】また、ディスク40の動作補償処理は、I
/Oサーバ24が作成するディスク制御リクエストによ
って起動される。したがって、I/Oサーバ24が、実
行時間が指定されたI/Oリクエストとディスク制御リ
クエストとを一元的に管理するので、I/Oリクエスト
の処理がディスク40の動作補償処理によって妨げられ
ることはない。
/Oサーバ24が作成するディスク制御リクエストによ
って起動される。したがって、I/Oサーバ24が、実
行時間が指定されたI/Oリクエストとディスク制御リ
クエストとを一元的に管理するので、I/Oリクエスト
の処理がディスク40の動作補償処理によって妨げられ
ることはない。
【0070】次に、図15に示すように、3つのリクエ
スト51〜53が時間補償キューにキューイングされて
いる状態で、実行時間が30に設定されているI/Oリ
クエスト54がファイルサーバ23から転送されてきた
場合を説明する。この場合、I/Oリクエスト54は、
I/Oリクエスト51が実行された後であって、かつデ
ィスク制御リクエスト52が実行される前に処理されな
ければならない。したがって、I/Oサーバ24は、各
リクエストに対して設定してある実行時間を参照して、
I/Oリクエスト54を、I/Oリクエスト51とディ
スク制御リクエスト52との間にリンクさせる。この処
理は、各リクエスト51、52、54のポインタ値を書
き換えることによって行う。
スト51〜53が時間補償キューにキューイングされて
いる状態で、実行時間が30に設定されているI/Oリ
クエスト54がファイルサーバ23から転送されてきた
場合を説明する。この場合、I/Oリクエスト54は、
I/Oリクエスト51が実行された後であって、かつデ
ィスク制御リクエスト52が実行される前に処理されな
ければならない。したがって、I/Oサーバ24は、各
リクエストに対して設定してある実行時間を参照して、
I/Oリクエスト54を、I/Oリクエスト51とディ
スク制御リクエスト52との間にリンクさせる。この処
理は、各リクエスト51、52、54のポインタ値を書
き換えることによって行う。
【0071】このように、クライアント10の要求に基
づいたI/Oリクエストと、ディスク40固有の処理を
指示するリクエストを1つのキューに混在させて実行す
ることにより、I/O処理の実時間保証と定期的に行う
ディスク固有の処理とを同時に管理できる。このような
実時間保証は、特に、ファイルを単なるバイト列として
扱うストリーム入出力において有用である。
づいたI/Oリクエストと、ディスク40固有の処理を
指示するリクエストを1つのキューに混在させて実行す
ることにより、I/O処理の実時間保証と定期的に行う
ディスク固有の処理とを同時に管理できる。このような
実時間保証は、特に、ファイルを単なるバイト列として
扱うストリーム入出力において有用である。
【0072】
【発明の効果】本発明のサーバシステムによれば、クラ
イアントからの要求に対してサービスを提供するサーバ
を、上位サーバ(ファイルサーバ)と下位サーバ(I/
Oサーバ)からなる2つのタスクに分離し、上位レベル
の処理を上位サーバで行い、物理的な下位レベルの処理
を下位サーバで行うので、処理時間の長い物理的な処理
を下位サーバが実行している間に、上位サーバは他の処
理を実行できる。このため、上位サーバは、ユーザタス
クの実行時間を増やすことができサーバシステム全体の
効率が向上する。
イアントからの要求に対してサービスを提供するサーバ
を、上位サーバ(ファイルサーバ)と下位サーバ(I/
Oサーバ)からなる2つのタスクに分離し、上位レベル
の処理を上位サーバで行い、物理的な下位レベルの処理
を下位サーバで行うので、処理時間の長い物理的な処理
を下位サーバが実行している間に、上位サーバは他の処
理を実行できる。このため、上位サーバは、ユーザタス
クの実行時間を増やすことができサーバシステム全体の
効率が向上する。
【0073】本発明のサーバシステムを他のシステムに
移植する場合、特に、このサーバシステムに接続される
デバイスを変更する場合には、下位サーバのみを置き換
えればよく、他の環境への移植性がよい。
移植する場合、特に、このサーバシステムに接続される
デバイスを変更する場合には、下位サーバのみを置き換
えればよく、他の環境への移植性がよい。
【図1】本発明のサーバシステムの原理を説明する図で
ある。
ある。
【図2】本発明のサーバシステムの一例として採り上げ
たファイルサーバの適用例を示す全体構成図である。
たファイルサーバの適用例を示す全体構成図である。
【図3】サーバシステムの動作を説明するためのシステ
ム構成図である。
ム構成図である。
【図4】ファイルサーバ及びI/Oサーバの処理を説明
するタイムチャートである。
するタイムチャートである。
【図5】ファイルサーバ及びI/Oサーバの役割を説明
するためのファイルシステムの階層構成図である。
するためのファイルシステムの階層構成図である。
【図6】I/Oリクエストを格納するリクエストテーブ
ルの一例を示す図である。
ルの一例を示す図である。
【図7】I/Oリクエストの実行順番制御を説明する図
である。
である。
【図8】ファイルサーバ及びI/Oサーバによる非同期
I/O処理を説明する図である。
I/O処理を説明する図である。
【図9】ファイルサーバの全体処理を説明するフローチ
ャートである。
ャートである。
【図10】クライアントからのメッセージを受信した場
合のファイルサーバの処理を説明するフローチャートで
ある。
合のファイルサーバの処理を説明するフローチャートで
ある。
【図11】I/O終了メッセージを受信した場合のファ
イルサーバの処理を説明するフローチャートである。
イルサーバの処理を説明するフローチャートである。
【図12】I/Oサーバの処理を説明するフローチャー
トである。
トである。
【図13】ファイルサーバに複数のディスクが接続され
たときの仮想ディスク構造を説明する図であり、(a) は
物理構成を示し、(b) はファイルサーバから見える仮想
構成を示す。
たときの仮想ディスク構造を説明する図であり、(a) は
物理構成を示し、(b) はファイルサーバから見える仮想
構成を示す。
【図14】同図(a) は、実時間保証機能を実現するI/
Oリクエストのフォーマットを示す図であり、同図(b)
は、I/Oサーバが作成するディスク制御リクエストを
示す図である。
Oリクエストのフォーマットを示す図であり、同図(b)
は、I/Oサーバが作成するディスク制御リクエストを
示す図である。
【図15】時間補償キューを用いた実時間処理を説明す
る図である。
る図である。
1 上位サーバ(ファイルサーバ) 2 下位サーバ(I/Oサーバ) 3 デバイス(ディスク) 10 クライアント 20 サーバシステム 21 セルボード 22 DDVボード 23 ファイルサーバ 24 I/Oサーバ 25 リクエストテーブル 26 非同期管理テーブル 30 ネットワーク 40 ディスク
Claims (11)
- 【請求項1】 ファイルの管理を行い、上記ファイルを
格納する記憶装置へのアクセス要求をクライアントから
受信したときに該要求に基づいて記憶装置への物理的な
アクセスを指示するリクエストを発行するファイルサー
バと、 上記ファイルサーバが発行したリクエストに従って上記
記憶装置へのアクセスを実行するI/Oサーバとを有す
ることを特徴とするサーバシステム。 - 【請求項2】 上記ファイルサーバおよびI/Oサーバ
は、それぞれ独立したCPUを有することを特徴とする
請求項1記載のサーバシステム。 - 【請求項3】 上記I/Oサーバは、上記ファイルサー
バから複数の上記リクエストを受信すると、それら複数
のリクエストを所定のアルゴリズムに基づく順番で実行
キューに入れ、該実行キューに並べられた順番でリクエ
ストの処理を実行して上記記憶装置を順次アクセスする
ことを特徴とする請求項1記載のサーバシステム。 - 【請求項4】 上記ファイルサーバは、上記リクエスト
にプライオリティ情報を設定し、上記I/Oサーバは、
複数の上記リクエストを受信したときに、それら各リク
エストのプライオリティ情報に従って上記記憶装置への
アクセスの順番を制御することを特徴とする請求項1記
載のサーバシステム。 - 【請求項5】 上記ファイルサーバは、上記記憶装置を
アクセスするための物理情報を上記リクエストに設定
し、上記I/Oサーバは、複数の上記リクエストを受信
したときに、それら各リクエストの物理情報に従って上
記記憶装置へのアクセスの順番を制御することを特徴と
する請求項1記載のサーバシステム。 - 【請求項6】 上記ファイルサーバは、マルチスレッド
方式で処理を行い、上記リクエストは1つのスレッドに
対応して発行される構成であって、 上記ファイルサーバが上記I/Oサーバに対して第1の
リクエストを発行したときに、該第1のリクエストに対
応するスレッドの処理を中断し、実行スレッドを他のス
レッドへ切り換える手段と、 上記第1のリクエストに基づく上記記憶装置へのアクセ
ス処理が終了したときに、上記I/Oサーバから上記フ
ァイルサーバに対して、上記第1のリクエストに基づく
処理が終了したことを示す応答を通知する手段と、 該応答を受信したときに、上記第1のリクエストに対応
するスレッドの処理を再開する手段と、 を有することを特徴とする請求項1記載のサーバシステ
ム。 - 【請求項7】 上記ファイルサーバは、上記記憶装置を
アクセスするための所定のアドレスを上記リクエストに
設定し、上記I/Oサーバは、その受信したリクエスト
のアドレスを上記記憶装置に対応した物理アドレスに変
換して、該記憶装置をアクセスすることを特徴とする請
求項1記載のサーバシステム。 - 【請求項8】 上記リクエストに時間情報を設定する設
定手段と、 複数の上記リクエストを上記時間情報に従って並べるキ
ュー手段と、 上記キュー手段の先頭のリクエストに設定されている時
間情報に基づいて、該リクエストの処理を実行する処理
手段と、 を有することを特徴とする請求項1記載のサーバシステ
ム。 - 【請求項9】 上記時間情報を計時する計時手段と、 該計時手段が、上記キュー手段の先頭のリクエストに設
定されている時間情報が指定する時間のタイムアウトを
検出したときに、上記処理手段に対して該リクエストの
処理を実行するように指示を出す指示手段と、 をさらに有することを特徴とする請求項8記載のサーバ
システム。 - 【請求項10】 上記記憶装置に対して所定の自己処理
を行うように指示する指示リクエストを作成し、その指
示リクエストに対して時間情報を設定する指示リクエス
ト作成手段をさらに有し、 上記キュー手段は、上記リクエストおよび指示リクエス
トに設定されている時間情報に従ってそれらリクエスト
及び指示リクエストを並べ、上記処理手段は、上記キュ
ー手段の先頭のリクエストまたは指示リクエストに設定
されている時間情報に基づいて、該リクエストまたは指
示リクエストの処理を実行することを特徴とする請求項
8記載のサーバシステム。 - 【請求項11】 クライアントからのデバイスアクセス
要求を受信し、該要求に基づいたリクエストを発行する
上位サーバと、 上記上位サーバが発行したリクエストに従ってデバイス
へのアクセスを実行する下位サーバとを有することを特
徴とするサーバシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7017153A JPH08212090A (ja) | 1995-02-03 | 1995-02-03 | サーバシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7017153A JPH08212090A (ja) | 1995-02-03 | 1995-02-03 | サーバシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH08212090A true JPH08212090A (ja) | 1996-08-20 |
Family
ID=11936045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7017153A Withdrawn JPH08212090A (ja) | 1995-02-03 | 1995-02-03 | サーバシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH08212090A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11174952A (ja) * | 1997-12-11 | 1999-07-02 | Fumio Mizoguchi | 地図データの先読み方法及び地図スクロール方法 |
US7401129B2 (en) | 2003-04-21 | 2008-07-15 | International Business Machines Corporation | Network system, server, data processing method and program |
JP2009199424A (ja) * | 2008-02-22 | 2009-09-03 | Denso Corp | マイクロコンピュータ |
JP2011525010A (ja) * | 2008-05-30 | 2011-09-08 | ソニー コンピュータ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー | ファイル入出力スケジューラ |
JP2012053668A (ja) * | 2010-09-01 | 2012-03-15 | Fujitsu Ltd | ファイル管理プログラム,ファイル管理方法およびファイル管理装置 |
-
1995
- 1995-02-03 JP JP7017153A patent/JPH08212090A/ja not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11174952A (ja) * | 1997-12-11 | 1999-07-02 | Fumio Mizoguchi | 地図データの先読み方法及び地図スクロール方法 |
US7401129B2 (en) | 2003-04-21 | 2008-07-15 | International Business Machines Corporation | Network system, server, data processing method and program |
JP2009199424A (ja) * | 2008-02-22 | 2009-09-03 | Denso Corp | マイクロコンピュータ |
JP2011525010A (ja) * | 2008-05-30 | 2011-09-08 | ソニー コンピュータ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー | ファイル入出力スケジューラ |
JP2012053668A (ja) * | 2010-09-01 | 2012-03-15 | Fujitsu Ltd | ファイル管理プログラム,ファイル管理方法およびファイル管理装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2282276B1 (en) | System for client connection distribution according to system load | |
US8244903B2 (en) | Data streaming and backup systems having multiple concurrent read threads for improved small file performance | |
US9329909B1 (en) | Dynamically modifying a cluster of computing nodes used for distributed execution of a program | |
US8260840B1 (en) | Dynamic scaling of a cluster of computing nodes used for distributed execution of a program | |
WO2023082560A1 (zh) | 一种任务处理方法、装置、设备及介质 | |
JPH11296313A (ja) | 記憶サブシステム | |
US7206795B2 (en) | Prefetching and multithreading for improved file read performance | |
JP2008015888A (ja) | 負荷分散制御システム及び負荷分散制御方法 | |
JPH0477938B2 (ja) | ||
JPH0954754A (ja) | 疎結合並列処理環境における顧客情報制御システム及び方法 | |
JP2003345525A (ja) | 計算機システム及びレプリケーション方法 | |
JP2002196960A (ja) | ファイル入出力制御方法、ファイル管理サーバ及び並列計算機システム | |
US7140015B1 (en) | Microkernel for real time applications | |
US10289306B1 (en) | Data storage system with core-affined thread processing of data movement requests | |
Andreoli et al. | RT-MongoDB: A NoSQL database with differentiated performance | |
US12001338B2 (en) | Method and system for implementing metadata compression in a virtualization environment | |
JPH08212090A (ja) | サーバシステム | |
JPH0944461A (ja) | 疎結合並列処理環境においてapiスタート及びキャンセルトランザクション機能を有する顧客情報制御システム及び方法 | |
US10942821B1 (en) | Method and apparatus for dynamic binding and unbinding thin logical storage volumes to snapshots of a file system | |
CN116382594A (zh) | 一种linux系统对数据库服务资源隔离的方法及装置 | |
WO2022050197A1 (ja) | コンピュータシステムおよびコンピュータプログラム | |
JPH0844649A (ja) | データ処理装置 | |
JP3349547B2 (ja) | スケジューリングシステム | |
JP2001022614A (ja) | 階層形記憶システム | |
JP3056000B2 (ja) | マルチメディアデータネットワーク転送方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20020507 |