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オリジンで番号が振られて、ややこしいことこの上ないです。
なんとか統一して欲しいものだと、それでミスした私としては、声を大にして言いたいわけでして。