DiskSuite 資料一覧

/(ルート)、及びswap領域をミラーリングする方法

2007/9/12更新

対応バージョン: 4.2.1

ミラーリング概要

/(ルート)やswapなどのスライスをミラーリングする場合、通常のOSインストール状態において既にその領域が使用されているので以下の方法で設定する必要がある。

まず1面ミラーを作成する
上記からブートし直す
サブミラーを連結する

それ以外のスライスはまず1面ミラーを作成し、直ちにサブミラーを連結することができる。

ミラーリング

ここでは2台の内臓HDDに対してミラーリング設定をするものとし、各スライスの用途を以下のとおりとする。

1台目(c0t0d0)

0 : /

1 : swap

7 : メタDB格納

2台目(c0t1d0)

0 : c0t0d0s0(/)のミラーリング用

1 : c0t0d0s1(swap)のミラーリング用

7 : メタDB格納

1台目のディスク(c0t0d0)はすでにOSがインストールされているものとし、2台目のディスク(c0t1d0)に対してformatコマンドを使用して1台目のディスクと同じレイアウトに設定しておく。

メタDBの複製を作成

2台のディスクそれぞれのスライス7にメタDBの複製を作成する。

# metadb
metadb: host_a: there are no existing databases
→ 最初はメタDBが存在しないので上記のメッセージが出る

# metadb -a -f -c 2 c0t0d0s7 c0t1d0s7

# metadb
 flags    first blk  block count
 a    u   16         1034        /dev/dsk/c0t0d0s7
 a    u   1050       1034        /dev/dsk/c0t0d0s7
 a    u   16         1034        /dev/dsk/c0t1d0s7
 a    u   1050       1034        /dev/dsk/c0t1d0s7

/(ルート)のミラーリング

# metainit -f d10 1 1 c0t0d0s0 ← ストライプ領域作成(既存の/)

# metainit d20 1 1 c0t1d0s0 ← ストライプ領域作成(/のミラー用)

d10、d20に続く最初の1はこのミラーに1つのストライプがあることを示し、次の1は各ストライプが1つのスライスで構成されていることを示す。

# metainit d0 -m d10 ← d10が所属する1面ミラー作成

# metaroot d0 ← d0でブート可能にする
→ /etc/vfstabの/スライスが以下のように編集される

#device        device          mount FS   fsck mount   mount
#to mount      to fsck         point type pass at boot options
:
/dev/md/dsk/d0 /dev/md/rdsk/d0 /     ufs  1    no      -

→ /etc/systemに以下の内容が追加される

* Begin MDD root info (do not edit)
forceload: misc/md_trans ← (*)
forceload: misc/md_raid ← (*)
forceload: misc/md_hotspares ← (*)
forceload: misc/md_sp ← (*)
forceload: misc/md_stripe
forceload: misc/md_mirror
forceload: drv/pcipsy
forceload: drv/simba
forceload: drv/uata
forceload: drv/dad
rootdev:/pseudo/md@0:0,0,blk
* End MDD root info (do not edit)
* Begin MDD database info (do not edit)
set md:mddb_bootlist1="dad:3:16 dad:3:1050 dad:11:16 dad:11:1050"
* End MDD database info (do not edit)

(*) RAIDの構成によってはOSブート時にこれらドライバのロードエラーが出ることがあるが特に問題はない。気になるようなら記述を削除するか先頭に「*」を付加してコメントアウトすれば次回ブート時からは出力されない。尚、RAID構成がミラーリングの場合はこの4つドライバはロードエラーになる。

参考までに、各ドライバのエラーメッセージとエラーの出力条件を以下に示す。

WARNING: forceload of misc/md_trans failed

トランスデバイス(UFSロギング)が設定されていない。

WARNING: forceload of misc/md_raid failed

RAID5デバイスが設定されていない。

WARNING: forceload of misc/md_hotspares failed

/(ルート)がメタデバイス上にある場合にホットスペアが指定されていない。空のホットスペア集合を定義するとこのメッセージは表示されなくなる。

WARNING: forceload of misc/md_sp failed

ソフトパーティションを設定していない場合。

# lockfs -fa ← ファイルシステムのロック

# reboot ← リブート

(リブート中)

# metattach d0 d20 ← サブミラー連結(マシンの性能によりattachに数十分〜数時間かかる)

# metastat d0 
d0: Mirror
    Submirror 0: d10
      State: Okay
    Submirror 1: d20
      State: Resyncing ← 同期中        
    Resync in progress: 3 % done ← ここが100%になるまで待つ
    Pass: 1
    Read option: roundrobin (default)
    Write option: parallel (default)
    Size: 141192000 blocks

d10: Submirror of d0 
    State: Okay
    Size: 141192000 blocks 
    Stripe 0:
        Device      Start Block  Dbase State    Hot Spare
        c0t0d0s0           0     No    Okay

d20: Submirror of d0
    State: Resyncing ← 同期が終了するとOkayに変わる
    Size: 141192000 blocks
    Stripe 0:
        Device      Start Block  Dbase State    Hot Spare
        c0t1d0s0           0     No    Okay

swapのミラーリング

# metainit -f d11 1 1 c0t0d0s1 ← ストライプ領域作成(既存のswap)

# metainit d21 1 1 c0t1d0s1 ← ストライプ領域作成(swapのミラー用)

# metainit d1 -m d11 ← d11が所属する1面ミラー作成

# vi /etc/vfstab ← swapデバイスを上記のメタデバイスに変更

#device        device        mount FS   fsck mount   mount
#to mount      to fsck       point type pass at boot options
:
/dev/md/dsk/d1 -             -     swap -    no      -

# reboot ← リブート

(リブート中)

# metattach d1 d21 ← サブミラー連結(マシンの性能によりattachに数分〜数十分かかる)

# metastat d1
d1: Mirror
    Submirror 0: d11
      State: Okay
    Submirror 1: d21 
      State: Okay
    Pass: 1
    Read option: roundrobin (default)
    Write option: parallel (default)
    Size: 2106432 blocks

d11: Submirror of d1
    State: Okay
    Size: 2106432 blocks
    Stripe 0:
        Device      Start Block  Dbase State    Hot Spare
        c0t0d0s1           0     No    Okay

d21: Submirror of d1
    State: Okay
    Size: 2106432 blocks
    Stripe 0:
        Device      Start Block  Dbase State    Hot Spare
        c0t1d0s1           0     No    Okay

# swap -l
swapfile             dev  swaplo blocks   free
/dev/md/dsk/d1      85,1      16 2106416 2106416

core dumpの出力先をデフォルトのswap領域(/dev/dsk/s1)からメタデバイス(/dev/md/dsk/d1)に変更

# dumpadm -d swap

# dumpadm
      Dump content: kernel pages
       Dump device: /dev/md/dsk/d1 (swap)
Savecore directory: /var/crash/host_a
  Savecore enabled: yes