一、Linux原生传统文件系统(系统默认选用的基础款)
这类是Linux诞生早期就陆续支持、专为Linux设计的原生格式,完全适配Linux的权限、软链接、设备文件等专属特性:
- ext2(第二代扩展文件系统)
它是最早普及的Linux通用文件系统,诞生于1993年,最大的特点是结构极其简单,没有日志功能。 - 区别/特点:因为没有日志记录机制,系统突然断电/崩溃后,下次开机需要花费几分钟甚至几十分钟完整扫描整个硬盘才能校验文件完整性;单个文件最大支持2TB,总分区最大容量32TB。
- 适用场景:现在几乎没人用它装系统,唯一的小众用途是做Linux启动U盘、小容量SD卡,因为额外占用的存储空间特别小,不会浪费小容量存储的空间。
- ext3(第三代扩展文件系统)
本质是ext2的“加日志升级款”,2001年发布,和ext2的结构100%兼容,甚至可以直接把ext2分区无损转换成ext3,不用格式化。 - 区别/特点:新增的日志功能会提前记录文件写入的操作轨迹,突然断电后开机几秒就能完成校验修复,不会长时间等待;但它的写入性能、大文件适配性很一般,磁盘容量超过1TB之后性能下降明显。
- 适用场景:现在基本是“退役款”,只有老版本的Linux企业系统还在使用,新机器完全不推荐选,属于承前启后的过渡产品。
- ext4(第四代扩展文件系统)
是目前绝大多数普通桌面Linux、入门服务器Linux的默认预装文件系统,也是兼容性最广的“全能基础款”。 - 区别/特点:把最大单文件上限提升到16TB,总分区容量最大支持1EB(1EB=1048576TB,普通用户根本用不到上限);新增了“延迟分配”“块预分配”机制,连续写入大文件的速度比ext3高30%以上;同时支持SSD的TRIM优化,能延长固态硬盘寿命。它的特性非常均衡,几乎没有硬短板,新手用几乎不会踩兼容性坑。
- 适用场景:90%的普通个人用户、常规家用服务器选它都不会错,兼容所有Linux发行版,网上遇到任何权限、挂载问题都能轻易搜到解决方案。
二、现代高性能特性丰富的主流文件系统(大数据/大存储场景首选)
这类是近10年发展起来的新一代文件系统,解决了ext系列在几十TB大容量磁盘、多磁盘阵列、数据可靠性上的短板:
- XFS(高性能日志文件系统)
原本是SGI公司为超级计算机IRIX系统开发的原生格式,后来移植到Linux,现在是绝大多数RHEL、CentOS等企业级服务器Linux的默认文件系统。 - 区别/特点:天生为大存储优化,单文件最大支持8EB,总分区最大容量更是达到惊人的16EB,你就算组几十块20TB硬盘的RAID阵列,它的性能也不会下降;处理大体积视频、虚拟机镜像、数据库文件的随机读写性能比ext4高很多,同时自带内置的磁盘配额、在线碎片整理工具,不用额外装软件。唯一的小缺点是:小文件(几十KB以内)的写入性能略低于ext4,数据误删后的恢复工具比ext4少,新手误删文件更难找回。
- 适用场景:影音存储服务器、跑数据库的业务服务器、搭建虚拟机集群的主机非常推荐选它,是目前企业级大存储场景的第一选择。
- Btrfs(B-Tree文件系统,也叫“ Butter FS 黄油文件系统”)
是Oracle公司开发的“下一代Linux文件系统”,最大的特点是把很多存储阵列的功能直接内置在了文件系统里,不用额外装软RAID工具。 - 区别/特点:自带实时快照(拍个照就能瞬间把当前磁盘状态备份,恢复的时候几秒就能回滚到历史版本)、子卷(可以把一个大分区拆成多个独立的“虚拟小分区”,互不影响,单独做快照)、透明压缩(存文件的时候自动后台压缩,能省20%-50%的存储空间,完全不用手动操作)、校验自动修复:如果多块磁盘做Btrfs阵列,发现某块磁盘的文件数据出错,会自动用其他磁盘的正确副本把错误文件修好,不用人工干预。缺点是早期版本有一些Bug,现在已经稳定,但部分老版本Linux不支持。
- 适用场景:家用NAS、需要频繁备份系统的桌面用户、喜欢折腾快照防翻车的开发者非常合适,比如你升级系统前拍个快照,升级崩了一秒就能回到升级前的状态,完全不用重装。
三、专为极端场景设计的特殊用途文件系统
这类不是用来装系统、存普通文件的,只针对特定使用场景优化:
- tmpfs(内存临时文件系统)
它根本不往硬盘里存数据,所有内容都直接放在内存里。 - 区别/特点:读写速度是普通SSD的几十上百倍,几乎零延迟,但只要关机/重启,里面所有文件就会全部消失。Linux系统默认会把
/tmp目录挂载成tmpfs,用来存放临时缓存文件,避免频繁写入小缓存拖慢硬盘速度。 - 适用场景:你可以把需要高速读写的临时任务(比如解压大压缩包、视频剪辑临时缓存目录)放到tmpfs里,速度会有质的提升,注意不要往里面存需要永久保留的文件就行。
- sysfs、procfs、devtmpfs 等伪文件系统
这类是Linux系统内置的虚拟文件系统,不占用任何真实磁盘空间,全部是系统内核虚拟出来的。 - 区别/特点:你在
/proc、/sys目录下看到的所有“文件”,都不是存在硬盘上的,是实时展示当前系统的CPU参数、运行状态、硬件信息,修改对应的文件就能直接调整内核参数,普通用户不用手动操作,系统默认自动挂载使用即可。
- squashfs(只读压缩文件系统)
是一种高压缩比的只读文件系统,把文件打包的时候会做极致压缩,10G的系统文件可能压完只有2-3G。 - 区别/特点:压缩后的体积极小,而且只能读取不能随便修改,防误改能力很强。常见于Linux Live CD(不用安装系统直接从U盘启动运行的Linux系统)、嵌入式小容量设备里,用很小的存储空间就能塞下完整的Linux系统。
四、跨平台兼容的交换类文件系统(用来和Windows设备共用存储)
如果你有一个硬盘/U盘需要同时在Linux、Windows、macOS系统上插上去读写,Linux原生格式Windows是认不出来的,这时候就得用跨平台格式:
- FAT32
兼容性无敌,所有新旧操作系统、电视、游戏机、车载影音都能识别,缺点是单文件最大只能放4GB,总分区容量不能超过2TB,存不下高清视频、大镜像这类文件,只适合小于32G的小U盘。 - exFAT
是FAT32的升级款,完全没有单文件4GB的限制,单文件最大支持16EB,存储空间占用极低,兼容Windows和macOS,现在新版本的Linux也默认自带exFAT驱动不用额外安装。 - 适用场景:大容量移动硬盘、U盘用来在不同系统之间传大文件,选exFAT是最优解,比NTFS的兼容性更好、读写开销更小。
- NTFS
Windows的默认文件系统,Linux下只能做到只读稳定写入,写入的时候容易出现权限异常,不推荐把NTFS作为Linux本地磁盘的主格式,只适合偶尔读取Windows NTFS分区的内容。
新手选型快速总结