陣列卡快取電池充放電問題詳解
本文主要詳細解釋了與陣列卡快取電池充放電相關的各方面的問題。
磁碟陣列是伺服器上歷史悠久的一項技術,它能夠透過不同的陣列模式合理利用空間和效能配比出價效比極高的磁碟陣列,被大部分伺服器OEM廠商所廣泛採用。其中以LSI公司的MegaRAID SAS產品為主,廣泛用於各品牌(除惠普外)x86伺服器。
陣列卡核心技術包含三部分內容:
1、資料條帶化;
2、資料冗餘;
3、快取記憶體。
其中快取記憶體即所謂的陣列卡記憶體(以下簡稱快取):陣列卡控制器透過一系列演算法將上層應用下發的寫請求進行最佳化並儲存在陣列卡的快取記憶體內以此提高應用的寫效能(上層應用不必等待資料實際Flush到磁碟上即可完成寫操作)。由於陣列卡快取也屬於RAM(易失性儲存)的一種,因此也存在掉電丟資料的風險。一旦伺服器斷電,陣列卡快取中的資料就會丟失,這會給應用造成資料一致性的風險。
為了保障斷電後資料的一致性,於是一種可迴圈充電式的電池被應用到陣列卡快取單元上。如今大部分陣列卡快取單元都會外接一個可充電式的電池包,以此來為斷電後的快取提供電源支援,同時保障資料在一定時間內不丟失(這個時間通常為48小時)。待到下一次伺服器再次恢復電源後,陣列卡控制器會將快取中的資料Flush到磁碟,以避免髒資料的產生。
1、一般情況下伺服器通電時陣列卡快取使用的是主機板供電;
2、伺服器斷電後陣列卡板卡電路自動將快取的供電方式由主機板切換到電池。
LSI陣列卡用的是鋰電池方案,我們知道鋰電池有較強的惰性,它在非充電狀態下會緩慢地自放電(電池特性),一段時間後電量就會下降。為了能夠及時校準電量避免電池因為自放電而導致電量不明確,於是陣列卡控制器會對電池進行週期性地充放電操作(Relearn),以此保證電量的準確性,同時還可以判斷電池是否故障或者老化。
1、控制器首先對電池進行完全放電直至零電量;
2、控制器重新對電池進行充電操作直至充滿;
3、控制器對電池的電量重新進行計算校準;
4、等待下一個充放電時間點。
充放電操作時由於電池電量無法提供足夠的資料保障時間,為了避免風險發生陣列卡控制器預設會將快取關閉,正是由於快取被關閉而引發了寫效能急劇下降的問題。
1、惠普伺服器使用的是自家設計的基於PMC控制器的陣列卡,它採用的是鎳氫電池。鎳氫電池沒有太強的惰性,並且特性和鋰電池不同,它並不需要透過完全放電來校準電量。
2、當鎳氫電池由於自放電而導致電量降低時到一定程度時(比如80%),陣列卡控制器會檢測到電量下降並對電池進行娟流充電以補充失去的電量。整個過程對使用者是透明的,也不需要關閉快取,因此並不會影響IO效能。
有!快閃記憶體式電容方案不但可以替代電池提供幾乎無限的資料保護時間,並且控制器也不會因為充放電操作而關閉快取。快閃記憶體式電容能夠在伺服器斷電時,由高容量電容向陣列卡短暫地供電(大約幾分鐘),隨後陣列卡控制器會將快取中的資料全部複製到同等容量的快閃記憶體介質上。因為快閃記憶體是非易失性儲存器,因此可以認為資料保護時間是無限的。待下一次伺服器正常通電開機,陣列卡控制器在初始化階段會將快閃記憶體中的髒資料重新Flush到磁碟上。
當然快閃記憶體式電容方案也不是絕對完美的,缺點也顯而易見,就是成本太高!
1、基於可充電式電池的快取單元價格低廉,比起基於快閃記憶體式電容的快取單元要便宜許多;
2、可充電式電池透過迴圈充電已經能夠滿足一定的資料保護時間。
說到底還是因為成本!
1、電池壽命有限,更換週期通常是2-3年,更換需要停機操作,增加運維工作量;
2、電池自動充放電時會強制關閉快取影響寫效能,給業務效能造成很大影響,給運維帶來壓力;
3、由於電池問題引發的問題和故障數不勝數,增加運維團隊的工作量。
1、通常伺服器都是雙電方案,單電源故障的更換操作可線上完成;
2、綁線規範使得電源和插頭之間不會出現鬆動脫離的情況,更加減少了掉電的風險;
3、單個電源的月故障率遠遠低於磁碟、記憶體、陣列卡,雙電同時故障機率極其低。
1、快取單元的供電方案更換成快閃記憶體式電容;
2、快取設定為WT(寫快取開啟)和CachedBadBBU(強制寫快取開啟),AutoLearn仍舊週期性進行只是該過程進行階段快取不會被關閉;(推薦)
3、擔心AutoLearn期間電池的資料保護時間不夠的話,也可以選擇不強制開啟寫快取,僅在業務低峰期時透過MegaCli工具人為地進行電池Relearn操作。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559359/viewspace-2287151/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 電池 並聯、串聯、充電、放電
- 解決 iphone6sp 換電池 電池膠斷問題iPhone
- 筆記本主機板CMOS電池怎麼放電?膝上型電腦主機板電池放電圖解教程筆記圖解
- 電腦主機板電池怎麼放電?常用的電腦主機板電池放電方法
- win10電池不充電怎麼處理_win10電源接通電池不充電的解決教程Win10
- leetcode題解(陣列問題)LeetCode陣列
- DIY多快充協議太陽能充電器!----鋰電池充電電路協議
- C++ 獲取陣列大小、多維陣列操作詳解C++陣列
- 充電樁+立體車庫,領充幫助解決停車難、充電難問題
- win10電腦電池不充電怎麼回事 win10電池連線電源不充電如何處理Win10
- 快取問題(四) 快取穿透、快取雪崩、快取併發 解決案例快取穿透
- 新手機充電多久對電池好?新手機充電注意事項
- 智慧充電:新能源汽車充電樁管理App/小程式功能及充電流程詳解APP
- 詳解nginx代理天地圖做快取解決跨域問題Nginx地圖快取跨域
- 蘋果iPhone XR電池續航能力詳解 iPhone XR電池容量多大?蘋果iPhone
- 聯想筆記本電池0%充不進電怎麼辦 聯想電腦電池顯示0充不進電筆記
- 程式碼解決快取穿透和快取雪崩問題快取穿透
- 快取穿透問題與解決方法快取穿透
- Mybatis快取詳解MyBatis快取
- php陣列問題PHP陣列
- Google致力於解決macOS裝置上電池壽命問題GoMac
- 人工智慧再出手,幫助解決鋰電池爆炸問題人工智慧
- 動力電池走上快車道
- 快取的問題快取
- 筆記本win10系統下電池不能充電怎麼解決筆記Win10
- 清理電腦快取垃圾快取
- Redis詳解(十二)------ 快取穿透、快取擊穿、快取雪崩Redis快取穿透
- AlDente for Mac(mac電池最大充電限制工具)中文版Mac
- PL7222線性雙節鋰電池充電晶片晶片
- 如何確定MacBook充電器或電池是否損壞Mac
- js陣列方法詳解JS陣列
- 樹狀陣列詳解陣列
- 快取常見問題及解決方案快取
- 快取三大問題及解決方案快取
- 快取問題(一) 快取穿透、快取雪崩、快取併發 核心概念快取穿透
- NumPy 陣列建立方法與索引訪問詳解陣列索引
- 充電時按下這個鍵,充電速度快一倍!
- python輸入詳解(陣列、矩陣)Python陣列矩陣