Skip to content

kche0169/KcheFS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KcheFS - 从小功能开始实现文件系统

KcheFS 是一个用 Go 实现的简易文件系统项目,目标是帮助理解文件系统的基本原理与实现方法。项目模块化设计,便于逐步扩展功能。


目录结构

kchefs/
├── cmd/                 // 可执行程序入口
│   └── kchefs.go
├── fs/                  // 文件系统核心逻辑
│   ├── fs.go            // 文件系统主结构体与操作接口
│   ├── inode.go         // inode、目录项等基础结构与方法
│   ├── file.go          // 文件操作与内容管理
│   ├── dir.go           // 目录操作
│   └── errors.go        // 错误定义与处理
├── storage/             // 存储(如内存、磁盘)实现
│   ├── memory.go        // 内存存储实现
│   └── persist.go       // 持久化存储实现(可选)
├── utils/               // 通用工具函数
│   └── helper.go
├── tests/               // 测试用例
│   ├── fs_test.go
│   └── ...
├── go.mod
└── README.md

功能模块

  1. 基础数据结构

    • 设计文件/目录的结构体(如 File、Directory、Inode)
    • 设计元数据结构(文件名、大小、权限、时间戳等)
  2. 虚拟磁盘或存储管理

    • 内存模拟磁盘块(block)分配与释放
    • 简单的读写接口(如 ReadBlock、WriteBlock)
  3. 文件/目录的创建与删除

    • 实现 CreateFile、DeleteFile、CreateDir、DeleteDir
    • 支持嵌套目录结构
  4. 文件读写

    • 实现 Open、Close、Read、Write 等接口
    • 维护文件指针(offset)
  5. 目录遍历与查找

    • 实现 ListDir(列出目录下所有文件/子目录)
    • 支持按名称查找文件/目录
  6. 简单权限管理

    • 为文件和目录添加基础读写权限控制
  7. 基础错误处理

    • 对非法操作返回合适的错误信息(如文件不存在、权限不足等)
  8. 持久化(进阶)

    • 将内存中的文件系统结构保存到本地文件,实现重启后数据不丢失

开发建议与推荐顺序

  1. 设计数据结构,支持内存中的文件树结构
  2. 实现文件和目录的增删查
  3. 支持文件内容的简单读写
  4. 实现目录遍历和查找
  5. 增加权限管理和基础错误处理
  6. 完善磁盘块管理和优化存储
  7. 实现持久化(可选/进阶)
  8. 更丰富的权限和属性
  9. 支持符号链接或硬链接
  10. 文件系统挂载点,或用 FUSE 让操作系统识别
  11. 并发读写和锁机制
  12. 块管理与空间优化

每完成一个小功能都建议编写简单的测试(如 main 函数或单元测试)保障正确性,逐步掌握文件系统整体架构,随时迭代优化。


贡献和交流

欢迎 issue、PR 和建议!

About

KcheFS 是一个用 Go 实现的文件系统项目

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages