En parlant baie de disques avec un client, je me suis souvenu de quelques tips pour optimiser les performances que j’avais lu dans un vieux SQL Server Magazine. L’idée de ce petit post est de vous en livrer un (oui, je sais je pourrais faire un article complet mais là, j’ai la flemme).
Nous allons donc parler Disk Sector Alignment, ou en français, alignement des secteurs du disque. Avant de commencer, on va faire une révision rapide sur le vocabulaire associé aux disques :
- Plateaux : un disque dur est composé de plusieurs plateaux empilés sur un axe (spindle)
- Pistes (tracks) : ce sont les cercles concentriques qui composent un plateau
- Secteur (sector) : chaque piste est divisée en secteurs (entre 60 et 120 en fonction du formattage de bas niveau et du fabricant). Les secteurs contiennent les données, en général 512 octets
- Bloc (ou cluster) : c’est l’unité d’allocation minimum qui correspond à plusieurs secteurs (ex: des blocs de 4ko entrainent une allocation minimum de 8 secteurs). C’est définit au formatage de haut niveau (par Windows)
Le problème d’alignement vient du fait que, dans un système NTFS, le MBR utilise 63 secteurs. Or si vos pistes font 64 secteurs, il y a un décalage d’un secteur. Ceci va impliquer 2 opérations physiques pour écrire/lire un bloc de données quand on tombe en bout de piste, puisque la tête va devoir changer de piste.
Pour palier ce problème, on peut préciser à Windows de décaler une partition pour la faire démarrer en début d’une piste et ainsi être alignée pour les opérations d’IO. Pour ce faire, on doit utiliser un utilitaire qui s’appelle DISKPART.EXE. On le trouve sous Vista et avec Windows 2003.
A noter que Windows 2008 décale automatiquement et correctement les partitions pour pallier le problème.
Décalez bien…