1. 程式人生 > >多副本和Raid根本扛不了快照備份容災的活兒

多副本和Raid根本扛不了快照備份容災的活兒

原創: 冬瓜哥
轉載自 大話儲存 微信公眾號。

本文目錄:
1. 資料損毀的幾種型別
2. 資料恢復的幾種方式
3. 多副本和Raid頂不了快照備份容災

最近,關於騰訊雲使用者前沿數控公司資料受損一事讓資料安全再次成為大家關注的焦點。騰訊雲也終於釋出了事情原委,詳見:關於客戶“前沿數控”資料完整性受損的技術覆盤。詳見:關於客戶“前沿數控”資料完整性受損的技術覆盤

總結起來三句話:管理員在遷移資料時違反規程關閉了校驗(比如大家熟知的md5和sha1),資料傳遞到新空間之後,沒等24小時就把原有副本刪除了。結果發現遷移過來的資料出現了問題。這個過程具體的細節冬瓜哥就不再追了。

本文冬瓜哥嘗試全方位的論述一下資料安全,雲上的使用者到底該怎麼做才能保證自己的資料安全。

1 資料損毀的幾種型別

1.1 介質物理損壞。比如磁碟扇區磁疇分佈出了問題,介質出現各種不穩定問題,直接讀不出來了。這種即便是找開盤恢復資料的公司,就算再牛逼,比如這家,也無能為力了。據說FBI有種技術,可以通過磁力顯微鏡,通過磁疇的分佈狀況,經過各種複雜分析,探測出該區域之前的資料,而且還不是100%。

1.2 盤內部物理部件損壞。比如機械硬碟的磁頭定位出了問題,音圈無法校準,電機出現機械故障,轉速不穩或者不轉,各種感測器出了問題,等等。固態硬碟PCB上的電容出了問題,供電部分出了問題,等等。這種損毀,是可以通過開盤修復資料的,資料恢復公司可以承接這類業務。

1.3 硬碟內部軟體崩潰或bug。比如硬碟韌體崩潰,啟動引數錯誤導致韌體無法啟動。或者韌體bug、硬體bug導致資料邏輯上的靜默損毀。

1.4 資料上層邏輯層面的損毀。最典型的比如誤刪了資料,中了病毒等。誤刪資料和中病毒純屬人為導致,與系統無關。

1.5 資料底層邏輯層面的損壞。出現不可修復亂碼,檔案系統丟失或者檔案錯亂,卷丟失或者容量錯亂,等。這些就屬於底層系統問題。冬瓜哥的兩篇文章大家可以擴充套件閱讀:原子寫靜默損毀

2 資料的恢復方法

資料丟了就得恢復,如果你沒有快照和備份的話,就只能用下面方式嘗試恢復資料。

2.1 軟體修復邏輯錯誤。一些誤刪除的資料,只要對應檔案所在的區域還沒有被分配給其他檔案並寫入新資料,一些資料恢復軟體可以通過掃描檔案系統元資料的方式來將檔案恢復出來。一些更專業的恢復工具(一般都是資料恢復公司自己開發的)可以識別更精細深度的資料,做更智慧的分析,從而將資料恢復出來,還有可能提供多個不同的恢復出來的副本供使用者選擇那個正確率最高的。

2.2 開盤修復物理損毀。發生盤內韌體等損毀時,整個硬碟已經無法正常工作,此時一般需要返廠,或者找專業資料恢復公司,通過特殊介面恢復韌體,或者直接做開盤修復,繞過原生韌體,直接控制。

2.3 各種Raid。Raid可以防止單盤資料的部分或者整體的資料物理損壞以及由於系統層導致的邏輯損壞,比如某個硬碟寫入時發生靜默損毀,但是Raid組中其他盤上的資料依然是完好的,此時,讀出資料時發現校驗有誤,就可以從Raid條帶中其他資料塊讀出資料恢復出目標資料。但是Raid無法防止上層的邏輯損壞,比如誤刪、中病毒等,因為這種資料是在源頭就被損毀了,已經被損毀的資料寫入到Raid系統之後,後者對這種層面的損毀無法感知。

2.4 多副本(Raid1)。多副本是大型網際網路廠商慣用的架構,由於普遍採用分散式系統,跨網路做校驗型Raid的話不適合隨即寫入場景,只適合大塊順序寫入,而且寫一次讀多次場景比如網盤之類。而更多場景只能採用跨網路的非校驗型Raid,那就是Raid1了,或者說多副本,存三份,一主兩副。多副本的本質還是Raid,所以無法防止上層邏輯層面的損毀,也就是說,無法防止源頭上的資料損毀。

所以,多副本和Raid基本上只能防止硬碟級的物理故障,和底層邏輯層面故障。顯然,只靠這兩個操作,資料仍然是不安全的。

3 多副本和Raid頂不了快照備份容災

資料邏輯層損毀,這是被很多使用者完全忽略掉的。很不幸,多數使用者依然認為Raid和多副本,資料安心無憂。那麼到底如何防止資料來源頭上的損毀?無法防止,這種損毀永遠都是存在的,比如中了勒索病毒,黑客入侵,騰訊雲的這次人為操作失誤,不過騰訊雲這次也的確加強了這方面管理。雖然無法做到事前防止,但是可以做到事後恢復。有2個技術可以做到:快照、備份

3.1 快照的重要性。快照相當於對使用者的資料拍了一張歷史照片,使用者可以做多個不同時間點的快照,將那些資料沒有損壞的時刻的資料映像儲存下來。快照有個特點就是它的尺寸會隨著資料更改的量而增加,如果資料不更改,則快照佔用的空間只是那些記錄表等元資料空間,可忽略不計。所以,只要資料沒有在底層發生邏輯或者物理損壞,那麼歷史快照就可以被用於快速恢復或者回滾。

3.2 備份的重要性。快照可以用於快速回滾資料,但是快照本身並不是備份。快照本質上是:指標表+增量資料塊。它儲存的只是增量資料塊,而如果基礎資料塊有任何邏輯或者物理錯誤,快照就會一損俱損。此時,必須將資料完完整整的複製出一份或者多份儲存,與生產資料完全脫離。但是備份和恢復資料時,由於存在完整拷貝,需要更長時間,架構也更復雜,比如塊級備份、CDP、檔案極、資料庫級等等。

3.3 容災的重要性。資料備份一般與生產資料放在同一個資料中心,在發生大型災難時,整個資料中心可能被損毀。所以需要容災,而容災一般是實時的,生產系統的寫I/O資料會被實時的複製到遠端的資料中心。目前有些做備份容災一體機的廠商,都支援雲-本地、多雲容災。

4 雲使用者的資料保障

綜合而言,資料安全等級如下圖所示。
這裡寫圖片描述
對於雲使用者而言,多副本、快照、備份,最好都用,起碼做到快照不要停,這是你唯一的速效後悔藥。值得一提的是,這次丟資料的騰訊雲反而針對每塊雲盤提供了7個免費快照額度,而其他廠商都是收費的,價格從一毛五到三毛五每GB/月不等。
這裡寫圖片描述
根據上表顯示,快照業務收費微軟的Azure和亞馬遜AWS基本相當,而國內阿里雲的一毛四分八釐每GB每月有點滑稽,為何不乾脆一毛五算了。而騰訊雲則是不限容量,直接為每個雲盤提供免費快照,但是上限為7個,一般來講還是可以滿足日常回滾需求的。騰訊雲和阿里雲的自動快照時間粒度精確到小時,也就是說RPO額定為1小時。而微軟僅支援手動快照,AWS的額定RPO要長一些,為12小時,處於劣勢。

如果碰到不可修復或者人為損壞,除了從雲廠商日常運維規程方面入手解決之外,使用者自身也決不能100%依靠雲,必須同時購買雲廠商提供的備份服務,或者自己部署雲-本地備份系統,自己留一份,雖然不是最新的資料,但是關鍵時刻好死不如賴活著。借用最近p2p暴雷的段子:雞蛋不能放到一個籃子裡,但是如果所有籃子都在一輛車上,整個車翻了,無人倖免。前沿數控公司如果當時購買了備份服務的話,或者起碼定期把資料從雲端備份到本地的話,也不至於像現在這樣的結果。