服務(wù)器宕機可能是很多運維工程師最可怕的噩夢。谷歌的一項研究表明:大多數(shù)死機故障是由內(nèi)存問題而引起的,而且每年有1/3的谷歌服務(wù)器都會出現(xiàn)可糾正的內(nèi)存故障,而有1/100的谷歌服務(wù)器會出現(xiàn)不可糾正的內(nèi)存故障,后者是造成系統(tǒng)宕機的典型情況之一。
如果有人說,用軟件的方式,可以解決硬件的內(nèi)存問題,還能減少30%的服務(wù)器宕機故障,你覺得可靠嗎?
當(dāng)前的數(shù)據(jù)中心已經(jīng)走向軟件定義的時代,從最初的軟件定義網(wǎng)絡(luò)SDN到軟件定義數(shù)據(jù)中心SDDC。為了防止服務(wù)器宕機的意外發(fā)生,越來越多的企業(yè)開始考慮軟件定義的解決方案,并通過軟件定義的可靠性屏蔽服務(wù)器、內(nèi)存等硬件故障帶來的影響。
那么軟件是如何實現(xiàn)對內(nèi)存以及服務(wù)器可用性的提升呢?
基于MCA的內(nèi)存ECC技術(shù)
內(nèi)存故障非常多,就看系統(tǒng)能不能識別出來,有些故障是內(nèi)存單個或多個bit字節(jié)故障,有些是內(nèi)存顆粒故障,有些是內(nèi)存顆粒上的單行或單列的存儲單元出現(xiàn)故障,還有firmware故障、內(nèi)存控制器故障,還有一些是內(nèi)存金手指焊接點老化、主板上的內(nèi)存插槽松動或有灰塵等等。
器件質(zhì)量類的故障只能通過工藝的改進來解決,而信服云要解決的是軟件層面可以控制的bit級故障。往往大故障來自于所謂bit級小故障的持續(xù)積累,這時要做的就是“防微杜漸”,在小故障發(fā)生的時候就抓住它、,隔離它,避免影響擴大。
Intel有一種機制叫做MCA(Machine Check Architecture),可以監(jiān)測這種類型錯誤。這個機制的運行方式是:首先需定義出這些錯誤模型,把可以自動糾正的錯誤叫做CE(Correctable Error),這些往往是任意單比特錯誤、部分單顆粒多比特的錯誤。但是一些錯誤無法自動糾正恢復(fù),會導(dǎo)致系統(tǒng)宕機,這些錯誤被定義為UCE(Uncorrectable Error)。根據(jù)統(tǒng)計,CE/UCE類的問題類型占內(nèi)存所有類型問題的59%。所以,如果能夠設(shè)計一種故障檢查和糾正的機制,其價值會非常大!
這個全套的錯誤檢查和糾正的機制就是ECC(Error Checking and Correcting)。ECC在遇到故障時首先會進行問題識別,通過設(shè)計內(nèi)存主動掃描機制,可以設(shè)置一天24小時不休(也可以調(diào)整)掃描和發(fā)現(xiàn)故障;識別后判斷故障位置(這里其實用到了一些特殊的bit計算和校驗算法),認(rèn)定故障位置后,就嘗試隔離該有問題的內(nèi)存空間,避免后續(xù)業(yè)務(wù)再次使用該內(nèi)存空間。
信服云的內(nèi)存ECC增強技術(shù)
業(yè)界主流的IT服務(wù)商都會利用Intel的MCA機制進行內(nèi)存錯誤處理,但是其軟件實現(xiàn)的精細(xì)化程度不一,比如有些服務(wù)商只是把CE錯誤屏蔽掉,或者只是簡單的告警,沒有做進一步處理;還有一些服務(wù)商即使有告警但是無法準(zhǔn)確定位到發(fā)生問題的插槽。而信服云則提出了一個風(fēng)險區(qū)機制,一旦發(fā)生內(nèi)存錯誤,就將問題單元置于一個“緩沖區(qū)”進行觀察,當(dāng)CE錯誤達到一定閾值則立刻自動隔離有風(fēng)險的內(nèi)存區(qū)域,避免錯誤繼續(xù)擴大引起嚴(yán)重的宕機。
近年來,信服云在內(nèi)存隔離恢復(fù)機制上不斷優(yōu)化,在2022年1月推出的超融合HCI6.7.0中還對ECC機制進行了增強。
該增強機制的運行方式是:首先通過CPU的BIOS設(shè)置CE Record選項,使得硬件識別出內(nèi)存錯誤,一旦發(fā)現(xiàn)CE/UCE錯誤,硬件就會把這個錯誤上報給信服云的軟件。然后輪到軟件機制上場,OS系統(tǒng)先是判斷這個內(nèi)存是否被軟件(包括應(yīng)用軟件和操作系統(tǒng))使用,如果沒有使用就直接隔離,不允許再分配給軟件使用。
如果被軟件使用了,就獲取軟件的上下文,判斷區(qū)分其是被操作系統(tǒng)內(nèi)核(in_kernel)或者被用戶應(yīng)用軟件(in_user)使用。
■ 如果是被應(yīng)用軟件(in_user)使用,對于CE可糾正錯誤,信服云的內(nèi)存ECC增強機制就用一塊好的內(nèi)存區(qū)域替換掉有錯誤的內(nèi)存區(qū)域,這個過程中業(yè)務(wù)完全不受影響。如果是UCE不可糾正的錯誤,該機制就重新啟動該進程,把錯誤的內(nèi)存區(qū)域釋放出來并隔離出去不再使用。進程重啟后就可以使用完全正常的內(nèi)存了。
■ 如果是被操作系統(tǒng)內(nèi)核(in_kernel)使用,信服云的內(nèi)存ECC增強機制就把有錯誤的內(nèi)存區(qū)域的信息記錄下來,在系統(tǒng)再次啟動的時候,該機制會隔離這些有錯誤的內(nèi)存,以保證其不會被再次使用。
(信服云ECC自動糾錯機制原理)
推出上述機制后,信服云在1000臺主機環(huán)境中進行了驗證。結(jié)果證明,通過軟件控制的ECC機制,信服云能夠提前發(fā)現(xiàn)內(nèi)存異常,并且100%自動隔離成功,可以提前處置以規(guī)避更大的故障影響,總體上相對原有方式能夠減少30%的服務(wù)器宕機故障。
回到開頭的問題,用軟件可以解決硬件層面帶來的問題嗎?毫無疑問,當(dāng)然可以!信服云的ECC機制就通過創(chuàng)新性的軟件技術(shù)更加準(zhǔn)確、智能地控制了服務(wù)器的內(nèi)存故障問題,有效地提高了IT系統(tǒng)的可靠性。
以上就是本期《信服云黑板報》關(guān)于軟件定義可靠性和ECC機制的分享。關(guān)注“深信服科技”微信公眾號,可以持續(xù)獲取更多技術(shù)干貨內(nèi)容!
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )