Eu tenho um servidor Windows 2008 R2 X64 em execução no VMware ESXi. Originalmente ele estava rodando no Hyper-V, mas desde então converti o VHD em um VMDK e migrei para o ESXi. Eu também instalei o VMware Tools. Este servidor é nosso servidor de integração contínua TeamCity, realizando compilações noturnas de pacotes de software que minha empresa desenvolve. Desde a mudança, ocasionalmente, certos arquivos que o processo de construção deveria excluir falham na exclusão devido a "O arquivo está em uso por outro processo". Estamos tentando excluir os arquivos usando o comando CMD del. Às vezes funciona, outras não. Acionei o monitor de processo com o caminho do diretório onde ocorrem as falhas como o filtro PATH (PATH contém C:\work ). Vejo MUITAS operações vmtoolsd.exe Createfile, FileSystemControl e CloseFile ocorrendo em rápida sucessão, repetidamente. Alguém já ouviu falar de ferramentas VMware que causam bloqueios de sistema de arquivos em convidados do Windows?
Ainda não consegui capturá-lo com o procmon quando realmente acontecer, mas pretendo tentar.
Além disso, devido à falta de espaço, este diretório C:\work foi recriado renomeando-o para C:\work-old, adicionando um segundo disco virtual E:\ e montando o disco no diretório C:\work , em seguida, copie o conteúdo de C:\work-old para o recém-montado C:\work. Vejo que o VMware Tools está constantemente executando FSCTL_Get_Reparse_Point em C:\work.
ATUALIZAR: Desativei o serviço de ferramentas VMware ontem à noite e isso ainda aconteceu. Acredito que o diretório C:\work, que é um compartilhamento que na verdade é a unidade E: montada como um diretório para C:\work está sendo acessado por 2 hosts remotos simultaneamente e talvez isso esteja causando um bloqueio no diretório pelo primeiro hospedar. Isso não acontecia antes de eu montar o E: no diretório de trabalho. Há algum problema conhecido com bloqueio de arquivos e volumes montados como diretórios?
Responder1
Acontece que o problema não foi causado pelo VMware Tools. É mais provável que o serviço Windows Application Experience tenha causado esse problema, mas não tenho certeza. Por fim, resolvi o problema adicionando um disco virtual e criando um novo compartilhamento e, em seguida, apontando a compilação para procurar esse compartilhamento. Se a etapa de construção deixar um identificador aberto para esse compartilhamento, isso não afetará a etapa subsequente que não se refere a esse compartilhamento novamente (anteriormente, tudo era feito no mesmo compartilhamento, portanto, se houvesse um identificador aberto, as operações de arquivo falhariam).