Acessando dados em imagens HVM

De Xen-BR wiki

Existem duas ferramentas que podem ajudar muito no acesso de dados em imagens de disco de maquinas virtuais: lomount e kpartx. Lembre-se de nunca fazer isso enquanto a maquina virtual estiver ativa ou você poderá corromper o sistema de arquivos!

lomount

# lomount -t ext3 -diskimage /xen/images/fc5-file.img -partition 1 /mnt/boot

lomount trabalha somente com pequenas imagens de disco e não pode lidar com volumes LVM, portanto para casos mais complexos, é preferivel o uso do kpartx (disponível no pacote debian multipath-tools ou device-mapper-multipath para rpm):

kpartx

Para sistemas RPM:

# yum install device-mapper-multipath

Para sistemas baseados no Debian:

# apt-get install multipath-tools

Modo de uso:

# kpartx -av /dev/xen/guest1
add map guest1p1 : 0 208782 linear /dev/xen/guest1 63
add map guest1p2 : 0 16563015 linear /dev/xen/guest1 208845

Note que isso trabalha somente com dispositívos de bloco e não com imagens instaladas em arquivos regulares. Para usar imagens, você precisará configurar um dispositívo loopback para o arquivo:

# losetup -f
/dev/loop0
# losetup /dev/loop0 /xen/images/fc5-file.img
# kpartx -av /dev/loop0
add map loop0p1 : 0 208782 linear /dev/loop0 63
add map loop0p2 : 0 12370050 linear /dev/loop0 208845

Neste caso nós adicionamos uma imagem formatada com uma instalação padrão do Fedora, portanto terá duas partições: /boot e um volume LVM contendo todo o resto. Elas estão acessiveis no /dev/mapper:

# ls -l /dev/mapper/ | grep guest1
brw-rw---- 1 root disk 253,  6 Jun  6 10:32 xen-guest1
brw-rw---- 1 root disk 253, 14 Jun  6 11:13 guest1p1
brw-rw---- 1 root disk 253, 15 Jun  6 11:13 guest1p2
# mount /dev/mapper/guest1p1 /mnt/boot/

Para acessar os volumes LVM na segunda partição, será necessário fazer um rescan no LVM com "vgscan" e ativas o "volume group" na partição (chamada de "VolGroup00" por padrão) com "vgchange -ay":

# kpartx -a /dev/xen/guest1
# vgscan
   Reading all physical volumes.  This may take a while...
   Found volume group "VolGroup00" using metadata type lvm2
# vgchange -ay VolGroup00
   2 logical volume(s) in volume group "VolGroup00" now active
# lvs
   LV        VG         Attr   LSize   Origin Snap%  Move Log Copy%
   LogVol00  VolGroup00 -wi-a-   5.06G
   LogVol01  VolGroup00 -wi-a- 800.00M
# mount /dev/VolGroup00/LogVol00 /mnt/
...
# umount /mnt
# vgchange -an VolGroup00
# kpartx -d /dev/xen/guest1

Nota: Lembre-se sempre de desativas o volume lógico com "vgchange -an", remover as partições com "kpartx -d" e (se apropriado) deletar o dispositívo loopback com "losetup -d" após estar finalizado. Existem duas razões para isso: primeira de todas, o nome padrão do "volume group" para a instalação do Fedora é sempre a mesma (isso ocorre também com o Red Hat e com o CentOS), se você acabar ativando dois discos ao mesmo tempo acabará com dois volumes LVM separados com o mesmo nome. O LVM tratará disso da melhor maneira possível, mas você não poderá distinguir entre estes dois grupos na linha de comandos. Em segundo lugar, se você não desativar isso e se por acaso a maquina virtual for inicializada, você terá co LVM ativo na maquina virtual e no Dom0 ao mesmo tempo, isso levará o volume group ou o sistema de arquivos a corromper-se.

Referência: http://fedoraproject.org/wiki/FedoraXenQuickstartFC6