Setup Solaris

Volume ManagerでRAID1


Volume Manager
Volume Managerと言っても、VERITAS Volume Managerぢゃなくて、Solaris 9のVolume Managerです。ま、GUI consoleのコマンド以外は、DiskSuite 4.2と変わらないみたいですから、以下に書いてあることは、どっちでも設定できるかと。
RAID1
ここでは、ミラーリング(いわゆるRAID1)に必要な設定と復旧処理以外は書きません。
理由は、
かな。ま、RAID0やRAID5やhot spareの設定がしてみたい方は、参考文献等をご覧ください。
よし、設定だ!
くわしいことは、マニュアル(Solarisボリュームマネージャの管理)読んでね:-)
ここでは、言葉の説明なんてしません。
状態データベースの複製領域確保
状態データベースの複製1つあたりのサイズは、Volume Managerでは8192 blocksです。DiskSuiteのころは1034 blocksです。全部、マニュアルの受け売りです。(P64)
んでもって、ミラーリングするってことは、ディスクは、最低でも2台あるわけで、各々のディスクには、状態データベースの複製が、最低2個あれば良いです。お好きな方は、総計50個まで作れるみたいなので、25個ずつ作っても良いでしょう。誰も褒めてくれませんが。(P58)
設定できる場所は、newfsしてないスライスまたはnewfsしてもかまわないスライスです。無ければ、次のようにして、swapからもぎ取りましょう。ただし、万が一、swapが無いディスク(3台以上ディスクがぶらさがってたりすると、可能性としてはあるわなぁ)場合は、この手は使えません。あしからず。
# init S
でsingle user modeに落とします。それから
# swap -l
なんてやると
swapfile             dev  swaplo blocks   free
/dev/dsk/c0t0d0s1   32,1      16 1048688 1048688
なんて表示されたりします。お使いのマシンや設定によっては、違ったりするかもしれませんが、そんなのは、しったこっちゃありません。ここですかさず、
# swap -d /dev/dsk/c0t0d0s1
みたいに、上記で表示されたswapfileを指定します。すると、あらあら不思議、もう一度、「swap -l」すると、No swap devices configuredって表示されるはずです。swapfileが複数ある場合は、1個少なくなってるはずです。
そしたら、formatコマンド使って(使い方のわからん人は、man formatするなり、Solarisのシステム管理(基本編)をよんでくださいませ)
      1. swap領域を、状態データベースの複製を2つ以上確保できるサイズ分、減らす。
      2. 空いてるスライスに、削り取った分、割り当てる。
      3. ミラーする側のディスクに、元のディスクと同じパーティションを切る。
をしてください。空いてるスライスが複数あれば、1つ分ずつ割り当てても良いです。私は、こっちの方が好き。でも、Oracleとかインストールするのに、スライスが足りない場合は、無駄なことはできないので、ケースバイケースで。
ここでは、参考までに
Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm     363 - 24619       33.42GB    (24257/0/0) 70078473
  1       swap    wu       0 -   362      512.00MB    (363/0/0)    1048707
  2     backup    wm       0 - 24619       33.92GB    (24620/0/0) 71127180
  3 unassigned    wm       0                0         (0/0/0)            0
  4 unassigned    wm       0                0         (0/0/0)            0
  5 unassigned    wm       0                0         (0/0/0)            0
  6 unassigned    wm       0                0         (0/0/0)            0
  7 unassigned    wm       0                0         (0/0/0)            0
Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm     363 - 24619       33.42GB    (24257/0/0) 70078473
  1       swap    wu       6 -   362      503.50MB    (357/0/0)    1031373
  2     backup    wm       0 - 24619       33.92GB    (24620/0/0) 71127180
  3 unassigned    wm       0                0         (0/0/0)            0
  4 unassigned    wm       0                0         (0/0/0)            0
  5 unassigned    wm       0                0         (0/0/0)            0
  6 unassigned    wm       0 -     2        4.00MB    (3/0/0)         8667
  7 unassigned    wm       3 -     5        4.00MB    (3/0/0)         8667
したのをサンプルにします。
状態データベースの複製
一気に作りましょう
# metadb -a -f c0t0d0s6 c0t0d0s7 c0t1d0s6 c0t1d0s7
でおしまい。
# metadb
すると状態がわかります。
もし、1スライスに、複数個分の領域を確保した場合は、
# metadb -a -f -c 2 c0t0d0s7
とか、「-c」オプションに、複製の数を指定します。上記の例だと、c0t0d0s7に2個設定するってこと。
meta deviceのボリューム名の付け方
下記の例だとdXXXというのが、ボリューム名です。「d」以外から始められるのか、試したことはないので、ずーっとマニュアルに従って、dXXXと名前を付けています。ただし、「XXX」の部分は、大きな数字を使ったり(確認したわけではないですが0〜127だと経験則が語ってます)、01のように、0以外の数値に対して0から始めることはできません。
なので名前の付け方は、自分で決めましょう。私の場合、
concatinate: 1XY
X: ミラーのプライマリ側が0、2ndry側が1
Y: スライスの番号(IDとディスク内のスライス番号の小さい順に)
ミラー: 2Y
Y: ミラーの番号(concatinateの「Y」と同じ値
としています。自ずと設定できる数が限られますが、最近はディスクの容量もでかいし、会社で使う分には、HW RAIDを利用することが多いので、たいてい事足りるかと思います。
concatinateの設定
機械的にやるだけです。「/」パーティションのように、現在mountされているディバイスに対して実行するときだけ、-fオプションが必要です。
実際に設定する場合は、ご自分の環境に合わせて、パラメータを変更してください。
なお、ボリューム名とディバイス名の間の「1 1」は、おまじないだと思いましょう。単純にRAID 1を構成するときには、これ以外を指定することは、まず無いと思います。
# metainit -f d100 1 1 c0t0d0s0
# metainit d101 1 1 c0t0d0s1
# metainit d110 1 1 c0t1d0s0
# metainit d111 1 1 c0t1d0s1
ミラーリング設定(前編)
まず、primary側を設定します。「-m」オプションが、ミラー設定の指示です。
# metainit d20 -m d100
# metainit d21 -m d101
# metaroot d20
metarootコマンドで、/etc/vfstab中の「/」パーティションのディバイスパスが書き換えられていますが、swapまでは書き換えてくれません(他のパーティションも同じく)。なので、/etc/vfstabを編集して
/dev/dsk/c0t0d0s1 - - swap - no -
と書いてあるところを
/dev/md/dsk/d21 - - swap - no -
と変更してください。もちろん、ご自分の環境/設定によっては、ディバイスパスが異なる場合がありますので、間違えないように注意してください。また、他のミラーリングするディバイスパスも、このときに、変更しておきましょう。
最後に忘れずに
reboot
しましょう!
ミラーリング設定(後編)
再起動が完了したら、dump deviceを変更します。
dumpadm -d swap
これで、ミラーディバイスに設定してくれます。
次に、ミラー側のディバイスを、それぞれミラーしたいボリュームにアタッチします。
metattach d20 d110
metattach d21 d111
これで、設定完了です。ミラーが完了したかどうかは、metastatコマンドで確認できます。
backup-rootの設定
とりあえず、init 0で、PROMまで落とします。
おもむろに、show-devsとかnvaliasとかすると、 OpenBoot 3.xの場合は、
ok show-devs
/SUNW,ffb@1d,0
    :
/pci@1f,4000/scsi@3/disk
    :
ok devalias
screen                  /SUNW,ffb@1e,0
net                     /pci@1f,4000/network@1,1
disk                    /pci@1f,4000/scsi@3/disk@0,0
cdrom                   /pci@1f,4000/scsi@3/disk@6,0:f
なんて出てきます。
通常は、diskというaliasの0(=スライスa)からbootしてるはずです。ミラーするディスクが、同じディスクコントローラにつながっているのであれば、SCSI-IDが違うだけの話なので、 SCSI-IDが1のディスクがミーラ先なら、
ok nvalias backup_root /pci@1f,4000/scsi@3/disk@1,0:a
ok nvstore
でbackup_rootというaliasを登録します。今後、primaryに問題が発生し、2ndryからbootする際には、
ok boot backup_root
とすることで、2ndry側からbootできるようになります。
まあ、Sbusなマシンの場合は、
/sbus@1f,0/SUNW,fas@e,8800000/sd@1,0:a
とかだったり、SWIFT/PCIなんかで外付けディスクからだったりすると、
/pci@1f,4000/pci@2/SUNW,isptwo@4/disk@1,0:a
とかになったりするかもしれないので、そこんとこは、ご自分でよろしく!
復旧いろいろ
状態データベースの削除
まあ、滅多にないと思いますが、作るスライス間違えた(データがあれば、ご愁傷様でしたってとこですね)とか、作り直したい場合には、
metadb -f -d 削除するディバイス名...
で、削除できます。
障害発生時の対応
そのうち書きます(^^;
参考文献
以下の文献が役に立ちます。

Copyright (C) 2003, のらねこひらまつ, All rights reserved.