核心功能: - ✅ Categories/Series双视图管理(category_view.rs + import_markdown.rs) - ✅ FUSE Multi-Volume支持(tree_type参数) - ✅ SSH/SFTP/SCP/rsync协议完整实现(4042行) - ✅ NFS/SMB Module Phase 1-3完成 - ✅ Archive Module Phase 1-4完成(2916行) - ✅ Download Center API完整实现 - ✅ S3兼容API实现(560行) Git配置修正: - ✅ 删除错误origin(gitea.momentry.ddns.net) - ✅ 删除m5max128(指向机器名) - ✅ 设置origin = m5max128gitea.momentry.ddns.net/admin/markbase - ✅ 设置m4minigitea = m4minigitea.momentry.ddns.net/warren/markbase 数据清理: - ✅ 删除38个临时SQLite(保留accusys.sqlite、demo.sqlite) - ✅ 删除.bak、test_*.bin、调试脚本等临时文件 - ✅ 删除临时目录(build/、download files/、raid_test/等) - ✅ 更新.gitignore排除临时文件 架构优化: - 52个文件修改,2434行新增,4739行删除 - Workspace成员整合(16个crate) - 数据库状态:accusys.sqlite保留(主demo测试) 远程同步: - ✅ 准备推送到m5max128gitea(远程Gitea) - ✅ 准备推送到m4minigitea(本地Gitea)
6.9 KiB
6.9 KiB
ZFS MVP(最小可用版本)设计 ⭐⭐⭐⭐⭐
功能拆解策略
用户要求:不需要实现所有ZFS功能,先将ZFS拆解
MVP原则:最小功能集,验证可行性
ZFS功能拆解分析
Core Features(核心功能)
Level 1: 基础挂载 ⭐⭐⭐⭐⭐ (MVP)
- Pool import(导入现有pool)
- Dataset mount(挂载dataset)
- File read(读取文件)
- Directory listing(目录列举)
- 工作量:约200-300行
Level 2: 基础写入 ⭐⭐⭐⭐⭐
- File write(写入文件)
- File create(创建文件)
- Directory create(创建目录)
- 工作量:约100-150行
Level 3: 基础属性 ⭐⭐⭐⭐
- Get attributes(获取属性)
- Set attributes(设置属性)
- Extended attributes(xattr)
- 工作量:约100-150行
Advanced Features(高级功能)- 暂不实现
Level 4: Pool管理 ⭐⭐⭐⭐ (延后)
- Pool create(创建pool)
- Pool destroy(删除pool)
- Vdev management(设备管理)
- 工作量:约500+行
Level 5: Snapshot ⭐⭐⭐⭐ (延后)
- Snapshot create(创建快照)
- Snapshot rollback(回滚快照)
- Snapshot list(快照列表)
- 工作量:约300+行
Level 6: Compression ⭐⭐⭐⭐ (延后)
- Compression on/off
- Compression algorithm选择
- 工作量:约200+行
Level 7: Send/Receive ⭐⭐⭐⭐ (延后)
- ZFS send(发送流)
- ZFS receive(接收流)
- 工作量:约500+行
MVP必需FSKit Operations
必需实现(最小集)
FSVolume.Operations 必需方法(约10个):
// Level 1: 基础挂载和读取
func activate(options: FSTaskOptions) async throws -> FSItem
func lookupItem(named: FSFileName, inDirectory: FSItem) async throws -> (FSItem, FSFileName)
func enumerateDirectory(...) async throws -> FSDirectoryVerifier
// Level 2: 基础写入
func createItem(named: FSFileName, type: FSItem.ItemType, ...) async throws -> (FSItem, FSFileName)
func removeItem(...) async throws
// Level 3: 属性
func attributes(_ item: FSItem) async throws -> FSItem.Attributes
// 必需辅助方法(约5个)
func deactivate(options: FSDeactivateOptions) async throws
func synchronize(flags: FSSynchronizeFlags) async throws
func reclaimItem(_ item: FSItem) async throws
可选延后(约8个):
// 高级功能,MVP不实现
func readSymbolicLink(...) async throws -> FSFileName
func createSymbolicLink(...) async throws -> (FSItem, FSFileName)
func createLink(...) async throws -> FSFileName
func renameItem(...) async throws -> FSFileName
func getXattr(...) async throws -> Data
func setXattr(...) async throws
func listXattrs(...) async throws -> [String]
func removeXattr(...) async throws
MVP实现策略 ⭐⭐⭐⭐⭐
Phase 1: Level 1基础挂载(约200行)
核心功能:
- Pool import(读取现有ZFS pool metadata)
- Dataset mount(创建FSVolume)
- File read(通过libzfs user-space)
- Directory listing(列举dataset文件)
FSKit实现:
activate: 返回root itemlookupItem: 查找文件/目录enumerateDirectory: 列举目录内容attributes: 基础属性
预计工作量:约200行 Swift + 100行 C(libzfs wrapper)
Phase 2: Level 2基础写入(约100行)
核心功能:
- File write(写入数据)
- File create(创建新文件)
- Directory create(创建目录)
FSKit实现:
createItem: 创建文件/目录removeItem: 删除文件/目录- OpenClose + IO operations
预计工作量:约100行 Swift
Phase 3: Level 3基础属性(约100行)
核心功能:
- Get/set attributes
- Extended attributes(ZFS properties)
FSKit实现:
attributes: 完整属性- XattrOperations(可选)
预计工作量:约100行 Swift
MVP总工作量评估 ⭐⭐⭐⭐⭐
重新评估:
| 方面 | MVP工作量 | 评估 |
|---|---|---|
| FSKit Volume | 约400-500行 | ⭐⭐⭐⭐ 大幅降低 |
| libzfs wrapper | 约200行 | ⭐⭐⭐⭐ |
| 测试和文档 | 约100行 | ⭐⭐⭐⭐ |
| 总工作量 | 约700-800行 | ⭐⭐⭐⭐⭐ |
| 开发时间 | 约2-3 weeks | ⭐⭐⭐⭐⭐ |
对比:
- 完整ZFS:15-20 months → MVP:2-3 weeks
- 从 ⭐⭐⭐ → ⭐⭐⭐⭐⭐
MVP架构设计 ⭐⭐⭐⭐⭐
ZFS MVP (Level 1-3)
│
├── FSKit Layer (Swift)
│ ├── HelloFS (FSUnaryFileSystem)
│ │ ├── probeResource (接受ZFS pool)
│ │ ├── loadResource (加载dataset)
│ │ └── unloadResource
│ │
│ ├── ZFSVolume (FSVolume + 必需protocols)
│ │ ├── activate (返回root)
│ │ ├── lookupItem (查找文件)
│ │ ├── enumerateDirectory (列举目录)
│ │ ├── createItem (创建文件)
│ │ ├── removeItem (删除文件)
│ │ ├── attributes (获取属性)
│ │ └── deactivate
│ │
│ └── ZFSItem (FSItem)
│ ├── name, id, attributes
│ └── content (Data)
│
├── libzfs Wrapper (C + Swift FFI)
│ ├── zpool_import (导入pool)
│ ├── zfs_open (打开dataset)
│ ├── zfs_read (读取数据)
│ ├── zfs_write (写入数据)
│ └── zfs_list (列举文件)
│
└── ZFS User-Space Core (C)
├── SPA (Storage Pool Allocator)
├── DMU (Data Management Unit)
├── DSL (Dataset Layer)
└── ZPL (ZFS POSIX Layer)
MVP优先级 ⭐⭐⭐⭐⭐
立即实现(Level 1):
- ✅ Pool import(读取现有pool)
- ✅ Dataset mount(创建FSVolume)
- ✅ File read(读取文件)
- ✅ Directory listing
次要实现(Level 2): 5. ⏸️ File write 6. ⏸️ File create/delete
延后实现(Level 3+): 7. ⏸️ Advanced attributes 8. ⏸️ Snapshot operations 9. ⏸️ Compression 10. ⏸️ Send/receive
MVP验证目标 ⭐⭐⭐⭐⭐
验证目标:
- ✅ 能导入现有ZFS pool
- ✅ 能挂载ZFS dataset
- ✅ 能读取ZFS文件
- ✅ 能列举ZFS目录
- ✅ 基础功能可用
不验证(延后):
- ❌ Pool创建
- ❌ Snapshot操作
- ❌ 高级压缩
- ❌ Send/receive
MVP vs 完整ZFS对比
| 功能 | MVP | 完整ZFS | 差距 |
|---|---|---|---|
| Pool管理 | Import only | Create/Destroy/Vdev | 90%减少 |
| Dataset | Mount only | Create/Destroy/Snapshot | 80%减少 |
| File Ops | Read/Write/Create | Full POSIX | 50%减少 |
| Attributes | Basic | Full + xattr | 60%减少 |
| Snapshot | ❌ None | ✅ Full | 100%减少 |
| Compression | ❌ None | ✅ lz4/zstd | 100%减少 |
| Send/Receive | ❌ None | ✅ Full | 100%减少 |
| 工作量 | 700行 | 135,000行 | 99%减少 |
| 时间 | 2-3 weeks | 15-20 months | 95%减少 |