Запрос свойства кэша записи
Устройства хранения часто буферируют данные в кэше записи перед записью на энергонезависимый носитель, например на диск. Этот тип буфера повышает производительность устройства, но также снижает целостность данных. Если в кэше записи нет резервной копии батареи, сбой питания может привести к потере кэшированных данных.
Одним из способов устранения проблемы потери данных является очистка кэша записи (с помощью команды SCSI SYNCHRONIZE CACHE на устройствах SCSI). Однако очистка кэша записи является дорогостоящей операцией, и если выполнять ее часто, это может значительно снизить производительность. Вместо очистки кэша записи многие запоминающие устройства разрешают запросы через запись . Запрос на запись обходит кэш записи и отправляет данные непосредственно на носитель.
Например, приложения базы данных могут использовать запросы на запись, чтобы обеспечить доступ журналов транзакций к носителю, а драйверы файловой системы могут использовать запросы через запись, чтобы метаданные файловой системы достигли носителя.
Однако не все запоминающие устройства с кэшами записи поддерживают запросы через запись или SYNCHRONIZE CACHE; и некоторым устройствам не нужно обходить или сбрасывать кэшированные данные в качестве меры предосторожности, так как они имеют системы резервного копирования батареи, которые предотвращают повреждение данных во время сбоев питания. Приложения и драйверы должны иметь сведения о свойствах кэша записи устройства, прежде чем они смогут эффективно использовать его.
В Windows Vista можно использовать запрос IOCTL_STORAGE_QUERY_PROPERTY с идентификатором свойства StorageDeviceWriteCacheProperty , чтобы запросить у драйвера класса хранения свойство кэша записи, указывающее характеристики кэша записи устройства. Свойство кэша записи содержит следующие сведения о возможностях кэширования устройства.
Наличие кэша записи. Свойство кэша записи указывает, имеет ли устройство кэш записи.
Тип кэша записи. Существует два main типа кэша записи: обратная запись и запись через. При использовании кэша обратной записи устройство не копирует данные кэша на энергонезависимый носитель до крайней необходимости. Эта операция повышает производительность операций записи. При использовании кэша сквозной записи устройство параллельно записывает данные в кэш и носитель. Это не повышает производительность записи, но ускоряет последующие операции чтения.
Не путайте кэш сквозной записи с запросом на запись. Запрос на запись можно использовать с кэшем любого типа, включая кэш обратной записи, если устройство поддерживает запросы через запись. Например, предположим, что целевым объектом является устройство SCSI с кэшем обратной записи. Если устройство поддерживает запросы через запись, инициатор может обойти кэш записи, задав бит доступа к единицам силы (FUA) в блоке дескриптора команды (CDB) команды записи.
Поддержка кэша синхронизации. Свойство кэша записи указывает, поддерживает ли устройство команду SCSI SYNC CACHE или эквивалентную команду на других автобусах.
Резервное копирование батареи. Свойство кэша записи указывает, имеет ли устройство резервную копию батареи, которая будет защищать целостность данных кэша во время сбоев питания.
Полное описание сведений о свойствах кэша записи см. в разделе STORAGE_WRITE_CACHE_PROPERTY.
Без механизма свойств кэша записи (то есть с помощью запроса IOCTL_STORAGE_QUERY_PROPERTY и идентификатора свойства StorageDeviceWriteCacheProperty ) приложения и драйверы должны запрашивать характеристики кэша записи устройства с другой последовательностью команд для каждой шины. Например, если целевое устройство подключено к шине IEEE 1394 и использует протокол RBC, инициатор должен получить страницу 6 данных режима устройства, чтобы определить, включен ли кэш записи. Но если целевое устройство совместимо с SCSI, инициатор должен получить страницу 8 данных режима. Механизм свойств кэша записи скрывает сведения об этих операциях от инициатора и предоставляет метод для запроса характеристик кэша записи запоминающего устройства, который является одинаковым в разных шинах.
Механизм свойств кэша записи не поддерживается для устройств RAID (так как нет стандартного метода запроса этих устройств) или для устройств флэш-памяти.
Свойство кэша записи поддерживается в 64-разрядных версиях Windows.