====== tips ======
===== ファイルシステムの内容をクローンで置き換える =====
クローンを作成したスナップショットの元ファイルシステムは、クローンを残して破棄することができません
例を挙げます
以下の様に作成されたzfsファイルシステムがあるとします
# zfs snapshot tank/origin@yesterday
# zfs clone tank/origin@yesterday tank/clone_fs
# zfs get origin tank/clone_fs
NAME PROPERTY VALUE SOURCE
tank/clone_fs origin tank/origin@yesterday -
この時、tank/origin を削除することができません
そこで、zfs promoteコマンドでcloneで作成されたファイルシステムとクローン元を置き換えます
# zfs promote tank/clone_fs
# zfs get origin tank/clone_fs
NAME PROPERTY VALUE SOURCE
tank/clone_fs origin - -
# zfs get origin tank/origin
NAME PROPERTY VALUE SOURCE
tank/origin origin tank/clone_fs@yesterday -
このコマンドを使用することで、クローンの親子依存関係が逆転し、元ファイルシステムが、指定されたファイルシステムのクローンになり、破棄することができるようになります
===== disk label指定してRaid-z =====
ここに情報はあるのでざっくり流れだけ
* https://qiita.com/belgianbeer/items/5c90a3322be2fcd8dfbb
GPTでディスクを初期化
$ gpart destroy -F adaX ; gpart create -s gpt adaX
......
$ gpart destroy -F adaZ ; gpart create -s gpt adaZ
GPTでZFS用のパーティションを作成
$ gpart add -t freebsd-zfs -l diskX adaX
......
$ gpart add -t freebsd-zfs -l diskZ adaZ
**ZFS用パーティションを作る場合、必ず -l オプションを指定し、それぞれのディスクに個別のラベルを作成しておく**((起動時に0,1,2の順番がどうなるか保証されないため、ラベルが無いと1台のディスクが故障した場合に、故障したディスクを特定するのがとても困難))
RAIDZでZFSプールを作る
$ zpool create -O atime=off -O compression=lz4 ztank raidz# gpt/diskX ...... gpt/diskZ
===== その他の参考 =====
* https://freebsd-workshop.slack.com/archives/C053L720KL5/p1682674477814439
===== HDD追加 =====
HDD確認
# dmesg|grep ada
追加
# zpool create pool名 /dev/ada2
# zpool create pool名 raidz /dev/adaxx /dev/adaxx /dev/adaxx
===== poolが見つからない =====
再起動したが、以下の様にpoolがないと言われる((13.2へのUpdateで発生?))
# zpool list
no pools available
# zfs list
no datasets available
もともとあったのは間違いない
マウントされてない模様
# zpool import
pool: zdata
id: 4334033344455566677
state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:
zdata ONLINE
ada1 ONLINE
# zpool import zdata
zfs_enable="YES"
これでいけた((rc.confにzfs_enable="YES"必要))
===== 高速化 =====
zfs set atime=off <プール名>
ファイルアクセス時間の記録を止める\\
ONだと読んだだけでスナップショットの容量が増えてしまいます。\\
性能もバンバン落ちるそうです。
atimeが使えなくなるが普通のファイル置き場では困らないはず。\\
メールスプール等には使用しないこと((Dovecotなど、noatmieに対応してる場合は大丈夫です))
値の確認は
zfs get atime
===== Dedup禁止!! =====
ZFSにはdedupという重複排除機能があります。\\
ブロック単位でハッシュをとって同じ内容のブロックか、判断してくれます。\\
なので、1bitだけ違う1GBのファイルが2つあった場合、消費されるディスクは1GBと128KBだけです。\\
なんて素晴らしい。夢のような機能です。
が、が、が、
ブロック単位でハッシュをとると言いました。\\
何処に? メモリです。\\
どれくらい? 1ブロックにつき320Bytes
では、3TBのディスクで計算してみます。\\
zfsのブロックサイズは512B~128KBで可変なので、ザックリ64Kで計算して見ます。
3TB=1024 * 1024 * 1024 * 3 = 3,221,225,472KB
3,221,225,472KB/64KB = 50,331,648Blocks
50,331,648 * 320Bytes = 16,106,127,360 = 約15GBytes
はい、終了。
と言うわけで、あり得ないくらい大量のメモリが必要になります。\\
ディスク容量が小さければ動くかもしれませんが、そもそもzfsを使う意味がない…
その上とどめです。設定したら戻せません((データを書き直さないと元にもどりません))。キリッ
===== 後からzfsをOnにする =====
zfs_load="YES"
↑不要になった模様((2020.10.13 12.1-RELEASE-p9 で確認))
zfs_enable="YES"
# service zfs start
===== Link =====
[[https://qiita.com/ryuinada/items/36535a0e7f1846d89fb6|ZFSのRAIDZの修復とついでに拡張する]]
[[https://people.allbsd.org/~hrs/FreeBSD/sato-FBSD20121207.pdf|zfsの活用とチューニング]]