Usar o virt-manager para compartilhar arquivos entre o host Linux e o convidado Windows?

26

É possível usar a opção de hardware virtual "Transferência do sistema de arquivos" dentro do virt-manager para compartilhar uma pasta no meu host Linux com o meu convidado do Windows? Encontrei alguns tutoriais sobre como fazer isso com um convidado Linux, mas ao tentar fazer isso com meu convidado Windows, recebo a seguinte mensagem de erro ao tentar iniciar a VM:

Error starting domain: Unable to read from monitor: Connection reset by peer

Traceback (most recent call last):   File "/usr/share/virt-manager/virtManager/asyncjob.py", line 100, in cb_wrapper
    callback(asyncjob, *args, **kwargs)   File "/usr/share/virt-manager/virtManager/asyncjob.py", line 122, in tmpcb
    callback(*args, **kwargs)   File "/usr/share/virt-manager/virtManager/domain.py", line 1210, in startup
    self._backend.create()   File "/usr/lib64/python2.7/site-packages/libvirt.py", line 698, in create
    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: Unable to read from monitor: Connection reset by peer

Tentei procurar alguma documentação, mas tudo o que pude encontrar foi a página oficial com links para as perguntas frequentes e "algumas capturas de tela" .

Blaker
fonte

Respostas:

16

Não acredito que isso seja possível usando os hóspedes do Windows. Normalmente, configuro um servidor Samba no host KVM do Linux e, em seguida, compartilho uma pasta usando isso para meus convidados do KVM.

Passagem do sistema de arquivos

A documentação sobre o compartilhamento do diretório de um host KVM com os convidados KVM (Linux) está disponível aqui no site do virt-manager. A página tem o título: Exemplo de compartilhamento de arquivos do host com o convidado .

Configurando o Samba

O site linux-kvm também contém instruções para configurar o Samba. Essa documentação está disponível aqui, intitulada: Dica: Como você pode compartilhar arquivos no seu host Linux com um convidado do Windows usando o Samba .

slm
fonte
polegar para a parte "configuração do samba". É a abordagem mais segura
pqnet
@pqnet: você poderia qualificar como e por que é mais seguro?
0xC0000022L 15/01
4
@ 0xC0000022L porque não depende do virtualizador poder enganar efetivamente o sistema operacional convidado, que pode quebrar se o sistema operacional mudar. O samba é um protocolo de rede, portanto, o sistema operacional convidado tem menos expectativa sobre o que pode e o que não pode fazer.
Pqnet
6

Os gerenciadores de arquivos padrão do ambiente de área de trabalho do Gnome e KDE podem acessar facilmente os recursos compartilhados do Windows usando o protocolo SMB.
Você não precisa instalar um servidor samba na máquina host Linux porque o sistema operacional Windows já vem com protocolos de comunicação samba internos.

Vamos dizer que seu sistema operacional convidado é " Windows XP ", por exemplo, escolha a pasta que você deseja compartilhar ou simplesmente criar um para o efeito, por exemplo, "hostshare" e clique direito sobre ela -> " Propriedades " -> " partilha " Tab -> selecione: " Compartilhar esta pasta na rede " e " Permitir que o usuário da rede altere meus arquivos ".

Neste ponto, verifique se o firewall do Windows oferece acesso a arquivos e recursos da impressora compartilhados. Vá em " Menu Iniciar " -> " configurações " -> " Painel de Controle " -> " Firewall do Windows " -> " Exceções " Tab -> selecione: -> " Arquivo e compartilhamento de impressora ".

Verifique se a máquina host Linux pode ser vista na VM convidada do Windows através da rede. Portanto, na linha de comando do Windows, digite: " ping 10.0.0.12 ", em que neste caso (como exemplo) "10.0.0.12" é o endereço IP do host; você tem que mudar para o seu próprio país. Se você não tiver as respostas do eco, precisará solucionar o problema.
E faça o mesmo na linha de comando do Linux: " ping -c3 192.168.122.216 ", em que esses números (como exemplo) pertencem ao endereço virt-IP atribuído à VM convidada; você deve alterá-lo para o seu próprio país.

Na máquina host Linux, abra " Nautilus " e vá para " Arquivo " -> " Conectar ao servidor " -> Em " Endereço do servidor ", digite: " smb / 192.168.122.216 " -> " Conectar ".
A janela do Nautilus será aberta com os recursos navegáveis ​​do servidor Samba interno do Windows. Você poderá ver e acessar o conteúdo da pasta " hostshare " do Windows. Isso é tudo!

Andy
fonte
2

Acredito que o @slm forneceu a melhor resposta. No entanto, há outro caso de uso. Essa alternativa é um pouco difícil, no entanto.

Guia aproximado. Não considere estes comandos definitivos:

  1. crie um arquivo de imagem (disquete ms-dos ou CD ISO-9660)
  2. formate a imagem com um sistema de arquivos, por exemplo, mkfs.msdos
  3. copie e manipule arquivos na imagem conforme necessário, como com mcopy, et al
  4. montar imagem na unidade de CD-ROM ou disquete da VM do convidado

Não é o ideal, mas pode funcionar se sua VM Guest não permitir conexões de protocolo de rede entre dom0 e Guest (como durante uma sessão VPN fechada).

Mais informações aqui:

/programming//q/11202706/3407600

0xSheepdog
fonte
1

É possível um compartilhamento somente leitura (o convidado do Windows tem R / W e o host do Linux pode apenas ler), já que o host do Linux pode montar NTFS no dispositivo de loopback, suponha que você use armazenamento do tipo 'bruto' para o convidado do Windows:

Suponha que você tenha o Win.img como imagem bruta, ele é emulado como um disco.

  • Etapa 1: encontre o deslocamento do seu sistema de arquivos (já que é um disco) usando o fdisk:
$ fdisk -lu Win.img

Disk Win.img: 16.3 GB, 16252928000 bytes
255 heads, 63 sectors/track, 1975 cylinders, total 31744000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3a793a79

    Device Boot      Start         End      Blocks   Id  System
    Win.img   *          63    31712309    15856123+   7  HPFS/NTFS/exFAT

Agora, calcule o deslocamento = 63 x 512 = 32256

  • Etapa 2: monte
mount Win.img /mntpoint -o ro,loop,offset=32256

CUIDADO

Você pode montá-lo como RW e, portanto, o Linux pode gravar nele, mas seu sistema de arquivos estará corrompido! Porque o Linux e o Windows estão acessando o sistema de arquivos AO MESMO TEMPO! Eles podem alocar os mesmos blocos livres para gravar os arquivos que desejam gravar!

A leitura do Linux não é estável, em casos raros

Com esse método, o sistema de arquivos é seguro e, em geral, é bom ter uma leitura estável. No entanto, como eu disse, eles acessam o sistema de arquivos ao mesmo tempo e, portanto, quando o Windows tenta escrever algo, o Linux pode não ser informado e, portanto, lê algo corrompido. No entanto, se você usá-lo com cuidado, a leitura deve ser muito estável.

Robin Hsu
fonte
3
Quão confiável é isso? Os dados podem estar em caches. As gravações não serão atômicas em relação às leituras em outro sistema.
Ctrl-alt-delor
0

Eu uso o Dokany + Win-SSHFS para montar pastas remotas sobre ssh. Deixe-os para jogar o jogo de catch-up, e não o contrário < mal sorriso >

Arie Skliarouk
fonte
0

A solução de Andy funcionou para mim, host debian e convidado do windows. Note que eu tenho as ferramentas spice-guest-tools instaladas com um driver de rede especial da redhat.

Além disso, tive que remover a proteção por senha via smb Aqui, nesse link, descobri como remover a senha https://pureinfotech.com/setup-network-file-sharing-windows-10/

Thierry Vilmart
fonte