For most users,the file system is the most visible aspectof an operating system. It provides the mechanism for on-line storage of and access to both data and programs of the operating system and all the users of the computer system. — Operating System Concept

本文还可以在memoro.moe在线阅读🔗Link

文件系统本质上是一组数据结构,文件系统作为操作系统的一部分,承载着上层应用和底层储存设备的数据传输。

最近在折腾使用的ZFS作为默认文件系统的trunas scale,借此契机研究一下文件系统。

本文将会讲述几种较为流行/有特色的文件系统的特点,以及文件系统的工作原理的一部分(主要是ext4)。文章的最后还会简单的讲讲文件系统的创建和使用。

Ext 1-4

Ext (Extended file system)

wikipedia: ext

linux最初使用minix file system,这个文件系统有许多局限,例如分区大小不能超过64MiB,文件名长度不能超过14个字符。

开发者Rémy Card为了解决这些不足,设计了ext文件系统。

ext是首个专为linux内核开发的文件系统,也是首个使用VFS API的文件系统,在1992年4月发表

ext最大可以存放2GiB大小的数据,文件名最大长度也增加到了255个字符。

Ext2

但Ext文件系统依然有许多限制,例如inode不变性和碎片化问题,ext的继承者ext2,同样由Rémy Card设计,在1993年1月发布。

相比前辈ext,ext2最大文件大小拓展至2TiB,最大卷容量在后期达到32TiB。

ext2取得了相当大的成功,使得minix file system在linux使用者中逐渐变得无人问津。

ext2在当时成为了许多linux发行版的默认文件系统,例如Debian。

实际上ext2直到现在仍在被使用,例如u盘和引导分区中,Ext2并不是一个日志文件系统,但也因此有着更优的性能和更少的读写量(闪存存储器的寿命是有限的)。

Ext3

ext3在2001年11月发布,由Stephen Tweedie等人开发。