簡體   English   中英

EXT4的data=journal模式能否避免用戶數據丟失?

[英]Can the data=journal mode of EXT4 avoid user data loss?

  • 日記模式

data=journal 模式提供完整的數據和元數據日志。 所有新數據首先寫入日志,然后寫入其最終位置。

如果發生崩潰,可以重播日志,將數據和元數據帶入一致的 state。 這種模式是最慢的,除非需要同時從磁盤讀取數據和將數據寫入磁盤,它的性能優於所有其他模式。 啟用此模式將禁用延遲分配和 O_DIRECT 支持。

在這里我有幾個問題,請看一下:

  1. 配置data=journal,然后用戶調用write(),是數據寫入journal成功后write()返回,還是進入pagecache后返回用戶成功? 如果是后者,就說明journal是異步提交的,那么ext4的journal的意義就是保證文件系統本身的一致性,不保證用戶數據不會丟失?

  2. 如果ext4異步提交日志,什么時候觸發日志?

  3. 是否有任何其他文件系統允許在 write() 成功返回之前同步日志?

根據我本地實驗的結果,推斷該期刊應該是異步提交的。 我使用了一個單獨的 ssd 分區作為 journal_dev。 我用fio測試寫文件的時候發現journal_dev的io是斷斷續續的,不是一直都有IO。

  1. write() 將在進入頁面緩存后返回用戶成功(假設您沒有在open()上使用任何額外選項)。
  2. 至少定期(參見https://www.kernel.org/doc/Documentation/filesystems/ext4.txt中的commit= )並且可能在任何待處理的sync / fsync等被允許完成之前。
  3. 否(否則它會破壞緩沖點)。

如果您要將O_SYNC傳遞給open()或進行額外的fsync ,您將了解 kernel 所知的穩定媒體何時寫入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM