那些年使用过的文件系统

文件系统对于大部分开发者来说和操作系统一样是水面下的冰山,文件系统是广义的操作系统的一部分。最开始意识到和开始学习文件系统是我在 2013 年左右进入大学有自己笔记本折腾 Linux 安装 Ubuntu 的时候。

Ubuntu 的安装选项提供了很多个文件系统让你选择。尤其是后来又有 LVM 的概念,这一块就更复杂了,那时候还有旺盛的好奇心,每个都试了一下还去对比每个的区别和优缺点。

按照使用过的时间线分享下用过的文件系统吧。

那些年使用过的文件系统

File System

先来一个概述,我觉得文件系统可以简单分为 4 类。以下都是我用过的。

  1. 简单文件系统,代表有 FAT32、exFAT、Ext2 等等最简单的
  2. 日志型文件系统,代表有 NTFS (初版)、Ext4、XFS、UFS、HFS+ 等等设计上先写日志更容易保持一致性,并且可以较快恢复。
  3. 高级文件系统,代表有 Btrfs、ZFS、APFS、ReFS 等,在日志型文件系统的基础上提供比如快照,压缩等等高级功能。
  4. 分布式存储系统,代表有 Ceph 等,它们已经不能简单定义为文件系统了,例如 Ceph 基于 RADOS无限扩展的分布式存储集群,提供同时包括对象、块设备、和文件的存储服务,能拿来对标的只是其中的 CephFS。

因为文件系统往往和操作系统高度绑定,简单总结一下兼容。

  1. Windows 一般除了 NTFS 和几乎没有投入使用的 ReFS 还有 FAT 系列其他基本无法使用。
  2. Linux 发行版和其他 Unix-like 操作系统无法使用 macOS 下的 HFS+ 和 APFS 等,但是可以兼容处理读写 Windows 下的 NTFS、FAT 系列。除了 Linux 之外的其他 Unix-like 无法使用 Btrfs。
  3. macOS 只支持 HFS+ 和 APFS 等,可以兼容 FAT 系列和通过第三方软件读写 NTFS。

这么一圈看下来各个操作系统原生支持读写的文件系统只剩下了 FAT 系列,exFAT 微软还有专利大部分不是原生支持。

FAT32 / exFAT

目前算是最广泛使用的文件系统,实现一个 FAT32 大概只需要 1000 行左右的 C 代码。接触到 FAT32 的时候我还没有自己的电脑,当时我是学校机房的管理员,协助管理学校机房大概 200台电脑。运行的是 Windows XP 然后安装了还原卡。FAT32 单文件最大容量只支持 4GB,如果想要突破这个限制需要后来微软更新的 exFAT。但是 Windows XP 并没有 exFAT 的原生支持。只好 U 盘两个分区,第一个 FAT32 分区放驱动。

FAT 系列算是巨大的成功,在格式化 U 盘的时候一般默认选择 FAT32。但是 FAT32 和 exFAT 并不是一个日志文件系统,在掉电和突发异常时无法恢复。这也是 U 盘存储文件不稳定的一个比较重大的原因。

Ext4 / XFS

目前 Linux 发行版最广泛使用的两个,Ext4 是 Ext3 的升级,绝大多数 Linux 发行版的默认文件系统,Red Hat 系默认使用 XFS。这两个非常相似,放在一起吧。

因为是 Ubuntu 的默认文件系统,在 2013 年开始使用 Ext4。

Btrfs

接触到的第一个高级文件系统,在试用 openSUSE 的时候快照和透明压缩给我了很深的印象。GPL 版本的 ZFS(个人观点)。

HFS+

是 macOS 在 APFS 之前的默认文件系统,历经 20 多年的修修补补。有几篇系列文章讲了这个 HFS+的前世今生非常推荐。但是我找不到了,找到再更新。

ZFS

随着我逐渐使用 FreeBSD,FreeBSD 默认支持 ZFS,ZFS 称为地表最强文件系统,最后一个文件系统,但是有许可证问题,随着 OpenZFS 的成熟,Linux 发行版开始和 BSD 系使用一样的代码。

ZFS 文件系统是一种革新性的新文件系统,可从根本上改变文件系统的管理方式,并具有目前面市的其他任何文件系统所没有的功能和优点。ZFS 强健可靠、可伸缩、易于管理。

直至现在,我工作机依然使用的是 ZFS。

APFS

新版 macOS 从 HFS+ 升级到了 APFS,带来了文件系统的高级功能,快照,透明压缩这些高级功能 macOS 也可以很好的使用了。但是生态是封闭的,没多少资料。

Ceph

在 2020 年的时候,我开始做私有云和容器化还有 DevOps 咨询,Ceph 是一个分布式的存储系统,以上所有的都是单机,但是 Ceph 这种是分布式的,而且是一个庞大的系统,文件系统是其中的一部分概念,以后慢慢讲。

总结

我现在使用的大概是 3 个,笔记本是 APFS,工作机是 ZFS,管理的云服务一般使用 Ext4。这几年文件系统风起云涌,期待有超越 ZFS 的单机文件系统和 超越 Ceph 的分布式存储系统的出现。

更新

现在全 ZFS 和 Ext4 了,抛弃了苹果生态。

(0)
ChaoChao
上一篇 08/08/2023
下一篇 08/21/2023

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注