跳转到主内容

为什么 MacOS 客户端无法删除空文件夹?

Views:
13
Visibility:
Public
Votes:
0
Category:
ontap-9
Specialty:
cifs
Last Updated:

适用于

  • 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

其他信息

可能的解决方法是:

  1. 在同一共享上创建一个 " 待删除 " 文件夹
  2. 将空目录移动到 " 待删除 " 并为其指定唯一名称(例如,根据客户端的主机名和日期)
  3. 尝试删除空目录
  • 如果删除有效,则一切正常
  • 如果删除失败,您可以稍后进行清理

注意:步骤 2 中的唯一名称可确保将来在同一目录名称上重新命名成功。