排查 Azure 文件存储 中的 ClientOtherErrors 问题

本文列出了使用 SMB Azure 文件共享时可能会遇到的 ClientOtherErrors。 通常,ClientOtherErrors 大多是无害且预期的错误。 请求失败,但系统继续按预期运行。 正常情况下,记录了大量这些错误。

适用对象

文件共享类型 SMB Nfs
标准文件共享 (GPv2) 、LRS/ZRS
标准文件共享 (GPv2) 、GRS/GZRS
高级文件共享 (FileStorage) 、LRS/ZRS

什么是 ClientOtherErrors?

ClientOtherError 通常表示预期的客户端错误,例如“找不到”和“资源已存在”。在服务器端存储日志文件中,这些操作的事务状态为 ClientOtherErrors 进行记录。

例如,与远程文件系统交互的 Windows SMB 客户端并不总是知道远程文件系统的功能。 它可以是 Windows Server、Azure 文件存储或其他 SMB 服务器实现。 因此,SMB 客户端将使用某些 API 调用远程文件服务器。 如果这些 API 失败,它将回退到使用其他 API,甚至只是忽略这些错误。 根据 SMB 的请求/响应协议,即使系统行为正确,大量请求也会失败。 这可能是由于授权失败、尝试创建名称已存在的文件,或尝试打开不存在的文件。

日志记录和报告

若要对 ClientOtherErrors 进行故障排除,可以创建诊断设置并使用 Azure Monitor 进行报告。 还可以 分析日志 以查看失败的请求(包括 ClientOtherErrors), 或使用 Kusto 查询

还可以从与日志中显示的 IP 地址匹配的客户端收集 ProcMon 跟踪 。 添加筛选器以仅查看发Azure 文件存储的流量。

Common ClientOtherErrors

下表列出了常见的 ClientOtherErrors,以及每个错误的说明。

操作 状态 错误说明
QueryFullEaInformation STATUS_NOT_IMPLEMENTED 返回此失败是因为Azure 文件存储未实现此 API。 Azure 文件存储目前不支持扩展属性。
UnknownFileClass=48 STATUS_NOT_SUPPORTED 这是 FileNormalizedNameInformation API 调用。 这是对 Windows Server 的新支持,目前Azure 文件存储不支持此 API。
FileOpen 492 STATUS_ACCESS_DENIED 调用方没有打开文件所需的权限。 对于 Kerberos 访问,ACL 拒绝调用方访问。
FileOpen 257 STATUS_OBJECT_NAME_INVALID 打开请求的路径无效 (例如,路径太长或) 太深。
FileOpen 12 STATUS_FILE_IS_ADIRECTORY 调用方打开目录时未使用正确的 CreateFile 参数 (例如备份意向) 。
FileOpen 8 STATUS_SHARING_VIOLATION 调用方正在打开一个文件,该文件已打开, (限制,例如,独占或其他人只能读取) 。
FileOpen 6 STATUS_OBJECT_NAME_NOT_FOUND 调用方正在打开不存在的文件。
FSCTL_QUERY_NETWORK_INTERFACE_INFO (IOCTL) STATUS_INVALID_DEVICE_REQUEST 仅当客户启用了多通道功能时,才会使用此功能Azure 文件存储。 在其他情况下,不需要它,当从客户端查询时,我们返回无效的设备请求。
QueryStreamInformation STATUS_NOT_IMPLEMENTED 某些文件系统具有 备用数据流 或其他流(如重新分析点流)的概念。 Azure 文件存储没有此概念,因此我们不支持 API。
IOCTL) 意外 ( STATUS_INVALID_DEVICE_REQUEST 这是FSCTL_QUERY_FILE_REGIONS一个特定于 NTFS/refs 的区域概念,在Azure 文件存储方面没有意义。 因此,我们不实现此 FSCTL 代码。
ChangeNotify STATUS_CANCELLED Windows Shell 资源管理器等应用程序订阅文件的更改通知。 这样,当文件的属性发生更改时,Windows Shell 资源管理器会自动在视图中更新。 例如,如果用户在资源管理器中更改了视图,并且不再需要它) ,则客户端可以选择取消此订阅 (。 在这种情况下,我们会发送 STATUS_CANCELLED 回客户端以确认订阅已取消。
FSCTL_DFS_GET_REFERRALS (IOCTL) STATUS_FS_DRIVER_REQUIRED 这是一个 DFS 引荐请求。 Azure 文件存储不支持 DFS,这是系统不支持 DFS 时要返回的正确状态。
FileSupersede STATUS_ACCESS_DENIED 文件取代是一种操作,其中删除现有文件并放置新文件。 如果调用方无权删除现有文件,则调用将失败。
FileCreate 7 STATUS_OBJECT_NAME_INVALID 例如,当创建新文件的请求具有无效 (请求的名称(例如,使用不受支持的字符) )时,就会发生这种情况。
FileCreate 3 STATUS_OBJECT_NAME_COLLISION 当创建新文件的请求具有与现有文件匹配的请求名称时,就会发生这种情况。
阅读 STATUS_ACCESS_DENIED 当对具有不授予 读取 (读取访问权限的句柄的文件执行读取请求时,就会发生这种情况,例如,使用所需的写入访问权限) 打开该文件。
TreeConnect STATUS_ACCESS_DENIED 在 Kerberos 身份验证的上下文中,调用方没有通过 RBAC 或“默认共享权限”功能分配的共享级别权限。 如果未设置“默认共享权限”功能,则计算机标识的调用方将始终在共享上出现此访问失败。

另请参阅

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。