站內搜尋

Saturday, April 26, 2025

[MAC] 快速解決新版 Mac SMB 連線 Windows DFS 同步延遲問題

在某些開發環境中,我們會使用多台 Windows Server 提供網頁服務,並透過 DFS(Distributed File System) 同步網站程式碼,讓三台主機擁有一致的檔案內容。


平時,網頁工程師只需使用 Mac 電腦透過 SMB 協定 連上其中一台 Server,就可以部署程式,DFS 會自動同步到其他 Server。這種模式在舊款 MacBook(例如 2013 年版)上運作良好,但在 新款 MacBook(例如 M1、M2、M3、M4) 上,卻可能遇到「檔案更新延遲生效」的問題:

🧨 問題現象

當工程師使用 Finder 或 Terminal 把 PHP 檔案部署到 Server(例如:新增一個 1.php),雖然三台主機的檔案系統中都已經有這個檔案:

  • 172.31.0.11(SMB 直接連線)
  • 172.31.0.12(透過 DFS 同步)
  • 172.31.0.13(透過 DFS 同步)

但只有直接連線的主機可以立刻正常顯示網頁,其他兩台會顯示 Not Found,大約 延遲 1 分鐘後 才正常顯示更新的內容。

這個問題可能與新版 macOS 預設使用較新版本的 SMB 協定(如 SMB 2 或 SMB 3)有關,導致 DFS 在某些情況下無法即時通知檔案變更。

✅ 解決方法:強制 SMB 使用舊版本協定(SMB 1)

只需修改 Mac 上的 SMB 設定,即可成功解決這個同步延遲問題。

步驟一:建立或編輯 SMB 設定檔

sudo vim /etc/nsmb.conf

如果此檔案不存在,會自動建立。

步驟二:加入以下設定內容

[default]
protocol_vers_map=1

這行設定代表強制使用 SMB 1.0 協定。

步驟三:使用 Finder 重新連線 SMB 網路磁碟

步驟四:確認目前連線使用的 SMB 協定版本

smbutil statshares -a

確認顯示為:

SMB_VERSION                   SMB_1

步驟五:再次進行程式維護測試

重新上傳或修改網站程式,這次你會發現:

  • 所有 Server(含 DFS 同步的主機)都能即時顯示網頁更新
  • 不再出現 Not Found 或延遲問題

🔚 小結

這個問題主要是因為新版 macOS 與 Windows Server + DFS 的互動機制在 SMB 2/3 中處理檔案通知的方式不同,導致 DFS 不會立刻更新快取。透過強制使用 SMB 1,可讓系統重新使用即時通知模式,避免更新延遲。

雖然 SMB 1 在安全性上不如新版本,但在封閉內網中(如公司內部開發環境),仍可作為暫時解法。

希望這篇文章能幫助同樣遇到這個問題的你少走冤枉路!

No comments:

Post a Comment