架構安全與可靠性

可靠度(reliability)

想像一輛車,十年來每天早上都發得動,從沒讓你被困在路邊。你會說它很可靠——不是因為它快,而是因為它能長時間正確地運作、不出毛病。電腦硬體的可靠度正是這個概念:系統在一段時間內持續做對的事、不發生故障的性質。一台一年才當機一次的筆電,比一台一週當機一次的更可靠,即使兩者速度相同。

工程師把這件事講精確,靠的是談論系統「正常」(working)以及它維持正常的機率。可靠度常寫成系統從時間 0 一路到某個時間 t 都不故障的機率。一個常見的簡單模型假設故障以大致固定的速率到來,於是可靠度隨時間呈指數衰減——跑得越久,到現在為止某個零件壞掉的機會就越大。工程師從這個速率推出大家最常引用的數字,也就是平均故障間隔(MTBF):一段正常運作期的平均長度(見 mean-time-between-failures)。MTBF 越高,可靠度越高。

一個關鍵且誠實的重點:可靠度講的是正確、不中斷的服務,這跟可用度(availability)不一樣。可用度問的是「它有多少比例的時間是正常的?」,一個系統可以很高可用,卻不太可靠——如果它常故障,但每次都幾乎瞬間修好(見 availability)。可靠度也不是免費的:它要用冗餘、錯誤更正碼和謹慎的設計買來,而這些都耗費金錢、功耗與晶片面積。可靠度該訂多高是一個刻意的工程取捨,銀行的資料庫或太空船要遠高於遊戲主機。

一顆標示 MTBF 為 120 萬小時的磁碟,並不代表每顆磁碟能撐 120 萬小時(那是 137 年)。它的意思是:在一大群磁碟中,任一小時你預期每 120 萬顆運轉中的磁碟大約壞一顆。跑 1,200 顆磁碟,你大約每 1,000 小時就預期壞一顆——大概每六週一次。

MTBF 描述的是一群裝置的故障率,而非單一裝置保證的壽命——這是常見的誤讀。

可靠度與可用度不同。一個一直故障卻能在毫秒內修好的系統,可以很高可用卻很不可靠;要選用真正貼合使用者感受的指標。

又称
hardware reliability可靠性