Transactionele NTFS implementeren
Transactionele NTFS (TxF), zoals de meeste transactiemechanismen, is afhankelijk van de juiste volgorde van gegevensschrijfbewerkingen. Het garanderen van de juiste schrijfvolgorde vereist expliciete controle over het opslaan van gegevens in de cache. Om aan deze vereiste te voldoen, vereist TxF dat schijfstations de mechanismen voor cachingbeheer implementeren die deel uitmaken van gestandaardiseerde stationsinterfaces, zoals SCSI, SATA en ATA.
Het mechanisme voor cachingbeheer dat door TxF wordt gebruikt, is een vlag die bekend staat als de functie Force Unit Access (FUA). Deze vlag geeft aan dat de schijf de gegevens naar stabiele opslagmedia moet schrijven alvorens voltooiing te signaleren. Op bepaalde kritieke punten binnen een transactie moet TxF een FUA uitgeven om ervoor te zorgen dat sommige controlegegevens die nodig zijn om een transactie terug te draaien, niet verloren gaan als er een stroomstoring optreedt.
Schijfstations van serverklasse (SCSI en Fiber Channel) ondersteunen over het algemeen de FUA-vlag. Vanaf Vista ondersteunt Windows alleen de FUA-vlag voor SCSI- en Fiber Channel-schijven.
Op basisstations (ATA/SATA/USB) heeft TxF perioden van kwetsbaarheid waardoor een stroomstoring van de schijf kan leiden tot het niet correct terugdraaien van de transactie, waardoor gegevens in een inconsistente status blijven, tenzij de schrijfcache van het station is uitgeschakeld.
Sommige Host Bus Adapters (HBA's) en opslagcontrollers (bijvoorbeeld RAID-systemen) hebben ingebouwde caches met batterij-ondersteuning. Omdat deze apparaten gegevens in de cache bewaren als er een stroomfout optreedt, zijn schijven die met deze apparaten zijn verbonden, niet vereist om de FUA-vlag te respecteren. Verder hoeft een schijf waarvan de voeding wordt beveiligd door een niet-onderbreekbare voeding (UPS) de FUA-vlag niet te respecteren. Dit komt doordat de UPS de stroom lang genoeg voorziet om de cache van de schijf naar het medium weg te schrijven.
Als u de schrijfcache van een schijf uitschakelt, hoeft de schijf niet meer te voldoen aan de FUA-vlag. U kunt de schrijfcache van een schijf uitschakelen door de IOCTL_DISK_SET_CACHE_INFORMATION besturingscode naar de schijf uit te geven. De status van de schrijfcache (aan/uit) blijft behouden tijdens het opnieuw opstarten van het systeem. Het uitgeven van deze controlecode heeft zeer belangrijke gevolgen voor de prestaties voor alle I/O-code die is uitgegeven aan die schijf, wat waarschijnlijk een merkbare prestatievermindering zal zijn. Het gebruik van deze besturingscode moet zorgvuldig worden overwogen voordat de implementatie wordt uitgevoerd.
Notitie
Het systeem moet ten minste aan een van de volgende criteria voldoen om TxF in staat te stellen de integriteit van uw gegevens consistent te beschermen bij stroomstoringen.
- Gebruik serverklasseschijven (SCSI, Fiber Channel).
- Zorg ervoor dat de schijven zijn aangesloten op een HBA met batterijondersteund cachemechanisme.
- Gebruik een opslagcontroller (bijvoorbeeld RAID-systeem) als het opslagapparaat.
- Zorg ervoor dat de stroom naar de schijf wordt beveiligd door een UPS.
- Zorg ervoor dat de schrijfcachefunctie van de schijf is uitgeschakeld.