zpool.cache †
- ブート用の一番目にあるプールはキャッシュファイル不要!
# インストーラを使わないでZFSインストールの解説サイトで
# cachefile の取扱いに工夫されていますがまったく不要です。
# -R /media は cachefile=none,altroot=/media
# -N マウントしない altroot= は保存されない
# altroot と cachefile=none がなぜセットか
# 無理に作ると思わぬ二重マウントが起きるそれが / の場合
# 別メディアで起動して修正しないといけない
- ブート時に第一プール以外のプールを読み込んでおきたい場合は必要で
/boot/zfs/以下にcreateやimport時に自動的に作成される。
snapshot †
zfs snap -r zroot/ROOT@08 # -r で再帰的に子供スナップも作成可能
rollback †
外部へのバックアップとリストア †
バックアップ †
zfs send -vR zroot/ROOT@40 > /mnt/20150523.zfs
リストア †
gpart bootcode -p /boot/gptboot -i 1 ada0 # GPTまたは別メディアで起動する
shutdown -r now # 今回はGPTから起動させる
mount /dev/ada1p1 /media # バックアップしたのをマウント
file /media/20150519.zfs # どんなsnapか確認
zpool import # 作成しようとしているプール名が残っていたら
zpool labelclear -f /dev/ada0p3 # 強制削除
zpool create -R /mnt -m none zroot ada0p3 # -R で -o altroot=/mnt -o cschefile=none
zpool create -R /mnt -m none zroot mirror gpt/zfs01 gpt/zfs11 # 初めからミラー
zfs recv -v zroot/ROOT < /media/20150523.zfs # リストア
zfs list -t all # 確認
zpool set bootfs=zroot/ROOT zroot # ブートの設定
gpart bootcode -p /boot/gptzfsboot -i 1 ada0 # ZFSブートへ戻す
shutdown -r now
- 注意 古いバージョンへロールバックしたらEFIのバージョン違いで認識されない /boot/loader.efi と efiパーテーションへインストールする boot1.efifat を同期の物を
ZFS GPT ブート切替 †
ZFSブートへ
gpart bootcode -p /boot/gptzfsboot -i 1 ada0
GPTブートへ
gpart bootcode -p /boot/gptboot -i 1 ada0
zpool作成時 予想外のzpoolの残骸削除 †
# #--destroyされてる残骸
# zpool import -D
# zpool labelclear /dev/ada0p3
# #--普通に残ってる残骸
# zpool import
# zpool labelclear -f /dev/ada0p3
# #--異常な物は最終的には場所を探して
# dd if=/dev/zero of=/dev/ada0p3 bs=1M count=10
ZFS情報 †
zfs get all zroot #全部
zfs get sharenfs #NFSの設定状況
ZFS共有 †
/etc/rc.conf
rpcbind_enable="YES"
nfs_server_enable="YES"
# NFS共有設定・開始
zfs set sharenfs="-maproot=root -network 192.168.0.0/24" zroot/ROOT/data
# 共有設定確認
zfs get -r sharenfs zroot
# 共有停止
zfs unshare zroot/ROOT/data
# 共有再開
zfs share zroot/ROOT/data
# 初期値に戻す
zfs inherit sharenfs zroot/ROOT/data
pool名を変えてインポート †
zpool import -f -R /mnt oldname newname
pool の詳細確認 †
zpool get all zroot
zpool get bootfs #ブートの設定
未整理 †
/boot/loader.conf
kern.geom.label.gptid.enable="0"
kldstat
vi /etc/sysctl.conf
kern.ipc.somaxconn=12288
kern.ipc.maxsockbuf=1048576
/etc/fstabの内容が不正で起動できな時は。。。
mountroot>
まず、?でマウント可能な一覧を表示
ufs:/dev/ad0s1a
等で"/"をマウント。
"/"を書き込み可能にするため、再マウント
mount -uw /
viを起動するために"/usr"と"/var"をマウント
mount /dev/ad0s1f /usr
mount /dev/ad0s1e /var
/etc/fstabを編集し、上書き後に再起動
全ての歴史ごとバックアップ
zfs send -vR zroot/ROOT/ports@002 > /back/002r
zfs receive zroot/ROOT/ports < /back/002r
その時の状態のみバックアップ
zfs send -v zroot/ROOT/ports@000 > /back/000
zfs receive -u マウントしないオプション
差分のバックアップは差分の直前のsnapが必要
zfs send -v -i @001 zroot/ROOT/ports@003 > /back/1to3i
ZFS UEFI で ルート切り替え NEXT起動 †
起動させたくない側の /boot/loader.efi をリネームする
通常は UEFI が複数の場合 GTPの順に起動する
プール名の違うものをルートに zfs receive した場合
/boot/zfs/zpool.cache を削除しておかないと 起動時 fstab がないと言って起動不可
FreeBSD