Files
markbase/MarkBaseFS/docs/PHASE3_PLAN.md
Warren 1300a4e223
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
MarkBase架构升级:Multi-Volume Virtual Tree + Dual-View Management + Git Remote修正
核心功能:
-  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)
2026-06-12 12:59:54 +08:00

755 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MarkBaseFS Phase 3详细规划
**版本1.0**
**日期2026-05-26**
**状态等待Block Storage Device Entitlement审批**
---
## 目录
1. [Phase 3概述](#phase-3概述)
2. [DriverKit Entitlement审批状态](#drivertitlement审批状态)
3. [HDD DriverKit驱动实现](#hdd-driverkit驱动实现)
4. [Object Storage DriverKit驱动实现](#object-storage-driverkit驱动实现)
5. [NVMe DriverKit驱动实现](#nvme-driverkit驱动实现)
6. [MarkBaseFS Integration](#markbasefs-integration)
7. [开发时间规划](#开发时间规划)
8. [技术风险与缓解策略](#技术风险与缓解策略)
9. [验收标准](#验收标准)
---
## Phase 3概述
### 目标
**实现MarkBaseFS四层存储系统的DriverKit驱动层**
### 四层存储架构
| Tier | 技术 | Entitlement | 审批状态 | 开发优先级 |
|------|------|------------|----------|-----------|
| **NVMe tier** | Thunderbolt 5 NVMe SSD | Block Storage Device | ⏳ 待审批 | P1最高性能|
| **HDD tier** | Thunderbolt 3 HDD RAID | SCSI Controller | ✅ 已通过 | P2高容量|
| **Object Storage tier** | S3/MinIO/Ceph | Networking | ✅ 已通过 | P3云端扩展|
| **Debug Kit tier** | USB设备访问 | 无需Entitlement | ✅ 无需审批 | P4调试支持|
### DriverKit Extension Bundle配置问题
**关键技术发现xcodegen不支持DriverKit Extension Bundle配置 ❌**
| 配置项 | 需求 | 当前状态 | 说明 |
|--------|------|----------|------|
| **Target类型** | DriverKit Extension Bundle | ❌ xcodegen不支持 ❌ | 需要手动创建 ✅✅✅ |
| **SDK链接** | DriverKit.framework | ❌ 未链接 ❌ | 需要手动配置 ✅✅✅ |
| **DriverKit Family SDK** | SCSIControllerDriverKit.framework + NetworkDriverKit.framework | ❌ 未链接 ❌ | 需要手动配置 ✅✅✅ |
**解决方案:**
**选项A等待Block Storage Device审批通过推荐✅✅✅**
- 等待1-7天审批 ⏳
- 使用正确entitlements重新实现 ✅✅✅
- 避免配置问题浪费时间 ✅✅✅
**选项B手动创建DriverKit Extension Bundle**
- 使用Xcode手动创建DriverKit Extension target ✅✅✅
- 配置DriverKit SDK链接 ✅✅✅
- 测试Networking + SCSI Controller Entitlement ✅✅✅
- 预计耗时1-2天 ⏳
---
## DriverKit Entitlement审批状态
### 当前审批状态
| Entitlement | 用途 | Request ID | 审批状态 | 申请日期 |
|------------|------|-----------|----------|----------|
| **DriverKit Family: Networking** | Object Storage Driver | `8B3NMV8K76` | ✅ 已通过 | 2026-05-24 |
| **DriverKit Family: SCSI Controller** | HDD Driver | `8B3NMV8K76` | ✅ 已通过 | 2026-05-24 |
| **DriverKit Family: Block Storage Device** | NVMe Driver | `8B3NMV8K76` | ⏳ 再次申请 | 2026-05-25 |
### 审批预计时间
- **Networking + SCSI Controller**:✅ 已通过2天
- **Block Storage Device**:⏳ 再次申请预计1-7天
### 审批通过后的行动
**Block Storage Device Entitlement审批通过后**
1. **更新entitlements.plist**
```xml
<key>com.apple.developer.driverkit.family.block-storage-device</key>
<true/>
```
2. **重新编译NVMe DriverKit驱动**
- 链接BlockStorageDeviceDriverKit.framework
- 测试NVMe设备访问
3. **开始NVMe tier开发**
- Thunderbolt 5 NVMe SSD驱动
- 性能目标6000-7000MB/s
---
## HDD DriverKit驱动实现
### Entitlement状态
- **SCSI Controller Entitlement**:✅ 已通过
- **开发优先级**P2
- **预计开始时间**Block Storage Device审批通过后
### 技术架构
**Thunderbolt 3 HDD RAID System**
```
Thunderbolt 3 Port (40Gbps)
LSI3108 Hardware RAID Controller
HDD Array (RAID 6)
HDD DriverKit Driver
MarkBaseFS Volume
```
### 关键技术
| 技术点 | 说明 | API |
|--------|------|-----|
| **设备发现** | Thunderbolt设备枚举 | IOServiceMatching |
| **SCSI命令** | SCSI命令传输 | IOSCSIController |
| **RAID管理** | LSI3108 RAID状态 | SCSI Controller DriverKit |
| **性能监控** | I/O性能统计 | IOStatistics |
### DriverKit API
**SCSIControllerDriverKit.framework**
```swift
import DriverKit
import SCSIControllerDriverKit
class HDDTestDriver: IOSCSIController {
// SCSI Controller Entitlement
// Thunderbolt 3 HDD RAID
private var raidController: LSI3108Controller?
private var volumes: [HDDVolume] = []
override init() {
super.init()
print("HDDTestDriver initializing...")
}
override func Start() -> IOReturn {
print("HDDTestDriver Start() called")
// 初始化LSI3108 RAID Controller
initializeRAIDController()
// 发现HDD卷
discoverHDDVolumes()
// 测试HDD operations
testHDDOperations()
return kIOReturnSuccess
}
func initializeRAIDController() {
print("Initializing LSI3108 RAID Controller...")
// LSI3108初始化代码
// 配置RAID模式RAID 6
// 设置缓存策略
}
func discoverHDDVolumes() {
print("Discovering HDD volumes...")
// 枚举HDD卷
// 获取容量信息
// 检查健康状态
}
func testHDDOperations() {
print("Testing HDD operations...")
// 测试读写性能
// 测试RAID重建速度
// 测试错误处理
}
}
```
### 性能目标
| 指标 | 目标值 | 测量方法 |
|------|--------|----------|
| **读取速度** | 3000-4000 MB/s | Thunderbolt 3带宽 |
| **写入速度** | 2500-3500 MB/s | RAID 6性能 |
| **延迟** | <10ms | IOPS测试 |
| **并发** | 10用户并发访问 | 压力测试 |
### 实现步骤
**Phase 3.1: HDD DriverKit驱动开发预计2周**
1. **创建HDD DriverKit Extension Bundle**
- 手动创建DriverKit Extension target避免xcodegen限制
- 配置SCSIControllerDriverKit.framework链接
- 设置entitlements
2. **实现设备发现**
- Thunderbolt设备枚举
- LSI3108 RAID Controller初始化
- HDD卷发现
3. **实现SCSI命令传输**
- SCSI命令构造
- 命令传输接口
- 错误处理
4. **实现RAID管理**
- RAID状态监控
- 重建进度跟踪
- 故障检测
5. **性能优化**
- 命令队列优化
- 缓存策略优化
- 并发访问优化
### 验收标准
- ✅ Thunderbolt 3 HDD RAID成功识别
- ✅ LSI3108 RAID Controller初始化成功
- ✅ HDD卷挂载成功
- ✅ 读写性能达到目标
- ✅ RAID 6功能正常
- ✅ 错误处理正确
---
## Object Storage DriverKit驱动实现
### Entitlement状态
- **Networking Entitlement**:✅ 已通过
- **开发优先级**P3
- **预计开始时间**Block Storage Device审批通过后
### 技术架构
**Object Storage Integration**
```
MarkBaseFS Volume
Object Storage DriverKit Driver
HTTP/HTTPS API
┌─────────┬─────────┬─────────┐
│ S3 │ MinIO │ Ceph │
└─────────┴─────────┴─────────┘
```
### 关键技术
| 技术点 | 说明 | API |
|--------|------|-----|
| **HTTP客户端** | HTTP/HTTPS请求 | NetworkDriverKit |
| **S3 API** | S3兼容API | REST API |
| **认证** | AWS Signature v4 | HTTP Header |
| **缓存** | 本地缓存优化 | SQLite |
### DriverKit API
**NetworkDriverKit.framework**
```swift
import DriverKit
import NetworkDriverKit
class ObjectStorageTestDriver: IONetworkController {
// Networking Entitlement
// S3/MinIO/Ceph support
private var s3Client: S3Client?
private var minioClient: MinIOClient?
private var cephClient: CephClient?
override init() {
super.init()
print("ObjectStorageTestDriver initializing...")
}
override func Start() -> IOReturn {
print("ObjectStorageTestDriver Start() called")
// 初始化Object Storage客户端
initializeClients()
// 测试Object Storage operations
testObjectStorageOperations()
return kIOReturnSuccess
}
func initializeClients() {
// 初始化S3客户端
initializeS3Client()
// 初始化MinIO客户端
initializeMinIOClient()
// 初始化Ceph客户端
initializeCephClient()
}
func testObjectStorageOperations() {
// 测试S3 operations
testS3Operations()
// 测试MinIO operations
testMinIOOperations()
// 测试Ceph operations
testCephOperations()
}
}
```
### 性能目标
| 指标 | 目标值 | 测量方法 |
|------|--------|----------|
| **上传速度** | >100 MB/s | 大文件上传 |
| **下载速度** | >100 MB/s | 大文件下载 |
| **延迟** | <100ms | 小文件访问 |
| **并发** | 10并发上传/下载 | 压力测试 |
### 实现步骤
**Phase 3.2: Object Storage DriverKit驱动开发预计1周**
1. **创建Object Storage DriverKit Extension Bundle**
- 手动创建DriverKit Extension target
- 配置NetworkDriverKit.framework链接
- 设置entitlements
2. **实现HTTP客户端**
- HTTP/HTTPS请求封装
- 认证处理AWS Signature v4
- 错误处理
3. **实现S3 API**
- Bucket操作创建、删除、列表
- Object操作上传、下载、删除
- 分片上传(大文件)
4. **实现缓存优化**
- 本地SQLite缓存
- LRU缓存策略
- 预加载优化
5. **实现多后端支持**
- S3兼容API
- MinIO适配
- Ceph RADOS Gateway适配
### 验收标准
- ✅ S3 API成功连接
- ✅ MinIO成功连接
- ✅ Ceph成功连接
- ✅ Bucket操作正确
- ✅ Object操作正确
- ✅ 性能达到目标
---
## NVMe DriverKit驱动实现
### Entitlement状态
- **Block Storage Device Entitlement**:⏳ 待审批
- **开发优先级**P1最高性能
- **预计开始时间**Block Storage Device审批通过后
### 技术架构
**Thunderbolt 5 NVMe SSD**
```
Thunderbolt 5 Port (80Gbps)
NVMe SSD Controller
┌─────────┬─────────┬─────────┬─────────┐
│ SSD 1 │ SSD 2 │ SSD 3 │ SSD 4 │
└─────────┴─────────┴─────────┴─────────┘
NVMe DriverKit Driver
MarkBaseFS Volume
```
### 关键技术
| 技术点 | 说明 | API |
|--------|------|-----|
| **设备发现** | Thunderbolt 5设备枚举 | IOServiceMatching |
| **NVMe命令** | NVMe命令传输 | IOBlockStorageDevice |
| **性能优化** | 高性能I/O | NVMe Queue |
| **RAID支持** | 软RAID配置 | Block Storage DriverKit |
### DriverKit API
**BlockStorageDeviceDriverKit.framework**
```swift
import DriverKit
import BlockStorageDeviceDriverKit
class NVMeTestDriver: IOBlockStorageDevice {
// Block Storage Device Entitlement
// Thunderbolt 5 NVMe SSD
private var nvmeController: NVMeController?
private var namespaces: [NVMeNamespace] = []
override init() {
super.init()
print("NVMeTestDriver initializing...")
}
override func Start() -> IOReturn {
print("NVMeTestDriver Start() called")
// 初始化NVMe Controller
initializeNVMeController()
// 发现NVMe Namespaces
discoverNVMeNamespaces()
// 测试NVMe operations
testNVMeOperations()
return kIOReturnSuccess
}
func initializeNVMeController() {
print("Initializing NVMe Controller...")
// NVMe Controller初始化代码
// 配置Queue深度
// 设置中断处理
}
func discoverNVMeNamespaces() {
print("Discovering NVMe Namespaces...")
// 枚举NVMe Namespaces
// 获取容量信息
// 检查健康状态
}
func testNVMeOperations() {
print("Testing NVMe operations...")
// 测试读写性能
// 测试Queue深度
// 测试错误处理
}
}
```
### 性能目标
| 指标 | 目标值 | 测量方法 |
|------|--------|----------|
| **读取速度** | 6000-7000 MB/s | Thunderbolt 5带宽 |
| **写入速度** | 5000-6000 MB/s | NVMe SSD性能 |
| **IOPS** | >100万 | 4K随机读写 |
| **延迟** | <100μs | NVMe特性 |
| **并发** | 10用户并发访问 | 压力测试 |
### 实现步骤
**Phase 3.3: NVMe DriverKit驱动开发预计2周**
1. **创建NVMe DriverKit Extension Bundle**
- 手动创建DriverKit Extension target
- 配置BlockStorageDeviceDriverKit.framework链接
- 设置entitlements等待审批
2. **实现设备发现**
- Thunderbolt 5设备枚举
- NVMe Controller初始化
- Namespace发现
3. **实现NVMe命令传输**
- NVMe命令构造
- Queue管理
- 中断处理
4. **实现高性能I/O**
- Queue深度优化
- 并发I/O优化
- 缓存策略
5. **实现软RAID支持**
- RAID 0配置
- RAID 1配置
- RAID 10配置
### 验收标准
- ✅ Thunderbolt 5 NVMe SSD成功识别
- ✅ NVMe Controller初始化成功
- ✅ NVMe Namespaces挂载成功
- ✅ 读写性能达到目标
- ✅ IOPS达到目标
- ✅ 软RAID功能正常
---
## MarkBaseFS Integration
### 四层存储架构集成
```
┌─────────────────────────────────────────┐
│ MarkBaseFS Volume │
│ (Frame Management System) │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ MarkBaseFS DriverKit Layer │
├──────────┬──────────┬─────────┬─────────┤
│ NVMe │ HDD │ Object │ Debug │
│ Driver │ Driver │ Storage │ Kit │
│ (P1) │ (P2) │ (P3) │ (P4) │
└──────────┴──────────┴─────────┴─────────┘
┌─────────────────────────────────────────┐
│ Frame Index Table (SQLite) │
│ (frame_records, video_metadata) │
└─────────────────────────────────────────┘
```
### 集成步骤
**Phase 3.4: MarkBaseFS Integration预计1周**
1. **统一接口设计**
- MarkBaseFS统一接口
- 四层存储抽象
- Frame Index Table集成
2. **驱动管理器实现**
- 驱动加载管理
- 驱动状态监控
- 驱动故障恢复
3. **Frame Index Table集成**
- NVMe tier存储frame_records
- HDD tier存储video_metadata
- Object Storage tierframe_locations
4. **性能优化**
- 四层存储负载均衡
- Frame存储策略优化
- 缓存策略优化
### 验收标准
- ✅ 四层存储统一接口正确
- ✅ Frame Index Table集成正确
- ✅ 驱动管理器功能正确
- ✅ 性能达到目标
---
## 开发时间规划
### Phase 3总时间规划
| Phase | 任务 | 预计时间 | 开始条件 |
|-------|------|----------|----------|
| **Phase 3.1** | HDD DriverKit驱动开发 | 2周 | Block Storage Device审批通过 |
| **Phase 3.2** | Object Storage DriverKit驱动开发 | 1周 | Block Storage Device审批通过 |
| **Phase 3.3** | NVMe DriverKit驱动开发 | 2周 | Block Storage Device审批通过 |
| **Phase 3.4** | MarkBaseFS Integration | 1周 | Phase 3.1-3.3完成 |
| **Phase 3.5** | 测试与优化 | 1周 | Phase 3.4完成 |
**总预计时间7周**
### 关键里程碑
| 里程碑 | 预计日期 | 说明 |
|--------|----------|------|
| **Block Storage Device审批通过** | 2026-05-27 ~ 2026-06-02 | Block Storage Device Entitlement审批通过 |
| **HDD Driver完成** | 审批后2周 | HDD DriverKit驱动开发完成 |
| **Object Storage Driver完成** | HDD Driver后1周 | Object Storage DriverKit驱动开发完成 |
| **NVMe Driver完成** | Object Storage Driver后2周 | NVMe DriverKit驱动开发完成 |
| **MarkBaseFS Integration完成** | NVMe Driver后1周 | 四层存储集成完成 |
| **Phase 3完成** | Integration后1周 | 测试与优化完成 |
---
## 技术风险与缓解策略
### 风险1DriverKit Extension Bundle配置失败
**风险等级:高**
**描述xcodegen不支持DriverKit Extension Bundle配置**
**缓解策略:**
1. **手动创建DriverKit Extension Bundle** ✅✅✅
- 使用Xcode手动创建DriverKit Extension target
- 配置DriverKit SDK链接
- 配置entitlements
2. **等待Block Storage Device审批通过** ✅✅✅
- 使用正确entitlements重新实现
- 避免配置问题浪费时间
### 风险2Block Storage Device Entitlement审批延迟
**风险等级:中**
**描述Block Storage Device Entitlement审批可能延迟**
**缓解策略:**
1. **并行开发HDD + Object Storage Driver** ✅✅✅
- Networking + SCSI Controller Entitlement已通过
- 可以立即开始开发
2. **准备详细的开发文档** ✅✅✅
- 创建Phase 3详细规划文档
- 审批通过后立即开始
### 风险3NVMe性能未达到目标
**风险等级:中**
**描述NVMe SSD性能可能未达到6000-7000MB/s**
**缓解策略:**
1. **性能优化**
- Queue深度优化
- 并发I/O优化
- 缓存策略优化
2. **性能测试**
- AJA System Test验证
- 压力测试
- 性能监控
### 风险4四层存储集成复杂
**风险等级:中**
**描述:四层存储集成可能比预期复杂**
**缓解策略:**
1. **模块化设计**
- 独立的驱动模块
- 统一的接口抽象
2. **逐步集成**
- 先集成NVMe + HDD
- 再集成Object Storage
- 最后集成Debug Kit
---
## 验收标准
### Phase 3验收标准
| 验收项 | 标准 | 验收方法 |
|--------|------|----------|
| **HDD Driver** | ✅ Thunderbolt 3 HDD RAID成功识别 | 功能测试 |
| **HDD Performance** | ✅ 读写速度3000-4000MB/s | 性能测试 |
| **Object Storage Driver** | ✅ S3/MinIO/Ceph成功连接 | 功能测试 |
| **Object Storage Performance** | ✅ 读写速度>100MB/s | 性能测试 |
| **NVMe Driver** | ✅ Thunderbolt 5 NVMe SSD成功识别 | 功能测试 |
| **NVMe Performance** | ✅ 读写速度6000-7000MB/s | 性能测试 |
| **Integration** | ✅ 四层存储集成正确 | 功能测试 |
| **Frame Index Table** | ✅ Frame存储正确 | 功能测试 |
### 最终交付物
1. **HDD DriverKit驱动**
- 源代码
- 测试代码
- 文档
2. **Object Storage DriverKit驱动**
- 源代码
- 测试代码
- 文档
3. **NVMe DriverKit驱动**
- 源代码
- 测试代码
- 文档
4. **MarkBaseFS Integration**
- 统一接口
- Frame Index Table集成
- 文档
5. **测试报告**
- 功能测试报告
- 性能测试报告
- 集成测试报告
---
## 附录
### 参考文档
- [Apple DriverKit Documentation](https://developer.apple.com/documentation/driverkit)
- [Apple FSKit Documentation](https://developer.apple.com/documentation/fskit)
- [Apple Block Storage Device DriverKit](https://developer.apple.com/documentation/blockstoragedevicedriverkit)
- [Apple SCSI Controller DriverKit](https://developer.apple.com/documentation/scsicontrollerdriverkit)
- [Apple Network DriverKit](https://developer.apple.com/documentation/networkdriverkit)
### 相关文件
- `/Users/accusys/markbase/MarkBaseFS/`: 项目根目录
- `/Users/accusys/markbase/MarkBaseFS/MarkBaseFS/MarkBaseFS.swift`: FSKit Module主入口
- `/Users/accusys/markbase/MarkBaseFS/MarkBaseFS/FrameIndexTable.swift`: Frame Index Table核心
- `/Users/accusys/markbase/MarkBaseFS/MarkBaseFS/MarkBaseFMS.swift`: Frame Management System
- `/Users/accusys/markbase/MarkBaseFS/MarkBaseFS/MarkBaseFSVolume.swift`: Volume管理
- `/Users/accusys/markbase/MarkBaseFS/docs/PHASE2_SUMMARY.md`: Phase 2完成总结
- `/Users/accusys/markbase/MarkBaseFS/docs/FUSE_DESIGN.md`: FUSE设计文档
- `/Users/accusys/markbase/MarkBaseFS/docs/FUSE_POC_TEST.md`: POC测试计划
- `/Users/accusys/markbase/MarkBaseFS/docs/FUSE_POC_REPORT.md`: POC测试报告
---
**文档版本1.0**
**最后更新2026-05-26**
**状态等待Block Storage Device Entitlement审批**