2011年2月27日,Gmail使用者開始登入後發現收件匣空空如也。起因是一次例行的儲存軟體更新,其中帶有出乎意料的錯誤。問題一浮現,Google便停止部署並還原至舊版本,但傷害已經造成:郵件已從帳號中被刪除,最初估計受影響者占Gmail使用者總數的0.08%——約15萬個帳號,後來下修至0.02%。

事後檢討中最令人不安的部分,是為什麼那些副本沒有幫上忙。Gmail在多個資料中心為每個信箱保留多份副本。但當副本執行相同的軟體時,它們就不是彼此獨立的:「在少數罕見情況下,軟體錯誤可能影響資料的多份副本,」Google工程副總裁Ben Treynor寫道。唯一乾淨的副本在磁帶上——離線,因此不受該錯誤影響。磁帶速度慢,這就是為什麼還原花了約30小時,而非毫秒之間;其餘0.012%受影響的使用者已於3月1日前從磁帶還原。

Google強調「郵件從未遺失」,而就資料遺失事件的標準而言,這個故事結局還算圓滿。但這起事件戳破了「雲端複寫就等於安全」的直覺,關於郵件遺失與登入問題的抱怨持續到第四天。它至今仍是相關副本同時失效的標準引用案例:備援防的是機器故障,而不是同一個錯誤到處運行。

最初估計有0.08%的使用者(約15萬個帳號,後來下修至0.02%)看到收件匣被清空;從磁帶還原花了約30小時。

該儲存更新引入了一個可能刪除資料的錯誤,而部署在缺陷被發現之前就已到達正式系統。

Gmail的多份副本全都執行相同的儲存軟體,因此一個錯誤可能波及跨資料中心的多份副本。

該錯誤唯一觸及不到的副本是離線磁帶——這是Google在複寫之外仍保留的復原途徑,也正是它拯救了這些信箱。

從磁帶還原本質上很慢,使一次糟糕的部署延長成數天使用者可見的損害。

副本防的是硬體故障,不是軟體。一個錯誤可能同時損壞多份副本,因此要保留一條位於軟體影響範圍之外的復原途徑——對Gmail而言,就是離線磁帶。

Google完成了從磁帶的還原,並在Official Gmail Blog上發表了一份異常坦率的故障說明。這起事件成為可靠性工程中主張至少保留一種位於生產軟體故障域之外的復原媒介的長期論據——磁帶正是因此進入雲端時代的詞彙。Gmail的複寫模型本身並未改變;改變的是對多副本系統中相關軟體故障的謹慎態度。

追溯依據

參考來源

  1. Gmail back soon for everyone Official Gmail Blog · gmail.googleblog.com ·
  2. Thousands of Gmail accounts accidentally wiped BBC News · bbc.co.uk ·
  3. Gmail missing e-mails, login problems, continue into fourth day Los Angeles Times Technology Blog · latimesblogs.latimes.com ·