2

ディスクに保存されている特定のファイルを圧縮し、ディスクから読み取られるファイルを解凍するカスタム Suse Linux NFS サーバーを構築する必要があります。これは、ファイル システムのリモート ユーザーに対して透過的である必要があります。つまり、ユーザーが XYZZY.tif という名前の 10 MB のファイルを /archiveDirectoryOnNFSServer に保存した場合、そのマウントされたディレクトリで ls -l を実行すると、10 MB のファイルが表示されます。 NFS サーバー上のディスクに格納される実際のファイルは XYZZY.tif.compressed であり、サイズは 2MB になりますが、XYZZY.tif と呼ばれます。

これを NFS サーバー ソフトウェア スタックの下にあるドライバーとしてビルドする必要があると予想していますが、どこから始めればよいかわかりません。API を介してこのレベルのカスタマイズを提供する既存の NFS サーバーはありますか? オープン ソースの NFS サーバーのソースを変更する必要がありますか? また、その場合、最も簡単に開始できるものはありますか? また、それらはモジュール化されており、簡単に変更できますか? インターネット上で関連するコンテンツを見つけるのが難しいので、何かアドバイスをいただければ幸いです。

4

2 に答える 2

1

この投稿は少し古いため、既にいくつかのオプションを知っているかもしれませんが、他にもいくつかあります (両方ともサーバー側用)。

http://zfsonlinux.org/ zfs ファイルシステムには組み込みの圧縮機能があります。私は通常、lzjb を使用します。これは、最速の圧縮アルゴリズムであり、適切な処理を行うためです (MySQL DB は 2 ~ 4 倍の圧縮率を実現し、圧縮されていないデータを含むファイルシステムは約 4 倍の圧縮率を実現します)。圧縮を提供する CPU 時間に応じて、アルゴリズムを選択できます。

異なるファイル タイプを圧縮したい場合は、一連の zfs ファイル システムの上に gluster を配置することを検討してください。gluster を使用すると、特定のファイル タイプを (拡張子によって) 異なる基になるファイル システムに格納できます。この場合、必要な特定のオプションを使用して、基盤となるファイルシステムを zfs ボリュームとして指定します (たとえば、.zip と .png は圧縮されていないファイルシステムに保存されますが、静的な html ファイルのように一度書き込んで何度も読み取るものは、圧縮されていないファイルシステムに保存される可能性があります)。より高い圧縮 -- 書き込み時に 1 回支払う必要がありますが、スキャンするディスク ブロックが少なく、解凍が非常に高速であるため、読み取りは非常に高速です)。

zfs を nfs サーバーとして使用する場合、zfs は nfs マウントを管理します。トップに gluster を配置する場合、これは必要ありません。

ファイルシステムごとに他の属性を動的に指定するのは簡単です (atime/noatime、通常の RAID 以外の冗長性が必要な場合はコピーの数、SSD をキャッシュ デバイスとして追加してパフォーマンスを向上させることができます)。

これらのソリューションでは、依然として圧縮されていない完全なファイルをネットワーク経由で送信するため、ネットワーク パフォーマンスを補うことはできませんが、ディスク IO を高速化したり、ドライブをより活用したりしようとしている場合は、多くのオプションが提供されます。

于 2014-01-12T06:44:30.513 に答える
1

IMO、そのような機能は絶対に NFS サーバーの責任ではなく (nfs サーバーは nfs 経由でファイルを提供する必要があります)、基盤となるファイルシステムの責任です。ただし、Linuxland にはそれほど多くの選択肢はありませんが、まずは fusecompressbtrfsを調べることから始めることができます。

于 2012-05-30T14:36:33.433 に答える