A montagem libvirt / 9p / kvm no fstab falha ao montar no momento da inicialização


17

Estou tentando montar uma pasta compartilhada usando qemu-kvm / 9p e ela falhará se eu a adicionar ao arquivo fstab. Na inicialização, recebo um erro dizendo que o dispositivo não pode ser montado, mas, após a inicialização, se eu executar "mount -a", o dispositivo será montado.

linha fstab:

src_mnt /src 9p trans=virtio 0 0

No dmesg eu posso ver:

[    7.606258] 9p: Could not find request transport: virtio

E algumas linhas depois, vejo as entradas "virtio-pci". No entanto, não sei como adiar a montagem até que esse dispositivo esteja disponível.

Respostas:


24

Não sei se é a solução ideal, mas em um convidado do Ubuntu 12.04 eu consegui trabalhar adicionando os módulos 9p ao initramfs.

Adicionado ao / etc / initramfs-tools / modules:

9p
9pnet
9pnet_virtio

Então:

sudo update-initramfs -u

Obrigado - acho razoável dizer que esta é a idealsolução. O problema é que o módulo não está montado durante a montagem do sistema de arquivos; sua solução é adicioná-lo à lista de módulos carregados no momento da montagem.
Greg

Por que isso é ideal?
Lindhe

4

No Ubuntu 14.04, apenas o 9pnet_virtiomódulo precisa de pré-carregamento conforme a resposta do bhassel .

O dmesg algumas linhas antes da citado mostra que as outras duas já estão carregadas, mas não conseguem encontrar o transporte necessário.

[ 1.370611] 9pnet: Installing 9P2000 support 
[ 1.376384] 9p: Installing v9fs 9p2000 file system support 
[ 1.376754] 9pnet: Could not find request transport: virtio 

Testado com o convidado Ubuntu 14.04 no qemu / KVM no openSUSE 13.2.


Olá Tim, e bem-vindo ao site. Lembre-se de que a ordem das respostas pode mudar tanto pelo voto da comunidade quanto pelas preferências do usuário; portanto, tente sempre ser explícito sobre a qual resposta você está se referindo. Corrigi isso agora no seu post; faça você mesmo no futuro. Obrigado!
um CVn

Isso funciona no ubuntu 16.04 também.
Stalet 11/08/16

Isso também funciona no Ubuntu 18.04
jackkamm 27/10

1

O problema aqui é como o virtio mount é configurado no host. Existem duas maneiras de corrigir esse problema.

Solução 1: use mapeado em vez de transporte

<filesystem type='mount' accessmode='mapped'>
  <source dir='/src_dir'/>
  <target dir='src'/>
</filesystem>

Isso funciona, mas todos os arquivos pertencem ao usuário que a libvirt está executando como. Isso não funciona bem para sistemas de arquivos tmp ou log.

Solução 2: execute libvirt como root e use a passagem

vi /etc/libvirt/qemu.conf

Em seguida, remova o comentário ou adicione:

user=root
group=root

Reinicialize o host ou reinicie todos os processos libvirt e qemu / kvm e use a passagem:

<filesystem type='mount' accessmode='passthrough'>
  <source dir='/src_dir'/>
  <target dir='src'/>
</filesystem>

Embora possa haver algumas implicações de segurança para o host, isso torna o uid: gid dos arquivos no host o mesmo que no convidado, o que funciona bem para sistemas de arquivos de log e tmp. Isso é o que eu faço nessa situação.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.