zfs send でファイルシステムを複製する2016年02月24日 12時40分33秒

zfs send と zfs receive は、旧来の dump と restore に相当するもの。zfs send でバックアップを取り、zfs receive で復元する。

以前はこのコマンドはスナップショットしか取れなかったが、FreeBSD 10.2-RELEASE の物は、ファイルシステムや、ボリュームも複製できるようになっている。「--head--」と呼ばれるスナップショットが作られて、それが送られる形だ。また、スナップショット用の zfs send と違い、ファイルシステムはマウントされていてはいけない。

# zfs send zfs/pict | zfs receive -n -v bkup/pict
warning: cannot send 'zfs/pict': target is busy; if a filesystem, it must not be
 mounted
cannot receive: failed to read from stream

写真がたまって手狭になった zfs プールの pict ファイルシステムを拡張した bkup プールに移動する。

# zfs send zfs/pict | zfs receive -v bkup/pict
receiving full stream of zfs/pict@--head-- into bkup/pict@--head--
received 256GB stream in 15303 seconds (17.1MB/sec)
# zfs list -t all
NAME                     USED  AVAIL  REFER  MOUNTPOINT
...
bkup/pict                253G   131G   253G  /mnt/bkup/pict
bkup/pict@--head--          0      -   253G  -
,,,
zfs/pict                 262G  98.7G   254G  /mnt/zfs/pict
zfs/pict@2015_11_14     8.71G      -   236G  -
見ての通り、「--head--」タグが残るのは受信側だけのようだ。また、この方法ではスナップショットが保存されていないのが分かる。