Você tentou usar a ferramenta kpartx
?
Use algo como: kpartx -av path_to_disk_image
. Ele criará entradas de loop para que você possa montar suas partições onde quiser. Pode parecer com: mount mount_point_path /dev/mapper/loopXpX
.
Além de um host virtual ainda executar o Xen / RHEL5, todo o nosso recurso virtual é hospedado em hosts KVM com dispositivos de armazenamento LVM. Eu estupidamente tentei uma atualização de versão completa do Ubuntu em um guest rodando na máquina Xen, apenas para instalar um kernel não-Xen e se recusar a inicializar (erro de rookie lá).
Chegando ao problema real, a máquina em questão usa um único dispositivo de armazenamento baseado em arquivo. Já faz um tempo desde que eu tive que abrir um desses, mas o processo não deve ser muito diferente de abrir um volume LVM, mas por alguma razão eu não estou vendo uma tabela de partição no arquivo do dispositivo.
root@vh1 web2.entrant # losetup -a
/dev/loop2: [0902]:34603012 (storage.img)
/dev/loop3: [0902]:32768005 (/srv/xen/domains/web2.entrant/disk.img)
root@vh1 web2.entrant # fdisk -l /dev/loop3
Disk /dev/loop3: 68.7 GB, 68719476736 bytes
255 heads, 63 sectors/track, 8354 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Disk /dev/loop3 doesn't contain a valid partition table
Inspecionar o arquivo de partição de outra máquina no mesmo host produz o mesmo problema (nenhuma tabela de partição válida), embora ela ainda inicie / corra bem, o que é estranho em si mesmo.
Editar: (Adicionando o kpartx)
root@vh1 ~ # kpartx -av /srv/xen/domains/web2.entrant/disk.img
root@vh1 ~ #
Nenhuma mensagem (como esperado) informando quais partições foram adicionadas
Edit: (Experimentando o guestfish, virt-rescue, etc)
[root@vh1 web2.entrant]# virt-rescue --rw --suggest -a /srv/web2.entrant/disk.img
Inspecting the virtual machine or disk image ...
This disk contains one or more filesystems, but we don't recognize any
operating system. You can use these mount commands in virt-rescue (at the
><rescue> prompt) to mount these filesystems.
# /dev/vda has type 'unknown'
e com o guestfish:
><fs> add-ro disk.img
><fs> run
><fs> list-filesystems
/dev/vda: unknown
><fs> lvs
><fs>
Suponho que estraguei completamente a tabela de partições, mas infelizmente não tenho uma cópia do layout das máquinas (visto que o outro convidado do qual foi copiado (embora inicializado) parece exibir a mesma tabela de partições vazia ao tentar o mesmo processo)
Você tentou usar a ferramenta kpartx
?
Use algo como: kpartx -av path_to_disk_image
. Ele criará entradas de loop para que você possa montar suas partições onde quiser. Pode parecer com: mount mount_point_path /dev/mapper/loopXpX
.
guestfish
será útil aqui.
Eu usei guestfish no passado para executar alguns modificações de lvm
Este documento cobre a modificação de arquivos individuais, como o grub.conf, fstab etc, montando o lvm vgs.
Assumindo que o kernel anterior ainda está disponível, talvez um caminho de recuperação seja editar seu grub.conf no guest para inicializar o antigo kernel XEN, e interativamente fazer reparações uma vez iniciado.
Você já tentou simplesmente montar a própria imagem do disco sem a tabela de partições? isto é montar -o loop /path/to/disk.img / mnt / testing
Parece que lembro que um convidado pode ser uma partição bruta.
Se você tiver o arquivo vm.cfg, também será útil.