有沒有辦法讓 Linux 中的 ext 檔案系統使用更少的空間?

有沒有辦法讓 Linux 中的 ext 檔案系統使用更少的空間?

我有一堆在 Linux 系統上使用的外部和內部 HDD。我只有 Linux 系統,所以使用 Linux 檔案系統才有意義,對吧?不過,我目前在所有地方都使用 NTFS,因為它為我提供了 HDD 中最可用的空間。

不過,我現在想切換到 Linux 檔案系統,主要是因為權限和相容性(例如,我無法在 Linux 下調整我的 LUKS 加密 NTFS 分割區的大小,一直告訴我在 Windows 下進行 chkdsk)。

然而,當我格式化這些 HDD 時,我嘗試了一堆不同的檔案系統和每個 Linux 檔案系統,甚至是據我所知沒有日誌記錄的 ext2,它本身使用了大量空間。我不記得確切的數值,但 NTFS 為我在 2TB HDD 上提供了超過 100GB 的空間,這已經是很多了。

所以我的問題是:有沒有辦法讓 ext 檔案系統使用更少的空間?或者是否有另一個檔案系統(我嘗試過 ext2、ext3、ext4、NTFS 和 vfat - 它們都沒有接近 NTFS 提供給我的可用空間)具有完美的 Linux 支援和巨大的可用空間?

我很想知道檔案系統(尤其是沒有日誌功能的 ext2)如何以及為何使用比 NTFS 更多的空間,而且我不知道還能在哪裡詢問。如果可能的話,我更喜歡使用 ext4 而不使用日誌記錄和其他任何佔用這麼多空間的方法。

答案1

預設情況下,ext2 及其後繼者保留 5% 的檔案系統供 root 使用者使用。這減少了碎片,並且使得管理員或任何 root 擁有的守護程序不太可能沒有空間可以工作。

這些保留區塊可防止非 root 執行的程式填滿磁碟。這些考慮因素是否證明容量損失是合理的取決於檔案系統的用途。

5% 的金額是在 20 世紀 80 年代設定的,當時磁碟要小得多,但只是保持原樣。如今 1% 可能足以保證系統穩定性。

-m可以使用以下命令的選項更改預留tune2fs

tune2fs -m 0 /dev/sda1

這會將保留區塊百分比設定為 0%(0 個區塊)。

若要取得目前值(以及其他值),請使用下列命令:

tune2fs -l <device> 

答案2

尚未討論的另一點是您在檔案系統上保留的 inode 數量。

預設情況下,mkfs 會建立許多 inode,這使得將大量非常小的檔案放入檔案系統成為可能。如果你知道文件會很大並且你只會把少量文件放在FS上,你可以減少inode的數量。

小心!該數字(即空間與 inode 數量之間的比率)只能在檔案系統建立時設定。即使延長 FS,比率也保持不變。

答案3

如果您打算儲存在其上的資料是可壓縮的,則使用compress=zstd(或compress-force=zstd) 掛載的 btrfs 可能使用比 ext* 少得多的磁碟空間

  • 這將使 btrfs 在將資料寫入磁碟之前透明地壓縮數據,並在讀回資料時透明地解壓縮資料。另外,ext4 在建立檔案系統時預先分配所有 inode,btrfs 根據需要建立它們,我想這也可能節省一些空間。

相關內容