网易首页 > 网易号 > 正文 申请入驻

Btrfs 详解:基础概念 | Linux 中国

0
分享至

导读:这篇文章是《Btrfs 详解》系列文章中的一篇。

本文字数:2950,阅读时长大约: 5分钟

这篇文章是《Btrfs 详解》系列文章中的一篇。从 Fedora Linux 33 开始,Btrfs 就是 Fedora Workstation 和 Fedora Silverblue 的默认文件系统。

介绍

文件系统是现代计算机的基础之一。它是任何操作系统必不可少的一部分,且通常不为人注意。但是,像 Btrfs 这样的现代文件系统提供了许多很棒的特性,使计算机的使用更加方便。例如,它可以无感地为你压缩文件,或者为增量备份建立可靠的基础。

这篇文章将带你高屋建瓴地了解 Btrfs 文件系统是如何工作的,有什么特性。本文既不会过多涉及技术细节,也不会研究其底层实现,系列后续的文章会详细介绍一些重要特性。

什么是文件系统

如果你基本了解过文件系统是如何工作的,那么下面的内容对你应该是不陌生的,你可以直接跳到下一节。否则,请先阅读下面对文件系统的简短介绍。

简单来说,文件系统允许你的 PC 去寻找存储在磁盘上的数据。这听起来像是微不足道的工作,但实际上时至今日各种类型的非易失性存储设备(比如机械硬盘、固态硬盘、SD 卡等等)仍然与 1970 年代 PC 被发明时基本相同:一个(巨大的)存储块集合。

“块(Block)” 是最小的可寻址存储单元。PC 上的每个文件内容被存储在多个块中。一个块通常是 4096 字节的大小。这取决于你的硬件和在这之上的软件(即文件系统)。

文件系统允许我们从海量的存储块中查找文件的内容,这是通过所谓的 inode 去实现的。一个 inode 在特殊格式的存储块里记录了文件的信息。这包含文件的大小,哪里去寻找组成文件内容的存储块,访问规则(即谁可读,可写,可执行)等等。

下面是 inode 的示意图:

A text file “myfile.txt” and a hypothetical example of its representation on disk. All the squares are individual storage blocks.

inode 的结构对文件系统的功能有巨大的影响,因此它是各种文件系统诸多的重要数据结构之一。出于这个原因,每个文件系统有各自的 inode 结构。如果你想了解更多信息,看看下面 btrfs.wiki.kernel.org 关于 Btrfs 文件系统 inode 结构的内容。如需更详细地了解各个字段的含义,你可以 ext4.wiki.kernel.org ext4 文件系统的 inode 结构。

写时复制(CoW)文件系统

相比 ext4,Btrfs 拥有的杰出特性之一是,它是一个 写时复制(Copy-on-Write)(CoW)文件系统。当一个文件被改变和回写磁盘,它不会故意写回它原来的位置,而是被复制和存储在磁盘上的新位置。从这个意义上,可以简单地认为 Cow 是一种 “重定向”,因为文件写入被重定向到不同的存储块上。

这听起来很浪费,但实际上并不是。这是因为被修改的数据无论如何一定会被写到磁盘上,不管文件系统是如何工作的。Btrfs 仅仅是确保了数据被写入在之前没被占据的块上,所以旧数据保持完整。唯一真正的缺点就是这种行为会导致文件碎片化比其他文件系统要快。在日常的电脑使用中,你不太可能会注意到这点差异。

CoW 的优势在哪里?简单的说:文件被修改和编辑的历史被保存了下来。Btrfs 保存文件旧版本的引用(inode)可以轻易地被访问。这个引用就是快照:文件系统在某个时间点的状态镜像。这将是这系列文章里的单独的一篇,所以暂时留到后面介绍。

除了保存文件历史,CoW 文件系统永远处于一致的状态,即使之前的文件系统事务(比如写入一个文件)由于断电等原因没有完成。这是因为文件系统的元数据更新也是写时复制的:文件系统本身永远不会被覆写,所以中断不会使其处于部分写入的状态。

对文件的写时复制

你可以将文件名视为对 inode 的指针。在写入文件的时候,Btrfs 创建一个被修改文件内容(数据)的拷贝,和一个新的 inode(元数据),然后让文件名指向新的 inode,旧的 inode 保持不变。下面是一个假设示例来阐述这点:

Continuation of the example above: 3 more bytes of data were added

这里myfile.txt增加了三个字节。传统的文件系统会更新中间的Data块去包含新的内容。CoW 文件系统不会改变旧的数据块(图中灰色),写入(复制)更改的数据和元数据在新的地方。值得注意的是,只有被改变的数据块被复制,而不是全部文件。

如果没有空闲的块去写入新内容,Btrfs 将从被旧文件版本占据的数据块中回收空间(除非它们是快照的一部分,本系列后续文章会看到)。

对目录的写时复制

从文件系统的角度看,目录只是特殊类型的文件。与常规文件不同,文件系统直接解释数据块的内容。一个目录有自身的元数据(inode,就像上面说的文件一样)去记录访问权限或修改时间。最简单的形式,存在目录里的数据(被叫作目录项)是一个 inode 引用的列表,每个 inode 又是另外的文件或目录。但是,现代文件系统在目录项中至少会存储一个文件名和对应的 inode 引用。

之前已经指出,写入一个文件会创建之前 inode 的副本,并相应修改其内容。从根本上,这产生了一个和之前无关的新的 inode 。为了让被修改的文件对文件系统可见,所有包含这个文件引用的目录项都会被更新。

这是一个递归的过程!因为一个目录本身是一个带有 inode 的文件。修改目录里的任何一项都会为这个目录文件创建新的 inode 。这会沿着文件系统树递归直到文件系统的根。

所以,只要保留对任何旧目录的引用,并且这些目录没有被删除和覆写,就可以遍历之前旧状态的文件系统树。这就是快照的功能。

后续文章可以期待的内容

Btrfs 不只是一个 Cow 文件系统。它目标是实现高级特性的同时关注容错、修复和易于管理(参见 btrfs.readthedocs.io)。本系列未来的文章将会专门介绍这些特性。

◈ 子卷 – 文件系统中的文件系统

◈ 快照 – 回到过去

◈ 压缩 – 透明节省存储空间

◈ 配额组 – 限制文件系统大小

◈ RAID – 替代 mdadm 配置

这远非 Btrfs 特性的详尽列表。如果你想全面地了解可用特性,查看 btrfs.wiki.kernel.org 和 btrfs.readthedocs.io。

总结

我希望我已能激起你进一步了解计算机文件系统的兴趣。如果目前你有任何疑问,请在评论区留言讨论以便在日后文章中探讨,同时,你也可以自行学习文中提供的相关资源。如果你发现 Btrfs 中某项特别有趣的功能,也欢迎在评论区提出。如果某个主题收到足够的关注,我可能会在系列文章中新增相关内容。下一篇文章再见!

(题图:MJ/35fa1970-1806-4026-8d58-095a56206ec9)

via:

作者: 选题: 译者: 校对:

本文由 原创编译, 荣誉推出

LCTT 译者 :A2ureStone

翻译: 1.0 篇

贡献: 1 天

2023-09-13

2023-09-13

https://linux.cn/lctt/A2ureStone

欢迎遵照 CC-BY-SA 协议规定转载,

如需转载,请在文章下留言 “ 转载:公众号名称”,

我们将为您添加白名单,授权“ 转载文章时可以修改”。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
欧洲杯16强全部诞生!上半区神仙打架!下半区菜鸟互啄?

欧洲杯16强全部诞生!上半区神仙打架!下半区菜鸟互啄?

运动帮
2024-06-27 07:28:52
巴斯夫宣布终止这一炼化项目

巴斯夫宣布终止这一炼化项目

中国石油石化
2024-06-26 22:36:15
将近40岁满脸褶,却尬演18岁少女,是谁给了她“强行装嫩”的勇气

将近40岁满脸褶,却尬演18岁少女,是谁给了她“强行装嫩”的勇气

娱乐圈十三太保
2024-05-28 13:56:53
海航控股回应股价逼近1元:公司正在采取措施

海航控股回应股价逼近1元:公司正在采取措施

澎湃新闻
2024-06-27 10:18:36
王宝强获奖:黄渤表情耐人寻味,台下谁是真兄弟一目了然

王宝强获奖:黄渤表情耐人寻味,台下谁是真兄弟一目了然

娱乐白名单
2024-06-26 14:17:22
2024年养老金调整补发,7月底之前会到位吗?退休人员注意什么?

2024年养老金调整补发,7月底之前会到位吗?退休人员注意什么?

碎月导师
2024-06-26 12:06:14
恭喜黄一鸣,王思聪已承认是孩子的父亲,双方已达成和解

恭喜黄一鸣,王思聪已承认是孩子的父亲,双方已达成和解

柠檬有娱乐
2024-06-27 10:11:11
外交官余琦惹祸了?15亿阅读量背后,揭秘4大惊人黑历史

外交官余琦惹祸了?15亿阅读量背后,揭秘4大惊人黑历史

冬天来旅游
2024-06-27 10:02:38
引起争论:乌克兰袭击俄国炼油厂的打击是微不足道,还是至关重要

引起争论:乌克兰袭击俄国炼油厂的打击是微不足道,还是至关重要

探索星空
2024-06-25 23:25:09
女港星大爆屌,太狠啦!

女港星大爆屌,太狠啦!

粤西生活圈
2024-06-26 16:08:27
薛思佳:张子宇像游戏里个人建模一样BUG无解 她不仅仅是长得高

薛思佳:张子宇像游戏里个人建模一样BUG无解 她不仅仅是长得高

直播吧
2024-06-26 21:16:55
死囚临刑前自愿捐赠器官,枪决后遗体运往医院,医生看了当场愣住

死囚临刑前自愿捐赠器官,枪决后遗体运往医院,医生看了当场愣住

沫姐美食记
2024-06-26 07:15:11
国足18强赛首条新归化大鱼到位,伊万亲自出面邀请,本人已同意

国足18强赛首条新归化大鱼到位,伊万亲自出面邀请,本人已同意

罗掌柜体育
2024-06-26 12:08:17
税务严查时代要来了!审计署出手:建议加大税费征管力度!

税务严查时代要来了!审计署出手:建议加大税费征管力度!

学税
2024-06-26 17:52:25
央媒突访姜萍家!没想到村里连夜砌起了高大的围墙,网友坐不住了

央媒突访姜萍家!没想到村里连夜砌起了高大的围墙,网友坐不住了

文雅笔墨
2024-06-21 19:39:04
大自然的力量!杭州灵隐寺罕见洪灾瞬间曝光,网友看后震撼不已!

大自然的力量!杭州灵隐寺罕见洪灾瞬间曝光,网友看后震撼不已!

暖心的小屋
2024-06-26 15:41:58
普京只用3天时间,就在中国眼皮底下,完成了环中国3大布局

普京只用3天时间,就在中国眼皮底下,完成了环中国3大布局

主笔唐驳虎
2024-06-23 14:24:12
极氪这台SUV,先一步把小米“堵死”了?

极氪这台SUV,先一步把小米“堵死”了?

新车评网
2024-06-26 12:13:40
“伪装”成小国的大国,明明有200多万平方千米国土,却不愿承认

“伪装”成小国的大国,明明有200多万平方千米国土,却不愿承认

风起云间
2024-06-20 21:53:43
来了,皇马!“超级猎物”转会谈妥!5000万签约意主力国脚

来了,皇马!“超级猎物”转会谈妥!5000万签约意主力国脚

头狼追球
2024-06-26 17:47:09
2024-06-27 14:00:49
Linux
Linux
Linux 中国开源社区
8016文章数 73124关注度
往期回顾 全部

科技要闻

朱啸虎:5年后将没有独立的大模型公司存在

头条要闻

冯德莱恩被同意连任 同日匈牙利外长向中方表态

头条要闻

冯德莱恩被同意连任 同日匈牙利外长向中方表态

体育要闻

和布朗尼一样菜的人,咋进NBA?

娱乐要闻

李雪琴北大学历情况被扒,牵扯多人

财经要闻

曹远征:不能被"产能过剩"的概念所困惑

汽车要闻

32万公里实车直播拆解 极氪凭事实证明实力!

态度原创

房产
健康
亲子
教育
艺术

房产要闻

大动作来了!丁村城市更新征收补偿方案曝光!

人类为何至今无法攻克渐冻症?

亲子要闻

小十一凭借自己的努力,终于上幼儿园啦!全程玩的超嗨

教育要闻

外国人中文听力考试,语速放得极慢,网友直呼像极了考英语的我

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

无障碍浏览 进入关怀版