排查 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 以及每个错误的说明。

操作 Status 错误说明
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 反馈社区