存儲系統故障導致臺北桃園機場宕機36小時
這幾天國內 IT 業界最熱門的新聞不外乎是中國臺灣省臺北桃園機場境管系統當機 36 小時了;事情一發生,各種專業的,非專業的猜測,流言,內線消息不斷,熱鬧極了。
有人從政治的角度解讀(這好像是這幾年國內各種事件必然要有的一個面相),說是為了掩護某些人士的出境;而筆者看到網絡上最扯的說法是被“某國”給黑了,放毒了,對于這些,筆者 只能用一句電視上的廣告臺詞“不要再相信那些沒有根據的傳言了”來響應。
沒有任何一位 IT 人員(尤其是 IT 工程師)愿意看到系統在自己的手上“無法上線”36 個小時,筆者 在這里使用“無法上線”而不使用“宕機”,是因為,就IT工程的角度來說,“宕機”指的是一部機器 (不論是主機或存儲系統) 因為某些原因而無法開機成功回復運作;這次境管系統的事件,從現有枱面上的消息來說,并不是機器無法運作,而是境管查驗系統無法上線作業。
至于被黑或是中毒的說法,更是一般使用者的猜測;現有的境管系統使用的是 UNIX 操作系統,到目前為止,業界還沒有發生過 UNIX 作業平臺的中毒事件;而且境管系統是一套封閉的系統,即使有辦法可以黑入移民署或是桃園機場的網站,也不可能連上境管系統,因為境管系統根本沒有對外部的網絡聯機!
至于系統的備份或是數據備份的問題,“在最短時間內恢復聯機操作”本來就是境管系統架構當初設計的目的之一,就 筆者 的了解,桃園機場的境管主機是雙機備份作業的架構,也就是只要有一部主機可以運作,就可以維持在線的作業;數據備份,也肯定是有的;至于為什么這些設計沒有在需要的時候發揮它應有的功能,這是移民署必須要給的答案,筆者 不愿多做猜測。
回歸 IT 專業,這次故障,至少到目前為止,系統維護廠商枱面上給的解釋是某供應商的存儲系統中有三塊磁盤及一片機板故障,而在硬件修復后,必須要等待數據由第二套系統回復,所以需要這么久的時間,我們就從這個故障原因談起;機板故障的問題我們不討論,因為機板存粹就是一個硬件組件,換新的就好了。
再來就是磁盤啰!企業級的存儲系統是不可能出現某幾塊磁盤故障而導致無法開機的。那有沒有可能導致數據損毀?當然可能!
存儲系統最重要的數據其實并不是用戶的數據,而是一個我們稱之為“元數據”(metadata) 的數據,metadata 簡單來說就是存儲系統的組態文件,所有磁盤驅動器如何劃分,哪些磁盤驅動器組成一個 RAID 群組,每一個數據卷 (volume) 的大小等等,這些相關信息通通存儲在 metadata 中。所以一旦metadata 損毀,可以想見的是,也許整個存儲系統內的用戶數據全部都在,但卻不知道如何組織這些數據,這是存儲系統的最大災難,如何確保metadata 的安全是所有存儲系統的一個重要課題。
不同的存儲系統會使用不同的方法來保存 metadata;企業級的高端存儲系統會將 metadata 存放在具鏡射保護的非揮發性內存 (non-violated memory) 中,非揮發性內存不會因為沒有電源而失去數據,另外為了增加系統的可用性,會把 metadata 復制幾份放在磁盤中,以備不時之需。中端存儲系統的 metadata 會存放在以 RAID 保護的特定磁盤中,或是分散在系統的不同硬盤中,保護顯然就沒有大型存儲系統來的好,但也足夠了。
在最壞的情況下,如果 metadata 真的完全損毀而無法由任何備份來回復時,每家存儲系統原廠的研發部門還是可以在某些特定的狀況下,試著搶救 metadata,不過修復的時間與修復的程度則沒人敢打包票了。就這次的情況來看,境管系統使用的是高端的存儲系統,顯然并不是 metadata 的損毀,否則可能還要花更長的時間才能修復。
那么在數據硬盤上一次壞掉三顆硬盤?這個就有趣了,值得來討論一下。
我們都知道現在在存儲系統上普遍使用的 RAID (Redundant Array of Independent Disks),就是用來保護資料可以避免因為單一磁盤的故障而致無法使用的技術,RAID5 是可以容許一個 RAID 群組有一顆磁盤故障而不會影響數據的存取,雖然新的 RAID6 技術可以容許二顆磁盤的故障,但 筆者 相信境管系統應該不是使用 RAID6 的技術。所以,如果使用 RAID5,而這三顆故障的磁盤是分散在三個 RAID 群組中,那就不會出事了,顯然故障的三顆磁盤至少有二顆是在同一個 RAID 群組。
一個 RAID 群組,或是一個數據卷無法使用,會導致系統無法上線?存在這個數據卷上的是必然是一個極其重要的數據文件,沒有它程序無法運作。但從應用系統設計的角度來看,最重要的數據文件會考慮以更好方式來保護,如使用 RAID1,或是在再復制一份存放在其他地方,一旦因為硬件問題無法存取數據,可以以人工的方式要求程序去讀取備份的數據文件,在最短時間內恢復聯機操作。
另外一個可能是,這個故障的數據卷是一個大型資料卷的一部份,這在大型資料文件中相當常見;使用數據卷管理 (volume management) 軟件,將幾個硬件的數據卷合成一個數據卷,為了避免 RAID 重復計算導致數據訪問時間的延遲,這種大型的數據卷通常不會再使用 RAID 保護,而是以 stripping 或是 concatenated 的方式來組成大型數據卷,因為沒有 RAID 的保護,一旦有某一個硬件數據卷故障,就會導致數據無法存取。
在實務上,筆者通常都會建議使用者在考慮使用這種大型數據卷時,數據的回復時間一定要考慮進去,因為沒有人敢打包票硬件一定不會故障,硬件故障會不會造成數據損毀,通常來講機率不高,但不是零。這也是為什么要一再強調數據備份的重要性。同時還要考慮到,一旦數據不見了,需要的回復時間。
所以回歸到硬件上,究竟在一個 RAID 群組發生二塊以上的磁盤同時故障的機率到底高不高?筆者看到在網絡上絕大部份的人都認為這是中了簽王,不過是不是真的如此?
磁盤驅動器的可靠度是以平均故障時間 (MTBF, Mean Time Between Failure) 來評估,以現在的企業級磁盤驅動器來說,MTBF 是一百廿萬個小時,大概是 136 年,那在我們有生之年應該看不到磁盤驅動器故障才對!其實 MTBF 并不是這樣算的,它是指每一百廿萬個使用小時,就可能會有一顆磁盤驅動器故障,所以有人使用沒幾天,有人可以使用好幾年。所以 MTBF 只是一個參考值,它可以顯示磁盤驅動器的可靠度,當然 MTBF 越高故障率也越低,但與單一系統可能碰到磁盤故障的機會并沒有絕對的長短關系。
另外一個與碰到磁盤驅動器故障機會有關的因素就是工業的產品壽命;每一個單一工業制品都有它的使用壽命,就像電池一樣,使用壽命到了,它就是會報廢。但是使用壽命與使用狀況有極大的關系,運作環境當然是一個很重要因素,國外已經有報告指出,在平均溫度偏高的環境中運作的 IT 設備,它的故障頻率也會相對的高;以磁盤驅動器來說,除了環境之外,使用頻率與使用負載也是影響產品壽命的因素。用通俗的話來說,就是操得比較兇的,掛得也比較快。
所以就理論上來說,在各種條件都相同的狀況下,同型的磁盤驅動器如果開始使用的時間相同,那么它們故障的時間也會接近。在實務上,筆者 也的確遇到過這樣的狀況,同一批上線的磁盤驅動器,一旦其中有部份開始出現故障的狀況,在接下來的一段時間,將會出現密集的“換機潮”。
但吊詭的是,在同一部存儲系統的磁盤驅動器,雖然外在的環境是相同的,但使用頻率和使用負載應該是不同的,它們的“故障期”應該是不同!這就牽涉到存儲規劃了。一個有經驗的存儲規劃人員,在建置一個存儲環境時,通常都會與應用系統或是數據庫管理人員有過溝通,了解每一種數據型態未來的使用狀況,并且盡可能的將使用負載分散,這是為了數據的存取效能與避免出現磁盤上的熱點 (hot spot,指的是磁盤上大量數據存取而容易造成的壞軌)。所以本來應該因為使用狀況不同而不致于同時出現的故障時間,卻因為規劃時其他的考慮因素,反而使故障時間接近。
這次境管系統當機事件,筆者 看網絡上一片罵聲,當然,移民署絕對有很多值得檢討的地方;雖然 IT 設備是造成這次事件的主因,但 筆者 認為 IT 的環境或是 IT 的建置,是這整個事件最后一個才需要被檢討的部份。不論是政府機關或是民間企業,IT 的“備份”設計有沒有被認真當做一件事來討論?根據 筆者 的經驗,一定要發生大事后,才會有人重視!“備份”這件事,不是只有 IT,它是一套應變的方法,如果連應變的計劃都沒有,那還談什么 IT 備份呢?
【責任編輯:劉強 TEL:(010)68476606】