TL;DR

脳死で xfsdump(dump) + nc(Netcat) 一択。

昔こんな記事で pigz + nc は速いって書いたけど xfsdump(dump) 使ったほうが速いんじゃないかと思ったので雑に比較してみた。
rarirure.rip

環境

ファイルサイズ別で2パターン

632GB / 29450 ファイル

  • 2C / 12GB / 1.2Gbps の sender / receiver
  • 12C / 72GB / 7.2Gbps の sender / receiver

この環境はストレージもネットワーク経由でマウントされている。
ストレージ自体は 200MB/s がベストエフォート

284GB / 337358 ファイル

  • 4C / 16GB / 5Gbps の sender / receiver

この環境のストレージは直接 SATA SSD(RAID00)が接続されている。
ストレージ自体は最大 1000MB/s がベストエフォート

コピー手法

個人的によく使われてるであろうよくある手法に xfsdump + nc を追加する。

xfsdump + nc

使い方

(sender) # time xfsdump - /dev/vdb | nc receiver 9999
(receiver) # nc -l 9999 | xfsrestore - /mnt/test

pigz + nc

使い方

(sender) # time tar cf - --use-compress-prog=pigz mysql | nc receiver 9999
(receiver) # nc -l 9999 | tar xvf - --use-compress-prog=pigz

rsync

使い方

(sender) # time rsync -avhz -e 'ssh -c arcfour' minio root@receiver:/mnt/test

結果

単位は分 lower is better

632GB / 29450 ファイル

https://docs.google.com/spreadsheets/d/e/2PACX-1vTIEBy95Qw8yTVfbOBjHYmkzKAqrNpFZbsLOFAjsIEIW-oFY9fh2T9dEikrfP5yzFnULdSKKgbCVumT/pubchart?oid=712177923&format=image

コア数が多ければ pigz + nc も速いけど、xfsdump はそれ以上に速い。
コア数が少なくても十分速い。
rsync arcfour が無いのは遅いのを分かっていたため。

284GB / 337358 ファイル

https://docs.google.com/spreadsheets/d/e/2PACX-1vTIEBy95Qw8yTVfbOBjHYmkzKAqrNpFZbsLOFAjsIEIW-oFY9fh2T9dEikrfP5yzFnULdSKKgbCVumT/pubchart?oid=1605602480&format=image

昔流行った arcfour も xfsdump よりも全然遅い。

xfsdump は xfs 専用だけど、ext4 は dump がある。同じようなことが可能。