運(yùn)維專家分析“騰訊云與前沿?cái)?shù)控的磁盤數(shù)據(jù)丟失事件”
近日,騰訊云用戶“前沿?cái)?shù)控”平臺一塊操作系統(tǒng)云盤,因受所在物理硬盤固件版本 Bug 導(dǎo)致的靜默錯誤(寫入數(shù)據(jù)和讀取出來的不一致)影響,文件系統(tǒng)元數(shù)據(jù)損壞。
8 月 6 日,騰訊云官微發(fā)布關(guān)于用戶“前沿?cái)?shù)控”數(shù)據(jù)完整性受損及騰訊云補(bǔ)償措施的說明 。
騰訊云表示,監(jiān)控到異常后,***時間向用戶告知故障狀態(tài),并立即組織文件系統(tǒng)專家并聯(lián)合廠商技術(shù)專家嘗試修復(fù)數(shù)據(jù)。雖經(jīng)多方努力,最終仍有部分?jǐn)?shù)據(jù)完整性校驗(yàn)失敗。
經(jīng)過分析,該硬盤靜默錯誤是在極小概率下被觸發(fā),騰訊云隨即對固件版本有 Bug 的硬盤全部進(jìn)行下線處理,確保相關(guān)隱患全部排除。
作為運(yùn)維專家,純從技術(shù)角度分析騰訊云與前沿?cái)?shù)控的磁盤數(shù)據(jù)丟失事件,避免類似的問題再次發(fā)生。
硬盤固件詳解和數(shù)據(jù)保護(hù)機(jī)制
固件又稱 Firmware,就是“固化在硬件中的軟件”,不太恰當(dāng)?shù)呛美斫獾木褪牵汗碳褪怯脖P的操作系統(tǒng)。
固件 Firmware 是安裝在硬盤的一個小記憶芯片上的,用于引導(dǎo)硬盤工作,擔(dān)任著一個系統(tǒng)最基礎(chǔ)***層的工作。它是用匯編語言編寫的引導(dǎo)命令、控制語句和執(zhí)行語句,協(xié)調(diào)和控制硬盤各個內(nèi)部部件之間相互作用。
對于固件的保存位置來說,不同品牌的硬盤各不相同。硬盤在工作時,用戶可以訪問的是零磁道以后的位置,因此固件區(qū)是無法訪問的。
只有通過專業(yè)工具,將硬盤置于工廠狀態(tài)下,才能實(shí)現(xiàn)對硬盤進(jìn)行讀寫固件區(qū)信息、獲取固件區(qū)模塊和表格配置圖、獲取扇區(qū)分配表、進(jìn)行 LBA (邏輯地址)與 CHS (物理地址)互換、進(jìn)行低級格式化以及讀、寫硬盤的閃存芯片等操作。
固件就是硬件設(shè)備的靈魂,因?yàn)橐恍┯布O(shè)備除了固件以外沒有其他軟件組成,因此固件也就決定著硬件設(shè)備的功能及性能。
在硬盤中,固件負(fù)責(zé)驅(qū)動、控制、解碼、傳送、檢測等工作,如管理數(shù)據(jù)的存放位置、記錄已經(jīng)損壞的缺陷扇區(qū)、避免使用過程中再次用到這些壞的缺陷扇區(qū)、記錄硬盤在工作中的溫度或出現(xiàn)的錯誤等。少了固件的硬盤就只是一堆機(jī)械和電子元件,不能正常運(yùn)轉(zhuǎn),更不用說在其中讀寫數(shù)據(jù)了。
硬盤固件分為幾個不同的工作區(qū),不同品牌、不同型號的硬盤,其工作區(qū)各不相同,不同工作區(qū)的組成模塊也不盡相同,有的硬盤只有 A、B 兩個工作區(qū),而有的硬盤有 A、B、C 三個工作區(qū)。
硬盤的固件信息以模塊的形式表現(xiàn)出來,可能每個模塊記錄一個信息,也可能一個模塊記錄多個信息。這些模塊的大小并不一致,有些模塊只有幾個字節(jié),有些則達(dá)到幾十個字節(jié),它們并不是連續(xù)存放的,而是各有其固定的位置。硬盤固件的信息模塊包括管理模塊、配置和設(shè)置表、缺陷列表以及工作記錄表等。
為了解決為了組合廉價(jià)的小磁盤來代替昂貴的大磁盤,同時在磁盤失效的時候能保護(hù)數(shù)據(jù)引入了 RAID 機(jī)制,RAID 可以充分發(fā)揮出多塊磁盤的優(yōu)勢,可以提升磁盤速度,增大容量,提供容錯等能力,此種 RAID 方案被服務(wù)器、存儲廠家延用至今。
RAID 0
又稱為 Stripe 或 Striping (分條),即數(shù)據(jù)分條技術(shù)。RAID 0 可以把多塊硬盤連成一個容量更大的硬盤群,從而提高磁盤的性能和吞吐量,要求至少兩個磁盤。
- 優(yōu)點(diǎn)
讀寫性能高,可用容量為各個磁盤的容量和 。
- 缺點(diǎn)
無容錯,無冗余,不適用于安全性要求高的類型。
RAID 1
又稱為 Mirror 或 Mirroring (鏡像)。RAID 1 把一個磁盤的數(shù)據(jù)鏡像放在另一個磁盤上面,在不影響性能的情況下***限度的保證系統(tǒng)的可靠性和可修復(fù)性。
- 優(yōu)點(diǎn)
很高的數(shù)據(jù)冗余能力,安全性高
- 缺點(diǎn)
磁盤容量是總?cè)萘康囊话?,成本?/p>
RAID 5
是 RAID 0 和 RAID 1 的折衷方案,但沒有完全使用 RAID 1 鏡像概念,而是使用了”奇偶校驗(yàn)信息”來作為數(shù)據(jù)恢復(fù)的方式,需要至少三個或更多的磁盤。
- 優(yōu)點(diǎn)
容錯性,數(shù)據(jù)冗余能力,讀性能高,安全性較高
- 缺點(diǎn)
與 RAID 1 相比,由于采用的是奇偶校驗(yàn)方式,數(shù)據(jù)保障程度要差一些,而磁盤利用率要高一些。
RAID 10
又稱為鏡像陣列條帶。如 RAID 0 一樣,數(shù)據(jù)跨磁盤抽取,也如 RAID 1一樣,每個磁盤都有一個鏡像磁盤。因此 RAID 10 又稱為 RAID 0+1。
- 優(yōu)點(diǎn)
100% 數(shù)據(jù)冗余,安全性高
- 缺點(diǎn)
價(jià)格相對較高,磁盤利用率 50%
硬盤固件Bug?
騰訊云的公告稱因硬盤固件 Bug,導(dǎo)致文件系統(tǒng)元數(shù)據(jù)受損,數(shù)據(jù)無法恢復(fù)。相信一線的運(yùn)維同學(xué)對公告也有同樣的疑惑:
- 硬盤是哪一品牌的硬盤?
- 服務(wù)器或存儲是否進(jìn)行 RAID 進(jìn)行數(shù)據(jù)保護(hù)?
- 硬盤的固件的哪一版本有 Bug?升級到哪個版本能避免此問題?
- 極小概率觸發(fā) Bug,觸發(fā)的場景又是什么?
- 存在問題硬盤下線策略是什么,會不會對使用的用戶有二次影響?
建議把 Bug 的詳情和升級方案進(jìn)行公布,讓更多的公司來避免相似的問題,相信也是一種貢獻(xiàn)。
服務(wù)可用性
騰訊云承諾的"99.9999999% 的數(shù)據(jù)可靠性,搭載了云硬盤提供三副本存儲策略,保障了數(shù)據(jù)在任何一副本出現(xiàn)故障時快速進(jìn)行遷移和恢復(fù)。”按照正常思維邏輯,前沿?cái)?shù)控的數(shù)據(jù)有三個副本,三個副本不可能在一臺機(jī)器、同一塊磁盤上。難道是宣傳銷售的一個噱頭?
公有云不需要備份?
前沿?cái)?shù)控顯然存在失誤,云服務(wù)的使用者要對數(shù)據(jù)負(fù)責(zé),不是完全依賴于云服務(wù)提供商。出現(xiàn)數(shù)據(jù)丟失跟災(zāi)備措施有直接的關(guān)系,建議使用云架構(gòu)方式的企業(yè),所有的數(shù)據(jù)必須進(jìn)行多云或者異地方式進(jìn)行備份。本次騰訊云與前沿?cái)?shù)控的磁盤數(shù)據(jù)丟失事件就是血的教訓(xùn)。
墨菲定律告訴我們,容易犯錯誤是人類與生俱來的弱點(diǎn),不論科技多發(fā)達(dá),事故都會發(fā)生。而且我們解決問題的手段越高明,面臨的麻煩就越嚴(yán)重。所以,我們在事前應(yīng)該是盡可能想得周到、全面一些。
本人從事運(yùn)維工作十年有余,精通網(wǎng)站架構(gòu),對各家的云都有了解,熟知數(shù)據(jù)對創(chuàng)業(yè)公司的重要性。如有需要,愿提供技術(shù)支持。
作者:劉曉明
簡介:互聯(lián)網(wǎng)公司運(yùn)維技術(shù)負(fù)責(zé)人,擁有 10 年的互聯(lián)網(wǎng)開發(fā)和運(yùn)維經(jīng)驗(yàn)。一直致力于運(yùn)維工具的開發(fā)和運(yùn)維專家服務(wù)的推進(jìn),賦能開發(fā),提高效能。***給自己代個鹽,歡迎大家有空時翻下我牌子(知乎號:布道,微信:AiDevOps),看看“開發(fā)運(yùn)維”專欄的文章和公眾號的文章,希望多些關(guān)注和點(diǎn)贊是給作者***的鼓勵 !