Le problème
Impossible d'effectuer lvresize, lvextend ou lvcreate sur les volumes logiques et l'erreur ci-dessous est reçue après l'exécution d'une commande LVM :
device-mapper: resume ioctl on (major:minor) failed: Invalid argument Unable to resume vgname-lvname (major:minor) Failed to activate new LV
La solution
L'erreur ci-dessus se déclenche si une mauvaise configuration a été effectuée avec LVM. Ce problème est causé lorsque le PSize (Taille physique) est supérieur à DevSize (Taille de l'appareil). Cela peut être vérifié par la sortie de la commande ci-dessous :
# pvs -v Scanning for physical volume names PV VG Fmt Attr PSize PFree DevSize PV UUID /dev/xvdc testvg1 lvm2 a- 10.00G 5.00G 5.00G 2XEI4w-LmJi-iR3B-xXVU-XxK3-dfTf-WPZXF6
Ici, vous pouvez remarquer que le PSize est défini sur 10G mais que la taille réelle de l'appareil n'est que de 5G et que le PSize doit donc être inférieur ou égal à DevSize. Vous pouvez également voir les modifications apportées en consultant les fichiers d'archive lvm.
# cd /etc/lvm/archive # less testvg1_00000-320386444.vg description = "Created *before* executing 'pvresize --setphysicalvolumesize 10G /dev/xvdc'"
Ci-dessus, la taille du volume physique du fichier d'archive est définie sur 10 Go, ce qui a entraîné la corruption ou le verrouillage de la fonctionnalité LVM.
Plan d'action
REMARQUE :Comme vous allez réduire la taille, veuillez tout d'abord effectuer la sauvegarde complète pour éviter de perdre vos données dans le pire des cas car c'est une méthode très risquée et vous avez également configuré votre /root sur le même volgroup.
1. Annulez toutes les modifications apportées à vos volumes logiques et rétablissez leur taille d'origine.
2. Utilisez ensuite pvresize -v /dev/xxxxx/xxxxx — en fonction de votre convention de dénomination.
3. Vérifiez maintenant la sortie pvs -v et assurez-vous que PVSize et DEVSize correspondent.
4. Enfin lancez lvresize, ça devrait marcher.
Si vous souhaitez augmenter la taille du volume physique, créez d'abord une nouvelle partition, puis initialisez avec pvcreate et ajoutez cette partition au volgroup existant avec vgextend et démarrez la procédure normale pour lv extend.
Exemple
Vous trouverez ci-dessous un exemple du plan d'action ci-dessus :
1. Annulez les modifications apportées à LV et assurez-vous que LVSize respecte la limite Devsize.
# lvresize -L 4G /dev/testvg1/test_lv WARNING: Reducing active logical volume to 4.00 GB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce test_lv? [y/n]: y Reducing logical volume test_lv to 4.00 GB Logical volume test_lv successfully resized
2. Maintenant va utiliser pvresize -v /dev/xxxx/xxxx
# pvresize -v /dev/xvdc Using physical volume(s) on command line Archiving volume group "testvg1" metadata (seqno 9). Resizing physical volume /dev/xvdc from 2559 to 1279 extents. Resizing volume "/dev/xvdc" to 10485376 sectors. Updating physical volume "/dev/xvdc" Creating volume group backup "/etc/lvm/backup/testvg1" (seqno 10). Physical volume "/dev/xvdc" changed 1 physical volume(s) resized / 0 physical volume(s) not resized
3. Vérification par la commande pvs -v :
# pvs -v Scanning for physical volume names PV VG Fmt Attr PSize PFree DevSize PV UUID /dev/xvdc testvg1 lvm2 a- 5.00G 1020.00M 5.00G 2XEI4w-LmJi-iR3B-xXVU-XxK3-dfTf-WPZXF6
Il est maintenant possible de voir que PSize est égal à DevSize.
4. Veuillez maintenant effectuer toute autre opération normale avec votre LVM.