Server 2012 R2 - como deletar um arquivo que está “aberto no sistema”?

3

Estou usando o Server 2012 R2 Datacenter Core. É um dos nossos hosts do Hyper-V. Eu gerencio a partir da minha estação de trabalho usando o gerenciador Hyper-V e manipulo arquivos através do compartilhamento admin.

Eu criei uma VM e copiei um VHDX na pasta Discos Rígidos. Em seguida, tentei iniciar a VM com esse VHDX, mas (já que é uma imagem antiga e solicitei uma senha de administrador que não tenho), decidi criar a partir do zero. Encerrei a VM, removi a unidade e tentei excluir o VHDX para criar um novo com o mesmo nome. Eu recebo "A ação não pode ser concluída porque o arquivo está aberto no sistema". Isso vem acontecendo há várias horas. Inicialmente suspeitei de nossa solução antivírus, mas não pode demorar tanto para examinar um arquivo de 17GB (eu acho).

Agora, isso já aconteceu em sistemas Win7 e há uma infinidade de métodos para forçar a exclusão de um arquivo. Neste caso, porém, não posso simplesmente ir ao host e inicializá-lo offline ou instalar o SuperKillerFileDeleterUltraGuaranteedBox.

Então, como eu me livre disso?

P.S. Eu também percebo que eu poderia apenas nomear o novo VHDX outra coisa - ele não tem para ser o mesmo que o nome da VM. Mas isso é apenas um insulto, e de qualquer maneira eu não posso simplesmente deixar um arquivo de 17GB sem uso no servidor para sempre.

    
por Lucas B 19.02.2016 / 19:01

3 respostas

2

Sim, eu me deparei com isso. É muito provável que o Hyper-V esteja segurando o arquivo. Você provavelmente precisará interromper o serviço de Gerenciamento de Máquina Virtual do Hyper-V para excluir o VHD. Ou isso ou reinicie o host do Hyper-V. Como alternativa, você pode verificar se há um processo de trabalhador de máquina virtual que corresponda à VM excluída. Se houver, você pode matar o que deve permitir que você exclua o VHD.

Você pode executar isso no Powershell para ver se há um ID de processo "GUID" que corresponde a um processo de trabalhador de máquina virtual (encontrado clicando com o botão direito no processo de operador de máquina virtual no Gerenciador de tarefas, selecionando "Ir para detalhes" e procurando no nome de usuário "GUID"). Se você encontrar um processo correspondente para a VM excluída, elimine esse processo e exclua o VHD.

Get-WmiObject -Namespace root\virtualization -class msvm_computersystem | select elementname, operationalstatus, processid, name| ft -auto
    
por 19.02.2016 / 19:21
1

Bem, isso é super embaraçoso para o meu primeiro post no serverfault ... Aparentemente, foi o meu System que tinha uma alça no arquivo. Eu reiniciei minha máquina local e voila foi capaz de excluir o arquivo. Não acredito que não tentei isso primeiro.

    
por 19.02.2016 / 19:29
0

Encontrei isso em outro lugar (não é meu próprio trabalho, comente em techienateafs em spiceworks ) e funcionou para mim. Eu intermitentemente bati isso após a montagem e, em seguida, desmontar um disco virtual (via PowerHell Mount-WindowsImage e Dismount-WindowsImage) devido à falha de desmontagem.

"Consegui resolver o problema abrindo diskmgmt.msc no servidor host. O disco foi listado lá, clique com o botão direito e escolha desanexar. Ele solicita a confirmação de que você tem o arquivo correto. Nesse ponto, o explorador de processos confirma que o arquivo não está mais aberto pelo pid 4 (nt kernel & system) e eu consigo trabalhar livremente com o arquivo .vhdx. "

    
por 28.01.2017 / 01:20