Je bent hier: ITFAQ.nl » Windows » Snelheid Windows NTFS bestandssysteem verbeteren, sneller toegang tot bestanden?

Snelheid Windows NTFS bestandssysteem verbeteren, sneller toegang tot bestanden?

Windows NTFS bestandstoegang versnellen? Het Windows NTFS bestandssysteem van jouw Windowscomputer kun je met een paar kleine wijzigingen in Windows sneller maken. Hierdoor heb je sneller toegang tot jouw bestanden in de Windows Verkenner, kun je bestanden sneller aanmaken, kopiëren en verwijderen en reageert jouw computer gevoelsmatig sneller. Maar of het écht effect heeft…

Verbeter Windows NTFS-bestandssysteem prestaties – met fsutil

Het versnellen van het bestandssysteem hoeft niet altijd via het Windows register. Je kunt hiervoor ook het fsutil programmaatje gebruiken om bepaalde instellingen te beheren en wijzigen. Het fsutil noemde ik al in de Windows onderhoud-blogpost. Als je wél met regedit wijzigingen doorvoert, maak dan altijd eerst een back-up van het Windows register! Gaat er onverhoopt iets mis dan kun je altijd de back-up van het register terugzetten.

Ook hier moet je, net als met belangrijk Windows onderhoud, een cmd.exe opdrachtprompt als beheerder uitvoeren.

Met fsutil kunnen we een aantal instellingen eenvoudig aanpassen en verbeteren. Let wel dat voor verschillende Windows versies (Windows 7, Windows 8, Windows 8.1, Windows 10) verschillende standaardwaarden kunnen gelden. Heb jij een andere Windows versie dan kan het maar zo zijn dat een instelling al standaard ingeschakeld of uitgeschakeld is. Mijn advies is daarom om altijd huidige ingestelde waarden te bekijken voordat je iets wijzigt. Dit gaat eenvoudig met de query parameter van fsutil.

Fsutil staat voor File System Utility. Het omvat onder andere de volgende opties:

C:\WINDOWS\system32>fsutil behavior ---- BEHAVIOR Commands Supported ---- query Query the file system behavior parameters set Change the file system behavior parameters C:\WINDOWS\system32>fsutil behavior query Usage : fsutil behavior query <option> <option> AllowExtChar BugcheckOnCorrupt Disable8dot3 [<Volume Path>] DisableCompression DisableCompressionLimit DisableDeleteNotify DisableEncryption DisableLastAccess DisableSpotCorruptionHandling EncryptPagingFile MemoryUsage MftZone QuotaNotify SymlinkEvaluation Please use "fsutil 8dot3name query /?" for more information.

Standaard Windows NTFS-instellingen gebruikt in dit artikel:

C:\WINDOWS\system32>fsutil behavior query MemoryUsage MemoryUsage = 0 C:\WINDOWS\system32>fsutil behavior query MftZone MftZone = 0 (translates to a zone size of 200 MB)

NTFS MftZone – Master File Table of MftZone

Het NTFS-bestandsyssteem bevat een bestand genaamd master file table, of MFT. Er is tenminste één vermelding voor ieder bestand op een NTFS-bestandsysteem in het MFT, inclusief voor MFT zelf. Alle informatie over een bestand, zoals de grootte, tijd- en datumstempels, permissies of rechten en bestandsinhoud is opgeslagen in dit MFT, of in geheugenruimte buiten het MFT. Je kunt je voorstellen dat hier gauw erg veel informatie in aanwezig is, wat veel geheugen nodig heeft.

Wil je alle technische details over het MFT lezen? Lees dan Microsofts artikel Master File Table.

MftZone is a reserved region of the disk used to make the MFT contiguous. The 200 MB multiplier is only applicable for volumes > 1.5 GB. Below this threshold the multiplier is scaled based on volume size.

Standaard staat de maximale geheugenruimte voor het MFT vrij strak ingesteld: 200 MB. Heb je veel, heel veel, bestanden op jouw computer, dan kun je de toegang tot deze bestanden versnellen en verbeteren door deze MftZone te vergroten. Bijvoorbeeld verdubbelen naar 400 MB. Je doet dit met fsutil behavior set MftZone <waarde>. “Waarde” is hier een getal van 1 t/m 100 wat steeds vermenigvuldigd wordt 200 (MB). Zet je de MftZone-waarde op “2”, dan maak je die daarmee feitelijk 400 MB groot, 3 voor 600 MB, enzovoorts.

Na iedere aanpassing moet je de computer opnieuw opstarten om de nieuwe instelling actief te laten worden. Je kunt veilig verschillende waarden testen.

MftZone-instellingen testen

Om de verschillende NTFS optimalisatietechnieken te testen kun je het beste een hele serie willekeurige bestanden aanmaken in een tijdelijke map (of folder). Hoe doe je dit? De blogpost Howto Generate many files of a particular size in Windows legt uit hoe je in één commando heel veel willekeurige bestanden aanmaakt. Die kun je dan gebruiken om te verwijderen, en de tijd die nodig is om de bestanden te verwijderen op te nemen.

Ik heb hiervoor het volgende fsutil file createnew-commando gebruikt, in combinatie met een cmd.exe For lus:

For /L %i in (1,1,50000) do fsutil file createnew A%i.tmp 4096

Deze opdracht maakt 50.000 bestanden aan van 4096 bytes (4 kB), met een oplopende naamgeving (a1.tmp t/m a50000.tmp). Totale grootte is dan 195 MB (204,800,000 bytes). Houd er rekening mee dat dit even duurt ;-) .

Om dit niet al te vaak te hoeven doen kun je de map het beste kopieren naar nog een map, en kun je ook testen hoe lang het kopiëren duurt nadat je wijzigingen hebt gemaakt, naast het verwijderen. Hieronder de resultaten (let op: MftZone 0 en MftZone 1 zijn gelijk, 200 MB).

Als je dit test via de Windows Verkenner:
De hier vermelde tests zijn helaas niet helemaal representatief. Ze zijn gemaakt op een virtuele Windows Server 2012 testserver, op een Hyper-V hypervisor. De snelheid van gevirtualiseerde disks is hierop stevig van invloed.

Voor wat preciezere timing kun je gebruikmaken van PowerShells Measure-Command {} cmdlet. Het voordeel van PowerShell Measure-Command cmdlet is dat je geen Windows Verkenner hoeft te gebruiken, die timer is niet heel precies.

MftZone = 1:

PS C:\> Measure-Command { copy -Recurse .\tmp .\tmp2 } Days : 0 Hours : 0 Minutes : 1 Seconds : 4 Milliseconds : 286 Ticks : 642868931 TotalDays : 0.000744061262731482 TotalHours : 0.0178574703055556 TotalMinutes : 1.07144821833333 TotalSeconds : 64.2868931 TotalMilliseconds : 64286.8931 PS C:\> Measure-Command { Remove-Item -Recurse -Force .\tmp2 } Days : 0 Hours : 0 Minutes : 0 Seconds : 29 Milliseconds : 561 Ticks : 295611348 TotalDays : 0.000342142763888889 TotalHours : 0.00821142633333333 TotalMinutes : 0.49268558 TotalSeconds : 29.5611348 TotalMilliseconds : 29561.1348

MftZone = 2:

PS C:\> Measure-Command { copy -Recurse .\tmp .\tmp2 } Days : 0 Hours : 0 Minutes : 0 Seconds : 58 Milliseconds : 840 Ticks : 588408722 TotalDays : 0.000681028613425926 TotalHours : 0.0163446867222222 TotalMinutes : 0.980681203333333 TotalSeconds : 58.8408722 TotalMilliseconds : 58840.8722 PS C:\> Measure-Command { Remove-Item -Recurse -Force .\tmp2 } Days : 0 Hours : 0 Minutes : 0 Seconds : 22 Milliseconds : 329 Ticks : 223296107 TotalDays : 0.000258444568287037 TotalHours : 0.00620266963888889 TotalMinutes : 0.372160178333333 TotalSeconds : 22.3296107 TotalMilliseconds : 22329.6107

MftZone = 3:

PS C:\> Measure-Command { copy -Recurse .\tmp .\tmp2 } Days : 0 Hours : 0 Minutes : 1 Seconds : 18 Milliseconds : 515 Ticks : 785150896 TotalDays : 0.000908739462962963 TotalHours : 0.0218097471111111 TotalMinutes : 1.30858482666667 TotalSeconds : 78.5150896 TotalMilliseconds : 78515.0896 PS C:\> Measure-Command { Remove-Item -Recurse -Force .\tmp2 } Days : 0 Hours : 0 Minutes : 0 Seconds : 33 Milliseconds : 63 Ticks : 330632836 TotalDays : 0.000382676893518518 TotalHours : 0.00918424544444444 TotalMinutes : 0.551054726666667 TotalSeconds : 33.0632836 TotalMilliseconds : 33063.2836

Hier is een MftZone 2 overduidelijk het snelst, in zowel het kopiëren van 50.000 bestanden als het verwijderen ervan. Dat een grotere MftZone (3) niet sneller is kan in dit specifieke geval veroorzaakt worden door de systeembronnen die beschikbaar zijn voor de virtuele testserver.

MftZone op Windows Server 2012 bare metal

Dezelfde tests, nu op een fysiek apparaat (bare metal), met 2 Seagate Savvio 10K.3 SAS disks in een RAID-1 configuratie. Hierbij is de RAID controllers cache ook van invloed.

MftZone = 1:

PS C:\> Measure-Command { copy -Recurse .\tmp .\tmp2 } Days : 0 Hours : 0 Minutes : 0 Seconds : 26 Milliseconds : 537 Ticks : 265376490 TotalDays : 0.000307148715277778 TotalHours : 0.00737156916666667 TotalMinutes : 0.44229415 TotalSeconds : 26.537649 TotalMilliseconds : 26537.649 PS C:\> Measure-Command { Remove-Item -Recurse -Force .\tmp2 } Days : 0 Hours : 0 Minutes : 0 Seconds : 11 Milliseconds : 667 Ticks : 116672861 TotalDays : 0.000135038033564815 TotalHours : 0.00324091280555556 TotalMinutes : 0.194454768333333 TotalSeconds : 11.6672861 TotalMilliseconds : 11667.2861

MftZone = 2:

PS C:\> Measure-Command { copy -Recurse .\tmp .\tmp2 } Days : 0 Hours : 0 Minutes : 0 Seconds : 27 Milliseconds : 41 Ticks : 270414633 TotalDays : 0.000312979899305556 TotalHours : 0.00751151758333333 TotalMinutes : 0.450691055 TotalSeconds : 27.0414633 TotalMilliseconds : 27041.4633 PS C:\> Measure-Command { Remove-Item -Recurse -Force .\tmp2 } Days : 0 Hours : 0 Minutes : 0 Seconds : 11 Milliseconds : 593 Ticks : 115937215 TotalDays : 0.000134186591435185 TotalHours : 0.00322047819444444 TotalMinutes : 0.193228691666667 TotalSeconds : 11.5937215 TotalMilliseconds : 11593.7215

MftZone = 3:

PS C:\> Measure-Command { copy -Recurse .\tmp .\tmp2 } Days : 0 Hours : 0 Minutes : 0 Seconds : 26 Milliseconds : 934 Ticks : 269349366 TotalDays : 0.000311746951388889 TotalHours : 0.00748192683333333 TotalMinutes : 0.44891561 TotalSeconds : 26.9349366 TotalMilliseconds : 26934.9366 PS C:\> Measure-Command { Remove-Item -Recurse -Force .\tmp2 } Days : 0 Hours : 0 Minutes : 0 Seconds : 12 Milliseconds : 894 Ticks : 128944295 TotalDays : 0.000149241082175926 TotalHours : 0.00358178597222222 TotalMinutes : 0.214907158333333 TotalSeconds : 12.8944295 TotalMilliseconds : 12894.4295

Hier zien we dat een MftZone-instelling van 2 of 3 weinig verschil maakt.

MftZone op Windows 8.1

Dezelfde tests, nu op Windows 8.1, met een Samsung EVO 840 SSD.

MftZone = 1:

PS C:\> Measure-Command { copy -Recurse .\tmp .\tmp2 } Days : 0 Hours : 0 Minutes : 0 Seconds : 29 Milliseconds : 370 Ticks : 293700958 TotalDays : 0.000339931664351852 TotalHours : 0.00815835994444445 TotalMinutes : 0.489501596666667 TotalSeconds : 29.3700958 TotalMilliseconds : 29370.0958 PS C:\> Measure-Command { Remove-Item -Recurse -Force .\tmp2 } Days : 0 Hours : 0 Minutes : 0 Seconds : 10 Milliseconds : 523 Ticks : 105231843 TotalDays : 0.000121796114583333 TotalHours : 0.00292310675 TotalMinutes : 0.175386405 TotalSeconds : 10.5231843 TotalMilliseconds : 10523.1843

MftZone = 2:

PS C:\> Measure-Command { copy -Recurse .\tmp .\tmp2 } Days : 0 Hours : 0 Minutes : 0 Seconds : 29 Milliseconds : 588 Ticks : 295888677 TotalDays : 0.000342463746527778 TotalHours : 0.00821912991666667 TotalMinutes : 0.493147795 TotalSeconds : 29.5888677 TotalMilliseconds : 29588.8677 PS C:\> Measure-Command { Remove-Item -Recurse -Force .\tmp2 } Days : 0 Hours : 0 Minutes : 0 Seconds : 13 Milliseconds : 944 Ticks : 139448539 TotalDays : 0.000161398771990741 TotalHours : 0.00387357052777778 TotalMinutes : 0.232414231666667 TotalSeconds : 13.9448539 TotalMilliseconds : 13944.8539

Dus, meten is weten!

Test eerst de meest ideale instellingen voor jouw computer, en omdat de regenachtige zaterdagen er weer aankomen is het niet zo erg hier even mee bezig te zijn :-) .

NTFS MemoryUsage – FileSystem Memory Cache Size

Met de MemoryUsage-instelling kun je interne cachelevels van het NTFS-geheugen instellen. Standaard is dit 1, en door deze op 2 te zetten vergroot NTFS de geheugendrempels.

C:\Windows\System32>fsutil behavior query MemoryUsage MemoryUsage = 0 C:\Windows\System32>fsutil behavior set MemoryUsage 2

Heeft het vergroten van interne NTFS cachelevels in jouw specifieke situatie geen positief resultaat, dan zet je deze eenvoudig weer terug:

C:\Windows\System32>fsutil behavior set MemoryUsage 1

Waarschijnlijk haalt het vergroten van NTFS MemoryUsage niets uit lezen we bij Tweakhound.

DisableLastAccess

Sommige versies van Windows houden standaard bij wanneer een folder voor het laatst geopend is, en schrijft die tijdstempel weg in de eigenschappen (MftZone). Hoe minder Windows bijhoudt hoe sneller het is, dus schakel dit uit als je het niet nodig hebt. Let op: sommige back-upsoftware kan hiervan afhankelijk zijn.

Je kunt de huidige instelling opvragen met wederom fsutil:

fsutil behavior query DisableLastAccess

Het resultaat 1 betekent dat de instelling is enabled (ingeschakeld, dus Last Access Time disabled, dus goed). De waarde 0 staat voor disabled (instelling uitgeschakeld, dus Last Aceess Time enabled, fout).

Ook hiervoor is weer een herstart van de computer nodig.

Disable8dot3

Nieuwe Windows versies zoals Windows 7, Windows 8, Windows 8.1 en Windows 10 ondersteunen nog steeds de oude MS-DOS bestandsnaamgeving: 8dot3. Vroeger, in MS-DOS, waren bestandsnamen maximaal 8 karakters lang met een 3 karakter lange extensie: autoexec.bat of config.sys bijvoorbeeld. Als deze ondersteuning ingeschakeld is op jouw computer dan kun je 8dot3 uitschakelen. Microsoft zegt hierover:

The use of 8.3 file names and directories for all long file names and directories on NTFS partitions may decrease directory enumeration performance. An 8.3-compliant file name refers to MS-DOS file-naming conventions. These conventions restrict file names to eight characters and optional extensions to three characters.

Note: Although disabling 8.3 file name creation increases file performance under Windows, some applications (16-bit, 32-bit, or 64-bit) may not be able to find files and directories that have long file names.

Met fsutil behavior query disable8dot3 vraag je de huidige instelling op:

C:\>fsutil behavior query disable8dot3 The registry state is: 2 (Per volume setting - the default).

De verschillende instellingen zijn, als je géén volumenaam (C:, D:) opgeeft:

  • 0 – Enable 8dot3 name creation on all volumes on the system
  • 1 – Disable 8dot3 name creation on all volumes on the system
  • 2 – Set 8dot3 name creation on a per volume basis
  • 3 – Disable 8dot3 name creation on all volumes except the system volume

En als je wél een volumenaam opgeeft:

  • 0 – Enable 8dot3 name creation on this volume
  • 1 – Disable 8dot3 name creation on this volume

Je kunt dit in- en uitschakelen met:

fsutil behavior set disable8dot3 D: 1 fsutil behavior set disable8dot3 C: 0 fsutil behavior set disable8dot3 1

Bijvoorbeeld:

C:\windows\system32>fsutil behavior set disable8dot3 d: 1 Successfully disabled 8dot3name generation on d:

In mijn tests geeft dit geen snelheidswinst, maar misschien in jouw situatie wel.

SSD TRIM inschakelen en uitschakelen met fsutil

Wist je dat je met fsutil ook kunt verifiëren dat TRIM enabled is voor jouw SSD’s? Voer het volgende commando als beheerder uit: fsutil behavior query DisableDeleteNotify. Geeft dit een 0 als resultaat, dan is TRIM ingeschakeld. Een 1 betekent uitgeschakeld, en je switcht met fsutil behavior set DisableDeleteNotify 0 of 1.

TRIM zorgt ervoor dat het besturingssysteem zoekt naar gebieden op de SSD die niet meer gebruikt worden. Vervolgens krijgt de controller van de SSD opdracht om deze gebieden alvast te wissen, zodat er zonder vertraging weer op geschreven kan worden.

Conclusie NTFS optimaliseren

In dit artikel heb je ik je één commando laten zien waarmee je een relatief groot aantal wijzigingen in het NTFS bestandssysteem van Windows kunt maken: fsutil.

In verschillende versies van Windows gebruikt Microsoft helaas steeds andere standaardwaarden, en dat maakt het erg moeilijk een sluitende handleiding te maken. Veel is daarom afhankelijk van jouw eigen tests en inzicht.

En vergeet niet: een test is een momentopname en kan door verschillende factoren een 2e of 3e keer afwijken. Test je met het maken, kopiëren, verplaatsen of verwijderen van bestanden, doe dat een aantal keer (2, 3, 4, 5) en neem een gemiddelde van de tijdsduur. Dan heb je een redelijk idee of een andere instelling een verbetering geeft, of niet.

Hoeveel voordeel je ermee behaalt is afhankelijk van onder andere de Windows versie (Windows 7, 8, 8.1 of Windows 10), hoeveelheid geheugen, grootte en snelheid van je harde schijf en de gemiddelde bestandsgrootte.

Of deze wijzigingen écht iets uithalen laat ik in het midden, maar een gevoelsmatige verbetering is ook fijn. Misschien behaal je een beter resultaat met een andere blockgrootte, of cluster size, tijdens het formatteren van je harde-schijf. Maar dat is mede afhankelijk van de gemiddelde bestandsgrootte op jouw computer.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *