rsyncを使ってリモートと同期しようとしたのですが、速度が大きく落ちることがあったので、原因を探ってみました。ちなみに私の環境は Rocky Linux 8.7 です
原因
大体記事タイトルの通りなのですが、ソース側のLVMにSMRのHDDが混ざっているのが原因だったようです。SMRのディスクからデータをロードするときに速度の低下が起こっていたようです
対策(SMRがソース側の場合)
ファイルのアクセス日時を記録しないようにすることで、書き込みを減らしパフォーマンスを改善することができるようです
ソース側のディスク(LVM)のマウント時のオプションで設定できます。fstabに設定する場合は
1 |
# vim /etc/fstab |
1 |
/dev/disk/by-uuid/uuid /path auto noatime,x-gvfs-show 0 0 |
こんな感じで”noatime”オプションを追加します
1 |
# systemctl daemon-reload |
手動でマウントする場合は
1 |
# mount -o noatime /dev/sdX /path |
こんな感じで”noatime”オプションを付けます。roオプションで読み込み専用にしてもいいです。
これで私の環境ではだいぶマシになりました。
対策(SMRに書き込む場合)
SMRに書き込む場合も速度の低下があるようです。その場合は書き込み先のHDDも同じように”noatime”オプションを付けてマウントすれば改善することもあるようです
SMRのディスクに書き込む場合にメディアキャッシュを使い切って速度が低下したような場合は、キャッシュから溢れない程度に速度を落とすか、中断してメディアキャッシュの回復を待つ方がいいでしょう
1 |
# rsync -auvS --progress --bwlimit=25M user@192.168.1.1:/mnt/source/ /mnt/to/ |
最適な速度は15~30MB/sの間くらいのようです
注意点
ファイルのアクセス日時を記録しなくなるので、アクセス日時の記録が大事な場合はこの方法は使えません。SMRの評判が悪いことは知ってたのですが、倉庫にする分には支障はないだろうと思っていたのですが、アクセス日時の記録だけで異常に遅くなるなんて思ってもみませんでした。ちゃんと下調べするんだった…
参考
What can I do to improve performance of rsync when run on SMR drives (shingled drives)?
When syncing with rsync to or from SMR drives performance drops to a minimum of 3 to 5 mb/s, with noticeable head flying...
コメント