Migrer ses partitions ext3 vers ext4 sous Linux Ubuntu
Un coup de boost sur vos disques ?
L'apparition d'un nouveau système de fichiers est un événement remarquable.
ext4 vient d'être promu stable et intégré au noyau Linux dans Ubuntu 9.04.
Il va donc remplacer le vénérable ext3 intégré au noyau Linux depuis 2001.
Quelles sont les nouveautés apportées par l'ext4 ? Comment migrer ses partitions ext3 vers l'ext4 ?
Ceinture, bretelle, parachute !
Cette opération est dangereuse pour vos données et votre système. Vous pouvez tout perdre.
Vous ne devez en aucun cas vous lancer dans cette opération sans disposer d'une sauvegarde complète de votre machine, sauvegarde dont vous aurez testée qu'elle peut être restaurée et que le résultat est conforme à la machine d'origine.
ext3 vs ext4
L'ext3 avait apporté la journalisation du système de fichiers, la possibilité de modifier la taille de la partition et la gestion de volumes de l'ordre du To (1000 Go), tout en restant compatible avec l'ext2.
Les améliorations théoriques apportées par ext4 ne semblent pas révolutionnaires : checksum de la journalisation, limite de la taille des volumes porté à l'Exabit (1 millions de To) et refonte de la gestion de l'allocation des espaces afin de minimiser la fragmentation.
Cependant, la migration de la partition de démarrage du format ext3 vers ext4 montre une augmentation des performances incontestable ; le temps de démarrage a été divisé par 2 et le fonctionnement du système est nettement plus vif sur le disque lent de mon laptop.
L'augmentation des performances des I/O me semble le changement le plus visible pour le commun des mortels.
Mais comment migrer ses partitions vers ext4 sans réinstaller son serveur Ubuntu ?
Identifier les partitions concernées
Le prérequis est que vous ayez upgradé votre système vers Ubuntu 9.04 afin de bénéficier du noyau Linux supérieur ou égal à 2.6.28. La description qui suit reste transposable aux autres distributions.
$ uname -r
2.6.28-11-generic
La commande df permet d'identifier les partitions en ext3 qui peuvent être migrées en ext4.
$ df -T
Sys. de fich. Type Tail. Occ. Disp. %Occ. Monté sur
/dev/sda3 ext3 15G 5,5G 8,5G 40% /
tmpfs tmpfs 497M 0 497M 0% /lib/init/rw
varrun tmpfs 497M 260K 496M 1% /var/run
varlock tmpfs 497M 0 497M 0% /var/lock
udev tmpfs 497M 164K 497M 1% /dev
tmpfs tmpfs 497M 76K 497M 1% /dev/shm
lrm tmpfs 497M 2,4M 494M 1% /lib/modules/2.6.28-11-generic/volatile
/dev/mapper/vg-lv_home
ext3 20G 17G 2,5G 87% /home
Dans cet exemple, les partitions migrables sont /dev/sda3, la partition boot, et /dev/vg/lv_home, la partition de données.
Déterminer l'espace disponible
L'utilisation d'un backup est fortement recommandé. D'une part, en cas de problème, vous pourrez restaurer l'état de la partition avant manipulation. D'autre part, pour bénéficier de toutes les optimisations des partitions ext4, il est indispensable de reformater les partitions.
Pour ce faire, vous pouvez utiliser un support externe ou une partition locale.
Pour rechercher l'espace disponible sur le disque interne, utilisez la commande parted.
$ sudo parted
GNU Parted 1.8.8
Utilisation de /dev/sda
Bienvenu dans GNU Parted ! Tapez "help" pour voir la liste des commandes.
(parted) print
Modèle: ATA ST380013AS (scsi)
Disque /dev/sda : 80,0GB
Taille des secteurs (logique/physique) : 512o/512o
Table de partitions : msdos
Numéro Début Fin Taille Type Système de fichiers Fanions
1 32,3kB 21,0GB 21,0GB primary ntfs démarrage
3 21,0GB 36,8GB 15,9GB primary ext3
4 36,8GB 78,2GB 41,3GB primary
2 78,2GB 80,0GB 1818MB extended lba
5 78,2GB 80,0GB 1818MB logical linux-swap
(parted) quit
Ici, le disque de 80Go est utilisé complètement. Il n'y a aucun espace libre entre le début et la fin de chaque partition.
Si vous avez utilisé lvm pour organiser vos partitions, il peut vous rester de l'espace libre dans vos Volume Group.
$ sudo vgdisplay
--- Volume group ---
VG Name vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 16
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 38,50 GB
PE Size 4,00 MB
Total PE 9856
Alloc PE / Size 9728 / 38,00 GB
Free PE / Size 128 / 512,00 MB
VG UUID g7mx49-PPMR-J3Ly-TIyN-PZLE-GXR3-kMpLw6
La ligne Free indique 512Mo libre. Pas suffisant pour faire un backup dans cet exemple. Il faudra donc passer soit par une sauvegarde sur un support externe, soit prendre le risque de vous passer de sauvegarde.
Dans la suite de ce billet, je vous présente les solutions en fonction qu'il vous reste ou non de l'espace pour faire ces sauvegardes.
Migrer vos données d'ext3 vers ext4 en reformatant
Il vous reste de la place pour faire un backup de vos contenus ?
Cette méthode est à privilégier pour profiter de 100% des améliorations apportées par l'ext4.
Le plan est de, partition par partition, créer un backup, reformater votre partition cible en ext4 et restaurer le backend sur celle-ci.
Supposons dans l'exemple que vous avez la capacité de créer une partition logique dans un volume group nommé vg.
$ sudo lvcreate -n lv_tmp -L 20G vg
$ sudo mkfs.ext4 /dev/vg/lv_tmp
$ sudo mount /dev/vg/lv_tmp /mnt
La partition de backup de 20Go est prête. Pour vous assurer que votre partition de données n'est pas utilisée durant cette opération, basculez en mode mono-user. Une partie des services vont s'arrêter dont X-Windows, et ce navigateur...
$ sudo init 1
Ensuite, commencez la sauvegarde.
$ sudo rsync -a /home/* /mnt
Patientez... et vérifez que vous retrouvez l'ensemble de vos données dans /mnt.
Remplacez le type de partition ext3 par ext4 dans le fichier /etc/fstab sur la ligne qui décrit le montage de /home
$ sudo vi /etc/fstab
Reformatez la partition de données.
$ sudo umount /home
$ sudo mkfs.ext4 /dev/vg/lv_home
$ sudo mount /home
$ sudo rsync -a /mnt/* /home
Patientez et purgez la partition temporaire.
$ sudo umount /dev/vg/lv_mnt
$ sudo mkfs.ext4 /dev/vg/lv_mnt
$ sudo mount /dev/vg/lv_mnt /mnt
Répétez l'opération pour chacune des partitions de données.
Puis supprimez cette partition :
$ sudo lvremove /dev/vg/lv_mnt
Migrer vos données vers ext4 sans reformater votre partition
Vous n'avez pas la place pour effectuer une sauvegarde ?
Il est toujours possible de basculer votre partition de donnée vers ext4, mais seuls les nouveaux fichiers vont bénéficier des avantages de ce nouveau système de fichiers. Votre partition va progressivement devenir de plus en plus rapide au fur et à mesure que les fichiers seront remplacés
$ sudo umount /home
$ sudo tune2fs -O extents,uninit_bg,dir_index /dev/vg/lv_home
$ sudo e2fsck -pf /dev/vg/lv_home
La dernière commande va corriger les descripteurs de groupe. Cette opération est longue. Patientez...
Remplacez le type de partition ext3 par ext4 dans le fichier /etc/fstab sur la ligne qui décrit le montage de /home
$ sudo vi /etc/fstab
Et remontez votre partition
$ sudo mount /home
Migration de la partition de boot
La migration de la partition boot nécessite un LiveCD 9.04, bien que cela puisse bien se passer sans, à vos risques et périls.
ext4 étant compatible avec ext3, vous allez modifier la définition de la partition de boot avant de modifier votre partition.
Editez le fichier de configuration de grub
$ sudo vi /boot/grub/menu.lst
recherchez la ligne kernel qui correspond au noyau que vous utilisez et ajoutez en fin de ligne suivante rootfstype=ext4, par exemple :
kernel /boot/vmlinuz-2.6.28-15-generic root=UUID=7951080c-298c-40a6-bdae-731fbca2e691 ro quiet splash rootfstype=ext4
Sauvegardez et mettez à jour grub :
$ sudo update-grub
Arrivé à cette étape, vous êtes dans la même situation que pour une partition de donnée.
Soit vous disposez d'un espace de sauvegarde, soit vous n'avez pas d'espace et vous ne pouvez qu'altérer les paramètres de la partition avec tune2fs.
Avant de commencer l'une de ces procédures, redémarrez votre serveur à partir d'un LiveCD. Ensuite, suivez l'une des procédures de migration de données pas-à-pas.
Terminez en redémarrant votre serveur.
- Ajouter un commentaire
- 2980 lectures
-

