彭建明:談醫(yī)院中心機(jī)房一個巨大安全隱患
彭建明
醫(yī)院信息系統(tǒng)高可用一直都是我們HIT人追求的目標(biāo)。我們醫(yī)院1999年建設(shè)第一套雙機(jī)熱備集群系統(tǒng),軟件是使用WinNT和Rose,硬件IBM PC服務(wù)器和豪偉存儲,運(yùn)行醫(yī)院核心HIS系統(tǒng)。2006年建設(shè)第一套Oracle RAC集群系統(tǒng),運(yùn)行醫(yī)院核心HIS系統(tǒng)軟件,軟件是IBM AIX、Oracle 10G RAC,硬件是IBM P550小型機(jī)和IBM DS4700存儲。由于建設(shè)集群價格昂貴,醫(yī)院只對最重要的HIS系統(tǒng)建設(shè)了集群。其實各個業(yè)務(wù)系統(tǒng)都很重要,任何重要系統(tǒng)癱瘓都會造成醫(yī)院醫(yī)療秩序的混亂。
我年輕時最大工作理想就是所有業(yè)務(wù)信息系統(tǒng)都實現(xiàn)高可用。2012年我的理想實現(xiàn)了,醫(yī)院建設(shè)了第一套虛擬化平臺,硬件是6臺HP DL580、EMC VPLEX、EMC VMAX10K,平臺軟件是VMware 5.5,所有平臺上的業(yè)務(wù)系統(tǒng)都實現(xiàn)高可用,2012年醫(yī)院又上了一套備份平臺。當(dāng)時我覺得系統(tǒng)應(yīng)該很安全了,應(yīng)該不會再有什么大的風(fēng)險。隨后幾年間發(fā)生了兩件事,讓我又重新思考中心機(jī)房的風(fēng)險。
2019年3月,我接到一個陌生的電話,電話中的語氣很焦急“我是某某單位系統(tǒng)管理員,我們這有22個Oracle數(shù)據(jù)庫壞了,您是Oracle專家,我們該怎么辦?” Oracle數(shù)據(jù)庫很健壯,把一臺運(yùn)行Oracle數(shù)據(jù)庫的服務(wù)器,連續(xù)斷電100次,壞的可能性都很小,22個Oracle數(shù)據(jù)庫同時壞,這簡直是天方夜談,這和連續(xù)中兩次彩票大獎的概率差不多。20多年的工作歷練,使我能很好的控制自己的情緒,我耐心的和他交流了五分鐘,然后我堅定的告訴他“根據(jù)我的經(jīng)驗,你們22個Oracle數(shù)據(jù)庫真的壞了,用備份進(jìn)行恢復(fù)吧,你也可以再問問別人,看有沒有什么好的方法”。因為他遇到的情況和我在2014年9月9日遇到的情況,完全一樣。當(dāng)時我們一臺核心存儲控制器壞了一個,存儲(存儲是國際一線品牌中高端存儲)上運(yùn)行著醫(yī)院HIS和EMR。下班后存儲原廠工程師來換控制器,為了安全我提前做了較充分的準(zhǔn)備工作,我提前做了數(shù)據(jù)庫備份,停了Oracle數(shù)據(jù)庫,停了RAC集群系統(tǒng),唯一沒有做的就是停IBM小型機(jī)AIX操作系統(tǒng)。災(zāi)難發(fā)生了,工程師在換控制器的時候,另外一個好的控制器發(fā)生了重啟,造成了HIS和EMR數(shù)據(jù)庫嚴(yán)重?fù)p壞,并且異地災(zāi)備機(jī)房中HIS DG也同時壞了。最后通過備份平臺花費(fèi)了十幾個小時恢復(fù)了兩個核心數(shù)據(jù)庫,期間醫(yī)院所有信息系統(tǒng)均不可以使用。所幸是晚上對醫(yī)院影響不算太大。
那次慘痛教訓(xùn)讓我刻骨銘心,我一直后悔沒有徹底關(guān)閉小型機(jī)AIX操作系統(tǒng)。但這家單位的災(zāi)難事故讓我重新思考這件事情。我當(dāng)時應(yīng)該做的沒有錯。這家單位的虛擬化平臺由四臺高端PC組成,平臺上運(yùn)行了46臺虛擬服務(wù)器,其中有22臺跑Oracle數(shù)據(jù)庫。不可能為換控制器關(guān)閉四十多個服務(wù)器。具體分析兩次災(zāi)難事故原因,應(yīng)該是雙控制器的存儲架構(gòu)有問題,存儲為了保證數(shù)據(jù)安全,雙控制器中Cache做了鏡像。當(dāng)一個控制器壞時,好的控制器Cache會被禁用。這時的存儲就像一臺沒有內(nèi)存的服務(wù)器,速度奇慢,這是醫(yī)院不能忍受的。通常管理員都會強(qiáng)行啟用Cache,這時如果掉電Cache中的數(shù)據(jù)全部丟失,這就是我們兩家單位災(zāi)難事故發(fā)生的原因。
虛擬化平臺在新疆醫(yī)院使用的很普遍,全國醫(yī)院情況也差不多。虛擬化平臺中的存儲隱藏著巨大安全隱患,這是每家醫(yī)院都可能發(fā)生事故。我也在思考有沒有好的方法,能夠避免災(zāi)難的發(fā)生,由于我沒有實踐經(jīng)驗,我只是想拋磚引玉,希望有更多人去思考解決辦法。
第一種解決辦法:存儲做鏡像雙活,但是我們當(dāng)時在異地的HIS DG都壞了,這種解決方法建議存儲廠家做充分的測試,否則醫(yī)院花了昂貴的費(fèi)用不能避免災(zāi)難事故,這個責(zé)任是醫(yī)院和廠家都承擔(dān)不起的。
第二種解決辦法:超融合,超融合是一種比較新的技術(shù),我們醫(yī)院也是剛剛開始使用,沒有太多經(jīng)驗介紹給大家,這種技術(shù)安全性和性價比,希望大家認(rèn)真思考。
第三種解決辦法:備份,但是如果像這家單位22個或者更多個數(shù)據(jù)庫同時壞,恢復(fù)也是一件可怕的事情。
第四種解決辦法:使用四個控制器的企業(yè)高端存儲,高端企業(yè)級存儲價格昂貴,這也是醫(yī)院要考慮的問題。
四種方法都是我的假設(shè),最終希望存儲廠商或者安全廠商能提供一個安全可靠、經(jīng)濟(jì)的解決辦法。
事故解決了就是故事,希望我的故事能引起大家的認(rèn)真思考,希望大家都不要有事故。年底是系統(tǒng)故障多發(fā)的時間,希望大家2019都有一個好結(jié)尾,2020也一帆風(fēng)順。
注:我在HIT專家網(wǎng)中寫了一篇文章《親歷讓我后怕的數(shù)據(jù)庫災(zāi)難》詳細(xì)寫了2014.9.9那次事故,有興趣的朋友也可以去看看。
彭建明