0と1

Cで配列を作ったとします。


int a[10];

すると、この配列の要素はa[0]〜a[9]の10個になります。このように配列の添字はゼロから始まるのがC(やCの影響を受けている言語の多く)のキマりです。「0オリジン」とも呼んだりしますね。それに対して、添字が1から始まる1オリジンの言語も古くからありますし、任意の数から添字を始めることができる配列を作れる言語も、今どき……いやいや、昔からありますね。Pascalは確かそうだったような記憶が……。

Cが0オリジンなのは理由があるわけです。Cで配列要素を表す式 a[b] は、*(a+b) とまったく同じ意味です。ですので、必然的に0オリジンになってしまいます。まあ、人が考える上では、配列添字は、0オリジンよりは1オリジンのほうが自然のようには思えます。「配列aの0番目の要素」とか表現してしまうと、「ゼロ番目って何?」ってなっちゃいますし。

……というような話をしたいわけではありません。

先日、職場にて「さて、今日はとっとと帰ろうかなあ」などと思いつつ、最後にメールの受信ボタンを押してしまったのが不運の始まりでした。


STORAGE1 power supply (slot 1) failed because of ほにゃらら(なんて書いてあったか忘れた)

「STORAGE1」ってたしか、あのシステムで使っているiSCSIストレージじゃなかったっけ? 見なかったことにして返ろうかなあ。電源に障害があるみたいだけど、片系は生きているみたいだし……。もう今日はメーカーの保守は終わっているよなあ。お金ケチって24時間保守サービスにしなかったしなあ。仕方ない、こっちでなんとかしてみるか。

ここでiSCSIストレージって言っているのは、要するに外付けハードディスクのでっかいのみたいな〜(要約しすぎ)。で、この種の装置は、たいてい電源を2系統持っています。簡単に言ってしまえば、この外付けハードディスクのお化けからは、AC電源ケーブルが2本出ている、ってことです(簡単に言いすぎ)。最低片方だけでもコンセントに刺さっていれば、このストレージは動き続けることができます。メールによれば、そのうちslot 1のほうの電源装置で障害が発生したようです。

メールには理由も書かれていて(英語で)、それによれば、slot 1の電源装置へのACの電力供給が絶たれたようです。すると考えられる理由は、次の3つ。

現場に行ってみたところ、確かにslot 1の電源のLEDがすべて消灯していました。抜けたり、抜けかかったりしているACケーブルは無いのでたぶん2番目の原因は無し(まあ、断線の可能性はありますが)。何台かあるUPSのうち1台の調子がよろしくない、という話は聞いていたので、たぶんUPSに問題があるんだろう、ということで、slot 1のACケーブルを別のUPSに差し替えてみることにしました。

さてさて、STORAGE1のslot 1のACケーブルはどれだろ? ええと、あ、これかな? このUPSに刺さってるACケーブルに「STORAGE1 AC1」ってタグが付いている。じゃあ、これを抜いて、別のUPSに差し替え……?

えっ? いまストレージの電源落ちなかったか? うん、確か落ちたよな。slot 0の生きてるほうのLEDが消えたような……あはは。

きれいにまとめられて結束バンドでとめられている数10本のACケーブルを調査してみたところ、驚愕の事実が(大げさ)。


ストレージ
────┐
│ ACケーブル [STORAGE1 AC1]←タグ
slot0├───────────────────────

│ [STORAGE1 AC2]
slot1├───────────────────────
│ ↑
────┘ 障害が発生した方

要するに、ストレージ側は0オリジンだったのに、ACケーブルに付いているタグは1オリジンだったというわけで、つまり活きていたslot 0側を抜いちゃったわけで、そりゃあ、ストレージの電源が落ちるのも無理はありません。あはははは。

こういうのの番号の振り方も、0オリジンと1オリジンが混在していて、統一がなかなか難しかったりしますね。このシステムも、同一メーカーのストレージとサーバを使っているのにもかかわらず、ストレージのほうはハード的にもソフト的にも「slot 0」「slot 1」と0オリジンなのに、サーバのほうは「AC1」「AC2」と1オリジンです。LANインターフェースの番号もやはり、ストレージは0オリジン、サーバは1オリジンです。しかも、サーバはハード的には「GbE1」「Gbe2」…と1オリジンなのに、そこにVMware ESX Serverを入れたら、そっちは「vmnic0」「vmnic1」…と0オリジンで番号が振られて、ややこしいことこの上ないです。

なんとか統一して欲しいものだと、それでミスした私としては、声を大にして言いたいわけでして。