Raspberry Pi 4B 8G で zfs raidz を構築してみました
実験段階なので、多少手抜きしています
1.準備したもの
Raspberry Pi 4B 8G 本体
コンセントから電源供給できる4ポートのUSBハブ
USB接続できるSSD4個、4個とも同一サイズが理想ですが、256GB2個と240GB2個でやってみました
zfs環境を構築するためのSDカード1個、128GBが余っていたので、FreeBSDがインストールできればOKです
2.イメージファイルの書き込み
FreeBSD-13.0-RELEASE-arm64-aarch64-RPI.img.xzをSDカードとSSD4個に書き込みます
私は Raspberry Pi Imager を使いました
3.ブート確認
SDカードと4個のSSDを順番に1つだけセットしてブートするか確認します
次に、SDカードとSSD1個を接続してSDカードからブートするか確認します
ファームウェアのの起動順序の設定を変更していなければ、SDカードからブートすると思います
3.環境構築
SDカードと4個のSSDを接続して、SDカードから起動します
/etc/rc.conf に設定を追加します
powerd_enable="YES"
ntpdate_enable="YES"
keymap="jp"
/boot/loader.conf の内容を zfs_load="YES" だけにします
再起動し、無事ブートするか確認します
アップデートします
freebsd-update fetch
freebsd-update install
4.ストレージプールの作成
zpool create -f zroot raidz da0s2a da1s2a da2s2a da3s2a
ファイルシステムの作成
zroot/F1 が実際の / になります
zfs set mountpoint=legacy zroot
zfs set atime=off zroot
zfs create zroot/F1
zfs create zroot/F1/usr
zfs create zroot/F1/usr/src
zfs create zroot/F1/usr/obj
zfs create zroot/F1/usr/ports
zfs create zroot/F1/tmp
zfs create zroot/F1/var
システムのコピー
zfs set mountpoint=/mnt zroot/F1
tar cf - --one-file-system / |(cd /mnt;tar xvf -)
ブートするファイルシステムを設定します
zpool set bootfs=zroot/F1 zroot
/mnt/etc/fstab の内容を以下のように変更します
zroot/F1 / zfs rw 0 0
zroot/F1/usr /usr zfs rw 0 0
zroot/F1/usr/src /usr/src zfs rw 0 0
zroot/F1/usr/ports /usr/ports zfs rw 0 0
zroot/F1/usr/obj /usr/obj zfs rw 0 0
zroot/F1/tmp /tmp zfs rw 0 0
zroot/F1/var /var zfs rw 0 0
/dev/da0s1 /boot/msdos msdosfs rw,noatime 0 0
tmpfs /tmp tmpfs rw,mode=1777,size=50m 0 0
/mnt/boot/loader.conf に vfs.root.mountfrom="zfs:zroot/F1" を追加します
5.zfsファイルシステムから起動する準備
zfs set mountpoint=legacy zroot/F1
zpool export zroot
シャットダウンします
poweroff
ラズパイを電源OFF
SDカード取り出し
6.zfsからブート
ラズパイの電源ON
無事、起動しましたでしょうか
以上です