Conversion ext3 -> ext4

Ce tutoriel se déstine à présenter une méthode complète et facile d’accès à tout ceux qui souhaitent convertir leurs partitions ext3 en ext4. Si vous ne le comprenez pas, il est fort probable que ce soit parce que ce tutoriel ne vous est pas destiné.

Attention : certains utilisateurs ont remarqués que cette opération pouvait engendrer une fragmentation importante qui normalement se résorbe d’elle même avec le temps.

[size=150]Utilité de cette opération[/size]
Le passage d’ext4 est utile (voire nécessaire) lorsque :
[ul]
[li]vous atteignez les limites d’ext3 (taille de partition, taille de fichier, nombre de fichiers)[/li]
[li]vous avez des partitions un peu grosses et le fsck prends des plombes à s’effectuer[/li]
[li]vous utilisez un disque dur ssd, en désactivant le journal par exemple (thunk.org/tytso/blog/2009/02/22/ … -for-ssds/)[/li]
[li]si vous avez un gros besoin de performance de votre système de fichier (pour certaines bases de données par exemple)[/li]
[li]si vous êtes technophile[/li][/ul]

Vous verrez que ce tutoriel est construit de manière à vous prévenir des risques et essaie de vous expliquer où vous pouvez vous arrêter et quels seront les gains à chaque étape. Par contre je ne peux pas vous dire exactement à quelle étape vous arrêter en fonction de vos besoins, il faudrait pour cela avoir des connaissances bien plus poussées et je ne les possède pas.

[size=150]Prérequis[/size]
Pour utiliser ext4 vous avez besoin de deux choses :
[ul]
[li]grub2[/li]
[li]linux en version 2.6.28 ou supérieure[/li][/ul]

De plus pour suivre ce tutoriel vous devez :
[ul]
[li]Savoir ce qu’est un terminal ou une console.[/li]
[li]Savoir ce qu’est une partition (un système de fichier) et connaître le nom linux (de la forme /dev/sda1) des partitions que vous souhaitez modifier (par la suite nous considérerons /dev/sdr4, nous considérerons en outre qu’il sagit de la racine de votre Debian)[/li]
[li]Lire et comprendre toutes les mises en garde en rouge ![/li]
[li]Posséder une live cd (ou live usb) datant au moins de 2009 (ayant un noyau 2.6.28) et du bon système (64bits si vous êtes en 64bits) ou mieux un cd d’installation debian[/li][/ul]

Nous allons maintenant procéder à deux tests afin de vérifier que votre installation est à même d’utiliser ext4. Ces méthodes ne sont absolument pas risquées pour vos données. Elles ne modifient pas votre système de fichier.

Donc pour réaliser le premier test, éditez le fichier /etc/fstab et remplacez toutes les occurrences d’ext3 par ext4. Ça peut se faire ainsi :

Le fichier /etc/fstab.back sera créé en sauvegarde de l’ancien fichier.
Avant de redémarrer votre ordinateur je vous conseille de bien lire le paragraphe suivant (et même de l’écrire sur un petit bout de papier au cas où vous n’auriez plus d’ordinateur fonctionnel à la suite du redémarrage). Si tout ce passe bien vous pouvez effectuer la suite.

Votre système ne veut plus démarrer depuis que vous avez modifié /etc/fstab.
[ul][li]Démarrez votre ordinateur sur un système live.[/li]
[li]Montez votre système de fichier racine

[li]Puis remplacez le fichier /mnt/etc/fstab par /mnt/etc/fstab.back

Première chose à faire, on va effectuer une vérification du système de fichier pour ça on va rédémarrer le système avec la commande :

Si tout se passe bien vous pouvez effectuer la suite. Au point où vous en êtes vous pouvez vous arrêter vous bénéficierez de l’augmentation de la taille maximale des fichiers d’ext4 ainsi que certaines optimisations du point de vue performance, mais vous ne bénéficierez pas de toutes les fonctionnalités d’ext4 notamment les textents qui permettent de diminuer la fragmentation.

Passons au second test, celui-ci permettra de tester si votre grub gère comme il se doit ext4. Pour cela ouvrez le fichier /etc/default/grub et trouvez la lignes qui commence par GRUB_CMDLINE_LINUX ajouter rootfstype=ext4 à sa valeur ainsi si vous aviez :

vous obtiendrais

Ensuite pour que la modification soit prise en compte tapez la commande :

Redémarrez si ça fonctionne vous êtes près pour lire la suite.

Si cela ne fonctionne pas
[ul][li]Effectuez un chroot du système (voir tout en bas du tutoriel)[/li]
[li]Puis remettez le fichier /etc/default/grub (accessible avec ce même chemin dans le terminal chrooté) comme il était en retirant rootfstype=ext4 de la ligne commençant par GRUB_CMDLINE_LINUX[/li]
[li]Ensuite il faut regénérer le fichier de configuration de grub avec la commande :update-grub2[/li][/ul]

Soyons bien clair, on parle ici de faire une modification de votre système de fichier, il n’est en rien garanti que vous ne perdrez pas vos données et votre installation. Ces modifications sont irréversibles et il n’existe pas de moyens de récupérer vos données en cas d’erreur. Avant d’effectuer la suite, je vous conseille donc de sauvegarder tout votre système (TODO liens vers les tutoriels du forum).

[size=150]Conversion[/size]
[ul]
[li]Démarrez sur votre linux live[/li]
[li]Vérifiez le nom de périphérique des partitions que vous souhaitez convertir (ici on parlera de /dev/sdr4). Vous pouvez par exemple les « monter » pour regarder les fichiers contenus.[/li]
[li]Les partitions à convertir doivent être démontées ![/li]
[li]Il suffit de taper ces deux commandes pour les convertir (évidement /dev/sdr4 est à remplacer par votre partition) :

tune2fs -O extents,uninit_bg,dir_index /dev/sdr4
fsck -pDf /dev/sdr4

La seconde commande est extrêmement importante ! Elle renvoie des erreurs (« One or more block group descriptor checksums are invalid » répondez “y” ) et c’est normal, c’est pour corriger ces erreurs que nous l’utilisons.[/li][/ul]
Vous voilà avec une partition en ext4 :slightly_smiling:

Vous pouvez aussi vous arrêter ici, vous avez un système ext4 totalement fonctionnel sauf que les extents ne seront pas utilisés pour les fichiers créés préalablement.

[size=150]Avoir extent pour tout les fichiers[/size]
La méthode précédente fonctionne mais les fichiers précédemment créé ne bénéficient pas du mécanisme d’extent d’ext4. Pour corriger ce petit problème voici la solution (on se place toujours dans un contexte de livecd) :
[ul][li]On monte les partitions mount /dev/sdr4 /mnt/disk[/li]
[li]Les commandes suivantes vont modifier tous les fichiers et tous les dossiers de la partition il est recommandé de commencer par les appliquer sur un petit nombre de fichier (en remplaçant /mnt/disk par un sous dossier de celui-ci), puis de vérifier que les fichiers en question restent accessibles et inchangés. On lance la commande suivante :

find /mnt/disk -xdev -type f -exec chattr +e \{\} \; find /mnt/disk -xdev -type d -exec chattr +e \{\} \;[/li][/ul]

Chroot pour les nuls : (merci à Alfafa)
Munissez vous d’un CD debian netinstall ou buisnesscard de votre architecture.
Au boot :
[ul]
[li]Advanced option >[/li]
[li]Rescue mode[/li]
[li]Sélectionner la langue, votre situation géographique, la disposition du clavier[/li]
[li]Donner un nom au système (on s’en fou, on s’en servira pas ! )[/li]
[li]Entrez le nom de domaine ( inutile si internet via box )[/li]
[li]Choisir la partition à monter comme système de fichier racine[/li]
[li]Exécuter un shell dans /dev/sdXX[/li]
[li]Continuer[/li][/ul]
Vous êtes dans la matrice du chroot !
Exit pour quitter. Aucune connaissance utile en chroot !

Pour toutes discussion vous pouvez aller sur le fil : Conversion ext3 -> ext4