サーバー用に新しいハード ドライブを購入し、ファイルを再編成しようとしています。最初の転送では、rsync
約 3 GB を完璧にコピーしました。ただし、同等のrsync
コマンドを使用すると、2 回目の転送は失敗します。
$ sudo /usr/bin/nice -n 19 /usr/bin/ionice -c2 -n7 rsync -aEHAXPx /media/a/ /media/b --delete
...
rsync: [sender] write error: Broken pipe (32)
rsync error: error in socket IO (code 10) at io.c(820) [sender=3.1.1]
最初の実行では、800GBのうち550GBをコピーしたが、その後停止した。最近の試みでは、1GBしかコピーできず、その後停止した。関連があるかどうかはわからないが、ソースは過去に戻る増分バックアップ ドライブなので、大量のハード リンクが含まれています。このエラーを修正してコマンドを完了するにはどうすればよいですか?
rsync バージョン 3.1.1 プロトコル バージョン 31 を実行しています。
答え1
dmesg | grep rsync
[85852.560086] メモリ不足: プロセス 4242 (rsync) を強制終了してスコア 194 にするか、子プロセスを犠牲にします [85852.562695] プロセス 4243 (rsync) を強制終了しました total-vm:121948kB、anon-rss:65752kB、file-rss:4kB – Sparhawk
解決策:
- rsync 速度をディスクの速度より低く変更します。USB
--bwlimit=6000
2 は、2 つのドライブの rw の場合は 60MB/秒 /4、非 SSD のシークの場合は /10 です。または、2GB RAM と USB3 を搭載した XU4 を入手してください。 - カーネルメモリパラメータを変更する
echo 100 > /proc/sys/vm/watermark_scale_factor
- 操作中にメモリを強制的に消去する
echo 3 > /proc/sys/vm/drop_caches
- カーネル4.9.29を使用していることを確認してください
uname -r