2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

意外とためになる雑学講座!

B2Bサーバ

最近、B2Bと言う言葉を良く聞く。しかし、何だか普及しそうでしないような言葉である。
B2Bとは、Business-to-Businessの略である。意味合い的には、電子商取引の意味であるが名前から見るとかなりハッキリとした用語である。企業間の取引を意味している。
この「B2B」の普及における大きな阻害問題は、各企業個別のソフトウェア資産である。今まで企業間の取引は、そのお互いのソフトウェア資産の違いでスムースに行かないのではなかろうか?
さらに、他国間の取引に及ぶと言語の問題がある。国際化が常識のようになっている近年では言語の問題は大きな問題である。
このようなことから、B2Bに必要なのは”企業と企業の間に入り、データと言語をエクスチェンジして各企業が観覧可能なデータにする。”と言うことが理想である。B2Bサーバは、まさにデータエクスチェンジサーバである。最近の動向は、企業間のビジネスロジックを考えるとXMLを使う動きが進んでいる。

クラスタ

当たり前のことだが、人間がコンピュータを発明したのは計算効率・能力を向上させる目的があった。現在のコンピュータの原型は、その当時の軍事目的に使用されていたことは言うまでもない。
コンピュータの応用技術が進んだ今では、コンピュータが全く利用されていない産業を見つける方が難しいくらいである。特に、ハードウェアの進歩は著しいものがあり市販されているパソコンでさえ1GHzクロックCPU搭載マシンが買えるようになった。私が初めてコンピュータを購入したときには、Z80という8bitのCPUで8MHzクロックと言う今では想像も出来ないような品粗なマシンであった(しかし、その当時は画期的なものであった)。
ソフトウェアの進歩も著しいものがあり、簡単に3D画像をぐりぐり動かせるアプリが発売されている。3Dで言うと高速に画像を処理するニーズは増すばかりである。特に3Dレンダリング処理など、三次元的に物体を配置して光の屈折率や減衰率を計算して写真に近いリアルな絵画を求めると高速クラスのPCでも延々と時間がかかる。
CPUの内部機能にもよるが、今のクロック周波数の10倍の10GHzになったら事情は変わるであろう。
しかし、CPUは単純にクロック周波数だけでは真の高速処理は実現できない。1クロックでCPUの命令がいくつ実行できるかで本来の高速処理が実現できる。この問題に対してCPUメーカは課題として頭を抱えているはずである。
さらに、CPUのクロック周波数を上げるに従って強力な発熱・ノイズ発生の問題も見逃すことは出来ない。
もうこれ以上、CPUの進化は望めないのであろうか?
このような状況の中で、じゃあ1台より2台のPCさらに3台のPCのようにマシンを複数台つなげて計算処理の効率・性能向上を図る仕組みをクラスタと言う。しかし、クラスタは計算の高速処理のためだけに考案された仕組みではない。以下に説明する。

① フェイルオーバークラスタ

HA(High Availability)クラスタとも言う。
2台のコンピュータでディスクをSCSIケーブルやファイバーチャネルにより共有する形態である。共有ディスクにはたいていRAIDシステムが使用される。最もシンプルなクラスタである。
常に、主系となっているコンピュータが処理を行い、待機系のコンピュータは主系のコンピュータを監視している。主系がダウンしたと判断したときは、待機系が主系としてサービスを肩代わりする。動作上の見地から見て、この形態をホットスタンバイ形式と呼んでいる。

共有ディスク(RAIDシステム)がダウンしたり、ディスクとホスト間のケーブルが切断するとシステムが全滅する致命的欠点がある。

高級RAIDモデルにはケーブル断でも全滅を免れるため、SCSIコントローラやファイバーチャネルが二重化されているものがある。
ハードディスクに障害が起こった場合、自動的に予備のドライブに切り替わり、ホットスワップによって不具合のあるドライブを交換できるようにしておく。
フェイルオーバークラスタは、信頼性重視で1台の計算機の能力しか使わないため、コストパフォーマンスがかなり悪く、単一計算機システムの半分以下となる。2台の計算機の他に高級なRAIDシステムやクラスタソフトがさらに追加となるためである。さらに、マシンの設置場所にUPSが設置されていないとUPSの導入も必須となる。重要なシステムでは、電源系統二重化+サーバ専用UPS構成が望まれる。いくらサーバを二重化しても電源断でシステム全滅となるからである。

② スケーラビリティークラスタ

 クライアントからのサービスを複数のコンピュータで処理する。目的は、トランザクション処理の向上である。多くのクライアントからの処理要求があり、しかも運用後に増加することが解っている場合には最適なクラスタである。
先ほどのフェイルオーバークラスタでは1台分の能力を発揮できないが、このクラスタタイプならコンピュータを増設すればするほど多くのクライアントからの要求に対応できる。日本でLinuxの商用クラスタとしてTurboLinuxのClusterServerと言う製品が最初に出荷され、その後、他のディストリビューションからも次々と出荷されている。
このクラスタの場合、メッセージを分配しトラフィックを制御する機能を持ったノードと、メッセージを処理する機能を持ったサービスノードに分ける事が多い。メッセージを分配するノードがダウンするとシステムダウンとなるので、二重化するのが一般的である。
クラスタを構成しているコンピュータ(以後、ノードと呼ぶ)がダウンすると自動的に障害を検知し、異常になったノードにはクライアントからの要求が送信されないような機構(自動縮退)を備える。さらにオンライン中にサービスノードを増設して、クラスタ定義情報を更新すれば、システムを停止せずにトランザクション処理能力をアップできる。
逆に自動縮退機能を利用して、一つだけサービスノードを止めて保守点検や障害部品交換などの作業が出来る利点がある。ノードが回復したときには自動的にサービス開始となる。
スケーラビリティークラスタの応用系としてN対1バックアップ方式クラスタがある。1台のノードだけホットスタンバイ状態にしておき、オンライン中のノード異常を検出した時に切り替える方式である。障害や保守点検などのノードダウン時でも、本来のトランザクション処理能力の低下が許されない場合に適用される。サービスノードに予備ノードが追加された形態である。
最も効果的な適用分野は、インターネットサーバやデータベースサーバである。1トランザクションあたりの実行時間は短縮できないが多くのトランザクションを同時に処理するのに適している。

③ ロードバランシングクラスタ(科学技術計算向けクラスタ)

 前述のスケーラビリティークラスタでは、トランザクションの実行時間は短縮できない。トランザクションの待ち時間を短縮して、多くのエンドユーザへの均一なサービスを提供するのが目的である。
それに対して、短時間で答えを出したいという要求には、このロードバランシングクラスタが適している。
簡単には説明できないが、複数台のコンピュータが互いに協調しながら並列計算を行う仕組みである。計算式のロジックを眺めると、平行に計算できる部分がある。これらを複数台のノードに分散して計算すれば処理時間が短縮できる。

クラスタ応用コンピューティング

① HPC(ハイ・パフォーマンス・コンピューティング)

 ローカル環境でひたすら高速計算するコンピュータのこと。
自然現象のシュミュレーションや遺伝子や生物の構造解析などのめちゃくちゃ計算量が多い科学技術計算処理のことを言う。計算の目的は限定されないが、特に自然科学の現象を解明するための技術計算を指すことの方が多いようだ。
地球の気象、車の衝突シュミュレーション、実験コストが大きい現象の解析に用いることが多い。

② グリッドコンピューティング

 ネットワークを介して色々な人へリソースを提供するコンピュータのこと。
ネットワークを介して複数のコンピュータを結ぶことで仮想的に高性能コンピュータを作って、利用する人は必要なだけの処理能力や記憶させる容量等のリソースを使えるシステム。
複数のコンピュータに並列処理を行わせることで一台のコンピュータではパフォーマンスが低くてもネットワーク上の複数のコンピュータが結集すれば多大なパフォーマンスを実現できる。ビジネスシーンではあまり利用価値が無さそうだが、大学の学術研究などに多く利用されている。大学では、グリッドコンピューティングに対して様々な試みが研究されている。

RAIDってバックアップする事とはとちがうよぉ

● じゃあ、RAIDって何よ

冗長化するって言う。RAIDで言う冗長とは、「万が一の故障に備えて、機器や装置を二重化する。」という意味である。つまり、電源とかHDDその他のデバイスを複数マウントしておいて一つが壊れてももう一つに切り替えるような構造を想定している。
例えば、HDDを考えると同じ容量のHDDを二台装備して一台が何らかの障害でクラシュしてももう一台が動作を引き継げる状態で有れば非常に効率がよい。これを「十分な冗長性が確保されてる。」と言う。
ところで、RAIDには、ハードウェアRAIDとソフトウェアRAIDが有る。以下にその内訳を示す。

① 個別のハードウェアRAID装置
② RAID機能をマウントしたSCSIやIDEカード
③ OSに付属してるソフトウェアRAID機能

の3択がある。
一番良いのは、①だ。①は、HotSwapと言ってHDDに障害が起こっても稼働中に故障したHDDを交換できる機能を言うが、その機能が使える。しかし、SCSI等のI/Fで繋げる単体装置であるため高価である。②は①より安価だが、HotSwapに対応してる物が少ない。③は、一番安上がりだがもちろんHotSwapは出来ないし、ソフト処理なのでCPUのかなりの不可がかかるのは避けられない。まあ、どれも一丁一端がある。金銭の余裕があるなら絶対に①であろう。
さて、ではRAIDにはどんな種類が有るのであろう。

1) RAID 0 ストライプセット

これは、2台以上のHDDで有ることが前提。
複数台のHDDをブロック毎に分割して、連続するデータを複数台のディスクに分散するように配列する。それによってアクセスを複数台のHDDに分散させて並列でHDDを動かしてアクセスのパフォーマンスや効率を上げる仕組みを言う。だから、このRAID 0は冗長性にはちとかけ離れているような気はする。

2) RAID 1 ミラーリング

これは、二重化された一方へ同じ内容のHDDを作成することである。リードは、同じデータを持っているいずれかのHDDから行われ、書き込みは全てのHDDへ行う。したがって、冗長性が高く一台のHDDが故障してももう一台のHDDに引き継ぐことが可能である。ただし、書き込みは全てのHDDへ行うため少々遅くなる。

3) RAID 3 分散パリティ

これは、二重化してるHDDの片一方をパリティディスクに設定してその他のHDDへ均等にデータを配分する方法である。パリティとは、誤り訂正機能の一つでn個データから計算で求められた特殊なデータで計算に使ったデータのうち一つが何らかの理由で壊れても、n-1個とデータとパリティデータを組み合わせると壊れたデータが再計算できる。したがって、本来使用できるHDDの領域は使えるHDDの領域からパリティディスクを差し引いた領域となる。

4) RAID 5 ストライプセット&分散パリティ

これは、RAID 0とRAID 3を組み合わせた機能。パリティデータと実際のデータを多重化されているHDDへ分散記録する。したがって、リードはストライピングの並列効果で高速になるが、書き込み速度がパリティを計算しなければならないので通常書き込みより遅くなる。RAID5はその構成上、HDDを3台以上必要とする。

以上がRAIDの種類であったが、最近はRAID 5が常識のようである。
ここまで話せば、RAIDがバックアップ機能では無いとが解っていただけたと思う。RAIDは、単なるデータのバックアップでなくコンピュータの障害復旧の有効な助け船であることは言う前もない。
そんじゃ、冗長性が有るRAIDには100%の信頼があるか?と聞かれるとそれは「No」である。いずれにしても形有る物は必ずいつか壊れるのである。

アナログとデジタルの違い(人間に置き換えて)

「アナログとデジタルの違い」という課題を俺は良く研修の時、新人達に出題する。例を挙げて書いてくるのは、アナログ時計とデジタル時計で説明を書いてくる答案が多い。まあ、確かに説明しやすいので無理もないと思う(笑)。

図1
図2
図3

ちょっと手前みそで申し訳ないが、図1~図3は俺がその昔T社という会社で開発していた有る用途に使うデジタル無線通信機器である。このようなデジタル無線通信機器には、必ずデジタル変調という理論が付いてくる。
この機器、名前も用途もとりあえずシークレットにしておくが図3で中身の構成を説明すると、上の方の箱形になっている部分が無線機で下がトランスでトランスの左がパワートランジスタだから下の部分が電源部であることは解ってもらえると思う。さらに、マイコンとその周辺のLSIは無線機の下に埋まっている。ここで言えるのは電源や無線機がアナログである以上、このような無線機器ではデジタル・アナログが同じ基板上に実装されていてお互い協調して動作することになる。まあ技術的なことだが、同じ基板上にデジアナが一緒になっているとノイズという障害にも気をつけなければいけない。

さて、いきなり話は変わるがデジタル携帯電話と言う言葉がある。人はこの携帯電話を「全てデジタルの携帯電話」と解釈している。おかしいと気がついた人は居るだろう。デジタル携帯電話とは、携帯電話本体のみデジタル信号処理された携帯電話という意味で心臓部の無線機はあくまでもアナログである。アナログがなければ携帯電話は実在しないのである。無線機がアナログだと言うこと知らなかったとしてら考えを改めてほしい!
みんなデジタル・デジタルって言ってるけど、アナログがなければITつまり情報技術は無かったのではなかろうか。なんて、俺は思っている。

ところで本題のデジタルとアナログの違いについてだが、俺は人間にたとえてみた。これも新人研修の時に、俺がよく話すことである。
人間はデジタルではいけないと思う。たとえば、人間の評価を”好き”・”嫌い”のみで判断すると少々やっかいなことになると思う。”好き”と”嫌い”を”1”と”0”・・・。嫌いな人は大勢の人が嫌いになり、好きな人は大勢の人が好きになる。極端だが、嫌いな人は悪い人、好きな人は良い人。という判断にすり替えられてしまい、嫌いな人に良いところは一つもないことになってしまう。これって凄く人間を追いつめてしまう結果になるのでは無かろうか。逆に、好きな人はあくまでも良い人で悪いところがない善人。だが、おうおうにしてこういう人間に悪い部分が根強く有ったりする。そんでもって、全ての人はこの”好きな人=善人”にだまされてしまう結果になる。俺はかなり恐ろしいことだと思う。

だから、人間はあくまでも”アナログの心”を失ってはいけない。人を評価する場合、嫌いな人も良いところがある。好きな人も悪いところがあるって評価すべきではないだろうか。「人間はデジタルではない。アナログであるべき。」これが俺が思うことである。アナログのように、色々な色が微妙に出せる人間って素敵だと思う。いずれにしても完璧な人間は居ない。今の世の中、デジタルに振り回されてるところがあると思う。このことを俺は少なくても良いことだとは思っていない。なぜなら、人間の評価は”1”と”0”では判断できないからである。

以上

コメント