丁 濤 劉 峰 楊 賽
(1漢中市中心醫院 漢中 723000 2西安交通大學 西安 710049 3寧夏醫科大學總醫院 銀川 750004)
隨著醫院信息化建設的逐步深入,信息技術廣泛應用于醫療機構日常診療、管理、服務等活動中,成為醫院運營的重要基礎設施[1],其安全、可靠、穩定運行對各項工作順利開展至關重要。2018年國家衛生健康委員會發布《全國醫院信息化建設標準與規范(試行)》[2],明確指出醫院信息化建設要涵蓋各應用及數據庫服務器、存儲磁盤陣列、集群軟件和應用容災軟件等組件,具備數據容災能力,支持多種技術本地化高可用,對醫療大數據的安全性、容災能力建設的需求更加迫切[3]。部分醫院為提高系統和數據抗風險能力,運用系統集成技術實現大數據安全保護,主要方式包括基于底層存儲硬件的數據克隆、復制,基于應用或數據庫的群集,基于操作系統的熱備,以及其他不同層級雙活技術、虛擬化技術等。魏智等[4]通過對醫院數據安全需求分析,提出一種基于數據庫和存儲的雙活數據中心,最大限度實現業務系統的高可用和數據容災;曹凱[5]通過軟件定義網絡(software-defined networking,SDN)、超融合等新技術應用,構建跨數據中心的雙活超融合虛擬化資源池,減少系統單點故障、性能瓶頸;上官斌[6]研究顯示,越來越多機構開始逐步推進系統雙活建設,其中最重要、最困難的是如何實現大型數據庫雙活,包括仲裁一致性、性能同步、異常切換決策等。
建立數據中心雙活容災保護機制(以下簡稱雙活)可以有效促進大數據相關業務的高可用,確保數據一致性和系統安全性,已被廣泛應用于醫療大數據安全保護。但是,不同雙活建設層級達到的數據保護預期效果差別較大,如何選擇合適的雙活技術,以較高性價比實現大數據安全保護,具有一定研究意義。本文通過對常用醫療大數據雙活保護技術分析,從實施復雜度和風險、建設與運維成本、軟硬件兼容性以及對不同結構數據的保護能力,資源消耗、性能、技術開放程度等方面,總結不同維度雙活技術的優缺點,結合醫院數據保護場景和功能需要,討論技術方案的難點與問題,為醫院大數據中心的可靠運行、應急容災和數據保護提供思路。
醫療大數據包括不同時期、廠商、業務、信息系統應用所積累的各類患者病歷、文書,檢驗、檢查結果等電子化資料,以及醫院管理、運營、公共衛生服務中形成的各種與醫療相關的數據信息[7]。根據“智慧醫院”建設程度,信息系統日益增加使數據累積和應用環境趨于復雜,機構醫療大數據呈現出海量化、業務及時化、存儲多樣化、價值高端化的特點[8],其安全需求主要包括:一是醫療大數據的價值決定其安全基礎是物理數據安全性,避免數據丟失、損毀以及其他因物理數據安全造成的公共事件;二是從應用角度,關注系統和數據容量增長衍生的各種問題,對數據應用層服務能力要求更高;三是關注數據連續性和系統運行魯棒性,能夠持續為患者和醫療服務提供數據支撐能力;四是從技術角度更加關注各種不同物理硬件、應用軟件的高性能,在高并發下為不同業務需求提供安全可靠的服務;五是關注復雜情況下,不同類型(包括各種結構化、非結構化、半結構化)數據管理,以及數據集邏輯與隱私保護[9]。
醫院業務系統應用具有較強行業特點,醫療大數據保護一般不為每個系統或獨立應用進行特定數據安全保護體系建設,常用做法是從醫療數據的采集、存儲、訪問、應用等環節建立完整安全防護體系[10]。雙活系統集成技術被廣泛應用,特別是基于數據中心的雙活應用,具有低成本、低風險、快速交付等特點,有助于醫院減少資源浪費,既達到保護效果又能在共享和應用過程中實現數據管理的安全可靠和規范有序。
雙活系統集成就是由兩套或兩組以上存儲、主機同時為業務系統提供數據讀寫及存儲服務,數據同時以雙副本或更多副本形式分別存在兩個不同物理空間。同時,所有數據均在線,當任意底層物理部件出現損壞時業務數據不會丟失,甚至業務平臺不會停止,見圖1。

圖1 雙活數據中心
雙活系統集成技術并沒有標準的定義或者行業規范,一般根據不同層級數據和業務保護需要,形成涵蓋存儲、數據庫、文件、網絡、業務等不同層面的系統集成部署技術,本文主要討論業務數據系統集成雙活技術。
3.3.1 雙活系統集成技術分類 按照數據副本動作發生的位置和處理方式,雙活系統集成技術可分為5種:基于數據庫的雙活系統集成;基于主機(文件系統層)的雙活系統集成;基于存儲硬件的“單寫式”雙活系統集成;基于存儲硬件的“雙寫式”雙活系統集成;重構業務應用,通過應用實現雙活系統集成。其中,第5種是根據業務特點、訪問邏輯、訪問模式等進行應用軟件重構,再添加一系列軟件組件,封裝部分業務模塊,甚至改變業務流程,進而實現雙活。由于醫院業務特殊性,除小部分技術實力強、業務模式簡單的新興互聯網醫療平臺可以實現外,其應用范圍相對較小。因此本文以討論前4種技術為主。
3.3.2 數據庫端雙活集成 數據庫端雙活集成技術一般基于數據庫的分布式服務構建。在同一應用環境下,除保持數據一致性外,將數據庫服務分散至兩臺以上的服務器。其典型應用形式分為兩類,一是以甲骨文公司為代表的Oracle RAC結合自動存儲管理(automatic storage management,ASM)解決方案。ASM支持條帶化和磁盤鏡像,且比傳統的獨立磁盤冗余陣列(redundant array of independent disks,RAID)更靈活,可以為每個數據文件指定冗余級別。當 ASM為普通文件分配一個擴展數據塊時,會分配另一個輔助副本,并將輔助副本存儲在主副本以外的其他磁盤組塊中,在發生磁盤故障時不會導致數據丟失。二是基于數據庫日志的數據庫文件副本同步復制技術。在數據庫運行過程中,所有客戶端請求都會寫入數據庫日志,再寫入相應數據庫文件里,并通過日志詳細記錄數據寫入先后順序,便于解決數據恢復時的一致性和完整性問題。部分數據庫服務商研發出基于日志的副本復制技術,在寫日志進程中將緩存里的日志依托通信傳輸給副本庫實例,副本庫根據接收的日志執行數據更新操作,確保副本庫與主庫的數據一致;該技術能為數據庫提供雙文件支持,以同步或異步形式更新,支持手動或自動故障轉移,并可將副本配置成只讀模式,進行其他數據操作,從而減輕主庫壓力。
3.3.3 主機端雙活集成 在主機端層面,可以基于邏輯卷鏡像方式提供雙活系統集成服務,常見技術形式有Unix、Linux系統的邏輯卷管理(logical volume manager,LVM)模式、Windows系統的動態卷鏡像功能等。依托操作系統原生的輸入/輸出(input/output,I/O)組件,基于不同站點的各種物理存儲卷,利用鏡像方式“組合”成一個在線邏輯卷,再將邏輯卷提供給操作系統和業務系統存取數據。來自不同存儲的兩個獨立物理存儲卷,通過存儲區域網絡(storage area network,SAN)提供給計算服務器操作系統,這兩個卷可以本地化部署,也可以通過SAN跨數據中心形成遠程雙活數據。通過對LVM物理分區單元寫入進行實時雙向復制,當本地卷數據及遠端卷數據同時寫完時,才能算一個完整的數據寫入;當其中一個存儲卷寫入超時或寫入失敗時,該存儲卷會被標為故障或離線狀態,等寫入恢復后,重新手動同步,以確保鏡像副本與原生副本數據一致。在創建邏輯卷時,LVM已經將邏輯卷與兩個或多個不同底層物理存儲卷完成映射,針對任何數據文件的讀寫都需要由文件系統和LVM完成與底層物理數據塊交互,在磁盤底層出現壞塊或某個底層存儲卷徹底損壞時,LVM無須對底層數據塊指針進行動態轉移,以保證數據不丟失、業務不停止。
3.3.4 基于存儲底層硬件的雙活集成 基于存儲底層硬件實現的雙活系統集成主要有兩種方式:一種是“單寫式”;另一種是“雙寫式”。“單寫式”雙活系統集成是指針對底層的數據卷,所有數據“寫”操作均由一方完成,并且進行數據單向同步。基于存儲底層硬件的“單寫式”雙活系統集成,見圖2。存儲集群A為源端,存儲集群B為從端,存儲集群內部的控制器A1和A2,B1和B2分別構成高可用(high availability,HA)環境,在搭建集成環境時兩個存儲集群建立從屬關系,源端任何寫入操作都交由本地卷SVM_A1完成,而對端控制器接收到前端服務器的寫入請求時,會將該請求轉發至源端SVM_A1,由源端SVM_A1完成寫入操作,同時給目標端SVM_A1-mc復制一個寫入操作,直到兩邊SVM同時寫入完成后,數據和副本才完成寫入。

圖2 基于存儲底層硬件的“單寫式”雙活系統集成
因此,針對數據卷A1,無論是來自源端還是對端服務器寫入請求,均會被轉發給源端SVM_A1完成“寫”操作,再按照從源端SVM_A1到目標端SVM_A1-mc單向方式完成數據復制“寫”操作。當源端出現故障或災難時,業務系統會有一個屬主切換過程,類似故障轉移,在此期間業務會發生中斷或性能急劇降低。
存儲“雙寫式”雙活系統集成技術與“單寫式”最大的不同之處在于針對底層數據卷,對端和源端在接收到數據寫入請求后,會自發完成“寫”操作。這種架構的對端及源端數據卷均是在線、可讀寫狀態,因此在底層任意存儲硬件出現問題時不需要故障切換動作,確保業務連續性和數據安全性;另外,源端和對端雙方均可同時提供讀寫操作,其整體性能優于“單寫式”架構。
不同層面雙活技術實現的數據保護效果存在差異,見表1。醫院各種業務系統眾多且集成環境復雜,很難用一種技術實現所有層面的數據保護,因此,結合不同需求和應用場景以及業務響應要求,分級分類選擇合適的雙活數據保護技術,才能以較高性價比實現醫療大數據有效保護。

表1 不同層面雙活系統集成技術對比
按照國家衛生健康委員會《關于進一步推進以電子病歷為核心的醫療機構信息化建設工作的通知》要求[11],三級醫院到2020年電子病歷系統功能應用水平分級評價要達到4級以上。其中,醫院信息系統、電子病歷系統等作為核心應用要實現業務及數據庫保護。從業務角度看,核心系統的容災恢復點目標和恢復時間目標接近0才能達到高可用[12],滿足安全需求;從數據角度看,在確保數據一致性的前提下,應該盡可能實現數據多份冗余,因此,采用數據庫端和基于底層存儲的“雙寫式”雙活系統集成融合,可以最大限度地實現整體保護效果。或者結合不同主機的故障轉移群集能力,實現計算層面高可用,將故障轉移群集與存儲底層硬件“雙寫式”雙活結合,進一步提升核心業務生產系統的穩定性以及高可用。
一般業務系統的響應及時性要求不高,恢復時間點目標要比核心業務系統大,特別是部分醫院建設資金投入有限,對除核心業務以外的絕大多數系統采用超融合、虛擬化等方式進行部署,通過建立虛擬資源池節省硬件開銷,可以降低運維成本與難度。針對這部分業務及數據庫,可以將數據空間采用“雙寫式”雙活系統集成架構進行構建,而上層業務則依托虛擬機平臺自身的快照技術,或者其他多主機共享群集技術,實現業務高可用與數據冗余災備,例如虛擬機快照技術、RoseHA、Windows Cluster、賽門鐵克VCS等,能夠提高生產系統可靠性,以較低成本實現較好效果。
根據使用場景,醫院還有一些特殊信息系統應用,特別是多影像、多文件存儲及管理,其業務模式、性能需求、數據特征以及數據量和其他系統差異較大。一是數據量巨大,單日新增數據量超過10 GB,隨著時間推移,積累的海量數據形成巨大保存壓力;二是數據形式以影像、圖片等文件為主,部分系統產生的文件數據還具有小而多的特點;三是數據調閱頻度不固定,但操作人員對數據的響應速度有很高要求。這部分特殊業務以及數據保護,要綜合考慮存儲系統的性能、數據保護技術以及成本,建議采用大容量網絡存儲方式構建數據倉庫,結合分層存儲技術,保障數據調閱性能;在數據保護技術選擇上,可以采用存儲底層硬件“單寫式”雙活系統集成技術,確保數據安全冗余和成本低廉,形成性價比較高的綜合解決方案。
醫療大數據不僅保障醫院日常業務運行,同時還服務于機構科研創新等方面,醫療大數據安全保護十分關鍵[13]。通過對不同層面雙活系統集成技術的研究與合理應用,可以為醫院醫療信息數據及業務連續性保護提供一定支撐,提高醫院網絡信息安全水平,使信息化、大數據更好地服務于醫療健康事業。