仮想マシンストレージ用の新しいバックアップサーバーとして使用されるUbuntuサーバーを新しくインストールしました。サーバーには4つのネットワークカードがあり、そのうちの2つはSAN接続用の10Gbit(実際に最新のドライバを搭載したIntel x540-T2)です。 nfs-shareをローカルにインストールし、30個程度のファイルと15個程度の仮想マシンイメージ、そのログファイルが入っているディレクトリをコピーする時の速度差を比較してみました。画像サイズは8GBから600GBまでです。
使用:
cp -rf /mnt/nfs-share /backup-storage/
bmonは約600MiB / sを示しています。
使用
rsync -av /mnt/nfs-share /backup-storage/
bmonは最初の数秒間いくつかのパケットを表示し、約30秒間一時停止してから約60-75MiB / sに増加します。 CPU使用量は約60%程度になります。
rsync
同じパフォーマンスを使用するには、何を変更する必要があり、変更できますかcp
?
答え1
cp
私の考えでは、との違いがかなり明確だと思いますrsync
。参考までに、次の記事を参照してください。rsync パフォーマンスの概要。
The four commands tested were:
rsync $SRC $DEST
echo $SRC | cpio -p $DEST
cp $SRC $DEST
cat $SRC > $DEST/$SRC
The results for rsync, cpio, cp, and cat were:
user sys elapsed hog MiB/s test
5.24 77.92 101.86 81% 100.53 cpio
0.85 53.77 101.12 54% 101.27 cp
1.73 59.47 100.84 60% 101.55 cat
139.69 93.50 280.40 83% 36.52 rsync
私はrsync
毎日それを使用しています。この状況を改善するためにできることはいくつかあります。
たとえば、次のようにスイッチを試すことができます-W
。
-W, --whole-file copy files whole (w/o delta-xfer algorithm)
また、バージョン3.xを使用していることを確認することをお勧めしますrsync
。新しいバージョンにアップグレードすると確かに改善されます。
答え2
rsyncをcpと同じパフォーマンスにする方法は、スペルを「cp」として書くことです。
最終的な効果は同じかもしれませんが、2つのコマンド間の違いは依然として重要です。特に、rsync は、ファイルまたはファイルの一部をコピーする必要があるかどうかを確認するために、多くの読み取り操作を実行します。
rsyncを使用したい理由はありますか? cpは「盲目的に」コピーするので、より高い生のパフォーマンスを見ることができます。一連のトリガーにrsyncの「増分転送」メカニズムを使用すると、報告された方法で転送速度が低下し、CPU使用率が大幅に増加することがわかります。
答え3
このユースケースでは、rsync
不必要に複雑なシステムです。ファイル変更時間とファイルサイズを比較して同期することに同意する場合は、両端でファイルシステムメタデータを収集して比較し、(ローカル)コマンドで変更された(または新しい)ファイルをコピーしますcp
。
以下を実行するこの小さくシンプルな同期プログラムに興味があるかもしれません。Fitus/Zaloha.sh
使用方法は次のとおりです。
$ Zaloha.sh --sourceDir="test_source" --backupDir="test_backup"
分析ステップ中の最大速度のためにオプションを使用して、リカバリスクリプトの生成をスキップできます--noRestore
。また、Expressインストーラがインストールされている場合は、それを使用することをmawk
選択してください。--mawk
Zaloha.sh
コマンドを介してファイルシステムメタデータを収集しますfind
。残りの質問は、find
NFS共有のパフォーマンスに関するものです。