Btrfs 与 Ext4 - 功能、优势和劣势

2023-05-16

文件系统控制从存储设备存储和检索数据的位置、方式和时间。日常系统进程需要一个高效的文件系统。Linux 内核支持多种文件系统。最常用的是 Ext4、Btrfs、XFS 和 ZFS,这是 2018 年发布的最新文件系统。这些文件系统中的每一个都有自己的数据组织方式、优点和缺点。

在本教程中,我们将对照Ext4文件系统检查Btrfs,并试图了解它们的功能、优势和劣势。

Ext4 文件系统

Ext4是许多 Linux 发行版的默认文件系统。它于 2008 年 10 月发布,带有 Linux 内核 2.6.28。Ext4 是扩展文件系统的第四个版本,是 Ext3 的继承者。 

Ext4 是一个健壮的文件系统,已经使用了很长时间。它是一个日志文件系统,这意味着它会保留文件在磁盘上的位置的“日志”,并跟踪对磁盘的任何其他更改。

Btrfs 文件系统

BtrfsB-Tree文件系统是一种更新的、现代的、开源的文件系统。它是为 Linux 系统量身定制的写时复制 (CoW) 文件系统,其名称来源于使用 B-trees 存储内部文件结构。在 CoW 文件系统设置中,当数据被修改时,文件系统会复制修改后的数据,并将数据写回文件系统上的可用位置。

由于数据被复制和修改到文件系统上的不同位置,这消除了断电时数据损坏的风险,仅举一个例子。需要指出的是,在修改过程中,原始数据被保留并保持不变。

Btrfs 文件系统的最大缺点是大文件容易碎片化,因此需要定期进行碎片整理。

Btrfs 的开发早在 2007 年就在甲骨文开始,但包括 SUSE、Facebook、Redhat 在内的其他主要公司也在为其开发做出贡献。Btrfs 的存在是因为开发人员希望扩展文件系统的功能以包含快照、校验和等功能。

BTRFS 功能

btrfs 提供的一些有趣的功能包括:

1) 支持大文件

Btrfs 文件系统最多可以支持 2个 64 字节,相当于16EiBexbibytes!现在这是一个巨大的存储空间!

2) 高效的文件存储

Btrfs 提供基于范围的文件存储。这被描述为为文件存储保留的连续区域。文件元数据的开销大大减少,小元数据直接有助于提高存储效率和性能。

Btrfs 仍然是高效的文件存储,它通过将较小的文件打包为元数据来为它们提供高效的存储。

3) 内置 RAD 支持

Btrfs 文件系统包括对 RAID 0(数据剥离)、1(数据镜像)和 RAID 10(数据剥离和镜像)的支持

4)在线碎片整理和调整大小

使用 Btrfs,即使文件系统处于联机状态,也可以执行碎片整理和调整大小。

5)动态inode分配

Btrfs 提供 inode 的动态分配。它会在需要时将 inode 分配给文件,这有助于防止在文件系统上有很多小文件的情况下 inode 耗尽。

6) 可写和只读快照

Btrfs 提供的另一个出色功能是对快照的支持。您可以轻松地创建文件系统的快照,并在数据意外删除或损坏时利用它来恢复其他地方的数据。

7) 支持校验和

另一个重要特性是对校验和的支持。校验和是小块数据,可以避免静默文件或数据损坏的可能性,这是其他文件系统不提供的。校验和存储在文件系统中,并持续关注文件系统错误和数据损坏的迹象。

8) 优化对 SSD 驱动器的支持

SSD(固态硬盘)驱动器确实在 PC 中提供了相当程度的速度、可靠性和稳定性。Btrfs 文件系统通过优化它们的读写性能进一步提高了它们的性能,从而提高了 SSD 的寿命。

Ext4 和 Btrfs 文件系统的比较

让我们知道在各种关键特性上对两个文件系统进行比较。

1. 日志和写时复制支持

这是两个文件系统之间出现的第一个主要区别。Ext4 文件系统是一个日志文件系统,而 Btrfs 是一个 Copy-on-Write (CoW) 文件系统。

2.多设备支持

将单个文件系统分布在多个设备上提供了某些优势,例如容量增加和可靠性更高。Btrfs 具有内置的 RAID 支持,可以轻松地在文件系统级别管理多个设备。

Ext4 文件系统没有对多设备的内置支持。您将不得不使用LVM 2之类的第 3 方逻辑卷管理器将文件系统跨越多个设备和磁盘。

3.文件系统级重复数据删除: 

重复数据删除是一种自动从文件系统中删除重复数据副本以节省磁盘空间的功能。Btrfs 文件系统通过将文件系统中的相同块替换为指向该块的单个副本的逻辑链接来支持重复数据删除。此功能可节省大量磁盘空间。

Ext4 文件系统不支持重复数据删除。

4. 文件系统级压缩

Btrfs 使用压缩算法来支持文件系统级别的数据压缩。这意味着数据将在写入文件系统时自动压缩。

Ext4 文件系统没有内置的压缩​​支持。

5. 最大分区和文件大小 

使用 ext4 可以创建的最大分区是 1 exbibyte——相当于大约 1,152,921.5 TB。最大文件大小为 16 TiB,比普通消费者目前可以购买的任何硬盘都要大得多。

Btrfs 支持的最大分区和文件大小高达 16Eib。 

Ext4 允许您创建最多 232 个(= 4,294,967,296 ~= 40 亿)文件。Btrfs 允许您创建最多 264 个(= 18,446,744,073,709,551,616 ~= 18 quintillion)文件。

6.校验和/ECC支持

Btrfs 文件系统使用 CRC32C 校验和来确保数据完整性并避免数据损坏。Ext4 文件系统不保证数据的完整性。

7. 快照支持

Btrfs 文件系统支持文件的只读和可写快照。快照是一个子卷,它使用 COW 功能与另一个子卷共享其数据和元数据。

Ext4 文件系统不支持创建文件系统的快照。

8. 分块分块和尾打包

块子分配是一种功能,将大文件存储在块中,同时有效利用最后一个块末尾的尾部空间。块子分配是一种将另一个文件块的一部分存储到尾块并节省磁盘空间的方法。

Btrfs 旨在利用此可用空间,并可以将多个块的尾部与其他文件打包在一起。这提高了文件系统性能并提高了存储效率。

Ext4 不支持尾部打包。

结论

Ext4 文件系统是扩展文件系统的最新版本。Ext4 已经存在了很长时间,并且被证明是可靠和稳定的。建议日常使用。万一停电,ext4 很有可能会确保您保存的数据安全。

Ext4 专注于高性能和可扩展性。这是一个坚如磐石的选择,因为它已经存在很长时间了,它带来了多年来的系统测试和错误修复。不管其所有功能如何,它都不支持重复数据删除、压缩或加密。

另一方面,Btrfs 是一个现代文件系统,可以处理多达 16 倍于 Ext4 的数据。这种改进特别重要,因为 Linux 现在在企业实体中使用。Btrfs 有很多上面提到的很好的特性,例如 Copy-on-Write、快照、校验和和复制。Btrfs 正在快速增长,但仍被认为不稳定。

到目前为止,ext4 似乎是桌面系统上更好的选择,因为它是默认文件系统,并且在传输文件时比 btrfs 更快。btrfs 文件系统值得研究,但要在桌面 Linux 上完全取代 ext4 可能需要几年时间。 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Btrfs 与 Ext4 - 功能、优势和劣势 的相关文章

  • Ext4使用总结(二)简单的hbox布局

    布局的合理利用 xff1a 如图 xff1a xtype 39 container 39 margins 39 5 0 0 0 39 layout align 39 stretch 39 type 39 hbox 39
  • Ext4 vs XFS——你应该使用哪个文件系统

    运行 Linux 系统的用户几乎不会关注底层文件系统 事实上 xff0c 在安装 Linux 的过程中 xff0c 通常倾向于使用列出的默认文件系统而不探索其他可用选项 对于 Windows xff0c 事情要容易得多 xff0c 因为 N
  • linux btrfs 格式化,Btrfs 文件系统修复技巧

    Btrfs 文件系统工具随着内核版本的进步在逐步成熟 xff0c 不过难免在使用过程有会有一些意外发生 xff0c 遇到无法挂载的情况怎么办 xff1f 若是在其他文件系统异常的情况下 xff0c 第一反应当然是 fsck 系列工具咯 xf
  • CentOS 7之btrfs文件系统

    核心特性 xff1a 支持多物理卷 xff1a btrfs 可由多个底层物理卷组成 xff0c 支持 RAID xff0c 以联机 添加 移除 xff0c 修改 物理卷 写时复制更新机制 xff08 CoW xff09 xff1a 复制 更
  • Btrfs文件系统管理及应用

    btrfs xff08 通常念成 Butter FS xff09 xff0c 由 Oracle 于 2007 年开发的遵循 GPL 协定的开源文件系统 Btrfs 支持创建快照 snapshot 以及支持递归的快照 xff08 即支持快照的
  • linux分区btrfs,linux btrfs文件系统及管理

    什么是btrfs xff1f Btrfs B tree文件系统 xff0c 通常念成Butter FS xff0c Better FS或B tree FS xff0c linux文件系统 xff0c 具有写时复制COW copy on wr
  • linux高级文件系统管理——btrfs

    前几天 xff0c 关于高级文件系统方面也给大家分享过RAID和LVM xff0c 今天给大家分享的这款文件系统可能比这两者更先进 xff0c 可以将其二者合二为一 第一 xff0c 它可以使用磁盘或者分区大小不一样的设备组建RAID xf
  • linux查看目录是不是btrfs,btrfs文件系统常用命令使用

    Btrfs xff0c 也可称为B tree xff0c Butter FS xff0c Better FS xff0c 是CentOS7中一种新型的文件系统 核心特性 1 多物理卷支持 可由多个物理卷 pv 组成 支持raid 以联机添加
  • 初识Btrfs文件系统

    Btrfs 也有一个重要的缺点 xff0c 当 BTree 中某个节点出现错误时 xff0c 文件系统将失去该节点之下的所有的文件信息 而 ext2 3 却避免了这种被称为 错误扩散 的问题 Btrfs相关介绍 xff1a Btrfs 是一
  • ext4文件系统恢复被删除的文件

    ext4magic工具 可以恢复出被rm f删除的文件 xff08 只要原始数据块未被新数据所覆盖 xff09 ext4magic device M d savedir 可参考 https sourceforge net projects
  • Ext4使用总结(二)简单的hbox布局

    布局的合理利用 xff1a 如图 xff1a xtype 39 container 39 margins 39 5 0 0 0 39 layout align 39 stretch 39 type 39 hbox 39
  • openwrt编译error: ext4_allocate_best_fit_partial: failed to allocate 13 blocks, out of space?

    编译openwrt时候报如下错误 xff1a Creating filesystem with parameters Size 50331648 Block size 4096 Blocks per group 32768 Inodes p
  • 【全志A33】解决文件系统错误

    这个平板第一次开机就给我了一个惊喜 文件系统不可写 WTF 这还玩啥 但是查了一下内核日志 发现这事不简单 内核日志 1 690765 EXT4 fs nandd barriers disabled 1 698331 EXT4 fs nan
  • EXT4文件系统挂载成功后执行init文件linuxrc失败

    Hi3559av100平台 制作EXT4文件系统在EMMC存储设备上启动 发现EXT4文件系统挂载成功后执行init文件linuxrc失败 分析原因如下 错误打印 sdhci Secure Digital Host Controller I
  • centos7 磁盘刷新容量

    1 添加一块新的硬盘sdb 40G lsblk mkdir test mkfs ext4 dev sdb blkid grep sdb echo blkid grep sdb gt gt etc fstab vim etc fstab UU
  • 解决问题:EXT4 filefield 文件上传在IE8上返回状态无效,弹出下载页面

    解决描述 EXT4 filefield 以form 文件上传 基于IE8浏览器 不管上传成功与否 返回状态无效 即success function fp o 方法无效 并弹出下载页面 原代码情况如下 1 EXT4前台视图层view view
  • python:ext4 文件系统中 os.path.exists 的复杂性?

    有谁知道 os path exists 函数在带有 ext4 文件系统的 python 中的复杂性是多少 使用的底层目录结构Ext4 and Ext3 与中完全相同Ext2 Ext3添加日记 Ext4改善日记 日记与你的问题无关 最初 Ex
  • 在 ext4 上覆盖小文件是原子的吗?

    假设我们有一个文件FILE SIZE字节 并且 FILE SIZE lt min page size physical block size 文件大小永远不会改变 即truncate 或附加write 从未执行过 仅通过使用以下命令完全覆盖
  • Intel NVMe 驱动器扇区大小不是 4096 的 xfs 文件系统导致性能下降

    我正在 Linux Ubuntu 14 04 上使用 NVMe 卡 我发现 当使用默认扇区大小 512 的 xfs 文件系统进行格式化时 Intel NVMe 卡的性能会出现一些下降 或任何其他小于 4096 的扇区大小 在实验中 我使用默
  • 扩展属性存储在哪里?

    这是一个简单的问题 但我做了一些研究 找不到任何答案 所以有人知道当我们通过 xattr 定义扩展属性时 这些属性是否存储在文件内容中 作为文件内容的一部分 在最后 到底 或者索引节点是否有一个特殊的区域来存储这些 顺便说一句 我在 ext

随机推荐