Table of Contents

# LVM <3 Il m'arrive encore de m'extasier sur des acquis de longue date. Aujourd'hui c'est LVM : c'est simple, solide, ça fonctionne, et ça rend bien service! Ma (modeste) configuration actuelle comporte : - `/dev/md0`: 2 disques de 1To en RAID 1 md logiciel - LVM avec cet array comme PV Je suis content sauf que pour le raid1, j'ai utilisé les disques en entier directement plutôt que 2 partitions. Les disques étant exactement de même taille et modèle, ça n'a jamais posé de souci. Mais cela risque d'en poser un le jour où je dois changer un des disques pour un autre dont la capacité exacte me sera inconnue. Lors de la création de la partition RAID, laisser une marge de 100M à la fin du disque évite d'avoir des soucis lorsqu'il faut changer un disque. J'ai donc décidé de reconstruire mon raid avec des partitions. En plus c'est vendredi! Et parce que sinon c'est pas drôle, je le fais sans disque supplémentaire, ni backup. J'aurais aussi bien pu titrer « How to lose all your data in one day! ». Bon tanpis, on se lance :) ## Le plan de bataille - casser le raid des disques A et B en enlevant un disque, disons B - ajouter B comme PV du VG - évacuer tous les physical extents (PE) de l'array (qui ne contient plus que A) sur B (durée: ~3h) - supprimer l'array des PVs - désassembler l'array - formatter A comme il faut - recréer l'array avec la partition de A - mettre l'array (qui n'a que A pour l'instant) dans le VG - évacuer tous les physical extents de B vers l'array (durée: ~3h) - supprimer B des PVs - formatter B comme il faut - ajouter la partition de B dans l'array (durée sync: ~3h) On est pas bien là ? Aucun souci, aucun risque! :P J'ai complété après-coup en ajoutant la durée pour certaines opérations longues. Cela dépend évidemment de la taille et des performances des disques mais ça peut donner une idée. ## Leçons apprises - bien wipe le début du disque qu'on retire du array car sinon LVM se plaint d'avoir des PV dupliqués trouvés. - **RTFM** bien vérifier les options entre `sfdisk` et `sgdisk`. Ex: `sfdisk -d` c'est pour dump, `sgdisk -d` c'est pour `--delete`. C'est complétement contre-intuitif, mais tout le monde regarde le man avant de faire quelque chose d'idiot non ? ## All in! ::::bash mdadm --fail /dev/md0 /dev/sda mdadm --remove /dev/md0 /dev/sda mdadm --zero-superblock /dev/sda pvcreate /dev/sda vgextend vg0 /dev/sda pvmove /dev/md0 #start: 11:05 finish: 14:15 ~3h vgreduce vg0 /dev/md0 mdadm --stop /dev/md0 mdadm --remove /dev/md0 mdadm --zero-superblock /dev/sdb gdisk /dev/sdb # partition type FD00 hex code partprobe mdadm --create --verbose --level=1 --metadata=1.2 --raid-devices=2 /dev/md0 /dev/sdb1 missing mdadm --detail --scan >> /etc/mdadm.conf mdadm --assemble --scan pvcreate /dev/md0 vgextend vg0 /dev/md0 pvmove /dev/sda vgreduce vg0 /dev/sda sgdisk /dev/sdb -R /dev/sda sgdisk -G /dev/sda partprobe mdadm --add /dev/md0 /dev/sda1 grub-mkconfig grub-install /dev/sda # Conclusion Je suis content d'avoir bien noté et décrit toutes les étapes (dans le détail, important) avant de me lancer. Ça permet de valider que c'est faisable, de faire ressortir les incohérences aussi. Et puis c'est bien de ne pas perdre trop de temps lorsqu'on est sur une seule patte à utiliser les disques à fond. En pratique, je n'ai eu **AUCUN** souci, bonne surprise! Quelques petites choses ont été ajoutées/modifées a posteriori, et elles sont toutes (les deux) dans "Leçons apprises". # Liens -