目次

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のオプション

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 <展開先ディレクトリ>'

参考

send/receive streamの整合性チェック

【書きかけです】1)

zstreamdumpを使う

# zfs send zdiving@today > zdiving.zstream
# zstreamdump < zdiving.zstream

圧縮して、あとでチェックする

zfs send mysnapshot | gzip -c -3 > /somestorage/mysnap.gz
gzip -t mysnap.gz

参考

参考

Oracle Solaris ZFS 管理ガイド

mkiuchiの日記 2冊め

OSSはアルミニウムの翼で飛ぶ

1)
2024-12-01