Bonjour,
J'ai récemment dû tester la fonctionnalité "sparse file" de NTFS en dehors de SQL Server.
J'en profite donc pour noter ici un script tout simple qui permet de démontrer le bon fonctionnement et l'intérêt des sparse files.
Dans une fenêtre CMD avec les droits admin, dans le répertoire c:\work :
REM 1 Creation fichier test
REM 2 Activation flag sparse
REM 3 check flag sparse
REM 4 zero out the file.
|
Intéressons-nous aux propriétés du fichier entre l'étape 2 et 4 :
Pas de surprise, le fichier fait 9.53 MB théoriques, et 9.53 MB sur disque.
Mais après la dernière étape :
Et voilà : 9.53 MB théoriques mais seulement 576 kb sur disque ! C'est tout l'intérêt du sparse file.
Pourquoi ne voit-on l'effet qu'à l'étape 4 alors que le fichier est flaggé comme sparse en étape 3 ?
Eh bien le fichier a été créé à 9.53 MB comme fichier normal (non sparse). Lorsque je passe le fichier en mode sparse, Windows ne sait pas forcément qu'il est plein de vide, et rien ne change.
La dernière étape force la mise à zéro de 95% du fichier. Comme le fichier est sparse au moment de cette opération, NTFS "suit" la mise à zéro de larges plages du fichier et applique l'optimisation du sparse file qui consiste à ne pas allouer l'espace pour stocker ces zéros. D'ailleur l'optimisation ne porte que sur le range mis à zéro (les 95%). Les 576kb correspondent aux 5% restant qui sont pourtant eux aussi bien a zéro car FSUTIL crée un fichier plein de zéros. Si j'applique la mise à zéro de l'intégralité du range après activation du sparse flag, j'arrive à 4 KB d'utilisation effective du disque (je soupçonne la taille d'un cluster disque :) ).
Quelques pointeurs utiles :
NTFS : http://technet.microsoft.com/en-us/library/cc781134(v=WS.10).aspx
FSUTIL : http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/fsutil.mspx?mfr=...
Exemples d'interaction SQL Server / NTFS avec les fichiers sparse : http://blogs.msdn.com/b/jorgepc/archive/2010/11/25/what-are-sparse-files-and-why-should-i-care-...
HTH
Guillaume Fourrat
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.