我如何查找我正在使用的BtrFS驱动程序版本?

我在网上阅读了一些关于BtrFS的文章。有时候我看到这样的陈述:
“不要使用早于0.20rc1版本的BtrFS。”
我该如何查找我的内核中使用的版本?

我认为那个版本与btrfs工具套件有关,而不是模块。 - user448115
toolsuitbtrfs-tools是同一样东西吗? - koloman
有效地,是的 - user448115
BtrFS驱动版本的问题实际上主要是关于内核版本的问题。 - koloman
@koloman 是的,绝对没错。在开发阶段,BTRFS版本与内核版本紧密耦合。实际上,并不存在所谓的“btfs版本”。除了基于FUSE编写的文件系统之外,也没有其他文件系统版本。 - Adam Ryczkowski
2个回答

简而言之

从Linux内核v2.6.32(2009年12月)开始,BTRFS模块放弃了自己独立的版本控制方案。在那个时刻之前的最后一个版本是v0.19,根据官方变更日志

原始回答

在Linux中,有两种实现文件系统的方式:

一种是将代码合并到内核中,另一种是使用“用户空间文件系统”框架(FUSE)构建为用户空间应用程序。

在内核中实现的文件系统比基于FUSE的文件系统效率更高(但随着时间推移,这种差异逐渐减小,因为FUSE变得越来越成熟)。

BTRFS仅作为名为btrfs的内核模块实现,因此其版本与内核版本紧密相关。在实现他们的文件系统过程中,BTRFS内核团队向内核贡献了大量通用代码。通常,您可以使用命令modinfo btrfs | grep -i ver获取btrfs内核模块的版本信息,但在我的情况下(Ubuntu 14.04),btrfs没有该字段。

是的,很多事情都实现在内核中。这就是为什么Linux被称为"单片内核"。在GNU HURD中,如果它能够真正适合生产环境,你会将btrfs作为一个独立的服务(类似于"驱动程序")。

不是真的,btrfs模块版本与btrfs-tools并不相同。它们通常是一致的,但不一定要求如此。(曾经有一段时间,Ubuntu附带的btrfs-tools版本比与内核兼容的最新版本晚了一年)。Btrfs-tools旨在向后兼容,因此较新的版本可以在较旧的内核上运行,但可能会降低某些btrfs功能的可用性,如果内核中尚未支持某些btrfs特性。

再次强调,在开发阶段,BTRFS版本与内核版本紧密耦合。实际上,除了在kernel.btrfs git源代码提交中以外,不存在“btrfs驱动程序版本”这样的东西。或者除了基于FUSE的文件系统之外的任何其他文件系统版本。


从Linux内核v2.6.32(2009年12月)开始,BTRFS模块放弃了自己独立的版本号方案。
从那时起,只需使用uname -r命令获取内核版本。
在此之前的最后一个版本是v0.19,根据官方变更日志