陣列Cache寫機制:Write-through與Write-back區別
- 2020 年 2 月 11 日
- 筆記
Write Through和Write Back
Write Through和Write Back是陣列卡Cache的兩種使用方式,也稱為透寫和回寫。當選用write through方式時,系統的寫磁碟操作並不利用陣列卡的Cache,而是直接與磁碟進行數據的交互。而write Back方式則利用陣列Cache作為系統與磁碟間的二傳手,系統先將數據交給Cache,然後再由Cache將數據傳給磁碟。 在配置陣列的時候,如果不是很清楚的話,默認就可以了,系統會根據磁碟類型進行默認設置。
生產環境中的配置要根據具體的業務類型及環境進行配置,比如:如果有外置UPS電源,選Write Back,如果沒有外置電源,並且對數據安全性要求很高,不要求太高性能,就選Write Through。 Write caching 或 write-through write-through意思是寫操作根本不使用快取。數據總是直接寫入磁碟。關閉寫快取,可釋放快取用於讀操作。(快取被讀寫操作共用) Write caching可以提高寫操作的性能。數據不是直接被寫入磁碟;而是寫入快取。從應用程式的角度看,比等待完成磁碟寫入操作要快的多。因此,可以提高寫性能。由控制器將快取內未寫入磁碟的數據寫入磁碟。表面上看,Write cache方式比write-through方式的讀、寫性能都要好,但是也要看磁碟訪問方式和磁碟負荷了。 write-back(write cache)方式通常在磁碟負荷較輕時速度更快。負荷重時,每當數據被寫入快取後,就要馬上再寫入磁碟以釋放快取來保存將要寫入的新數據,這時如果數據直接寫入磁碟,控制器會以更快的速度運行。因此,負荷重時,將數據先寫入快取反而會降低吞吐量。 Starting and stopping cache flushing levels 這兩個設置影響控制器如何處理未寫入磁碟的快取內數據,並且只在write-back cache方式下生效。快取內數據寫入磁碟稱為flushing.你可以配置Starting and stopping cache flushing levels值,這個值表示佔用整個快取大小的百分比。當快取內未寫入磁碟的數據達到starting flushing value時,控制器開始flushing(由快取寫入磁碟)。當快取內未寫入磁碟數據量低於stop flush value時,flushing過程停止。控制器總是先flush舊的快取數據。快取內未寫入數據停留超過20秒鐘後被自動flushing. 典型的start flushing level是80%。通常情況下,stop flushing level也設置為80%。也就是說,控制器不允許超過80%的快取用於write-back cache,但還是儘可能保持這一比例。如果你使用此設置,可以在快取記憶體更多的未寫入數據。這有利於提高寫操作的性能,但是要犧牲數據保護。如果要得到數據保護,你可以使用較低的start and stop values。通過對這兩個參數的設置,你可以調整快取的讀、寫性能。經測試表明,使用接近的start and stop flushing levels時性能較好。如果stop level value遠遠低於start value,在flushing時會導致磁碟擁塞。 Cache block size 這個值指快取分配單元大小,可以是4K或16K。選擇合適的值,可以明顯的改善快取使用性能。 如果應用程式更多時候訪問小於8K的數據,而將cache block size設置為16K,每次訪問僅使用一部分cache block。在16K的cache block里總是存儲8K或更小的數據,意味著只有50%的快取容量被有效使用,使性能下降。對於隨機I/O和小數據塊的傳送,4K比較合適。另一方面,如果是連續I/O 並使用大的segment size,最好選擇16K。大的cache block size意味著cache block數量少並可縮短快取消耗延時。另外,對於同樣大小的數據,cache block size大一些,需要的快取數據傳送量更小。
其他相關說明:
保護記憶體里的數據
備援電池的功能是確保萬一當主電源故障或突然斷電時記憶體里的數據不流失,因此如何確保備援電池的正常運行就顯得格外重要。備援電池在2種情況下,系統視為無法正常運行以保護記憶體里的數據。一是壞掉的時候,背板的LED燈將亮起紅燈。一是電池充電的時候,背板的LED燈將亮起黃燈。備援電池的使用壽命是根據充電的次數及電力釋放的周期而變化的,這取決於用戶本身對盤陣的使用情況,一般而言我們建議最好在盤陣使用了12個月之後更換備援電池模組(BBU)。備援電池在正常情況下充滿電的時候是3.5V,當其電力降至2.7V的時候將自動進入充電狀態,此時系統因為保護記憶體數據不流失的電力消失,自動地將數據的寫入切換成「Write-Through」模式;當充完電後,又自動切換回「Write-Back」模式。這個動作是在事件啟動裝置(Event Trigger)功能來執行的,在安裝管理軟體的時候,事件啟動裝置對備援電池的管理初始值是打開的(Enable)。如果你沒有更改過初始設置,那麼上述的動作就會正常的運行。如果備援電池已經壞掉,不能正常保護記憶體里的數據時,而事件啟動裝置對備援電池的管理是設定在關閉的狀態下,我們建議你手動將數據寫入模式更改為「Write-Through」模式,以免數據寫入沒有電力保護的記憶體中而主電源故障或突然斷電時,這些正在寫入的數據就遺失了。
減少延遲 當關閉記憶體「Write-Back」功能時就進入了「Write-Through」的模式,這時候主機數據是不會寫入記憶體而直接寫入硬碟的。在「Write-Through」模式下,所有的硬碟將與其相關的主機以適當的方式存取數據塊,而大多數的時候硬碟處於接受寫命令的狀態。此時盤陣只要從主機接收到寫入的命令,硬碟的讀寫頭就會去尋找讀寫的位置,並等待硬碟處於可寫入的狀態,這個等待的現象就是所謂的延遲(Latency Time),而硬碟經常處於等待寫入的狀態,增加了延遲的時間,不但縮短硬碟的使用壽命,並且系統也比較耗電。當打開記憶體的「Write-Back」功能時,從主機寫入硬碟的數據先被寫在記憶體里,在記憶體寫滿數據時盤陣控制器會將存在於記憶體的數據大量地寫入硬碟。這個記憶體「Write-Back」的模式將主機寫入的命令以寫入記憶體來取代,可以大幅減少硬碟延遲的時間,並且相較於「Write-Through」模式,在大多數的時候提供更佳的寫入政策。
引用:http://www.jb51.net/hardware/zonghe/99315.html
http://blog.sina.com.cn/s/blog_3fe2463d0100lexr.html