排查 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 反馈社区。