Questão Compartilhamento de arquivos entre o Ubuntu VM e o Windows 7


Eu tenho o Ubuntu 12.04 em execução como Convidado em uma sessão virtualizada do VMware Workstation 9 em um host do Windows 7. A máquina Windows compartilha uma pasta com a máquina Ubuntu via CIFS e a máquina Ubuntu monta a pasta compartilhada automaticamente na inicialização graças a esta linha /etc/fstab Arquivo:

//<remotehost>/<sharename> <localsharepath> cifs soft,uid=1000,username=<remoteusername>,password=<remotepassword> 0 0

O compartilhamento de arquivos através da montagem funciona bem até que seja necessário retomar a máquina virtual do Ubuntu depois que ela foi pausada ou para restaurá-la a partir de uma captura instantânea. Isso geralmente acontece depois que a máquina host do Windows foi reiniciada ou iniciada após o desligamento noturno.

Depois que o Ubuntu for retomado, a pasta que contém a montagem da pasta compartilhada não listará nenhum item. A janela do Nautilus fica parada por um longo tempo completamente vazia com "Carregando ..." no canto inferior direito, apesar do fato de haver muitas outras pastas e arquivos nessa pasta para mostrar.

Reiniciar a máquina Ubuntu ajuda, mas não é prático: o Ubuntu demora uma eternidade para desligar, ele simplesmente fica pendurado em uma dessas telas finais de linha de comando, esperando desesperadamente por algo (quando a montagem é acessível, não existe esse problema). Por enquanto, a única opção é desligar o Ubuntu brutalmente e depois ligá-lo novamente para poder acessar a montagem, o que, é claro, também não é prático.

Meu palpite é que quando alguns parâmetros de comunicação do CIFS / Samba são alterados (depois que o Windows é reiniciado) a imagem restaurada da máquina virtual do Ubuntu de alguma forma não consegue acompanhar.

Mesmo com o VMware Tools instalado na máquina Ubuntu, o recurso de pasta compartilhada do VMware, que poderia servir como uma alternativa, não funciona para o Ubuntu 12 (e muitas outras distribuições do Linux). Mas, mesmo que existisse, o compartilhamento CIFS / Samba ainda seria necessário para o compartilhamento de arquivos com outras máquinas virtuais.


4


origem


Acredito que este é mais um problema relacionado ao software Virtual que você está usando e em qual host você está usando. Você pode adicionar o software de virtualização que está usando? - Luis Alvarado♦
Você já tentou remontar o compartilhamento? Gostar: umount <localsharepath>; mount -a. - Pavel A
@PavelA Sim. Ele continua dizendo "dispositivo está ocupado". - Desmond Hume
(1) Existe algum software daemon (dababase, etc) usando arquivos no compartilhamento? (2) Alguma mensagem de erro do syslog? - John Siu
@JohnSiu (1) Nenhum tal software daemon, nada está bloqueando nenhum dos arquivos no compartilhamento. (2) O único tipo de entrada do syslog que encontrei é CIFS VFS: Server <remotehost> has not responded in 300 seconds. Reconnecting.... Qualquer pessoa com acesso a um PC e com uma versão de avaliação do VMware Workstation pode facilmente replicar o problema. Não há necessidade de reiniciar o Windows para colocá-lo em um contexto realístico. Apenas reiniciar o serviço do Windows chamado "Servidor", que é responsável pelo compartilhamento de arquivos do Windows, enquanto o Ubuntu está em pausa fará o truque. - Desmond Hume


Respostas:


Eu recomendo usar autofs em vez de uma estática fstab entrada. Vejo: https://help.ubuntu.com/community/Autofs


2



Depois de vários testes, tenho que dizer que o problema não desaparece autofs. Sim, ele desmonta o compartilhamento automaticamente após um tempo específico e se a máquina do Ubuntu for pausada ou instantânea depois que o compartilhamento for desmontado automaticamente, tudo ficará bem com a montagem depois que a máquina Ubuntu for reiniciada. Mas se o Ubuntu for pausado antes que o compartilhamento seja desmontado automaticamente, ele entrará na mesma coleção de problemas ao ser retomado. E se eu definir o número de segundos de desmontagem automática para algum valor pequeno, digamos, 10 segundos, as janelas do Nautilus começam a fechar espontaneamente ao navegar pelos arquivos compartilhados. - Desmond Hume


1 umount -f

Esta não é uma solução nem uma solução, mas um procedimento (um incômodo).

Após a retomada da VM, não tente visualizar a unidade de compartilhamento com o Nautilus ou qualquer outro programa. Não faça ls para isso. Qualquer tipo de acesso acionará um tempo limite de 5 minutos e tornará o compartilhamento ocupado. Apenas faça o umount -f antes de qualquer coisa.

    umount -f <localsharepath>

-f Força a desmontagem (no caso de um servidor inacessível).

Contanto que o compartilhamento não esteja ocupado, isso desmontará o compartilhamento imediatamente sem acionar o tempo limite cifs de 5 minutos.

Isso definitivamente não é o ideal, mas não requer reinicialização e o compartilhamento pode ser montado novamente imediatamente.

2. Alterar smbfs para cifs com defaults

//<remotehost>/<sharename> <localsharepath> cifs defaults,uid=1000,username=<remoteusername>,password=<remotepassword> 0 0

É oficial que o smbfs não está sendo mantido mais

smbfs não foi mantido nos últimos anos. Em vez disso, o desenvolvimento foi focado em outra implementação do protocolo CIFS no kernel. Veja o CIFS VFS para mais informações.

Base no comentário de este blog (não consegue encontrar mais referência autoritativa)

sexta-feira, 9 de maio de 2008: Outra coisa interessante sobre o CIFS é que ele deve sobreviver a uma queda de rede ou até mesmo uma reinicialização do sistema no qual você está montando um compartilhamento.

3. Desabilitar o Bloqueio Oportunista e o Cache de Pesquisa (Nenhum efeito na redução do tempo limite de conexão de 5 minutos)

echo '0' > /proc/fs/cifs/OplockEnabled
echo '0' > /proc/fs/cifs/LookupCacheEnabled

4. Verifique o arquivo aberto (não aplicável base no comentário)

Após o reinício do Ubuntu VM, verifique se algum usuário / processo está usando qualquer arquivo / diretório na pasta compartilhada

lsof | grep '<localsharepath>'

Se qualquer usuário / processo estiver usando arquivos / diretório em <localsharepath>, você receberá device busy(Isto é, independentemente de como é montar, local ou remoto).


2



Mudou smbfs para cifs e reiniciei a máquina Ubuntu. Os problemas ainda persistem. Repetido várias vezes, sem melhora. - Desmond Hume
Você é capaz de desmontar o compartilhamento com cifs? - John Siu
Mesma coisa que com smbfs, diz "dispositivo está ocupado". - Desmond Hume
Esse ponto de montagem está sendo compartilhado pelo samba? Pare o samba antes de desmontar. - John Siu
Não, esse ponto de montagem é compartilhado apenas, não fora. A máquina Ubuntu nunca é um servidor de compartilhamento de arquivos, apenas um cliente. - Desmond Hume


Se você compartilhar arquivos entre o host e o convidado com freqüência, use o FTP ou o SFTP, ou até mesmo o software de controle de revisão, como o Git. Eles são mais estáveis ​​e úteis em comparação com essas coisas de montagem.

Caso contrário, instale o VMTools no Ubuntu convidado. Em seguida, você pode arrastar e soltar arquivos entre o host e o convidado.


0