macOS Finder 複製、重新命名檔案時出現問題-SMB/macOS 最佳設定是什麼?

我每天都在使用 macOS(15.6.x)搭配 TS-853A(QTS 5.2.6.3229),過去幾個月發現,當我用 macOS Finder 複製或重新命名檔案時,這些操作要嘛無法完全執行,要嘛檔案會變成「鎖定」狀態,導致無法再進行其他操作。很明顯,這是 macOS Finder 在嘗試寫入中繼資料時出現的問題,因為如果我從終端機視窗進行檔案複製,一切都很正常。

我已經來回嘗試過各種設定,例如停用 macOS 對網路分享寫入中繼資料,但問題依舊,現在有點想不出其他辦法了。

那麼,請問 QNAP 上 SMB 進階選項的建議設定是什麼?

除了像是停用在網路磁碟機上寫入 .DS_store 之外:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE

還有更新 /etc/config/smb.conf 的 global 區段,加入:

vfs objects = catia fruit streams_xattr
fruit:metadata = stream
fruit:resource = stream
fruit:locking = netatalk
fruit:encoding = native

但問題依然存在。希望能得到一些建議,因為這真的開始讓人有點沮喪了。

我在多台 NAS 上使用多台 Mac,從未遇過你所提到的問題。我對 .DS_Store 不做任何處理,這是 macOS 的一個惱人特性,但我選擇忽略它。誰在乎呢。

聽起來這更像是權限問題,而不是其他原因。你確定你的 NAS 用戶在 NAS 上有讀寫(R/W)權限嗎?以下是我在主要 NAS 上使用的設定(注意:我啟用了 SMB v1,因為我的 Sonos 系統需要這個協定才能運作,而 NAS 是 Sonos 的伺服器)。

和我的設定差不多,所以基於這點,我對我的 Mac 進行了大量調整,甚至做了出廠重置,完成後問題就消失了。很明顯我在客戶端端做了太多調整。

我一直想解決的問題是,Mac 經常會自動卸載 smb 網路磁碟機,導致我必須點擊磁碟機才能重新啟用,有時甚至需要重新連接伺服器才能找回磁碟機。

我的問題其實是,怎麼讓 smb 網路磁碟機像在 Windows 系統上一樣持久掛載?我最近才從 Win 11 轉到 macOS v15.x,這是我唯一真正感到困擾的地方。

目前我唯一嘗試過、但沒什麼改善的,就是建立 /etc/nsmb.conf 檔案,內容如下:

[default]
signing_required=no
port=445
port445_only=yes
minauth=smb3
dead_time=60
reconnect=1
no_msdns=yes

但 smb 網路磁碟機還是會被卸載。你們是怎麼解決這個問題的?

這裡有一篇可能對你有幫助的文章。

1個讚

感謝 @NA9D 的文章,這在某種程度上也與我遇到的情況相似,包括它也提到了錯誤的參數,例如「veto files」,這其實是 SMB 伺服器端的參數,所以我意識到必須深入研究這個主題才能正確設定。

首先,檢查 macOS v15.x 實際支援哪些參數是很有意義的,讓我們從這裡開始,這也是我如何得出該使用哪些參數的結論。只需在終端視窗中複製並貼上下列內容,你會很快發現 Linux 系統上可用的東西,不一定在 macOS 上也一樣:

man page: nsmb.conf

根據上述內容,以下是我調整後的設定,至今在我這邊表現得更穩定:

[default]
# 增加逾時時間以防止過早斷線
max_resp_timeout=90

# 啟用多通道以提升備援能力,並限制通道數
mc_on=yes
mc_max_channels=3
mc_prefer_wired=yes

# 優化目錄快取以減少伺服器查詢
dir_cache_max=180
dir_cache_min=60
dir_cache_async_cnt=5

# 關閉子掛載以簡化連線
submounts_off=yes

# 限制僅使用 SMB 2.x 和 3.x 以確保現代且安全的連線
protocol_vers_map=6

# 關閉簽章以避免相容性問題
signing_required=no

# 使用軟掛載以防伺服器故障時系統卡住
soft=yes

有些參數其實 macOS 預設已啟用(如 mc_on 和 signing_required),我還是保留在設定檔中,純粹是為了自己確認,然後我也調整了一些已啟用的參數,讓 QNAP NAS 的運作更順暢。

另外,當設定 protocol_vers_map=6 時,會自動停用 SMB 1.x,因此不再需要我之前設定檔中用到的 netbios 相關參數。

此外,建議再搭配在終端視窗執行以下指令:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE