- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!概要
{{outline}}
!!!目的
*FreeBSD での software-RAID の gmirror
*稼働している FreeBSD を対象とする。
*障害発生時の復旧方法を確認する。
*トリプルミラー
!!!作業手順
!!FreeBSD インストール
!!FreeBSD gmirror 開始
!シングル
*cd 起動
*gmirror 設定
# gmirror label -vb round-robin p1 /dev/da0p1
Metadata value stored on /dev/da0p1.
Done.
# gmirror label -vb round-robin p2 /dev/da0p2
Metadata value stored on /dev/da0p2.
Done.
# gmirror label -vb round-robin p3 /dev/da0p3
Metadata value stored on /dev/da0p3.
Done.
*gmirror 状況確認
# gmirror status
Name Status Components
mirror/p1 COMPLETE da0p1 (ACTIVE)
mirror/p2 COMPLETE da0p2 (ACTIVE)
mirror/p3 COMPLETE da0p3 (ACTIVE)
*ディスク設定#2
gmirror label -vb round-robin gm0 /dev/ada0
*gmirror 開始
gmirror load
!設定ファイル更新
*/ の領域を /mnt にマウント
# mount /dev/mirror/p2 /mnt
*gmirror 自動起動
echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf
*fstab 編集
cp -p /mnt/etc/fstab /etc/fstab.YYYYMMDD
sed -e 's!da0!mirror/!g' < /etc/fstab.YYYYMMDD > /etc/fstab
!再起動
*起動確認
df
mount
gmirror status
!ダブル
*da1 パーティションテーブル作成
gpart backup /dev/da0 > da0.gpart
gpart restore /dev/da1 < da0.gpart
*ブートコード書込み
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 da1
*gmirror 追加
gmirror insert p1 /dev/da1p1
gmirror insert p2 /dev/da1p2
gmirror insert p3 /dev/da1p3
*gmirror 状況確認
gmirror status
!トリプル
*上記ダブルと同様、デバイスは /dev/da2
!!障害時対応確認
!HDD 障害
Jun 14 09:18:44 fbsd64 kernel: mpt0: Rescan Port: 0
Jun 14 09:18:44 fbsd64 kernel: (da0:mpt0:0:2:0): lost device - 0 outstanding, 3 refs
Jun 14 09:18:44 fbsd64 kernel: GEOM_MIRROR: Device p3: provider da0p3 disconnected.
Jun 14 09:18:44 fbsd64 kernel: GEOM_MIRROR: Device p2: provider da0p2 disconnected.
Jun 14 09:18:44 fbsd64 kernel: GEOM_MIRROR: Device p1: provider da0p1 disconnected.
Jun 14 09:18:44 fbsd64 kernel: (da0:mpt0:0:2:0): removing device entry
!障害の検出
> gmirror status
Name Status Components
mirror/p1 DEGRADED da0p1 (ACTIVE)
mirror/p2 DEGRADED da0p2 (ACTIVE)
mirror/p3 DEGRADED da0p3 (ACTIVE)
!障害の復旧
!シングルでの起動確認
*1台目
*起動できた。
*起動できない場合は bootcode を確認
*2台目
!障害の復旧
*3台目
gmirror forget p1
gmirror forget p2
gmirror forget p3
gmirror insert p1 /dev/da1p1
gmirror insert p2 /dev/da1p2
gmirror insert p3 /dev/da1p3
Jun 14 09:09:28 fbsd64 kernel: GEOM_MIRROR: Device p3: rebuilding provider da1p3.
Jun 14 09:09:29 fbsd64 kernel: GEOM_MIRROR: Device p3: rebuilding provider da1p3 finished.
Jun 14 09:09:36 fbsd64 kernel: GEOM_MIRROR: Device p1: rebuilding provider da1p1.
Jun 14 09:09:36 fbsd64 kernel: GEOM_MIRROR: Device p1: rebuilding provider da1p1 finished.
Jun 14 09:09:47 fbsd64 kernel: GEOM_MIRROR: Device p2: rebuilding provider da1p2.
Jun 14 09:15:40 fbsd64 kernel: GEOM_MIRROR: Device p2: rebuilding provider da1p2 finished.
!!!参考サイト
*http://clicklog.org/article/128506336.html
*http://www.freebsd.org/doc/handbook/geom-mirror.html