Condividi tramite


Distribuzione di NTFS transazionale

NTFS transazionale (TxF), come la maggior parte dei meccanismi di transazione, dipende dall'ordinamento corretto delle scritture di dati. Per garantire un corretto ordinamento di scrittura è necessario un controllo esplicito della memorizzazione nella cache dei dati. Per soddisfare questo requisito, TxF richiede che le unità disco implementino i meccanismi di controllo della memorizzazione nella cache che fanno parte di interfacce di unità standardizzate, ad esempio SCSI, SATA e ATA.

Il meccanismo di controllo della memorizzazione nella cache usato da TxF è un flag noto come funzione FUA (Force Unit Access). Questo flag specifica che l'unità deve scrivere i dati su un supporto di archiviazione stabile prima di segnalare il completamento. In determinati punti critici all'interno di una transazione, TxF deve emettere un FUA per assicurarsi 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 presenta periodi di vulnerabilità durante i quali un guasto dell'alimentazione dell'unità può causare l'impossibilità di eseguire correttamente il rollback della transazione, lasciando così i dati in uno stato incoerente, a meno che la cache di scrittura dell'unità non sia disabilitata.

Alcuni adattatori bus host (HBA) e controller di archiviazione (ad esempio, i sistemi RAID) dispongono di cache predefinite basate su batteria. Poiché questi dispositivi mantengono i dati memorizzati nella cache se si verifica un errore di alimentazione, tutti i dischi connessi non devono rispettare il flag FUA. Inoltre, un disco il cui alimentatore è protetto da un'alimentazione elettrica ininterrotta (UPS) non deve rispettare il flag FUA. Ciò è dovuto al fatto che l'UPS manterrà l'energia sufficientemente a lungo per scrivere la cache sul supporto.

La disabilitazione della cache di scrittura di un'unità elimina il requisito per l'unità di 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 sarà una riduzione notevole 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 un HBA con cache supportata da batteria.
  • Usare un controller di archiviazione (ad esempio, il sistema RAID) come dispositivo di archiviazione.
  • Assicurarsi che l'alimentazione del disco sia protetta da un UPS.
  • Assicurarsi che la funzionalità di memorizzazione nella cache di scrittura del disco sia disabilitata.