using transactional ntfs (txf) in .net
DESCRIPTION
Using Transactional NTFS (TxF) in .NET. Mark S. Rasmussen iPaper ApS improve.dk. Whois. Technical Lead @ iPaper ApS Udvikler DBA Sysadmin Projektleder M icrosoft D esignated I nformation P rovider. Agenda. Overblik Resource managers Transaction managers Win32 API - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/1.jpg)
Using Transactional NTFS (TxF) in .NET
Mark S. RasmusseniPaper ApSimprove.dk
![Page 2: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/2.jpg)
Whois
• Technical Lead @ iPaper ApS• Udvikler• DBA• Sysadmin• Projektleder• Microsoft Designated Information Provider
![Page 3: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/3.jpg)
Agenda
• Overblik• Resource managers• Transaction managers• Win32 API• Locking / isolation• Performance• Sikkerhed• I produktion• TxR
![Page 4: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/4.jpg)
Overblik
• Transaktionel understøttelse af alle fil operationer– Reads, writes, rename, move, etc.– ACID
• Hvad gjorde vi før?– Skriv, 2 x rename, slet– Fejlhåndtering
![Page 5: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/5.jpg)
Overblik
• Hvornår giver TxF mening?– Ændring af fil– Ændring af flere filer– Konsistente samtidige opdateringer– Konsistente ændringer på tværs af systemer (fil /
DB)– Tests
• Krav– NTFS– Vista SP1 / Server 2008
![Page 6: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/6.jpg)
TxF Begrænsninger
• Network shares – CIFS/SMB• Cached filer• Multiple writers• Krypterede filer– Og dog – non transaktionel operation, med
begrænsninger• Langtidsvarige transaktioner (relativ)
![Page 7: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/7.jpg)
Resource managers
• Har ansvaret for ændringen af en ressource• Typisk brugte durable RMs:– SqlConnection– NTFS volumes– Registry hive
• Samarbejder med Transaction Managers (MSDTC / KTM / LTM)
• To typer– Durable– Volatile
![Page 8: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/8.jpg)
Resource managers
• Flere måder en RM kan deltage i en transaktion håndteret af en TM– Transaction.EnlistDurable– Transaction.EnlistVolatile– Transaction.EnlistPromotableSinglePhase
• PSPE for performance
![Page 9: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/9.jpg)
Kernel Transaction Manager
• Både kernel og user mode services• System.Transactions• Eksplicit / Implicit– Transaction– TransactionScope
• Hurtig two phase commit indenfor samme maskine
• Win32/COM og System.Transactions interfaces
![Page 10: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/10.jpg)
DTC / KTM samarbejde
• DTC håndterer sammenspillet mellem flere distribuerede transaktioner
• Både lokalt, remote og kombinationer• KTM transaktion eskaleres til DTC efter behov• KTM eksponerer API for transaction
controllere• DTC kender til KTM, men ikke omvendt
![Page 11: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/11.jpg)
DTC / KTM samarbejde
![Page 12: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/12.jpg)
DTC / KTM samarbejde
• Direkte til KTM– Begrænset til kun KRMs indenfor samme
appdomain– Kun én durable transaction
![Page 13: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/13.jpg)
DTC / KTM samarbejde
• KTM, via DTC– DTC skaffer et transaktions handle fra KTM til os– Ingen begrænsninger
![Page 14: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/14.jpg)
DTC / KTM samarbejde
• System.Transactions– Samme funktionalitet & fremgangsmåde som KTM
via DTC, blot med managed interfaces
![Page 15: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/15.jpg)
DTC / KTM samarbejde
![Page 16: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/16.jpg)
Win32 fil operationer
• Non-transacted– CreateFile– CopyFile– MoveFile– DeleteFile– CreateHardLink– CreateSymbolicLink– CreateDirectory– RemoveDirectory
![Page 17: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/17.jpg)
Win32 fil operationer
• Transacted– CreateFileTransacted– CopyFileTransacted– MoveFileTransacted– DeleteFileTransacted– CreateHardLinkTransacted– CreateSymbolicLinkTransacted– CreateDirectoryTransacted– RemoveDirectoryTransacted
![Page 18: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/18.jpg)
CreateFile
![Page 19: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/19.jpg)
TransactedFile.Open
![Page 20: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/20.jpg)
TransactedFile.WriteAllText
![Page 21: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/21.jpg)
Locking / isolation
• Read committed• Non-transacted writers altid blokeret– Også selvom åbnet med shared-write
• Transacted reader– Ser committed version fra reader handle blev åbnet– Blokerer non-transacted writers – men kun så længe
handle er åbent!
• Non-transacted writer blokerer transacted reader/writer
![Page 22: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/22.jpg)
Locking / isolation
• Filniveau• ERROR_SHARING_VIOLATION,
ERROR_TRANSACTIONAL_CONFLICT• Én gang åbnet for write – altid åbnet som
write– Indenfor transaktion
![Page 23: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/23.jpg)
Performance
• Koster kun når vi benytter transacted operationer
• Optimeret for commits• Modifikation af eksisterende data = 2 x IO,– $TOPS
• Metadata operationer, nyt data, slet etc – meget lavt overhead (1-2%)
• Pas på recovery tider ved distribuerede transaktioner! Afhængigheder kan låse filer.
![Page 24: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/24.jpg)
Sikkerhed
• TxF wrapper via P/Invoke
• P/Invoke = implicit FullTrust LinkDemand
• FullTrust ofte problematisk i webapps
• Gateway assemblies med APTCA
![Page 25: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/25.jpg)
Demo
![Page 26: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/26.jpg)
TxF i produktion
• Nej – vi bruger det ikke... Endnu– SAN storage via CIFS
• På vej - deployment af nye website versioner– Interruptions under overskrivelse– Flere sites samtidigt
• Microsoft bruger det– Windows Update– System Restore– Task Scheduler– Web Deployment Tool
![Page 27: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/27.jpg)
Transactional registry (TxR)
• Lignende funktionalitet• KTM / DTC integration• TxR + TxF = nem installer rollback
![Page 28: Using Transactional NTFS (TxF) in .NET](https://reader035.vdocuments.mx/reader035/viewer/2022062422/5681331d550346895d99e4d3/html5/thumbnails/28.jpg)
improve.dk