Ext4
斷電後零字節文件-ext4 centos 6.4
當系統恢復時,在電源故障後一分鐘內寫入的文件是零字節。測試一個我們不能保證會有 ups 備份的系統。
Centos 6.4
核心 2.6.32-358.14.1.el6.x86_64
ext4 預設掛載
看到這發生在 2 個不同的系統上(我嘗試過的只有兩個)
第一個使用 PERC h710 控制器 RAID 6 和 4 個 3TB 驅動器。
它發生在有和沒有 lvm的情況下
它發生在直寫和回寫記憶體中。
2nd 沒有 RAID 控制器 2TB 磁碟
僅在沒有 lvm 的情況下測試
關於如何防止這種情況的建議?
根據您的描述,這聽起來像作業系統沒有將您的數據刷新到磁碟,因為您確實擁有文件元數據,只是沒有任何內容/長度。
write(2)絕不保證您的數據已命中磁碟(除非您使用 O_DIRECT打開(2)您的文件),您是在作業系統/文件系統的要求下,並且當它決定刷新數據/元數據時到磁碟。為了保證您的數據被安全地藏起來,您有兩種選擇:
- fsync(2)/fdatasync(2)並檢查它是否成功返回
- close(2)並檢查它是否成功返回
最大的警告是記憶體(可能會或可能不會)在驅動器和raid控制器上都有電池支持,特別是有些驅動器會將您的寫入放在它們的內部ram記憶體上並聲明它們已經寫入它,在某個時間視窗中,斷電會使您失去數據。