Acesso de leitura / gravação para sistemas de arquivos passthrough (9p) com libvirt / qemu?

14

Recentemente, comecei a experimentar o suporte para sistemas de arquivos de passagem em versões recentes do KVM / QEMU / libvirt. Disponibilizar os sistemas de arquivos para acesso de leitura "apenas funcionou", mas estou um pouco confuso sobre como o acesso de gravação deve funcionar. Depois de montar o sistema de arquivos no convidado:

# mount -t 9p -o trans=virtio /fs/data /mnt

Eu posso modificar um arquivo existente se ele tiver o modo o+w:

# cd /mnt/work
# ls -l foo
-rw-rw-rw-. 1 root root 17 Dec 20 11:16 foo
# cat foo
this is line one
# echo this is line two >> foo
# cat foo
this is line one
this is line two

Mas, independentemente das permissões de diretório, não consigo criar um novo arquivo ou diretório:

# ls -ld /mnt/work
drwxrwxrwx. 2 root root 4096 Dec 20 11:16 /mnt/work
# cd /mnt/work
# touch bar
touch: setting times of `bar': No such file or directory
# mkdir bar
# mkdir: cannot create directory `bar': Operation not permitted

A documentação que consegui encontrar (por exemplo, isso ) não aborda explicitamente esse problema. Espero que alguém aqui na Serverfault possa me ajudar a configurar um sistema de arquivos de passagem que me permita conceder acesso de gravação a um usuário no convidado a um sistema de arquivos host.

larsks
fonte
Tem certeza de que montou o sistema de arquivos para leitura / gravação? Você pode criar arquivos? Você está criando arquivos como usuário root ou comum (sim, eu vejo o seu #, mas você pode ter escrito isso manualmente)?
Janus Troelsen
Você conseguiu resolver isso? Estou tendo um problema semelhante de não conseguir gravar no caminho fs do host montado no convidado.
Shoan
Eu realmente nunca fiz nenhum progresso nisso. Era um tipo de aplicativo de nicho para mim ... Geralmente, não estou executando convidados do KVM em locais onde o acesso a um sistema de arquivos local seria útil. Comecei a executar o VirtualBox na minha área de trabalho, onde eu realmente quero esse recurso de tempos em tempos.
larsks
Você vê algum alerta do selinux no host físico ou no convidado?
C4f4t0r
Isso pode ajudar? linux-kvm.org/page/9p_virtio
Danila Ladner

Respostas:

4

Isso me parece um problema de permissão no host:

Por padrão, o processo qemu / kvm é iniciado como um usuário não privilegiado (libvirt-qemu no Debian Wheezy). Portanto, apenas os arquivos acessíveis (ou graváveis) por esse usuário são acessíveis (graváveis) pelos convidados da VM.

Você pode tentar definir a propriedade do diretório para o usuário qemu é executado como (consulte user = and group = em /etc/libvirt/qemu.conf)

Talvez isso ajude no seu caso?

matt_gnu
fonte
Eu tentei isso no meu caso, que é o mesmo que esta pergunta , mas não consigo fazê-lo funcionar, mesmo com o aparelho desligado.
Diagon
0

ao inicializar seu monitor qemu no shell, adicione "sudo" como prefixo. Fiz isso para resolver o problema de permissão ao criar arquivo ou pasta. meu ambiente é ubuntu16.04 + qemu-2.12.

ianwang
fonte