Mount

ext3 文件系統使用什麼掛載選項來最大程度地減少數據失去或損壞?

  • October 14, 2014

我有一個嵌入式設置,使用 initramfs 作為根文件系統,但使用安裝在緊湊型快閃記憶體 IDE 驅動器上的自定義 ext3 分區。因為面對斷電時的數據完整性是整個設置中最重要的因素,所以我使用了以下選項進行掛載(以下是我/etc/fstab文件中的條目

<file system> <mount pt> <type> <options>                         <dump><pass>
/dev/sda2     /data      ext3   auto,exec,relatime,sync,barrier=1 0     2

我是通過在網際網路上閱讀這些選項得出的。我擔心的是/proc/mounts給出的內容如下:

/dev/sda2 /data ext3 rw,sync,relatime,errors=continue,user_xattr,acl,
barrier=1,data=writeback 0 0

根據我從閱讀中了解到的情況,我想data=journal為我的掛載使用選項,因為這提供了防止數據損壞的最佳保護。但是,從特定 ext3 選項的手冊頁中,mount它對寫回選項進行了以下說明:

不保留數據順序 - 數據可能在其元數據送出到日誌後寫入主文件系統。

據傳這是吞吐量最高的選項。它保證了內部文件系統的完整性,但是它可以允許舊數據在崩潰和日誌恢復後出現在文件中。

我對此感到非常困惑 - 手冊頁似乎建議我想為文件系統完整性指定data=writeback選項,mount但我發現的大多數其他參考資料(包括一些關於嵌入式 linux 的已出版書籍)建議我應該使用data=journal. 什麼是我使用的最佳方法?寫入速度根本不是問題——數據完整性才是問題。

不要被僅writeback提及的事實所誤導internal filesystem integrity。無論您使用

還是,文件系統元數據總是被記錄下來,這意味著內部文件系統的完整性。 ext3``journal``ordered``writeback

數據模式提供了一種控制普通數據如何寫入文件系統的方法。

writeback模式下,元數據更改首先記錄在日誌中,然後寫入送出塊。日誌更新後,元數據和數據寫出可能會繼續。 data=writeback 可能是一個嚴重的安全風險:如果系統在追加到文件時崩潰,在送出元數據之後(並分配額外的數據塊),但在寫入數據之前(數據塊被新數據覆蓋),然後在日誌之後從任何使用者1恢復該文件可能包含填充了以前刪除文件中的數據的塊

因此,如果數據完整性是您的主要關注點,而速度並不重要,data=journal那麼這就是您要走的路。

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