====== send/recvでデータ移行 ====== ===== 注意点 ===== * sendできるのはスナップショットだけ。 * recv側で増分受信時には前回以降変更があってはいけない。 ===== 手順 ===== ==== 送信側でスナップショットを取る ==== # zfs snapshot srcTank/setA@snap01 # zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT srcTank/setA@snap01 0 - 1.93T - ==== zfs send でスナップショットを送信 ==== === ■ スナップショットをファイル保存して、別のプールでreceive === # zfs send srcTank/setA@snap01 > /var/tmp/hoge.img # zfs receive bakup/hoge < /var/tmp/hoge.img # zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT srcTank/setA@snap01 0 - 1.93T - bakup/hoge@snap01 0 - 1.93T - === ■ スナップショットを同じホストの、別のプールへ送信 === # zfs send srcTank/setA@snap01 | zfs receive rcvTank/setA === ■ スナップショットを別のホストにsshで送信 === # zfs send srcTank/setA@snap01 | ssh 192.168.xxx.xxx zfs receive rcvTank/setA === ■ スナップショットの差分データを送信 === # zfs snapshot srcTank/setA@snap02 # zfs send -i srcTank/setA@snap01 srcTank/setA@snap02 | ssh 192.168.xxx.xxx zfs receive rcvTank/setA === ■ スナップショットの差分データを圧縮して送信 === # zfs send -i srcTank/setA@snap01 srcTank/setA@snap02 | gzip -c | ssh 192.168.xxx.xxx "gzip -cd |zfs recv -vdF rcvTank" === ■ netcatを利用して送信 === == 受信側 == # nc -l -p ポート番号 -w 120 | zfs recv -v rcvTank/setA == 送信側 == # zfs send srcTank/setA@snap01 | nc 192.168.xxx.xxx ポート番号 === ■ zfs receiveのオプション === * zfs receive は zfs recv と省略可能 * -F 既存ファイルシステムを上書き * -d 送信側で使用していた名前でスナップショットを復元\\ このオプションを使うときはzpoolのみを指定 * -u 復元されたアーカイブを zfs receive 処理の完了時にマウントしない * -v 転送後に受信時間と容量を表示 ==== bufferを挟むことで速度アップを図る ==== zfs send pool/data@20121207 | dd obs=1m | dd obs=1m | gzip -9 | ssh somewhere "cat > file.gz" # zfs send -R <スナップショット> | mbuffer -s 128k -m 1G | ssh <ユーザ>@<リモートホスト> 'mbuffer -s 128k -m 1G | zfs receive <展開先ディレクトリ>' === 参考 === * https://people.allbsd.org/~hrs/FreeBSD/sato-FBSD20121207.pdf * https://nobwak.github.io/posts/2019-06-01-%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E8%B6%8A%E3%81%97%E3%81%AEzfs_send_recv/ ==== send/receive streamの整合性チェック ==== **【書きかけです】((2024-12-01))** === zstreamdumpを使う === # zfs send zdiving@today > zdiving.zstream # zstreamdump < zdiving.zstream === 圧縮して、あとでチェックする === zfs send mysnapshot | gzip -c -3 > /somestorage/mysnap.gz gzip -t mysnap.gz === 参考 === * https://zfs-discuss.opensolaris.narkive.com/yrxSUORC/zfs-send-verify-receive * http://blog.richardelling.com/2009/10/check-integrity-of-zfs-send-streams.html ===== 参考 ===== [[http://docs.oracle.com/cd/E19253-01/819-6260/gbinw/|Oracle Solaris ZFS 管理ガイド]] [[http://mkiuchi.org/diary/?p=2001|mkiuchiの日記 2冊め]] [[http://alu-zoo.blogspot.jp/2012/06/oss-zfs.html|OSSはアルミニウムの翼で飛ぶ]]