web-dev-qa-db-ja.com

Linuxでextファイルシステムが自分自身のためにより少ないスペースを使用するようにする方法はありますか?

Linuxシステムで使用する外付けおよび内蔵HDDがたくさんあります。私はLinuxシステムしか持っていないので、Linuxファイルシステムを使うのは意味があるでしょう、そうではありません。しかし、私は現在、どこでもNTFSを使用しています。これは、HDDの中で最も使用可能なスペースを私に提供するためです。

私は今、Linuxファイルシステムに切り替えたいのですが、主にパーミッションと互換性のためです(例えば、LinuxではLUKS暗号化NTFSパーティションのサイズを変更できません。Windowsではchkdskを教えてください)。

しかし、それらのHDDをフォーマットしたとき、私が知る限りではジャーナル処理がないext2でさえも、さまざまなファイルシステムとすべてのLinuxファイルシステムを試してみました。正確な値は思い出せませんが、NTFSで2TBのHDDを使用しているのは100GBを超えていました。

だから私の質問は:extファイルシステムが自分自身のためにより少ないスペースを使うようにする方法はありますか?それとも、完璧なLinuxサポートとすばらしい使用可能スペースを持つ別のファイルシステム(私はext2、ext3、ext4、NTFS、vfatを試してみました - それらのどれもNTFSが私に提供した使用可能スペースに近づけなかった)?

ファイルシステム(特にジャーナル処理のないext2)がNTFSよりはるかに多くのスペースを使用する方法とその理由について知りたいのですが、他に尋ねる場所がわかりません。可能であれば、ジャーナルを作成せずにext4を使用する方法と、これ以外のスペースを使用する方法をお勧めします。

48
confetti

デフォルトでは、ext2とその後継者は、rootユーザーが使用するためにファイルシステムの5%を予約します。これにより断片化が少なくなり、管理者やrootが所有するデーモンが作業のためのスペースを空けずに残る可能性が少なくなります。

これらの予約済みブロックは、rootとして実行されていないプログラムがディスクをいっぱいにするのを防ぎます。これらの考慮事項が容量の損失を正当化するかどうかは、ファイルシステムが何に使用されているかによって異なります。

5%の量は、ディスクがずっと小さくなった1980年代に設定されましたが、そのまま残されました。今日ではシステム安定性のためにおそらく1%で十分です。

-mコマンドのtune2fsオプションを使用して予約を変更できます。

tune2fs -m 0 /dev/sda1

これにより、予約ブロックの割合が0%(0ブロック)に設定されます。

(とりわけ)現在の値を取得するには、次のコマンドを使います。

tune2fs -l <device> 
94
harrymc

まだ議論されていないもう一つのポイントは、あなたがあなたのファイルシステムに予約しているinodeの数です。

デフォルトでは、mkfsはたくさんのiノードを作成します。これにより、非常に小さなファイルをたくさんファイルシステムに入れることが可能になります。ファイルが非常に大きくなり、FSに保存するファイルの数が少なくなることがわかっている場合は、iノードの数を減らすことができます。

世話をする!この数(それぞれスペースとiノード数の比率)は、ファイルシステムの作成時にのみ設定できます。 FSを拡大しても、比率は変わりません。

3
glglgl

格納しようとしているデータが圧縮可能であれば、compress=zstd(またはcompress-force=zstd)でマウントされたbtrfsはおそらくextよりもかなり少ないディスクスペースを使用するでしょう。

  • これにより、btrfsはデータをディスクに書き込む前に透過的にデータを圧縮し、読み戻すときに透過的にデータを圧縮解除します。また、ext4はファイルシステムの作成時にすべてのiノードを事前に割り当てます。btrfsは必要に応じてそれらを作成します。これにより、ある程度のスペースを節約できる可能性があります。
3
hanshenrik