斷電時 SSD 元數據損壞是如何發生的?我可以最小化它嗎?
注意:這是對是否有辦法保護 SSD 免受因斷電而損壞的後續問題?. 我在那裡得到了很好的資訊,但它基本上集中在三個方面,“獲得 UPS”、“獲得更好的驅動器”,或者如何處理 Postgres 的可靠性。
但我真正想知道的是,我是否可以採取任何措施來保護 SSD 免受元數據損壞,尤其是在舊寫入時。回顧一下這個問題。它是金士頓消費級 SSD 上啟用寫入記憶體的 ext4 文件系統,我們看到了以下類型的問題:
- 具有錯誤權限的文件
- 已成為目錄的文件(例如,toggle.wav 現在是一個包含文件的目錄)
- 已成為文件的目錄(不確定內容..)
- 帶有亂碼數據的文件
這些事情發生在驅動器出現故障時或不久之前正在寫入的數據上,問題就不那麼重要了。這是一個問題,但這是意料之中的,我可以通過其他方式處理它。
更大的驚喜和問題是,磁碟上最近未寫入的區域(即一周或更長時間)發生了元數據損壞。
我試圖了解這樣的事情是如何在磁碟/控制器級別發生的。這是怎麼回事?即使我在其他地方寫,SSD 是否會定期“重新平衡”並移動塊?像這樣:
然後在重寫 D 時會出現功率損耗。塊 1 上可能會留下一些碎片,而塊 2 上可能會留下一些碎片。但我不知道它是否可以這樣工作。或者也許還有其他事情發生..?
總而言之-我想了解這是如何發生的,以及我是否可以採取任何措施來緩解作業系統級別的問題。
注意:“獲得更好的 SSD”或“使用 UPS”在這裡不是有效的答案——我們正試圖朝著這個方向前進,但我必須接受現實,並用我們現在擁有的東西找到最好的結果。如果這些磁碟沒有解決方案並且沒有 UPS,那麼我想這就是答案。
參考:
SSD 驅動器的 ext3 分區上的突然斷電後文件系統損壞是“預期行為”嗎? 這很相似,但不清楚他是否遇到了我們所遇到的問題。
編輯:我也一直在閱讀 ext4 可能存在斷電問題的問題。我們的有日記,但我不知道其他任何事情。
http://www.pointsoftware.ch/en/4-ext4-vs-ext3-filesystem-and-why-delayed-allocation-is-bad/
有關意外電源故障後如何發生元數據損壞,請在此處查看我的其他答案。
禁用記憶體可以顯著降低飛行中數據失去的可能性;但是,根據您的 SSD,靜態數據仍然存在損壞的風險。此外,它會導致巨大的性能損失(我看到 500+ MB/s SSD 在禁用私有 DRAM 記憶體後僅以 5 MB/s 的速度寫入)。
如果您不能信任您的 SSD,唯一的“解決方案”(或者,更確切地說,解決方法)是使用端到端校驗和文件系統作為 ZFS 或 BTRFS和RAID1/鏡像設置:以這種方式,任何最終的單-設備(元)數據損壞可以通過執行檢查/清理從另一鏡像端恢復。