web-dev-qa-db-ja.com

SMB経由のrsyncの高速化

SMB= NASにLinuxボックスをバックアップしています。NASをローカルにマウントしてから、大量のデータ(100GBなど)をrsyncします) 。実行に非常に長い時間がかかっていると思います(12時間以上)すべてがコピーされると、毎日ほとんど何も変更されないため、はるかに高速になると予想されます。

これをスピードアップする方法はありますか?

Rsyncはローカルのハードディスクで機能していて、時間/サイズの比較ではなくチェックサムを使用しているとrsyncが考えているのではないかと考えていました。しかし、時間と日付の比較を強制する方法が見つかりませんでした。他に確認できることはありますか?

8
pupeno

あなたはrsyncアルゴリズムとツールがどのように適用されるべきかについて誤解していると思います。

Rsyncのパフォーマンス上の利点は、デルタ転送を行うこと、つまり、ファイル内の変更されたビットのみを移動することから得られます。変更されたビットを特定するには、ファイルをソースホストと宛先ホストで読み取り、ブロックチェックサムを比較して、変更されたビットを特定する必要があります。これは、rsyncの「魔法の」部分、つまりrsyncアルゴリズム自体です。

SMBを使用してデスティネーションボリュームをマウントし、rsyncを使用して、Linuxがローカルソースおよびローカルデスティネーション(両方ともそのマシンにマウントされている)として「見た」ものからファイルをコピーする場合、最新のrsyncバージョンのほとんどは、 'ファイル全体'コピーモード、およびデルタコピーアルゴリズムをオフにします。差分コピーアルゴリズムをオンにすると、rsyncはファイルのどのビットが変更されたかを判断するために、宛先ファイル全体を(NASからネットワーク経由で)読み取るため、これは「勝ち」です。

Rsyncを使用する「正しい方法」は、1つのマシンでrsyncサーバーを実行し、もう1つのマシンでrsyncクライアントを実行することです。各マシンは、独自のローカルストレージ(非常に高速である必要があります)からファイルを読み取り、変更されたファイルのビットについて合意し、それらのビットのみを転送します。彼らは、rsync量の切り捨てられた 'cp'を使用している方法です。 'cp'を使用して同じことを達成でき、おそらくより高速になります。

お使いのNASデバイスがrsyncサーバー(またはクライアント)の実行をサポートしている場合は、ビジネスに対応しています。 SMBを介してソースマシンにマウントする場合は、 'cp'を使用してファイルをコピーすることもできます。

28
Evan Anderson

このページが関連しているように、タイムスタンプが問題のようです:

http://www.goodjobsucking.com/?p=16

提案されたソリューションは追加することです

--modify-window=1

rsyncパラメータに。

6
crantok

はい、スピードアップできます。ソースまたは宛先をリモートマシンのようにする必要があります。たとえば、「localhost: "。

SMB共有をローカルにマウントすることを表明しました。これにより、ソースまたは宛先がrsyncへのローカルパスのように見えます。rsyncのマニュアルページには、ソースと宛先がローカルパスであるコピーがファイル全体をコピーします。これは、マニュアルページの「--whole-file」オプションの段落に記載されているため、デルタアルゴリズムは使用されません。「localhost: "回避策は、デルタアルゴリズム機能を復元し、転送を高速化します。

4
Starfish

ここに2pを投入すると思いました。

私の兄はバッファローをインストールしたところですNAS彼のオフィスのネットワーク上にいます。彼は現在、オフサイトのバックアップを見ているので、オフィスが焼けた場合でも、少なくとも他の場所にすべてのビジネスドキュメントを持っています(何百マイルも離れたところにあります)。

私の最初のハードルは、彼が持っているVPS(小さなLinux仮想プライベートサーバー、あまりにも頑丈なもの)を取得して、VPNユーザーとしてブロードバンドルーターにダイヤルインすることです(彼はこのためにDrayTekを使用しています)。彼のVPNは、NASに直接、安全な方法でアクセスできるようにします。これは、ソートされて見事に機能しています。

次の問題は、NASからVPSサーバーにファイルを転送することでした。私はSambaマウントを実行することから始めましたが、あなたが説明したのとまったく同じ(またはさらに悪い)問題に遭遇しました) 。私は模擬的にrsyncを実行しましたが、転送するファイルを特定するのに1時間30分以上かかりました。この方法では、Evanが言うように、もう一方の端はrsyncではないため、多くのことを行う必要があります。 Sambaマウントでシステムコール/読み取りをファイリングする(PPTP /トンネル接続全体で、往復時間が約40ミリ秒)完全に機能しません。

バッファローが実際にrsyncデーモンを実行していることを少しも知りませんでした。そのため、代わりにそれを使用すると、総容量50Gbの87kファイルの場合、ドライラン全体で1分30秒しかかかりません。明らかに、50Gbのファイルを転送する(NASは100k /秒の送信帯域幅のみのブロードバンドリンク上にある)ことは別の問題です(これには数日かかります)が、最初のrsyncが完了しました。増分バックアップは非常に軽くなるはずです(彼のデータは毎日大きく変化することはありません)。

私の提案は、Evanが上で述べた理由から、rsyncをサポートする適切なNASを使用することです。それはあなたのすべての問題を解決します。

3
parkamark

問題の潜在的な原因は2つあります。誤ったコマンドラインオプションを使用するか、NASにタイムスタンプの問題があります(または両方:-)。このスレッドを確認してください "rsync to NAS毎回すべてをコピーします " 詳細については。

0
dtoubelis

安価なNASを持っているようなにおいがします。また、ネットワーク帯域幅が原因である可能性もあります...

「標準」の消費者NAS重いとなると本当に弱いIOこれは、ここでしようとしていることです。これは、安価なスイッチ接続であることもあります。 PCとNASこれは、すべてのパケットを正しく処理するのに十分な強度ではありません。

0

これを試してください、少なくともあなたがあなたの取得速度を10%以上上げると思います http://www.thegeekstuff.com/2009/09/linux-remote-backup-using-rsnapshot-rsync-utility/

0
Rajat