Skip to content

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

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages