你知道RAID中的Write Hole問題嗎?

來源:互聯網
上載者:User

標籤:raid   atomic write   write hole   nvdimm   

RAID系統中會存在一個稱之為Write Hole的問題,這到底是一個什麼問題?會給使用者帶來什麼影響?目前開源RAID系統中如何解決這個問題?這類問題需要採用什麼方式來解決呢?儲存老吳從研發的角度和大家一起分析一下這個問題,看看這個問題的本質以及解決思路。

 

Write Hole是一種非常形象的描述。對於一個採用條帶內部通過校正資料進行資料保護的系統,當應用程式正在更新條帶內部資料的時候,如果系統突然斷電,條帶資料無法正常更新完成,那麼此時就會出現條帶中的資料部分更新完成。在這種情況下,當系統重啟之後,條帶中的資料是不完整的,校正資料和條帶中的有效資料無法匹配上,條帶處於資料不一致的情況。這種問題就被稱之為Write Hole問題,如所示:

650) this.width=650;" title="1.jpg" src="http://s3.51cto.com/wyfs02/M02/71/A6/wKioL1XWCATyGSZEAADgjf1ya2g532.jpg" alt="wKioL1XWCATyGSZEAADgjf1ya2g532.jpg" />

在更新條帶資料的時候,D2資料被更新成了D2’,但是條帶的校正資料P、Q沒有被更新完成,此時系統由於發生故障而重啟。在這種情況下,條帶資料處於不一致的狀態。系統重啟之後,通常RAID系統無法感知這種資料不一致的條帶。在這種情況下,如果條帶中的D3再次發生了故障,那麼需要通過校正資料P恢複D3。在資料恢複過程中,使用到了D2’資料,那麼顯然恢複出來的資料會發生錯誤,不再是原來的D3資料。所以,資料不一致的條帶將會進一步引入資料正確性的問題。即Write Hole問題不僅破壞被更新過的資料,進一步會潛在影響未更新資料的正確性,在極端情況下會影響整條帶資料的正確性。

 

考慮在發生Write Hole問題的時候,即在條帶資料更新時,系統突然斷電,RAID系統中出現若干資料不一致的條帶。在系統重啟之後,針對這些資料不一致的條帶,可以採用全系統掃描的方式對資料不一致條帶進行修複。這也是目前很多RAID系統所常用的方法,通過這種方式可以防止資料不一致條帶進一步導致未更新資料的正確性問題。在RAID系統中通常存在SYNC功能,當系統非法重啟之後,可以通過SYNC功能對RAID中的所有條帶進行檢查,並且將資料不一致條帶進行修複。這種方式可以防止Write Hole問題的擴散,但是還是會導致RAID系統中部分資料的徹底丟失。

 

為了徹底解決Write Hole問題,在設計RAID的時候可以採用如下兩種方法:

1,採用檔案系統的Journal(日誌)的設計思想,實現寫請求的原子處理

2,藉助於採用非易失性記憶體做為寫緩衝,達到原子寫操作的目的

 

這兩種思路本質上是類似的,第二種是對第一種的最佳化。我們知道檔案系統在資料更新的時候為了保證資料更新的原子性,可以採用日誌的方式,把一次資料更新操作看成一次transaction(事務)。即不管一次資料更新操作有多少次IO,從外部來看這是一次原子操作,可以稱之為atomic write。當atomic write中間過程發生故障時,系統重啟之後可以繼續操作,保證資料要麼更新完成,要麼完全沒有寫入,不會存在中間狀態。RAID系統想要解決Write Hole的問題,也需要引入這種Atomic write的機制。很直接的想法是在每次RAID進行條帶資料更新的時候,首先記錄一下日誌,儲存事件類型以及相關的資料;然後再將資料提交到條帶中;當條帶資料全部更新完成之後,清除日誌資料。這種方式可以保證原子寫,即使在條帶資料更新過程中發生系統故障,系統重啟之後,通過日誌資料可以繼續寫過程,保證條帶資料完全更新完畢,並處於資料一致的狀態。

 

日誌的方式看似完美,但是會嚴重影響效能。在磁碟儲存系統中,日誌更新非常耗時,一次更新需要進行多次磁碟IO操作,如果日誌儲存空間和條帶儲存空間在物理上不連續,那麼將會引入磁碟抖動問題,嚴重影響效能。對於快閃記憶體儲存系統,引入日誌系統之後,所有的資料操作將會引入雙倍的資料寫入操作,寫放大問題變得非常棘手。所以,在開源RAID系統中,都沒有提供這種日誌操作方式,通常需要上層的檔案系統來解決這種write hole的問題。在商用的一些RAID系統中,為了保證極致的資料可靠性,有些系統實現了這種日誌資料更新方式,達到Atomic Write的目的。

 

另一種比日誌方式更好的方法是引入非易失記憶體NVRAM。在更新RAID資料的時候,首先將資料寫入非易失記憶體中,當NVRAM中的資料彙總完畢之後再更新寫入條帶。當條帶中的資料更新完畢之後,再將NVRAM中的資料清楚。在條帶資料更新的過程中,如果系統出現異常重啟,由於NVRAM中依然存在未完成更新的資料,所以,條帶中的資料將會被再次更新,不會存在中間資料狀態,不會存在Write Hole的問題。

 

採用NVRAM的這種方法是比較完美的Write Hole解決之道。對於硬RAID,往往採用熱備電池或者超級電容的方式保護RAID卡上的記憶體,起到的就是這個作用。所以,和軟RAID相比,硬RAID在這一點上會更勝一籌。在軟RAID中,可以在系統中使用PCIe NVRAM或者NVDIMM來實現RAID的非易失資料緩衝。通常在儲存系統中,軟RAID會和檔案系統、上層的應用系統進行配合,因此,NVRAM也會和檔案系統進行共用,從而解決掉Write Hole的問題。EMC的很多儲存系統就會採用非易失記憶體NVRAM,讓檔案系統與RAID進行配合,避免RAID處於Write Hole的狀態。

 

Write Hole是RAID的一個比較難於解決的問題,但是藉助於最新NVDIMM等非易失記憶體技術之後,該類問題可以有效避免和解決。


本文出自 “儲存之道” 部落格,請務必保留此出處http://alanwu.blog.51cto.com/3652632/1686723

你知道RAID中的Write Hole問題嗎?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.