如何选择文件系统EXT4、Btrfs 和 XFS

老实说,人们最不曾思考的问题之一是他们的个人电脑中使用了什么文件系统。Windows 和 Mac OS X 用户更没有理由去考虑,因为对于他们的操作系统,只有一种选择,那就是 NTFS 和 HFS+。相反,对于 Linux 系统而言,有很多种文件系统可以选择,现在默认的是广泛采用的 ext4。然而,现在也有改用一种称为 btrfs 文件系统的趋势。那是什么使得 btrfs 更优秀,其它的文件系统又是什么,什么时候我们又能看到 Linux 发行版作出改变呢?

首先让我们对文件系统以及它们真正干什么有个总体的认识,然后我们再对一些有名的文件系统做详细的比较。

文件系统是干什么的?

如果你不清楚文件系统是干什么的,一句话总结起来也非常简单。文件系统主要用于控制所有程序在不使用数据时如何存储数据、如何访问数据以及有什么其它信息(元数据)和数据本身相关,等等。听起来要编程实现并不是轻而易举的事情,实际上也确实如此。文件系统一直在改进,包括了更多的功能、更高效地完成它需要做的事情。总而言之,它是所有计算机的基本需求、但并不像听起来那么简单。

为什么要分区?

由于每个操作系统都能创建或者删除分区,很多人对分区都有模糊的认识。Linux 操作系统即便使用标准安装过程,在同一块磁盘上仍使用多个分区,这看起来很奇怪,因此需要一些解释。拥有不同分区的一个主要目的就是为了在灾难发生时能获得更好的数据安全性。

通过将硬盘划分为分区,数据会被分隔以及重组。当事故发生的时候,只有存储在被损坏分区上的数据会被破坏,很大可能上其它分区的数据能得以保留。这个原因可以追溯到 Linux 操作系统还没有日志文件系统、任何电力故障都有可能导致灾难发生的时候。

使用分区也考虑到了安全和健壮性原因,因此操作系统部分损坏并不意味着整个计算机就有风险或者会受到破坏。这也是当前采用分区的一个最重要因素。举个例子,用户创建了一些会填满磁盘的脚本、程序或者 web 应用,如果该磁盘只有一个大的分区,如果磁盘满了那么整个系统就不能工作。如果用户把数据保存在不同的分区,那么就只有那个分区会受到影响,而系统分区或者其它数据分区仍能正常运行。

记住,拥有一个日志文件系统只能在掉电或者和存储设备意外断开连接时提供数据安全性,并不能在文件系统出现坏块或者发生逻辑错误时保护数据。对于这种情况,用户可以采用廉价磁盘冗余阵列(RAID:Redundant Array of Inexpensive Disks)的方案。

为什么要切换文件系统?

ext4 文件系统由 ext3 文件系统改进而来,而后者又是从 ext2 文件系统改进而来。虽然 ext4 文件系统已经非常稳定,是过去几年中绝大部分发行版的默认选择,但它是基于陈旧的代码开发而来。另外, Linux 操作系统用户也需要很多 ext4 文件系统本身不提供的新功能。虽然通过某些软件能满足这种需求,但性能会受到影响,在文件系统层次做到这些能获得更好的性能。

Ext4 文件系统

ext4 还有一些明显的限制。最大文件大小是 16 tebibytes(大概是 17.6 terabytes),这比普通用户当前能买到的硬盘还要大的多。使用 ext4 能创建的最大卷/分区是 1 exbibyte(大概是 1,152,921.5 terabytes)。通过使用多种技巧, ext4 比 ext3 有很大的速度提升。类似一些最先进的文件系统,它是一个日志文件系统,意味着它会对文件在磁盘中的位置以及任何其它对磁盘的更改做记录。纵观它的所有功能,它还不支持透明压缩、重复数据删除或者透明加密。技术上支持了快照,但该功能还处于实验性阶段。

Btrfs 文件系统

btrfs 有很多不同的叫法,例如 Better FS、Butter FS 或者 B-Tree FS。它是一个几乎完全从头开发的文件系统。btrfs 出现的原因是它的开发者起初希望扩展文件系统的功能使得它包括快照、池化(pooling)、校验以及其它一些功能。虽然和 ext4 无关,它也希望能保留 ext4 中能使消费者和企业受益的功能,并整合额外的能使每个人,尤其是企业受益的功能。对于使用大型软件以及大规模数据库的企业,让多种不同的硬盘看起来一致的文件系统能使他们受益并且使数据整合变得更加简单。删除重复数据能降低数据实际使用的空间,当需要镜像一个单一而巨大的文件系统时使用 btrfs 也能使数据镜像变得简单。

用户当然可以继续选择创建多个分区从而无需镜像任何东西。考虑到这种情况,btrfs 能横跨多种硬盘,和 ext4 相比,它能支持 16 倍以上的磁盘空间。btrfs 文件系统一个分区最大是 16 exbibytes,最大的文件大小也是 16 exbibytes。

XFS 文件系统

XFS 文件系统是扩展文件系统(extent file system)的一个扩展。XFS 是 64 位高性能日志文件系统。对 XFS 的支持大概在 2002 年合并到了 Linux 内核,到了 2009 年,红帽企业版 Linux 5.4 也支持了 XFS 文件系统。对于 64 位文件系统,XFS 支持最大文件系统大小为 8 exbibytes。XFS 文件系统有一些缺陷,例如它不能压缩,删除大量文件时性能低下。目前RHEL 7.0 文件系统默认使用 XFS。

总结

不幸的是,还不知道 btrfs 什么时候能到来。官方说,其下一代文件系统仍然被归类为不稳定,但是如果用户下载最新版本的 Ubuntu,就可以选择安装到 btrfs 分区上。什么时候 btrfs 会被归类到 稳定 仍然是个谜, 直到真的认为它稳定之前,用户也不应该期望 Ubuntu 会默认采用 btrfs。有报道说 Fedora 18 会用 btrfs 作为它的默认文件系统,因为到了发布它的时候,应该有了 btrfs 文件系统校验器。由于还没有实现所有的功能,另外和 ext4 相比性能上也比较缓慢,btrfs 还有很多的工作要做。

那么,究竟使用哪个更好呢?尽管性能几乎相同,但 ext4 还是赢家。为什么呢?答案在于易用性以及广泛性。对于桌面或者工作站, ext4 仍然是一个很好的文件系统。由于它是默认提供的文件系统,用户可以在上面安装操作系统。同时, ext4 支持最大 1 exabytes 的卷和 16 terabytes 的文件,因此考虑到大小,它也还有很大的进步空间。

btrfs 能提供更大的高达 16 exabytes 的卷以及更好的容错,但是,到现在为止,它感觉更像是一个附加的文件系统,而部署一个集成到 Linux 操作系统的文件系统。比如,尽管 btrfs 支持不同的发行版,使用 btrfs 格式化硬盘之前先要有 btrfs-tools 工具,这意味着安装 Linux 操作系统的时候它并不是一个可选项,即便不同发行版之间会有所不同。

尽管传输速率非常重要,评价一个文件系统除了文件传输速度之外还有很多因素。btrfs 有很多好用的功能,例如写复制(Copy-on-Write)、扩展校验、快照、清洗、自修复数据、冗余删除以及其它保证数据完整性的功能。和 ZFS 相比 btrfs 缺少 RAID-Z 功能,因此对于 btrfs, RAID 还处于实验性阶段。对于单纯的数据存储,和 ext4 相比 btrfs 似乎更加优秀,但时间会验证一切。

迄今为止,对于桌面系统而言,ext4 似乎是一个更好的选择,因为它是默认的文件系统,传输文件时也比 btrfs 更快。btrfs 当然值得尝试、但要在桌面 Linux 上完全取代 ext4 可能还需要一些时间。数据场和大存储池会揭示关于 ext4、XCF 以及 btrfs 不同的场景和差异。

如果你有不同或者其它的观点,在下面的评论框中告诉我们吧。

btrfs和ntfs linux5,如何选择文件系统EXT4、Btrfs 和 XFS相关推荐

  1. mysql ext3 ext4_Mysql如何选择文件系统?(ext4 vs ext3 vs jfs vs xfs vs reise

    如何提高mysql的性能?正确的选择文件系统,绝对是一个有效的方法之一.EXT4已经出现一段时间了,mysql在EXT4下的表现如何? 本文对当前linux几款常用的文件系统(ext4,jfs,rei ...

  2. 如何选择文件系统:EXT4、Btrfs 和 XFS

    如何选择文件系统:EXT4.Btrfs 和 XFS 老实说,人们最不曾思考的问题之一是他们的个人电脑中使用了什么文件系统.Windows 和 Mac OS X 用户更没有理由去考虑,因为对于他们的操作 ...

  3. Linux日志文件系统(EXT4、XFS、JFS)及性能分析

    Ext4 ReiserFS Btrfs 等七种文件系统性能比拼 自上一篇< Ext2 v.s. Ext3 v.s. Ext4 性能比拼> 发布以来,社会各界纷纷来电来函,给出了" ...

  4. linux支持xfs文件系统,LINUX下使用XFS文件系统

    XfS文件系统是SGI开发的高级日志文件系统,XFS极具伸缩性,非常健壮.所幸的是SGI将其移植到了Lin ux系统中.在linux环境下.目前版本可用的最新XFS文件系统的为1.2版本,可以很好地工 ...

  5. Linux各种文件系统(ext3,ReiserFS,jfs,xfs)的性能

    下面是原文: 以下文章是我自己翻译的,后面有英文的原文.不当之处,敬请指教. 应该不是太新的文章,但是我我是2006-07-12的上午才看到的.哎........ 2006-07-12 15:00 翻 ...

  6. Linux 文件系统 EXT4 的前世今生

    在先前关于Linux文件系统的文章中,我写了一份说明书去介绍Linux文件系统,里面有一些高级的概念,比如说,一切都是文件.我很想去深入地讨论更多EXT文件系统的特性的信息.所以,首先让我们来回答这个 ...

  7. linux下挂载ntfs(windows)文件系统

    装linux一般就是为了学习,娱乐还得windows双系统是很多人的选择.但是,红帽企业版默认不支持ntfs文件系统,很蛋疼,无法访问windows分区里的资料.ntfs-3g这个软件能解决此问题. ...

  8. fat,fat32,ntfs,ext2,ext3等 文件系统说明

    A.FAT16(最大分区2GB,最大文件2GB ,最大容量) 在说明FAT16文件系统之前,我们必须清楚FAT是什么?FAT(File Allocation Table)是"文件分配表&qu ...

  9. NTFS, FAT32和exFAT文件系统有什么区别?

    NTFS是目前Windows系统中一种现代文件系统,目前使用最广泛,内置的硬盘大多数都是NTFS格式.FAT32是一种相对老旧的文件系统,不能像NTFS格式支持很多现代文件格式的属性,但对于不同系统平 ...

  10. ubuntu将ntfs格式分区转成ext4格式分区

    一.先查看对应分区: sudo fdisk -l Disk /dev/sda: 120.0 GB, 120034123776 bytes 255 heads, 63 sectors/track, 14 ...

最新文章

  1. 为什么开发人员从Java转到Go
  2. 15 分钟带你入门 sklearn 与机器学习(分类算法篇)
  3. AI基础:词嵌入基础和Word2vec
  4. sql java blob_JAVA和SQL关于BLOB的很大的问题?……
  5. 论文浅尝 - 计算机工程 | 知识图谱可视化查询技术综述
  6. php的cms是什么意思,phpcms是什么系统
  7. (41)时钟组Clock Group介绍
  8. ubuntu 16.0安装mysql8_ubuntu16.0.4 安装 mysql8.0.18的
  9. CSS如何实现数字分页效果
  10. [leetcode]5366. 检查网格中是否存在有效路径
  11. ets5怎么找到数据文件夹_如何对文件夹进行加密
  12. 最新JAVA+Python+大数据资料分享
  13. 爬虫--Scrapy之Downloader Middleware
  14. TF标准模型TensorFlow Mobile for Android
  15. 如何在html修改图片大小,HTML – 如何在CSS中动态调整图像大小?
  16. splash下拉滚动条位置
  17. python 读心术
  18. 利用LSTM进行空气指数预测
  19. matlab一直系统函数画脉冲响应,MATLAB之使用 impz 函数计算并画出脉冲响应
  20. python程序爬电影_Python爬取电影天堂最新发布影片消息

热门文章

  1. java程序猿高考试卷,请注意查收!
  2. JAVA编程基本步骤
  3. web前端入门学习路线{HTML+CSS+JavaScript}最全面的前端教程
  4. wireshark出现rst的原因_多次RST以及不同场景下的RST报文的差异
  5. 桌面扫码点餐系统(小程序+Java后台)
  6. kali钓鱼(超详细)
  7. 争对让望对思野葛对山栀注解_《笠翁对韵》注音注释(四支)
  8. 【文献翻译】利用脑电信号预测癫痫发作的机器学习:综述
  9. torch.sqrt(lhs**2) 与torch.abs(lhs)在pytorch中的差异
  10. 微信朋友圈+html+字体颜色,改变微信聊天字体颜色的方法?