SunFireT2000で、ブートデバイス(起動ディスク)を変更する必要に迫られたので、方法を調べました。
参考:http://docs.sun.com/app/docs/doc/819-0378/bootdevice-change?l=ja&a=view
EEPROMの'boot-device'という値(そのまんまですね)を設定すればよいのですが、ハードウェアの構成情報そのものを設定するので、値がけっこう複雑でした。
#eeprom boot-device で現状の値を表示
/pci@780/pci@0/pci@9/scsi@0/disk@0,0:a disk net
となっていました。後ろの方の'net'がよくわからないのですが、ネットワークブートとたぶん関係あるのでしょう(自分は使っていません)。
これがデフォルトで、フロントパネル上のディスクスロットの0番から起動される設定です。
今回、2番から起動したかったので、デバイスファイルをlsで調べて、このパスを探しました。デバイスファイルがハードウェアの構成情報にリンクされている、という形で表現されているので、探せば見つかります(この時のログはどこかにやっちゃいました)。
/pci@780/pci@0/pci@9/scsi@0/disk@2,0:a でした。
設定値を変更
#eeprom boot-device=/pci@780/pci@0/pci@9/scsi@0/disk@2,0:a disk net
値を確認して、リブートすると、あっけなく2番のディスクから起動されます。
そうそう、2番のディスクに、0番からのバックアップを使う場合、再起動の前に、2番のディスク上の/etc/vfstab だけは修正する必要があります。そうしないと、ルートパーティションは2番なのに、他のパーティションは0番からマウントされる、という間抜けなことになります。
よく考えると、x86版のSolaris10の場合は、EEPROMはディスクでエミュレートしているので、この方法は使えないですね。ま、ブートに関してはOS関係ないので、GRUBとかでやるのが普通でしょうね。
-----
当然ながら、2番のディスクにOSが入っていて、ブートブロックが作られていることが大前提です。
今回は、これまでミラーリングしていなかったディスクを、なるべく少ないダウンタイムでミラーリングにするのが目的でした。
ポイントは、現状の0番のパーティション構成では、metaDBのための領域(c0t0d0s3 とか)が確保されていないので、わたくしが知っている方法では、そのままミラーにできなかった、ということです。
以下の手順で構成し直しました。詳細な手順はちょっと書ききれませんが、とにかくこの順序でできます。
1.0番のディスクをテープにバックアップする
2.ミラーリングの対向となる2番のディスクにパーティションを作り直す(metaDBの領域を作る)
3.0番からのバックアップを2番にリストアする
4.上記の方法で、ブートデバイスを変更
4'.2番の/etc/vfstabを修正
5.再起動して、2番のOSで立ち上げる
6.0番のディスクに2番のディスクからパーティション情報をコピー
7.0番と2番でミラーを構成する
8.後は同期させるだけ
(その後、ブートデバイスを0番に戻しても、ちゃんと立ち上がります。)
ということで、上記の項番の中では、1.と5.の時だけサーバがダウンします。でも、3.のリストアがデスクトップから実行できたので、とても楽でした。
当然ながら、2~4の間に、サーバ上で行っている他の作業の結果は失われます。今回は、別の人がアプリの動作確認を行っていただけだったので、変更点はほとんどなく、影響は少なかったです。
2009年4月17日金曜日
登録:
投稿 (Atom)