RAID 卡快取與電池保護是什麼?
RAID 卡內置快取記憶體,可暫時儲存尚未寫入硬碟的資料,提升磁碟寫入效能;當快取採用回寫模式時,快取內的資料尚未寫入磁碟,一旦停電便可能遺失。電池保護單元(BBU)或超級電容的職責,就是在斷電時維持快取記憶體的供電,保住這些尚未落碟的資料。本文說明整個機制與實際選擇。
RAID 卡的快取記憶體是甚麼
RAID 卡(磁碟陣列卡)是伺服器與磁碟陣列之間的控制器,負責把多顆硬碟組成 RAID 陣列、處理資料分散與同位檢查。為了應付硬碟的機械延遲與寫入效率問題,RAID 卡上配備一小段高速記憶體作為快取(Cache),一般容量為 256MB 至數 GB,視乎卡與型號而定。
快取的作用可分為兩方面。讀取方面,常用資料會留在快取內,下次讀取可直接由快取回應,無需再次從磁碟讀取,對重複讀取的熱門資料效果明顯。寫入方面,作業系統把資料交給 RAID 卡後,卡可以先把資料收進快取,再分批寫入磁碟,透過合併連續寫入、延後寫入時機,大幅提升寫入效能,尤其對大量小檔案的寫入負載最為有效。
快取與主記憶體的關係值得澄清:RAID 卡快取與伺服器的系統記憶體(包括 ECC 記憶體)是兩個獨立元件。RAID 卡快取負責磁碟 I/O 的暫時儲存,有自己的記憶體顆粒與控制器;系統記憶體則存放作業系統與應用程式的資料。兩者各自獨立運作,不能互相替代。記憶體錯誤防護的討論可參考本站的伺服器 ECC 記憶體一文。
快取的效益並非在所有負載上都相同。對順序大檔案的寫入,磁碟本身已可高效處理,快取的增益有限;對大量小隨機寫入、資料庫日誌、虛擬機映像的寫入,快取則帶來顯著的效能提升。因此 RAID 卡快取大小的選擇,應配合伺服器的實際工作負載,而非單純追求大容量。
回寫與直寫:快取資料何時落到磁碟
快取運作有兩種模式,分別是回寫(Write-back)與直寫(Write-through),兩種模式對效能與資料安全性的取捨截然不同。
直寫(Write-through)
資料先寫入快取,同時立即寫入磁碟,確認磁碟寫入完成後才回覆作業系統。資料安全,但每筆寫入都須等待磁碟動作,效能提升有限。
回寫(Write-back)
資料寫入快取後即回覆作業系統完成,實際寫入磁碟的動作延後,由卡內部的排程在稍後進行。寫入延遲大幅降低,但快取內的資料若在落碟前遺失,資料便會丟失。
回寫的刷寫機制
RAID 卡會持續把快取中的資料寫入磁碟(稱為 flush),並在系統正常關機時清空快取。回寫模式依賴「快取資料最終會落碟」的前提,斷電正是打破這個前提的最大風險。
正因為回寫模式把「作業系統已確認寫入」與「資料實際落碟」分開,一旦期間停電,未落碟的資料便遺失。這些資料在作業系統層面已確認完成,因此應用程式與資料庫都不會知道資料遺失,可能造成檔案系統不一致或資料庫損毀。這正是電池保護單元存在的理由。
部分 RAID 卡支援「透寫」(pass-through)或關閉快取的設定,把一切寫入直接送往磁碟,功能上等同直寫。在沒有電池保護的情況下,這類設定是避免斷電丟失資料的最保守做法,但代價是寫入效能下降,對資料庫等寫入密集的負載影響尤為明顯。
需要協助?RAID 卡的回寫模式、電池健康與 UPS 配合,直接決定伺服器資料在停電時能否保住。提供伺服器型號與 RAID 卡型號,即可初步檢查配置是否安全。WhatsApp →
電池保護單元與超級電容如何運作
電池保護單元(Battery Backup Unit,BBU)是插在 RAID 卡上的小型可充電電池組,任務只有一個:在市電中斷時,繼續為快取記憶體供電,把尚未落碟的資料保住。供電期間長短視乎設計,常見約數十小時或更長,實際以原廠規格為準;足夠讓伺服器完成關機程序、或等待市電恢復。
恢復供電後,RAID 卡會由快取記憶體把暫存資料寫回磁碟,確保作業系統已確認的寫入最終落碟。整個過程對作業系統透明:伺服器重新啟動後,資料庫或檔案系統會發現先前已確認的寫入依然存在,不會出現不一致。
近年不少 RAID 卡改用超級電容(Supercapacitor,俗稱「大電容」)配合非揮發性快閃記憶體(NVRAM)的方式:停電時超級電容提供短暫電力,讓 RAID 卡把快取內容緊急抄寫至卡上的非揮發性儲存,之後即使電源完全中斷,資料仍保留在快閃記憶體內,供下次開機時恢復。這套方案的優點是沒有電池的化學老化問題,亦沒有電池更換週期。
兩套方案的安全意義相同:讓「回寫快取」在斷電後仍然可靠。若 RAID 卡配置了電池保護,但電池已老化失效、或未有安裝電池,而快取仍處於回寫模式,一旦停電,未落碟的資料便會遺失。因此檢查 RAID 卡時,確認電池狀態與快取模式是否匹配,是例行保養的重要項目。
電池老化與快取模式的自動保護
電池與超級電容的最大分別在於老化特性。鋰電池與鎳氫電池會隨時間與充放電次數退化,容量下降、內阻上升;RAID 卡會監察電池的健康狀態,當電池無法保證足夠的備援電力時,控制器便會自動把快取由回寫模式切換為直寫模式,寧可犧牲效能,也不讓資料暴露於斷電風險。
這個自動保護機制對管理者有兩個實際意義。第一,效能突然下降可能是電池老化的訊號:RAID 卡切換至直寫模式後,寫入效能會顯著下跌,若同時在管理工具看到電池狀態異常或「回寫已停用」的提示,應安排更換電池。第二,更換電池的程序因廠商而異:部分型號支援熱插拔,部分則需要停機處理;更換後應確認快取模式已恢復回寫。
電池的壽命一般為兩至四年,實際取決於環境溫度、充放電次數與產品設計;超級電容方案的壽命較長,但並非無限。無論哪種方案,都應把電池或電容的健康狀態與更換週期納入伺服器保養清單,並記錄最後一次更換日期。詳細的保養項目可參考本站的伺服器保養包括什麼一文。
另一項需要留意的設定,是快取內的資料在系統關機時的處理。正常的系統關機程序會指示 RAID 卡把快取資料全部刷寫至磁碟,因此正常關機後快取應為空;只有異常斷電才會有「快取內仍存有未落碟資料、依賴電池保護」的情況。若伺服器長期以強制關機的方式停止,電池保護的價值便會被放大,同時亦反映伺服器的操作程序有待改善。
選購與使用 RAID 卡的實際考慮
RAID 卡快取與電池保護的選擇,應以資料安全與工作負載為出發點,而非追求規格數字。
快取大小按負載選擇
大量小檔案寫入與虛擬機負載受益於較大的快取;一般檔案伺服器與備份伺服器對快取大小的敏感度較低。快取容量不是愈大愈好,沒有電池保護的大快取反而代表更大的斷電資料暴露範圍。
回寫模式必須有電池保護
這是 RAID 卡配置的首要原則:快取採用回寫模式時,電池或超級電容必須在線且健康。若兩者不匹配,應改為直寫模式,並盡快安排更換電池。
確認 UPS 的配合
機房的 UPS 讓伺服器在停電時有時間完成關機程序,配合 RAID 卡的電池保護,形成雙重防線:UPS 爭取時間,電池保住未落碟的資料。UPS 容量規劃可參考本站的UPS 續航時間計算一文。
固態硬碟(SSD)與 NVMe 陣列的興起改變了快取的相對價值:固態硬碟的隨機寫入延遲遠低於機械硬碟,RAID 卡快取在純 SSD 陣列上的效益不及在機械硬碟陣列上顯著,但回寫快取對資料庫日誌等負載仍有幫助。與此同時,快取寫入 SSD 陣列的損耗均衡與斷電保護,仍然依賴同一套電池或超級電容機制。
香港不少中小企業的伺服器以單一 RAID 卡承載整套業務系統,快取保護往往是資料安全的最後防線。評估 RAID 卡配置時,可要求工程人員確認:RAID 卡型號與快取大小、當前快取模式、電池或超級電容的健康狀態與更換記錄,以及 UPS 的覆蓋範圍。把這些資料納入例行保養檢查,比等到資料遺失後才補救來得可靠。