運維專家分析「騰訊雲與前沿數控的磁碟數據丟失事件」

近日,騰訊雲用戶“前沿數控”平臺一塊操作系統雲盤,因受所在物理硬盤固件版本 Bug 導致的靜默錯誤(寫入數據和讀取出來的不一致)影響,文件系統元數據損壞。

8 月 6 日,騰訊雲官微發佈關於用戶“前沿數控”數據完整性受損及騰訊雲補償措施的說明 。

騰訊雲表示,監控到異常後,第一時間向用戶告知故障狀態,並立即組織文件系統專家並聯合廠商技術專家嘗試修復數據。雖經多方努力,最終仍有部分數據完整性校驗失敗。

經過分析,該硬盤靜默錯誤是在極小概率下被觸發,騰訊雲隨即對固件版本有 Bug 的硬盤全部進行下線處理,確保相關隱患全部排除。

作為運維專家,純從技術角度分析騰訊雲與前沿數控的磁盤數據丟失事件,避免類似的問題再次發生。

硬盤固件詳解和數據保護機制

固件又稱 Firmware,就是“固化在硬件中的軟件”,不太恰當但是好理解的就是:固件就是硬盤的操作系統。

固件 Firmware 是安裝在硬盤的一個小記憶芯片上的,用於引導硬盤工作,擔任著一個系統最基礎最底層的工作。它是用匯編語言編寫的引導命令、控制語句和執行語句,協調和控制硬盤各個內部部件之間相互作用。

對於固件的保存位置來說,不同品牌的硬盤各不相同。硬盤在工作時,用戶可以訪問的是零磁道以後的位置,因此固件區是無法訪問的。

只有通過專業工具,將硬盤置於工廠狀態下,才能實現對硬盤進行讀寫固件區信息、獲取固件區模塊和表格配置圖、獲取扇區分配表、進行 LBA (邏輯地址)與 CHS (物理地址)互換、進行低級格式化以及讀、寫硬盤的閃存芯片等操作。

固件就是硬件設備的靈魂,因為一些硬件設備除了固件以外沒有其他軟件組成,因此固件也就決定著硬件設備的功能及性能。

在硬盤中,固件負責驅動、控制、解碼、傳送、檢測等工作,如管理數據的存放位置、記錄已經損壞的缺陷扇區、避免使用過程中再次用到這些壞的缺陷扇區、記錄硬盤在工作中的溫度或出現的錯誤等。少了固件的硬盤就只是一堆機械和電子元件,不能正常運轉,更不用說在其中讀寫數據了。

硬盤固件分為幾個不同的工作區,不同品牌、不同型號的硬盤,其工作區各不相同,不同工作區的組成模塊也不盡相同,有的硬盤只有 A、B 兩個工作區,而有的硬盤有 A、B、C 三個工作區。

硬盤的固件信息以模塊的形式表現出來,可能每個模塊記錄一個信息,也可能一個模塊記錄多個信息。這些模塊的大小並不一致,有些模塊只有幾個字節,有些則達到幾十個字節,它們並不是連續存放的,而是各有其固定的位置。硬盤固件的信息模塊包括管理模塊、配置和設置表、缺陷列表以及工作記錄表等。

為了解決為了組合廉價的小磁盤來代替昂貴的大磁盤,同時在磁盤失效的時候能保護數據引入了 RAID 機制,RAID 可以充分發揮出多塊磁盤的優勢,可以提升磁盤速度,增大容量,提供容錯等能力,此種 RAID 方案被服務器、存儲廠家延用至今。

RAID 0

又稱為 Stripe 或 Striping (分條),即數據分條技術。RAID 0 可以把多塊硬盤連成一個容量更大的硬盤群,從而提高磁盤的性能和吞吐量,要求至少兩個磁盤。

優點

讀寫性能高,可用容量為各個磁盤的容量和 。

缺點

無容錯,無冗餘,不適用於安全性要求高的類型。

RAID 1

又稱為 Mirror 或 Mirroring (鏡像)。RAID 1 把一個磁盤的數據鏡像放在另一個磁盤上面,在不影響性能的情況下最大限度的保證系統的可靠性和可修復性。

優點

很高的數據冗餘能力,安全性高

缺點

磁盤容量是總容量的一半,成本高

RAID 5

是 RAID 0 和 RAID 1 的折衷方案,但沒有完全使用 RAID 1 鏡像概念,而是使用了”奇偶校驗信息”來作為數據恢復的方式,需要至少三個或更多的磁盤。

優點

容錯性,數據冗餘能力,讀性能高,安全性較高

缺點

與 RAID 1 相比,由於採用的是奇偶校驗方式,數據保障程度要差一些,而磁盤利用率要高一些。

RAID 10

又稱為鏡像陣列條帶。如 RAID 0 一樣,數據跨磁盤抽取,也如 RAID 1一樣,每個磁盤都有一個鏡像磁盤。因此 RAID 10 又稱為 RAID 0+1。

優點

100% 數據冗餘,安全性高

缺點

價格相對較高,磁盤利用率 50%

硬盤固件Bug?

騰訊雲的公告稱因硬盤固件 Bug,導致文件系統元數據受損,數據無法恢復。相信一線的運維同學對公告也有同樣的疑惑:

硬盤是哪一品牌的硬盤?服務器或存儲是否進行 RAID 進行數據保護?硬盤的固件的哪一版本有 Bug?升級到哪個版本能避免此問題?極小概率觸發 Bug,觸發的場景又是什麼?存在問題硬盤下線策略是什麼,會不會對使用的用戶有二次影響?

建議把 Bug 的詳情和升級方案進行公佈,讓更多的公司來避免相似的問題,相信也是一種貢獻。

服務可用性

騰訊雲承諾的"99.9999999% 的數據可靠性,搭載了雲硬盤提供三副本存儲策略,保障了數據在任何一副本出現故障時快速進行遷移和恢復。”按照正常思維邏輯,前沿數控的數據有三個副本,三個副本不可能在一臺機器、同一塊磁盤上。難道是宣傳銷售的一個噱頭?

公有云不需要備份?

前沿數控顯然存在失誤,雲服務的使用者要對數據負責,不是完全依賴於雲服務提供商。出現數據丟失跟災備措施有直接的關係,建議使用雲架構方式的企業,所有的數據必須進行多雲或者異地方式進行備份。本次騰訊雲與前沿數控的磁盤數據丟失事件就是血的教訓。

墨菲定律告訴我們,容易犯錯誤是人類與生俱來的弱點,不論科技多發達,事故都會發生。而且我們解決問題的手段越高明,面臨的麻煩就越嚴重。所以,我們在事前應該是儘可能想得周到、全面一些。

本人從事運維工作十年有餘,精通網站架構,對各家的雲都有了解,熟知數據對創業公司的重要性。如有需要,願提供技術支持。

簡介:互聯網公司運維技術負責人,擁有 10 年的互聯網開發和運維經驗。一直致力於運維工具的開發和運維專家服務的推進,賦能開發,提高效能。最後給自己代個鹽,歡迎大家有空時翻下我牌子(知乎號:佈道,微信:AiDevOps),看看“開發運維”專欄的文章和公眾號的文章,希望多些關注和點贊是給作者最好的鼓勵 !