realforce

Gamer Book

木曜日, 11月 10, 2005

強いコンピュータを作る

「強いコンピュータ」とは何でしょうか? 2極化するのであれば「高可動」もしくは「高信頼」となるでしょう。 今回は「高信頼」というモノについて考えてみたいと思います。

プログラムを組む場合、性能だけを求めれば、余計なデータチェックをしない、余計なサブルーチンコールや関数呼出を使わない、などの手法で高速に動作するように出来ます。しかし、データチェックをしなければトラブルも発生しやすくなりますし、その原因を見つけるのも大変な作業になるでしょう。また、サブルーチンコールや関数呼出を一切行わないで1本道のようなプログラムを組めば、見通しが非常に悪くなるのは明らかです。

つまり、「高性能」と「信頼性」は反比例すると言っても良いかもしれません。

ゲームのプログラムであれば、高速に動作することは必須です。 しかし、同じように医療の現場で使われるようなプログラムや、溶鉱炉を制御するプログラムなどであれば、確実に動作することが必須となります。 プログラムの動作ミスが人命に直結する可能性が高いのですから、当然と言えば当然の話です。

プログラムも大切ですが、信頼性を高める為には、それを動かすハードウェアも非常に大切です。 多くのシステム構築を依頼してくる人、つまりクライアントは、技術者がソフトウェアレベルで全てを解決してくれることを望む場合が非常に多いです。なぜなら、追加の予算を嫌い、「その場に居る人に解決してもらうのが一番安く済みそう」と考えてしまうからでしょう。しかし、実際問題としてハードウェア上で動くソフトウェアが、そのハードウェアを越えるような事は、どう頑張ってもありえない事なのです。そして、どうしてもソフトウェアだけでは補えない部分というモノがあります。停電や故障など、トラブルというモノは、いつか必ずやってきます。それは、この世に存在する限り、避けることの出来ない厄介な事象です。 その時、いかに損害を少なくし、いかにシステムダウンの時間を短くできるかは、そのシステムに関与する「技術者自身の信頼性」というものに直結することでしょう。

では、手っ取り早く、そして確実に、どうやってハードウェアの信頼性を高めるのか? よいハードウェア選び、そしてハードウェアの冗長化を行うことだと思います。

PCというものに限れば、以下の点をチェックすると良いかと思います。

  • 電源の2重化
    電源の故障は直ちにシステムの停止をもたらします。特にサーバーなどの24時間365日稼働するモノの場合、当然のように電源にも相当な負担がかかります。また、「停止しない」という条件の元で稼働しているでしょうから、「ちょっと調子が悪いから電源を落として修理や交換をする」という訳にもいかないでしょう。そのような場合は予め2重電源を使用しましょう。「サーバー屋」と呼ばれるメーカーの製品であれば始めから2器の電源ユニットが搭載されていることも少なくないと思いますし、最近では個人向けの2重化電源ユニットなども販売されていますので個人でも比較的簡単に利用できると思います。ただし、2重化電源と名乗っていても、ホットスワップに対応していない存在意義が不明な製品もありますので、購入の際には注意してください。
  • HDDの2重化
    これについてはRAIDを利用しましょう。と言ってもRAID0(stripe)では、逆効果ですので御注意を。私個人の話になりますが、IOデータのR-IDE2A-LEというハードウェアレベルのミラーリングユニットを家や会社で広く愛用しています。一般的なRAIDカードなどとは違い、これはOS側からはユニット自体が1つのハードディスクに見え、ドライバなどが不要なので、OSを特に選ばないという理由からです。だたし、1つのハードディスクに見え、OSを選ばないかわりにソフトウェアによる制御や異常検出が面倒(機器とCOMポートを繋いでモニタリングする必要があります)という側面もありますが。
  • 予備の機器
    ルータやハブ、ネットワークカード、ハードディスク、CPU、メモリなど、コンピュータ本体や各種パーツの予備を用意しておくと良いと思います。その際には、出来る限り、同じメーカーで、同じ型番で、同じ製造ロットであることが重要です。私の体験談となりますが、以前、ハードディスクが故障した際に、ホットスワップに使ったディスクがロットの違いで正常な状態に戻せなかった、という事がありました。このハードディスク自体は、メーカーと型番までは同じだったのですが、中国製とシンガポール製の2種類が混ざっており、微妙にLBAのサイズが違うというのが原因でした。
  • 予備のコンピュータ
    もっとも確実なのは、稼働中のコンピュータと、まったく同じ構成のコンピュータを用意しておくことかもしれません。サーバーという用途であれば、マルチホーミングやロードバランサと言った機器の導入が確実でしょうが、これらは大変高価なものなので、そこまで予算がないという場合はDNSレベルでラウンドロビンを行うだけでも結構違うと思います。

どんなことでも「備えあれば憂いなし」ですね。

posted by Xune @ 23:24   links to this post 0 comments

0コメント:

コメントを投稿

この記事へのリンク一覧:

リンクを作成 | バックリンクについて | バックリンク一覧

Previous Posts