主流文件系统介绍
主流文件系统介绍
主流开源文件系统
| 文件系统 | “寻址大文件”的主结构 | 是否全局 COW | 端到端数据校验 | 原生快照/克隆 | 日志机制 | 典型大小上限(4 KiB 块,常见实现) | inode 大小 isize(默认/范围) | inode 编号位宽 | 备注 |
|---|---|---|---|---|---|---|---|---|---|
| ext2 | 传统 inode:12 直接 + 单/双/三重间接 | 否 | 否 | 否 | 无日志 | 单文件常见 ≤ 2 TiB;卷常见 ≤ 16 TiB | 128 B 固定(可格式化时选 256 以兼容 ext4 工具) (Kernel.org) | 32 位(on-disk 语义与工具普遍按 32 位处理) (nongnu.org) | 128B isize 时代字段拥挤;不支持扩展时间戳等新特性。 |
| ext3 | 与 ext2 相同(块映射 + 多级间接) | 否 | 否 | 否 | JBD | 单文件常见 ≤ 2 TiB;卷常见 ≤ 16 TiB | 通常 128 B;可用较大 isize 的变体/工具,但生态普遍仍以 128 B 为主 (students.mimuw.edu.pl) | 32 位 | 结构仍是“逐块+间接块”;加了日志但大文件元数据开销较大。 |
| ext4 | extent +(固定深度)extent 树 | 否(就地写 + 延迟分配) | 元数据 CRC32C | 否 | JBD2 | 单文件常见 ≤ 16 TiB;卷理论至 1 EiB(发行版支持值可能更低) | 默认 256 B;通过 s_inode_size 统一设置;i_extra_isize 支持逐步扩展字段;128B isize 会丢失 2038+ 扩展时间戳/项目ID/部分 xattr 内嵌能力 (Kernel.org) |
32 位(VFS 可 64 位,但 ext4 on-disk inode 编号语义以 32 位为主;ext4 的“64bit”特性是块数/元数据扩大,不等于 inode 编号 64 位) (infradead.org) | 建议保持 256B isize:可用扩展时间戳、校验、内嵌 xattr,性能/可靠性更稳。 (man7.org) |
| XFS | B+Tree 全面化 + extent + 多 AG 并行 | 否(支持 reflink 按需 COW) | 元数据 CRC32C(v5) | 文件级克隆(reflink) | 日志(事务) | 单文件/卷理论 ≤ 8 EiB(厂商支持值可能下调) | 典型 256 B(可更大;少数场景会调) (Reddit) | 64 位(默认);如应用不兼容大 inode 号,可 -o inode32 强制 <2³²,但会改变分配行为,官方不建议轻用) (man7.org) |
大位宽 inode 号常见于超大卷/多 AG;老应用若假设 32 位需注意。 |
| ZFS / OpenZFS | 块指针树 + 间接块(事务性 COW,对象模型/DMU) | 是 | 数据+元数据(读时校验自愈) | 有(snapshot/clone/send/recv) | 事务组提交 | 单文件 ~16 EiB;池为 128 位寻址级别(受实现/硬件限制) | 非传统“固定 isize”概念(ZFS 的 dnodes 记录对象元数据;大小按需要分配) (Unix & Linux Stack Exchange) | 64 位 对象 ID 暴露为 inode(同一 dataset 内稳定;跨 dataset/发送接收会变) (Server Fault) | stat 看到的“inode”是对象号;ZFS 动态分配 dnode,不会像 ext* 那样预分配固定数量 inode。 |
| Btrfs | 多棵 B-tree(文件/extent/校验/设备…)+ 回溯引用 + COW | 是 | 数据+元数据 CRC32C | 有(子卷/快照/克隆/发送接收) | 元数据事务 + COW | 单文件/卷理论 ≤ 16 EiB | 同样无传统固定 isize;inode 元数据作为 B-tree 项存放(随特性演进) | 64 位(每个子卷内唯一;全局不唯一——NFS/备份工具要考虑子卷维度) (LWN.net) | df -i 常显示“0 可用 inode”属正常:Btrfs/ZFS 动态分配“inode”等价物,不预留固定配额。 (mpdesouza.com) |
“isize vs inode number length” 要点
- isize(on-disk inode 大小):指单个 inode 记录占用的字节数。
- 在 ext2/ext3 时代典型为 128 B;ext4 默认 256 B,并允许更大,以容纳 扩展时间戳(解决 2038 问题)、校验/项目 ID、内嵌 xattr、extent 头/额外字段等;128 B 的旧 isize 在功能与可靠性上都有明显局限。(Kernel.org)
- XFS/Btrfs/ZFS 不以“统一固定 isize 表”来预分配所有 inode:XFS 虽有 inode 记录大小(常 256 B),但整体是面向 B-tree/AG 的可扩展布局;Btrfs/ZFS 则按需动态化管理“inode 等价物”。(Reddit)
- inode number length(inode 编号位宽):指文件“编号”可取的范围,直接影响兼容性。
- ext2/ext3/ext4:普遍32 位语义(ext4 的 64bit 特性是扩大块号/组描述符等容量,与 inode 编号位宽不同)。一些用户态/内核接口可用 64 位
ino_t,但 on-disk 及生态假设仍以 32 位为主。(infradead.org) - XFS:64 位 inode 号 默认启用;遇到旧应用只认 32 位,可用
inode32兼容开关,但不建议随意用。(man7.org) - ZFS:把对象 ID(64 位) 暴露为 inode;Btrfs 也使用 64 位,但每个子卷独立编号,非全局唯一(NFS/备份要结合子卷 ID)。(Server Fault)
- ext2/ext3/ext4:普遍32 位语义(ext4 的 64bit 特性是扩大块号/组描述符等容量,与 inode 编号位宽不同)。一些用户态/内核接口可用 64 位
实务建议:
- ext4 新建文件系统请保持 isize=256B(或更大)以获得扩展时间戳/元数据校验与更好 xattr 内嵌能力;避免遗留 128B isize。(man7.org)
- 若你的应用或中间件假设 inode 号 <2³²,在 XFS 上请评估是否需要
-o inode32,并充分测试其副作用(空间分配倾斜、潜在 ENOSPC)。(Red Hat Docs)- Btrfs/ZFS 上,“可用 inode 数量”为动态概念;不要用
df -i的传统阈值去报警,改用块/元数据空间水位与 scrub/校验指标做运维门槛。(mpdesouza.com)
主流厂商型文件系统
如 NetApp ONTAP/WAFL、Dell PowerScale OneFS、Dell Unity UFS64、Dell PowerStore(DRE 架构,含其 NAS FS)以及 Huawei OceanStor(Dorado / Pacific 分布式)。
注:厂商系统经常把“文件系统 + 存储池/RAID/纠删码 + 复制/快照”深度耦合。容量/上限常与版本和机型相关,下表给出主流版本的典型值/公开上限,并附来源。
| 系统 | “寻址大文件”的主结构 | 是否 COW/ROW | 端到端数据校验 | 快照/克隆 | 事务/日志 | 典型大小上限(示例版本) | isize / 等价物 | inode 编号位宽/说明 | 关键点 |
|---|---|---|---|---|---|---|---|---|---|
| NetApp ONTAP / WAFL | 元数据存“文件里”(inode file、block-map 等);多级间接 + 写到任意位置 | ROW/Redirect-on-write(不覆写旧块) | 元数据/数据均受块校验与一致性点(CP)保护 | Snapshot/FlexClone 极轻量 | 一致性点 + NVRAM/NVMEM 日志 | 文件至 128 TB(9.12.1P2+);FlexVol至 300 TB;FlexGroup至 60 PB(需开启“大卷/大文件”) (docs.netapp.com) | inode ~288 B(9.x);最小文件 <64 B 可内嵌于 inode (NetApp Knowledge Base) | 每卷可至 ≈2,040,109,451 个 inode;对外 fileid 取决于协议/NFS 客户端能力 (docs.netapp.com) | Snapshot 基于“复制根 inode”的时间点视图;卷内 inode 配额需规划。(docs.netapp.com) |
| Dell PowerScale OneFS | 全分布式并行 FS;数据/元数据跨节点条带化;大量使用 B-tree | 就地写为主;支持条带与纠删码级别保护 | 元数据校验(v5 时代起增强);平台提供在线校验与重建 | 原生快照、文件级保护策略 | 日志 + N+M 保护 | 文件至 16 TB(≥8.2.2);集群至PB 级(视节点池/保护级别) (Dell) | LIN(逻辑 inode):典型 512 B(亦可 8 KB) (Dell) | LIN 为 64-bit;对 NFS 可强制返回 32-bit fileid 兼容旧应用 (Dell) | 保护级别 N+M/FlexProtect 可在线切换;B-tree/条带面向亿级对象扩展。(Dell) |
| Dell Unity UFS64 | 64-bit 文件系统;面向事务/传统 NAS 的混合负载 | 指针型轻量快照/薄克隆 | 元数据一致性与日志回放 | 最多 256 个快照/FS(机型/版本不同)+ 薄克隆 | 内存日志回放 + 快速故障切换 | 单个文件系统常见 ≤256 TB(资料示例);阵列整体视机型而定 (Dell) | 供应商未公开“固定 isize”;UFS64 为自研结构 | 对外 fileid 由协议栈导出(64-bit 能力) | 统一块/文件快照运维界面,UFS64 为 Unity 代际 FS(区别于旧 VNX 的 UFS32)。(Dell) |
| Dell PowerStore(NAS FS / 平台) | 平台层用 DRE(Dynamic Resiliency Engine) 做块级虚拟化与纠删;其上提供文件/块/vVol | COW/指针式快照与精简克隆 | 平台数据校验 + DRE 分布式重建 | 原生快照/复制;多设备集群 | 事务 + 分布式保护 | 容量可至 23 PBe+(平台总容量,型号相关) (govconnection.com) | 不公开固定 isize;文件系统随平台演进 | 对外 fileid 受协议/实现影响 | DRE 消除了传统热备盘,按“RRS 域”分布式重建(SP/DP 容忍) (Dell) |
| Huawei OceanStor Dorado(NAS) | 全闪存阵列上的厂商 FS;面向文件的快照/复制等 | 指针式快照为主 | 平台级校验与可靠性机制 | GUI 创建/管理 文件系统快照 | 事务/一致性域 | 容量取决于型号/池 | 未公开固定 isize(厂商私有实现) | 对外 fileid 由协议导出 | Dorado 提供文件系统级快照/回滚/克隆工作流。(华为支持) |
| Huawei OceanStor Pacific(并行/分布式) | 分布式并行文件系统;全对称 scale-out;支持 POSIX/NFS/SMB/S3/HDFS | COW/对象化策略(视功能启用) | 平台提供冗余与校验 | 原生保护/快照(随版本) | 分布式事务 | 面向 海量非结构化(PB~EB 级) (Huawei Enterprise) | 不公开固定 isize;元数据分布式管理 | 对外 fileid 受协议与实现约束 | 面向 HPDA/AI 场景的多协议统一命名空间。(Cristie Data GmbH) |
补充:isize 与 inode 编号位宽(面对厂商 FS 怎么看)
- isize 在 ext2/3/4 等传统 FS 是“每个 on-disk inode 占多少字节”的固定常量;但在 WAFL/OneFS/PowerStore/OceanStor 这类系统里,inode 常作为内部对象存放在专用“inode 文件”或分布式元数据结构中,并不暴露“mkfs -I=xxx”这类参数:
- WAFL 明确给出 “每个 inode ≈ 288 B”,且最小小文件可内嵌于 inode(<64 B)。(NetApp Knowledge Base)
- OneFS 的 LIN 通常 512 B(亦支持 8 KB 以适配高密盘),LIN→inode 镜像地址通过 B-tree 映射。(Dell)
- PowerStore/Unity/OceanStor 官方文档不公开固定 isize;可把它们视作“平台内置的 inode 等价物”,由系统按需管理。
- inode 编号位宽:
- OneFS:64-bit LIN 是常态,NFS 可按需降为 32-bit 以兼容旧程序(存在 wrap 风险)。(Dell)
- WAFL:每卷 inode 上限约 2.04 × 10⁹;对外 fileid 取决于协议/客户端位宽(NFSv3/v4 等)。(docs.netapp.com)
- Unity/PowerStore/OceanStor:不公开位宽细节;面向现代协议与 64-bit
ino_t的生态,一般把 fileid 视为64-bit 能力,具体取决于协议与设备固件。
什么时候选这些厂商 FS?
- 海量快照/克隆、复制编排、与虚拟化/数据库深集成:ONTAP/WAFL 的 Snapshot/FlexClone/ SnapMirror 生态成熟(现已支持128 TB 文件、300 TB FlexVol、60 PB FlexGroup)。(docs.netapp.com)
- 单一命名空间的横向扩展 NAS:PowerScale OneFS 的 N+M 保护、在线变更保护级别、B-tree 元数据与亿级对象伸缩能力突出。(Dell)
- 统一块/文件/vVol 与快速重建:PowerStore 依靠 DRE 做分布式纠删与无专用热备、快速重建,平台级容量与 HA 侧重明显。(Dell)
- 面向全闪或多协议的企业 NAS / 分布式并行:Huawei OceanStor Dorado/Pacific 提供 GUI 运维的文件系统快照、分布式并行与多协议(POSIX/NFS/SMB/S3/HDFS)接入。(华为支持)
This post is licensed under
CC BY 4.0
by the author.

