如何知道我正在使用哪个版本的 BtrFS 驱动程序?

如何知道我正在使用哪个版本的 BtrFS 驱动程序?

我在网上读了几篇BtrFS文章。有时我看到这样的陈述

请勿使用早于 0.20rc1 的 BtrFS 版本。

我如何才能知道我的内核是哪个版本?

答案1

结论

从 Linux 内核 v2.6.32(2009 年 12 月)开始,BTRFS 模块放弃了自己的单独版本控制方案。根据官方更新日志

原始答案

在 Linux 中,有两种方法可以实现文件系统:

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

在内核中实现的文件系统比在 FUSE 之上实现的文件系统具有更好的效率(但随着 FUSE 变得越来越成熟,这种差异会随着时间的推移而减小)。

BTRFS 仅在内核中作为名为 的内核模块实现btrfs,因此其版本与内核版本紧密相关。并且 BTRFS 内核团队在实现其 FS 的过程中为内核贡献了大量通用代码。通常,您可以btrfs使用命令 获取内核模块的版本信息modinfo btrfs | grep -i ver,但在我的例子中(Ubuntu 14.04), 此字段不存在btrfs

是的,很多东西都是在内核中实现的。这就是为什么 Linux 被称为单片内核. 如果 GNU HURD 可以投入生产,那么在 GNU HURD 中,您会将 btrfs 作为一项单独的服务(类似于“驱动程序”)。


btrfs 模块版本与 btrfs-tools 版本相同的说法并不准确。它们通常一致,但不一定一致。(曾经有一段时间,Ubuntu 附带的 btrfs-tools 比与内核兼容的最新版本晚了一年)。Btrfs-tools 旨在向后兼容,因此较新的版本可以在较旧的内核上运行,如果内核中尚不存在某些 btrfs 功能,则功能可能会有所减少。

再次强调,在开发阶段,BTRFS 版本与内核版本紧密相关。实际上,除了 kernel.btrfs git 源代码提交之外,没有“btrfs 驱动程序版本”之类的东西。或者除了在 FUSE 之上编写的文件系统之外的任何其他 FS 版本。

答案2

从 Linux 内核 v2.6.32(2009 年 12 月)开始,BTRFS 模块放弃了其自己单独的版本控制方案。

从那时起只需用来uname -r获取内核版本。

根据官方更新日志

相关内容