Filesystems

“一次寫入存檔”:ext2 vs ext4^has_journal vs

  • February 2, 2016

概括

假設一個人正在將一個外部驅動器設置為“一次寫入存檔”:一個人打算重新格式化它,複製一些(希望)永遠不會更新的文件,然後將它放在一邊,直到我需要讀取一些東西(可能是很長一段時間或永遠不會)來自另一個 linux 機器的存檔。我還希望能夠在存檔中獲得盡可能多的文件空間;即,我希望文件系統為自己的目的消耗盡可能少的可用空間。

**具體問題 1:**哪個文件系統更適合這個案例:ext2,還是沒有日誌的 ext4?

因為我以前從未做過後者(我通常用GParted做這種事情),所以為了確定:

**具體問題2:**安裝journal-less ext4的“方式”是mke2fs -t ext4 -O ^has_journal /dev/whatever什麼?

**一般問題 3:**這個案例是否有更好的文件系統?還是完全不同的東西?

細節

我在各種外部驅動器上保存了來自死盒(因此永遠不會更新)上的舊項目的一堆文件。總大小(文件)~= 250 GB。這對於 DVD 來說太大了(即,需要太多——除非我遺漏了什麼),而且我沒有磁帶驅動器。因此,我正在設置一個舊的 USB2 HFS 外部驅動器作為他們的存檔。我更喜歡使用“真正的 Linux”文件系統,但也更喜歡一個文件系統

  1. 佔用存檔驅動器上的最小空間(因為它幾乎不足以容納我想要放的東西。
  2. 將可以從我將來使用的任何(可能是 Linux)盒子中讀取。

我曾計劃使用 GParted 執行以下序列:

$$ delete old partitions, create single new partition, create ext2 filesystem, relabel $$. 但是,我在這裡讀到

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. 這個案例是否還有另一個更好的文件系統?

我不同意 squashfs 的建議。您通常不會將 squashfs 寫入原始塊設備;將其視為易於閱讀的 tar 存檔。這意味著您仍然需要一個底層文件系統。

ext2有幾個嚴重的限制限制了它今天的用途;因此我會推薦ext4。由於這是用於存檔的,因此您將創建壓縮存檔來繼續它;這意味著您將擁有少量很少更改的相當大的文件。您可以為此進行優化:

  • 指定-I 128減小單個 inode 的大小,從而減小 inode 表的大小。
  • 您也可以使用該-i選項,以進一步減小 inode 表的大小。如果增加這個值,創建的 inode 會更少,因此 inode 表也會更小。但是,這意味著文件系統平均每個文件會浪費更多空間。因此,這有點取捨。
  • 您確實可以使用 關閉日誌-O ^has_journal。但是,如果您走這條路,我建議您設置預設選項以只讀方式掛載文件系統;您可以在 中執行此操作fstab,或者您可以使用tune2fs -E mount_opts=ro在文件系統中記錄預設值(您有時無法執行此mkfs操作)
  • 您當然應該將數據壓縮到存檔文件中,這樣索引節點的浪費就不會像它可能的那樣嚴重。您可以創建 squashfs 圖像,但 xz 壓縮得更好,所以我會推薦 tar.xz 文件。
  • 您還可以使用或-m選項減少保留塊的數量。這將設置為 root only保留的百分比(預設設置為 5)。不要將其設置為零;文件系統需要一些空間才能有效執行。mkfs``tune2fs

引用自:https://unix.stackexchange.com/questions/259211