大量の大容量ファイルをすばやく圧縮

大量の大容量ファイルをすばやく圧縮

私は毎日約200 GBのログデータを生成し、約150のさまざまなログファイルに分散しています。

ファイルを一時的な場所に移動し、一時ディレクトリでtar-bz2を実行するスクリプトがあります。

200GBのログを12~15GB程度に圧縮すると良い結果が得られました。

問題は、ファイルを圧縮するのに時間がかかることです。これ予約されたことジョブは毎日午前2時30分に実行され、午後5時から6時まで続きます。

圧縮をスピードアップし、より早く作業を完了する方法はありますか?どんなアイデアがありますか?

他のプロセスについては心配しないでください。圧縮は次の場所で行われます。那須、専用セッションでこれを行うことができます。仮想デバイスそこから圧縮スクリプトを実行します。

これが出力ですトップ参考までに:

top - 15:53:50 up 1093 days,  6:36,  1 user,  load average: 1.00, 1.05, 1.07
Tasks: 101 total,   3 running,  98 sleeping,   0 stopped,   0 zombie
Cpu(s): 25.1%us,  0.7%sy,  0.0%ni, 74.1%id,  0.0%wa,  0.0%hi,  0.1%si,  0.1%st
Mem:   8388608k total,  8334844k used,    53764k free,     9800k buffers
Swap: 12550136k total,      488k used, 12549648k free,  4936168k cached
 PID  USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 7086 appmon    18   0 13256 7880  440 R 96.7  0.1 791:16.83 bzip2
7085  appmon    18   0 19452 1148  856 S  0.0  0.0   1:45.41 tar cjvf /nwk_storelogs/compressed_logs/compressed_logs_2016_30_04.tar.bz2 /nwk_storelogs/temp/ASPEN-GC-32459:nkp-aspn-1014.log /nwk_stor
30756 appmon    15   0 85952 1944 1000 S  0.0  0.0   0:00.00 sshd: appmon@pts/0
30757 appmon    15   0 64884 1816 1032 S  0.0  0.0   0:00.01 -tcsh

ベストアンサー1

最初のステップは、ボトルネックが何であるかを把握することです。つまり、ディスクI / Oですか、ネットワークI / Oですか、それともCPUですか?

ボトルネックがディスクI / Oの場合、できることはあまりありません。ディスクが多数の並列要求を処理していないことを確認してください。これはパフォーマンスを低下させるだけです。

ボトルネックがネットワークI / Oの場合は、ファイルが保存されているコンピュータで圧縮プロセスを実行します。より強力なCPUを搭載したコンピュータで圧縮プロセスを実行すると、CPUがボトルネックの場合にのみ役立ちます。

ボトルネックがCPUの場合、最初に考慮する必要があるのは、より高速な圧縮アルゴリズムを使用することです。 Bzip2は必ずしも悪い選択ではありません。主な弱点は解凍速度です。しかし、gzipを使用して圧縮速度のためにサイズを犠牲にしたり、lzopやlzmaなどの他の形式を試してみることもできます。圧縮レベルを調整することもできます。 bzip2 のデフォルト値は-9(最大ブロックサイズ、つまり最大圧縮時間と最大圧縮時間) です。環境変数を圧縮レベル3BZIP2に設定します。-3このスレッドそしてこのスレッド特に一般的な圧縮アルゴリズムについて説明する。このブログ投稿derobertが引用したいくつかのベンチマークではgzip -9bzip2bzip2 -9これは別のベンチマークですまた、bzip2圧縮率が低レベルでより速く達成できることを示すlzma(7zipのアルゴリズムなので、7z代わりに使用可能)も含まれています。 bzip2以外の選択をすると、解凍時間が短縮されます。圧縮率はデータによって異なり、圧縮速度はコンプレッサーのバージョン、コンパイル方法、およびそれを実行しているCPUによって異なります。tar --lzmalzma

ボトルネックがCPUでコアが複数ある場合、別のオプションは並列圧縮です。これを行う方法は2つあります。すべての圧縮アルゴリズムに適用される1つのアプローチは、ファイルを個別に(個別にまたはグループごとに)圧縮し、次を使用することです。parallelアーカイブ/圧縮コマンドを並列に実行します。これにより圧縮を減らすことができますが、個々のファイル検索が高速化され、すべてのツールで使用できます。別のアプローチは、圧縮ツールの並列実装を使用することである。このスレッドいくつかリストしてみてください。

おすすめ記事