为什么 MacOS 客户端无法删除空文件夹?
适用于
- ONTAP 9
- CIFS
- MacOS 10.14
- MacOS 10.15
解答
从 SMBv2 开始,删除文件或文件夹时,会在该文件夹上设置一个所谓的 " 关闭时删除 " 。
随后关闭此文件夹时,它将从文件系统中删除。
在打开以进行删除时, MacOS CIFS 客户端需要对文件夹进行独占访问,其行为与 Windows 客户端不同。
此行为可能会导致共享违规,从而阻止客户端删除文件夹。
数据包跟踪示例:
18557 2020-01-30 15:46:09.003908 172.18.24.33 172.18.20.90 SMB2 Create Request File: ...\Folder1\TestFolder
18558 2020-01-30 15:46:09.004297 172.18.20.90 172.18.24.33 SMB2 Create Response File: ...\Folder1\TestFolder
44599 2020-01-30 15:46:24.759237 172.18.24.49 172.18.20.90 SMB2 Create Request File: ...\Folder1\TestFolder;SetInfo Request FILE_INFO/SMB2_FILE_DISPOSITION_INFO;Close Request
44600 2020-01-30 15:46:24.759696 172.18.20.90 172.18.24.49 SMB2 Create Response, Error: STATUS_SHARING_VIOLATION;SetInfo Response, Error: STATUS_SHARING_VIOLATION;Close Response, Error: STATUS_SHARING_VIOLATION
- 帧 18557 :客户端 A 打开文件进行读取访问,共享以进行读取,写入,删除。(此文件从此数据包跟踪中永远不会关闭。)
- 帧 44599 :客户端 B 打开文件以进行删除访问,共享 none (对文件的独占访问)
- 帧 44600 :客户端 B 收到 status_sharing_violation
其他信息
可能的解决方法是:
- 在同一共享上创建一个 " 待删除 " 文件夹
- 将空目录移动到 " 待删除 " 并为其指定唯一名称(例如,根据客户端的主机名和日期)
- 尝试删除空目录
- 如果删除有效,则一切正常
- 如果删除失败,您可以稍后进行清理
注意:步骤 2 中的唯一名称可确保将来在同一目录名称上重新命名成功。