大容量ファイル(〜20 GB)をコピーするときにcpよりも高速な選択肢はありますか?

大容量ファイル(〜20 GB)をコピーするときにcpよりも高速な選択肢はありますか?

私は大学院生であり、私が働いているグループではLinuxクラスタを維持管理しています。クラスタの各ノードには独自のローカルディスクがありますが、これらのローカルディスクは比較的小型で自動バックアップ機能を備えていません。したがって、チームには数テラバイトのストレージスペースを持つファイルサーバーがあります。私はLinuxに初めて触れた初心者なので、速度、ネットワーク機能などの面でファイルサーバーの仕様が何なのかよくわかりません。 I / Oの観点からは、ローカルディスクがファイルサーバーよりはるかに高速であることを経験から知っています。ファイルサーバーを使用する人は12人程度です。

cpファイルサーバーからローカルディスクの1つに約20 GBのファイルをコピーするのに平均実際の時間は約11.5分かかります(によるとtime)。私はこのcp作業がそれほど効率的ではないことを知っています。なぜなら、(1)timeそのようなコピーのシステム時間がわずか45秒であることを知らせるからです。 (2)topコピー中に確認すると、%CPU非常に低い(検査結果はおおよそ0-10%一般的に)。

同じ〜20 GBファイルをローカルディスク上の1つのフォルダから同じローカルディスク上の別のフォルダにコピーするのにcp時間がかかります。リアルタイムで約9分(システム時間を基準に最大51秒time)かかります。明らかに予想されるように、ファイルサーバーはローカルディスクよりも少し遅いですが、それほど遅くはありません。ローカルから同じローカルにコピーするのに9分以上かからないことに驚きました。

ファイルサーバーからローカルディスクの1つに約200個の大容量ファイル(それぞれ約20GB)をコピーする必要があります。だから私の質問は次のとおりです。cpLinuxで大容量ファイルをコピーするよりも高速な方法はありますか? (またはcpコピー速度を上げるためにそこにあるフラグの1つを使用できますか?)コピー時間を1分ほど短縮できるとしても、多くの役に立ちます。

より高速な新しいハードウェアディスクを購入すると確信していますが、そのようなリソースにアクセスすることはできません。私もシステム管理者ではありません。私は(初心者)ユーザーだけなので、ディスクのロードに関する詳細情報にアクセスできません。毎日約12人の人々がファイルサーバーを使用している間、この特定のノード/ローカルディスクを使用している人は私だけです。

答え1

%CPUしなければならないコピー中は低状態にしてください。 CPUはディスクコントローラに「XYセクタデータをZのメモリバッファにインポートしてください」と指示します。それから別のことに行きます(または他のことがなければ眠ります)。データがメモリにある場合、ハードウェアは割り込みをトリガします。その後、CPUは数回コピーし、ネットワークカードに「メモリ位置A、B、Cからパケットを送る」と指示する。その後、もう一度やり直してください。

〜240mbpsを推進しています。ギガビットLANでは、少なくとも800mbpsを達成できますが:

  1. これは、ファイルサーバーを使用するすべての人(およびスイッチ間の接続など)間で共有されます。
  2. これは、ファイルサーバーが書き込みを処理できる速度によって制限されます。ディスクI / O帯域幅は、それを使用しているすべての人が共有することに注意してください。
  3. ファイルサーバー(NFS、CIFS(Samba)、AFSなど)にアクセスする方法を指定していません。ネットワークのインストールを調整する必要があるかもしれませんが、最近では通常、デフォルトはかなり合理的です。

これはボトルネックを追跡するのにiostat -kx 10便利なコマンドです。ローカルハードドライブの使用率を示します。ファイルサーバーで実行できる場合は、ファイルサーバーがどれほど忙しいかを知らせます。

一般的な解決策は、このボトルネックの速度を上げることですが、もちろん予算はありません。しかし、特別なケースでは、より速い方法を見つけることができます。

  • ファイルが圧縮可能で CPU 速度が速い場合は、次のようにします。最小リアルタイム圧縮が速くなる可能性があります。似ているlzopか多分gzip --fastest
  • ここで数ビットだけ変更してからファイルを再送信すると、デルタだけを送信する方がはるかに高速です。残念ながら、rsyncデルタを見つけるには両側からファイルを読む必要があるため、実際には役に立ちません。代わりに、ファイルが変更されたときにデルタを追跡する必要があります。ここにあるほとんどの方法はアプリケーションによって異なります。ただし、デバイスマッパーを使用することもできます(新しいトピックを参照)。DM時代の目標)またはbtrfs。
  • 同じデータをコピーすると多くの種類コンピュータの場合は、udpcastなどを使用して一度に送信できます。

そして自分がシステム管理者ではないということに気づいたので、これはシステム管理者がいることを意味しているようです。あるいは、少なくとも誰かがファイルサーバーとネットワークを担当しています。あなたはおそらく彼/彼女/彼らに尋ねる必要があり、彼らはあなたの設定についてもっと知っているでしょう。システム管理者は、少なくとも合理的に期待できる転送速度を知らせることができなければなりません。

答え2

これはより速い選択肢である可能性があり、2日間ネットワークを妨げることはありません。大容量USB(存在する場合はUSB 3)またはFireWireディスクを1〜2台取り、サーバーに接続し、ファイルをディスクにコピーします。ディスクをローカルコンピュータにインポートします。ファイルをコンピュータにコピーします。

答え3

scp直接SSH(またはSFTP)アクセス権がある場合(システム管理者に連絡)、圧縮()を使用できます-C

scp -C you@server:/path/to/yourfile .

もちろん、これはファイルが圧縮可能な場合にのみ機能し、暗号化(SSHを使用するため)と圧縮を使用するため、より多くのCPU時間を使用します。

答え4

効率のためのあなたの定義は逆です。より効果的な廃棄物処理少ないCPU時間。ローカルレプリカでは、平均スループットは約74 MB / s(読み取り+書き込み)であり、これは単一のハードドライブとほぼ同じです。

関連情報