ライン

ポイント:ソフトウェアミラーリング機能を機能させる

ライン

 はじめに

gmirror

 本ページは、過去に同様の設定を行ったページの更新版となっています。
直前版との違いは、FreeBSD 7.1-RELEASEで実施している程度の差です。

 FreeBSD 7.1-RELEASE

準備

 今回手元にあるのは、80GBのウェスタンデジタルのWD Caviar Blue。3 Gb/s, 8 MB キャッシュ、7200 RPM。

ad4: 76293MB <WDC WD800JD-75MSA3 10.01E04> at ata2-master SATA150
ad6: 76293MB <WDC WD800JD-75MSA3 10.01E04> at ata3-master SATA150

 FreeBSD で ad4とかad6の意味合いは、以下のようなものになっています。
IDE/ATA だと ad[0-3] 、シリアルATA(SATA)だと ad[4-7]になります。

DEV 規格 IDE 0/1 M/S
ad0 IDE Primary Master
ad1 IDE Primary Slave
ad2 IDE Secondary Master
ad3 IDE Secondary Slave
ad4 SATA Primary Master
ad5 SATA Primary Slave
ad6 SATA Secondary Master
ad7 SATA Secondary Slave

 シリアルATAのプライマリマスター・セカンダリマスター接続で接続されているディスク2台ということがわかります。
 今回もスペアディスクは準備していません。

作業

 FreeBSD 7.xでは、カーネルをリコンパイルするなどの作業無く、gmirrorやgstripeが利用できます。
gmirrorのマニュアルとFreeBSD サーバ構築のgmirrorを眺めつつ、作業をしてみることにしましょう。

 今回も FreeBSD 7.1-RELEASEは導入済。
DVD-Rに焼いたFreeBSD インストールCD等メディアをCD装置トレイに入れて起動します。
導入と同じ流れで、日本→日本語の選択。
ad6側は、何もしていなかったので、ad4に同様にスライスだけは切っておきました。
(このタイミングで、ad6側に /usr1 /var1 /tmp1 などという名称で同じ大きさにして掘り、 w で書き込んでおいただけ)

 トップに戻してメニューで Fixit を選択。

 ミラーリング

設定

 では、開始します。

CDROM/DVDで選択して Fixit# のプロンプトを確認します。

Fixit# chroot /dist
Fixit# mount -t devfs devfs /dev
Fixit# kldload geom_mirror.ko 
Fixit# exit

sysctl kern.geom.debugflags=16 とか gmirror label -v gm0 /dev/ad4 などが必要そうなログがあがっていて、試行錯誤したのですが、結局は ls -la /dev/mirror を見たら、ちゃんとできていたので、この辺りは無視で先に進めました。

Fixit# mount /dev/mirror/gm0s1a /mnt
Fixit# edit /mnt/boot/loader.conf

エディタは ee。1行を書きます。

geom_mirror_load="YES"

同様に、fstabを編集します。

Fixit# cp -p /mnt/etc/fstab /mnt/etc/fstab.orig
Fixit# edit /mnt/etc/fstab

で中身を以下に変更。ad4の部分を mirror/gm0 に置き換えます。

# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/mirror/gm0s1b      none            swap    sw              0       0
/dev/mirror/gm0s1a      /               ufs     rw              1       1
/dev/mirror/gm0s1e      /tmp            ufs     rw              2       2
/dev/mirror/gm0s1f      /usr            ufs     rw              2       2
/dev/mirror/gm0s1d      /var            ufs     rw              2       2
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0

こんな感じ。以下は、編集前の内容(参考)

# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad4s1b             none            swap    sw              0       0
/dev/ad4s1a             /               ufs     rw              1       1
/dev/ad4s1e             /tmp            ufs     rw              2       2
/dev/ad4s1f             /usr            ufs     rw              2       2
/dev/ad4s1d             /var            ufs     rw              2       2
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0

これで終了。

 再起動します。

起動時には既にgm0 として問題なくあがってきたと思います。

シンクロは勝手に始まっていました。状況を眺めることにしました。

ad4: 76293MB <WDC WD800JD-75MSA3 10.01E04> at ata2-master SATA150
acd0: CDRW <SONY CD-RW/DVD-ROM CRX310S/VDK2> at ata2-slave SATA150
ad6: 76293MB <WDC WD800JD-75MSA3 10.01E04> at ata3-master SATA150
lapic1: Forcing LINT1 to edge trigger
SMP: AP CPU #1 Launched!
GEOM_MIRROR: Device mirror/gm0 launched (1/2).
GEOM_MIRROR: Device gm0: rebuilding provider ad6.
Trying to mount root from ufs:/dev/mirror/gm0s1a
.
.
.
# gmirror status
      Name    Status  Components
mirror/gm0  DEGRADED  ad4
                      ad6 (3%)
.
.
.
# gmirror status
      Name    Status  Components
mirror/gm0  DEGRADED  ad4
                      ad6 (58%)
.
.
.
# gmirror status
      Name    Status  Components
mirror/gm0  COMPLETE  ad4
                      ad6

と完成しました。

 コンソールには、「GEOM_MIRROR: Device gm0: rebuilding provider ad6 finished.」と表示されています。
20分以内で終わっていたと思います。

# gmirror list
Geom name: gm0
State: COMPLETE
Components: 2
Balance: split
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 2
ID: 3847087083
Providers:
1. Name: mirror/gm0
   Mediasize: 79999999488 (75G)
   Sectorsize: 512
   Mode: r5w5e6
Consumers:
1. Name: ad4
   Mediasize: 80000000000 (75G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: NONE
   GenID: 0
   SyncID: 2
   ID: 1989183943
2. Name: ad6
   Mediasize: 80000000000 (75G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: NONE
   GenID: 0
   SyncID: 2
   ID: 4116387001

こんな感じでできあがりです。

 ディスクの予防交換(2本ともに)

手順書のメモ

 これまで動作させていたハードディスクを交換することにしました。
まだ1年半ですが、他のマシンが故障した直後だったので、交換することにしました。

 これまでは、80GBの2本でしたが、今回は170GBの2本に入れ替えます。
両方が同じである必要はありませんが、80GBのハードディスクを探す方がこの時代では面倒です。

## 作業大項目 操作 確認点 開始時間
1 ログイン root権限(以下ログインの手順は略) 正常にログインできること 15:44
2 マシンを停止 shutdown -p now 電源offを確認し、電源ケーブルをはずす
3 ディスク0をはずす 80GB(SATA)のディスク(正)を外す
4 ディスク0に新規を追加 170GB(SATA)を追加。ケーブルは外した状態
5 旧HDDは大切に保管 持参したケースに入れて保管(以降の手順は略)
6 起動 電源ケーブルを接続、Power ONを実施 正常にログイン窓が出ること
7 RAID状態を確認 gmirror status どっちが DEGRADEになっていることを確認
ad6しかいない状態(DEGRADE)
15:47
8 見えない逆側を忘れる gmirror forget gm0
9 RAID状態を確認 gmirror status 片系動作になっていることを確認する
10 マシンの停止 shutdown -p now
11 ハードディスクケーブル接続 HDDの電源とSATAを接続 15:50
12 起動 電源ケーブルを接続、Power ONを実施 正常にログイン窓が出ること
13 RAID状態を確認 gmirror status 同じ状態
14 新規側を追加 gmirror insert -v gm0 ad4 15:53
15 RAID状態を確認 gmirror status シンクロが再開。完了できたことを確認 16:23
16 マシンの停止 shutdown -p now 電源offを確認し、電源ケーブルをはずす 16:26
17 ディスク1をはずす 80GB(SATA)のディスク(副)を外す
18 ディスク1に新規を追加 170GB(SATA)を追加。ケーブルは外した状態
19 起動 電源ケーブルを接続、Power ONを実施 正常にログイン窓が出ること
20 RAID状態を確認 gmirror status ad4しか以内状態を確認(DEGRADE)
21 見えない逆側を忘れる gmirror forget gm0
22 RAID状態を確認 gmirror status 片系動作になっていることを確認する
23 マシンの停止 shutdown -p now 16:29
24 ハードディスクケーブル接続 HDDの電源とSATAを接続
25 起動 電源ケーブルを接続、Power ONを実施 正常にログイン窓が出ること
26 RAID状態を確認 gmirror status 片系動作になっていることを確認する
27 新規側を追加 gmirror insert -v gm0 ad6 16:31
28 RAID状態を確認 gmirror status シンクロが完了できるまで確認 17:00
16:04 (42%) 16:10 (63%) 16:20 (95%)
16:33 (7%) 16:38 (29%) 16:40(41%) 16:51(84%)

 同期されるには30分程度で完了していました。そんなに容量を使っていない状態であるからと思います


【改訂履歴】作成:2009/01/07
2009/06/10 … Namazu検索の窓を追加
2010/10/24 … ディスクの交換メモを追加
【参考リンク】

デル株式会社

Copyright © 1996,1997-2006,2007- by F.Kimura,