(57)【要約】【課題】本発明のコンピュータシステムでは、ｉＳＣＳＩを利用して、複数のコンピュータが同一の論理ボリュームに頻繁にアクセス可能である。【解決手段】コンピュータシステムは、ｉＳＣＳＩに未対応の第１コンピュータ１と、ｉＳＣＳＩに対応する第２コンピュータ２とを備える。負荷分散部４は、コマンド処理を依頼する依頼先コンピュータを決定し、コマンド処理を依頼する（Ｓ１，Ｓ２）。依頼先コンピュータは、ＩＯ制御部５に共有ディスク７内の論理ボリュームへのアクセスを要求する（Ｓ３）。依頼先コンピュータがｉＳＣＳＩに対応していない場合、ＩＯ制御部５は、代理コンピュータを選択する（Ｓ４）。代理コンピュータは、依頼先コンピュータに代わって論理ボリュームをマウントし（Ｓ５）、依頼先コンピュータにＮＦＳを介して提供する（Ｓ６）。【選択図】図１
2010039809.tif 000002
【特許請求の範囲】
【請求項１】
通信ネットワークに接続され、ｉＳＣＳＩに基づいて利用される少なくとも１つ以上の共有記憶装置と、
前記通信ネットワークを介して前記共有記憶装置にそれぞれ接続される複数のコンピュータと、
前記各コンピュータの中で負荷が分散するように、前記各コンピュータのうちいずれか一つのコンピュータを、コマンドの処理を依頼するための依頼先コンピュータとして選択する、負荷分散制御部と、
前記依頼先コンピュータから前記コマンドの処理のために発行されるアクセス要求の可否を判定し、可と判定した場合にのみ、前記依頼先コンピュータによる前記共有記憶装置へのアクセスを許可する、アクセス要求制御部と、を備え、
前記アクセス要求制御部は、それぞれ異なる複数の前記依頼先コンピュータがｉＳＣＳＩを用いて前記共有記憶装置を同時に利用できるように、前記各依頼先コンピュータからそれぞれ発行される複数のアクセス要求の可否を判定する、コンピュータシステム。
【請求項２】
前記アクセス要求制御部は、先に発行される先行アクセス要求と後から発行される後続アクセス要求とがそれぞれ異なる依頼先コンピュータから発行される場合、前記先行アクセス要求がリードアクセスの場合にのみ、前記後続アクセス要求についてはリードアクセス及びライトアクセスのいずれも許可し、前記先行アクセス要求がライトアクセスの場合は、前記後続アクセス要求についてはリードアクセスまたはライトアクセスのいずれも禁止する、請求項１に記載のコンピュータシステム。
【請求項３】
前記各コンピュータに含まれる複数の第１コンピュータは、前記共有記憶装置に直接的にアクセスするためのｉＳＣＳＩイニシエータを備えておらず、前記各コンピュータのうち前記各第１コンピュータ以外の複数の第２コンピュータは、前記ｉＳＣＳＩイニシエータを備えており、さらに、前記第１コンピュータ及び前記第２コンピュータは、前記通信ネットワークを介してファイルシステムを共有するためのネットワークファイルシステムをそれぞれ備えており、
前記アクセス要求制御部は、前記負荷分散制御部によって前記依頼先コンピュータが前記各第１コンピュータの中から選択された場合に、その選択された前記第１コンピュータに代わって前記共有記憶装置にアクセスするための代理コンピュータを、前記各第２コンピュータの中から選択し、
前記依頼先コンピュータとして選択された前記第１コンピュータは、前記ネットワークファイルシステムを用いて、前記代理コンピュータとして選択された前記第２コンピュータにマウントされた前記共有記憶装置内のデータを利用する、請求項１または請求項２に記載のコンピュータシステム。
【請求項４】
前記アクセス要求制御部は、前記各第２コンピュータの中で負荷が分散するように、前記代理コンピュータを選択する、請求項３に記載のコンピュータシステム。
【請求項５】
前記代理コンピュータは、ＮＦＳサーバを生成可能であり、前記依頼先コンピュータはＮＦＳクライアントを生成可能である、請求項３または請求項４に記載のコンピュータシステム。
【請求項６】
前記各コンピュータのうち前記共有記憶装置をマウントするコンピュータは、前記共有記憶装置がアンマウントされていることを確認してから、前記共有記憶装置をマウントする、請求項１〜請求項５のいずれか一項に記載のコンピュータシステム。
【請求項７】
前記共有記憶装置をマウントするコンピュータは、自コンピュータに前記共有記憶装置が既にマウントされている場合は、前記共有記憶装置を改めてマウントしない、請求項６に記載のコンピュータシステム。
【請求項８】
前記共有記憶装置をマウントするコンピュータは、前記コマンド処理が完了した後で、前記共有記憶装置をアンマウントし、アンマウントした旨を前記アクセス要求制御部に通知する、請求項６または請求項７に記載のコンピュータシステム。
【請求項９】
前記負荷分散制御部は、前記コマンド処理に関する待ち時間が最短となるように、前記各コンピュータのうちいずれか一つのコンピュータを、コマンドの処理を依頼するための依頼先コンピュータとして選択する、請求項１〜請求項８のいずれか一項に記載のコンピュータシステム。
【請求項１０】
ｉＳＣＳＩに基づいて通信ネットワークに接続される、少なくとも１つ以上の共有記憶装置と、
前記通信ネットワークを介して前記共有記憶装置にそれぞれ接続される複数の第１コンピュータと、
前記通信ネットワークを介して前記共有記憶装置にそれぞれ接続される複数の第２コンピュータと、
前記各第１コンピュータ及び前記各第２コンピュータの全コンピュータの中で負荷を分散させるように、前記各第１コンピュータ及び前記各第２コンピュータのうちいずれか一つのコンピュータを、クライアントコンピュータから受信したコマンドの処理を依頼するための依頼先コンピュータとして選択する、負荷分散制御部と、
前記依頼先コンピュータから前記コマンドの処理のために発行される、前記共有記憶装置へのアクセス要求の可否を判定し、可と判定した場合にのみ前記依頼先コンピュータによる前記共有記憶装置へのアクセスを許可する、アクセス要求制御部と、
を備え、
前記各第１コンピュータは、前記各第２コンピュータのうち所定の第２コンピュータを介して前記共有記憶装置を利用するためのＮＦＳクライアントをそれぞれ生成可能であり、
前記各第２コンピュータは、前記各第１コンピュータのうち所定の第１コンピュータが備える前記ＮＦＳクライアントに前記共有記憶装置を提供するためのＮＦＳサーバをそれぞれ生成可能であり、かつ、前記共有記憶装置にアクセスするためのｉＳＣＳＩイニシエータをそれぞれ備えており、
前記アクセス要求制御部は、前記依頼先コンピュータとして前記各第１コンピュータのうち前記所定の第１コンピュータが選択された場合、前記各第２コンピュータのうち前記所定の第２コンピュータを代理コンピュータとして選択し、前記代理コンピュータとして選択された前記所定の第２コンピュータの前記ＮＦＳサーバを介して、前記依頼先コンピュータとして選択された前記所定の第１コンピュータの前記ＮＦＳクライアントに、前記共有記憶装置のデータを提供させる、コンピュータシステム。
【請求項１１】
前記アクセス要求制御部は、前記各第２コンピュータの中で負荷を分散させるように、前記代理コンピュータを選択する、請求項１０に記載のコンピュータシステム。
【請求項１２】
前記アクセス要求制御部は、（１）先に発行される先行アクセス要求と後から発行される後続アクセス要求とがそれぞれ同一の依頼先コンピュータから発行される場合、前記後続アクセス要求についてはリードアクセスのみを許可し、（２）前記先行アクセス要求と前記後続アクセスとがそれぞれ異なる依頼先コンピュータから発行される場合、前記先行アクセス要求についてはリードアクセスのみ、前記後続アクセス要求についてはリードアクセス及びライトアクセスのいずれも許可する、請求項１０または請求項１１に記載のコンピュータシステム。
【請求項１３】
共有記憶装置を用いてデータを共有するための方法であって、
ｉＳＣＳＩ（internet Small Computer System Interface）に基づいて利用される少なくとも１つ上の共有記憶装置と、前記通信ネットワークを介して前記共有記憶装置にそれぞれ接続される、ｉＳＣＳＩに対応する複数のコンピュータ及びｉＳＣＳＩに対応していない複数のコンピュータとを備え、
コマンドを受信するステップと、
前記各コンピュータの中で負荷が分散するように、前記各コンピュータのうちいずれか一つのコンピュータを、前記コマンドの処理を依頼するための依頼先コンピュータとして選択するステップと、
前記依頼先コンピュータがｉＳＣＳＩに対応しているか否かを判定するステップと、
前記依頼先コンピュータがｉＳＣＳＩに対応している場合、前記依頼先コンピュータに前記共有記憶装置をマウントさせて前記コマンドを処理させ、前記コマンドの処理完了後に前記共有記憶装置をアンマウントさせるステップと、
前記依頼先コンピュータがｉＳＣＳＩに対応していない場合、前記ｉＳＣＳＩに対応する複数のコンピュータの中からいずれか一つのコンピュータを代理コンピュータとして選択するステップと、
前記代理コンピュータに、前記共有記憶装置をマウントさせるステップと、
前記代理コンピュータ内にＮＦＳ（Network File System）サーバを生成させ、かつ、前記依頼先コンピュータにＮＦＳクライアントを生成させ、これにより、前記代理コンピュータにマウントされた前記共有記憶装置を前記依頼先コンピュータが利用できるようにするステップと、
前記依頼先コンピュータが前記代理コンピュータを介して前記共有記憶装置を利用することにより、前記コマンドを処理させ、前記コマンドの処理完了後に処理完了を通知させるステップと、
前記処理完了を受信した場合に、前記代理コンピュータに前記共有記憶装置のアンマウントを要求してアンマウントさせるステップと、
を含む、データ共有方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム及びデータ共有方法に関する。
【背景技術】
【０００２】
近年では、ＩＰ（Internet Protocol）ネットワークを用いてＳＣＳＩ（Small Computer System Interface）コマンドを使用できる、ｉＳＣＳＩ（Internet SCSI）が提案されている。ｉＳＣＳＩ技術では、ＳＣＳＩコマンドやデータ等をＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）パケットに収納し、カプセル化する。これにより、ｉＳＣＳＩ技術に従う記憶装置は、通信ネットワークに直接接続することができ、その通信ネットワークに接続されたコンピュータは、記憶装置にアクセスしてデータを読み書きすることができる（特許文献１）。しかし、この従来技術では、複数のコンピュータが共通の論理ボリュームを同時に使用することについて考慮されていない。
【０００３】
別の従来技術としては、ｉＳＣＳＩに関する技術ではないが、複数のコンピュータが一つの記憶装置を利用する技術も知られている（特許文献２）。
【特許文献１】特開２００５−３５２８４４号公報
【特許文献２】特開２００５−３４６４２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
複数のコンピュータが、物理的に離れた場所に設置される一つの共有記憶装置を使用する場合、アクセス応答時間が低下するという問題を生じる。例えば、各コンピュータと共有記憶装置との間の通信遅延時間、先に実行されている処理が完了するまで待機する時間、コンピュータが共有記憶装置をマウントするために必要な時間、コンピュータが共有記憶装置をアンマウントするために必要な時間が、それぞれ発生するため、応答時間が低下する。このため、従来技術では、それぞれ異なるコンピュータが同一の共有記憶装置に頻繁にアクセスして、データを共有することができず、使い勝手が低い。
【０００５】
また、共有記憶装置に接続されているコンピュータが複数存在する場合、その中で最も処理能力の高いコンピュータにコマンド処理の依頼が集中することになり、結果的に、処理待ち時間が増大し、使い勝手が低下する。
【０００６】
さらに、ｉＳＣＳＩに対応しているコンピュータとｉＳＣＳＩに未対応のコンピュータとがシステム内に混在している場合、ｉＳＣＳＩイニシエータを備えないコンピュータは、ｉＳＣＳＩに基づく共有記憶装置を利用することができない。従って、ｉＳＣＳＩイニシエータを備える特定のコンピュータにコマンド処理の依頼が集中し、そのコンピュータの負荷が増大し、結果的に処理待ち時間が長くなる。
【０００７】
本発明は、上記問題点に鑑みてなされたもので、その目的は、処理待ち時間が増大するのを抑制し、複数のコンピュータがｉＳＣＳＩを用いて共有記憶装置内のデータを共有できるようにしたコンピュータシステム及びデータ共有方法を提供することにある。本発明の他の目的は、特定の複数のコンピュータのみがｉＳＣＳＩを用いて共有記憶装置に直接的にアクセス可能とすることにより、信頼性及び使い勝手を向上できるようにしたコンピュータシステム及びデータ共有方法を提供することにある。本発明の更なる目的は、後述する実施の形態の記載から明らかになるであろう。
【課題を解決するための手段】
【０００８】
上記課題を解決すべく、本発明の第１観点に従うコンピュータシステムは、通信ネットワークに接続され、ｉＳＣＳＩに基づいて利用される少なくとも１つ以上の共有記憶装置と、通信ネットワークを介して共有記憶装置にそれぞれ接続される複数のコンピュータと、各コンピュータの中で負荷が分散するように、各コンピュータのうちいずれか一つのコンピュータを、コマンドの処理を依頼するための依頼先コンピュータとして選択する、負荷分散制御部と、依頼先コンピュータからコマンドの処理のために発行されるアクセス要求の可否を判定し、可と判定した場合にのみ、依頼先コンピュータによる共有記憶装置へのアクセスを許可する、アクセス要求制御部と、を備え、アクセス要求制御部は、それぞれ異なる複数の依頼先コンピュータがｉＳＣＳＩを用いて共有記憶装置を同時に利用できるように、各依頼先コンピュータからそれぞれ発行される複数のアクセス要求の可否を判定する。
【０００９】
第２観点では、第１観点において、アクセス要求制御部は、先に発行される先行アクセス要求と後から発行される後続アクセス要求とがそれぞれ異なる依頼先コンピュータから発行される場合、先行アクセス要求がリードアクセスの場合にのみ、後続アクセス要求についてはリードアクセス及びライトアクセスのいずれも許可し、先行アクセス要求がライトアクセスの場合は、後続アクセス要求についてはリードアクセスまたはライトアクセスのいずれも禁止する。
【００１０】
第３観点では、第１観点または第２観点において、各コンピュータに含まれる複数の第１コンピュータは、共有記憶装置に直接的にアクセスするためのｉＳＣＳＩイニシエータを備えておらず、各コンピュータのうち各第１コンピュータ以外の複数の第２コンピュータは、ｉＳＣＳＩイニシエータを備えており、さらに、第１コンピュータ及び第２コンピュータは、通信ネットワークを介してファイルシステムを共有するためのネットワークファイルシステムをそれぞれ備えており、アクセス要求制御部は、負荷分散制御部によって依頼先コンピュータが各第１コンピュータの中から選択された場合に、その選択された第１コンピュータに代わって共有記憶装置にアクセスするための代理コンピュータを、各第２コンピュータの中から選択し、依頼先コンピュータとして選択された第１コンピュータは、ネットワークファイルシステムを用いて、代理コンピュータとして選択された第２コンピュータにマウントされた共有記憶装置内のデータを利用する。
【００１１】
第４観点では、第３観点において、アクセス要求制御部は、各第２コンピュータの中で負荷が分散するように、代理コンピュータを選択する。
【００１２】
第５観点では、第３観点または第４観点において、代理コンピュータは、ＮＦＳ（Network File System）サーバを生成可能であり、依頼先コンピュータはＮＦＳクライアントを生成可能である。
【００１３】
第６観点では、第１〜第５観点のいずれか一の観点において、各コンピュータのうち共有記憶装置をマウントするコンピュータは、共有記憶装置がアンマウントされていることを確認してから、共有記憶装置をマウントする。
【００１４】
第７観点では、第６観点において、共有記憶装置をマウントするコンピュータは、自コンピュータに共有記憶装置が既にマウントされている場合は、共有記憶装置を改めてマウントしない。
【００１５】
第８観点では、第６観点または第７観点において、共有記憶装置をマウントするコンピュータは、コマンド処理が完了した後で、共有記憶装置をアンマウントし、アンマウントした旨をアクセス要求制御部に通知する。
【００１６】
第９観点では、第１〜第８観点のいずれかにおいて、負荷分散制御部は、コマンド処理に関する待ち時間が最短となるように、各コンピュータのうちいずれか一つのコンピュータを、コマンドの処理を依頼するための依頼先コンピュータとして選択する。
【００１７】
本発明の第１０観点に従うコンピュータシステムは、ｉＳＣＳＩに基づいて通信ネットワークに接続される、少なくとも１つ以上の共有記憶装置と、通信ネットワークを介して共有記憶装置にそれぞれ接続される複数の第１コンピュータと、通信ネットワークを介して共有記憶装置にそれぞれ接続される複数の第２コンピュータと、各第１コンピュータ及び各第２コンピュータの全コンピュータの中で負荷を分散させるように、各第１コンピュータ及び各第２コンピュータのうちいずれか一つのコンピュータを、クライアントコンピュータから受信したコマンドの処理を依頼するための依頼先コンピュータとして選択する、負荷分散制御部と、依頼先コンピュータからコマンドの処理のために発行される、共有記憶装置へのアクセス要求の可否を判定し、可と判定した場合にのみ依頼先コンピュータによる共有記憶装置へのアクセスを許可する、アクセス要求制御部と、を備え、各第１コンピュータは、各第２コンピュータのうち所定の第２コンピュータを介して共有記憶装置を利用するためのＮＦＳクライアントをそれぞれ生成可能であり、各第２コンピュータは、各第１コンピュータのうち所定の第１コンピュータが備えるＮＦＳクライアントに共有記憶装置を提供するためのＮＦＳサーバをそれぞれ生成可能であり、かつ、共有記憶装置にアクセスするためのｉＳＣＳＩイニシエータをそれぞれ備えており、アクセス要求制御部は、依頼先コンピュータとして各第１コンピュータのうち所定の第１コンピュータが選択された場合、各第２コンピュータのうち所定の第２コンピュータを代理コンピュータとして選択し、代理コンピュータとして選択された所定の第２コンピュータのＮＦＳサーバを介して、依頼先コンピュータとして選択された所定の第１コンピュータのＮＦＳクライアントに、共有記憶装置のデータを提供させる。
【００１８】
第１１観点では、第１０観点において、アクセス要求制御部は、各第２コンピュータの中で負荷を分散させるように、代理コンピュータを選択する。
【００１９】
第１２観点では、第１０または第１１観点において、アクセス要求制御部は、（１）先に発行される先行アクセス要求と後から発行される後続アクセス要求とがそれぞれ同一の依頼先コンピュータから発行される場合、後続アクセス要求についてはリードアクセスのみを許可し、（２）先行アクセス要求と後続アクセスとがそれぞれ異なる依頼先コンピュータから発行される場合、先行アクセス要求についてはリードアクセスのみ、後続アクセス要求についてはリードアクセス及びライトアクセスのいずれも許可する。
【００２０】
本発明の第１３観点に従うデータ共有方法は、共有記憶装置を用いてデータを共有するための方法であって、ｉＳＣＳＩに基づいて利用される少なくとも１つ上の共有記憶装置と、通信ネットワークを介して共有記憶装置にそれぞれ接続される、ｉＳＣＳＩに対応する複数のコンピュータ及びｉＳＣＳＩに対応していない複数のコンピュータとを備え、コマンドを受信するステップと、各コンピュータの中で負荷が分散するように、各コンピュータのうちいずれか一つのコンピュータを、コマンドの処理を依頼するための依頼先コンピュータとして選択するステップと、依頼先コンピュータがｉＳＣＳＩに対応しているか否かを判定するステップと、依頼先コンピュータがｉＳＣＳＩに対応している場合、依頼先コンピュータに共有記憶装置をマウントさせてコマンドを処理させ、コマンドの処理完了後に共有記憶装置をアンマウントさせるステップと、依頼先コンピュータがｉＳＣＳＩに対応していない場合、ｉＳＣＳＩに対応する複数のコンピュータの中からいずれか一つのコンピュータを代理コンピュータとして選択するステップと、代理コンピュータに、共有記憶装置をマウントさせるステップと、代理コンピュータ内にＮＦＳサーバを生成させ、かつ、依頼先コンピュータにＮＦＳクライアントを生成させ、これにより、代理コンピュータにマウントされた共有記憶装置を依頼先コンピュータが利用できるようにするステップと、依頼先コンピュータが代理コンピュータを介して共有記憶装置を利用することにより、コマンドを処理させ、コマンドの処理完了後に処理完了を通知させるステップと、処理完了を受信した場合に、代理コンピュータに共有記憶装置のアンマウントを要求してアンマウントさせるステップと、を含む。
【００２１】
本発明の構成の少なくとも一部は、コンピュータプログラムとして生成可能である。このコンピュータプログラムは、例えば、メモリや光ディスクのような記録媒体に固定したり、あるいは、通信ネットワークのような通信媒体を用いることにより、流通させることができる。
【発明を実施するための最良の形態】
【００２２】
以下、添付図面に基づいて本発明の実施形態を説明する。図１は、本実施形態の全体を示す説明図である。本実施形態では、複数のコンピュータ１，２が共通のディスク７を同時に利用可能としている。本実施例では、通信ネットワークに直接的に接続される共有記憶装置を、通信ネットワーク上に分散する複数のコンピュータが共同で使用するための通信プロトコルとして、ｉＳＣＳＩを例示する。しかし、本発明はｉＳＣＳＩに限らず、インターネットのような広域通信ネットワークに記憶装置を直接接続することのできる、他の通信プロトコルにも適用可能であろう。図１は、本発明の理解及び実施に必要な程度で本発明の概要を示しており、本発明の範囲は図１に示す構成に限定されない。本実施形態の詳細は、後述の実施例で明らかにされる。
【００２３】
本実施形態に係るコンピュータシステムは、それぞれ後述するように、ｉＳＣＳＩに対応していない第１コンピュータ１と、ｉＳＣＳＩに対応している第２コンピュータ２と、クライアントコンピュータ３と、負荷分散制御部４と、ＩＯ制御部５と、ｉＳＣＳＩターゲットを備えるｉＳＣＳＩサーバ６と、共有ディスク７とを備える。
【００２４】
各コンピュータ１，２と、負荷分散制御部４と、ＩＯ制御部５と、ｉＳＣＳＩサーバ６とは、それぞれ通信ネットワークＩＰ−ＮＷを介して相互通信可能に接続されている。通信ネットワークＩＰ−ＮＷは、例えば、インターネットのようなＴＣＰ／ＩＰ（Transmission Control Protocol/Internet rotocol）を利用できる通信ネットワークとして構成される。
【００２５】
各コンピュータ１，２とｉＳＣＳＩサーバ６及び共有ディスク７とは、それぞれ物理的に別々の場所に設けることができる。しかし、これに限らず、各コンピュータ１，２とｉＳＣＳＩサーバ６及び共有ディスク７を近接した場所に配置してもよい。各コンピュータ１，２は、例えば、ワークステーションのようなコンピュータとして構成されるが、本発明はワークステーションに限定されない。負荷分散制御部４とＩＯ制御部５とは、それぞれ別々のコンピュータ（サーバコンピュータ）として構成してもよいし、あるいは一つのコンピュータ（サーバコンピュータ）内に負荷分散制御部４とＩＯ制御部５とをそれぞれ設ける構成でもよい。
【００２６】
コンピュータシステムには、ｉＳＣＳＩに対応していない第１コンピュータ１と、ｉＳＣＳＩに対応している第２コンピュータ２とがそれぞれ複数ずつ含まれている。ｉＳＣＳＩに対応しているとは、ｉＳＣＳＩイニシエータを備えていることを意味し、ｉＳＣＳＩに対応していないとは、ｉＳＣＳＩイニシエータを備えていないことを意味する。
【００２７】
本実施形態では、ｉＳＣＳＩに未対応の第１コンピュータ１の方が、ｉＳＣＳＩに対応している第２コンピュータ２よりも多い。換言すれば、比較的少数のｉＳＣＳＩ対応コンピュータ２が、比較的多数のｉＳＣＳＩ未対応コンピュータ１による共有ディスク７の利用を支えている。これにより、後述のように、ファイアーウォールに通信を許可するポートを必要以上に設定する必要が無く、コンピュータシステムの信頼性が向上する。また、コンピュータシステム内の全コンピュータにｉＳＣＳＩイニシエータを搭載する必要がないため、コンピュータシステムの初期コストや維持コストを低減できる。
【００２８】
ｉＳＣＳＩイニシエータは、ハードウェア製品またはソフトウェア製品のいずれで実現されてもよい。現在はｉＳＣＳＩに対応していないコンピュータ１であっても、ｉＳＣＳＩイニシエータのハードウェアを取り付けることにより、ｉＳＣＳＩイニシエータの機能を備えることができる。または、ｉＳＣＳＩイニシエータのソフトウェアを起動させることにより、ｉＳＣＳＩイニシエータを備えないコンピュータ１にｉＳＣＳＩイニシエータとしての機能を持たせることができる。
【００２９】
第１コンピュータ１及び第２コンピュータ２のいずれも、ＮＦＳ（Network File System）を用いてデータを共有できるようになっている。詳細は後述するが、ｉＳＣＳＩに未対応の第１コンピュータ１が共有ディスク７内のデータを利用する場合、その第１コンピュータ１に代わって、ｉＳＣＳＩに対応する第２コンピュータ２が共有ディスク７をマウントする。そして、第１コンピュータ１は、ＮＦＳを用いて第２コンピュータ２にマウントされた共有ディスク７のデータにアクセスする。このために、第１コンピュータ１にはＮＦＳクライアント１Ａが設けられ、第２コンピュータ２にはＮＦＳサーバ２Ａ及びｉＳＣＳＩイニシエータ２Ｂが設けられる。
【００３０】
クライアントコンピュータ３は、例えば、パーソナルコンピュータのようなコンピュータとして構成されており、コンピュータ１，２を利用する。
【００３１】
負荷分散制御部４は、コンピュータシステム内に含まれる各コンピュータ１，２に負荷を分散させて、特定のコンピュータに負荷が集中するのを防止するものである。負荷分散制御部４は、クライアントコンピュータ３から発行されるコマンドを処理するための依頼先コンピュータを、負荷管理テーブルＴ１に基づいて決定する。負荷管理テーブルＴ１は、コンピュータシステム内の各コンピュータ１，２に関する負荷状態や計算能力等を管理している。
【００３２】
ＩＯ制御部５は、「アクセス要求制御部」に対応する。ＩＯとは、Input/Outputの略である。ＩＯ制御部５は、共有ディスク７へのアクセス要求（ＩＯ要求）を一元的に管理している。ＩＯ制御部５は、ＩＯ使用管理テーブルＴ２及び排他制御管理テーブルＴ３を用いて、依頼先コンピュータから発行されるＩＯ要求（アクセス要求）を許可するか否かを判定する。ＩＯ使用管理テーブルＴ２は、例えば、どのコンピュータが、共有ディスク７内のどの論理ボリューム（ＬＵ：Logical Unit）について、どのようなアクセス（リードアクセスかライトアクセスか）を行っているかを管理するテーブルである。即ち、ＩＯ使用管理テーブルＴ２は、共有ディスク７へのＩＯ要求の状況を管理している。
【００３３】
排他制御管理テーブルＴ３は、同一の論理ボリュームに対してアクセスが競合した場合の条件を管理するテーブルである。排他制御管理テーブルＴ３には、同一の論理ボリュームに関する複数のＩＯ要求が同一のコンピュータから発行されている場合と、複数のＩＯ要求が異なるコンピュータから発行されている場合の両方が予め設定される。以下の説明では、同一の論理ボリュームに関する複数のＩＯ要求を、先行ＩＯ要求と後続ＩＯ要求と区別して呼ぶ場合がある。先行ＩＯ要求とは、先に発行されたＩＯ要求である。後続ＩＯ要求とは、先行ＩＯ要求の後に発行されたＩＯ要求である。
【００３４】
同一の論理ボリュームに関する先行ＩＯ要求と後続ＩＯ要求とが同一のコンピュータから発行される場合は、先行ＩＯ要求及び後続ＩＯ要求がそれぞれリードアクセスである場合にのみ、その論理ボリュームへの同時アクセスが許可される。つまり、先行するリードアクセス及び後続のリードアクセスの両方が同時に実行される。それ以外の組合せは全て禁止される。つまり、先行ＩＯ要求がライトアクセスの場合、そのライトアクセスされている論理ボリュームへの、後続ＩＯ要求は一切禁止される。また、先行ＩＯ要求がリードアクセスの場合、そのリードアクセスされている論理ボリュームへの、後続のライトアクセスは禁止される。
【００３５】
同一の論理ボリュームに関する先行ＩＯ要求と後続ＩＯ要求とがそれぞれ異なるコンピュータから発行される場合は、先行ＩＯ要求がライトアクセスである場合にのみ、後続ＩＯ要求は一切禁止される。先行ＩＯ要求がリードアクセスの場合、後続のＩＯ要求はリードアクセス及びライトアクセスのそれぞれが許可される。つまり、異なるコンピュータが同一の論理ボリュームを同時に使用しようとする場合、先行ＩＯ要求がリードアクセスならば、後続するライトアクセス及びリードアクセスのいずれもが許可される。先行ＩＯ要求がリードアクセスの場合、後続するライトアクセスを許可しても、先行のリードアクセスで読み出されるデータに何ら影響が生じないためである。
【００３６】
ＩＯ制御部５は、同一の論理ボリュームに関する複数のＩＯ要求について、その可否を判定する。さらに、ＩＯ制御部５は、ｉＳＣＳＩ未対応の第１コンピュータ１から共有ディスク７へのＩＯ要求を受信した場合、第１コンピュータに代わって共有ディスク７をマウントするための第２コンピュータ２を代理コンピュータとして選択する。代理コンピュータは、マウントした共有ディスク７内のデータを、ＮＦＳ経由で第１コンピュータ１に提供する。これにより、第１コンピュータ１は、共有ディスク内のデータを利用して必要な処理（リード処理やライト処理等）を実行することができる。
【００３７】
ｉＳＣＳＩサーバ６は、ｉＳＣＳＩターゲットを備えている。ｉＳＣＳＩサーバ６には、共有ディスク７が接続されている。ｉＳＣＳＩサーバ６と共有ディスク７とは別々に構成されている必要はなく、ディスク装置内にｉＳＣＳＩサーバを設けてもよい。
【００３８】
共有ディスク７は、例えば、ハードディスクドライブ、光ディスクドライブ、相変化メモリデバイス（ＰＲＡＭ(Phase change RAM)）、フラッシュメモリデバイス等のような、書き換え可能な不揮発性の記憶装置として構成される。本実施形態では、記憶装置の種類を特に問わない。便宜上ディスクと呼ぶが、記憶媒体が円盤状である必要性はない。
【００３９】
共有ディスク７の物理的記憶領域を利用して、論理的記憶装置である論理ボリュームが形成される。複数の記憶装置の物理的記憶領域をパリティグループとして仮想化し、そのパリティグループ内に一つまたは複数の論理ボリュームを設けることができる。あるいは、一つの記憶装置の物理的記憶領域に一つまたは複数の論理ボリュームを設けることもできる。論理ボリュームには、各コンピュータ１，２によって共通に使用されるファイルのデータ等が記憶される。図中、論理ボリュームをＬＵと略記する。
【００４０】
本実施形態による動作の流れを説明する。負荷分散制御部４は、クライアントコンピュータ３からのコマンドを受け付けると（Ｓ１）、負荷管理テーブルＴ１に基づいて、そのコマンドの処理を依頼すべきコンピュータを１つ選択する（Ｓ２）。負荷分散制御部４は、ｉＳＣＳＩに対応しているか否かを問わず、コンピュータシステムに含まれる各コンピュータ１，２の中から、いずれか一つのコンピュータを選択する。従って、図１に示すように、ｉＳＣＳＩイニシエータを備えない第１コンピュータ１が、依頼先コンピュータとして選択される場合もある。
【００４１】
依頼先コンピュータとして選択された第１コンピュータ１は、ＩＯ制御部５に対して、共有ディスク７へのアクセスを要求する（Ｓ３）。ＩＯ制御部５は、コンピュータシステム内における共有ディスク７へのアクセスを一元的に管理している。ＩＯ制御部５は、後述のように、ｉＳＣＳＩに対応しているコンピュータ２を把握している。
【００４２】
ＩＯ制御部５は、ｉＳＣＳＩ未対応の依頼先コンピュータ１から共有ディスク７へのアクセスが要求された場合（Ｓ３）、その依頼先コンピュータ１に代わって共有ディスク７をマウントするための代理コンピュータを、ｉＳＣＳＩに対応しているコンピュータ２の中から選択する（Ｓ４）。代理コンピュータとして選択されたコンピュータ２には、依頼先コンピュータ１を特定するための情報（ＩＰアドレス等）や、依頼先コンピュータ１がアクセスを希望している記憶領域（論理ボリューム）を特定するための情報（アクセスパス情報等）が、ＩＯ制御部５から通知される。
【００４３】
代理コンピュータ２は、ｉＳＣＳＩイニシエータ２Ｂを用いてコマンドを発行することにより、共有ディスク７内の所望の論理ボリュームを代理コンピュータ２にマウントさせる（Ｓ５）。そして、代理コンピュータ２は、ＮＦＳサーバ２Ａを作成し、代理コンピュータ２にマウントされた論理ボリュームを、ＮＦＳを介して、依頼先コンピュータ１に提供する（Ｓ６）。依頼先コンピュータ１は、ＮＦＳクライアント１ＡからＮＦＳサーバ２Ａを介して、共有ディスク７内の論理ボリュームにアクセスする。
【００４４】
このように本実施形態では、複数のコンピュータ１，２が共有ディスク７内の同一論理ボリュームにアクセスし、データを使用することができる。
【００４５】
本実施形態では、同一の論理ボリュームについての複数のＩＯ要求がそれぞれ異なるコンピュータから発行された場合、先行ＩＯ要求がリード要求であるならば、後続ＩＯ要求がリード要求またはライト要求のいずれの場合も許可する。つまり、共有ディスク７内の論理ボリュームについてリードアクセスが先に行われている場合、その論理ボリュームについて、後からライトアクセスまたはリードアクセスのいずれも実行できる。従って、共有ディスク７内の同一の論理ボリュームを、コンピュータシステム内の複数のコンピュータが同時に使用できる機会が増大し、処理待ち時間が低減し、使い勝手が向上する。
【００４６】
本実施形態では、コンピュータ間で負荷が分散するように、複数のコンピュータ１，２の中からいずれか一つのコンピュータを依頼先コンピュータとして選択し、その依頼先コンピュータにコマンド処理を依頼する。従って、各コンピュータ１，２の負荷状況に応じて依頼先コンピュータを決定するため、処理待ち時間を短縮できる。
【００４７】
本実施形態では、ｉＳＣＳＩ未対応のコンピュータ１とｉＳＣＳＩに対応するコンピュータ２とが混在するシステム環境下において、ｉＳＣＳＩ未対応のコンピュータ１は、ｉＳＣＳＩに対応するコンピュータ２とＮＦＳとを介して、所望の論理ボリューム内のデータを利用できる。従って、コンピュータシステム内の全コンピュータにｉＳＣＳＩイニシエータ機能を設ける必要がなく、システムの構築コストや維持コストを低減することができる。また、ｉＳＣＳＩに対応できるコンピュータ２の台数を制限することにより、ファイアーウォールを通過するポートの設定数を制限することができ、セキュリティ性を高めることができる。
【００４８】
本実施形態では、ｉＳＣＳＩに対応する第２コンピュータ２の間で負荷が分散するように、代理コンピュータを選択する。従って、特定の第２コンピュータ２が代理コンピュータとして選択され、高負荷状態になるのを防止することができ、処理待ち時間を低減することができる。以下、本実施形態を詳細に説明する。
【実施例１】
【００４９】
図２は、本実施例に係るコンピュータシステムの全体構成を示す説明図である。まず最初に、図１との対応関係を説明する。第１コンピュータ１０は図１中の第１コンピュータ１に、第２コンピュータ２０は図１中の第２コンピュータ２に、クライアントコンピュータ３０は、図１中のクライアントコンピュータ３に、負荷分散サーバ４０は図１中の負荷分散制御部４に、ＩＯサーバ５０は図１中のＩＯ制御部５に、ｉＳＣＳＩサーバ６０は図１中のｉＳＣＳＩサーバ６に、共有ディスク７０は図１中の共有ディスク７に、それぞれ対応する。
【００５０】
コンピュータシステムは、例えば、複数の第１コンピュータ１０と、複数の第２コンピュータ２０と、少なくとも一つのクライアントコンピュータ（以下、クライアントＰＣ）３０と、少なくとも一つの負荷分散サーバ４０と、少なくとも一つのＩＯサーバ５０と、少なくとも一つのｉＳＣＳＩサーバ６０と、少なくとも一つの共有ディスク７０とを備えている。
【００５１】
各コンピュータ１０，２０と、クライアントＰＣ３０と、各サーバ４０，５０，６０とは、それぞれ通信ネットワークＩＰ−ＮＷを介して相互通信可能に接続されている。各コンピュータ１０，２０とクライアントＰＣ３０と各サーバ４０，５０，６０とは、それぞれ物理的に離れた場所に設けることもできるし、同一構内に設けることもできる。
【００５２】
ここで、各コンピュータ１０，２０とクライアントＰＣ３０と各サーバ４０，５０，６０とは、それぞれコンピュータ装置として構成される。従って、それらのコンピュータ装置１０〜６０は、例えば、ＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、通信インターフェース、ローカルディスク等を備えている。
【００５３】
ｉＳＣＳＩサーバ６０には共有ディスク７０が接続されている。ｉＳＣＳＩサーバ６０は、ｉＳＣＳＩターゲット６１を備えており、第２コンピュータ２０内のｉＳＣＳＩイニシエータから発行されるコマンドに応じて、共有ディスク７０を操作する。共有ディスク７０は、一つまたは複数の論理ボリューム７１を備える。
【００５４】
図３は、各コンピュータ１０，２０及びクライアントＰＣ３０の構成をそれぞれ示す説明図である。以下の図面では、ｉＳＣＳＩサーバ６０を省略する。また、共有ディスク７０がｉＳＣＳＩに対応していることを明らかにすべく、図中ではｉＳＣＳＩディスク７０と表示する。
【００５５】
各コンピュータ１０，２０は、例えば、ワークステーションのようなコンピュータ装置として構成される。従って、図中では各コンピュータ１０，２０に「ＷＳ」の表示を与えている。しかし、各コンピュータ１０，２０は、ワークステーションに限らず、例えば、サーバコンピュータ等の他のコンピュータ装置として構成されてもよい。
ｉＳＣＳＩに対応していない第１コンピュータ１０は、例えば、受付部１１と、処理プログラム１２と、ＮＦＳクライアント１３とを備える。
【００５６】
受付部１１は、負荷分散サーバ４０からの処理依頼を受け付けて、処理プログラム１２に引き渡すためのものである。処理プログラム１２は、例えば、コンパイルプログラムやシミュレーションプログラム等のような各種アプリケーションプログラムである。処理プログラム１２は、本実施例により予め用意されているＩＯ関数Ｆを呼び出すことにより、所定の処理を実行する。ＩＯ関数Ｆには、例えば、リードコマンドやライトコマンドが含まれている。
【００５７】
ＮＦＳクライアント１３は、ｉＳＣＳＩに対応する第２コンピュータ２０を介して、共有ディスク７０内の論理ボリューム７１にアクセスする場合に使用される。ＮＦＳクライアント１３は、第２コンピュータ２０内のＮＦＳサーバ２３を介して、論理ボリューム７１内のデータにアクセスする。
【００５８】
ｉＳＣＳＩに対応する第２コンピュータ２０は、例えば、受付部２１と、処理プログラム２２と、ＮＦＳサーバ２３と、ｉＳＣＳＩイニシエータ２４とを備える。受付部２１は、負荷分散サーバ４０やＩＯサーバ５０からの依頼を受け付けるための機能である。処理プログラム２２は、各種アプリケーションプログラムであり、ＩＯ関数Ｆを呼び出して所定の処理を実行する。
【００５９】
ＮＦＳサーバ２３は、第２コンピュータ２０にマウントされた論理ボリューム７１を、ＮＦＳを介して、第１コンピュータ１０内のＮＦＳクライアント１３に提供するための機能である。
【００６０】
ｉＳＣＳＩイニシエータ２４は、ｉＳＣＳＩターゲットを介して共有ディスク７０内の論理ボリュームを利用するものである。ｉＳＣＳＩイニシエータ２４は、ハードウェア回路として構成することもできるし、ソフトウェア製品として構成することもできる。ｉＳＣＳＩイニシエータ２４をハードウェア回路として構成すれば、第２コンピュータ２０のＣＰＵの負担を増大させずに、ｉＳＣＳＩターゲットデバイス（共有ディスク７０）を使用することができる。ｉＳＣＳＩイニシエータ２４をソフトウェア製品として第２コンピュータ２０にインストールすれば、より簡単にｉＳＣＳＩイニシエータ２４を実現することができる。しかし、ｉＳＣＳＩイニシエータ２４をソフトウェアで実現する場合、第２コンピュータ２０の処理性能によっては、第２コンピュータ２０のＣＰＵ負荷が増大して、クライアントＰＣ３０からのコマンドを処理する時間が長くなる可能性がある。
【００６１】
クライアントＰＣ３０は、例えば、パーソナルコンピュータや携帯情報端末あるいは携帯電話のようなコンピュータ装置として構成される。クライアントＰＣ３０は、処理プログラム１２，２２を使用するためのジョブ依頼プログラム３１を備えている。ジョブ依頼プログラム３１は、負荷分散依頼関数３２を使用できる。負荷分散依頼関数３２は、負荷分散サーバ４０にコマンド処理の負荷分散を依頼するための関数である。
【００６２】
図４は、負荷分散サーバ４０の構成を示す説明図である。負荷分散サーバ４０は、負荷管理制御プログラム４１と、待ちキュー４２とを備える。負荷管理制御プログラム４１は、特定のコンピュータに負荷が集中しないように、各コンピュータ１０，２０間で負荷を分散させるように制御するプログラムである。このプログラム４１により、各コンピュータ１０，２０間で負荷を分散させるように、クライアントＰＣ３０から受信したコマンドを処理するための依頼先コンピュータが選択される。待ちキュー４２は、依頼先コンピュータの選択を待っているコマンドを管理する。
【００６３】
負荷管理制御プログラム４１は、その内部的な機能として、例えば、プロセス間通信関数４１０と、コンピュータ使用状況の管理４２０と、負荷分散モード処理４３０と、実行可能なマシンの検出４４０と、ＩＯ使用状況の取得４５０と、実行マシンの許可４６０と、実行マシンの開放４７０とを備える。
【００６４】
プロセス間通信関数４１０は、ＩＯサーバ５０内のプロセス間通信関数５１０との間で通信を行うためのものである。コンピュータ使用状況の管理４２０は、後述の負荷管理テーブルＴ１０を用いて、コンピュータシステム内の各コンピュータ１０，２０の使用状況（負荷状態）をそれぞれ管理するものである。
【００６５】
負荷分散モード処理４３０は、各コンピュータ１０，２０の負荷状態に基づいて各コンピュータ１０，２０の中から依頼先コンピュータを選択し、特定のコンピュータが依頼先コンピュータとして集中的に選択されるのを未然に防止する。実行可能なマシンの検出４４０は、コンピュータシステム内の各コンピュータ１０，２０のうち、コマンド処理を実行可能なコンピュータ（マシン）を検出する。つまり、クライアントＰＣ３０からの要求に対応する処理プログラムを有するコンピュータが検出される。
【００６６】
ＩＯ使用状況の取得４５０は、ＩＯサーバ５０のＩＯ管理制御プログラム５１から、共有ディスク７０の使用状況（どのコンピュータがどの論理ボリュームを使用しているか等）を取得する。実行マシン許可４６０は、依頼先コンピュータとして選択されたコンピュータ（マシン）に、クライアントＰＣ３０からの要求（コマンド）の実行を許可する機能である。実行マシンの開放４７０は、依頼先コンピュータとして選択されたコンピュータを開放する。
【００６７】
図５は、ＩＯサーバ５０の構成を示す説明図である。ＩＯサーバ５０は、ＩＯ管理制御プログラム５１と、待ちキュー５２とを備える。ＩＯ管理制御プログラム５１は、共有ディスク７０へのアクセス状況を管理する。待ちキュー５２は、共有ディスク７０の使用を待っているコマンドを管理する。
【００６８】
ＩＯ管理制御プログラム５１は、例えば、プロセス間通信関数５１０と、ＩＯ使用状況の管理５２０と、ＩＯモード判定処理５３０と、ＩＯ使用権許可５４０と、ＩＯ使用権開放５５０と、ＩＯ負荷分散５６０とを備える。
【００６９】
プロセス間通信関数５１０は、負荷分散サーバ４０の負荷管理制御プログラム４１とＩＯ管理制御プログラム５１とが通信するためのものである。ＩＯ使用状況の管理５２０は、ＩＯ使用管理テーブルＴ２０、排他制御管理テーブルＴ３０及びｉＳＣＳＩ利用可能コンピュータ管理テーブルＴ４０を用いて、共有ディスク７０内の各論理ボリューム７１へのＩＯ要求の状況を管理する。
【００７０】
ＩＯ使用管理テーブルＴ２０は、共有ディスク７０内の論理ボリューム７１を使用するＩＯ要求を管理する。排他制御管理テーブルＴ３０は、同一の論理ボリューム７１を使用する複数のＩＯ要求について、排他制御するか否かの条件を管理する。ｉＳＣＳＩ利用可能コンピュータ管理テーブルＴ４０は、ｉＳＣＳＩイニシエータを備えているコンピュータの識別子を管理する。
【００７１】
ＩＯモード判定処理５３０は、依頼先コンピュータから要求されたＩＯ要求の種別（ライト要求かリード要求か）やＩＯ要求先の論理ボリューム７１の識別番号等に基づいて、排他制御を行うか否かを判断する。ＩＯ使用権許可５４０は、依頼先コンピュータからのＩＯ要求に対して、共有ディスク７０内の論理ボリューム７１の使用を許可する。ＩＯ使用権開放５５０は、ＩＯ要求に対して、論理ボリューム７１の使用許可を開放する。ＩＯ負荷分散５６０は、特定の第２コンピュータ２０だけが代理コンピュータとして選択されて負荷が増大するのを防止すべく、各第２コンピュータ２０の負荷を考慮して代理コンピュータを選択する。
【００７２】
図６は、ＩＯ要求の排他制御について示す説明図である。図６（ａ）は、複数のＩＯ要求（ジョブ）が同一のコンピュータから発行される場合を、図６（ｂ）は、複数のＩＯ要求が異なるコンピュータから発行される場合を、それぞれ示す。
【００７３】
ここで、クライアントＰＣ３０から要求された処理を実行するための依頼先コンピュータは、コンピュータシステム内の全コンピュータ１０，２０の中から負荷状態に応じて選択される。従って、第１コンピュータ１０または第２コンピュータ２０のいずれかである場合を示すために、図６では、コンピュータに符号１０（２０）を与えている。
【００７４】
図６（ａ）を参照して、複数の（２つの）ＩＯ要求が同一の依頼先コンピュータＷＳａから発行される場合を説明する。排他制御管理テーブルＴ３０に含まれる、同一コンピュータでのＩＯ排他制御を管理するテーブルＴ３１は、先行ＩＯ要求及び後続ＩＯ要求が共にリード要求である場合のみ、後続ＩＯ要求を許可し、それ以外の場合を禁止する。つまり、先行ＩＯ要求がライト要求の場合、後続ＩＯ要求はリード要求であるかライト要求であるかを問わずに一切禁止される。先行ＩＯ要求がリード要求の場合、後続するリード要求は許可されるが、後続するライト要求は禁止される。
【００７５】
図６（ｂ）を参照して、複数のＩＯ要求がそれぞれ異なるコンピュータＷＳａ，ＷＳｂから発行される場合を説明する。図示の例では、先行ＩＯ要求が一方のコンピュータＷＳａから発行され、後続ＩＯ要求が他方のコンピュータＷＳｂから発行される。排他制御管理テーブルＴ３０に含まれる、異なるコンピュータでのＩＯ排他制御を管理するテーブルＴ３２は、先行ＩＯ要求がリード要求の場合、後続ＩＯ要求がリード要求またはライト要求のいずれであっても許可し、先行ＩＯ要求がライト要求の場合、後続ＩＯ要求がリード要求またはライト要求のいずれであっても禁止する。
【００７６】
図７は、負荷管理テーブルＴ１０を構成する各テーブルＴ１１〜Ｔ１３の構成を示す説明図である。コンピュータ能力管理テーブルＴ１１は、コンピュータシステム内の各コンピュータ１０，２０について処理能力等を管理する。コンピュータ能力管理テーブルＴ１１は、例えば、ＷＳ名、状態、ＣＰＵ能力、残計算能力、最大実行数及び使用数等の項目をそれぞれ管理する。
【００７７】
ＷＳ名とは、各コンピュータ１０，２０を区別する名称である。状態とは、各コンピュータが稼働中であるか等を示す項目である。正常に稼働中の場合、状態の項目には例えば「run」と設定される。ＣＰＵ能力とは、そのコンピュータのＣＰＵ能力（計算能力）を示す項目である。ＣＰＵ能力の項目には、例えば、そのコンピュータの有するＣＰＵの種類、ＣＰＵの個数、ＣＰＵの駆動周波数等に基づいて算出される値が設定される。この値は無単位である。数値が大きいほど処理能力が高いことを示す。
【００７８】
残計算能力とは、そのコンピュータの全計算能力（ＣＰＵ能力）のうち、未使用の計算能力を示す項目である。例えば、残計算能力は、次式に基づいて算出される。残計算能力＝ＣＰＵ能力×（そのコンピュータの最大実行数−使用数）／そのコンピュータの最大実行数。
【００７９】
最大実行数は、コンピュータで実行可能なジョブの数（ＷＳ）を示す項目である。各キューＱ１，Ｑ２は、処理プログラム毎に用意されており、処理プログラムでの処理を待っているジョブを管理する。使用数は、現在実行されているジョブを示す項目である。
【００８０】
例えば、管理テーブルＴ１１の第１行目に記載されているコンピュータ「ＷＳ１」に着目すると、そのＣＰＵ能力は「１００」であり、ジョブの最大実行数は「１」であり、使用数は「１」である。従って、残計算能力は「０」となる（残計算能力＝１００×（１−１）／１＝０）。管理テーブルＴ１１の第３行目に記載されているコンピュータ「ＷＳ３」に着目すると、そのＣＰＵ能力は「１３０」であり、ジョブの最大実行数は「２」であり、使用数は「１」である。従って、残計算能力は「６５」となる（残計算能力＝１３０×（２−１）／２＝６５）。
【００８１】
管理テーブルＴ１１０は、コンピュータシステム内で実行可能なジョブの総数と、実際に実行されているジョブ数とを管理する。これにより、コンピュータシステム内の各処理プログラム毎に、コンピュータシステムの有する全処理能力と、実際に使用されている処理能力とを管理することができる。
【００８２】
ｉＳＣＳＩ−ＩＯ使用状態管理テーブルＴ１２は、共有ディスク７０内の論理ボリューム７１へのＩＯ要求の状況を管理するテーブルである。この管理テーブルＴ１２は、ＩＯサーバ５０のＩＯ使用管理テーブルＴ２０から取得される情報に基づいて生成される。なお、後述の図２１に示すように、ｉＳＣＳＩ−ＩＯ使用状態管理テーブルＴ１２は、ＩＯサーバ５０内で管理されてもよい。つまり、負荷管理テーブルＴ１０の一部ではなく、ＩＯ使用管理テーブルＴ２０の一部として管理する構成でもよい。
【００８３】
ｉＳＣＳＩ−ＩＯ使用状態管理テーブルＴ１２は、例えば、ＷＳ名、最大マウント能力、残マウント能力、最大マウント数、現在のマウント数等の項目を管理する。ＷＳ名は、各コンピュータ１０，２０を区別する名称である。最大マウント能力とは、そのコンピュータのマウント性能を示す無単位の値である。例えば、そのコンピュータと共有ディスク７０との間の通信速度、コンピュータ内部の転送速度等に基づいて算出される数値が、最大マウント能力の項目に設定される。
【００８４】
残マウント能力とは、そのコンピュータの有する最大マウント能力のうち、未使用のマウント能力を示す項目である。残マウント能力は、例えば、次式に基づいて算出することができる。残マウント能力＝最大マウント能力×（最大マウント数−現在のマウント数）／最大のマウント数。
【００８５】
最大マウント数とは、そのコンピュータにマウントできる論理ボリュームの最大個数を示す項目である。現在のマウント数とは、そのコンピュータにマウントされている論理ボリュームの個数を示す項目である。
【００８６】
依頼先コンピュータの決定テーブルＴ１３は、クライアントＰＣ３０から要求された処理を依頼するコンピュータ（依頼先コンピュータ）を決定するために一時的に作成されるテーブルである。この決定テーブルＴ１３は、ＷＳ名と余力の２つの項目を備える。
【００８７】
ＷＳ名は、各コンピュータ１０，２０を区別する名称である。余力とは、そのコンピュータが新たなジョブを受け入れる余地（余裕）の程度を示す項目である。余力は、次式に基づいて算出される。余力＝残計算能力×残マウント能力。最も余力の大きいコンピュータから順番に、依頼先コンピュータとして選択される。図７の例では、コンピュータ「ＷＳ４」の余力が最大であるため、コンピュータ「ＷＳ４」が依頼先コンピュータとして選択される。これにより、コンピュータ「ＷＳ４」の余力が低下する。
【００８８】
このように本実施例では、コンピュータの計算能力の余裕（残計算能力）と、コンピュータのマウント能力の余裕（残マウント能力）とから「余力」を算出し、余力に基づいて依頼先コンピュータを決定する。なお、上述した依頼先コンピュータの決定方法は好ましい一例であって、他の方法を用いることもできる。
【００８９】
図８は、コンピュータシステムの全体動作を示すフローチャートである。詳細な流れは、さらに後述する。以下に示す各フローチャートは、本発明の理解及び実施に必要な程度で各処理の概要をそれぞれ示しており、実際のコンピュータプログラムとは相違する場合がある。また、いわゆる当業者であれば、図示されたステップの変更や削除、新たなステップの追加等を行うことができるであろう。
【００９０】
まず最初に、負荷分散サーバ４０は、クライアントＰＣ３０からコマンドを受領する（Ｓ１０）。負荷分散サーバ４０は、例えば図７で述べた方法に基づいて、各コンピュータ１０，２０の中から最大の余力を有するコンピュータを、依頼先コンピュータとして選択し、その依頼先コンピュータにクライアントＰＣ３０から要求されたコマンドの処理を依頼する（Ｓ１１）。
【００９１】
依頼先コンピュータは、ＩＯサーバ５０に、共有ディスク７０内の論理ボリューム７１へのＩＯ（アクセス）を要求する（Ｓ１２）。ＩＯサーバ５０は、ｉＳＣＳＩ利用可能コンピュータ管理テーブルＴ４０を用いて、依頼先コンピュータがｉＳＣＳＩイニシエータを備えているか否かを判定する（Ｓ１３）。
【００９２】
依頼先コンピュータがｉＳＣＳＩイニシエータを備える場合（S14:YES）、つまり、いずれかの第２コンピュータ２０が依頼先コンピュータとして選択された場合、ＩＯサーバ５０は、依頼先コンピュータに論理ボリューム７１のマウントを要求する（Ｓ１５）。
【００９３】
依頼先コンピュータは、ＩＯサーバ５０からの要求に従って、共有ディスク７０内の所定の論理ボリューム７１をマウントし、所定の処理を実行する（Ｓ１６）。所定の論理ボリュームとは、例えば、クライアントＰＣ３０から要求された処理を行うために必要なデータを記憶している論理ボリュームである。
【００９４】
依頼先コンピュータは、処理プログラムの実行を完了すると、ＩＯ処理が完了した旨をＩＯサーバ５０に通知する（Ｓ１７）。ＩＯサーバ５０は、依頼先コンピュータからの完了通知を受信すると、依頼先コンピュータに論理ボリューム７１のアンマウントを要求する（Ｓ１８）。依頼先コンピュータは、ＩＯサーバ５０からの要求に従って、論理ボリューム７１をアンマウントする（Ｓ１９）。なお、ここでは図示を省略するが、アンマウントの完了後に、依頼先コンピュータは、ＩＯサーバ５０にアンマウントが完了した旨を通知する。
【００９５】
依頼先コンピュータがｉＳＣＳＩイニシエータを備えていない場合（S14:NO）、つまり、第１コンピュータが依頼先コンピュータとして選択された場合、ＩＯサーバ５０は、依頼先コンピュータに代わって論理ボリューム７１をマウントするための、代理コンピュータを選択する（Ｓ２１）。ＩＯサーバ５０は、例えば、ＩＯ使用管理テーブルＴ２０に基づいて、コンピュータシステム内の各第２コンピュータ２０のうち、最も負荷の少ない第２コンピュータ２０を代理コンピュータとして選択する。
【００９６】
ＩＯ使用管理テーブルＴ２０には、どの論理ボリュームをどのコンピュータがどのような方法で使用しているかが管理されている。従って、ＩＯ使用管理テーブルＴ２０を用いることにより、複数のジョブを実行している高負荷状態のコンピュータ２０がどれであるか、ジョブを実行していない軽負荷状態のコンピュータ２０がどれであるかを判定できる。
【００９７】
ＩＯサーバ５０は、代理先コンピュータとして選択された第２コンピュータ２０に、例えば、依頼先コンピュータの名称やＩＰアドレス、マウントすべき論理ボリューム７１へのアクセスパス等を通知する（Ｓ２１）。
【００９８】
ＩＯサーバ５０は、代理コンピュータに、所定の論理ボリューム７１をマウントするように要求する（Ｓ２２）。代理コンピュータは、ＩＯサーバ５０からの要求を受けて、指定された論理ボリューム７１をマウントする（Ｓ２３）。
【００９９】
続いて、代理コンピュータは、ＮＦＳサーバ２３を生成し、依頼先コンピュータにＮＦＳ経由で論理ボリューム７１のデータを提供するための準備を整える（Ｓ２４）。ＩＯサーバ５０は、代理コンピュータから論理ボリューム７１のマウントを完了した旨の報告を受信すると、依頼先コンピュータにＮＦＳマウントを要求する（Ｓ２５）。
【０１００】
本実施例におけるＮＦＳマウントとは、ＮＦＳクライアント１３を介して代理コンピュータ内のＮＦＳサーバ２３にログインすることにより、代理コンピュータにマウントされた論理ボリューム７１のデータを利用可能な状態にすることを意味する。
【０１０１】
依頼先コンピュータは、ＩＯサーバ５０からの要求に従って、論理ボリューム７１をＮＦＳ経由でマウントし、所定の処理を実行する（Ｓ２６）。そして、依頼先コンピュータは、処理を完了すると、処理が完了した旨をＩＯサーバ５０に通知する（Ｓ２７）。
【０１０２】
ＩＯサーバ５０は、依頼先コンピュータでの処理完了を確認すると、代理コンピュータに論理ボリューム７１のアンマウントを要求する（Ｓ２８）。これにより、代理コンピュータは、論理ボリューム７１をアンマウントし、アンマウントが完了した旨をＩＯサーバ５０に通知する（Ｓ２９）。
【０１０３】
図９は、一つのリード要求を実行する場合の流れを示す説明図である。つまり、図９は、図８中のＳ１０〜Ｓ１９を別の表現形態で示している。クライアントＰＣ３０は、例えば、「ＪｏｂＡ  ／ＤＩＲ１  ｒｅａｄ」のようなコマンドを発行する（Ｓ４０）。このコマンドは、「ＤＩＲ１」で特定される領域のデータを論理ボリューム７１から読み出すことを要求している。
【０１０４】
負荷分散サーバ４０は、クライアントＰＣ３０からのコマンドを受け付けると（Ｓ４１）、図７に示すように各テーブルＴ１１〜Ｔ１３を用いて、依頼先コンピュータを１つ決定する（Ｓ４２）。負荷分散サーバ４０は、依頼先コンピュータにコマンド「ＪｏｂＡ  ／ＤＩＲ１  ｒｅａｄ」の処理を依頼する（Ｓ４３）。図９の例では、依頼先コンピュータとして、ｉＳＣＳＩに対応する第２コンピュータ２０が選択されたものとする。
【０１０５】
依頼先コンピュータ２０は、ＩＯサーバ５０に、所定の論理ボリューム７１へのアクセスを要求する（Ｓ４４）。ＩＯサーバ５０は、ＩＯ使用管理テーブルＴ２０を用いて、依頼先コンピュータ２０による論理ボリューム７１へのアクセスを許可するか否かを判定する（Ｓ４５，Ｓ４６）。ＩＯ排他制御については、図６で説明した。依頼先コンピュータ２０による論理ボリューム７１へのアクセスを禁止する理由が無い場合、ＩＯサーバ５０は、依頼先コンピュータ２０に論理ボリュームのマウントを要求する（Ｓ４７）。
【０１０６】
依頼先コンピュータ２０は、ＩＯサーバ５０からの要求を受けて、論理ボリューム７１をマウントし（Ｓ４８）、指定された場所からデータを読み出す（Ｓ４９）。依頼先コンピュータ２０は、リード処理を完了すると、完了した旨をＩＯサーバ５０に通知する（Ｓ５０）。
【０１０７】
ＩＯサーバ５０は、依頼先コンピュータ２０からＩＯ完了通知を受信すると、依頼先コンピュータ２０にアンマウントを要求する（Ｓ５１）。依頼先コンピュータ２０は、ＩＯサーバ５０からの要求を受けて、論理ボリューム７１をアンマウントし（Ｓ５２）、ＩＯサーバ５０にアンマウントが完了した旨を通知する（Ｓ５３）。
【０１０８】
図１０は、同一の論理ボリューム７１を使用するコマンドの処理が同一のコンピュータ２０に依頼された場合を示す。クライアントＰＣ３０が先行コマンド「ＪｏｂＡ  ／ＤＩＲ１  ｒｅａｄ」を発行すると（Ｓ４０）、負荷分散サーバ４０は、その先行コマンドを受け付けて（Ｓ４１）、依頼先コンピュータ２０を決定し（Ｓ４２）、依頼先コンピュータ２０にコマンドの処理を依頼する（Ｓ４３）。
【０１０９】
依頼先コンピュータ２０がＩＯサーバ５０に、論理ボリューム７１へのアクセスを要求すると（Ｓ４４）、ＩＯサーバ４０は論理ボリューム７１の使用状況や排他制御の条件を考慮して（Ｓ４５，Ｓ４６）、依頼先コンピュータ２０に論理ボリューム７１のマウントを要求する（Ｓ４７）。これにより、依頼先コンピュータ２０は、論理ボリューム７１をマウントして（Ｓ４８）、データを読み出す（Ｓ４９）。
【０１１０】
依頼先コンピュータ２０が先行コマンドを処理している間に、別のクライアントＰＣ３０から、同一の論理ボリューム７１を対象とする後続コマンド「ＪｏｂＢ  ／ＤＩＲ１  ｒｅａｄ」が発行される（Ｓ５０Ａ）。
【０１１１】
先行コマンドの場合と同様に、負荷分散サーバ４０は、後続コマンドを受け付け（Ｓ４１）、依頼先コンピュータ２０を決定し（Ｓ４２）、依頼先コンピュータ２０に後続コマンドの処理を依頼する（Ｓ４３）。図１０のテーブルＴ１３に示すように、第２コンピュータ２０「ＷＳ４」は大きな余力値「３００」を有しているため、先行コマンドの処理依頼先として選択される。これにより、第２コンピュータ２０「ＷＳ４」の余力は「２００」に低下するが、他のコンピュータ「ＷＳ１，ＷＳ２，ＷＳ３」の余力の値に比べると依然として大きい。従って、第２コンピュータ２０「ＷＳ４」は、後続コマンドの処理依頼先としても選択される。
【０１１２】
依頼先コンピュータ２０は、後続コマンドを処理するために、ＩＯサーバ５０に論理ボリューム７１へのアクセスを要求する（Ｓ５１Ａ）。ＩＯサーバ５０は、ＩＯ使用管理テーブルＴ２０及び排他制御管理テーブルＴ３０に基づいて、論理ボリューム７１の使用を許可するか否かを判定し（Ｓ５２Ａ，Ｓ５３Ａ）、後続コマンドの処理について論理ボリューム７１の使用を許可する（Ｓ５４Ａ）。図１０に示す例では、先行ＩＯ要求及び後続ＩＯ要求のいずれもがリード要求のため、後続ＩＯ要求による論理ボリューム７１の使用は許可される。
【０１１３】
依頼先コンピュータ２０は、論理ボリューム７１からデータを読出し（Ｓ５５Ａ）、データの読出しが完了した旨をＩＯサーバ５０に通知する（Ｓ５７Ａ）。この間に、先行コマンドの処理は完了しており、その旨がＩＯサーバ５０に通知される（Ｓ５６Ａ）。
ＩＯサーバ５０は、後続コマンド（後続ＩＯ要求）に関する処理完了を確認すると、依頼先コンピュータ２０に論理ボリューム７１のアンマウントを要求する（Ｓ５８Ａ）。
【０１１４】
依頼先コンピュータ２０は、ＩＯサーバ５０からの要求に従って、論理ボリューム７１をアンマウントし（Ｓ５９Ａ）、アンマウントが完了した旨をＩＯサーバ５０に報告する（Ｓ６０Ａ）。
【０１１５】
図１１は、図９及び図１０に示す処理のタイムチャートを示す。図１１（ａ）は図９に対応し、図１１（ｂ），（ｃ）は図１０に対応する。図１１では、便宜上、ステップの一部を抜き出して示している。
【０１１６】
図１１（ｂ）は先行コマンドの処理を、図１１（ｃ）は後続コマンドの処理をそれぞれ示している。先行ＩＯ要求が完了する前に、依頼先コンピュータが後続コマンドを受領した場合、論理ボリューム７１を改めてマウントすることなく、その論理ボリューム７１からデータを読み出す。既に論理ボリューム７１が依頼先コンピュータ２０にマウントされているためである。そして、先行ＩＯ要求が完了した場合でも、論理ボリューム７１をアンマウントしない。ＩＯサーバ５０は、後続ＩＯ要求が完了するまで、論理ボリューム７１のアンマウントを依頼先コンピュータ２０に指示しない。
【０１１７】
図１０，図１１に示すように、同一の論理ボリューム７１をアクセス対象とする複数のコマンドの処理依頼先が同一のコンピュータである場合、最初のコマンドを処理するときに論理ボリューム７１をマウントし、最後のコマンドを処理するときに論理ボリューム７１をアンマウントすればよい。従って、論理ボリューム７１のマウント回数及びアンマウント回数を低減でき、処理待ち時間を短くすることができる。
【０１１８】
図１２は、負荷分散サーバ４０が待ちキュー４２を使用する様子を示す。クライアントＰＣ３０から、発行されるコマンド「ＪｏｂＡ  ／ＤＩＲ１  ｒｅａｄ」を負荷分散サーバ４０は受け付ける（Ｓ７０，Ｓ７１）。負荷分散サーバ４０は、各テーブルＴ１１〜Ｔ１３を用いて、コンピュータシステム内の各コンピュータ１０，２０の中から依頼先コンピュータを選択しようとする（Ｓ７２）。
【０１１９】
しかし、各コンピュータ１０，２０はそれぞれ別のジョブを処理中のため、新たなコマンドを処理する余裕がない。そこで、負荷分散サーバ４０は、待ちキュー４２に、Ｓ７１で受け付けたコマンドを格納する（Ｓ７３）。その後、定期的に、負荷分散サーバ４０は依頼先コンピュータの決定を試みる（Ｓ７４）。余力の生じたコンピュータが発見されると、負荷分散サーバ４０は、そのコンピュータを依頼先コンピュータとして選択し、待ちキューに登録されたコマンドの処理を依頼する（Ｓ７５）。
【０１２０】
図１３，図１４は、ＩＯサーバ５０が待ちキュー５２を使用する様子を示す。図１４は、ＩＯ使用管理テーブルＴ２０が変化する様子を示す。図１４（１）に示すように、まず最初に、依頼先コンピュータ２０（ＷＳ４）が、論理ボリューム７１にデータを書き込んでいるものとする（ＪｏｂＰ）。
【０１２１】
その後、図１３に示すように、別のコマンド「ＪｏｂＡ」の処理先として依頼先コンピュータ２０（ＷＳ４）が選択され、依頼先コンピュータ２０（ＷＳ４）がＩＯサーバ５０にＩＯ要求を発行したとする（Ｓ８０）。同一の論理ボリューム７１に対して先にライト要求が実行去れている場合、後続するＩＯ要求は全て禁止される。
【０１２２】
従って、ＩＯサーバ５０は、依頼先コンピュータ２０（ＷＳ４）に「ＢＵＳＹ」を返す（Ｓ８１）。依頼先コンピュータ２０（ＷＳ４）は、所定時間が経過するのを待って（Ｓ８２）、再びＩＯ要求を発行する（Ｓ８０）。
【０１２３】
後続する別のコマンド「ＪｏｂＢ」の処理依頼先として、依頼先コンピュータ２０（ＷＳ４）が選択された場合、前記同様に、依頼先コンピュータ２０（ＷＳ４）は、論理ボリューム７１へのアクセスを要求するが（Ｓ８３）、ＩＯサーバ５０は「ＢＵＳＹ」を返す（Ｓ８４）。依頼先コンピュータ２０（ＷＳ４）は、所定時間経過するのを待って（Ｓ８５）、ＩＯサーバ５０に再びＩＯ要求を発行する（Ｓ８３）。
【０１２４】
ＩＯサーバ５０は、各コマンド「ＪｏｂＡ」，「ＪｏｂＢ」を待ちキュー５２に登録して管理する。やがて、最初のライトコマンド「ＪｏｂＰ」が完了すると、そのライトコマンド「ＪｏｂＰ」はＩＯ使用管理テーブルＴ２０から削除される。これにより、ＩＯサーバ５０は、次のリードコマンド「ＪｏｂＡ」を実行させるべく、依頼先コンピュータ２０（ＷＳ４）に、論理ボリューム７１のマウントを要求する（Ｓ８６）。ＩＯサーバ５０は、図１４（２）に示すように、ＩＯ使用管理テーブルＴ２０に、リードコマンド「ＪｏｂＡ」が実行される旨を登録する。
【０１２５】
依頼先コンピュータ２０（ＷＳ４）は、論理ボリューム７１をマウントして（Ｓ８７）、その論理ボリューム７１からデータを読み出す（Ｓ８８）。読出しが完了した場合は、ＩＯサーバ５０に報告する（Ｓ８９）。
【０１２６】
「ＪｏｂＡ」の処理がが完了する前に、ＩＯサーバ５０は、後続するリードコマンド「ＪｏｂＢ」を依頼先コンピュータ２０（ＷＳ４）に実行させるべく、依頼先コンピュータ２０（ＷＳ４）に論理ボリューム７１の使用を許可する（Ｓ９０）。依頼先コンピュータ２０（ＷＳ４）は、既にマウントされている論理ボリューム７１からデータを読出し（Ｓ９１）、処理が完了した旨をＩＯサーバ５０に通知する（Ｓ９２）。依頼先コンピュータ２０（ＷＳ４）は、論理ボリューム７１をアンマウントし（Ｓ９４）、ＩＯサーバ５０にアンマウントが完了した旨を通知する（Ｓ９５）。
【０１２７】
図１４（３）に示すように、同一の論理ボリューム７１に関する複数のリード要求を同時に実行させることができる。やがて、先に開始されたリードコマンド「ＪｏｂＡ」が終了すると、図１４（４）に示すように、ＩＯ使用管理テーブルＴ２０から「ＪｏｂＡ」に関する記述が除去される。
【０１２８】
図１５，図１６は、マウント制御の信頼性を高める方法を示す。図１５に示すように、同一の依頼先コンピュータ２０（ＷＳ４）において、複数のコマンド（ジョブ）がそれぞれ実行されている場合を仮定する。
【０１２９】
依頼先コンピュータ２０（ＷＳ４）が論理ボリューム７１へのアクセスを要求すると（Ｓ１００）、ＩＯサーバ５０は、ＩＯ使用管理テーブルＴ２０等を参照して、依頼先コンピュータ２０（ＷＳ４）に、論理ボリューム７１のマウントを許可する（Ｓ１０１）。
【０１３０】
依頼先コンピュータ２０（ＷＳ４）は、論理ボリューム７１をマウントし（Ｓ１０２）、論理ボリューム７１からデータを読出し（Ｓ１０３）、読出しが完了した旨をＩＯサーバ５０に報告する（Ｓ１０４）。これにより、ＩＯサーバ５０は、依頼先コンピュータ２０（ＷＳ４）に論理ボリューム７１のアンマウントを要求し（Ｓ１０６）、依頼先コンピュータ２０（ＷＳ４）は、論理ボリューム７１をアンマウントする（Ｓ１０８）。そして、依頼先コンピュータ２０（ＷＳ４）は、アンマウントが完了した旨をＩＯサーバ５０に通知する（Ｓ１０９）。
【０１３１】
ＪｏｂＡの処理完了後に、同一の論理ボリューム７１を対象とする別のコマンド（ＪｏｂＢ）の依頼先コンピュータとして、依頼先コンピュータ２０（ＷＳ４）が選択されたと仮定する。依頼先コンピュータ２０（ＷＳ４）は、ＩＯサーバ５０に論理ボリューム７１へのアクセスを要求し（Ｓ１０５）、ＩＯサーバ５０は、依頼先コンピュータ２０（ＷＳ４）に論理ボリューム７１のマウントを許可する（Ｓ１０７）。
【０１３２】
依頼先コンピュータ２０（ＷＳ４）は、直ちに論理ボリューム７１をマウントするのではなく、マウントしようとする論理ボリューム７１がアンマウントされているか否かを確認する（Ｓ１１０）。例えば、確認方法として、依頼先コンピュータ２０（ＷＳ４）がＩＯサーバ５０に問い合わせる方法が考えられる。ＩＯサーバ５０は、ＩＯ使用管理テーブルＴ２０を参照して、アンマウントされているか否かを確認し、その結果を依頼先コンピュータ２０（ＷＳ４）に通知することができる。
【０１３３】
依頼先コンピュータ２０（ＷＳ４）は、論理ボリューム７１がアンマウントされていることを確認した後で、その論理ボリューム７１をマウントし（Ｓ１１１）、その論理ボリューム７１からデータを読み出して（Ｓ１１２）、処理が完了した旨をＩＯサーバ５０に報告する（Ｓ１１３）。
【０１３４】
図１６（ａ），（ｂ）は、アンマウント状態であるか否かを確認せずに論理ボリューム７１をマウントする場合を示す。先行のリード要求「ＪｏｂＡ」が完了した後に（図１６（ａ））、後続のリード要求「ＪｏｂＢ」が依頼先コンピュータ２０（ＷＳ４）に依頼された場合（図１６（ｂ））、依頼先コンピュータ２０（ＷＳ４）は、論理ボリューム７１をマウントする。しかし、図１６（ａ）に示すように、依頼先コンピュータ２０（ＷＳ４）は、先行リード要求の完了に伴って、論理ボリューム７１をアンマウントする。このため、図１６（ｂ）に示すように、後続リード要求は途中でエラーとなる。
【０１３５】
図１６（ｃ），（ｄ）は、アンマウント状態であることを確認してからマウントする場合を示す。図１６（ｃ）に示すように、先行リード要求が完了すると、依頼先コンピュータ２０（ＷＳ４）は、アンマウントが完了した旨をＩＯサーバ５０に通知する。これにより、ＩＯサーバ５０は、ＩＯ使用管理テーブルＴ２０の記載を更新させる。そして、図１６（ｄ）に示すように、後続リード要求の処理に際して、依頼先コンピュータ２０（ＷＳ４）は、論理ボリューム７１がアンマウントされていることを確認した後、その論理ボリューム７１をマウントする。
【０１３６】
従って、図１５に示すように、論理ボリューム７１がアンマウントされていることを確認してから、その論理ボリューム７１をマウントすることにより、ＩＯ要求の処理中に論理ボリューム７１がアンマウントされてエラーとなるのを防止することができ、マウント制御の品質が向上する。なお、先行ＩＯ要求が完了する前に、後続ＩＯ要求の処理を開始する場合については、図１０，図１１で述べた通り、論理ボリューム７１をアンマウントすることなく、後続ＩＯ要求を実行させる。
【０１３７】
図１７〜図２０に基づいて、ｉＳＣＳＩに対応する第２コンピュータ２０が、ｉＳＣＳＩに対応していない第１コンピュータ１０の代わりに論理ボリューム７１をマウントし、マウントした論理ボリューム７１をＮＦＳ経由で第１コンピュータ１０に提供する場合を説明する。
【０１３８】
図１７は、コンピュータシステムを別の観点から見る説明図である。例えば、各コンピュータ１０〜６０と、共有ディスク７０とがそれぞれ別々の場所に設けられている場合、各コンピュータ１０〜６０の周囲にファイアーウォールＦＷが設けられる。簡単に言えば、ファイアーウォールＦＷは、予め設定された通信ポートＨ１，Ｈ２についてのみ、外部との通信を許可する。
【０１３９】
従って、外部の共有ディスク７０に直接アクセスするための機能（ｉＳＣＳＩイニシエータ２４）を備える各第２コンピュータ２０は、予め許可されている通信ポートＨ１，Ｈ２を介して、共有ディスク７０にアクセスする。ｉＳＣＳＩイニシエータを備えない第１コンピュータ１０は、代理コンピュータとしての第２コンピュータ２０及びＮＦＳを介して、共有ディスク７０内のデータを利用する。
【０１４０】
図１８，図１９は、ｉＳＣＳＩ未対応の第１コンピュータ１０が、代理コンピュータ及びＮＦＳを用いて、論理ボリューム７１内のデータを利用する処理を示す。図１９には、理解のために、図１８中の各ステップのうち一部のステップが示されている。図２０は、ＩＯ使用管理テーブルＴ２０の変化を示す説明図である。
【０１４１】
この例では、依頼先コンピュータとして、ｉＳＣＳＩに対応していない第１コンピュータ１０（ＷＳ１）が選択され、代理コンピュータとして、ｉＳＣＳＩに対応する第２コンピュータ２０（ＷＳ４）が選択される。
【０１４２】
負荷分散サーバ４０は、クライアントＰＣ３０からコマンドを受信すると（Ｓ１２０）、依頼先コンピュータを決定し（Ｓ１２１）、依頼先コンピュータにコマンド処理を依頼する（Ｓ１２２）。ここでは、ｉＳＣＳＩに対応していない第１コンピュータ１０の中から依頼先コンピュータ１０（ＷＳ１）が選択される。
【０１４３】
依頼先コンピュータ１０（ＷＳ１）は、ＩＯサーバ５０に論理ボリューム７１へのアクセスを要求する（Ｓ１２３）。ＩＯサーバ５０は、ｉＳＣＳＩ利用可能コンピュータ管理テーブルＴ４０を参照して、依頼先コンピュータ１０（ＷＳ１）がｉＳＣＳＩを利用可能か否かを判定する（Ｓ１２４）。
【０１４４】
ＩＯサーバ５０は、依頼先コンピュータ１０（ＷＳ１）がｉＳＣＳＩイニシエータを備えていないため、各第２コンピュータ２０の中から代理コンピュータ２０（ＷＳ４）を一つ選択する（Ｓ１２５）。即ち、ＩＯサーバ５０は、特定の第２コンピュータ２０に代理コンピュータとしての役割が集中しないように、負荷分散を考慮して代理コンピュータ２０（ＷＳ４）を選択する。
【０１４５】
ＩＯサーバ５０は、図２０（１）に示すように、代理コンピュータ２０（ＷＳ４）に関する情報をＩＯ使用管理テーブルＴ２０に登録する（Ｓ１２６）。図２０（１）に示すように、どの論理ボリューム７１にどのようなＩＯを要求するかを示す情報（ＤＩＲ１  ｒｅａｄ）と、どのコンピュータがそのＩＯを実行するかを示す情報（ＷＳ４＝ＪｏｂＡ）とがＩＯ使用管理テーブルＴ２０に登録される。
【０１４６】
そして、ＩＯサーバ５０は、代理コンピュータ２０（ＷＳ４）に、共有ディスク７０内の論理ボリューム７１をマウントするように要求する（Ｓ１２７）。この要求を、代理マウント要求と呼ぶことができる。
【０１４７】
代理コンピュータ２０（ＷＳ４）は、ＩＯサーバ５０からの要求を受けて、論理ボリューム７１をマウントし（Ｓ１２８）、ＮＦＳサーバを設定する（Ｓ１２９）。即ち、代理コンピュータ２０（ＷＳ４）は、論理ボリューム７１と依頼先コンピュータ１０（ＷＳ１）とをそれぞれ特定して、ＮＦＳサーバ２３を設定する。ＮＦＳサーバ２３に予め設定された依頼先コンピュータ１０（ＷＳ１）のみが、予め設定された論理ボリューム７１を共有することができる。
【０１４８】
代理コンピュータ２０（ＷＳ４）は、論理ボリューム７１のマウントが完了した旨をＩＯサーバ５０に通知する（Ｓ１３０）。ＩＯサーバ５０は、図２０（２）に「／ＤＩＲ１  ｒｅａｄ」、「ＷＳ１，Ｈｏｓｔ＝ＪｏｂＡ」として示すように、依頼先コンピュータ１０（ＷＳ１）をＩＯ使用管理テーブルＴ２０に登録する（Ｓ１３１）。そして、ＩＯサーバ４０は、依頼先コンピュータ１０（ＷＳ１）に、ＮＦＳ経由で論理ボリューム７１をマウントするように要求する（Ｓ１３２）。
【０１４９】
依頼先コンピュータ１０（ＷＳ１）は、ＮＦＳクライアント１３及びＮＦＳサーバ２３を介して、論理ボリューム７１をマウントする（Ｓ１３３）。依頼先コンピュータ１０（ＷＳ１）は、コマンドを処理し（Ｓ１３４）、処理が完了した旨をＩＯサーバ５０に通知する（Ｓ１３５）。
【０１５０】
図２０（３）に示すように、ＩＯサーバ５０は、ＩＯ使用管理テーブルＴ２０から代理コンピュータ２０（ＷＳ４）に関する記述を削除し（Ｓ１３６）、代理コンピュータ２０（ＷＳ４）に論理ボリューム７１のアンマウントを要求する（Ｓ１３７）。代理してマウントした論理ボリューム７１のアンマウントを、代理アンマウントと呼ぶことができる。
【０１５１】
代理コンピュータ２０（ＷＳ４）は、論理ボリューム７１をアンマウントし（Ｓ１３８）、アンマウントが完了した旨をＩＯサーバ５０に通知する（Ｓ１３９）。ＩＯサーバ５０は、図２０（４）に示すように、ＩＯ使用管理テーブルＴ２０から依頼先コンピュータ１０（ＷＳ１）に関する情報を削除する（Ｓ１４０）。
【０１５２】
このように構成される本実施例によれば、複数のコンピュータ１０，２０が共有ディスク７０内の同一論理ボリューム７１を共有できる。本実施例では、同一の論理ボリューム７１についての複数のＩＯ要求がそれぞれ異なるコンピュータから発行された場合において、論理ボリューム７１についてリードアクセスが先に行われている場合、その論理ボリューム７１について、後からライトアクセスまたはリードアクセスのいずれも実行することができる。従って、同一の論理ボリューム７１を、コンピュータシステム内の複数のコンピュータ１０，２０が同時に使用できる機会が増大し、これにより処理待ち時間が低減し、使い勝手が向上する。
【０１５３】
本実施例では、コンピュータ間で負荷が分散するように、複数のコンピュータ１０，２０の中からいずれか一つのコンピュータを依頼先コンピュータとして選択し、その依頼先コンピュータにコマンド処理を依頼する。従って、各コンピュータ１０，２０の負荷状況に応じて依頼先コンピュータを決定するため、処理待ち時間を短縮できる。
【０１５４】
本実施例では、ｉＳＣＳＩ未対応のコンピュータ１０とｉＳＣＳＩに対応するコンピュータ２０とが混在するシステム環境下において、ｉＳＣＳＩ未対応のコンピュータ１０は、ｉＳＣＳＩに対応するコンピュータ２０とＮＦＳとを介して、所望の論理ボリューム７１内のデータを利用できる。従って、コンピュータシステム内の全コンピュータにｉＳＣＳＩイニシエータ機能を設ける必要がなく、システムの構築コストや維持コストを低減することができる。また、ｉＳＣＳＩに対応できるコンピュータ２０の台数を制限することにより、ファイアーウォールＦＷを通過するポートＨ１，Ｈ２の設定数を制限することができ、セキュリティ性を高めることができる。通信を許可するポートの数を増やすほど、外部から不正にアクセスされる可能性が増加し、かつ、ファイアーウォールＦＷを管理する手間も増大する。
【０１５５】
本実施例では、ｉＳＣＳＩに対応する第２コンピュータ２０の間で負荷が分散するように、代理コンピュータを選択する。従って、特定の第２コンピュータ２０が代理コンピュータとして選択され、高負荷状態になるのを防止することができ、処理待ち時間を低減することができる。
【０１５６】
本実施例では、ｉＳＣＳＩイニシエータをハードウェア回路またはソフトウェア製品のいずれかで実現することができる。ソフトウェア製品のｉＳＣＳＩイニシエータの場合、コンピュータのメモリや計算能力等のリソースを消費する。そこで、ＩＯサーバ５０は、ソフトウェア製品のｉＳＣＳＩイニシエータをコンピュータ上で起動させる場合に、リソースの消費を考慮して、代理コンピュータを選択することができる。
【実施例２】
【０１５７】
図２１，図２２に基づいて第２実施例を説明する。本実施例は、第１実施例の変形例に該当する。従って、第１実施例と重複する説明は省略し、本実施例の特徴を中心に説明することにする。
【０１５８】
本実施例では、ＶＨＤＬ（Very high-speed integrated circuit Hard-ware Description Language）を用いた回路設計システムに応用する場合の概略を説明する。クライアントＰＣ３０は、例えば、一つのＶＨＤＬコンパイルと、３つのＶＨＤＬシミュレーションとを、それぞれ要求する。
【０１５９】
ＶＨＤＬコンパイルでは、共有ディスク７０内の論理ボリューム７１に、コンパイルされたコードを書き込む。ＶＨＤＬシミュレーションでは、コンパイルされたコードを、論理ボリューム７１から読み出させてシミュレートさせる。本実施例では、ＶＨＤＬコンパイルのために一つのライト要求が発行され（Ｓ２００）、次に、３回のＶＨＤＬシミュレーション毎にそれぞれリード要求が発行される（Ｓ２００）。
【０１６０】
負荷分散サーバ４０は、ＩＯサーバ５０から残マウント能力を取得し（Ｓ２０１）、残計算能力と残マウント能力とを乗じて、各コンピュータの余力をそれぞれ算出する（Ｓ２０２）。負荷分散サーバ４０は、各コンピュータのうち最も余力の大きいコンピュータを、ライト要求の処理（ＪｏｂＡ）を依頼する依頼先コンピュータ２０（ＷＳ２３）として選択する（Ｓ２０４）。負荷分散サーバ４０は、コンピュータ能力管理テーブルＴ１１内の残計算能力の項目と現在の実行数の項目とを、それぞれ書き換える（Ｓ２０３）。負荷分散サーバ４０は、依頼先コンピュータ２０（ＷＳ２３）に、ライトコマンドの処理を依頼する（Ｓ２０４）。
【０１６１】
依頼先コンピュータ２０（ＷＳ２３）は、ＩＯサーバ５０に論理ボリューム７１へのアクセスを要求する（Ｓ２０５）。ＩＯサーバ５０は、論理ボリューム７１のマウントを、依頼先コンピュータ２０（ＷＳ２３）に要求する（Ｓ２０６）。この例では、論理ボリューム７１への最初のＩＯ要求が、Ｓ２００で受信されるライトコマンドであるため、先行して実行されているＩＯ要求は存在しない。従って、依頼先コンピュータ２０（ＷＳ２３）に論理ボリューム７１のマウントが許可される。
【０１６２】
依頼先コンピュータ２０（ＷＳ２３）は、共有ディスク７０内の論理ボリューム７１をマウントし（Ｓ２０７）、論理ボリューム７１にコンパイルされたコードを書込み（Ｓ２０８）、書込み完了をＩＯサーバ５０に通知する（Ｓ２０９）。
【０１６３】
ＩＯサーバ５０が依頼先コンピュータ２０（ＷＳ２３）にアンマウントを要求すると（Ｓ２１０）、依頼先コンピュータ２０（ＷＳ２３）は論理ボリューム７１をアンマウントする（Ｓ２１２）。なお、ＩＯサーバ５０は、ｉＳＣＳＩ−ＩＯ使用状態管理テーブルＴ１２内の残マウント能力の項目と現在のマウント数の項目とをそれぞれ更新させる（Ｓ２１１）。
【０１６４】
依頼先コンピュータ２０（ＷＳ２３）は、負荷分散サーバ４０に処理完了を通知する（Ｓ２１３）。この通知を受けて、負荷分散サーバ４０は、コンピュータ能力管理テーブルＴ１１の残計算能力の項目と現在の実行数の項目とをそれぞれ更新させる。
【０１６５】
このように、本実施例では、最初のライト要求は、依頼先コンピュータ２０（ＷＳ２３）によって処理される。本実施例では、各コンピュータの余力の関係上、ライト要求に続く３つのリード要求のうち、最初のリード要求（ＪｏｂＢ）は、ライト要求を処理したコンピュータと同一のコンピュータ２０（ＷＳ２３）に依頼される。２番目のリード要求（ＪｏｂＣ）は、コンピュータ２０（ＷＳ２３）の次に余力の大きい別のコンピュータ２０（ＷＳ２１）に依頼される。最後のリード要求（ＪｏｂＤ）は、さらに別のコンピュータ２０（ＷＳ２２）に依頼される。
【０１６６】
図２２は、共有ディスク７０内の論理ボリューム７１に関するトランザクションを模式的に示す説明図である。ライト要求は依頼先コンピュータ２０（ＷＳ２３）により実行される。ライト要求の実行中は、同一論理ボリューム７１へのＩＯ要求は禁止されるため、３個のリード要求は、ＩＯサーバ５０内の待ちキュー５２に格納される。
【０１６７】
ライト要求の終了後に、待ちキュー５２に格納された順番で、各リード要求がそれぞれ実行される。各リード要求は並列的に実行され、論理ボリューム７１からデータが同時に読み出される。なお、待ちキュー５２を廃止し、待機中のＩＯ要求を、その発行の順番とは無関係に実行させる構成でもよい。このように構成される本実施例も、第１実施例と同様の効果を得ることができる。
【０１６８】
なお、本発明は、上述した各実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
【図面の簡単な説明】
【０１６９】
【図１】本発明の実施形態の概要を示す説明図である。
【図２】コンピュータシステムの全体構成を示す説明図である。
【図３】ｉＳＣＳＩに対応するコンピュータ及び対応しないコンピュータの構成を示す説明図である。
【図４】負荷分散サーバの構成を示す説明図である。
【図５】ＩＯサーバの構成を示す説明図である。
【図６】同一の論理ボリュームに複数のＩＯ要求が発行された場合における排他制御の方法を示す説明図である。
【図７】コマンドの処理を依頼する依頼先コンピュータを、コンピュータシステム内の各コンピュータの中から選択する様子を示す説明図である。
【図８】本実施例による全体的な処理の流れを示すフローチャートである。
【図９】一つのリード要求を実行する場合の処理の流れを示す説明図である。
【図１０】複数のリード要求を実行する場合の処理の流れを示す説明図である。
【図１１】リード要求が処理される場合の概略タイムチャートである。
【図１２】負荷分散サーバが待ちキューを使用する場合の処理の流れを示す説明図である。
【図１３】ＩＯサーバが待ちキューを使用する場合の処理の流れを示す説明図である。
【図１４】ＩＯ使用管理テーブルの変化を示す説明図である。
【図１５】マウント対象の論理ボリュームがアンマウントされていることを確認してからマウントする様子を示す説明図である。
【図１６】論理ボリュームをマウントするまでの様子を示す概略タイムチャートである。
【図１７】ファイアーウォール内のコンピュータがファイアーウォールの外部に存在する共有ディスクを使用する様子を示す説明図である。
【図１８】代理コンピュータを使用する場合のフローチャートである。
【図１９】代理コンピュータを使用する様子を示す説明図である。
【図２０】ＩＯ使用管理テーブルの変化を示す説明図である。
【図２１】第２実施例に係るコンピュータシステムの構成及び動作を示す説明図である。
【図２２】複数のＩＯ要求が同一の論理ボリュームを使用する場合のトランザクションの様子を示す説明図である。
【符号の説明】
【０１７０】
１：第１コンピュータ、１Ａ：ＮＦＳクライアント、２：第２コンピュータ、２Ａ：ＮＦＳサーバ、２Ｂ：ｉＳＣＳＩイニシエータ、３：クライアントコンピュータ、４：負荷分散制御部、５：ＩＯ制御部、６：ｉＳＣＳＩサーバ、７：共有ディスク、１０：第１コンピュータ、１１：受付部、１２：処理プログラム、１３：ＮＦＳクライアント、２０：第２コンピュータ、２１：受付部、２２：処理プログラム、２３：ＮＦＳサーバ、２４：ｉＳＣＳＩイニシエータ、３０：クライアントコンピュータ、３１：ジョブ依頼プログラム、３２：負荷分散依頼関数、４０：負荷分散サーバ、４１：負荷管理制御プログラム、４２：待ちキュー、５０：ＩＯサーバ、５１：ＩＯ管理制御プログラム、５２：待ちキュー、６０：ｉＳＣＳＩサーバ、６１：ｉＳＣＳＩターゲット、７０：共有ディスク、７１：論理ボリューム
【図１】
2010039809.tif 000003
【図２】
2010039809.tif 000004
【図３】
2010039809.tif 000005
【図４】
2010039809.tif 000006
【図５】
2010039809.tif 000007
【図６】
2010039809.tif 000008
【図７】
2010039809.tif 000009
【図８】
2010039809.tif 000010
【図９】
2010039809.tif 000011
【図１０】
2010039809.tif 000012
【図１１】
2010039809.tif 000013
【図１２】
2010039809.tif 000014
【図１３】
2010039809.tif 000015
【図１４】
2010039809.tif 000016
【図１５】
2010039809.tif 000017
【図１６】
2010039809.tif 000018
【図１７】
2010039809.tif 000019
【図１８】
2010039809.tif 000020
【図１９】
2010039809.tif 000021
【図２０】
2010039809.tif 000022
【図２１】
2010039809.tif 000023
【図２２】
2010039809.tif 000024