ext3 文件系統使用什麼掛載選項來最大程度地減少數據失去或損壞?
我有一個嵌入式設置,使用 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
那麼這就是您要走的路。