cronぽいもので定期実行する用のzfsでsnapshotとるよshメモ。一応残りが指定容量未満だとsnapshot消してみる。が、そもそもzfsでぎりぎりまでファイルつっこんじゃダメ。
nexenta用に手直しせざるを得にゃかったのでメモ。う〜〜〜ん
#!/bin/sh
poolname=pool/share
dir=/pool/share
reserve_GB=500
list_snapshots (){
zfs list -t snapshot -o name -s creation | grep ${poolname}@
}
list_snapshots
snap_name=${poolname}@`date +"%Y%m%d%H%M%S"`
echo create snapshot $snap_name
zfs snapshot "$snap_name"
while : ; do
free_GB=`/usr/gnu/bin/df ${dir} | awk 'NR!=1 {print $4}'`
free_GB=`expr $free_GB / 1024 / 1024`
echo $poolname $free_GB GB free.
test "$free_GB" -ge "$reserve_GB" && break
list_snapshots>/dev/null || break
oldest_snap=`list_snapshots | head -1`
echo destroy $oldest_snap
zfs destroy "$oldest_snap"
sleep 1
done
dfが非常にアレにゃんだが何とかにゃらんのかこれ。
zfs listで単位無しで残容量出したいんだが無いんかねオプション。まぁ分岐すりゃ良い話だが。