蔣文輝 孔祥倫 王玉龍
(南方電網數字電網研究院有限公司,廣東 廣州 510555)
不同于使用磁盤作為存儲介質,通過旋轉磁頭來進行數據存取的傳統機械硬盤,固態硬盤(Solid State Drives,SSD)是用閃存電子存儲芯片陣列制成的硬盤,無任何機械活動部件。
雖然機械硬盤憑借容量大、性價比高、使用壽命長、數據易恢復等優點占領著主要的存儲市場,但固態硬盤由于其讀寫速度快、體積小、功耗低、抗振強、工作溫度范圍廣等優勢,在航空、電力等工業領域和消費電子領域仍獲得了廣泛應用。
由于有相關標準明確要求不得使用旋轉部件等原因[1-2],變電站自動化設備更是大量采用了固態硬件作為外存儲器存儲程序和數據,如數據通信網關機、智能遠動機、PMU相量測量裝置、保護信息管理單元等。
目前,有不少文獻研究討論了固態硬盤的應用。
文獻[3]將固態硬盤與傳統磁盤組合,利用固態硬盤高性能和傳統磁盤低成本、大容量的特點,能夠為用戶提供大容量的存儲空間,保證系統的高性能,同時還能降低成本。
文獻[4]對固態硬盤和傳統硬盤進行了性能測試、對比分析,通過測驗計算機響應時間,設計了使用SSD的計算機升級方案,提升了計算機系統整體性能并延長了計算機服務年限。
文獻[5]在變電站的繼電保護裝置中采用固態硬盤作為存儲介質,基于PCIe總線技術實現了大容量存儲系統設計,滿足了繼電保護裝置對數據處理安全可靠性的要求。
文獻[6]通過固態硬盤測試,獲得了讀寫比例、數據包大小、訪問模式等工況變化和供電電壓波動對讀/寫速度、電流等性能特性的影響規律,測試結果表明,固態硬盤使用過程中應保證輸入電壓的穩定性。
硬盤的性能主要指數據讀寫速度,長期以來遠低于處理器和內存。
機械硬盤讀取數據的方式是通過磁頭在高速旋轉的盤片上進行磁操作。受限于磁頭機械轉速,轉速7 200 r/min的機械盤,其大數據順序讀速度能達到160 MB/s,寫速度達到80 MB/s。
固態硬盤讀寫時是對閃存存儲元件進行電子存取操作,速度更快,即使存在主控芯片的操作延時,其讀寫速度仍能達到500 MB/s,是機械硬盤的數倍。
機械磁盤受限于磁頭移動和磁盤旋轉等機械運動,響應時間和吞吐率已經遠遠落后于CPU和內存,SSD外存儲器高速讀寫的優勢,有效緩解了計算機系統長期存在的硬盤IO速度瓶頸問題。
固態硬盤的壽命主要和存儲單元的擦寫次數有關,隨著擦寫次數上升到壽命限值,硬盤的讀寫性能下降,存儲的數據也會變得不可信。
固態硬盤寫入數據到存儲單元稱為一次擦寫,將所有的存儲單元全部擦寫過,則稱為一次全擦寫(P/E)。所有固態硬盤都有全擦寫限值,根據閃存單元的工藝不同,全擦寫限值有數萬次、數千次、數百次不等。
固態硬盤使用的閃存單元技術原理是一種基于浮柵技術的場效應管(MOS晶體管),根據浮柵內存儲的電子數量不同所表現的電壓值來表現不同的數據值。數據值分為1、2、3和4比特,分別對應閃存單元的4種類型:單級閃存單元(SLC)、二級閃存單元(MLC)、三級閃存單元(TLC)和四級閃存單元(QLC)。單位存儲能力提高的同時伴隨的是壽命的下降,一般認為SLC的壽命下限為全擦寫10 000次,MLC為3 000次,TCL為1 000次,QLC為150次,而價格同樣依次下降[7]。
固態硬盤一般由主控器、存儲介質和固件組成,相應也有核心技術來保障硬盤性能和壽命。固件技術將存儲介質組織成塊并進行管理,建立邏輯地址和物理地址的映射關系,以提高讀取/寫入效率并平衡寫入次數。
存儲塊頻繁寫入超過限值后,將造成存儲顆粒老化,成為壞塊。因此,數據寫入時主控器會協調寫入擦寫次數最少的存儲塊,來保障所有存儲塊的擦寫次數接近,該過程稱為“磨損均衡”。
優化的磨損均衡算法會將硬盤中存在的長期不變數據也進行遷移,用空出的較新存儲塊寫入新數據,實現靜態磨損均衡。因此,每次上層應用要求寫入的數據量會小于實際寫入存儲單元的數據量,該現象稱為“寫入放大”。
存儲單元按塊管理,則小數據寫入會占用多余的存儲單元,這一過程也會產生寫入放大,因此會針對小數據進行合理遷移并開展垃圾回收。提高磨損均衡的合理性,優化垃圾回收算法,降低寫入放大系數,是固態硬盤優化的核心技術,能夠有效提升固態硬盤的使用壽命。
文獻[8]提出了一種全程優化的垃圾回收方法,在數據初始放置、垃圾回收目標塊的選擇、有效數據的遷移等方面盡可能全面地考慮各步驟對SSD壽命的影響,同典型算法相比,可以減少壽命磨損近30%。
文獻[9]提出一種超級塊重組算法,在垃圾回收時挑選每個閃存上有效數據量最小的物理塊來重組超級塊,作為垃圾回收的源超級塊。
實驗結果表明,和傳統的垃圾回收算法相比,該算法能減小2/3的寫入放大,系統壽命提升將近3倍,適用于預留空間小但對系統壽命和滿盤下寫性能有要求的場景。
文獻[10]提出采用在控制器內部配置緩存設備的方式提高固態硬盤整體性能,緩存設備可使隨機小數據寫入時只寫入緩存而不是閃存介質,當匯總數據量較大時批量寫入,該方法能有效延長硬盤使用壽命,但需要增加掉電保護機制防止緩存數據丟失。
文獻[11-12]綜述了提高SSD耐久度的方法,包括改善磨損均衡算法、使用外部數據緩沖、降低寫入放大系數、提升預留空間、應用區塊磨損反饋技術等。
某500 kV變電站使用的遠動網關機在投運半年后即頻繁出現程序退出、設備死機等現象,重啟后能恢復。設備商檢測分析后確認SSD(MLC顆粒)平均全擦寫次數為2 500次,已接近3 000次,部分存儲顆粒磨損度較高。更換SSD后問題解決,裝置運行正常,但仍需定量地進行分析,確定SSD寫入數據量、P/E次數與故障的關系。
SSD的寫入數據量可以使用Linux系統自帶的iotop命令監測,P/E次數則需要硬盤供應商提供相應的工具來獲得。現場SSD為MLC存儲顆粒,64 GB容量,不帶緩存。
模擬變電站數據環境,使用3臺樣機和SSD進行測試,記錄操作系統的日平均寫入數據量,和SSD檢測工具獲得的日平均P/E次數進行對比,結果如表1所示。

表1 SSD壽命對比測試
測試得出以下結論:
(1)帶緩存機制的SSD能有效延長使用壽命,降低放大系數;
(2)隨著SSD累積P/E次數的增加,放大系數會增大很多;
(3)假定放大系數與當前已擦寫次數為正相關,則該型號SSD的預估壽命在0.6~2.3年。
現場SSD故障出現在設備投運半年后,考慮到設備前期的場內調試、現場調試至少有4個月時間,可以認為壽命對比測試的結論較為符合現場情況。MLC顆粒的SSD理論累積P/E次數下限為3 000次,而本次故障發現平均P/E次數達2 500次時已頻繁出現讀寫到壞塊導致設備故障的情況,合理推斷是該型號SSD的磨損均衡算法效果不佳,造成部分存儲顆粒因磨損過度已經退化,造成設備程序或操作系統運行異常。
另外,日均30 GB的寫入數據量與變電站遠動機的場景認知有偏差,為查明寫入數據量的程序比例,持續使用iotop命令定位分析程序的數據寫入量,發現存在某個服務程序的日均數據寫入量達到了26 GB。通過與軟件供應商溝通,確認是該遠動機啟用了一個數據斷面定時保存功能造成的。該功能不是必需的,取消后該站的SSD日平均寫入數據量降低為4 GB,預計壽命能延長7倍。
最終該故障現象得到根本解決的方法為:
(1)變電站自動化設備換用其他品牌帶緩存機制的SSD;
(2)關閉自動化設備系統軟件中不必要的數據保存功能。
變電站設備使用SSD,需對其狀態進行在線監測,評估性能變化和使用壽命,在SSD顆粒老化前預警。監測對象包括:
SSD的寫入放大系數與剩余空間有高度相關性,剩余空間越大,則寫入放大系數越小。研究數據表明,剩余容量為50%時,寫入放大系數為2左右[12];當剩余容量低于20%時,寫入放大系數會增大較多。因此,需要對剩余空間進行監測預警,低于20%的可用空間時,使告警指示燈亮。
如能使用供應商自帶的工具定期對SSD進行狀態監測,是較為合理的方式。除此之外,考慮到SSD品牌的多樣性,可以定期對SSD進行順序讀寫測試來檢測硬盤性能是否有明顯下降,一般設定標稱告警值為100 MB/s,連續多次速度檢測低于該值時設備應告警。
測試寫入過程不應對SSD造成較大的損耗,測試建議單次數據量為32 kB,連續寫入1 024次,每天執行一次監測,則當天數據量不超過40 MB,對SSD損耗相對較小。測試寫性能,Linux設備一般可使用dd命令:
如為機械硬盤,測試結果一般返回在100 MB/s左右,固態硬盤在500 MB/s左右。
自動化設備的狀態監測軟件模塊集成供應商提供的監測工具,每日定時對SSD進行一次狀態讀取,獲取當前全擦寫P/E次數S,與前一天的差值即為日P/E次數T,以公式(3 000-S)/T來預估剩余壽命天數。
對于新盤,預估壽命應大于8年,否則應分析寫入數據量是否偏大,需要優化應用程序并考慮加大SSD容量。考慮到換貨周期,建議預估剩余壽命低于90天時告警。
本文介紹了固態硬盤SSD的原理和相關技術概念,重點討論了SSD的性能和壽命相關的核心技術。通過分析一起典型的變電站自動化設備SSD壽命相關的故障案例,指出緩存機制有助于提升SSD壽命,不恰當的軟件使用會加速SSD的老化。
最后,本文提出了自動化設備的SSD在線監測方案,從預留容量、讀寫速度、預估壽命三個方面進行狀態監測,為應用SSD存儲的自動化設備的穩定可靠運行提供技術保障。
本文的研究內容可為變電站自動化設備合理使用SSD提供有益的參考。