SVM によるミラーの作成 SPARC 版
自分用メモ。SPARC マシンでは完全なログをとってなかったので。
See Also:
状態データベース用のパーティションの確認
まず、状態データベースに利用するパーティションを確認します。
format コマンドか prtvtoc を使います。
マウントしているパーティションに format コマンドを使うと警告が出るので、ここでは prtvtoc を利用します。
# prtvtoc /dev/rdsk/c0t0d0s2 ** /dev/rdsk/c0t0d0s2 partition map * ** Dimensions: ** 512 bytes/sector ** 107 sectors/track ** 27 tracks/cylinder ** 2889 sectors/cylinder ** 24622 cylinders ** 24620 accessible cylinders * ** Flags: ** 1: unmountable ** 10: read-only * ** First Sector Last ** Partition Tag Flags Sector Count Sector Mount Directory 0 2 00 0 66406554 66406553 / 1 3 01 66406554 4194828 70601381 2 5 00 0 71127180 71127179 7 0 00 70601382 525798 71127179
パーティション7(約256M)を状態データベースに使います。ホントはこんなに容量とらなくても大丈夫
もう一方のディスクも確認します。以前にセットアップしたパーティション情報が残っているのが分かります。
# prtvtoc /dev/rdsk/c0t1d0s2 ** /dev/rdsk/c0t1d0s2 partition map * ** Dimensions: ** 512 bytes/sector ** 107 sectors/track ** 27 tracks/cylinder ** 2889 sectors/cylinder ** 24622 cylinders ** 24620 accessible cylinders * ** Flags: ** 1: unmountable ** 10: read-only * ** First Sector Last ** Partition Tag Flags Sector Count Sector Mount Directory 0 2 00 0 525798 525797 1 3 01 525798 4194828 4720625 2 5 01 0 71127180 71127179 3 0 00 71098290 28890 71127179 4 0 00 4720626 4194828 8915453 5 7 00 8915454 8389656 17305109 6 4 00 17305110 8389656 25694765 7 8 00 25694766 45403524 71098289
パーティション情報のコピー
パーティション情報をコピーします。
# prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2
コピーしたパーティションを確認します。
# prtvtoc /dev/rdsk/c0t1d0s2 ** /dev/rdsk/c0t1d0s2 partition map * ** Dimensions: ** 512 bytes/sector ** 107 sectors/track ** 27 tracks/cylinder ** 2889 sectors/cylinder ** 24622 cylinders ** 24620 accessible cylinders * ** Flags: ** 1: unmountable ** 10: read-only * ** First Sector Last ** Partition Tag Flags Sector Count Sector Mount Directory 0 2 00 0 66406554 66406553 / 1 3 01 66406554 4194828 70601381 2 5 00 0 71127180 71127179 7 0 00 70601382 525798 71127179
c0t0d0 と同じパーティション構成になりました。
状態データベースの作成
それぞれのディスクに 2 個ずつ状態データベースを作成します。
# metadb -af -c 2 /dev/dsk/c0t0d0s7 # metadb -af -c 2 /dev/dsk/c0t1d0s7
作成した状態データベースを確認します
# metadb flags first blk block count a u 16 8192 /dev/dsk/c0t0d0s7 a u 8208 8192 /dev/dsk/c0t0d0s7 a u 16 8192 /dev/dsk/c0t1d0s7 a u 8208 8192 /dev/dsk/c0t1d0s7
ミラー構成の概要
下記のような構成でミラーを作成します。
- ルートパーティション
デバイス名 | 物理デバイス名 | 説明 |
---|---|---|
d0 | - | / のミラー(本体) |
d10 | /dev/dsk/c0t0d0s0 | / のサブミラー |
d20 | /dev/dsk/c0t1d0s0 | / のサブミラー |
デバイス名 | 物理デバイス名 | 説明 |
---|---|---|
d1 | - | スワップのミラー(本体) |
d11 | /dev/dsk/c0t0d0s1 | スワップのサブミラー |
d21 | /dev/dsk/c0t1d0s1 | スワップのサブミラー |
1面ミラーの作成(ルートデバイス)
まず片面を SVM の管理下に入れます。d0 の下に d10 が入ります。また、d20 も作成します。(d0 の配下にはまだ入れない)
まず、d10 を作成します。
# metainit -f d10 1 1 /dev/dsk/c0t0d0s0 d10: Concat/Stripe is setup
同様に d20 を作成します
# metainit -f d20 1 1 /dev/dsk/c0t1d0s0 d20: Concat/Stripe is setup
d10 を d0 のサブミラーとして設定します。
# metainit -f d0 -m d10 d0: Mirror is setup
1面ミラーの作成(swapデバイス)
swap も SVM の管理下に入れます。d1 の下に d11 が入ります。d21 の作成も行います(d1 の配下にはまだ入れない)
# metainit -f d11 1 1 /dev/dsk/c0t0d0s1 d11: Concat/Stripe is setup # metainit -f d21 1 1 /dev/dsk/c0t1d0s1 d21: Concat/Stripe is setup # metainit -f d1 -m d11 d1: Mirror is setup
metaroot の実施
metaroot コマンドを実行します。これでメタデバイスからブートできるようになります。
# metaroot d0
確認すると、「/」がメタデバイス経由になっていることが分かります。
# cat /etc/vfstab #device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # fd - /dev/fd fd - no - /proc - /proc proc - no - /dev/dsk/c0t0d0s1 - - swap - no - /dev/md/dsk/d0 /dev/md/rdsk/d0 / ufs 1 no - /devices - /devices devfs - no - ctfs - /system/contract ctfs - no - objfs - /system/object objfs - no - swap - /tmp tmpfs - yes -
確認
metastat コマンドで、ミラーとサブミラーがきちんと作成されていることを確認します。
# metastat d1: Mirror Submirror 0: d11 State: Okay Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 4194828 blocks (2.0 GB) d11: Submirror of d1 State: Okay Size: 4194828 blocks (2.0 GB) Stripe 0: Device Start Block Dbase State Reloc Hot Spare c0t0d0s1 0 No Okay Yes d0: Mirror Submirror 0: d10 State: Okay Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 66406554 blocks (31 GB) d10: Submirror of d0 State: Okay Size: 66406554 blocks (31 GB) Stripe 0: Device Start Block Dbase State Reloc Hot Spare c0t0d0s0 0 No Okay Yes d21: Concat/Stripe Size: 4194828 blocks (2.0 GB) Stripe 0: Device Start Block Dbase Reloc c0t1d0s1 0 No Yes d20: Concat/Stripe Size: 66406554 blocks (31 GB) Stripe 0: Device Start Block Dbase Reloc c0t1d0s0 0 No Yes Device Relocation Information: Device Reloc Device ID c0t1d0 Yes id1,sd@SSEAGATE_ST336607LSUN36G_3JA0DPAY0000731870AE c0t0d0 Yes id1,sd@SSEAGATE_ST336607LSUN36G_3JA0CSXE00002318X0QE
スワップのメタデバイス化
先ほどの vfstab の内容では、swap は引き続き c0t0d0s1 を使っています。これも d1 を使うように変更します。
# vi /etc/vfstab #device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # fd - /dev/fd fd - no - /proc - /proc proc - no - #/dev/dsk/c0t0d0s1 - - swap - no - dev/md/dsk/d1 - - swap - no - /dev/md/dsk/d0 /dev/md/rdsk/d0 / ufs 1 no - /devices - /devices devfs - no - ctfs - /system/contract ctfs - no - objfs - /system/object objfs - no - swap - /tmp tmpfs - yes -
2 面ミラーの作成
もう片方のディスクもミラーに組み込みます。metattach コマンドを使います。
まず、d20 を d0 の配下に入れます。
# metattach d0 d20 d0: submirror d20 is attached
次に、d21 を d1 の配下に入れます。
# metattach d1 d21 d1: submirror d21 is attached
metastat コマンドで確認します。
# metastat d1: Mirror Submirror 0: d11 State: Okay Submirror 1: d21 State: Resyncing Resync in progress: 0 % done Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 4194828 blocks (2.0 GB) d11: Submirror of d1 State: Okay Size: 4194828 blocks (2.0 GB) Device Start Block Dbase State Reloc Hot Spare c0t0d0s1 0 No Okay Yes d21: Submirror of d1 State: Resyncing Size: 4194828 blocks (2.0 GB) Stripe 0: Device Start Block Dbase State Reloc Hot Spare c0t1d0s1 0 No Okay Yes d0: Mirror Submirror 0: d10 State: Okay Submirror 1: d20 State: Resyncing Resync in progress: 0 % done Pass: 1 Read option: roundrobin (default) Write option: parallel (default) Size: 66406554 blocks (31 GB) d10: Submirror of d0 State: Okay Size: 66406554 blocks (31 GB) Stripe 0: Device Start Block Dbase State Reloc Hot Spare c0t0d0s0 0 No Okay Yes d20: Submirror of d0 State: Resyncing Size: 66406554 blocks (31 GB) Stripe 0: Device Start Block Dbase State Reloc Hot Spare c0t1d0s0 0 No Okay Yes Device Relocation Information: Device Reloc Device ID c0t1d0 Yes id1,sd@SSEAGATE_ST336607LSUN36G_3JA0DPAY0000731870AE c0t0d0 Yes id1,sd@SSEAGATE_ST336607LSUN36G_3JA0CSXE00002318X0QE
先ほど管理下に入れた d21, d20 の 「Submirror」 の「State」が Resyncing になっています。Resync が終わると、「State」が「Okay」になり、「Resync in progress: XX % done」が表示されなくなります。
OBP の ブートデバイス追加
現状では OBP のブートデバイスは「disk net」となっているので、ディスク2 からブートできません。ディスク2 を OBP に追加します。
まず、disk2 の物理デバイス名を確認します。
# ls -l /dev/dsk/c0t1d0s0 lrwxrwxrwx 1 root root 44 Oct 23 11:54 /dev/dsk/c0t1d0s0 -> ../../devices/pci@1f,0/pci@1/scsi@8/sd@1,0:a
この結果から得られたデバイス名の sd を disk に置き換えます。つまり、
/pci@1f,0/pci@1/scsi@8/disk@1,0:a
となります。(「:a」はあっても無くても可)
このデバイス名を OBP に登録します。まず、PROM モードに入ります。
init 0 ... ok
nvalias コマンドで先ほどのデバイス名を登録します。名前は disk2 とします。
ok nvalias disk2 /pci@1f,0/pci@1/scsi@8/disk@1,0:a
disk2 も boot-device に加えます。
ok setenv boot-device disk disk2 net
disk2 で起動してみて、起動できるか確認します。
ok boot disk2 ...
起動できれば問題ありません。念のため、起動したら再起動して、disk1 から起動します。
# init 6