Une fois n’est pas coutume, voici une histoire qui m’est réellement arrivée !
J’ai entrepris de migrer d’une offre de serveur dédié à une autre, dont la seule différence était la présence d’un disque de plus grande capacité. Le reste du matériel étant identique, la solution la plus simple pour moi était de faire une copie bit à bit du disque par le réseau, d’un serveur à l’autre.
L’opération s’est déroulée sans encombre. Le matériel étant identique, les services également, il n’y avait aucune raison évidente de rencontrer des performances différentes. Et pourtant, les performances étaient moindres : la charge était plus élevée sur un disque de plus grande capacité. C’est assez inhabituel !
Après quelques jours de monitoring, la raison paraissait évidente : les accès disques étaient plus longs ! Mais bizarrement, des tests classiques de lectures ne montraient pourtant pas de problème particulier : les débits étaient corrects. Après quelques semaines de recherche sur la cause de ses lenteurs, j’ai réussi à trouver la cause : les partitions étaient désalignées.
Il est possible de vérifier l’alignement de partition en utilisant la fonction align-check de l’utilitaire de partitionnement parted.
Un disque dur est composé de secteurs de 512 octets, ou pour les disques plus récents de secteurs de 4 Ko, le secteur étant la plus petite unité qu’un disque sache lire.
Lors de la création de partition, il est fortement conseillé de démarrer toutes les partitions sur des secteurs physiques entiers. En effet, le système d’exploitation donnera des ordres de lecture d’au moins la taille d’un secteur (inutile de demander une taille moins importante, le disque devra de toute façon lire un secteur complet pour vérifier l’intégrité des données).
Si la partition ne commence pas sur un secteur entier, le système d’exploitation va donner ordre de lire un secteur logique, mais celui-ci se trouvera réparti sur deux secteurs physiques. De ce fait, les performances seront réduites, car chaque lecture ou écriture, même de blocs contigus, devra lire ou écrire deux secteurs en début et en fin de bloc (sauf si le bloc est d’une taille inférieure à deux secteurs).
La seule solution pour améliorer les performances est de réaligner les partitions sur des secteurs entiers, afin qu’un secteur logique corresponde à un secteur physique.
Comment réaligner des partitions ?
J’ai envisagé plusieurs solutions pour réaligner les partitions de mon serveur : la première, c’est de réinstaller le serveur et la deuxième était de réaligner les partitions sur le système existant.
Mon choix s’est porté sur la deuxième solution. Il restait à pouvoir trouver une manière de la mettre en œuvre. Un des logiciels sous Linux capable de déplacer des partitions et leur contenu est GParted. Malheureusement, il n’existe qu’une version graphique et nécessite un serveur X pour fonctionner : pas facile à mettre en œuvre sur un serveur … La deuxième contrainte pour cette opération est de devoir effectuer cette opération sur un système de secours car il est impossible de modifier les partitions d’un système en cours d’utilisation !
Solution n°1 : le serveur X sur le PC en local
La première solution que j’ai envisagée, était d’afficher l’interface de GParted sur mon PC en local, via l’accès SSH et l’export d’affichage X. Comme l’opération dure plusieurs heures, j’ai envisagé la possibilité que l’accès SSH puisse se couper et j’ai fait le test. Si l’accès SSH se coupe, ou si le serveur X se coupe, GParted est également stoppé net et toutes les opérations en cours également. Cette solution était très hasardeuse, je l’ai donc écartée !
Solution n°2 : Utiliser tightvncserver sur le serveur
La deuxième solution qui m’est venue à l’esprit, fût d’installer un serveur VNC sur le système de secours et d’exécuter GParted par l’intermédiaire de celui ci. Cette solution était viable : la perte de l’accès VNC au serveur n’arrête pas GParted et les opérations continuent tant que le serveur VNC reste démarré.
La mise en œuvre de la solution
La première étape, avant de toucher des partitions à bien sur été de sauvegarder l’ensemble des données.
Ensuite, le travail d’alignement à réellement commencé. GParted dispose d’un paramètre pour aligner automatiquement les partitions lors de leurs modifications, il suffit de sélectionner « MiB Alignement », puis de réduire chaque partition du minimum possible, pour que celle-ci soit automatiquement alignée.
Une fois les opérations crées, il reste à appliquer réellement les modifications sur le disque. Il faut prévoir quelques heures durant lesquelles il va falloir prendre son mal en patience et croiser les doigts !
Et voilà comment une machine passe d’un load average sur 15 minutes de 1.1 à 0.4 !







