[PT] phoronix/2021-9-1 Btrfs 获得新功能,KSMBD 并入内核主线



Btrfs 文件系统的更新现在已经在 Linux 5.15 主线中落地,有一些令人兴奋的新功能和改进。

Btrfs 文件系统的开发者在这个夏天相当忙碌,为 Linux 5.15 准备了一组相当活跃的变化。今天成功合并到 Linux 5.15 Git 中的 Btrfs 变化包括:

  • 作为内核层的 FS-VERITY 支持,允许对只读文件进行透明的完整性和真实性保护。FS-VERITY 已经适用于 EXT4 和 F2FS ,现在也适用于 Btrfs 。

  • 支持 IDMAPPED 挂载,允许不同的挂载以不同的所有权来显示同一个文件或目录。IDMAPPED 挂载是针对从容器到 systemd-homed 的使用情况而设计的。IDMAPPED 挂载在 Linux 5.12 中首次出现,但那时只在 FAT 和 EXT4 上可用,而从那时起,更多的文件系统已经开始支持这个功能。

  • Btrfs 增加了对 “退化的” RAID0 和 RAID10 模式的支持。在原生的 Btrfs RAID 生成模式下, RAID0 可以在单个设备上运行,RAID10 可以在两个设备上运行,而不是需要两个设备的 RAID0 和四个设备的 RAID10 。这个 Btrfs RAID 退化模式是为了在转换或移除阵列中的设备时提供帮助,同时保留配置文件类型。

  • 对 readahead 代码的修改,可以使全量发送的速度加快,在测试中测得结果提升 11% 。

  • 对延迟的项目进行批处理,以加快许多文件的创建。

  • Fsync/tree-log 加速显示了一个样本工作负载的吞吐量提高 +2% ,运行时间降低 2% 。还有更低的重命名锁定争用,使吞吐量增加 4%,延迟减少 30%。

  • 继续开展子页支持工作,并试验性地支持对具有 4K 扇区的 64K 页系统的写入支持。

  • 改进冲洗逻辑、各种其他修复和低级别的增强。

Linux 5.15 的 Btrfs 变化的完整列表可以通过这个 拉拽请求 找到。



在现在开放的 Linux 5.15 周期中,最早发出的拉拽请求之一是建议 将 KSMBD 作为内核内的 SMB3 文件服务器,作为 Linux 系统在用户空间中运行的 Samba 的替代。当时还不清楚 Linus Torvalds 是否会把这个文件服务器的代码加入到 Linux 内核中,但现在他确实已经把它加入内核了。

正如之前的文章所指出的,三星开发的 KSMBD 已经有一段时间了,它专注于提供快速的 SMB3 文件服务性能,同时也支持更多在内核空间实现的功能,比如 SMB Direct 的 RDMA 支持。 KSMBD 的目标不是像众所周知的 Samba 那样在用户空间支持 CIFS/SMB ,而只是专注于性能和内核功能的角度。

KSMBD 最初的形式是大约 32000 行的新内核代码,并以 GPLv2 许可进行发布。

不久前,KSMBD 被 合并 到了 Linux 5.15 。关于它的更多细节,请看 文档。启用 KSMBD 可以通过 CONFIG_SMB_SERVERKconfig 选项完成。

KSMBD 居然只要 32000 行代码而已。不敢相信啊。这个垃圾协议我记得很复杂的啊。