排查 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 反馈社区提交产品反馈。