Implantando o NTFS transacional
O TxF (NTFS transacional), como a maioria dos mecanismos de transação, depende da ordenação correta de gravações de dados. Garantir a ordenação de gravação adequada requer controle explícito do cache de dados. Para atender a esse requisito, o TxF exige que as unidades de disco implementem os mecanismos de controle de cache que fazem parte de interfaces de unidade padronizadas, como SCSI, SATA e ATA.
O mecanismo de controle de cache usado pelo TxF é um sinalizador conhecido como FUNÇÃO DE ACESSO à Unidade de Força (FUA). Esse sinalizador especifica que a unidade deve gravar os dados no armazenamento de mídia estável antes da conclusão da sinalização. Em determinados pontos críticos dentro de uma transação, o TxF precisa emitir um FUA para garantir que alguns dados de controle necessários para reverter uma transação com êxito não sejam perdidos se ocorrer uma falha de energia.
As unidades de disco da classe de servidor (SCSI e Fibre Channel) geralmente dão suporte ao sinalizador FUA. A partir do Vista, o Windows dá suporte ao sinalizador FUA somente para discos SCSI e Fiber Channel.
Em unidades de mercadoria (ATA/SATA/USB), o TxF tem períodos de vulnerabilidade durante os quais uma falha de energia da unidade pode fazer com que o TxF não consiga reverter corretamente a transação, deixando os dados em um estado inconsistente, a menos que o cache de gravação da unidade esteja desabilitado.
Alguns HBAs (Adaptadores de Barramento de Host) e controladores de armazenamento (por exemplo, sistemas RAID) têm caches internos com suporte de bateria. Como esses dispositivos preservam os dados armazenados em cache se ocorrer uma falha de energia, os discos conectados a eles não são necessários para respeitar o sinalizador FUA. Além disso, um disco cuja fonte de alimentação é protegida por uma UPS (fonte de alimentação ininterrupta) não precisa respeitar o sinalizador FUA. Isso ocorre porque o UPS manterá a energia por tempo suficiente para que o disco libere seu cache para a mídia.
Desabilitar o cache de gravação de uma unidade elimina o requisito para que a unidade cumpra o sinalizador FUA. Você pode desabilitar o cache de gravação de um disco emitindo o código de controle IOCTL_DISK_SET_CACHE_INFORMATION para o disco. O estado do cache de gravação (ativado/desativado) será preservado entre reinicializações do sistema. A emissão desse código de controle terá consequências de desempenho muito significativas para todas as E/S emitidas para esse disco, o que provavelmente será uma degradação perceptível do desempenho. O uso desse código de controle deve ser cuidadosamente considerado antes da implantação.
Observação
Para que o TxF seja capaz de proteger consistentemente a integridade de seus dados por meio de falhas de energia, o sistema deve atender a pelo menos um dos seguintes critérios:
- Use discos de classe de servidor (SCSI, Fibre Channel).
- Verifique se os discos estão conectados a um HBA de cache com suporte de bateria.
- Use um controlador de armazenamento (por exemplo, sistema RAID) como o dispositivo de armazenamento.
- Verifique se a energia do disco está protegida por um UPS.
- Verifique se o recurso de cache de gravação do disco está desabilitado.