Il problema
Impossibile eseguire lvresize, lvextend o lvcreate su volumi logici e l'errore seguente viene ricevuto dopo l'esecuzione di qualsiasi comando LVM:
device-mapper: resume ioctl on (major:minor) failed: Invalid argument Unable to resume vgname-lvname (major:minor) Failed to activate new LV
La soluzione
L'errore precedente viene attivato se è stata eseguita una configurazione errata con LVM. Questo problema è causato da PSize (Dimensione fisica) è impostato su un valore maggiore di DevSize (dimensioni del dispositivo). Può essere verificato dall'output del comando seguente:
# 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
Qui puoi notare che PSize è impostato su 10G ma la dimensione effettiva del dispositivo è solo 5G e quindi PSize dovrebbe essere inferiore o uguale a DevSize. Inoltre puoi vedere le modifiche apportate dando un'occhiata ai file di archivio lvm.
# cd /etc/lvm/archive # less testvg1_00000-320386444.vg description = "Created *before* executing 'pvresize --setphysicalvolumesize 10G /dev/xvdc'"
Sopra, la dimensione del volume fisico per il file di archivio è impostata su 10G, il che ha provocato il danneggiamento o il blocco della funzionalità LVM.
Piano d'azione
NOTA :Poiché hai intenzione di ridurre le dimensioni, quindi per favore prima di tutto fai il backup completo per evitare di perdere i tuoi dati nel peggiore dei casi poiché è un metodo molto rischioso e inoltre hai impostato il tuo /root sullo stesso volgroup.
1. Ripristina tutte le modifiche apportate ai volumi logici e ripristina le dimensioni originali.
2. Quindi usa pvresize -v /dev/xxxxx/xxxxx, in base alla tua convenzione di denominazione.
3. Ora controlla l'output pvs -v e assicurati che PVSize e DEVSize corrispondano.
4. Infine esegui lvresize, dovrebbe funzionare.
Se vuoi aumentare la dimensione del volume fisico, crea prima una nuova partizione, quindi inizializza con pvcreate e aggiungi questa partizione al volgroup esistente con vgextend e avvia la normale procedura per lv extend.
Esempio
Di seguito è riportato un esempio del piano d'azione di cui sopra:
1. Ripristinare le modifiche apportate su LV e assicurarsi che LVSize rientri nel 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. Ora utilizzerà 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. Verifica tramite comando 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
Ora è possibile vedere che PSize è uguale a DevSize.
4. Ora esegui qualsiasi altra normale operazione con il tuo LVM.