Skip to content

Architecture VFS

Z User edited this page Oct 23, 2026 · 2 revisions

语言:简体中文 | Architecture-VFS-EN

VFS 与文件系统家族

VFS 契约

fs/fs_vfs.{c,h}:一个 API - open/read/write/seek/close/stat/mkdir/rmdir/readdir/lookup - 适用于已注册的文件系统类型。一种类型注册挂载/卸载钩子以及 file_ops 和 dir_ops。全局节点树透明地解析路径并跨越挂载点。

实际行为:节点缓存中的大小写敏感(因文件系统而异),强制权限位(模式 0000 被拒绝),按位写访问检查,i64 寻址,拒绝 umount /,无重复子节点的挂载遮蔽,有界的 list_mounts。

FAT32 (fs/fs_fat32.c)

支持长文件名(LFN)与别名生成 + 碰撞扫描;读取时进行校验和与序列号验证;跨簇长文件名删除并回溯;维护双 FAT 镜像;读取并维护 FSINFO,并在其中保存下一个空闲簇提示。

exFAT (fs/fs_exfat.c)

活动 FAT 跟踪、大写表处理、簇链。

ext4 (fs/fs_ext4.c)

基于扩展区的读写、块组、inode 表。

ramfs (fs/fs_ramfs.c)

易失性根文件系统;稀疏空洞读回时返回零。

/etc 分区

一个挂载在 /etc(配置、SSH 密钥、日志、崩溃转储)上的 32 MiB FAT32 镜像 - 由 Makefile 根据 etc/opencube.conf 构建。它是为这个 otherwise in-memory system(内存系统)提供持久化的解决方案。

测试

fstest(双向断言套件)、fsck、fatstat、fs_mount_test,以及 tests/ 中的宿主侧测试工具(使用 ASAN 的 FAT 结构解析)。回归测试套件在每次启动时运行 fstest。

Clone this wiki locally