Solstice DiskSuite によるミラーリング(RAID1)

六ちゃん masaharu@mutsuyoshi.net
修正 2003/11/21
作成 2001/11/06


Solaris8 には、DiskSuiteというストレージ資源を統合的に管理するツールが付属している。今回は、IDEのプライマリとセカンダリインターフェイスに、1台づつドライブを接続し、RAID1構成を構築してみた。


Solstice DiskSuite のインストール

 「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/1

Solstice 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 > partition

swap( 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 -


Solstice DiskSuite のインストール

状態データベースの作成

プライマリ側のスライスは、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