JP3563907B2 - 並列計算機 - Google Patents
並列計算機 Download PDFInfo
- Publication number
- JP3563907B2 JP3563907B2 JP01619697A JP1619697A JP3563907B2 JP 3563907 B2 JP3563907 B2 JP 3563907B2 JP 01619697 A JP01619697 A JP 01619697A JP 1619697 A JP1619697 A JP 1619697A JP 3563907 B2 JP3563907 B2 JP 3563907B2
- Authority
- JP
- Japan
- Prior art keywords
- file
- nodes
- node
- logical
- secondary storage
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Description
【発明の属する技術分野】
本発明は,複数の計算ノードがネットワークで接続された並列計算機に関し,特に大容量のデータを格納するファイルシステムを持つ並列計算機に関する。
【0002】
【従来の技術】
近年,科学技術計算等の分野において,大量のデータを高速に入出力することが可能な計算機システムが求められている。また,並列処理技術の成熟に伴い,並列計算機においてプログラムを並列化することによって,処理時間の短縮を図ることが行われている。しかし,並列計算機上で動作するプログラムにおいて大量のデータ入出力を行う場合には,データ入出力処理が処理全体のボトルネックとなってしまう。したがって,このようなプログラムの性能を向上させるためには,データ入出力処理を高速化することが重要である。
【0003】
従来の並列計算機システムにおいては,単一のディスク記憶装置もしくは複数のディスク記憶装置を一つのノード(計算機)に接続して,この入出力用のノード(以下,I/Oノードという)をファイルサーバとして使用していた。
【0004】
このI/Oノードでは,他のノードからファイル入出力要求を受け付け,ディスク記憶装置との間で入出力を行い,結果を要求の発行元へ返す。しかし,単一のI/Oノードの通信能力,CPU能力,I/O能力には限界があり,大容量のファイル入出力要求が発行された場合や,多数のノードから同時に入出力要求が発行された場合には,性能の低下が避けられなかった。
【0005】
【発明が解決しようとする課題】
従来技術では,並列計算機上で大容量の入出力を必要とするアプリケーションプログラムを同時に実行させると,I/Oノードにおける入出力処理がシステム全体のボトルネックとなり,性能が低下するという問題点があった。
【0006】
本発明は上記問題点を解決し,並列計算機上に複数のI/Oノードを用意し,一つの論理的なファイルを複数のI/Oノード上に分散配置することにより,大容量入出力処理においてもI/Oノードの負荷を軽減し,入出力処理の性能向上,ひいてはシステム全体の性能向上を図ることを目的とする。
【0007】
【課題を解決するための手段】
図1は本発明の概要説明図である。
図1において,1a〜1cはそれぞれCPUおよび主記憶装置を有する計算ノード,2は各計算ノードに対して共通のファイルアクセス機能を提供するネットワークファイルシステム,21は一つの論理的なファイルを表すメタファイル,22はファイルの実体を格納するノードのリストを指定する構成ファイル,31,32は入出力処理を分担するI/Oノード,4はネットワーク,51は計算ノードから一つの論理的なファイルとして扱われる論理ファイル,52a〜54a,52b〜54bはそれぞれ論理ファイル51の実体を分割して格納するパーティションファイル,61,62は磁気ディスク装置等の二次記憶装置を表す。
【0008】
第1の発明は,複数の計算ノード1a〜1cがネットワーク4で接続された並列計算機において,ネットワーク4に接続される複数の計算ノード1a〜1cまたは他のI/Oノード31,32に接続される複数の二次記憶装置61,62と,計算ノード1a〜1cが処理するデータを保持するための一つの論理的なファイルである論理ファイル51を,複数の二次記憶装置61,62に分割して格納するパーティションファイル52a〜54a,52b〜54bと,計算ノード1a〜1cによる論理ファイル51に対する入出力要求に対して,複数の二次記憶装置61,62上のデータを並行して入出力するファイル操作手段であるネットワークファイルシステム2を備えることを特徴とする。
【0009】
この発明によれば,従来一つのノード上の二次記憶装置に格納されていたファイルを,複数のI/Oノード31,32上の二次記憶装置61,62にパーティションファイル52a〜54a,52b〜54bとして分割して格納するため,各I/Oノード31,32の入出力処理は並行して行うことができ,ファイルの入出力の性能を向上させることが可能である。
【0010】
特に第1の発明は,一つの論理ファイル51を表すメタファイル21を有し,ネットワークファイルシステム2は,ファイル操作時にメタファイル21を参照することにより,論理ファイル51と各I/Oノード31,32上に格納されているファイルの実体であるパーティションファイル52a〜54a,52b〜54bとを結び付けてファイルにアクセスするように構成されていることを特徴とする。
【0011】
このようにすると,利用者のアプリケーションプログラム等は,論理ファイル51が複数の実体から構成されることを意識することなく,あたかも実体が一つであるかのようにして使用することができる。
【0012】
また,第1の発明は,さらにメタファイル21がすべての計算ノード1a〜1cから参照可能な二次記憶装置上に設けられていることを特徴とする。こうすることにより,ある計算ノードで作成した並列ファイル(論理ファイル51)を,他の計算ノードでも利用することが可能になる。さらにまた,論理ファイル51の生成時に,そのファイルの実体を格納するI/Oノード31,32等のリストを指定する構成ファイル22を持つことを特徴とする。こうすることにより,システム構成の変化に対応して,容易にI/Oノード構成を変更することが可能である。
【0013】
第2の発明は,上記第1の発明の構成に加えて,論理ファイル51の生成時に,その論理ファイル51の実体を分割するストライプ数を指定する手段を有することを特徴とする。こうすることにより,アプリケーションプログラムの開発者,管理者,利用者等は,ファイルサイズ,アプリケーションの性質等を考慮して,ファイル毎に最適なストライプ数を設定することができる。
【0014】
第3の発明は,上記第1の発明の構成に加えて,論理ファイル51の生成時に,その論理ファイル51の実体を分割するデータ長(ストライプ幅)を指定する手段を有することを特徴とする。こうすることにより,アプリケーションプログラムの開発者,管理者,利用者等は,ファイルサイズ,アプリケーションの性質等を考慮して,ファイル毎に最適なストライプ幅を設定することができる。
【0016】
第4の発明は,上記第1の発明の構成に加えて,さらに論理ファイル51の生成時に,そのファイルの実体を格納するノードを構成ファイル22が保持するノードのリスト中からランダムに選択し,その選択されたノードから分割数分のノードを抽出する手段を有することを特徴とする。こうすることにより,作成する並列ファイル毎に使用するI/Oノードが異なることになり,特定のI/Oノードに負荷が集中することを避けることが可能になる。
【0017】
第5の発明は,上記第1の発明の構成に加えて,論理ファイル51の生成時に,そのファイルの実体を格納する各I/Oノード31,32のパーティションファイル52a,52b,…のファイル名に,各計算ノード1a〜1cのサイト名,プロセスIDまたは時間もしくは順序情報を付加することを特徴とする。乱数等を使ってパーティションファイル名を決定すると,異なる論理ファイルのパーティションファイル名が重複してしまう可能性があるが,こうすることにより,パーティションファイル名の重複を避けることが可能である。
【0018】
第6の発明は,上記第1の発明の構成に加えて,ネットワークファイルシステム2のファイル操作手段が,あらかじめ設定された環境変数の値によって論理ファイル51の並列ファイルを操作するか通常の物理ファイル(非並列ファイル)を操作するかを区別するようにしたことを特徴とする。こうすることにより,非並列ファイル,並列ファイルのいずれを扱う際も共通のプログラムを利用することが可能であり,プログラムの修正は不要である。
【0019】
第7の発明は,上記第1の発明の構成に加えて,論理ファイル51のオープン処理時に,複数の計算ノード1a〜1cのうちの代表となる計算ノード(マスタ)のみが論理ファイル51の実体を格納する二次記憶装置61,62を有するI/Oノード31,32との通信処理を行い,同じ論理ファイル51を使用する他の計算ノード(スレーブ)は,代表となる計算ノードから結果を受け取るようにしたことを特徴とする。
【0020】
このように,オープン処理において,マスタの計算ノードのみが代表してI/Oノード31,32と通信することにより,計算ノード1a〜1cとI/Oノード31,32間の通信量を削減することが可能であり,システム全体の性能向上を図ることができる。
【0021】
第8の発明は,上記第1の発明の構成に加えて,計算ノード1a〜1c上にルート権限の仲介プロセスを有するとともに,I/Oノード31,32上にルート権限のデーモンプロセスを有し,計算ノード1a〜1c上のユーザプロセスは,仲介プロセスおよびデーモンプロセスを経由して,I/Oノード31,32上に入出力用サーバプロセス(以下,I/Oサーバプロセスという)を起動して,論理ファイル51の実体にアクセスするようにしたことを特徴とする。
【0022】
こうすることにより,ファイルのアクセス権限を持たないユーザが,偽のメッセージをI/Oサーバプロセスへ送って,ファイルをアクセスすることを防ぐことができる。
【0023】
第9の発明は,上記第8の発明の構成に加えて,さらに計算ノード1a〜1c上に監視用デーモンプロセスを有し,論理ファイル51を操作中にユーザプロセスが異常終了すると,監視用デーモンプロセスは,ユーザプロセスの異常終了を検出し,I/Oノード31,32上のデーモンプロセスに入出力要求のキャンセルを依頼し,依頼されたデーモンプロセスは,I/Oサーバプロセスを強制終了させるように構成されていることを特徴とする。
【0024】
こうすることより,ユーザプロセスが並列プロセスを操作中に異常終了した場合に,対応するI/Oサーバプロセスも終了させることが可能である。この機構がないと,無駄なI/Oサーバプロセスが永遠に生き残ってしまい,I/Oノードの負荷が増大してしまう。
【0025】
【発明の実施の形態】
以下,図面を参照しながら,本発明の実施の形態を説明する。
例えば,図1に示すように,データ処理用の計算ノードが3台(計算ノード1a〜1c),データ入出力用のI/Oノードが2台(I/Oノード31,32)がネットワーク4に接続されて,並列計算機が構成されているものとする。I/Oノード31,32には,磁気ディスク装置等の大量のデータを格納するための二次記憶装置61,62が接続されている。データ入出力用のI/Oノード31,32は,データ処理用の計算ノード1a〜1cとは別に専用で設けられるほうが入出力処理の高速化のために望ましい。しかし,システムによっては計算ノードがI/Oノードの機能を兼ね備えていてもよい。
【0026】
本発明では,一つの論理ファイル51を複数のI/Oノード31,32上の二次記憶装置61,62に分割して格納する。その論理ファイル51に対して入出力を行いたい計算ノード1a〜1cでは,ネットワークファイルシステム2が提供する機能を利用し,ネットワーク4を介して各I/Oノード31,32に入出力要求を発行する。
【0027】
また,本システムでは,一つの論理ファイル51を表すメタファイル21が設けられる。図2にそのメタファイル21の形式例を示す。
メタファイル21には,例えば図2(A)に示すように,論理ファイルであることを示す識別情報(spfsfile),ストライプ数(ファイル分割数),ストライプ幅(分割するデータ長),I/Oノード名,実体のファイル名(各パーティションファイル52a〜54a,52b〜54bの名前)に関する情報が格納されている。なお,spfsは,Scalable and Parallel File System の略である。
【0028】
図2(B)は,論理ファイル51のデータ分割例を示しており,第1〜第nのI/Oノード(図1では,I/Oノード31,32)に対して,指定されたストライプ幅のデータ長分ずつそれぞれ順番にパーティションファイルとしてデータが割り当てられる様子を示している。
【0029】
ファイルを操作するときには,ネットワークファイルシステム2によってこのメタファイル21を参照することにより,ファイルの実体,すなわちパーティションファイル52a〜54a,52b〜54bにアクセスすることができる。
【0030】
図3は,mytestという名前のメタファイル21を,各計算ノード1a,1bが参照する様子を示している。ネットワークファイルシステム2によって,メタファイル21を格納した二次記憶装置を,ファイル操作を必要とするすべての計算ノード1a〜1cから参照できるようにしている。このメタファイル21の名前“mytest”は,実質的に論理ファイルの名前となる。ファイルの実体(実際のデータ)は,指定されたストライプ数,ストライプ幅に応じてパーティションファイル52a,52bとして分割して保存される。
【0031】
図4は,各計算ノード上で動作するアプリケーションプログラムが並列ファイル生成時に,分割する数(ストライプ数)を指定する命令記述の例を示している。図4に示すように,spfs_open関数において,生成する論理ファイルの名前(filename)と,ストライプ数(stripe_no)を指定すると,ネットワークファイルシステム2では,指定された数に応じたパーティションファイル52a〜54a,52b〜54bを作成する。この命令記述では,処理結果の値が変数err に返却される。
【0032】
図5は,各計算ノード上で動作するアプリケーションプログラムが並列ファイル生成時に,分割するデータ長(ストライプ幅)を指定する命令記述の例を示している。図5に示すように,spfs_open関数において,生成する論理ファイルの名前(filename)と,ストライプ幅(stripe_size)を指定すると,ネットワークファイルシステム2では,指定されたストライプ幅に従ってファイルを分割する。この命令記述では,処理結果の値が変数err に返却される。
【0033】
図6は,図1に示す構成ファイル22の形式例を示す。
システム管理者は,あらかじめ規定されたディレクトリに構成ファイル22を用意する。構成ファイル22には,ファイルの実体(パーティションファイル52a,52b,…)を格納するI/Oノード31,32のリストと,パーティションファイルのプレフィックス名を指定する。ネットワークファイルシステム2では,この構成ファイル22を参照してパーティションファイル52a,52b,…を作成するI/Oノードを決定する。構成ファイル22は,システム全体に一つだけあらかじめ定められた特定のファイル名で用意される。
【0034】
図7は,パーティションファイルを設けるI/Oノードを決定する処理の例を示している。
計算ノード1a〜1c上で動作するアプリケーションプログラム中で論理ファイル51の生成を要求する命令が発行されると,ネットワークファイルシステム2では,構成ファイル22を参照し,I/Oノード数を得て,0から(I/Oノード数−1)までの乱数jを算出する。次に,構成ファイル22のj番目のエントリから,ストライプ数(stripe_no個)分のI/Oノードを選び出し,それをパーティションファイルを設けるI/Oノードのリストとする。
【0035】
図8は,パーティションファイル名を付与する処理の例を示している。
計算ノード1a〜1c上で動作するアプリケーションプログラム中で論理ファイル51の生成を要求する命令が発行されると,その延長でネットワークファイルシステム2は,I/Oノード31,32上にパーティションファイル52a,52b,…を作成する。各パーティションファイル52a,52b,…のファイル名は,ネットワークファイルシステム2が自動的に生成するが,その際にシステム管理者が記述した構成ファイル22に書かれたファイルのプレフィックス名を使用し,そのプレフィックス名の後に計算ノードのサイトID,プロセスID,現在時刻,シーケンスカウントを付加したものをパーティションファイル名として使用する。なお,サイトIDは,各ノードのマシンにあらかじめ付加された識別子である。シーケンスカウントは0から始まり,パーティションファイルを一つ生成する毎に増加する。
【0036】
図9は,並列ファイルを識別する処理の例を示す。
プログラム利用者は,ファイル操作を行うプログラムを実行する前に,特定の環境変数(ここではこの環境変数名をSPFSとして説明する)に,“yes”(値=1)か“no”(値=0)を設定しておく。プログラム中に並列ファイル操作命令が存在すると,ネットワークファイルシステム2では,この環境変数SPFSを調べ,“yes”であれば指定されたファイルは,分割された複数のパーティションファイルからなる並列ファイルであるとみなし,そのファイル操作を行う。また,“no”であれば,指定されたファイルは通常の非並列ファイルであるとみなし,そのファイル操作を行う。
【0037】
図10は,論理ファイルのオープン処理時の通信の例を示す図である。なお,図10の例では,I/Oノードが3台あるものとしている。
計算ノード1a〜1c上で動作する並列プログラムにおいて,複数のプロセスで一つのファイルを共用する際,同時にファイルのオープン(open)命令が発行される。ネットワークファイルシステム2(図10では図示せず)では,openを発行したプロセス間で同期を取り,例えば計算ノード1bの代表のプロセス(マスタプロセスという)のみがファイルの存在するI/Oノード31,32,33へオープン処理のためのメッセージを送る。
【0038】
各I/Oノード31,32,33では,計算ノード1b上のマスタプロセスからメッセージを受け取ると,該当するパーティションファイルのオープン処理を行い,結果を計算ノード1b上のマスタプロセスへ返す。マスタプロセスは,その結果を他の計算ノード1a,1c上のプロセスへ通知する。このように,マスタプロセスのみが代表してI/Oノードと通信することにより,計算ノード1a〜1cとI/Oノード31〜33間の通信量を削減することが可能であり,システム全体の性能向上を図ることができる。
【0039】
図11は,論理ファイルに対するアクセス権限のチェックのための機構を示す図である。
図11に示すように,デーモンプロセス71が,各I/Oノード3上にルート権限で実行される常駐プロセスとして用意される。マスタのユーザプロセス11は,論理ファイル(並列ファイル)のオープン時に,fork命令(例えばUNIXシステムの場合)などにより,計算ノード1上に仲介プロセス12を生成する。
【0040】
仲介プロセス12には,setuidビットが設定されており,ルート権限で動作する。ルート権限は,特権的なプロセスの実行資格である。仲介プロセス12は,特権ポートを使ってI/Oノード3上のデーモンプロセス71と通信する。デーモンプロセス71に送るデータは,ユーザプロセス11が通信に使うポート番号(ユーザプロセス11より通知されたもの)とユーザプロセス11のユーザ識別子(uid)とグループ識別子(gid)である。
【0041】
デーモンプロセス71は,I/Oサーバプロセス72の生成要求が一般ポートから要求されたものである場合,この要求を無視する。特権ポートから送られたものである場合には,指定されたユーザ識別子のI/Oサーバプロセス72をfork命令等により起動し,I/Oサーバプロセス72のポート番号を仲介プロセス12に返す。デーモンプロセス71は,それをユーザプロセス11に返す。ユーザプロセス11は,仲介プロセス12に通知したポートを使って,I/Oサーバプロセス72と通信する。
【0042】
I/Oサーバプロセス72は,登録されていないアドレス(サイトIDとポート番号)から入出力処理を依頼された場合,この要求を無視する。ここで登録されたアドレスとは,I/Oサーバプロセス72の生成時にデーモンプロセス71から通知されたユーザプロセス11(マスタ,スレーブ全て)のアドレスである。
【0043】
こうすることにより,ファイルのアクセス権限を持たないユーザが,偽のメッセージをI/Oサーバプロセス72へ送って,ファイルをアクセスすることを防ぐことができる。
【0044】
図12は,ユーザプロセスの異常終了時にI/Oサーバプロセスを強制的に終了させる機構の説明図である。
ユーザプロセス11が並列ファイルをオープンすると,ユーザプロセス11と計算ノード1上の監視用のデーモンプロセス13との間にコネクションが張られる。ユーザプロセス11が並列ファイルのクローズ時に,正常終了をデーモンプロセス13に伝え,コネクションを解消する。ユーザプロセス11が並列ファイルをクローズしないで終了すると,デーモンプロセス13がユーザプロセス11の異常終了を検出し,I/Oノード3上のデーモンプロセス72にI/Oサーバプロセス72のキャンセルを依頼する。I/Oノード3上のデーモンプロセス71は,まだI/Oサーバプロセス72が動いているなら,強制的にI/Oサーバプロセス72を終了させる。
【0045】
【実施例】
図13は,本発明の一実施例構成図であり,ネットワーク4上にCPUおよび主記憶装置を備えた複数のノードが接続された並列計算機を示している。
【0046】
ノードは,アプリケーションプログラム14a,14bを実行させる計算ノード1a,1bと,計算ノード1a,1bから要求されたファイルの入出力処理を専門に行うI/Oノード31,32の2種類に大別される。全計算ノード1a,1bは,並列ファイルのメタファイル21を格納するための二次記憶装置24を共用する。各I/Oノード31,32には,それぞれ並列ファイルのパーティションファイルを格納するための磁気ディスク装置等の二次記憶装置61,62が接続されている。
【0047】
アプリケーションプログラム14a,14bには,所定のファイルI/Oライブラリ(図示省略)がリンクされている。また,計算ノード1a,1bおよびI/Oノード31,32のいずれにも,デーモンプロセス13a,13b,71,73が常駐している。I/Oサーバプロセス72,74は,並列ファイルのオープン(open)時に生成され,クローズ(close)時に消滅する。
【0048】
図14は,並列ファイルのオープン時の計算ノード上の処理の流れを示している。
並列ファイルのオープン処理開始時に,まずステップS1では,同時にオープン(open)をかけた他のプロセスと同期を取る。次に,ステップS2では,構成ファイル22を読み込み,I/Oノード情報とファイルプレフィックス情報を入手する。以下,自ノードがマスタかスレーブかによって,処理が別れる(ステップS3)。
【0049】
自ノードがマスタである場合,ステップS4により,指定された名前のメタファイル21(論理ファイル名)が既に存在するかどうかを調べ,存在すればそのメタファイル21からパーティションファイル情報を読み込む。指定された名前のメタファイルが存在せず,かつファイルの生成(create)が指定されていれば,ステップS5において,新たなメタファイル21を作り,パーティションファイル情報をその中に設定する。
【0050】
ステップS6では,該当するI/Oノード31,32と通信し,createの場合,I/Oノード31,32上にパーティションファイルを生成する。もしくは,既にパーティションファイルが存在する場合には,そのすべてのファイルをオープンする。その後,ステップS7で,スレーブプロセスへオープン完了を通知する。
【0051】
自ノードがスレーブの場合,ステップS8において,マスタプロセスからオープン完了通知を受け取る。
上記ステップS6による処理において,I/Oノード31,32上では,デーモンプロセス71,73が,マスタの計算ノード1aまたは1bからのオープン要求メッセージを受け付け,メッセージの正当性を確かめた後にI/Oサーバプロセス72,74を生成し,パーティションファイルのオープン処理を行う。
【0052】
図15は,並列ファイルのライト(write)時の計算ノード上の処理の流れを示している。
ステップS11では,ユーザ(アプリケーションプログラム)が要求したファイルオフセットと書き込みデータ長とから,要求された書き込みデータがどのパーティションファイルに該当するかを計算し,それらの各パーティションファイルに対するI/O要求リストを作成する。
【0053】
次に,ステップS12では,各パーティションファイルごとにデータをユーザバッファからネットワークファイルシステム2が管理する転送用バッファへコピーする。
【0054】
その後,ステップS13では,各パーティションファイルが存在する該当I/Oノードへwrite要求を送る。複数のI/Oノードが該当する場合には,すべてのI/Oノードに対して並行してwrite要求を送る(ステップS14,S13)。
【0055】
その後,ステップS15において,writeの結果を各I/Oノードから受け取る。複数のI/Oノードに対してwrite要求を送った場合には,それらのすべてのI/Oノードからwriteの結果を受け取る(ステップS16,S15)。結果の受け取りがすべて終了した場合には,write処理を終了する。
【0056】
並列ファイルのリード(read)時の処理もほぼ同様であるので,その詳しい説明は省略する。
次に,ネットワークファイルシステム2が,並列ファイルのために,ファイルI/Oライブラリとして提供する関数の仕様について説明する。
【0057】
オープンの関数は,例えばC言語の形式で表すと,次のように定義される。
int spfs_open (const char *filename, int flag, mode_t mode,int ionno, long stripe_size,…)
この関数の入力情報において,filenameはファイル名である。
【0058】
flagはフラグであり,以下の情報を指定することができる。
SPFS_RDWR :リード/ライト
SPFS_RDONLY:リードオンリ(読み出しのみ)
SPFS_WRONLY:ライトオンリ(書き込みのみ)
SPFS_CREAT :ファイルを生成する。
【0059】
SPFS_TRUNC :既存ファイルをリード/ライトまたはライトオンリでオープンしたときにサイズを0にする。
modeはアクセスモードを表し,以下の情報の指定が可能である。
【0060】
SPFS_IRUSR :所有者はリード可能
SPFS_IWUSR :所有者はライト可能
SPFS_IRGRP :所有グループのメンバはリード可能
SPFS_IWGRP :所有グループのメンバはライト可能
SPFS_IROTH :他人もリード可能
SPFS_IWOTH :他人もライト可能
ionno はストライプ装置数を指定する。
【0061】
stripe_sizeはストライプ幅を指定する。
他にグループ内のプロセス数,プロセス識別子のリスト等を指定することもできるが,本発明の要旨には関係ないため説明を省略する。
【0062】
このオープン関数の出力として,ファイルハンドルの情報を返す。エラーが発生した場合には,−1の値を返す。なお,既存ファイルをオープンする場合には,入力情報のうち,アクセスモード,ストライプ装置数,ストライプ幅は無視される。
【0063】
クローズの関数は,次のように定義される。
int spfs_close(int fh)
このクローズ関数の入力のfhは,オープン時に通知されたファイルハンドルである。出力として,正常終了の場合には0を,エラーの場合には−1の値を返す。オープンを発行した全プロセスが,クローズを発行しなければならない。
【0064】
ライトの関数は,次のように定義される。
int spfs_write (int fh, char *buf, size_t size)
ここで入力情報のfhはファイルハンドル,buf はバッファ, sizeは転送長である。
【0065】
ライト関数の出力は,実際にライトした転送長であり,エラーが発生した場合には−1の値を返す。ファイルポインタは,実際にライトした転送長分進む。
リードの関数は,次のように定義される。
【0066】
int spfs_read(int fh, void *buf, size_t size)
ここで入力情報のfhはファイルハンドル,buf はバッファ, sizeは転送長である。
【0067】
リード関数の出力は,実際に読み込んだ転送長であり,エラーが発生した場合には−1の値を返す。ホールの取り扱いは,標準のUNIXシステム等と同様である。ファイルポインタは,実際に読み込んだ転送長分進む。
【0068】
シークの関数は,次のように定義される。
int spfs_seek(int fh, long long offset, int whence)
ここで入力情報のfhはファイルハンドル,offsetはオフセットを指定するものである。このオフセットの指定において,2Gバイトを超えるファイルの利用が可能である。
【0069】
whenceでは,以下の情報を指定することができる。
SPFS_SEEK_SET :ファイルの先頭からシークする。
SPFS_SEEK_CUR :現ファイルポインタからシークする。
【0070】
シーク関数の出力として,正常終了の場合には0を,エラーが発生した場合には−1の値を返す。
他に,I/Oの完了を待たない非同期のリード関数spfs_aread,I/Oの完了を待たない非同期のライト関数spfs_awrite,またこれらの非同期I/Oに対してI/Oの完了を確認するためのウエイト関数spfs_await 等の関数が用意されている。また,エラーが発生した場合に,その詳細なエラーの種類を取得するための関数も用意されている。
【0071】
次に,メタファイルの具体的な構成例について説明する。
並列ファイル(論理ファイル)は,複数のUNIXファイルで構成される。指定されたファイルの実体(パーティションファイル)がどこに存在するかは,指定されたファイル名を持つメタファイルの中に保存する。
【0072】
以下の例の場合,ファイルmytestは,ストライプ数が2で,ストライプ幅が16Kバイト,apnet0002 とapnet0003 のノード上の二つのパーティションファイルから構成されていることを示している。
【0073】
並列ファイルを生成するI/Oノードは構成ファイル(configファイル)で指定する。以下の例の場合,ファイルはapnet0002 とapnet0003 の上に作られ,指定されたパス名プレフィックスが付加される。
【0074】
【0075】
【発明の効果】
以上説明したように,本発明によれば,複数のI/Oノードを使用して大容量入出力を高速に処理することが可能であり,並列アプリケーションプログラムの入出力(I/O)待ち時間の短縮,ひいてはシステム全体の性能向上に寄与するところが大きい。
【図面の簡単な説明】
【図1】本発明の概要説明図である。
【図2】メタファイルの形式例を示す図である。
【図3】メタファイルを各計算ノードが参照する様子を示す図である。
【図4】並列ファイル生成時のストライプ数の指定の例を示す図である。
【図5】並列ファイル生成時のストライプ幅の指定の例を示す図である。
【図6】構成ファイルの形式例を示す図である。
【図7】パーティションファイルを設けるI/Oノードを決定する処理の例を示す図である。
【図8】パーティションファイル名を付与する処理の例を示す図である。
【図9】並列ファイルを識別する処理の例を示す図である。
【図10】論理ファイルのオープン処理時の通信の例を示す図である。
【図11】アクセス権限のチェックのための機構を示す図である。
【図12】ユーザプロセスの異常終了時にI/Oサーバプロセスを強制的に終了させる機構の説明図である。
【図13】本発明の一実施例構成図である。
【図14】並列ファイルのオープン時の計算ノード上の処理の流れを示す図である。
【図15】並列ファイルのライト時の計算ノード上の処理の流れを示す図である。
【符号の説明】
1a,1b,1c 計算ノード
2 ネットワークファイルシステム
21 メタファイル
22 構成ファイル
31,32 I/Oノード
4 ネットワーク
51 論理ファイル
52a〜54a,52b〜54b パーティションファイル
61,62 二次記憶装置
Claims (9)
- 複数の計算ノードがネットワークで接続された並列計算機において,
前記ネットワークに接続される複数の計算ノードまたは他の入出力用のノードに接続される複数の二次記憶装置と,
前記二次記憶装置が接続される計算ノードまたは他の入出力用のノードのすべてのノードのリスト情報が格納された構成ファイルと,
前記計算ノードが処理するデータを保持するための一つの論理的なファイルが保持するデータを,前記構成ファイルに格納されたノードのリスト情報から選択された複数のノードにそれぞれ接続される複数の二次記憶装置に分割して格納する手段と,
すべての前記計算ノードから参照可能な二次記憶装置上に設けられ,前記一つの論理的なファイルが保持するデータの前記複数の二次記憶装置への分割情報を保持するメタファイルと,
前記計算ノードによる前記論理的なファイルに対する入出力要求に対して,前記複数の二次記憶装置上のデータを並行して入出力するファイル操作手段とを備え,
前記ファイル操作手段は,ファイル操作時に前記メタファイルを参照することにより,論理的なファイルと前記複数の二次記憶装置上に格納されている当該論理的なファイルが保持するデータとを結び付けてデータにアクセスするように構成された
ことを特徴とする並列計算機。 - 請求項1記載の並列計算機において,
前記論理的なファイルの生成時に,論理的なファイルを分割する数を指定する手段を有する
ことを特徴とする並列計算機。 - 請求項1記載の並列計算機において,
前記論理的なファイルの生成時に,論理的なファイルを分割するデータ長を指定する手段を有する
ことを特徴とする並列計算機。 - 請求項1記載の並列計算機において,
前記論理的なファイルの生成時に,前記一つの論理的なファイルが保持するデータを格納する複数の二次記憶装置を決定する際に,前記構成ファイルに格納されたノードのリスト情報中のランダムに選択されたノードから分割数分のノードを抽出し,それらのノードに接続される複数の二次記憶装置を,前記データを格納する二次記憶装置として決定する手段を有する
ことを特徴とする並列計算機。 - 請求項1記載の並列計算機において,
前記論理的なファイルの生成時に,ファイルの実体を格納する各ノードのパーティションファイルのファイル名に,前記計算ノードのサイト名,プロセスIDまたは時間もしくは順序情報を付加することにより,ファイル名の重複を防ぐようにした
ことを特徴とする並列計算機。 - 請求項1記載の並列計算機において,
前記ファイル操作手段は,あらかじめ設定された環境変数の値によって前記論理的なファイルを操作するか通常の物理ファイルを操作するかを区別するようにした
ことを特徴とする並列計算機。 - 請求項1記載の並列計算機において,
前記論理的なファイルのオープン処理時に,前記複数の計算ノードのうちの代表となる計算ノードのみが前記論理的なファイルを格納する二次記憶装置を有するノードとの通信処理を行い,同じ論理的なファイルを使用する他の計算ノードは,前記代表となる計算ノードから結果を受け取るようにした
ことを特徴とする並列計算機。 - 請求項1記載の並列計算機において,
前記計算ノード上にルート権限の仲介プロセスを有するとともに,前記論理的なファイルを格納する二次記憶装置を有するノード上にルート権限のデーモンプロセスを有し,
前記計算ノード上のユーザプロセスは,前記仲介プロセスおよび前記デーモンプロセスを経由して前記論理的なファイルを格納する二次記憶装置を有するノード上に入出力用サーバプロセスを起動して前記論理的なファイルにアクセスするようにした
ことを特徴とする並列計算機。 - 請求項8記載の並列計算機において,
前記計算ノード上に監視用デーモンプロセスを有し,
前記論理的なファイルを操作中にユーザプロセスが異常終了すると,前記監視用デーモンプロセスは,ユーザプロセスの異常終了を検出し,前記論理的なファイルを格納する二次記憶装置を有するノード上のデーモンプロセスに入出力要求のキャンセルを依頼し,
依頼されたデーモンプロセスは,前記入出力用サーバプロセスを強制終了させる
ことを特徴とする並列計算機。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP01619697A JP3563907B2 (ja) | 1997-01-30 | 1997-01-30 | 並列計算機 |
US08/902,157 US6065065A (en) | 1997-01-30 | 1997-07-29 | Parallel computer system and file processing method using multiple I/O nodes |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP01619697A JP3563907B2 (ja) | 1997-01-30 | 1997-01-30 | 並列計算機 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10214257A JPH10214257A (ja) | 1998-08-11 |
JP3563907B2 true JP3563907B2 (ja) | 2004-09-08 |
Family
ID=11909766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP01619697A Expired - Fee Related JP3563907B2 (ja) | 1997-01-30 | 1997-01-30 | 並列計算機 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6065065A (ja) |
JP (1) | JP3563907B2 (ja) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7107395B1 (en) * | 1998-12-31 | 2006-09-12 | Emc Corporation | Apparatus and methods for operating a computer storage system |
US6920537B2 (en) * | 1998-12-31 | 2005-07-19 | Emc Corporation | Apparatus and methods for copying, backing up and restoring logical objects in a computer storage system by transferring blocks out of order or in parallel |
US6347341B1 (en) * | 1999-02-22 | 2002-02-12 | International Business Machines Corporation | Computer program product used for exchange and transfer of data having a siga vector and utilizing a queued direct input-output device |
GB2356473B (en) * | 1999-07-06 | 2001-11-28 | Matsushita Electric Ind Co Ltd | Real-time distributed file system |
US6519697B1 (en) | 1999-11-15 | 2003-02-11 | Ncr Corporation | Method and apparatus for coordinating the configuration of massively parallel systems |
US6745240B1 (en) | 1999-11-15 | 2004-06-01 | Ncr Corporation | Method and apparatus for configuring massively parallel systems |
US6418526B1 (en) | 1999-11-15 | 2002-07-09 | Ncr Corporation | Method and apparatus for synchronizing nodes in massively parallel systems |
US6412002B1 (en) * | 1999-11-15 | 2002-06-25 | Ncr Corporation | Method and apparatus for selecting nodes in configuring massively parallel systems |
US6741738B2 (en) * | 2000-03-13 | 2004-05-25 | Tms, Inc. | Method of optical mark recognition |
JP3557994B2 (ja) * | 2000-04-05 | 2004-08-25 | 日本電気株式会社 | ファイルデータ格納装置及び方法並びに記録媒体 |
CA2413434A1 (en) | 2000-06-26 | 2002-01-03 | International Business Machines Corporation | Data management application programming interface for a parallel file system |
US7991917B1 (en) | 2000-07-05 | 2011-08-02 | Mcafee, Inc. | High performance packet processing using a general purpose processor |
KR100343231B1 (ko) * | 2000-08-28 | 2002-07-10 | 전창오 | 클러스터 파일 시스템 및 시스템내의 매핑 방법 |
US7865485B2 (en) * | 2003-09-23 | 2011-01-04 | Emc Corporation | Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server |
US8244903B2 (en) * | 2003-12-22 | 2012-08-14 | Emc Corporation | Data streaming and backup systems having multiple concurrent read threads for improved small file performance |
JP4291281B2 (ja) * | 2005-02-03 | 2009-07-08 | 富士通株式会社 | 情報処理システム、計算ノード、情報処理システムの制御方法 |
US7779008B2 (en) * | 2005-02-16 | 2010-08-17 | Oracle International Corporation | Parallel partition-wise aggregation |
JP4640854B2 (ja) * | 2007-12-28 | 2011-03-02 | 株式会社日立製作所 | ディスクアレイ制御方法及びディスクアレイ制御装置 |
US8447938B2 (en) * | 2008-01-04 | 2013-05-21 | International Business Machines Corporation | Backing up a deduplicated filesystem to disjoint media |
US20090222509A1 (en) * | 2008-02-29 | 2009-09-03 | Chao King | System and Method for Sharing Storage Devices over a Network |
JP5288272B2 (ja) * | 2009-05-21 | 2013-09-11 | 日本電気株式会社 | I/oノード制御方式及び方法 |
JP5525798B2 (ja) * | 2009-11-20 | 2014-06-18 | 株式会社ニューフレアテクノロジー | 荷電粒子ビーム描画装置およびその帯電効果補正方法 |
JP2011159165A (ja) * | 2010-02-02 | 2011-08-18 | Fujitsu Ltd | 並列計算機システム、並列計算機システムの制御方法及び制御プログラム |
US9058334B2 (en) * | 2010-02-11 | 2015-06-16 | Emc Corporation | Parallel file system processing |
US9021229B2 (en) | 2010-04-14 | 2015-04-28 | International Business Machines Corporation | Optimizing a file system for different types of applications in a compute cluster using dynamic block size granularity |
JP2014157384A (ja) * | 2011-04-04 | 2014-08-28 | Hitachi Ltd | 並列化設計支援システム、プログラム、および方法 |
JP6382454B2 (ja) * | 2014-11-06 | 2018-08-29 | 華為技術有限公司Huawei Technologies Co.,Ltd. | 分散ストレージ及びレプリケーションシステム、並びに方法 |
CN110058792B (zh) * | 2018-01-18 | 2022-08-30 | 伊姆西Ip控股有限责任公司 | 扩大存储空间的方法、设备以及计算机程序产品 |
CN116795636B (zh) * | 2023-06-21 | 2024-02-13 | 广州市玄武无线科技股份有限公司 | 一种业务系统数据监控方法、装置、电子设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5403639A (en) * | 1992-09-02 | 1995-04-04 | Storage Technology Corporation | File server having snapshot application data groups |
US5649200A (en) * | 1993-01-08 | 1997-07-15 | Atria Software, Inc. | Dynamic rule-based version control system |
US5819061A (en) * | 1994-07-25 | 1998-10-06 | International Business Machines Corporation | Method and apparatus for dynamic storage reconfiguration in a partitioned environment |
US5768623A (en) * | 1995-09-19 | 1998-06-16 | International Business Machines Corporation | System and method for sharing multiple storage arrays by dedicating adapters as primary controller and secondary controller for arrays reside in different host computers |
US5862325A (en) * | 1996-02-29 | 1999-01-19 | Intermind Corporation | Computer-based communication system and method using metadata defining a control structure |
US5752042A (en) * | 1996-06-07 | 1998-05-12 | International Business Machines Corporation | Server computer for selecting program updates for a client computer based on results of recognizer program(s) furnished to the client computer |
US5857197A (en) * | 1997-03-20 | 1999-01-05 | Thought Inc. | System and method for accessing data stores as objects |
-
1997
- 1997-01-30 JP JP01619697A patent/JP3563907B2/ja not_active Expired - Fee Related
- 1997-07-29 US US08/902,157 patent/US6065065A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH10214257A (ja) | 1998-08-11 |
US6065065A (en) | 2000-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3563907B2 (ja) | 並列計算機 | |
US11436163B2 (en) | System and method for logical deletion of stored data objects | |
US6119118A (en) | Method and system for extending file system metadata | |
US6714949B1 (en) | Dynamic file system configurations | |
US7831643B1 (en) | System, method and computer program product for multi-level file-sharing by concurrent users | |
JP3790661B2 (ja) | アクセス制御システム | |
US6275867B1 (en) | Operation-partitioned off-loading of operations in a distributed environment | |
US5642501A (en) | Computer method and apparatus for asynchronous ordered operations | |
US7584228B1 (en) | System and method for duplication of virtual private server files | |
US8943279B1 (en) | System and method for toggling a storage system versioning feature | |
JPH06231022A (ja) | コンピュータシステムに用いる名前スペースの一部分を別の名前スペースの一部分として利用可能にするための装置及びその方法 | |
US8533170B1 (en) | System and method for determining the latest version of a stored data object | |
BG63374B1 (bg) | Метод за управление на компютърна система и компютърна система | |
US6865741B1 (en) | Determining completion of transactions processing in a dynamically changing network | |
EP3340099B1 (en) | Program operation monitoring control device, distributed object generation and management device, recording medium, and program operation monitoring system | |
US6418484B1 (en) | Method of remotely executing computer processes | |
US7689999B2 (en) | Sharing dynamically changing resources in software systems | |
JPH0622015B2 (ja) | データ処理システムの制御方法 | |
JP3138575B2 (ja) | フアイル複写移行方式 | |
Lewan et al. | The OSI file service | |
JPH1165895A (ja) | ロギングファイル管理システム及び管理方法 | |
JPH11232109A (ja) | クラスオブジェクトのロード方法 | |
JPH08320862A (ja) | 文書管理システム及び文書管理方法 | |
JP2001195292A (ja) | 電子ファイリングシステムおよび文書作成方法 | |
Burns et al. | Dynamic Evaluation of Complex Locking in Distributed Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040210 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040412 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040601 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040604 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090611 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100611 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110611 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120611 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120611 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130611 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |