ASUS E35 M1-M PRO 導入。仮想環境を使わせる講義用のサーバが シングルコアだったので、このボードに引っ越し作業開始。 おー、FreeBSD 8 うごかねー! てことで、FreeBSD 9.0BETA-1で挑戦。 久々にFreeBSDのインストーラ使う。今回から変わってるし。 オールzfsが選べるのかなと思ったが、ようわからん、できないよね? ていうか全部zfsにしなければ行けない理由があるわけでもないので、 これまで同様 /, /var, /usr はgmirrorにして、残りのデータ用 パーティションを zfs でどかん、というシステム構築のメモ。
で、今回はインストーラでHDDの領域確保にGUIDを選んだので その場合の手順。GUID管理のHDD操作は御初。2つのHDDを同じパーティション状態に 持ち込みたいのだが、以前のように bsdlabel -e でまるまる コピーってのができなくて面倒じゃのう。
大まかな手順はこう。
/ | 1GB |
swap | 4GB |
/var | 4GB |
/usr | 22GB |
/z | 残り全部 |
dd if=/dev/zero of=/dev/ada1 count=64 gpart create -s GPT ada1 gpart bootcode -b /boot/pmbr ada1 bootcode written to ada1 gpart add -b 34 -s 128 -t freebsd-boot ada1 gpart bootcode -p /boot/gptboot -i 1 ada1
これで2台目HDDはこんな感じになるはず。
gpart list ada1
Geom name: ada1
modified: false
state: OK
fwheads: 16
fwsectors: 63
last: 3907029134
first: 34
entries: 128
scheme: GPT
Providers:
1. Name: ada1p1
Mediasize: 65536 (64k)
Sectorsize: 512
Stripesize: 0
Stripeoffset: 17408
Mode: r0w0e0
rawuuid: 9c467d8f-cfe4-11e0-b841-f46d04d83082
rawtype: 83bd6b9d-7f41-11dc-be0b-001560b84f0f
label: (null)
length: 65536
offset: 17408
type: freebsd-boot
index: 1
end: 161
start: 34
Consumers:
1. Name: ada1
Mediasize: 2000398934016 (1.8T)
Sectorsize: 512
Mode: r0w0e0
ada1を上記の状態から始めて、
ada0p1 64KB freebsd-boot ada0p2 1GB freebsd-ufs label=root ada0p3 4GB freebsd-swap label=swap ada0p4 4GB freebsd-ufs label=var ada0p5 22GB freebsd-ufs label=usr ada0p6 残り freebsd-ufs label=zv0
のそっくりさん状態に持っていく。
gpart add -t freebsd-ufs -l root -s 1073672192B ada1 ada1p2 added gpart add -t freebsd-swap -l swap -s 4g ada1 ada1p3 added gpart add -t freebsd-ufs -l var -s 4g ada1 ada1p4 added gpart add -t freebsd-ufs -l usr -s 22g ada1 ada1p5 added gpart add -t freebsd-ufs -l zv0 -s 1967095021568B ada1 ada1p6 added
ada1のほうのrootパーティションを未フォーマット状態のままgmirror化。
gmirror load gmirror label -b split root ada1p2 gmirror status Name Status Components mirror/root COMPLETE ada1p2 (ACTIVE) newfs -j mirror/root mirror/root: 1023.9MB (2097008 sectors) block size 32768, fragment size 4096 using 4 cylinder groups of 256.00MB, 8192 blks, 16384 inodes. with soft updates super-block backups (for fsck -b #) at: 192, 524480, 1048768, 1573056 newfs: Can't stat mirror/root: No such file or directory Using inode 4 in cg 0 for 8388608 byte journal newfs: soft updates journaling set mount /dev/mirror/root /mnt
ada1の次期rootパーティションに、 現rootパーティションをまるまるコピーして、 fstabを gmirror のrootをマウントするように書き換える。
tar cfC - / --one-file-system . | tar xpfC - /mnt vi /mnt/etc/fstab /dev/ada0p2 / ufs rw 1 1 ↓ /dev/mirror/root / ufs rw 1 1 ZZで保存終了 umount /mnt
祈りながらリブート。F8などを押してブートデバイスをada1にしてみる。 どう? 行けた!
では、残る既存パーティション /var(ada0p4), /usr(ada0p5) を gmirror 化。 これは、現物を gmirror に入れた方が楽だからシングルユーザモードで。
shutdown now umount -a gmiror label -b split var ada0p4 gmiror label -b split usr ada0p5
fstabを書き換えておこう。
/dev/ada0p4 /var ufs rw 2 2 /dev/ada0p5 /usr ufs rw 2 2 ↓ /dev/mirror/var /var ufs rw 2 2 /dev/mirror/usr /usr ufs rw 2 2
おっと、ここでは /usr パーティションがないから ed を使おう。
ed /etc/fstab
/ada0p4
s,,mirror/var,
p
/ada0p5
s,,mirror/usr,
p
wq
準備いいかな? ではマルチユーザモードに戻そう。
[C-d]
ちゃんと上がったら、全ての gmirror パーティションの二重化。
df -hl Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/mirror/root 1031764 328808 620416 35% / devfs 1 1 0 100% /dev /dev/mirror/var 4122780 33320 3759640 1% /var /dev/mirror/usr 22699548 2504500 18379088 12% /usr /dev/ada0p6 1890802552 32836 1739505512 0% /z gmirror status Name Status Components mirror/root COMPLETE ada1p2 (ACTIVE) mirror/var COMPLETE ada0p4 (ACTIVE) mirror/usr COMPLETE ada0p5 (ACTIVE) # ここから二重化作業. rootにはada0を足し、varとusrにはada1を足している gmirror insert root ada0p2 gmirror insert var ada1p4 gmirror insert usr ada1p5
しばし待たれよ。同期を取り終わると以下のようになる。
gmirror status
Name Status Components
mirror/root COMPLETE ada0p2 (ACTIVE)
ada1p2 (ACTIVE)
mirror/var COMPLETE ada0p4 (ACTIVE)
ada1p4 (ACTIVE)
mirror/usr COMPLETE ada0p5 (ACTIVE)
ada1p5 (ACTIVE)
これでシステム用パーティションの二重化完了。あとは、
をやってみて、最後までうまく行けば完了。 HDD外した状態でマルチユーザモードまで行っちゃうと後が面倒なので注意。
さあ、どんどん行こう。次はzfs。FreeBSD9インストーラで /z として確保して「残り全部」のサイズを確保しておいた ada0p6, ada1p6 を zfsのpoolにする。仮にマウントしてあるものを外し、fstabからも除去。
umount /z ed /etc/fstab $ /dev/ada0p6 /z ufs rw 2 2 d wq 177
zpoolに突っ込む。mirrorとして。
zpool create zp0 mirror ada0p6 ada1p6 zpool status zp0 pool: zp0 state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM zp0 ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 ada0p6 ONLINE 0 0 0 ada1p6 ONLINE 0 0 0 errors: No known data errors
あとは、好きなパーティションを zfs create hogehoge していっておしまい。