寫快取屬性查詢

2021-05-22 19:27:17 字數 1845 閱讀 7952

在寫資料前,儲存驅動程式緩衝資料到非易失性媒介,如磁碟碟片。這一型別緩衝改進了裝置效能,但是也降低了資料完整性。如果寫快取沒有電壓備份,電源關閉可能導致緩衝資料丟失。

乙個彌補資料丟失問題的方法是重新整理寫快取(在

scsi

裝置上使用

scsi synchronize cache

命令)。然而,重新整理寫快取是昂貴的操作,如果頻繁操作,它可能會顯著的降低效能。取代重新整理寫快取的方法,許多儲存裝置允許

write-through

請求。write-through

請求繞開寫快取而直接送資料到媒介。

例如,資料庫應用程式可能使用

write-through

請求以確保事務處理日誌到媒介,檔案系統驅動程式能使用

write-through

請求以確保檔案系統元資料到達媒介。

然而,並非所有的儲存驅動具有寫快取支援

write-through

請求或是

synchronize cache

;一些裝置不需要繞過或重新整理快取資料,因為這些裝置有電池備份系統以阻止電源丟失時資料損壞。應用程式和驅動程式,在他們有效使用裝置之前,必須獲取裝置寫快取的屬性資訊。

在windows vista

中,你可以使用包含一

storagedevicewritecacheproperty

屬性標示符的

ioctl_storage_query_property

請求來查詢儲存型別驅動的寫快取屬性——指定了裝置的寫快取特徵。寫快取屬性包含裝置快取能力的如下資訊:

l寫快取的存在。寫快取屬性指定了裝置是否包含些快取。

l寫快取的型別。主要存在兩種寫快取:回寫(

write back

)和直寫(

write through

)。具有回寫快取的裝置,除非不得己,不會拷貝緩衝資料。具有直寫快取的裝置並行地寫資料到快取和媒介中。這並非可以改善寫效能,但是可以是子請求讀操作更快。

不要迷惑於直寫快取和直寫請求。直寫請求可以使用任意種類快取,包括胡寫快取,如果裝置支援直寫請求。例如,假設目標是乙個具有回寫快取的

scsi

裝置,如果裝置支援直寫請求,啟動程式可以通過設定命令描述塊(

cdb)中寫命令強制單元訪問位(

fua),繞開寫快取

l同步快取支援。寫快取屬性顯示了裝置是否支援

scsi sync cache

命令,或其它匯流排上相當的命令。

l電壓備份。寫快取屬性只是了裝置是否具有在電源關閉時保持快取資料完整性的電壓備份。

關於報告寫快取屬性的完整描述資訊,請參考

storage_write_cache_property.

如果沒有寫快取屬性機制(也就是,使用

storagedevicewritecacheproperty

屬性標示符的

ioctl_storage_query_property

請求),應用程式和驅動程式,必須通過不同的命令序列,為每一匯流排查詢裝置寫快取特徵。例如,如果目標裝置繫結於

ieee1394

匯流排,使用精簡塊命令(

rbc)協議,啟動程式必須檢索裝置模式資料中的頁

6來確定寫快取是否使能。然而如果裝置是

scsi

相容的,啟動程式必須檢索模式資料中的頁

8.寫快取機制隱藏了這些操作細節,並提供了查詢儲存裝置寫快取屬性的方法,這與不同匯流排的方法相同。

寫快取屬性機制在

raid

裝置上不支援,因為沒有標準的方法查詢這些裝置,在快閃儲存器裝置上也不支援。

寫快取屬性在64位

windows

版本上支援。

mysql寫快取 mysql快取機制 寫快取篇

前一篇的部落格對innodb的讀快取做了解讀。那麼innodb是否只有對讀取做了優化呢?對於我所從事的網路遊戲業務而言,的確是乙個讀多寫少的場景,但是並不意味著所有場景都是如此。首先的一點,資料庫需要保證安全性,所以每一次寫入資料庫的時候,都會產生redo log,用來在資料庫崩潰的時候進行回滾,同...

寫屬性檔案

根據key讀取value filepath 要操作的properties檔案路徑 key 要獲得資料的key public static string readvalue string filepath,string key catch exception e 讀取properties的全部資訊 f...

Linux檔案寫快取

1.應用發起的寫操作何時將內容真正寫入檔案?2.如何保證在異常掉電的情況下,應用寫入檔案的資料不丟失?應用對檔案的操作一般基於標準庫函式fopen fread fwrite fclose實現,本文主要是針對fwrite操作的闡述。當應用呼叫fwrite向檔案中寫入資料時,實際上經過使用者空間和核心空...