2023年5月7日 星期日

samba & error 0x80070032

 這個問題是, 在當 windows copy 檔案到 samba server 的共享目錄時會發生的問題. 以微軟的文件我猜測就是數據重覆刪除的問題:

https://learn.microsoft.com/zh-cn/troubleshoot/windows-server/backup-and-storage/request-not-supported-smb-data-deduplication

但這並不完全是 samba 的問題. 0x80070032 這問題困擾我很久, 原本以為是 samba 的鍋, 因為 nfs 沒這問題, 但別人的 windoz pc 你不可能每臺都強迫裝 nfs client, 而且更別提現在 windoz 端 nfs client 僅只有支援 nfs v2 v3 沒有支援到 v4, 所以 unicode 的支援上會有相當程度的問題.

appuals 上的文章是我目前看過對這問題追的最徹底的, 他提了很多解法, 但請注意這些解法通常只針對 windows 對 windows 檔案共享出問題, 我的問題是 samba, 然後 samba 其實很少人碰到這問題, 碰到也不知道怎麼解, 最少你拿這些關鍵字去 google 九成九都是廢話, 或丟在那沒人回的問題.

我的問題發生的來源很簡單, 我把 tmpfs 開給 samba 分享出去, tmpfs 本身不支援 (因為不需要支援) data deduplication, 所以丟回給 samba 說我不支援, samba 再丟會給 windoz client, windoz 對用戶說遇到 0x80070032 的錯誤.

如果你掛的是其它的檔案系統像 ext4, xfs, samba 就不會有這問題, appuals 的文章最後最後一段有略略提到這件事: "If the issue persists on a server, then check if installing the Deduplication server role and configuring it solves the problem.", 但 server 端可能的問題太多, 也不一定就是檔案系統.

tmpfs 即便可以掛載那麼多奇奇怪怪的型態, 也並沒有那麼萬能.