彷徨えるフジワラ

年がら年中さまよってます

Solaris での SATA デバイス

当初は PhenomII X4 を予定していた次期自宅サーバも、結局 MINI-ITX Atom マザーで組むことに。

自分にとっての自宅サーバの主要用途が、データの集積場所=ストレージサーバであって、計算力を常時提供する必要性が薄い事を考えると、冷却(+ それに伴う騒音)や消費電力の点から、Atom で十分なんじゃね?というのが今回の結論。ソフトウェア RAID である ZFS を使う場合、応答性能を得るためには、相応の計算能力が必要とされるのは確かなので、性能は高いに越した事は無いのだけど、リアルタイムの動画記録をするのでもない限り、Atom レベルで十分でしょ?という妥協も。

但し、「ストレージサーバ」として稼動させる上で:

ってな具合に HDD x 6 な構成にしたいので、MINI-ITX マザーだと当然 SATA ポートが不足する事態に。

とりあえず、サポート対象のチップを搭載していて手元にあるモノ、ということで、Linux ホストで使おうと思って購入したのに、対応状況が(当時は)良くなかったことで死蔵状態になっていた、玄人志向SATA4P-PCI で 4 ポート分を増設。

死蔵品の再利用とは言え、今時 PCI バスかよ?!という話もあるけど、PCI-Express で 4 ポート増設のボードって、(1) Solaris では未サポートのチップを使用しているとか、(2) 国内での入手性が良くないとかで、なかなか良い物が無いんだよねぇ。
で、Sil3114 チップなんだけど、ボードによっては RAID BIOSIDE BIOS に差し替えたりといった対応が必要らしいとの噂の割には、手元にあったブツの場合は特に何もせずにあっさり認識@OpenSolaris 2009.06。

その一方で、SATAバイスの癖に、SATA4P-PCI 経由で繋がっている HDD が "cfgadm -al" で表示されない .... なんでだ?

しかも format コマンドで表示されるデバイス一覧を見るに、通常の SATA ディスクに割り当てられる cXtXdX 形式ではなく、cXdX 形式になってるぞ?

あ、わかった! prtconf で見ると、3114 用のデバイスドライバには pci-ide が使用されていて、つまりは SCSI/SATAバイスではなく、IDEバイスとして認識されているのか。

$ prtconf
....
i86pc
....
       pci8086,2448, instance #0
            pci-ide, instance #1
                ide, instance #2
                    cmdk, instance #0
                    cmdk, instance #1
                ide, instance #3
                    cmdk, instance #2
                    cmdk, instance #3
....
        pci1458,b005, instance #0 SATA 接続で認識されているディスク
            disk, instance #1
            disk, instance #2
....

認識されている分には問題無いのだけど、IDE 扱いということは、HotPlug などの SATA 機能には当然対応してくれないんだろうなぁ。

普通に使っている分には必要になるケースなんて滅多に無い、ってことは十分にわかっているのだけど、やっぱり「使ってみたい」し、「使えるようにしておきたい」じゃない?(笑) > HotPlug

ちなみに、単なる個体差なのか、あるいは利用環境(温度)とか、使用形態(SCSI + SUN と IDE/SATA + x86 PC)の差なのかわからないけど、20 世紀はやたらハードディスク故障に遭遇してたのに、21 世紀になってからは、専らメモリ故障にしか遭遇しなくなってしまったんだよなぁ。

さて、Sil 3124 チップなら HotPlug 対応ドライバが提供されているので、玄人志向SATA2I4-LPPCI を入手することに。

大容量なストレージをガチで使うような場合であれば、port multiplier 未対応だったりするとアレなのかもしれないけれど、ヘタレなファイルサーバ用途なら、そこまでは必要無いので、まぁ、良かろう。

それでは SATA2I4-LPPCI に繋ぎなおして再起動してみると....

Run 'zpool status -x' and replace the bad device.

とのことなので、言われるままに zpool status を実行してみる。

$ zpool status -x
....
        NAME        STATE     READ WRITE CKSUM
        datapool    UNAVAIL      0     0     0  insufficient replicas
          raidz1    UNAVAIL      0     0     0  insufficient replicas
            c9d0    UNAVAIL      0     0     0  cannot open
            c10d0   UNAVAIL      0     0     0  cannot open
            c9d1    UNAVAIL      0     0     0  cannot open
            c10d1   UNAVAIL      0     0     0  cannot open

あぁ、おそらく接続先インタフェースが変更になったので、デバイスが特定できなかったんだなぁ。

念のため、ディスクの認識状況を見てみると、IDE 扱いではなく SATA ドライバ配下にドライブが認識されているのが確認できた。

$ prtconf
....
        pci8086,2448, instance #0
            pci1095,3124, instance #0
                disk, instance #4
                disk, instance #5
                disk, instance #6
                disk, instance #7
....
$ cfgadm -l
....
sata3/0::dsk/c12t0d0           disk         connected    configured   ok
sata3/1::dsk/c12t1d0           disk         connected    configured   ok
sata3/2::dsk/c12t2d0           disk         connected    configured   ok
sata3/3::dsk/c12t3d0           disk         connected    configured   ok
....

ということは:

  1. 一旦、Sil 3114 カードで再起動
  2. "zpool export datapool" でプールの使用を停止
  3. シャットダウンして Sil 3124 カードに繋ぎ直し
  4. "zpool import datapool" でプールの再有効化

という感じで進めれば大丈夫な筈。

最初の起動の際に、"zpool import" で取り込み可能プールを一覧させた際には、宙ぶらりんな datapool が表示されなかったけど、多分 export 未実施状態だったからなのかな?上記手順を踏んだ場合、ちゃんと datapool の import に成功したので、おそらく予想通りだろう。