Como montar a partição LVM da máquina virtual no host KVM?

11

Se eu estiver tentando fazer o seguinte no 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

estou recebendo a partição / boot montada. Mas estou recebendo um erro se eu digitar o seguinte:

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

Aqui está um layout do fdisk na máquina convidada:

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

É possível encontrar uma partição raiz no guest e montá-la no sistema host?

    
por Evolver 05.07.2011 / 12:46

4 respostas

14

Parece que finalmente descobri como fazer as coisas de que precisava. Aqui está o que eu fiz:

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

se o VolGroup for um nome idêntico nos sistemas guest e host, você terá que renomear o VolGroup convidado

# vgrename <uuid> VolGroupXX

uuid de VolGroups você pode fazer check-in em vgdisplay . Então, o truque está em ativar o VolGroup convidado:

# lvscan
# vgchange -ay VolGroupXX
# lvscan

Depois disso, ele é facilmente montado:

# mount /dev/VolGroupXX/LogVol00 /mnt

Finalmente, o processo inverso é:

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

O último comando limpa o cache do LVM e remove o volume físico criado pelo kpartx do LVM.

    
por 05.07.2011 / 23:39
4

Fico feliz que você tenha entendido a situação.

No caso mais geral, o disco convidado pode estar em vários formatos, como qcow, qcow2 etc., para que você não possa trabalhar diretamente neles. Nesse caso, você pode usar algo como no host:

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

Em seguida, você pode acessar / dev / nbd0 como a unidade guest não processada. Para parar de usar este dispositivo, você deve executar:

# nbd-client -d /dev/nbd0

Se, por outro lado, a unidade do convidado estivesse em formato raw, você usaria o losetup:

# losetup -f file.raw

Isso localizaria e usaria o primeiro dispositivo de loop disponível (por exemplo, / dev / loop0). Para parar de usá-lo, execute:

# losetup -d /dev/loop0

Depois disso, você poderá executar o procedimento kpartx / vgscan / lvscan / mount que descreve em sua resposta.

    
por 06.07.2011 / 01:20
2

você pode usar o guestfish - link

    
por 05.07.2011 / 12:55
1

Pode ser mais fácil usar o guestfish do pacote libguestfs que deve resolver todos os detalhes irritantes para você, em vez de tentar faça manualmente

    
por 05.07.2011 / 12:56