アットウィキロゴ
トップページ > 個別ケース > とりあえず

前提

  • DVD起動されたところから
  • そこまでは事前準備を参照
  • 原則HDDを2台以上で運用するもので複数台まとめて設定できる
  • 今回は1台だけでセットアップしてあとで拡張する方法

デバイス名確認

# dmesg | grep MB
  • 解説:dmesgで得た初期設定情報キーワード「MB」を拾うと、HDDほかがヒットするのでデバイス名をメモっとく
    ここではSATAドライブがつながっているとして「ada0」と「ada1」が認識されているものとする

ドライブの初期化

# dd if=/dev/zero of=/dev/ada0 bs=1m count=1
  • 解説:dd/dev/zeroを使ってデバイスada0を初期化する、しょっぱなは別にしなくてもいいけど、何度かセットアップに失敗してあたまからやる場合は、これをおまじないのようにやっておくとよい

パーティション作成

# gpart create -s gpt ada0
# gpart add -s 64K -t freebsd-boot ada0
# gpart add -t freebsd-zfs -l disk0 ada0
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0

なお確認のため以下を実行

# ls /dev/gpt

「disk0」が参照されればOK

プール作成

# zpool create -f rpool /dev/gpt/disk0
  • ここで「cannot mount 'rpool':failed to create mountponit」などのエラーがでるがそういうものなので無視してかまわない
  • プール名は任意、講習会にあわせて「rpool」とした

とりあえずマウント

# zfs set mountpoint=/mnt rpool
# zfs set checksum=fletcher4 rpool

エクスポート、インポート

# zpool export rpool
# zpool import -o cachefile=/var/tmp/zpool.cache rpool

ラベルの割り当て

# zfs create rpool/root
# zfs create rpool/root/usr
# zfs create rpool/root/var
# zfs create -o compression=on -o exec=on -o setuid=off rpool/root/tmp
  • ルートディレクトリはプール直下につくらないこと!
  • ここでは「root」というディレクトリを作ってそれ以下に各ディレクトリを作成

スワップ作成

# zfs create -V 20G rpool/swap
# zfs set org.freebsd:swap=on rpool/swap
# zfs set checksum=off rpool/swap
  • スワップを固定サイズのswap領域にしているが、ZFSでの運用も可能?
  • スワップディレクトリはどうせ見えないのでプール直下においておいた

ディレクトリ作成とスティッキィビット設定

# mkdir /mnt/root/var/tmp
# mkdir /mnt/root/var/empty
# chmod 1777 /mnt/root/tmp
# chmod 1777 /mnt/root/var/tmp

FreeBSDのインストール

# cd /usr/freebsd-dist
# export DESTDIR=/mnt/root
# for f in base.txz lib32.txz kernel.txz src.txz
> do
> cat $f | tar --unlink -xvpJf - -C ${DESTDIR:-/}
> done

起動ファイルの設定

# echo 'zfs_enable="YES"' >> /mnt/root/etc/rc.conf
# echo 'zfs_load="YES"' >> /mnt/root/boot/loader.conf
# echo 'vfs.root.mountfrom="zfs:rpool/root"' >> /mnt/root/boot/loader.conf
# touch /mnt/root/etc/fstab
  • ZFSはfstabの評価前にロードされて確定するので、今回の設定ではfstabを読むことはない
  • swapディレクトリもZFS上に作ったためfstabに設定は不要

キャッシュをコピーしておく

# cp /var/tmp/zpool.cache /mnt/root/boot/zfs/zpool.cache

アンマウント、マウントポイントの再設定

# zfs umount -af
# zfs set mountpoint=legacy rpool/root
# zfs set mountpoint=/tmp rpool/root/tmp
# zfs set mountpoint=/usr rpool/root/usr
# zfs set mountpoint=/var rpool/root/var
# zfs set mountpoint=none rpool
# zpool set bootfs=rpool/root rpool

再起動

# sync;sync;sync
# reboot
最終更新:2013年04月30日 17:10