Linuxクラスター

Linuxクラスター（リナックスクラスター）は、Linuxを利用しているコンピュータ・クラスターである。一般に疎結合クラスターで、対称型マルチプロセッシング (SMP) が、CPUとメモリをより密に繋いでいるのに比べると、クラスターの結合は疎である。クラスターの各要素は、完全に独立したコンピュータとして動作しており、高速なLANなどを利用してお互いに接続されている。

要素となるマシンはLinuxないしGNU/Linuxを搭載したコンピュータである。

Linuxを動作させるために必要なハードウェアは、ごく一般的なパーソナルコンピュータでよいため、手軽にスーパーコンピュータを作り始められることが特徴である。また、Linuxはスケーラビリティに優れ、高速のコンピュータ上でも動いている。このため、低速な環境でシステムを構築してから、徐々に高速なコンピュータ環境に向かって進化させることが出来る。

また、各コンピュータを繋ぐのには標準的なLANを使っているため、接続のハードウェアや技術、ソフトウェアは、従来の物を使うことが出来る。ハードウェアの製作やメンテナンスに特別な部品や技術を使う必要はない。

Linuxは、オペレーティングシステム (OS) のソースコードを始め全ての必要なソフトウェアをソースコードも含めて無料で手にいれることができる。そのため、利用者や研究者が必要に応じてあらゆる部分に手を加えることが出来るのが大きな特徴である。また、使用に当たってコンピュータ毎に支払うOSのライセンス料もない。したがって投資に必要なのはハードウェアなどの物理的な資源と人件費だけということになる。参照：フリーソフトウェア、コピーレフトなソフトウェア。

クラスターの目的 
Linuxクラスターを作る目的としては、
高速な計算処理
大量の処理要求への対応
安定性や信頼性
などの場合があり、目的に応じて使われる技法も異なる。

高速な計算処理を目的とする場合 
ごく普通のパーソナルコンピュータを多数(場合によっては数百から数千)、高速のネットワークで繋いで、いわゆるスーパーコンピュータとしての性能を出せることから、場合によっては通常のスーパーコンピュータの性能を10分の1以下の予算で作ることができる。また、研究者が自分達でも作れることから結構流行した。

マイクロプロセッサの進歩により高速のコンピュータが作られ、高速のイーサネットによりごく一般的なネットワークの手法でコンピュータ間を接続できることが、Linuxクラスターをもたらした。また、高速のイーサネットを更に複数並行して接続し更に高速なLANを構築する技法も完成されている。現状では転送速度がギガビット/秒のイーサネットが使われることが多い。

非常に高速な処理をする専用のクラスターを構成する場合は、以下の例で示す Beowulf の技法を使って実現されることが多い。

要素になるコンピュータを個人用のデスクトップや他の目的のサーバにも使い、その余剰の計算能力をお互いにわかちあうような場合には、以下の例で示す MOSIX を使う場合がある。

大量の要求への対応を目的とする場合 
ウェブサーバなど、インターネット全体から大量の要求が同時に発生し、秒のオーダーで結果を返す必要がある。

このための技法には多くの例がある。以下の例で述べる MOSIX もその目的で使うことが出来る。

ちなみに、世界最大のコンピュータ・クラスターを保有すると言われているインターネットの検索エンジンのグーグルは、Linuxクラスターでできている。Googleのコンピュータ・クラスターを参照。

安定性や信頼性を目的とする場合 
この場合は、複数のコンピュータが同じ処理をして、結果を比較しあって異常な結果が出ることを防いだり、通常は別の処理をしているコンピュータの集合から一台が異常になっても、自動的に他の残りのコンピュータが処理を補うような場合である。

この章は全くのスタブです。

Linuxクラスターの作り方 
普通のパーソナルコンピュータで作ることができ、必要なソフトウェアはソースコードも含めて全て無料で手に入り、作るのに必要な情報はほとんどウェブ上で即座に無料で手にいれることが出来るフリーソフトウェアまたはコピーレフトのソフトウェアである。

実際にハードウェアを使って作る場合と、クラスター用ソフトウェアの構築や開発のために仮想コンピュータ上に構築する場合がある。

実ハードウェア上の構築 
この章は全くのスタブです。

仮想コンピュータ上の構築 
単にソフトウェアの構築の実験や開発をするだけなら、Linux用の仮想コンピュータを利用できる。仮想コンピュータは一台の実際に存在するコンピュータを使って、その中に複数のコンピュータを作り出すことが出来る。利用する側から見ると(感じると)全く複数のコンピュータが存在するように見える。実際のコンピュータの資源が許す限り何台でも仮想コンピュータを作ることが出来る。

また、特にi386系のLinuxに限るならば、Linux上で複数の仮想のLinux環境を作り出すためのソフトウェアがカーネルの一部を含め、ユーザーモードLinux (UML - User Mode Linux)として提供されている。UMLの一部は既に一般のLinuxに含まれて配付されているため、UMLのソフトウェアを手にいれたら手間を必要とせずに即座に複数の仮想環境を用意することが出来る。UMLもやはり無料でソースコードを手にいれることができる。

また、VMwareなど商用の仮想機械ソフトウェアも用意されている。

以下の例の中に構成するのに必要なソフトウェアや手順が紹介されているので、UML上でクラスターの構築の実験が出来る。(作ったらレポートはウィキペディア日本語版に報告されるのが標準的な方法だと主張される場合もある)。

使用するソフトウェアや技法の例 
Beowulf（方式）Linuxを使ったコンピュータ・クラスターとして有名。Linux以外のカーネルのソースコードが公開されているフリーのUNIXでも作られる。クラスターを構成するコンピュータはクラスターとしての処理だけに使われる。各コンピュータは高速の専用のネットワークで接続される。"Beowulf"と呼ばれるソフトウェアパッケージはなく、Beowulfを構成するに当たってそれぞれ使うソフトウェアは異なり特に必要な要素となるソフトウエアの部品はない。
bproc (Beowulf Distributed Process Space) Beowulfクラスター上でリモートプロセスを起動するためのツール群。マスターノード上で起動されたプロセスがVMADumpによりスレーブノードにコピーされる。スレーブノードはカーネルと必要最小限のライブラリのみをブート時にダウンロードするディスクレス構成。NASAのBeowulfプロジェクトで開発され、現在はロスアラモス国立研究所のクラスターPink（2048CPU）にも採用されている。
SCore（方式/ソフトウェア）BeowulfがアメリカのNASA主導で策定され、検証された方式/プロジェクトであった様に、1992年から通商産業省主導による新情報処理開発機構(RWCP)にて開発されたクラスター計算機用超並列プログラム実行環境を含むクラスター方式。
MOSIX（ソフトウェアパッケージ）Beowulfクラスターではない。一般のデスクトップコンピュータも時間を制限してクラスターの一部として参加させることが出来る。プロセス単位で走る通常のLinux用ソフトウェアを改造なしてクラスター上で処理させることが出来る。参加するコンピュータはx86系のCPUを使っていれば、まちまちの仕様のコンピュータでも構わない。スレッドレベルの処理はサポートしていない。
グリッド・コンピューティングインターネットなどの広域で共有されたネットワーク上でコンピュータ資源(処理能力、記憶能力)を共有する仕組み。模索中であるが、商用のサービスが行われ始めている。Globusツールキットが事実上の標準になりつつある。特にLinuxとは限定していない。

関連項目 
スーパーコンピュータ
並列コンピュータ
コンピュータ・クラスター

外部リンク 
連載記事 Linuxクラスタリングへの招待（@IT）

Linux
スーパーコンピュータ