LVM : Créer une partition mirror à partir d'une partition linéaire
Situation de départ : J'ai créé une partition linéaire sur LVM (c'est à dire sans configuration mirroir/RAID particulière), et je souhaite maintenant la transformer en mirror (ou RAID1), mais sans utiliser mdadm, juste en restant avec LVM.
Dans mon cas, il s'agissait de la partition /home.
J'ai mon disque de base /dev/sda qui contient mon root, et /dev/sdb qui contient /home. J'avais habilement pensé à créer une partition de type LVM dessus car je me doutais de devoir un jour la manipuler.
J'ai ajouté un disque dur (en l'occurrence une partition iscsi, mais ça n'a pas d'importance ici), /dev/sdc.
Initialisation du disque
Création d'une partition LVM
Comme il s'agit d'un disque de 5 To, j'ai du créer une table de partition GPT et pas MBR, car MBR se limite a des partition de 2 To maximum. On va donc utiliser l'utilitaire gdisk et non fdisk (ils s'utilisent pareil).
```bash`
root@linux:~# gdisk /dev/sdc
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help):
- Tapez **n** pour créer une nouvelle partition
- Choisissez le numéro de la partition (par défaut 1, c'est très bien)
- Choisissez le secteur de départ (laissez le minimum par défaut)
- Choisissez le dernier secteur (laissez par défaut pour utiliser le disque entier)
- Sélectionner le type **Linux LVM** en tappant **8e00** quand on vous demande le **Hex code**
- Tapez **w** pour écrire les changements
### Initialisation LVM
```bash
pvcreate /dev/sda
Extension du volume group existant
vgextend home_vg /dev/sdc1
Création du LVM mirror 1 (raid 1)
lvconvert -m1 home_vg/home /dev/sdc1
Done ! Vous pouvez vérifier l'avancement de la synchronisation des disques avec la commande :
root@linux:~# lvs -a -o name,copy_percent,devices home_vg
LV Cpy%Sync Devices
home 7.01 home_rimage_0(0),home_rimage_1(0)
[home_rimage_0] /dev/sdb1(0)
[home_rimage_1] /dev/sdc1(1)
[home_rmeta_0] /dev/sdb1(256000)
[home_rmeta_1] /dev/sdc1(0)
Ici, j'en suis a 7%.
Ca, c'est dans le cas où ca marche bien. Car moi, j'avais cette erreur lors du lvconvert:
1 extents needed, but only 0 available
0 available ? Mais je viens de rajouter un disque !
Oups !
En fouillant sur le net, il apparait que je manque d'espace pour créer des LE, donc impossible de créer un RAID 1. Il va falloir que je réduise un peu l'espace que prend le filesystem.
Comme dans mon cas, il s'agissait de /home, je n'arrivais pas à démonter la partition correctement pour pouvoir la resize. J'ai du donc utiliser un système de secours pour monter mon LVM et faire les modifs.
C'est parti.
Réduire la taille de la partition
Pour rendre aware votre systeme de secours (ou liveCD) des partition LVM, il faut déjà y installer lvm grâce à apt-get install lvm2
, puis taper vgchange -ay
.
La, on peut réduire la taille de la partition :
lvreduce --resizefs -L 1000G /dev/mapper/home_vg-home
Vous devez réduire un peu, mais je ne sais pas de combien. Perso j'ai pris 1G, j'ai pas mal de place. Cette commande va non seulement resize le système ext4, mais aussi le Logical Volume de LVM. Préférez cette méthode que de faire les deux séparément, car si la taille du filesystem est plus grande que celle du LV, votre partition ne se montera pas !
Une fois reduce, vous pourrez retenter le lvconvert.