Come montare la partizione LVM della macchina virtuale sull'host KVM?


11

Se sto provando a fare quanto segue sull'host KVM:

# kpartx -av /dev/VolGroup00/kvm101_img
add map kvm101_img1 : 0 208782 linear /dev/VolGroup00/kvm101_img 63
add map kvm101_img2 : 0 125612235 linear /dev/VolGroup00/kvm101_img 208845
# mount /dev/mapper/kvm101_img1 /mnt

allora sto ottenendo / avvio partizione montata. Ma sto ricevendo un errore se quindi digito quanto segue:

# mount /dev/mapper/kvm101_img2 /mnt
mount: you must specify the filesystem type

Ecco un layout fdisk sul computer guest:

# fdisk -l
Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1          13      104391   83  Linux
/dev/hda2              14        7832    62806117+  8e  Linux LVM

È possibile trovare una partizione di root sul guest e montarla sul sistema host?


Suppongo che il tuo riferimento a kvm101_img2 sia un refuso. Dovrebbe essere invece _img1, giusto?
joechip

_img1 si monta correttamente con il metodo sopra, ma _img1 è una partizione / boot, equivalente a / dev / hda1 sul guest. Il problema era che non riuscivo a montare _img2 contenente / dev / hda2 Linux LVM. Tale layout di partizione è predefinito per l'installazione di CentOS.
Evoluta il

Oh OK, sono stato buttato fuori dal riferimento a KVM. Non c'è niente di KVM specifico su questa domanda, quindi è semplicemente una struttura LVM all'interno di un'altra.
Joechip,

Risposte:


14

Sembra che alla fine ho capito come fare le cose di cui avevo bisogno. Ecco cosa ho fatto:

# kpartx -av /dev/VolGroup00/kvm101_img
# vgscan

se i nomi di VolGroup sono identici nei sistemi guest e host, devi rinominare VolGroup guest

# vgrename <uuid> VolGroupXX

tramite i VolGroups è possibile effettuare il check-in vgdisplay. Quindi, il trucco sta nell'attivare il VolGroup guest:

# lvscan
# vgchange -ay VolGroupXX
# lvscan

Dopo di che è facilmente montato:

# mount /dev/VolGroupXX/LogVol00 /mnt

Infine, il processo a ritroso è:

# umount /mnt
# vgchange -an VolGroupXX
# kpartx -dv /dev/VolGroup00/kvm101_img
# pvscan

L'ultimo comando pulisce la cache LVM e rimuove il volume fisico creato da kpartx da LVM.


Potrebbe essere necessario modificare fstab del guest per poter usare VolGroupXX anziché VolGroup00.
Joechip,

4

Sono contento che tu l'abbia capito per la tua situazione.

Nel caso più generale, l'unità guest potrebbe essere in una varietà di formati come qcow, qcow2, ecc., Quindi non saresti in grado di lavorarci direttamente. In questo caso, potresti usare qualcosa di simile sull'host:

# modprobe nbd
# kvm-nbd -c /dev/nbd0 file.qcow2

Quindi è possibile accedere a / dev / nbd0 come unità guest raw. Per interrompere l'utilizzo di questo dispositivo è necessario eseguire:

# nbd-client -d /dev/nbd0

Se, d'altra parte, l'unità guest fosse in formato raw, useresti losetup:

# losetup -f file.raw

Questo troverebbe e userebbe il primo dispositivo loop disponibile (es. / Dev / loop0). Per smettere di usarlo, esegui:

# losetup -d /dev/loop0

Dopodiché sarai in grado di eseguire la procedura kpartx / vgscan / lvscan / mount che descrivi nella tua risposta.


2

puoi farlo usando guestfish - http://libguestfs.org/guestfish.1.html


Grazie per il suggerimento, ma sfortunatamente non ho nemmeno potuto installare guestfish: ho passato ore a cercare e cercare su google - tutto inutile, non funziona :( Forse c'è un altro modo per montare la partizione Linux? Non ho bisogno di all-in uno strumento per montare tutto, solo LVM.
Evolver

1
prova a correre qemu-img info /path/to/image. se ciò che si ottiene nella casella Tipo non è "RAW", non è possibile che un sistema operativo possa montare questa immagine come partizione, poiché è formattata come disco virtuale specifico di qemu. Questo è ciò che affronta guestfish, non è solo un semplice strumento di montaggio
dyasny il

1

Potrebbe essere più semplice usare solo guestfishdal pacchetto libguestfs che dovrebbe elaborare tutti i dettagli fastidiosi per te invece di provare a farlo manualmente

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.