FreeNASがZFS対応ににゃったとはいえ、かにゃり微妙というかとりあえずぎりぎり動くようににゃりました状態にゃので、肝心のZFSの各種機能が使いづらい。CUIでやるにゃらFreeNAS使う意味がにゃい。が、無いものはしょうがにゃい。
ということで例によってsshで繋げてスクリプトを書く作業が。
#!/bin/sh
poolname=pool1/dataset1
reserve_GB=500
snap_name=${poolname}@`date +"%Y%m%d%H%M%S"`
echo create snapshot $snap_name
zfs snapshot "$snap_name"
while : ; do
free_GB=`df -g ${poolname} | awk 'NR!=1 {print $4}'`
test "$free_GB" -ge "$reserve_GB" && break
zfs list -t snapshot -o name | grep @ >/dev/null || break
oldest_snap=`zfs list -t snapshot -o name -S creation | tail -1`
echo destroy $oldest_snap
zfs destroy "$oldest_snap"
sleep 1
done
日付名でsnapshot作って、空き容量が減ってきたら消す感じのサンプル。
これを毎時間とかcronで走らせればにゃんかそれっぽく動く。
snapshotはcd .zfsすると存在しているので、
ln -s .zfs snapshot
とかしておくと見やすくにゃる。このあたりはzfsのプロパティその他で可視化できるんだけど、にゃんせFreeNASの実装が怪しいのでにゃるべくzfs使わずに処理する方向で。