六ちゃん masaharu@mutsuyoshi.net
修正 2003/11/21
作成 2001/11/06
Solaris8 には、DiskSuiteというストレージ資源を統合的に管理するツールが付属している。今回は、IDEのプライマリとセカンダリインターフェイスに、1台づつドライブを接続し、RAID1構成を構築してみた。
「Solaris8 Software 2of 2」の、/Solaris_8/EA/products/DiskSuite_4.2.1 に含まれる。ディレクトリEA(Eary Access)に含まれるが、これが製品版とのことだ。
ISO9660イメージの作成
インストール時に使用したCDROMドライブは既に取り外してあり、セカンダリIDEのプライマリには、既に稼働しているプライマリIDEと同じ型番のドライブが接続されている。
Solarisには、ループバックデバイスを利用し、ファイルをドライブに見立ててアクセスする機能がある。「Solaris8 Software 2of 2」のISO9660イメージを作成し、適当なディレクトリに置きループバックデバイスを設定すればよい。
今回は、Windows2000上の、WinCDR6を利用した。 CD->CDのコピー作成を選択し、実行すると、"C:\Program Files\WinCDR\" に一時ファイルが作成されるので、適当な名前にリネームし、Solarisマシンに移した。
ループバックデバイスによる、ISO9660イメージの参照は以下の手順でできるい。
ループバックデバイスを割り当てる
# lofiadm -a <イメージファイルの絶対PATH>
/dev/lofi/1 ← 割り当てられたデバイスファイル名が表示される
ループバックデバイスをマウントする。
# mount -F hsfs /dev/lofi/1 /mnt
/mnt 以下に、「Solaris8 Software 2of 2」 が見えるはずだ。
使い終わっって元にもどすには、以下のように操作する。
# umount /mnt
# lofiadm -d /dev/lofi/1Solstice DiskSuite のインストール
/mnt/Solaris_8/EA/products/DiskSuite_4.2.1の ./Installer を起動。
Xが必要なので、小生は、VNC配下で動かした。
また、DiskSuiteは、SUNWwbmc、SUNWmga が予めインストールされている必要がある。OS導入時に、フルインストールを行っていない場合は、インストールできない可能性がある。SUNWwbmc、SUNWmgaは、DiskSuiteと同じ「Solaris8 Software 2of 2」に含まれている。
/usr/sbin 以下に、metaで始まるファイルがインストールされる。また、起動時に metadb の設定を参照するようになる。
今回は、プライマリのディスクを全てミラーするため、セカンダリ側も全く同じようにスライスを設定する。
状態データベース用のスライスの作成
各ディスクシリンダ情報を記録するための、専用のスライス(パーティション)を用意しなければならない。本来、新規にインストールするときに配慮すべきだが、既に運用中のものは空きがないのが普通だ。
そこで、swap スライスを少々削って、状態データベース用の領域を作成するこ状態データベースは、複製1つあたり、64KBあればよいようだ。今回は、17シリンダ約16MBを用意した。
# format
format > partitionswap( c0d0s3 )の領域を調整する。私の場合、swapに、シリンダの3から1043を割り当てていた。再割振り後は、3-19を、状態データベース( c0d0s4 )とし、20-1043を swap( c0d0s0 )とした。format>partition>print コマンドで確認すると以下のようになった。
Part Tag Flag Cylinders Size Blocks
0 root wm 5206 - 13528 8.00GB (8323/0/0) 16779168
1 var wm 1044 - 5205 4.00GB (4162/0/0) 8390592
2 backup wm 0 - 39699 38.16GB (39700/0/0) 80035200
3 swap wu 20 - 1043 1008.00MB (1024/0/0) 2064384
4 unassigned wm 3 - 19 16.73MB (17/0/0) 34272
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 home wm 13529 - 39699 25.16GB (26171/0/0) 52760736
8 boot wu 0 - 0 0.98MB (1/0/0) 2016
9 alternates wu 1 - 2 1.97MB (2/0/0) 4032
新しいセカンダリ側のディスクにスライスを作成する。
ます、format コマンドの fdisk サブコマンドで x86 boot パーティション と Solaris 用のパーティションを作成し、partitionサブコマンドで、後者内にスライスを作成する。
セカンダリ側のSolaris x86 boot パーティションの作成
まず、format コマンドのサブコマンド fdisk で、Solaris x86 boot パーティションを設定する。プライマリ側の設定を参照しながら行えば良いだろう。
Solaris x86 boot パーティションのコピー
x86 boot パーティションは、DiskSuiteの管理対象外だ。万一、プライマリ側に障害が発生場合、x86 bootパーティションがないと、セカンダリ側のディスクから起動しないことになる。
dd コマンドを用いデータ抽出書込みを行う。
# dd if=/dev/dsk/c0d0p1 of=/dev/dsk/c1d0p1
22176+0 records in
22176+0 records out
参考までに、p0 は mbr p1〜p4 が各物理パーティションを指す
partiton サブコマンドによるスライスの作成
プライマリ側の設定を参照しながら、全く同じ設定をセカンダリに施せばよい。
x86 boot パーティションのコピーの確認
/etc/vfstab に下記のように設定をし、mount し x86 bootパーティションがコピーできたかどうか確認する。
/dev/dsk/c1d0p0:boot - /boot2 pcfs - no -
状態データベースの作成
プライマリ側のスライスは、c0d0s4、セカンダリ側は、c1d0s4 だ。最低3個の状態データベースの作成が必要だ。双方に、2つづつ計4個を作成する
# metadb -a -f -c 2 c0d0s4 c1d0s4
metadbコマンドで設定を確認する
# metadb
flags first blk block count
a u 16 1034 /dev/dsk/c0d0s4
a u 1050 1034 /dev/dsk/c0d0s4
a u 16 1034 /dev/dsk/c1d0s4
a u 1050 1034 /dev/dsk/c1d0s4
メタデバイスの設計
下表のような名前の割振りをする。メタデバイス名として指定できる名称は、%ls /dev/md/dsk とすればわかる。
| プライマリ | セカンダリ | ||||
| c0d0 | メタデバイス名 | c1d0 | メタデバイス名 | ミラーセットのメタデバイス名 | |
| / | c0d0s0 | d101 | c1d0s0 | d102 | d100 |
| /var | c0d0s1 | d11 | c1d0s1 | d12 | d10 |
| swap | c0d0s3 | d31 | c1d0s3 | d32 | d30 |
| /export/home | c0d0s7 | d71 | d1d0s7 | d72 | d70 |
ルートファイルシステムのミラーリング設定
metainit コマンドで、実際のデバイスとメタデバイスを関連づける。
# metainit -f d101 1 1 c0d0s0
d101: Concat/Stripe is setup
# metainit d102 1 1 c1d0s0
d102: Concat/Stripe is setup
# metainit d100 -m d101
d100: Mirror is setup
# metaroot d100
# lockfs -fa
metaroot d100 を実行すると、/etc/vfstab のブートデバイスの / にかかわる行が書き換わる。念のため内容を確認する。
% /etc/vfstab
/dev/md/dsk/d100 /dev/md/rdsk/d100 / ufs 1 no logging
再起動後同期をとる
# reboot
: (しばらく待つ)
# metattach d100 d102
d100: submirror d102 is attached
同期をとると、せわしくミラーリングがはじまる。
ミラーの状況は、metastat コマンドが、X上の、metatool コマンドで確認する。
同期をとっている間に、システム停止した場合でも、再起動時に同期が再開される。
swap ファイルシステムのミラーリング
メタデバイスのとの関連づけ
# metainit -f d31 1 1 c0d0s3
# metainit d32 1 1 c1d0s3
1面ミラーの作成
# metainit d30 -m d31
swap がミラーを参照するよう、/etc/vfstab ファイルを編集
/dev/dsk/c0d0s3 - - swap - no -
↓
/dev/md/dsk/d30 - - swap - no -
再起動後、同期を取る
# reboot
# metattach d30 d32
/var /export/home についても同様に以下の作業を行う
# metainit -f d11 1 1 c0d0s1
d11: Concat/Stripe is setup
# metainit d12 1 1 c1d0s1
d12: Concat/Stripe is setup
# metainit d10 -m d11
d10: Mirror is setup
# metainit -f d71 1 1 c0d0s7
d71: Concat/Stripe is setup
# metainit d72 1 1 c1d0s7
d72: Concat/Stripe is setup
# metainit d70 -m d71
d70: Mirror is setup
/etc/vfstab の該当部分を書き換える
/dev/md/dsk/d10 /dev/md/rdsk/d10 /var ufs 1 no logging
/dev/md/dsk/d70 /dev/md/rdsk/d70 /export/home ufs 2 yes
logging,rq
再起動し、同期をとる。
# reboot
# metattach d10 d12
# metattach d70 d72
これで、めだたく、ディスクがミラーリング構成になった。万一の障害時のリカバリの方法については、別ページにまとめたいと思っている。
六ちゃん masaharu@mutsuyoshi.net