クローンを作成したスナップショットの元ファイルシステムは、クローンを残して破棄することができません
例を挙げます
以下の様に作成された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 -
このコマンドを使用することで、クローンの親子依存関係が逆転し、元ファイルシステムが、指定されたファイルシステムのクローンになり、破棄することができるようになります
ここに情報はあるのでざっくり流れだけ
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 オプションを指定し、それぞれのディスクに個別のラベルを作成しておく1)
RAIDZでZFSプールを作る
$ zpool create -O atime=off -O compression=lz4 ztank raidz# gpt/diskX ...... gpt/diskZ
HDD確認
# dmesg|grep ada
追加
# zpool create pool名 /dev/ada2 # zpool create pool名 raidz /dev/adaxx /dev/adaxx /dev/adaxx
再起動したが、以下の様にpoolがないと言われる2)
# 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"
これでいけた3)
zfs set atime=off <プール名>
ファイルアクセス時間の記録を止める
ONだと読んだだけでスナップショットの容量が増えてしまいます。
性能もバンバン落ちるそうです。
atimeが使えなくなるが普通のファイル置き場では困らないはず。
メールスプール等には使用しないこと4)
値の確認は
zfs get atime
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を使う意味がない…
その上とどめです。設定したら戻せません5)。キリッ