なんとなくGEOMの時代らしいことは知っていたが、GELIだけじゃないのね。 普通にインストールが完了した時点で、再起動せずに Alt-F4 でコンソール呼び出して作業、ってところがいい。
…けど、何かあった時の事を考えると FreeSBIE CD からブートしてRAID構成してからインストールの方が安心だな。
めでたく? HostRAID によるハードウェアミラーリングに失敗したことだし、後で gmirror 使ってミラーリングしてみやう。
インストーラ内で作業するんでなければ Handbook の方が便利。 bootセクターの書き込み方とか、bsdlabel プログラムとか、昔と違う〜
camcontrol devlist camcontrol rescan scbus0 kldload geom_mirror gmirror label -vnb split gm0 da1 da2 fdisk -vBI /dev/mirror/gm0 bsdlabel -wB /dev/mirror/gm0s1 bsdlabel -R /dev/mirror/gm0s1 gm0s1disklabel newfs -U -L root /dev/mirror/gm0s1a newfs -U -L var /dev/mirror/gm0s1d newfs -U -L usr /dev/mirror/gm0s1e newfs -U -L home /dev/mirror/gm0s1f mount /dev/mirror/gm0s1a /mnt mkdir /mnt/var /mnt/usr /mnt/home dump -L -0 -f- / |(cd /mnt && restore -r -v -f-) mount /dev/mirror/gm0s1d /mnt/var dump -L -0 -f- /var |(cd /mnt/var && restore -r -v -f-) mount /dev/mirror/gm0s1e /mnt/usr dump -L -0 -f- /usr |(cd /mnt/usr && restore -r -v -f-) mount /dev/mirror/gm0s1f /mnt/home dump -L -0 -f- /home |(cd /mnt/home && restore -r -v -f-) rm /mnt/restoresymtable /mnt/var/restoresymtable /mnt/usr/restoresymtable /mnt/home/restoresymtable echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf echo "1:da(1,a)/boot/loader" > /mnt/boot.config echo "gmirror configure -b prefer gm0" > /mnt/etc/rc.early chmod +x /mnt/etc/rc.early echo "gmirror configure -b split gm0" > /mnt/etc/rc.local chmod +x /mnt/etc/rc.local cp /mnt/etc/fstab /mnt/etc/fstab.da0 # バックアップ sed 's/da0/mirror\/gm0/' /mnt/etc/fstab.da0 > /mnt/etc/fstab gmirror configure -a gm0 gmirror rebuild gm0 da2 # 一応リビルドしとく
10GB以上あるディスクだったら何でも適用できる gm0s1disklabel ファイル:
# /dev/mirror/gm0s1: 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 512M 16 4.2BSD 4096 16384 75 b: 1G * swap c: * 0 unused 0 0 # "raw" part, don't edit d: 4G * 4.2BSD e: 4G * 4.2BSD f: * * 4.2BSD
昔と違ってセクター数を電卓で計算しなくていいんだねえ。
dump+restore中に gstat -I 5s コマンドを実行してみたところ。ディスクアクセス状況の表示おもろい。
dT: 5.001 flag_I 5000000us sizeof 240 i -1
L(q) ops/s r/s kBps ms/r w/s kBps ms/w %busy Name
0 0 0 0 0.0 0 0 0.0 0.0| fd0
0 0 0 0 0.0 0 0 0.0 0.0| acd0
3 316 316 846 6.3 0 6 8.0 76.4| da0
3 316 316 846 6.3 0 6 8.4 76.5| da0s1
0 0 0 0 0.0 0 0 0.0 0.0| da0s1a
0 0 0 0 0.0 0 0 0.0 0.0| da0s1b
0 0 0 0 0.0 0 0 0.0 0.0| da0s1c
0 0 0 0 0.0 0 0 0.0 0.0| da0s1d
0 0 0 4 28.4 0 0 0.0 1.1| da0s1e
3 316 316 842 6.3 0 6 8.9 76.6| da0s1f
0 0 0 0 0.0 0 0 0.0 0.0| md0
0 492 56 160 3.8 437 2512 64.0 85.8| da1
1 547 111 324 3.7 436 2509 72.0 99.1| mirror/gm0
1 492 56 164 3.5 436 2509 54.3 81.9| da2
1 547 111 324 3.7 436 2509 72.1 99.1| mirror/gm0s1
1 132 42 176 2.2 90 1225 10.6 99.0| mirror/gm0s1a
0 0 0 0 0.0 0 0 0.0 0.0| mirror/gm0s1b
0 0 0 0 0.0 0 0 0.0 0.0| mirror/gm0s1c
0 0 0 0 0.0 0 0 0.0 0.0| mirror/gm0s1d
0 0 0 0 0.0 0 0 0.0 0.0| mirror/gm0s1e
0 415 68 148 4.7 346 1284 88.8 45.3| mirror/gm0s1f
ハードディスク交換後の オンラインでのリビルド手順。対象が da2 だった場合
# 再スキャンする前に、failしたドライブに対する設定を消去しておく gmirror forget gm0 # SCSIバスを再スキャンする。camcontrol rescan scbus0 や camcontrol rescan scbus0:3:0 などではうまくいかない camcontrol rescan all # ちゃんと認識したかどうかを確認する camcontrol devlist # 新しいドライブをミラーに参加させる gmirror insert gm0 da2
3台でミラーを構成した状態から、ID=0のドライブを抜いてリブートしたところ、無事再起動に成功。
gmirror status で確認すると、DEGRADED と表示される。
で、gmirror forget gm0をしないで camcontrol rescan all をしたら勝手にリビルド開始した。
rescan で新たに割り当てられる da2 が元々ミラーに参加していて DEGRADED 状態になっていたからではあるが、
予想以上に gmirror いいな。
つーか過去の経験からいくと Software ミラーによるルートパーティションの構成としては、経験上最も管理が楽だ。
glabel (geom_label) を使うと、デバイスファイル名にかかわらず disk 内に記録された名前でアクセスできるという話。
ミラーリングしない場合に使うといいかも。
ports のとこはそのうち追従。CHANGES みると、mod_proxy ネタが多い感じだ。