====== 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の活用とチューニング]]