FreeBSD 9でフルZFSシステム
第三世代Core iのスペックがかなり魅力的だったので、思わずサーバ用マシンを購入してしまいました。スペックはこんな感じです。
- Core i5-3570T
- メモリ 4GB*4
- SSD 180GB
- HDD 2TB*3
SSDとHDD*2は手元にあったり、別口で購入したりなのですが、総額で15万円くらいでしょうか。後々、メモリは32GBまで増やすことも考えています。
早速新しいマシンにFreeBSDをインストールしていくのですが、どうせならZFSを使ってみるべぇということで挑戦してみました。フルZFSなシステムを組むためには、インストーラを使わず手動でインストールしなければいけませんので、VMwareなどの仮想マシンで実験してから行う方が見通しがよくお勧めです。
参考にしたサイトは以下の通り。
- FreeBSD - でV型八磁筒RAID-Z2(笑)
- Booting from ZFS RAID0/1/5/6 in FreeBSD 9.0-RELEASE
- Using a swap file instead of swap partition in FreeBSD 8.x/9.x
今回の方針は
- 全部ZFSにするよ!
- システムは全部SSD上に入れるよ!
- HDD3台でRAIDZ1のZFSプールを組むよ!
- SSD上にZFSプールのキャッシュ領域とログ領域を用意するよ!
- Swapはパーティションじゃなくてファイルを使うよ!
とします。
まず最初に、FreeBSDのDVDISOイメージないしはメモリスティックイメージをこの辺から用意し、メディアに焼いておきます。これを用いてブート後、Live CDを選択し、rootでログインします(パスワードは空)。
# dmesg |grep MBなどで接続されているHDDのデバイス名を確認しましょう。うちではada[0-3]でした。
ada0:ATA-9 SATA 3.x device
ada0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
ada0: Command Queueing enabled
ada0: 171705MB (351651888 512 byte sectors: 16H 63S/T 16383C)
ada0: Previously was known as ad8
ada1 at ahcich3 bus 0 scbus3 target 0 lun 0
ada1:ATA-8 SATA 3.x device
ada1: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
ada1: Command Queueing enabled
ada1: 1907729MB (3907029168 512 byte sectors: 16H 63S/T 16383C)
ada1: Previously was known as ad10
ada2 at ahcich5 bus 0 scbus5 target 0 lun 0
ada2:ATA-8 SATA 3.x device
ada2: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
ada2: Command Queueing enabled
ada2: 1907729MB (3907029168 512 byte sectors: 16H 63S/T 16383C)
ada2: Previously was known as ad14
ada3 at ahcich6 bus 0 scbus6 target 0 lun 0
ada3:ATA-8 SATA 3.x device
ada3: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
ada3: Command Queueing enabled
ada3: 1907729MB (3907029168 512 byte sectors: 16H 63S/T 16383C)
ada3: Previously was known as ad16
基本的にDan's blogにある通りに進めていきます。
まずは以下の操作をada[0-3]のすべてのディスクに対して行います。
# gpart destroy ada0
# gpart create -s gpt ada0
# gpart add -s 128 -t freebsd-boot ada0
状態を確認したいときには次のコマンドで。
# gpart show
ada0にZFSルート(zroot)、キャッシュ(l2arc)、ログ(zil)の各パーティションを作成。
# gpart add -s 64G -t freebsd-zfs -l zroot ada0
# gpart add -s 48G -t freebsd-zfs -l l2arc ada0
# gpart add -s 16G -t freebsd-zfs -l zil ada0
SSDに未使用領域を残しておくことが長持ちさせるポイントらしいです。上の設定だと39Gが未使用領域になっています。
ada[1-3]のディスクにZFSパーティションを作成し、それぞれdisk[1-3]とラベル付け。
# gpart add -t freebsd-zfs -l disk1 ada1
MBRコードをada[0-3]に書き込む。
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
ZFSカーネルモジュールを読み込みます。
# kldload opensolaris
# kldload zfs
ZFSプールを作成します。
# zpool create zroot /dev/gpt/zroot
# zpool create create tank raidz1 /dev/gpt/disk1 /dev/gpt/disk2 /dev/gpt/disk3
# zpool set bootfs=zroot zroot
# zpool add tank cache gpt/l2arc
# zpool add tank log gpt/zil
各種ディレクトリの作成とマウント。Dan's blogを参考に、
# zfs create zroot/usr/home
# cd /boot/zfs/zroot; ln -s /usr/home home
という部分は
# zfs set mountpoint=/boot/zfs/zroot/usr/home tank
# cd /boot/zfs/zroot; ln -s usr/home home
とする。("/usr/home"はtypoかな)
以下、FreeBSDのインストールから設定までは上記の記事通りで問題ありません。設定はsysinstallを呼び出して行うこともできます。設定終了後はexitでchroot環境を抜けます。
ZFSのexportとimportを行います。
# cd /boot/zfs
# zpool export tank
# zpool export zroot
# zpool import zroot
# zpool import tank
# cp /boot/zfs/zpool.cache /boot/zfs/zroot/boot/zfs/zpool.cache
マウントポイントを再度指定します。
# zfs unmount -a
# zfs set mountpoint=legacy zroot
# zfs set mountpoint=/tmp zroot/tmp
# zfs set mountpoint=/var zroot/var
# zfs set mountpoint=/usr zroot/usr
# zfs set mountpoint=/usr/home tank
一応インストールは終了ですが、このままではswapがありませんので、再起動後にDan's blogを参考にルート以下にswapファイルを用意して終了です。
ちなみにこちらがインストール直後のUnixbenchの結果です。
« Ports jail解説動画 | トップページ | make buildworld比較 »
この記事へのコメントは終了しました。
トラックバック
この記事へのトラックバック一覧です: FreeBSD 9でフルZFSシステム:
» FreeBSD + ZFS + Samba3 [azure日記]
うちで使っているファイルサーバがそろそろきつくなってきたのでこの機会を利用して入れ替えようと企む。 現状ではディスク3本がバラバラの状態でマウントされていて使いづらかったため、一部入れ替えてディスクを結合することに。 LinuxではLVMなどを使用するのだろうけれど、自宅で使うものはFreeBSDで行きたいので今回はZFSを採用。初めてだったので試行錯誤を繰り返したものの概ね満足いくできあがりに。 以前のUFSでは足りなくなったらシンボリックリンクするとか面倒なことをしないといけなかったのが、ZFS... [続きを読む]
コメント