待办事项

截至 6.7 内核。有关按版本添加的功能列表,请参阅 https://wiki.samba.org/index.php/LinuxCIFSKernel

缺少功能的局部列表

欢迎投稿。 此模块有很多机会进行可见的、重要的贡献。 这是已知问题和缺失功能的局部列表

  1. SMB3(和 SMB3.1.1)缺少可选功能:多通道性能优化、算法通道选择、目录租约优化、对更快的数据包签名(GMAC)的支持、对网络压缩的支持、T10 复制卸载,即“ODX”(复制块和“复制扩展”ioctl 是目前仅有的两种服务器端复制机制)

  2. 针对稀疏文件支持的更好优化复合和错误处理,也许会添加新的可选 SMB3.1.1 fsctl 以使折叠范围和插入范围更具原子性

  3. 通过 QUIC(以及其他基于套接字的协议(如 SCTP))支持 SMB3.1.1

  4. 配额支持(需要较小的内核更改,因为配额调用否则不会到达网络文件系统或无设备文件系统)。

  5. 可以优化其他用例以使用“复合”(例如 open/query/close 和 open/setinfo/close)来减少与服务器的往返次数并提高性能。 各种情况(stat、statfs、create、unlink、mkdir、xattrs)已经通过使用复合得到改进,但仍有改进空间。 此外,我们可以通过使用延迟关闭(带有句柄缓存租约)并更好地利用文件句柄上的引用计数器来显著减少冗余打开。

  6. 完成 inotify 支持,以便 kde 和 gnome 文件列表窗口将自动刷新(Asser 部分完成)。 需要较小的内核 vfs 更改以支持删除文件上的 D_NOTIFY。

  7. 添加 GUI 工具以配置 /proc/fs/cifs 设置并显示 CIFS 统计信息(已启动)

  8. 实现对 xattrs 的安全和受信任类别的支持(需要较小的协议扩展)以更好地支持 SELINUX

  9. 添加对树连接上下文的支持(请参阅 MS-SMB2),这是新的 SMB3.1.1 协议功能(可能对虚拟化特别有用)。

  10. 创建 UID 映射工具,以便服务器 UID 可以按每个挂载或每个服务器映射到客户端 UID,或者如果没有映射,则映射到 nobody。 还与 winbind 更好地集成以解析 SID 所有者

  11. 添加工具以利用更多 smb3 特定的 ioctl 和功能(passthrough ioctl/fsctl 现在已在 cifs.ko 中实现,允许直接从用户空间发送各种 SMB3 fsctl 和查询信息以及设置信息调用)添加工具以使从工具设置各种非 POSIX 元数据属性更容易(例如,扩展 smb-info 工具中所做的工作)。

  12. 加密文件支持(当前报告了在服务器上显示文件已加密的属性,但不支持更改该属性)。

  13. 改进的统计信息收集工具(或许与 nfsometer 集成?)以扩展和更容易使用当前在 /proc/fs/cifs/Stats 中的内容

  14. 添加对基于声明的 ACL (“DAC”) 的支持

  15. 挂载辅助 GUI(以简化挂载上的各种配置选项)

  16. 扩展对见证协议的支持,以允许通知共享移动和服务器网络适配器更改。 当前,Linux 客户端仅支持见证协议对服务器移动的通知。

  17. 允许 mount.cifs 在报告方言错误或不支持的功能错误时更加详细。 由于新挂载 API 的实现,现在可以更容易地实现这一点。

  18. 更新 cifs 文档和用户指南。

  19. 解决通过在标准文件系统 xfstest 套件中运行更广泛的 xfstests 而发现的错误。

  20. 将 cifs 和 smb3 支持拆分为单独的模块,以便可以在不需要旧版(且不太安全)CIFS 方言的环境中禁用它,并简化代码。

  1. 对 SMB3.1.1 的 POSIX 扩展进行额外测试

  2. 支持 Mac SMB3.1.1 扩展以改进与 Apple 服务器的互操作性

  3. 支持其他身份验证选项(例如 IAKERB、点对点 Kerberos、SCRAM 以及现有服务器支持的其他选项)

  4. 改进的跟踪、更多的 eBPF 跟踪点、用于性能分析的更好的脚本

已知错误

请参阅 https://bugzilla.samba.org - 在产品“CifsVFS”上搜索当前错误列表。 另请查看 http://bugzilla.kernel.org (产品 = 文件系统,组件 = CIFS) 和 xfstest 结果,例如 https://wiki.samba.org/index.php/Xfstest-results-smb3

要做的其他测试

  1. 针对各种服务器类型检查最大路径名和最大路径名组件。 尝试嵌套符号链接(8 层深)。 在 stat -f 信息中返回最大路径名

  2. 改进 xfstest 的 cifs/smb3 启用,并在需要时调整 xfstests 以更好地测试 cifs/smb3

  3. 使用 iozone 和类似工具进行额外的性能测试和优化 - 可以进行一些简单的更改来并行化顺序写入,并且当禁用签名时,可以请求更大的读取大小(大于协商的大小)并向现代服务器发送更大的写入大小。

  4. 针对不太常见的服务器进行更全面的测试

  5. 继续扩展 smb3“构建机器人”,该机器人目前对 Windows、Samba 和 Azure 执行自动 xfstesting,以添加其他测试并允许构建机器人更快地执行测试。 构建机器人的 URL 为:http://smb3-test-rhel-75.southcentralus.cloudapp.azure.com

  6. 解决各种 Coverity 警告(大多数本身不是错误,但解决的警告越多,就越容易发现静态分析器将来会指出的真正问题)。