インターネットで検索しましたが、私の問題に対する満足のいく答えが見つかりませんでした。現在経験している問題は、NTFSパーティションのデータをext4パーティションに変換することです。驚くべきことに、ext4ファイルシステムを使用すると、同じハードドライブに少量のデータを保存できます。調査の結果、これがext4のInodeと関連があることがわかりました。
me@server:/media$ LANG=C df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 3815552 31480 3784072 1% /media/storage
/dev/sdb1 1905792 1452 1904340 1% /mnt
コマンド実行時
me@server:~$ sudo find /mnt -type f | wc -l
1431
ハードドライブには1431個のファイルがあり、各ファイルのサイズは約4〜8GBです。したがって、基本的には、非常に少数のファイルに対してあまりにも多くのinodeがあります。
私の質問は次のとおりです
- 今、Inodeの数を変更する方法は?
- ファイルを保存するためのより良いファイルシステムはありますか?
答え1
デフォルトでは、ext2/ext3/ext4ファイルシステムはrootユーザーのために5%のスペースを予約します。これは、一般的な構成のルートファイルシステムに適しています。つまり、ユーザーがディスクをいっぱいにすると、システムが停止せずに重要な機能が機能し続け、特にログが記録され続けることができます。他のほとんどのシナリオではこれは意味がありません。
ルートに5%を予約したくない場合は、ファイルシステムの作成時に転送するか、-m 0
後でこのオプションを使用して呼び出します。mkfs
tune2fs
-m 0
ただし、ファイルシステムが95%の場合、拡張を考慮する必要があります。 NFSとext?ファミリを含むほとんどのファイルシステムは、ほとんどいっぱいになると効率的に動作しません。
答え2
最も一般的なユースケースでは、デフォルト設定で作成されたほとんどのファイルシステムには、必要以上のinodeがあります。しかし、これは次の点を考慮すると実際にはかなり良い妥協です。
- 全体的に、inodeテーブルはあまりスペースを無駄にしません。ファイルシステム内の最後の数バイトの空き領域を絞り込むために、inodeの数を減らすことはほとんど価値がありません。
- inodeの数を減らしてからファイルシステムにinodeが不足していても、まだ利用可能なブロックがたくさんある場合、利用可能なブロックがすべて利用できないことは非常に残念で、問題を簡単に解決できません。ファイルシステムが作成された後は、inodeの数を変更することはできません。。
ファイルを保存するためのより良いファイルシステムはありますか?
まさか。ext4
とても良いです。
各ファイルシステムはファイルを少しずつ別々に保存するため、ストレージのオーバーヘッドも少し異なりますが、違いは小さくなければなりません。最も極端なケースでは、わずか数パーセントしか差がありません。
あなたは試すことができますxfs
。私は、過去にそれぞれ約250 KBのサイズを持つ数百万のファイルを持ついくつかのファイルシステムが、スペースxfs
効率の点で少し優れたパフォーマンスを発揮することに気づいたようです。しかし、YMMVはユースケースが異なるためです。