我有一台在 Vmware ESXi 上運行的 Windows 2008 R2 X64 伺服器。最初它在 Hyper-V 上運行,但後來我將 VHD 轉換為 VMDK 並遷移到 ESXi。我還安裝了VMware Tools。該伺服器是我們的 TeamCity 持續整合伺服器,用於執行我公司開發的軟體包的夜間建置。自移動以來,有時建置過程應刪除的某些檔案由於「該檔案正在被另一個進程使用」而無法刪除。我們正在嘗試使用 CMD del 命令刪除這些檔案。有時有效,有時則無效。我使用故障的目錄路徑作為 PATH 過濾器(PATH 包含 C:\work )來啟動進程監視器。我看到大量 vmtoolsd.exe Createfile、FileSystemControl 和 CloseFile 操作快速連續重複發生。有人聽過 Vmware 工具會導致 Windows 用戶端上的檔案系統鎖定嗎?
當它實際發生時我還無法用 procmon 捕獲它,但我打算嘗試一下。
此外,由於空間不足,該目錄C:\work 被重新創建,方法是將其重新命名為C:\work-old,添加第二個虛擬磁碟E:\,並將該磁碟掛載到目錄C: \work ,然後將 C:\work-old 的內容複製到新掛載的 C:\work 中。我看到 Vmware Tools 不斷在 C:\work 上執行 FSCTL_Get_Reparse_Point。
更新: 我昨晚禁用了VMware工具服務,但還是這樣。我相信 C:\work 目錄(實際上是作為目錄安裝到 C:\work 的 E: 驅動器的共享)正在被 2 個遠端主機同時訪問,也許這會導致第一個遠端主機鎖定該目錄主持人。在我將 E: 安裝到工作目錄之前,這種情況不會發生,文件鎖定和作為目錄安裝的捲是否存在任何已知問題?
答案1
事實證明,該問題不是由 VMware Tools 引起的。更有可能的是Windows應用程式體驗服務導致了這個問題,但我並不肯定。我最終通過添加虛擬磁碟並創建新共享,然後將構建指向該共享來解決了該問題。如果建置步驟為此共用留下一個開啟的句柄,則不會影響後續步驟,該步驟不會再次引用該共用(先前所有操作都是從相同共用完成的,因此如果存在開啟的句柄,檔案操作將失敗)。