Distribuzione di NTFS transazionali
NTFS transazionale (TxF), come la maggior parte dei meccanismi di transazione, dipende dall'ordinamento corretto delle scritture dei dati. Assicurarsi che l'ordinamento di scrittura appropriato richieda il controllo esplicito della memorizzazione nella cache dei dati. Per soddisfare questo requisito, TxF richiede che le unità disco implementano i meccanismi di controllo della memorizzazione nella cache che fanno parte di interfacce unità standardizzate, ad esempio SCSI, SATA e ATA.
Il meccanismo di controllo della memorizzazione nella cache usato da TxF è un flag noto come funzione Force Unit Access (FUA). Questo flag specifica che l'unità deve scrivere i dati nell'archiviazione multimediale stabile prima del completamento della segnalazione. In determinati punti critici all'interno di una transazione, TxF deve emettere un'istanza FUA per garantire che alcuni dati di controllo necessari per eseguire correttamente il rollback di una transazione non vengano persi se si verifica un errore di alimentazione.
Le unità disco di classe server (SCSI e Fiber Channel) supportano in genere il flag FUA. A partire da Vista, Windows supporta il flag FUA solo per i dischi SCSI e Fiber Channel.
Nelle unità di base (ATA/SATA/USB), TxF ha periodi di vulnerabilità durante i quali un errore di alimentazione dell'unità può causare il rollback corretto della transazione, lasciando così i dati in uno stato incoerente a meno che la cache di scrittura dell'unità non sia disabilitata.
Alcuni adattatori del bus host (HBAs) e controller di archiviazione (ad esempio, i sistemi RAID) hanno cache predefinite con supporto della batteria. Poiché questi dispositivi conservano i dati memorizzati nella cache se si verifica un errore di alimentazione, tutti i dischi connessi non sono necessari per rispettare il flag FUA. Inoltre, un disco il cui alimentatore è protetto da un alimentatore non gestito (UPS) non deve rispettare il flag FUA. Questo avviene perché l'UPS mantiene la potenza abbastanza lunga per il disco per scaricare la cache nel supporto.
La disabilitazione della cache di scrittura di un'unità elimina il requisito per l'unità per rispettare il flag FUA. È possibile disabilitare la memorizzazione nella cache di scrittura di un disco eseguendo il codice di controllo IOCTL_DISK_SET_CACHE_INFORMATION sul disco. Lo stato della cache di scrittura (on/off) verrà mantenuto tra i riavvii del sistema. L'emissione di questo codice di controllo avrà conseguenze molto significative sulle prestazioni per tutte le operazioni di I/O rilasciate a tale disco, che probabilmente saranno un notevole calo delle prestazioni. L'uso di questo codice di controllo deve essere considerato attentamente prima della distribuzione.
Nota
Affinché TxF sia in grado di proteggere in modo coerente l'integrità dei dati tramite errori di alimentazione, il sistema deve soddisfare almeno uno dei criteri seguenti:
- Usare dischi di classe server (SCSI, Fiber Channel).
- Assicurarsi che i dischi siano connessi a una cache con supporto della batteria HBA.
- Usare un controller di archiviazione (ad esempio, sistema RAID) come dispositivo di archiviazione.
- Assicurarsi che l'alimentazione sul disco sia protetta da un UPS.
- Assicurarsi che la funzionalità di memorizzazione nella cache di scrittura del disco sia disabilitata.