archivemountより速い理由は何ですか?

archivemountより速い理由は何ですか?

私は現在、ArchiveMount300万以上のファイルを含む123,000kbアーカイブをマウントするためにこれを使用しています。設置してから5時間を超えていましたが、まだ終わっていません。

ファイルをマウントするより良い方法はありますか.tar.gz?フォルダにインストールしようとしていますが、解凍するのに時間がかかります。書き込みモードも必要なく、読み取り専用で十分です。

答え1

より速い選択肢を書きましたラタマウント、この問題が私を苦しめたのでこれは「私に助けました」。

次のようにインストールして使用できます。

pip3 install --user ratarmount
ratarmount my-huge-tar.tar mount-folder
ls -la mount-folder # will show the contents of the tar top-level

完了したら、FUSEのインストールと同様に削除できます。

fusermount -u mount-folder

archivemountより速い理由は何ですか?

以下は、最初のインストールに必要なメモリ使用量と時間の基準だけでなく、1つの簡単なcat <file-in-tar>コマンドと1つの単純なコマンドへfindのアクセス時間です。

ベンチマーク

それぞれ1,000個のファイルを含むフォルダが作成され、フォルダ数はさまざまです。

左下のパネルには、cat <file>ランダムに選択された10個のファイルの最小および最大測定時間を示すエラーバーが表示されます。

利点

  • ベンチマークには表示されていませんが、Ratarmountは以下を使用してファイルをマウントできます。既存のインデックスサイドカーファイル1秒以内で完了効率が大幅に向上しました。archivemountと比較すると、各後続のインストール
  • Ratarmountが付属しています。進捗インジケータしたがって、ユーザーはアーカイブマウントと比較してフィードバックを受け取らずに数時間待つ必要はありません。
  • ファイルコンテンツのインポートインストールされたアーカイブは通常はるかに早くarchivemountおよびfusion-archiveと比較して、アーカイブのサイズやファイル数によっては拡張されないため、最大約5倍の速度向上が観察されます。
  • インストールする圧縮パッケージ2アーカイブxzアーカイブは効果的に急いでratarmount -P 0これらの圧縮をデコードするために複数のコアを使用するため、ほとんどの最新プロセッサのarchivemountおよびfusion-archiveと比較されます。indexed_bzip2サポートブロックパラレル復号バージョン1.2.0からrapidgzip
  • メモリ消費ラタモンテの成長少ない圧縮しないアーカイブマウントとは異なり、bzip2はファイル名がメモリに保存されず、SQLiteデータベースのディスクに格納されるため、アーカイブのサイズによってはまったく大きくなりません。
    • これアーカイブ照会されるデータがbzip2に必要な2つの64ビットオフセットの2000倍よりも数千倍大きいため、バックエンドはアーカイブサイズに応じて直線的に増加します。これが問題になる場合は、検索ポイント間隔を増やしてポイントの総数を減らすことで、--gzip-seek-point-spacing <spacing in MiB>生成されるデータを減らすことができます。
    • メモリ使用量これが標準ですバックエンドはあまりにも頻繁に開いているので巨大に見えますmmap。メモリ使用量を使用または表示するときに使用されるメモリは、使用されたmmapメモリとしてカウントされません。freehtop
  • 空のファイルの場合、Ratarmountとarchivemountを使用したマウントは、解凍またはI / O帯域幅によって制限されるのではなく、内部ファイルインデックスを生成するために使用されるアルゴリズムによって制限されるようです。

欠点

  • 多くのメタデータを入手してくださいマウントポイントを呼び出してfind表示するアーカイブコンテンツの場合は、サイズ順です。ゆっくりarchivemountと比較すると、主にPythonとPythonの間接アドレス指定によるものです。

より詳細なベンチマークについては、以下をご覧ください。Githubページ

答え2

圧縮されたsquashfsイメージを作成することもできます。

mksquashfs /etc squashfs.img -comp xz
mkdir img
mount -o squashfs,ro squashfs.img img

これを行うには、tar.gz Archvieを抽出する必要があります。

利点は、イメージがgzよりもフォールトトレランスが高いことです。

答え3

ここで問題は形式です。 TAR(Tape Archive)形式は、ランダムアクセスではなく順次アクセス用に設計されています。 gzipはストリームベースの圧縮形式であり、ランダムアクセス用ではないため、tarを補完する良い方法です。

したがって、圧縮されたチャンクと直接対話しない高度なツールは、何でも読み取る必要があるたびにファイル全体を解析し、最初にファイルのリストを取得してからキャッシュを無効にして再読み込みする必要があります。コピーしたファイルを再度読み取ることができます。あなたできる各ファイルの場所とファイルを取得するためにどのブロックを解凍する必要があるかを覚えるツールを作成するのは面倒な人がほとんどいないようです。

より高速にするには、tar tzf file.tar.gz > filelistこのファイルのリストを開きます。ウィム編集者または、ファイルから不要な行を削除して保存してからtar xzf file.tar.gz -T filelist -C extracted/

圧縮ファイルへのランダムアクセスのためには、posix拡張子、rar、またはdru8274が提案したように、squashfsを持つzipを使用するか、圧縮されたZFSを開く必要があります。または、btrfsが読み取られたときに圧縮が有効になっている場合は、btrfsを使用する必要があります。

答え4

テキストエディタの使用を制限するので、すべてのユースケースをカバーするわけではありません。ただし、読み取りアクセスにのみ興味がある場合は、この方法が役に立ちます。vim、tarballで実行されたときにアーカイブのコンテンツ階層を表示します(ディレクトリで実行されたときのファイル階層の表示方法に似ています)。リスト内のファイルの1つを選択すると、選択したファイルが読み取り専用バッファで開きます。

繰り返しますが、これが必ずしも画像やその他のメディアへのアクセスを提供するわけではありませんが、必要なものがコンテンツを表示したりテキストベースのファイルにアクセスしたりするだけであれば、この方法は役に立ちます。

ノート:すべてのアーカイブ形式では機能しません。

関連情報