LVM: copier 3 LV sur un nouveau VG

Bonjour,
mon système a été installé d’une façon loufoque:
Sur 2 SSD, je voulais 3 partitions sur LVM en miroir.
Le vendeur a créer 3 VG pour installer 3 LV, le tout «mirroré».

Je souhaite créer un nouveau VG unique et y copier mes 3 LV utilisés,
( pour remplacer ce système, le supprimer ultérieurement, autrement dit le muter)

pvcreate /dev/nvme0n1A
pvcreate /dev/nvme1n1A
vgcreate VG_A /dev/nvme0n1A /dev/nvme1n1A

La structure actuelle est la suivante:

/dev/nvme0n1p1                         476M    5,9M  470M   2% /boot/efi 
/dev/mapper/vg_mirror_root-lv_root      73G     24G   46G  34% /  
/dev/mapper/vg_mirror_local-lv_local    37G     23G   12G  67% /usr/local  
 /dev/mapper/vg_mirror_work-lv_work     930G    774G  156G  84% /home/work 

$sudo lvdisplay | egrep 'LV Path|LV Name|VG Name' affiche:

  LV Path                /dev/vg_mirror_work/lv_work
  LV Name                lv_work
  VG Name                vg_mirror_work

  LV Path                /dev/vg_mirror_local/lv_local
  LV Name                lv_local
  VG Name                vg_mirror_local

  LV Path                /dev/vg_mirror_root/lv_root
  LV Name                lv_root
  VG Name                vg_mirror_root

Existe-t-il une commande LVM pour réaliser ces copies (clone) des 3 LV sur ce nouveau VG?

merci pour votre intérêt

Il faut que tu créées les dans le VG qui te convient, tu y copie toutes les données.
Dans les deux VG ainsi copiés, tu supprimes les deux LV, puis les deux VG.
Ensuite tu ajoute dans le VG restant les deux PV.
Et enfin tu réajuste tes LV pour la bonne taille. Ayant ainsi le premier fait, tu peux ensuite faire tes LV mirrorés avec le deuxième disque.

Ceci dit je pense que tu aurais surement mieux fait de faire un RA2ID1 puis une installation LVM sur le RAID.

Et pour finir, les vendeurs sont rarement compétents. Ne les laisses pas faire quelque chose que finalement tu pourrais faire tout seul.

Merci Zargos,

il y a (au moins) 2 choses que je ne comprends pas:

il faut que tu créées les LV dans le VG qui te convient ?
ou
il faut que tu créées les PV dans le VG qui te convient ?

et ensuite:

Quant à utiliser Raid avant d’installer LVM, outre que c’est trop tard,
il y a longtemps – Altzeimer n’avait pas encore entrouvert la porte – j’avais fait ainsi.

Plus récemment, il me semble avoir lu ici la recommandation contraire: LVM plus simple, plus souple et utilisant les mêmes fonctions du noyau Linux, d’où ce choix.

oui c’est ca, désolé pour le nom manquant.
Mais en fait en regardant de plus près les PV, autant tout refaire en fait. Car c’est très mal fait.
Il faut effectivement une partition pour /boot/efi.
Faire du LVM miroir n’a de sens que si tu fait un cluster.
Dans ton cas c’est plutot un RAID qu’il te faut et dans ce cas il vaut mieux tout reinstaller

Merci Zargos,
aujourd’hui ça dépasse mes moyens (l’âge, la santé…), pas de 2e ordi pour consulter les infos ou vous demander de l’aide.
D’accord pour dire que c’est très mal fait.

Une autre solution serait peut-être d’annuler le miroir et de tout refaire sur le 2e SDD: (y réinstaller Bookworm ?)
uefi, VG unique, 3 LV attendus,
puis:
y copier/clôner l’existant (/ , /home/work et /usr/local) sur les 3 LV neufs, et uefi )

Ensuite «faire ce qu’il faut» pour booter sur ce 2e SDD

et si tout est bon, effacer le 1er SDD et l’utiliser de nouveau comme miroir (avec la partition uefi).

Je crois qu’il est préférable d’avoir aussi une petite partition séparée pour un fichier de log (peut-être aussi «mirorable»).

refaire une installation revient au mme pour tout refaire.
Si tu veux du miroir tu dois passer par un RAID.
Il est possible de faire un RAID manuellement sur un disque en lui signifiant que le second membre du RAID est absent. Sur celui-ci tu peux ensuite faire une nouvelle installation propre.
Pour tes logs, il faut faire un epartitioin lvm correspodnate.
Personnellement j’utilise le partitionement suivant:
/boot/efi (hors LVM)
swap
/boot
/
/home
/var
/var/log
/var/log/audit
/var/tmp
/tmp

La séparation des différentes partition est due aux options (no)exec, (no)suid et (no)dev en particulier pour les /tmp /var/tmp; mais aussi pour séparer les logs du reste du système pour éviter un remplissage bloquant, idem pour le /home.

une fois créé sur un disque, il te suffit ensuite de créer le deuxième membre du raid et de l’ajouter au RAID et la duplication se fera toute seule. cependant, j’attire ton attention sur la partition/boot/efi.
En effet, dans l’initram, celui-ci utiliserta une partition via son UUID, ce qui fait que si la partition de départ est cassée, tu ne pourra plus booter sur l’EFI.
Je ne sais plus comment j’ai pu faire sur une autre machine qui tourne avec un RAID1.
Ceci devrait t’aider:
https://std.rocks/fr/gnulinux_mdadm_uefi.html

Même mal fichu, c’est tout de même ce qui se passe actuellement, c’est donc possible.
Il me semble que quelqu’un ici m’avait convaincu.

Votre aide m’est précieuse, je vais donc étudier aussi attentivement que possible votre proposition (pas en fin de journée :wink: )

encore grand merci

1 J'aime

LVM peut faire du RAID en interne.
Peux-tu montrer la sortie complète de lvdisplay et lsblk pour qu’on comprenne ce qui a été fait ?

Bonjour,
merci Palcalhambourg,

  $sudo lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg_mirror_work/lv_work
  LV Name                lv_work
  VG Name                vg_mirror_work
  LV UUID                OF8FxE-NXFr-kR3R-hfzc-jiy8-DOcW-ALe1yw
  LV Write Access        read/write
  LV Creation host, time ubuntu, 2023-11-03 18:28:47 +0100
  LV Status              available
  # open                 1
  LV Size                930,00 GiB
  Current LE             238080
  Mirrored volumes       2
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:9
   
  --- Logical volume ---
  LV Path                /dev/vg_mirror_local/lv_local
  LV Name                lv_local
  VG Name                vg_mirror_local
  LV UUID                REfF8W-xnrb-CCXH-j3lU-WJy1-38JU-aM62w9
  LV Write Access        read/write
  LV Creation host, time ubuntu, 2023-11-03 18:26:44 +0100
  LV Status              available
  # open                 1
  LV Size                37,00 GiB
  Current LE             9472
  Mirrored volumes       2
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:14
   
  --- Logical volume ---
  LV Path                /dev/vg_mirror_root/lv_root
  LV Name                lv_root
  VG Name                vg_mirror_root
  LV UUID                GjBtXM-p7HZ-xoD7-hhh1-aBLe-gieW-4Fb84Y
  LV Write Access        read/write
  LV Creation host, time ubuntu, 2023-11-03 18:26:06 +0100
  LV Status              available
  # open                 1
  LV Size                74,00 GiB
  Current LE             18944
  Mirrored volumes       2
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:11


$lsblk
NAME                                  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
nvme1n1                               259:0    0   3,6T  0 disk 
├─nvme1n1p1                           259:2    0  74,5G  0 part 
│ ├─vg_mirror_root-lv_root_rmeta_1    254:6    0     4M  0 lvm  
│ │ └─vg_mirror_root-lv_root          254:11   0    74G  0 lvm  /
│ └─vg_mirror_root-lv_root_rimage_1   254:8    0    74G  0 lvm  
│   └─vg_mirror_root-lv_root          254:11   0    74G  0 lvm  /
├─nvme1n1p2                           259:3    0  37,3G  0 part 
│ ├─vg_mirror_local-lv_local_rmeta_1  254:12   0     4M  0 lvm  
│ │ └─vg_mirror_local-lv_local        254:14   0    37G  0 lvm  /usr/local
│ └─vg_mirror_local-lv_local_rimage_1 254:13   0    37G  0 lvm  
│   └─vg_mirror_local-lv_local        254:14   0    37G  0 lvm  /usr/local
└─nvme1n1p3                           259:4    0 931,3G  0 part 
  ├─vg_mirror_work-lv_work_rmeta_1    254:3    0     4M  0 lvm  
  │ └─vg_mirror_work-lv_work          254:9    0   930G  0 lvm  /home/work
  └─vg_mirror_work-lv_work_rimage_1   254:5    0   930G  0 lvm  
    └─vg_mirror_work-lv_work          254:9    0   930G  0 lvm  /home/work
nvme0n1                               259:1    0   3,6T  0 disk 
├─nvme0n1p1                           259:5    0   476M  0 part /boot/efi
├─nvme0n1p2                           259:6    0  74,5G  0 part 
│ ├─vg_mirror_root-lv_root_rmeta_0    254:1    0     4M  0 lvm  
│ │ └─vg_mirror_root-lv_root          254:11   0    74G  0 lvm  /
│ └─vg_mirror_root-lv_root_rimage_0   254:4    0    74G  0 lvm  
│   └─vg_mirror_root-lv_root          254:11   0    74G  0 lvm  /
├─nvme0n1p3                           259:7    0  37,3G  0 part 
│ ├─vg_mirror_local-lv_local_rmeta_0  254:7    0     4M  0 lvm  
│ │ └─vg_mirror_local-lv_local        254:14   0    37G  0 lvm  /usr/local
│ └─vg_mirror_local-lv_local_rimage_0 254:10   0    37G  0 lvm  
│   └─vg_mirror_local-lv_local        254:14   0    37G  0 lvm  /usr/local
└─nvme0n1p4                           259:8    0 931,3G  0 part 
  ├─vg_mirror_work-lv_work_rmeta_0    254:0    0     4M  0 lvm  
  │ └─vg_mirror_work-lv_work          254:9    0   930G  0 lvm  /home/work
  └─vg_mirror_work-lv_work_rimage_0   254:2    0   930G  0 lvm  
    └─vg_mirror_work-lv_work          254:9    0   930G  0 lvm  /home/work

On voit des traces d’Ubuntu, que le vendeur installe habituellement.
Manifestement, il n’était pas au fait de LVM et de son intérêt, et n’en a compris que la fonction miroir qui n’est finalement que du raid, géré autrement (si j’ai bien compris), avec des commandes intégrées à l’ensemble des possibilités de LVM.

Je ne connais pas de commande LVM pour cloner/déplacer un LV d’un VG à un autre. Par contre il est possible de fusionner les 3 VG avec la commande vgmerge. Je pense que ce serait l’option la plus simple.

Note : les LV sont en miroir mais il n’y a qu’une seule partition EFI donc il n’y a pas de redondance pour l’amorçage en cas de défaillance du SSD qui porte l’unique partition EFI.

Merci PascalHambourg,

je pense comme vous tous concernant un 2e UEFI.

Je n’ai pas trouvé d’explications suffisamment précises (en français) pour vgmerge, qui me semblerait en effet la solution la plus dans l’esprit de LVM.

(1) Je suppose que vgmerge peut «simplement» ajouter les 2 VG désactivés et démontés portant /home/work et /usr/local au VG nécessairement actif portant la racine / (c’est le sens commun que je donne à «fusion» en français, mais les métaphores informatiques ne collent pas nécessairement — et même, pas souvent — à l’idée que s’en fait le béotien* que je suis.)

(2) Sinon, peut-être faut-il d’abord agrandir le VG portant la racine afin qu’il «accueille» le contenu des 2 autres VG avec vmerge ?

Je n’ai pas trouvé la démarche précise (mais je ne suis anglophone qu’à moins de 1%, et deepl ne traduit que ce que je lui donne).

Enfin, après avoir supprimé le miroir (2e SDD), comment créer le 2e UEFI: en réinstallant un bookworm minimal ou par un autre moyen ?

(3) Une autre solution, plus radicale:
Je suppose qu’en supprimant le miroir sur le 2e SDD et en installant entièrement un 2e bookworm sur ce 2e SDD, je pourrais refaire l’installation plus proprement, avec un 2e UEFI sur ce même SDD et un VG unique. Pour y copier ensuite /home/work et /usr/local sur les 2 PV.
Je suppose que pour le PV racine, il faudra faire plus qu’une simple copy?

—————

  • Pour le jeune lecteur égaré ici: béotien = plouc :wink:

Oui. Le VG portant la racine n’a pas besoin d’être actif si on exécute vgmerge depuis un système live, et on peut alors fusionner les VG dans n’importe lequel des trois. Cependant les fusionner dans le VG portant la racine a l’avantage de ne pas devoir réinstaller ni reconfigurer le chargeur d’amorçage.

Non puisque le VG destination récupère les PV des VG sources. L’allocation des LV dans les PV ne change pas, ce sont seulement les PV sources qui changent de VG.

Pourquoi parles-tu de supprimer le miroir ? Ne veux-tu pas conserver les 3 LV en miroir ? (je te cite : « Sur 2 SSD, je voulais 3 partitions sur LVM en miroir. »)
Et quel rapport avec la seconde partition EFI (qui est indépendante de LVM) ?

Pour mettre en place une seconde partition EFI, il faut la créer, la formater, la monter et y installer GRUB avec les options qui vont bien. L’inconvénient est qu’actuellement seule la partition EFI montée sur /boot/efi est prise en compte lors de la mis à jour des paquets grub, il faudra donc réinstaller GRUB sur l’autre manuellement. Les bricolages à base de RAID1 0.90 ou 1.0 suggérés ici ou là pour synchroniser les deux partitions EFI sont à éviter.

Pas compris.

1 J'aime

Merci beaucoup Pascal Hambourg, vmerge avec vos explications, sans désactiver le miroir semble effectivement d’une grande facilité, dans l’esprit de LVM qui m’avait séduit.

encore merci

PS pour l’ UEFI

parce que je n’étais pas sur que vmerge fonctionne avec cette configuration. Je suis sans doute trop craintif (mais, parfois trop négligent ou téméraire, ça explique! :wink: )