Main menu:

Site search

Categories

juin 2011
L M M J V S D
 12345
6789101112
13141516171819
20212223242526
27282930  

Archive

Convertir une partition ext3 en ext4

Cet article est en quelque sorte une suite du précédent. Après avoir tenté de rendre la vérification du système de fichier au boot moins invasive, je me tourne vers une autre possibilité, signalée par plusieurs. Il se pourrait que la vérification d’une partition ext4 prenne infiniment moins de temps que la vérification d’une partition ext3. Mais, mon problème est que ma partition /home qui est la plus grande est en ext3, pas en ext4. Il faut dire que cela fait longtemps que je la traîne derrière moi, la gardant inchangée d’une version à l’autre d’Ubuntu.
J’ai donc cherché un moyen de convertir ma partition en ext4 sans devoir la reformater. Comme le format ext3 est très proche du format ext4, la conversion est possible assez facilement et est très bien décrite sur le wiki du site kernel.org.

Avant de faire la conversion, il est bon de faire une sauvegarde de vos données. Le risque est faible mais on ne sait jamais. De même, la conversion ne peut se faire sur une partition montée. Il faut donc la démonter préalablement ou, comme je l’ai fait moi, utiliser un LiveCD.
Lancez votre LiveCD et ouvrez un terminal. Tapez cette première commande qui à l’aide de l’utilitaire tune2fs va ajouter un certain nombre de paramètres à votre système de fichiers. Je vous renvoie à la page de manuel de tune2fs pour les détails. C’est cette commande qui va convertir votre partition ext3 en ext4. La partition que je veux convertir est ma partition /home et est située sur /dev/sda6:

$ sudo tune2fs -O extents,uninit_bg,dir_index /dev/sda6

A la fin de la conversion, tune2fs va vous conseiller de faire une vérification du système de fichiers et vous verrez qu’effectivement, il y a des choses à corriger. Pour lancer la correction, tapez la commande suivante:

$ sudo e2fsck -fDC0 /dev/sda6

A ce moment, votre partition a été correctement convertie en ext4. Pour que cette partition soit correctement montée au boot, il faut aussi modifier le fichier /etc/fstab. Mais pour modifier ce fichier, il faut au préalable monter la partition quelque part pour y avoir accès. Je rappelle que nous sommes dans une session LiveCD. Ma partition racine (/) se trouve sur /dev/sda2:

$ sudo mount /dev/sda2 /mnt
$ gksudo gedit /mnt/etc/fstab

Touvez la ligne correspondant à la partition que vous avez convertie, dans mon cas, il s’agit de /home sur /dev/sda6 et changez le type de format ext3 par ext4. Juste un caractère à modifier! Sauvegardez le fichier.

Votre partition est convertie mais tous les fichiers contenus dans cette partition n’ont pas encore les paramètres supplémentaires offerts par ext4. Ils ne les auront que lorsque vous chargerez ces fichiers et que vous les sauvegarderez sous le nouveau format. Cela risque de laisser dans la partition beaucoup de dossiers et fichiers encore au format ext3.
Il est néanmoins possible de les convertir tous en leurs donnant les bons attributs.
Toujours au moyen du LiveCD et dans un terminal, on va commencer par démonter la partition racine pour monter à sa place la partition /home:

$ sudo umount /dev/sda2
$ sudo mount /dev/sda6 /mnt

Maintenant, au moyen de la commande find, on va parcourir tous les fichiers et répertoires et donner à chaque fichier et répertoire l’attribut extents ( voir la commande tune2fs ci-dessus) au moyen de la commande chattr:

$ sudo find /mnt -xdev -type d -exec chattr +e \{\} \;
$ sudo find /mnt -xdev -type f -exec chattr +e \{\} \;

Ces commandes prennent un peu de temps dépendant du nombre de fichiers et répertoires présent sur la partition.
Lorsque la deuxième commande s’achève, votre PC est près à être rebooté normalement. Une fois rebooté, ouvrez un terminal et lancez la commande:

$ df -T

Si tout c’est bien passé, la commande devrait afficher ext4 pour la partition que vous avez convertie.

Remarque: Si vous utilisez les commandes données dans cet article, n’oubliez pas de les adapter à vos besoins c’est à dire de veiller à utiliser les bons périphériques. Les partitions /home ou / ne correspondent pas nécessairement à /dev/sda6 et /dev/sda2 comme chez moi. Au besoin, avant de taper les commandes vérifiez avec la commande df pour connaître le pérphérique correspondant à la partition que vous voulez convertir.

Update: La vérification des disques qui se fait automatiquement tous les 30 redémarrages d’Ubuntu, ne prend plus que 2 minutes alors qu’en ext3, elle prenait +/- 6 minutes. C’est tout de même 3 fois moins long.