本文允許轉載。
轉載請注明出處:
http://blog.csdn.net/z2007b
作者:無為和尚
非易失性存儲設備寫數據時掉電恢復是一個比較頭痛的問題,如果寫入數據寫入到一半的時候掉電,數據的完整性就沒法得到保證,本文提出的方法是在不增加新硬件的情況下,完成掉電恢復的一個策略,但是本文介紹的方法沒法保證數據邏輯上的完整性。比如你要寫入的數據需要在 A 處寫 1 ,在 B 處寫 2 ,才能保證功能的正確性,如果這兩步操作是分開的,并且你在寫 A 的時候掉電了,那么可以恢復 A ,但是沒法恢復 B 。就保證不是 AB 這個大集合的完整性。只能保證寫 A 的完整性。
原理:
我們先要準備一塊非易失性的存儲區域。這個可以硬盤,也可以是一塊專門的高速存儲芯片。
這個備份所需的空間用于存儲臨時的文件。
假設我們要寫的文件的全路徑是 /FILPATH 。我們在寫此文件時,先將所需寫入內容的詳細信息和入備份文件 /BACK/FILEPATH ,然后將數據本身寫入 /BACK/FILEPATH , 在寫入數據完成之后再寫入結束信息。然后才將數據寫入文件 FILEPATH 。
上電啟動的時候遍歷備份文件區內的文件,并依照相關信息,清除掉之前寫 FILEPATH 寫到一半時掉電的數據,再將備份區內的完整信息再寫入,再清除掉備份文件本身。
下面給出流程圖:
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
