web-dev-qa-db-ja.com

「write-oncearchive」:ext2 vs ext4 ^ has_journal vs

概要

外付けドライブを「ライトワンスアーカイブ」として設定しているとします。それを再フォーマットし、(願わくば)更新されないファイルをコピーして、何かを読む必要があるまで脇に置いておきます(別のLinuxボックスからのアーカイブから(長い間または決して)。また、アーカイブにできるだけ多くのファイルスペースを取得できるようにしたいです。つまり、ファイルシステムがそれ自体の目的のためにできるだけ少ない空き領域を消費するようにしたいのです。

特定の質問1:このユースケースにはどのファイルシステムが適していますか:ジャーナリングなしのext2またはext4?

私はこれまで後者を行ったことがないので(私は通常、この種のことを GParted で行います)、念のために言っておきます。

特定の質問2:はジャーナルレスext4をインストールする「方法」ですmke2fs -t ext4 -O ^has_journal /dev/whatever

一般的な質問3:このユースケースに適したファイルシステムはありますか?または完全に異なる何か?

詳細

デッドボックス上の古いプロジェクトからのbunchaファイル(したがって、更新されることはありません)をさまざまな外部ドライブに保存しています。まとめてサイズ(ファイル)〜= 250GB。これはDVDには大きすぎます(つまり、何かが足りない場合を除いて、必要な数が多すぎます)。また、テープドライブがありません。したがって、私は古いUSB2HFS外付けドライブをアーカイブとして設定しています。 「実際のLinux」ファイルシステムを使用したいのですが、次のようなファイルシステムも使用したいと思います。

  1. アーカイブドライブの最小スペースを消費します(私が置きたいものを保持するのに十分な大きさであるためです。
  2. 将来使用する(おそらくLinuxの)ボックスから読み取ることができます。

私はGPartedで次のシーケンスを実行することを計画していました:[古いパーティションを削除し、単一の新しいパーティションを作成し、ext2ファイルシステムを作成し、ラベルを付け直します]。しかし、私は読んだ ここ それ

recent Linux kernels support a journal-less mode of ext4
which provides benefits not found with ext2

man mkfs.ext4の次のテキストに注意してください

"mke2fs -t ext3 -O ^has_journal /dev/hdXX"
will create a filesystem that does not have a journal

だから知りたい

  1. このユースケースには、ext2とジャーナリングなしのext4のどちらのファイルシステムが適していますか?
  2. 私がext4-minus-journalに行くと仮定すると、それをインストールするためのコマンドラインはmke2fs -t ext4 -O ^has_journal /dev/whatever
  3. このユースケースには、さらに優れた別のファイルシステムがありますか?
5
TomRoche

私はsquashfsの推奨事項に同意しません。通常、squashfsをrawブロックデバイスに書き込むことはありません。読みやすいtarアーカイブと考えてください。つまり、下にあるファイルシステムがまだ必要です。

ext2には、今日の有用性を制限するいくつかの厳しい制限があります。したがって、ext4をお勧めします。これはアーカイブを目的としているため、圧縮アーカイブを作成してアーカイブを続行します。つまり、ほとんど変更されないかなり大きなファイルが少数あることになります。そのために最適化できます。

  • -I 128を指定して、個々のiノードのサイズを縮小します。これにより、iノードテーブルのサイズが縮小されます。
  • -iオプションを試して、iノードテーブルのサイズをさらに小さくすることもできます。この値を増やすと、作成されるiノードが少なくなるため、iノードテーブルも小さくなります。ただし、これは、ファイルシステムがファイルごとに平均してより多くのスペースを浪費することを意味します。したがって、これは少しトレードオフになります。
  • 実際、-O ^has_journalを使用してジャーナルをオフにすることができます。ただし、そのルートをたどる場合は、デフォルトのオプションを設定してファイルシステムを読み取り専用でマウントすることをお勧めします。これはfstabで行うか、tune2fs -E mount_opts=roを使用してファイルシステムにデフォルトを記録することができます(mkfs時にこれを行うことはできません)
  • もちろん、データをアーカイブファイルに圧縮して、iノードの浪費がそれほど深刻な問題にならないようにする必要があります。 squashfsイメージを作成することもできますが、xzの方が圧縮率が高いため、代わりにtar.xzファイルをお勧めします。
  • -mオプションを使用して予約済みブロックの数をmkfsまたはtune2fsに減らすこともできます。これにより、ルート用に予約されているパーセンテージ(デフォルトでは5に設定)が設定されますのみ。ゼロに設定しないでください。ファイルシステムは、効率的な操作のためにいくらかのスペースを必要とします。
3
Wouter Verhelst

SquashFS は、要件によく適合する圧縮可能な読み取り専用ファイルシステムであり、カーネルに数年間使用されており、すでに広く使用されています(LiveCDなど)。ユーザースペースツールの最新のドキュメント GitHubにあります 。ドキュメントから:

Squashfsは、Linux用の高度に圧縮された読み取り専用ファイルシステムです。 gzip/xz/lzo/lz4圧縮のいずれかを使用して、ファイル、iノード、およびディレクトリの両方を圧縮します。システム内のiノードは非常に小さく、データのオーバーヘッドを最小限に抑えるためにすべてのブロックがパックされています。 4Kを超えるブロックサイズは、最大1Mバイト(デフォルトのブロックサイズ128K)までサポートされます。

Squashfsは、一般的な読み取り専用ファイルシステムの使用、アーカイブの使用(つまり、.tar.gzファイルを使用できる場合)、および低オーバーヘッドが必要な制約付きブロックデバイス/メモリシステム(組み込みシステムなど)を対象としています。

2
Vincent Yu

おそらく、圧縮されたファイルシステムの方が適しているでしょう。

さまざまなLinuxファイルシステムを圧縮する方法はいくつかありますが(Fuseで圧縮できます)、作成すると読み取り専用になるため、squashfsを検討してください。 mksquashfsを使用してファイルシステムを作成します。

Linuxは2.6.something以来メインカーネルにsquashfsを持っているので、ほとんどすべてのLinuxボックスから動作するはずです。

btrfsはオンザフライ圧縮で実行できると思いますが、私自身は使用したことがありません。 ZFS can-私はFreeBSDで自分で使用しています-Linuxマシンがそれを読み取る前に、いくつかのセットアップが必要になりますが。

ジャーナリングのないext2とext4に関しては、私には言えませんでした。Linuxでは習慣からJFSとXFSを使用しています。

1
Jeff Spaulding