Amazon EC2でスナップショットから作成したばかりのEBSは読み書きが遅いので、ddを使って並列コピーするコマンドを作成してみた。
winebarrel/ddcp: Parallel file copy command using dd.
検証
- スナップショットから作成したばかりのEBSからエフェメラルディスクにファイルをコピー
- ファイルは25GBのidbファイル
- ファイルシステムはext4
- インスタンスはi2.xlarge
- EBSはgp2 1000GB(3000IOPS)
ddcp
ubuntu@ip-10-0-158-54:~$ time ddcp -s /mnt/vol2/mysql/wikimedia/page_view_statistics.ibd -d /mnt/vol/tmp/page_view_statistics.ibd
real 20m57.639s
user 0m0.360s
sys 0m48.133s
ハッシュは一致。
ubuntu@ip-10-0-158-54:~$ shasum /mnt/vol2/mysql/wikimedia/page_view_statistics.ibd /mnt/vol/tmp/page_view_statistics.ibd
08743bb15c2a92b153ae574d7ce16a6331bd0767 /mnt/vol2/mysql/wikimedia/page_view_statistics.ibd
08743bb15c2a92b153ae574d7ce16a6331bd0767 /mnt/vol/tmp/page_view_statistics.ibd
通常のコピー
cpを使うと時間がかかるのでpvを使って進捗を見る。
ubuntu@ip-10-0-158-54:~$ time pv /mnt/vol2/mysql/wikimedia/page_view_statistics.ibd > /mnt/vol/tmp/page_view_statistics.ibd
3.19GB 0:14:11 [4.36MB/s] [======> ] 12% ETA 1:36:05
1:47ぐらいかかる。