ディスクに書き込むときにデータを圧縮する

ディスクに書き込むときにデータを圧縮する

科学計算に使用するサーバーがあり、各ユーザーは自分の使用のために仮想マシン (Linux または Windows) を持っています。問題は、多くのユーザーがこのサーバーを使用すると、これらの計算によって生成されるレポートが膨大な量のストレージを占有することです。

レポートが完成した後ではなく、ディスクに書き込まれるときに出力を圧縮する方法があるかどうかを知りたいです。

アップデート1:ハイパーバイザーとしてVsphereを使用し、ストレージにはHDDを使用しています

答え1

ストレージをインライン圧縮したり重複排除したりできます。これを実現するにはいくつかの方法があり、簡単な方法もあれば、より効果的な方法もあります。

まず、Linux および UNIX システムでは、ブロック レベルでの圧縮と重複排除の両方をサポートするファイル システムおよびボリューム マネージャーである ZFS を使用できます。この上に構築された共有またはローカル ストレージ システムはすべてこれらの機能を使用できるため、ZFS 上の NFS のような単純なものでも、すべての VM にわたる共有プールを使用して必要な操作を実行できます。

Linux では、インライン重複排除と圧縮をサポートするマルチデバイスファイルシステムである btrfs を使用できます。上記と同じ考え方です。Btrfs は ZFS よりもハードウェア要件が少ないですが、インライン重複排除は依然としてかなり負荷がかかります (どちらかのファイルシステムを使用して、より大きな共有データセット全体で実行するのが最適です)。btrfs について覚えておくべきことは、まずファイルシステムであり、次にボリュームマネージャであるということです。また、ZFS のようなブロックベースの抽象化は提供されないため、純粋にファイルベースのシステムです。

この機能を備えた NAS/SAN 製品がいくつかあります。共有ストレージに NAS/SAN を使用すると、既成のサポート製品でありながら、重複排除と圧縮を有効活用できます。FreeNAS は、ZFS を使用できるこのようなシステムの一例です。Synology NAS デバイスも btrfs を使用でき、実際に使用しています。

答え2

私は @SmallLoanOf1M に同意しますが、もう 1 つのアイデアは、VM 内でレポートを実際に圧縮することです。この方法では、基盤となるハイパーバイザー (つまり、Xen Dom0) に負荷をかけず、VM の CPU 制限内に収めることができます。

データをパイプできる場合は、常に次のような操作を実行できます。

report-generator-program | lz4 > report-file.lz4

または、gzip低速だがより良い圧縮が必要な場合、またはxzCPU を消費したい場合に使用します。

関連情報