IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

特許7616209クライアント、I/Oサーバ、方法、およびプログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-01-08
(45)【発行日】2025-01-17
(54)【発明の名称】クライアント、I/Oサーバ、方法、およびプログラム
(51)【国際特許分類】
   G06F 13/14 20060101AFI20250109BHJP
   G06F 13/10 20060101ALI20250109BHJP
   G06F 3/06 20060101ALI20250109BHJP
【FI】
G06F13/14 330C
G06F13/10 340A
G06F3/06 301A
【請求項の数】 8
(21)【出願番号】P 2022508375
(86)(22)【出願日】2021-03-16
(86)【国際出願番号】 JP2021010592
(87)【国際公開番号】W WO2021187476
(87)【国際公開日】2021-09-23
【審査請求日】2022-09-02
(31)【優先権主張番号】P 2020047913
(32)【優先日】2020-03-18
(33)【優先権主張国・地域又は機関】JP
【前置審査】
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100149548
【弁理士】
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100181135
【弁理士】
【氏名又は名称】橋本 隆史
(72)【発明者】
【氏名】青野 寛
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2019-095971(JP,A)
【文献】国際公開第2016/013116(WO,A1)
【文献】特開2019-125075(JP,A)
【文献】国際公開第2015/033418(WO,A1)
【文献】米国特許出願公開第2020/0012445(US,A1)
【文献】特表2016-530618(JP,A)
【文献】特開2015-060418(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/10-13/14
G06F 3/06- 3/08
(57)【特許請求の範囲】
【請求項1】
経路情報をI/Oサーバから受信する受信手段であって、前記経路情報は、記録ディスクを識別する情報と、前記記録ディスクへの通信経路としてクライアントが使用すべき前記I/Oサーバ内の構成要素を識別する情報とを含む、受信手段と、
前記経路情報と、前記クライアント内の構成要素間の経路コスト情報とに基づき、前記記録ディスクへの通信経路を決定する通信経路決定手段であって、前記クライアント内の構成要素が、メモリ、CPU、およびNW機構を含み、前記クライアント内の構成要素間の経路コスト情報が、前記クライアント内の前記メモリ、前記CPU、および前記NW機構の間の経路コストに基づき、前記経路コスト情報が、前記構成要素間のアクセスホップ数を含む、通信経路決定手段と、
前記通信経路に基づき、I/O要求の発行を行うI/O要求発行手段と
を備える、クライアント。
【請求項2】
前記通信経路決定手段が、前記クライアントと前記I/Oサーバとの間の経路コスト情報にさらに基づき、前記記録ディスクへの通信経路を決定する、請求項1に記載のクライアント。
【請求項3】
I/Oサーバ内の構成要素間の経路コスト情報に基づき、経路情報を決定する経路情報決定手段であって、前記構成要素が、前記I/Oサーバ内のメモリ、CPU、NW機構、およびI/O機構を含み、前記I/Oサーバ内の構成要素間の経路コスト情報が、前記I/Oサーバ内の前記メモリ、前記CPU、前記NW機構、および前記I/O機構の間の経路コストに基づき、前記経路コスト情報が、前記構成要素間のアクセスホップ数を含む、経路情報決定手段と、
前記経路情報をクライアントに送信する送信手段と
を備え、前記経路情報は、記録ディスクを識別する情報と、前記記録ディスクへの通信経路として前記クライアントが使用すべき前記I/Oサーバ内の構成要素を識別する情報とを含む、I/Oサーバ。
【請求項4】
前記I/Oサーバがディスク装置に結合され、
前記経路情報決定手段は、前記I/Oサーバと前記ディスク装置との間の経路コスト情報、および前記ディスク装置内の構成要素間の経路コスト情報にさらに基づき、前記経路情報を決定する、請求項に記載のI/Oサーバ。
【請求項5】
経路情報をI/Oサーバから受信するステップであって、前記経路情報は、記録ディスクを識別する情報と、前記記録ディスクへの通信経路としてクライアントが使用すべき前記I/Oサーバ内の構成要素を識別する情報とを含む、ステップと、
前記経路情報と、前記クライアント内の構成要素間の経路コスト情報とに基づき、前記記録ディスクへの通信経路を決定するステップであって、前記クライアント内の構成要素が、メモリ、CPU、およびNW機構を含み、前記クライアント内の構成要素間の経路コスト情報が、前記クライアント内の前記メモリ、前記CPU、および前記NW機構の間の経路コストに基づき、前記経路コスト情報が、前記構成要素間のアクセスホップ数を含む、ステップと、
前記通信経路に基づき、I/O要求の発行を行うステップと
を含み、クライアントにより実行される、方法。
【請求項6】
I/Oサーバ内の構成要素間の経路コスト情報に基づき、経路情報を決定するステップであって、前記構成要素が、前記I/Oサーバ内のメモリ、CPU、NW機構、およびI/O機構を含み、前記I/Oサーバ内の構成要素間の経路コスト情報が、前記I/Oサーバ内の前記メモリ、前記CPU、前記NW機構、および前記I/O機構の間の経路コストに基づき、前記経路コスト情報が、前記構成要素間のアクセスホップ数を含む、ステップと、
前記経路情報をクライアントに送信するステップを含み、
前記経路情報は、記録ディスクを識別する情報と、前記記録ディスクへの通信経路として前記クライアントが使用すべきI/Oサーバ内の構成要素を識別する情報とを含み、I/Oサーバにより実行される、方法。
【請求項7】
コンピュータに、
経路情報をI/Oサーバから受信するステップであって、前記経路情報は、記録ディスクを識別する情報と、前記記録ディスクへの通信経路としてクライアントが使用すべき前記I/Oサーバ内の構成要素を識別する情報とを含む、ステップと、
前記経路情報と、前記クライアント内の構成要素間の経路コスト情報とに基づき、前記記録ディスクへの通信経路を決定するステップであって、前記クライアント内の構成要素が、メモリ、CPU、およびNW機構を含み、前記クライアント内の構成要素間の経路コスト情報が、前記クライアント内の前記メモリ、前記CPU、および前記NW機構の間の経路コストに基づき、前記経路コスト情報が、前記構成要素間のアクセスホップ数を含む、ステップと、
前記通信経路に基づき、I/O要求の発行を行うステップと
を実行させるためのプログラム。
【請求項8】
コンピュータに、
I/Oサーバ内の構成要素間の経路コスト情報に基づき、経路情報を決定するステップであって、前記構成要素が、前記I/Oサーバ内のメモリ、CPU、NW機構、およびI/O機構を含み、前記I/Oサーバ内の構成要素間の経路コスト情報が、前記I/Oサーバ内の前記メモリ、前記CPU、前記NW機構、および前記I/O機構の間の経路コストに基づき、前記経路コスト情報が、前記構成要素間のアクセスホップ数を含む、ステップと、
記録ディスクを識別する情報と、前記記録ディスクへの通信経路としてクライアントが使用すべき前記I/Oサーバ内の構成要素を識別する情報とを含む経路情報を前記クライアントに送信するステップ
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、クライアント、I/Oサーバ、方法、およびプログラムに関する。
【背景技術】
【0002】
近年、コンピュータのノード内のI/O(Input/Output)バス(例えば、PCI Express等)や外部ネットワークのデータ転送速度が向上し、メモリとCPU(Central Processing Unit)との間のデータ転送のコストは無視できなくなりつつある。特にマルチCPUまたはマルチコアのシステムにおいてこの事情は顕著である。
【0003】
データ転送経路の選択に関して、例えば下記特許文献1には、情報処理装置内のインターコネクト間の繋がりを表す接続情報に基づいて、特定の経路を選択する技術が記載されている。また、下記特許文献2には、ストレージシステムの各要素の状態に基づいてボトルネックの発生を検出し、ボトルネックを回避するような経路を選択する技術が記載されている。
【先行技術文献】
【特許文献】
【0004】
【文献】日本国特開2015-156158号公報
【文献】日本国特開2005-309748号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記技術では、クライアントが、I/Oサーバ側のメモリとCPUとの間のデータ転送コストを考慮して、転送経路を選択できないという課題があった。
【0006】
本発明の目的の一例は、上述した課題を解決する、クライアント、I/Oサーバ、方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【0007】
本発明の第1の態様によれば、クライアントは、経路情報をI/Oサーバから受信する受信手段であって、前記経路情報は、記録ディスクを識別する情報と、前記記録ディスクへの通信経路として前記クライアントが使用すべき前記I/Oサーバ内の構成要素を識別する情報とを含む、受信手段と、前記経路情報に基づき、前記記録ディスクへの通信経路を決定する通信経路決定手段と、前記通信経路に基づき、I/O要求の発行を行うI/O要求発行手段とを備える。
【0008】
本発明の第2の態様によれば、I/Oサーバは、経路情報をクライアントに送信する送信手段を備え、前記経路情報は、記録ディスクを識別する情報と、前記記録ディスクへの通信経路として前記クライアントが使用すべき前記I/Oサーバ内の構成要素を識別する情報とを含む。
【0009】
本発明の第3の態様によれば、方法は、経路情報をI/Oサーバから受信するステップであって、前記経路情報は、記録ディスクを識別する情報と、前記記録ディスクへの通信経路としてクライアントが使用すべき前記I/Oサーバ内の構成要素を識別する情報とを含む、ステップと、前記経路情報に基づき、前記記録ディスクへの通信経路を決定するステップと、前記通信経路に基づき、I/O要求の発行を行うステップとを含み、クライアントにより実行される。
【0010】
本発明の第4の態様によれば、方法は、経路情報をクライアントに送信するステップを含み、前記経路情報は、記録ディスクを識別する情報と、前記記録ディスクへの通信経路として前記クライアントが使用すべきI/Oサーバ内の構成要素を識別する情報とを含み、I/Oサーバにより実行される。
【0011】
本発明の第5の態様によれば、記録媒体は、コンピュータに、経路情報をI/Oサーバから受信するステップであって、前記経路情報は、記録ディスクを識別する情報と、前記記録ディスクへの通信経路としてクライアントが使用すべき前記I/Oサーバ内の構成要素を識別する情報とを含む、ステップと、前記経路情報に基づき、前記記録ディスクへの通信経路を決定するステップと、前記通信経路に基づき、I/O要求の発行を行うステップとを実行させるためのプログラムを記憶する記録媒体である。
【0012】
本発明の第5の態様によれば、記録媒体は、コンピュータに、記録ディスクを識別する情報と、前記記録ディスクへの通信経路としてクライアントが使用すべきI/Oサーバ内の構成要素を識別する情報とを含む経路情報をクライアントに送信するステップを実行させるためのプログラムを記憶した記録媒体である。
【図面の簡単な説明】
【0013】
図1】第1の実施形態に係る分散共有ファイルシステムの全体構成を示す図である。
図2】第1の実施形態に係るクライアント1をより詳細に示した図である。
図3】第1の実施形態に係るI/Oサーバ2をより詳細に示した図である。
図4】第1の実施形態に係る高速ディスク装置4をより詳細に示した図である。
図5】例示的なI/Oサーバのコストを示す図である。
図6】例示的なI/Oサーバと高速ディスク装置との間のコストを示す図である。
図7】例示的な高速ディスク装置4のコストを示す図である。
図8】例示的なクライアントのコストを示す図である。
図9】例示的なクライアントとI/Oサーバとの間のコストを示す図である。
図10】第1の実施形態に係るI/Oサーバ2,3の処理フローを示す図である。
図11】I/Oサーバ2によって計算された例示的な経路情報(ディスクへの最小経路の計算結果)を示す図である。
図12】第1の実施形態に係るクライアント1の処理フローを示す図である。
図13】第1の実施形態に係るクライアント1がI/Oサーバ2から受信する経路情報の例を示す図であり、部分(A)がI/Oサーバ#0の経路情報の例を示し、部分(B)がI/Oサーバ#1の経路情報の例を示す。
図14A】第1の実施形態に係るクライアント1がwriteのシステムコールの発行を行う処理フローを示す図である。
図14B】第1の実施形態に係るクライアント1がwriteのシステムコールの発行を行う処理フローを示す図である。
図15】例示的なI/Oマップ(I/Oサーバ、I/OサーバNW機構とディスクの割り当て)を示す図である。
図16】第1の実施形態に係るクライアント1がwriteのシステムコールの発行を行う動作を概略的に示した図である。
図17】クライアント1がreadのシステムコールの発行を行う場合の処理フローを示す図である。
図18】第2の実施形態に係る分散共有ファイルシステムの構成を示す図である。
図19】第2の実施形態に係る分散共有ファイルシステムの処理フローを示す図である。
図20】第3の実施形態に係るクライアント600の構成を示す図である。
図21】第3の実施形態に係るI/Oサーバ700の構成を示す図である。
図22】少なくとも1つの実施形態に係る制御装置800のハードウェア構成図である。
【発明を実施するための形態】
【0014】
<第1の実施形態>
以下、第1の実施形態に係る分散共有ファイルシステムについて、図1から4を参照しながら説明する。
【0015】
(分散共有ファイルシステムの全体構成)
図1は、第1の実施形態に係る分散共有ファイルシステムの全体構成を示す図である。第1の実施形態に係る分散共有ファイルシステムは、クライアント1、I/Oサーバ2、I/Oサーバ3、および高速ディスク装置4を備える。本実施形態では、説明の容易さから、分散共有ファイルシステムが2つのI/Oサーバを備えることを例示するが、I/Oサーバは1つ、または3つ以上で構成してもよい。
【0016】
分散共有ファイルシステムにおいて、クライアント1は、I/O要求を発行する際に、最もコストの小さいI/O経路情報をI/Oサーバ2,3から受け取り、その情報を使ってI/O要求を発行する。また、クライアント自身も、クライアント自身に最適なI/O通信経路情報を作成し、その情報を加えて使用してI/O要求を発行する。これらの仕組みにより、分散共有ファイルシステム全体のスループットを向上させる。
【0017】
(クライアント1の構成)
クライアント1は、複数のネットワーク(以下、NW)処理機構11を備える。NW処理機構11は、それぞれ高速ネットワーク5に接続される。なお、本実施形態では、クライアント1が2つのNW処理機構11を備えるが、他の実施形態では、1つ、または3つ以上のNW処理機構11を備えてよい。
【0018】
図2は、第1の実施形態に係るクライアント1をより詳細に示した図である。図2を参照すると、クライアント1は、NW処理機構#0(111)およびNW機構#1(112)を備える。NW処理機構#0(111)およびNW機構#1(112)は、図1におけるNW処理機構11に対応する。NW処理機構#0(111)は、CPU#0(1111)、メモリ#0(1112)、およびNW機構#0(1113)と、ディスク装置1114を備える。ディスク装置1114は、クライアントソフトウエアを格納する。また、NW処理機構#1(112)は、CPU#1(1121)、メモリ#1(1122)、およびNW機構#1(1123)を備える。CPU#0(1111)とCPU#1(1121)は、インターコネクト12で接続されている。これらCPUは、共有ファイルシステムのクライアント機能を提供する装置であってよい。
【0019】
(I/Oサーバ2,3の構成)
図1に示されるように、I/Oサーバ2(I/Oサーバ#0)およびI/Oサーバ3(#1)は、それぞれ2つのI/O処理機構21を備える。I/O処理機構21の各々は、高速ネットワーク5に接続されるとともに、高速ディスク装置4に接続される。本実施形態では、I/O処理機構21の各々は、高速ネットワーク5を介して、クライアント1のNW処理機構11に接続されるが、高速ネットワーク5を介さずに接続されてよいことに留意する。各I/Oサーバが備えるI/O処理機構21の数は、2つに限定されるものではなく、他の実施形態では任意の数のI/O処理機構21がI/Oサーバに備えられる。
【0020】
図3は、第1の実施形態に係るI/Oサーバ2をより詳細に示した図である。図3ではI/Oサーバ2のみを示すが、I/Oサーバ3も同様の構成を有してよい。図3を参照すると、I/Oサーバ2は、I/O処理機構#0(211)およびI/O処理機構#1(212)を備える。I/O処理機構#0(211)は、CPU#0(2111)、メモリ#0(2112)、NW機構#0(2113)、I/O機構#0(2114)、およびディスク装置2115を備える。ディスク装置2115は、I/Oサーバソフトウエアを格納する。また、ディスク装置2115は、後述する各種の経路コスト表を格納してよい。次にI/O処理機構#1(212)は、CPU#1(2121)、メモリ#1(2122)、NW機構#1(2123)、I/O機構#1(2114)を備える。CPU#0(2111)とCPU#1(2121)は、インターコネクト22で接続されている。これらのCPUは、共有ファイルシステムのサーバ機能を提供する装置であってよい。
【0021】
(高速ディスク装置4)
図1に示されるように、高速ディスク装置4は、2つのディスクコントローラ41を備える。ディスクコントローラ41の各々は、I/O機構42を経由してディスク43に接続される。また、ディスクコントローラ41は、それぞれI/Oサーバ2およびI/Oサーバ3に接続される。第1の実施形態では例示的に上記の構成を採用するが、他の実施形態では、任意の数のディスクコントローラ41、I/O機構42、およびディスク43を採用してよい。
【0022】
図4は、第1の実施形態に係る高速ディスク装置4をより詳細に示した図である。図4に示されるように、ディスクコントローラ#0(411)は、I/O機構#0(421)を経由してディスクA,B,C,Dに接続される。また、ディスクコントローラ#1(412)は、I/O機構#1(422)を経由してディスクE,F,G,Hに接続される。また、ディスクコントローラ#0(411)と、ディスクコントローラ#1(412)は、インターコネクト44で接続されている。ディスクコントローラ#0(411)とI/O機構#1(422)を経由するディスクE,F,G,Hへのアクセス、および、ディスクコントローラ#1(412)とI/O機構#0(421)を経由するディスクA,B,C,Dのアクセスは、代替のパスとして接続される。一方で、これらの経路のアクセス効率は、非対称の論理ユニットへのアクセスとなるため、前述の経路よりは悪化し得ることに留意する。
【0023】
本願実施形態では、説明の容易さから分散共有ファイルシステムが具体的な数の構成要素を含むが、上記のように一般的には、分散共有ファイルシステムに含まれるクライアント1、I/Oサーバ2、および高速ディスク装置4の数は任意であってよい。この際、クライアント、I/Oサーバ、高速ディスク装置に含まれる各コンポーネントも、上記のように任意の数で構成されてよいことに留意する。
【0024】
(I/Oサーバ2,3の処理フロー)
図10は、第1の実施形態に係るI/Oサーバ2,3の処理フローを示す図である。以下では、図3図4、および図10を参照して、I/Oサーバ2,3の処理フローを説明する。以下では特にI/Oサーバ2の動作を説明するが、I/Oサーバ3も同様の動作を行ってよい。
【0025】
第1の実施形態に係るI/Oサーバ2の処理フローは、例えばI/Oサーバ2が起動することで開始する。起動時においてI/Oサーバ2は、ディスク装置2115に格納してあるI/Oサーバソフトウエアをメモリ上にロードして起動し、その後、以下の動作を行う。
【0026】
まずステップS101において、I/Oサーバ2はI/Oサーバ2のコスト表を読み込む。I/Oサーバのコスト表は、I/Oサーバ内における構成要素間の経路コスト情報を提供する。経路コスト情報は、その経路を用いた場合の通信コストを示し、より具体的にはアクセスホップ数、帯域幅、および通信性能等である。第1の実施形態では理解を容易にするために、経路コスト情報としてアクセスホップ数を採用する。アクセスホップ数とは、具体的にはI/Oサーバ内のメモリ、CPU、NW機構、I/O機構の接続間におけるアクセスホップ数を示してよい。図5は、例示的なI/Oサーバのコストを示す図である。図5において、最上行および最左列に構成要素を示す記号が示され、2つの構成要素間のアクセスホップ数が表体内に記載される。例えば、C0はI/OサーバのCPU#0を示し、M1は、I/Oサーバのメモリ#1を示す。これらの構成要素間では、図3を参照すれば明らかなように、CPU#0からインターコネクト22を介してCPU#1に到達し、さらにCPU#1からメモリ#1に到達するため、アクセスホップ数は2である。
【0027】
次にステップS102において、I/Oサーバ2は、I/Oサーバ2のI/O機構#0(2114)およびI/O機構#1(2124)と接続している高速ディスク装置4に関するI/Oサーバと高速ディスク装置との間のコスト表を読み込む。I/Oサーバと高速ディスク装置との間のコスト表は、I/Oサーバおよび高速ディスク装置間の経路コスト情報を示し、本願実施形態ではI/Oサーバおよび高速ディスク装置間のアクセスホップ数を示す。図6は、例示的なI/Oサーバと高速ディスク装置との間のコストを示す図である。図6では、I/OサーバのI/O機構#0(2114)およびI/O機構#1(2124)と、これらに接続している高速ディスク装置4のディスクコントローラ#0(411)およびディスクコントローラ#1(412)との間のアクセスホップ数が示されている。例えばiI0はI/Oサーバ2のI/O機構#0を示し、dC0は高速ディスク装置4のディスクコントローラ#0を示し、これらのアクセスホップ数は図1,3,4を参照すれば明らかなように1である。また、本実施形態では、I/Oサーバ2のI/O機構#0と高速ディスク装置4のディスクコントローラ#1は接続されないため、iI0とdC1の間のアクセスホップ数は空欄となっている。
【0028】
さらに、ステップS103において、I/Oサーバ2は高速ディスク装置4のコスト表を読み込む。高速ディスク装置4のコスト表は、高速ディスク装置内におけるディスクコントローラからのその他の構成要素への経路コスト情報を示し、本願実施形態ではディスクコントローラからのその他の構成要素へのアクセスホップ数を示す。図7は、例示的な高速ディスク装置4のコストを示す図である。図7において、dC0は、ディスクコントローラ#0(411)を示している。dC1はディスクコントローラ#1(412)を示す。I0はI/O機構#0(421)を示している。I1はI/O機構#1(422)を示している。D0はディスク43のうちA,B,C,Dの集合を示している。D1はディスク43のうちE、F、G、およびHの集合を示している。例えば、dC1で示されるディスクコントローラ#1(412)と、D0で示されるディスクA,B,C,Dの集合とのアクセスホップ数は、まずディスクコントローラ#1(412)からインターコネクト44を介してディスクコントローラ#0(411)に到達し、I/O機構#0(412)に到達し、ディスクA,B,C,Dの集合に到達するため、3である。
【0029】
ステップS104において、I/Oサーバ2は、I/Oサーバ2のコスト表、I/Oサーバと高速ディスク装置との間のコスト表、および高速ディスク装置のコスト表に基づいて、高速ディスク装置4のA,B,C,D、および高速ディスク装置4のE,F,G,Hについて、各ディスク43へのアクセスホップ数が最小となる経路を計算することで経路情報を生成する。この経路情報は、クライアント1が通信経路として使用すべき経路と特定するための情報としてクライアント1に転送される。
【0030】
図11は、I/Oサーバ2によって計算された例示的な経路情報を示す図である。図11は、高速ディスク装置4のディスク43のA,B,C,D,E,F,G,Hとクライアント1との経路コストが最小となるような経路に使用されるコンポーネントの組を示している。上記のように、経路コストとはアクセスホップ数であってよく、この場合、図11は、最小のアクセスホップ数を有する経路を実現するようなコンポーネントの組を示している。上記のように、最小のアクセスホップ数を有する経路は、例えば、図5図6、および図7に示すコスト表に基づき決定される。また、図11に示される表は、ディスク43のA,B,C,D,E,F,G,Hの各々からみて、どのディスクコントローラ、I/O機構、CPU、NW機構が、最小コストとなっているかを表している。表の順序は、ディスク上に共有ファイルシステムの断片(chunk)のファイルを生成する順序を示している。経路情報の算出は、例えばディスクA→E→B→F→C→G→D→Hの順にファイルを生成し、またAに戻る、というようにラウンドロビンで割り当てを行うことにより、高速ディスク装置4のディスクコントローラ#0(411)およびディスクコントローラ#1(412)を両方同時に動作させることができる。なお、図5-7に示すコスト表は、I/Oサーバ2上にあらかじめ静的に与えておくか、適切な方法(例えば高速ディスク装置4であれば、ALUAの機構を使う等)で決定し、ディスク装置2115に格納しておくことができる。
【0031】
次に、ステップS105において、経路情報を用いてI/Oスレッドの起動を行う。I/Oスレッドは、図3を参照すると、CPU#0(2111)上で起動するI/Oスレッド#0(2116)と、CPU#1(2121)上で起動するI/Oスレッド#1(2126)がある。I/Oスレッドは、それぞれ複数個生成される。このとき、I/Oサーバ2は、例えば図5に示されるI/Oサーバコスト表を参照して、CPU#0(2111)またはCPU#1(2121)からみて、ホップ数が最小のメモリおよびNW機構およびI/O機構を選択するI/Oスレッドを生成する。
【0032】
例えば、I/Oスレッド#0(2116)は、メモリ#0(2112)を使用し、NW機構#0(2113)の割り込みを待ち受けており、NW機構(2113)に入出力要求が上がると、CPU#0(2111)を使って、起動する。また、高速ディスク装置4へのI/O要求については、I/O機構#0(2114)を優先的に使用する。同様にI/Oスレッド#1(2126)は、メモリ#1(2122)を使用し、NW機構#1(2123)の割り込みを待ち受けており、NW機構(2123)に入出力要求が上がると、CPU#1(2121)を使って、起動する。また、高速ディスク装置4へのI/O要求については、I/O機構#0(2124)を優先的に使用する。
【0033】
(クライアント1の処理フロー)
次に、クライアント1の動作について詳細に説明する。図12は、第1の実施形態に係るクライアント1の処理フローを示す図である。
【0034】
例えば、クライアント1の処理フローは、クライアント1が動作を始めることで開始する。その際、クライアント1は、ディスク装置1114に格納してあるクライアントソフトウエアをメモリ上にロードして起動し、その後、以下の動作を実行する。
【0035】
ステップS201において、クライアントのコスト表を読み込む。図8は、例示的なクライアントのコストを示す図である。クライアントのコスト表は、クライアント1内の構成要素間における経路コスト情報を示す。本実施形態に係るクライアントのコスト表は、その他の表と同様に、クライアント内のメモリ、CPU、およびNW機構の接続間のアクセスホップ数を示している。
【0036】
次にステップS202において、クライアントのNW機構#0(1113)およびNW機構#1(1123)とI/Oサーバ2との間に関するクライアントとI/Oサーバとの間のコスト表を読み込む。図9は、例示的なクライアントとI/Oサーバとの間のコストを示す図である。クライアントとI/Oサーバとの間のコスト表は、クライアントのNW機構#0(1113)およびNW機構#1(1123)と、I/OサーバのNW機構#0(2113)およびNW機構#1(2123)とのアクセスホップ数を示している。図8および9に示すコスト表は、クライアント1上にあらかじめ静的に与えておくか、適切な方法で決定し、ディスク装置1114に格納しておくことができる。
【0037】
次にステップS203において、I/Oサーバ2から経路情報を受信し、読み込む。図13は、クライアント1がI/Oサーバ2から受信する経路情報の例を示す図である。この例示では、図11に示されるI/Oサーバ2上で計算したディスクへの最小経路の計算結果のうち、ディスクおよびI/Oサーバ2のNW機構の部分を、クライアント1がI/Oサーバ2から取得する。このとき、I/OサーバNW機構のGIDもあわせて取得する。GIDはネットワーク上で通信する際に識別するためのユニークな識別子を示す。
【0038】
次にステップS204において、I/Oサーバ3から経路情報を受信し、読み込む。ステップS204においても、I/Oサーバ2の場合と同様に、I/Oサーバ3からディスクへの最小経路の計算結果のうち、ディスクおよびI/Oサーバ3のNW機構の部分を、クライアント1が取得する(図13)。I/Oサーバ2および3から経路情報を受信する動作は、本処理フローが開始される以前に行われていてもよい。その場合、ステップS203およびステップS204では、経路情報を受信する動作をスキップし、単に読み込み動作のみを行う。
【0039】
次にステップS205において、クライアントコスト表、クライアントとIOサーバとの間のコスト表、および経路情報に基づき、I/Oスレッドの起動を行う。I/Oスレッドは、図2を参照すると、CPU#0(1111)上で起動するI/Oスレッド#0(1115)と、CPU#1(1121)上で起動するI/Oスレッド#1(1125)がある。I/Oスレッドは、それぞれ複数個生成される。このとき、クライアントは、クライアントコスト表(図8)を参照して、CPU#0(1111)、CPU#1(1121)からみて、ホップ数が最小のメモリを選択するよう、I/Oスレッドを生成する。さらに、NW機構についてCPU#1(1121)からみて、ホップ数が最小のNW機構を使用する。
【0040】
例えば、I/Oスレッド#0(1115)は、メモリ#0(1112)を使用し、NW機構#0(1113)を使ってI/Oサーバへデータの送受信を行う。同様に、I/Oスレッド#1(1125)はメモリ#1(1122)を使用し、NW機構#1(1123)を使ってI/Oサーバ#1へデータの送受信を行う。
【0041】
(クライアント1のwriteシステムコールの処理フロー)
次に、クライアント1がI/O発行を行う方法について説明する。まず、クライアントがwriteのシステムコールの発行を行う場合の動きについて説明する。図14Aおよび14Bは、第1の実施形態に係るクライアント1がwriteのシステムコールの発行を行う処理フローを示す図である。
【0042】
クライアント1がwriteのシステムコールの発行を行う場合、クライアント1上のキャッシュメモリ上に一旦データをコピーする。キャッシュメモリは、クライアント1からデータを発行もしくは再利用するための一時領域であり、クライアント上のメモリ#0(1112)またはメモリ#1(1122)に置かれる。このとき、メモリ上のデータの配置を、次のように決定する。
【0043】
ステップS301において、クライアント1は、最初のI/Oを行う起点となるI/Oサーバを決定する。これは共有ファイルシステムのプロトコルの一部であり、説明のためにI/Oサーバ2が指定されている場合を想定する。
【0044】
ステップS302において、次に起点となるI/Oサーバに対してファイルの作成要求を行う。このとき、I/Oサーバ2が起点となるサーバとして指定されているため、I/Oサーバ2から、共有ファイルシステムで管理するファイルハンドルとともに、ディスクの書き込みの起点となるディスクを戻り値として受信する。本例示では、Aが返却されたとする。
【0045】
次に、ステップS303において、クライアント1は、受信したディスク名を起点として、受信した経路情報(図13)に基づき、高速ディスク装置のディスクに対するアクセスが、ホップ数として最小となる通信経路を示すI/Oマップを生成する。本実施形態において、I/Oマップは、経路として、クライアントのメモリ領域、I/Oサーバ、I/OサーバのNW機構、およびディスク装置を特定する。図15は、例示的なI/Oマップを示す図である。
【0046】
I/Oサーバ上でディスクを割り当てるアルゴリズムは、ラウンドロビンで行われてよい。ディスクの性能を引き出すため、A→E→B→F→C→G→D→Hの順でchunkのサイズ毎に領域を割り当て、Aに戻り、また再び、A→E→B→F→C→G→D→Hの順でディスクの領域を割りあてる。このアルゴリズムは、図12のステップS203、ステップS204で取得する経路情報の表の順序で表現されている(図13)。また、同一のディスクをもつI/Oサーバ#1の場合は、コスト表(図13)の順序に従いI/Oサーバ自身をラウンドロビンで振り分けるように、I/Oマップ(図15)を生成する。
【0047】
ステップS304において、キャッシュメモリへのデータ配置について、ディスクへのデータ読み書き単位(chunk)と、ファイルの先頭からのアドレスと、I/Oマップ(図15)に従い、メモリ#0またはメモリ#1へユーザ領域からコピーする。
【0048】
一旦キャッシュメモリへデータの配置が終わると、writeのシステムコールを終了する。実際のwrite処理は、ステップS305において、次のI/Oフラッシュが開始され、I/Oフラッシュを起動するまで待つ。
【0049】
クライアント1は、I/Oフラッシュが開始されると、I/Oスレッドを起動する。このときも、I/Oマップ(図15)に従い、起動するI/Oスレッドは、書き込むデータがメモリ#0にある場合はI/Oスレッド#0(1115)を、メモリ#1にある場合はI/Oスレッド#1(1125)を起動する。I/Oスレッドは、クライアントコスト表(図8)と、I/Oマップ(図15)に従い、最小コストのNW機構#0またはNW機構#1を使用し、データを適切なI/OサーバのNW機構に付加しているGIDに対して送信要求する。このとき、スレッドの資源消費を削減するため、いくつかの書き込み要求を1つのスレッドで行ってよい。ステップS306において、クライアント1は、最小コストの経路を用いてI/Oサーバにデータ送信を行う。図16は、第1の実施形態に係るクライアント1がwriteのシステムコールの発行を行う動作を概略的に示した図である。
【0050】
次にステップS307において、発行した書き込み要求が完了するまで送信したスレッドをスリープさせる。なお、I/Oサーバのデータ送信には、ユーザメモリのデータの他に、ファイルのオフセット値が含まれており、受信したI/Oサーバ側では、どのディスクへwrite要求を出せばよいかが、判断できるようになっている。
【0051】
ステップS308において、I/Oサーバ2側でデータの書き込みが終わると、I/Oサーバ2からI/O完了の通知を受信する。
【0052】
ステップS309において、I/Oスレッドを起動待ち状態にする。
【0053】
(クライアント1のreadシステムコールの処理フロー)
次に、クライアント1がreadのシステムコールの発行を行う場合の動きについて説明する。図17は、クライアント1がreadのシステムコールの発行を行う場合の処理フローを示す図である。クライアント1がreadのシステムコールの発行を行う場合、一旦クライアント1上のキャッシュメモリ上である、クライアント1上のメモリ#0(1112)またはメモリ#1(1122)にデータの受信をおこなう領域を確保する。このとき、メモリ上のデータの配置を、次のように決定する。
【0054】
ステップS401において、クライアント1は最初のI/Oを行う起点となるI/Oサーバを決定する。これは共有ファイルシステムのプロトコルの一部であり、I/Oサーバ2が指定されているとする。
【0055】
次にステップS402において、I/Oサーバ2に対して、ファイルハンドルの要求を行う。このとき、I/Oサーバ2からは、共有ファイルシステムのファイルハンドルとともに、ディスクの読み込みの起点となるディスクを戻り値として返す。本例示では、Aが返却されたとする。
【0056】
次にステップS403において、クライアントは、そのディスク名を起点として、収集した経路情報(図13)より、高速ディスク装置のディスクに対するアクセスが、ホップ数として最小となるI/Oサーバ、I/OサーバのNW機構、ディスク装置のI/Oマップ(図15)を生成する。このとき、I/Oサーバ上で読み込み用ディスクが割り当てられているアルゴリズムはラウンドロビンで行われてよい。ディスクの性能を引き出すため、A→E→B→F→C→G→D→Hの順でchunkのサイズ毎に領域が割り当てられており、Aに戻り、また再び、A→E→B→F→C→G→D→Hの順でディスクの領域を割りあてられている。このアルゴリズムは、図12のステップS203,ステップS204で取得する、経路情報の表の順序で表現されている(図13)。また、同一のディスクをもつI/Oサーバの場合は、経路情報(図13)の順序に従いI/Oサーバ自身をラウンドロビンで振り分けるように、I/Oマップ(図15)を生成する。
【0057】
次にステップS404において、I/Oマップに従い、読み込み用のキャッシュメモリ領域を確保する。
【0058】
次にステップS405において、I/Oスレッドを起動する。このとき読み込むデータがメモリ#0にある場合は、I/Oスレッド#0(1115)、メモリ#1にある場合は、I/Oスレッド#1(1125)を起動する。
【0059】
ステップS408において、I/Oスレッドは、クライアントコスト表(図8)と、I/Oマップ(図15)に従い、最小コストのNW機構#0またはNW機構#1を使用し、データを適切なI/OサーバのNW機構に付加しているGIDに対して読み込み要求する。一方、ステップS406において、ReadのプロセスはすべてのI/Oが完了までスリープする。
【0060】
次にステップS409において、読み込み要求したスレッドは発行した読み込み要求が完了するまでスリープする。I/Oサーバのデータ送信には、ユーザメモリのデータの他に、ファイルのオフセット値が含まれており、受信したI/Oサーバ側では、どのディスクへread要求を出せばよいかが、判断できるようになっている。
【0061】
ステップS410において、I/Oサーバ側でデータの読み込みが終わると、I/Oサーバ2からI/O完了が通知される。
【0062】
ステップS411において、I/Oスレッドはクライアントreadプロセスを起動させ、ステップS412において次の起動をまつ。一方で、ステップS407において、全てのI/Oスレッドのread要求が終わると、キャッシュメモリからユーザメモリへデータをコピーする。
【0063】
(第1の実施形態の変形例)
また、第1の実施形態の変形例として、CPUとメモリの部分をCPU内のコアとそれを接続するメモリ機構の構成に拡張して、本発明の実施形態を適用することも可能である。また2つ以上のCPUおよびメモリソケットを持つシステムに対しても本発明の実施形態を適用することが可能である。また、第1の実施形態では、I/Oサーバ2は、I/Oサーバ2内の経路コスト情報、I/Oサーバと高速ディスク装置との間の経路コスト情報、および高速ディスク装置内の経路コスト情報に基づき、各々の高速ディスクへのコスト最小経路を計算したが、他の実施形態では、I/Oサーバ2は、これらの経路コスト情報をクライアント1に送信し、クライアント1がコスト最小経路を計算することも可能である。
【0064】
(作用および効果)
第1の実施形態に係る分散共有ファイルシステムは、I/O発行を行うクライアント1内のNW機構、CPU、およびメモリの間の経路コストと算出し、I/Oサーバ内でのNW機構、CPU、およびメモリの経路コストと高速ストレージ装置内のストレージへの経路コストとを算出する。さらに、I/Oを行うストレージの単位での最適なI/Oパスをクライアント1へ通知することにより、クライアント1は、コスト最小となるI/O発行経路を判断して、I/O発行を行うことが可能となる。これにより、クライアント1、I/Oサーバ2,3、および高速ディスク装置4内でのデータ移動を最小とすることができるため、共有ファイルシステム全体のスループットの向上が可能である。
【0065】
<第2の実施形態>
第1の実施形態では、より明確な理解のためにより具体的な態様を用いて説明を行った。第2の実施形態では、分散共有ファイルシステム全体をより概念的に説明する。第1の実施形態を第2の実施形態に組み合わせることが可能である。
【0066】
(第2の実施形態に係る分散共有ファイルシステムの構成)
図18は、第2の実施形態に係る分散共有ファイルシステムの構成を示す図である。第2の実施形態に係る分散共有ファイルシステムは、1つまたは複数のクライアント510と1つまたは複数のI/Oサーバ520と、1つまたは複数の記録装置530を備える。
【0067】
クライアント510は、通信経路決定部511、I/O要求発行部512、受信部513、および送信部514を備える。クライアント510は、第1の実施形態と同様に、1つまたは複数のNW処理機構を備えてよく、クライアント内のNW処理機構は、任意の数のメモリ、CPU、およびNW機構を備えてよい。通信経路決定部511は、NW処理機構内のCPUによって構成されてよい。
【0068】
I/Oサーバ520は、経路情報決定部521、送受信命令発行部522、受信部523、および送信部524を備える。I/Oサーバ520は、第1の実施形態と同様に、1つまたは複数のI/O処理機構を備えてよく、このI/O処理機構は、任意の数のメモリ、CPU、およびNW機構を備えてよい。また経路情報決定部521は、I/O処理機構内のCPUによって構成されてよい。
【0069】
記録装置530は、1つまたは複数のディスクコントローラ531と、1つまたは複数のI/O機構532と、1つまたは複数の記録ディスク533とを備える。
【0070】
(第2の実施形態に係る分散共有ファイルシステムの処理フロー)
図19は、第2の実施形態に係る分散共有ファイルシステムの処理フローを示す図である。1つのクライアント510に注目して動作を説明するが、処理フローは、各クライアント510に関して別個に実行可能である。
【0071】
ステップS1501において、I/Oサーバ520の経路情報決定部521は、I/Oサーバ520内の構成要素間の経路コスト情報と、I/Oサーバ520および記録装置530の間の経路コスト情報と、記録装置530内の構成要素間の経路コスト情報とに基づき、記録ディスク533への経路情報を決定する。I/Oサーバ520内の構成要素は、CPU、メモリ、I/O機構、およびNW機構を含む。また、記録装置530内の構成要素は、ディスクコントローラ531、I/O機構532、および記録ディスク533を含む。経路情報は、記録装置530内の記録ディスク533への最小コストの通信経路を示してよい。また、経路コスト情報は、アクセスホップ数、帯域幅、および通信性能等を含む。経路コスト情報は、例えば、第1の実施形態で示したコスト表として表される。
【0072】
ステップS1502において、クライアント510の通信経路決定部511は、クライアント510内の各構成要素間の経路コスト情報と、クライアント510とI/Oサーバ520との間の経路コスト情報とを読み込む。クライアント510内の構成要素は、CPU、メモリ、およびNW機構を含む。
【0073】
ステップS1503において、クライアント510の受信部513は、I/Oサーバ520が決定した経路情報を、I/Oサーバ520の送信部524を介して受信する。本実施形態では、クライアント510がI/Oサーバ520から受信する経路情報は、記録ディスク533を識別する情報と、記録ディスク533への通信経路としてクライアント510が使用すべきI/Oサーバ520内の構成要素を識別する情報とを含んでよい。使用すべきI/Oサーバ520内の構成要素は、例えばI/Oサーバ520のNW機構を示す情報であってよい。
【0074】
ステップS1504において、クライアント510の通信経路決定部511は、I/Oサーバ520から受信した経路情報と、クライアント510内の構成要素間の経路コスト情報と、クライアント510とI/Oサーバ520との間の経路コスト情報に基づき、対象とする記録ディスク533への通信経路を決定する。例えば、決定される通信経路は、経路コストが最小となるものであってよい。また、ステップS1504において決定される通信経路は、記録ディスク533へ経路の一部であってよい。例えば、通信経路は、第1の実施形態で示したように、対象となる記録ディスク533、クライアント510のメモリ領域、I/Oサーバ520、およびI/Oサーバ520のNW機構を指定する。
【0075】
ステップS1505において、クライアント510のI/O要求発行部512は、決定した通信経路に基づきI/O要求の発行を行う。例えばI/O要求発行部512は、クライアントのメモリに一番近いCPUおよびNW機構を使用するような通信経路を用いてI/O要求の発行を行う。また、I/O要求の発行を行う際、クライアント510の送信部514は、I/Oサーバ520に対してI/O要求を送信する。
【0076】
ステップS1506において、I/Oサーバ520の受信部523は、クライアント510からI/O要求を受信する。その際、I/Oサーバ520は、I/O要求を受信したNW機構に含まれるCPUで動作するI/O待ちプロセスを起動させてよい。
【0077】
ステップS1507において、I/Oサーバ520の送受信命令発行部522は、ステップS1501において決定した経路情報に基づき、記録ディスク533へのI/Oデータの送受信命令を発行する。例えば、I/Oサーバ520の送受信命令発行部522は、起動されたCPUに一番近いメモリおよびI/O機構を使用して、I/Oデータの送受信命令を発行する。
【0078】
(第2の実施形態による効果)
以上のように、クライアント510の受信部513は、経路情報をI/Oサーバ520から受信する。経路情報は、記録ディスク533を識別する情報と、記録ディスク533への通信経路としてクライアント510が使用すべきI/Oサーバ520内の構成要素を識別する情報とを含む。通信経路決定部511は、経路情報に基づき、記録ディスク533への通信経路を決定する。I/O要求発行部512は、決定した通信経路に基づき、I/O要求の発行を行う。
上記構成により、第2の実施形態に係る分散共有ファイルシステムでは、クライアント510が、I/Oサーバ520内の構成要素間の経路コストまでも考慮して、I/O要求の発行を行うことができる。これにより共有ファイルシステム全体のスループットの向上が可能である。
【0079】
また、クライアント510の通信経路決定部511は、クライアント510内の構成要素間の経路コスト情報にさらに基づき記録ディスク533への通信経路を決定する。
これにより、クライアント510内の経路コストを考慮してI/O要求の発行を行うことができる。結果、共有ファイルシステム全体のスループットのさらなる向上が可能である。
【0080】
また、クライアント510の通信経路決定部511は、クライアント510とI/Oサーバ520との間の経路コスト情報にさらに基づき、記録ディスク533への通信経路を決定する。
これにより、クライアント510は、ネットワークのデータ転送コストを考慮して最適なI/Oサーバを選択し、選択されたI/Oサーバ内の最適な構成要素を経路としてIO要求を行うことができる。結果、共有ファイルシステム全体のスループットのさらなる向上が可能である。
【0081】
また、I/Oサーバ520の送信部524は、経路情報をクライアント510に送信する。経路情報は、記録ディスク533を識別する情報と、記録ディスク533への通信経路としてクライアント510が使用すべきI/Oサーバ520内の構成要素を識別する情報とを含む。これにより、クライアント510は経路情報を取得できるため、I/Oサーバ520内の構成要素間の経路コストまでも考慮して、I/O要求の発行を行うことができる。結果、共有ファイルシステム全体のスループットの向上が可能である。
【0082】
また、I/Oサーバ520は記録装置(ディスク装置)530に結合される。I/Oサーバ520の経路情報決定部521は、I/Oサーバ520内の構成要素間の経路コスト情報、I/Oサーバ520と記録装置(ディスク装置)530との間の経路コスト情報、および記録装置(ディスク装置)530内の構成要素間の経路コスト情報に基づき、経路情報を決定する。
これにより、I/Oサーバ520も、装置構成要素間の経路コストとネットワーク転送コストの両方を考慮して記録ディスク533への送受信命令を発行可能となる。結果、共有ファイルシステム全体のスループットの向上が可能である。
【0083】
また、経路コスト情報は、アクセスホップ数を含む。
アクセスホップ数を用いることによって、経路コスト情報の算出をより容易に行うことができる。
【0084】
<第3の実施形態>
図20は、第3の実施形態によるクライアント600の構成を示す図である。本実施形態によるクライアント600は、少なくとも受信部610と通信経路決定部620とI/O要求発行部630とを備える。受信部610は、経路情報をI/Oサーバ700から受信する。経路情報は、記録ディスクを識別する情報と、記録ディスクへの通信経路としてクライアントが使用すべきI/Oサーバ700内の構成要素を識別する情報とを含む。通信経路決定部620は、経路情報に基づき、前記記録ディスクへの通信経路を決定する。I/O要求発行部630は、通信経路に基づき、I/O要求の発行を行う。
【0085】
図21は、第3の実施形態によるI/Oサーバ700の構成を示す図である。本実施形態によるサーバは、少なくとも送信部710を備える。送信部710は、経路情報をクライアント600に送信する。経路情報は、記録ディスクを識別する情報と、記録ディスクへの通信経路としてクライアント600が使用すべきI/Oサーバ内の構成要素を識別する情報とを含む。
【0086】
<制御装置のハードウェア構成>
図22は、少なくとも1つの実施形態に係る制御装置800のハードウェア構成図である。制御装置800は、例えば、クライアント1、クライアント510、クライアント600、I/Oサーバ2,3、I/Oサーバ520、またはI/Oサーバ700に備えられる制御装置に対応してよい。この図が示すように制御装置800はCPU801、ROM(Read Only Memory)802、RAM(Random Access Memory)803、データベース804、通信モジュール805、ディスプレイ806等の各ハードウェアを備えたコンピュータであってよい。
【0087】
上述の制御装置は内部に、コンピュータシステムを有している。そして、上述したクライアントおよびI/Oサーバの動作は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムを1つまたは複数のコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD-ROM、DVD-ROM、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【0088】
上記制御装置の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上記制御方法を行ってもよい。ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
【0089】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、上記プログラムは、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0090】
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0091】
この出願は、2020年3月18日に出願された日本国特願2020-047913号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【0092】
本発明は、クライアント、I/Oサーバ、方法、および記録媒体に適用してもよい。
【符号の説明】
【0093】
1・・・クライアント
2・・・I/Oサーバ
3・・・I/Oサーバ
4・・・高速ディスク装置
5・・・高速ネットワーク
11・・・NW処理機構
12・・・インターコネクト
21・・・I/O処理機構
22・・・インターコネクト
41・・・ディスクコントローラ
42・・・I/O機構
43・・・ディスク
44・・・インターコネクト
111・・・NW処理機構#0
112・・・NW処理機構#1
510・・・クライアント
511・・・通信経路決定部(通信経路決定手段)
512・・・I/O要求発行部(I/O要求発行手段)
513・・・受信部(受信手段)
514・・・送信部(送信手段)
520・・・I/Oサーバ
521・・・経路情報決定部(経路情報決定手段)
522・・・送受信命令発行部(送受信命令発行手段)
523・・・受信部(受信手段)
524・・・送信部(送信手段)
530・・・記録装置
531・・・ディスクコントローラ
532・・・I/O機構
533・・・記録ディスク
600・・・クライアント
610・・・受信部
620・・・通信経路決定部(通信経路決定手段)
630・・・I/O要求発行部(I/O要求発行手段)
700・・・I/Oサーバ
710・・・送信部(送信手段)
800・・・制御装置
804・・・データベース
805・・・通信モジュール
806・・・ディスプレイ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14A
図14B
図15
図16
図17
図18
図19
図20
図21
図22