RAID5は書き込みホール問題があるので選択肢から外した結果ですが
とりあえず検証環境を…
メインのデスクトップ
- CPU:Core i5 2500K(検証時定格動作)
- メモリー:8GB PC3-12800
- データ用HDD:3年ほど使ってるWDの2TB(64MBキャッシュ)
- MB:ASUS P8Z68 V-LE
- CPU:Celeron G530
- メモリー:PC3-10600
- HDD:Seagate製、3TBのHDD ST3000DM001 ×3
- キャッシュ用SSD:シリコンパワー製、64GBのSSD SP064GBSSDE25S25
- MB: GIGABYTE GA-H61M-DS2 REV2.X
- BSL-WS-G2108M
これでPC間の転送速度が実測80MB/s程度は出ますが、サーバー内部での実測値が200MB/sを超えていて、1000BASE-Tでは足りないのでお金に余裕ができたらリンクアグリゲーションも試してみようと思います。
さて、本題ですがFreeBSD(on ZFS)は初めてなのでこちらのページを参考にしました。一部僕とは違うところがありますが大まかには先ほどのページと同じです。ただ、zrootの部分は3台のHDDにミラーリングし、残った部分をRAIDZ構成のデータ用ストレージプールとしてます。
以下、手順のメモです。
- FreeBSD(amd64)のインストールディスクから起動して、指示に従って"Partitioning"で"Shell"を選択する所まで進んでください。
- zpool.cacheを書き換えるための書き換え可能な場所(tmp)を用意します。
# umount -f /dev/md1
# mdmfs -s 512M md1 /tmp
- デバイス名を確認。
# dmesg | fgrep MB
ここで容量などからインストールするHDDのデバイス名を確認してください。僕の場合はHDDがada0、ada1、ada2、トランザクション処理用のログに使用する(つまりzil用)SSDはada3でしたのでこれを前提として話を進めます。 - GPT形式で、パーティションを切ります。8GBをzroot、8GBをSWAP、残りをデータ用とします。
先にHDDのパーティションを切ります。
# gpart create -s gpt ada0 (残り2台にも同じ事を行う)
# gpart add -b 40 -s 64k -t freebsd-boot ada0 (残り2台にも同じ事を行う)
# gpart add -s 8G -t freebsd-swap -l swap0 ada0 (残り2台にも同じ事を行う)
# gpart add -s 8G -t freebsd-zfs -l disk0 ada0
# gpart add -s 8G -t freebsd-zfs -l disk1 ada1
# gpart add -s 8G -t freebsd-zfs -l disk2 ada2
# gpart add -t freebsd-zfs -l data0 ada0
# gpart add -t freebsd-zfs -l data1 ada1
# gpart add -t freebsd-zfs -l data2 ada2
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada2
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0 (残り2台にも同じ事を行う)
SSDのパーティションを切ります。僕は64GB割り当てましたが8GBも有れば十分な気がします。 # gpart create -s gpt ada3
# gpart add -t freebsd-zfs -l ssd-zil ada3
-
zpoolを作成します。エラーが出ますがマウントできないだけで作成はできているのでスルーします。
# zpool create -f zroot mirror /dev/gpt/disk0 /dev/gpt/disk1 /dev/gpt/disk2
# zpool set bootfs=zroot zroot
# zfs set checksum=fletcher4 zroot
# zfs set mountpoint=/mnt zroot
# zfs create zroot/usr
# zfs create zroot/usr/home
# zfs create zroot/var
# zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp
# zfs create -o compression=lzjb -o setuid=off zroot/usr/ports
# zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles
# zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages
# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/usr/src
# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash
# zfs create -o exec=off -o setuid=off zroot/var/db
# zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg
# zfs create -o exec=off -o setuid=off zroot/var/empty
# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log
# zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail
# zfs create -o exec=off -o setuid=off zroot/var/run
# zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/tmp
- データ用のプールも作成します。
# zpool create -f data raidz data0 data1 data2 log ssd-zil
# zfs set mountpoint=/home data
- あとはインストール作業です。先ほどの参考ページの手順(11)~と同じです。
poolをexportしたのちimportします。キャッシュファイルは、先ほど作った/tmp上に作成します。
# zpool export zroot
# zpool import -o cachefile=/tmp/zpool.cache zroot
- symlink/sticky bitをたてます。
# chmod 1777 /mnt/tmp
# cd /mnt ; ln -s usr/home home
# chmod 1777 /mnt/var/tmp
- FreeBSDのKernel/バイナリ等を展開します。
# sh
# cd /usr/freebsd-dist
# export DESTDIR=/mnt
# for file in base.txz lib32.txz kernel.txz doc.txz ports.txz src.txz;
# do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); done
- zpool.cacheをコピーします。
# cp /tmp/zpool.cache /mnt/boot/zfs/zpool.cache
- ZFSで起動する設定を加えます。
# echo 'zfs_load="YES"' >> /mnt/boot/loader.conf
# echo 'vfs.root.mountfrom="zfs:zroot"' >> /mnt/boot/loader.conf
# cat << EOF > /mnt/etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/gpt/swap0 none swap sw 0 0
EOF
# echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf
- すべての領域をアンマウントします。
# zfs set readonly=on zroot/var/empty
# zfs umount -a
アンマウントが失敗した場合は強制アンマウントします。
# umount -f /mnt
- マウントポイントをセットします。
# zfs set mountpoint=legacy zroot
# zfs set mountpoint=/tmp zroot/tmp
# zfs set mountpoint=/usr zroot/usr
# zfs set mountpoint=/var zroot/var
- 再起動します。
# sync;sync;sync
# reboot
- OS再起動後、キーマップ・インタフェースを設定します。
# vi /etc/rc.conf
hostname="host1.example.com"
ifconfig_re0="DHCP"
keymap="jp.106"
- rootアカウントのパスワード設定・タイムゾーン設定を行う。
# passwd
# tzsetup
- 再起動します。
# sync;sync;sync
# reboot
0 件のコメント:
コメントを投稿