# 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 com.apple.developer.driverkit.family.block-storage-device ``` 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 tier:frame_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周 | 测试与优化完成 | --- ## 技术风险与缓解策略 ### 风险1:DriverKit Extension Bundle配置失败 **风险等级:高** **描述:xcodegen不支持DriverKit Extension Bundle配置** **缓解策略:** 1. **手动创建DriverKit Extension Bundle** ✅✅✅ - 使用Xcode手动创建DriverKit Extension target - 配置DriverKit SDK链接 - 配置entitlements 2. **等待Block Storage Device审批通过** ✅✅✅ - 使用正确entitlements重新实现 - 避免配置问题浪费时间 ### 风险2:Block Storage Device Entitlement审批延迟 **风险等级:中** **描述:Block Storage Device Entitlement审批可能延迟** **缓解策略:** 1. **并行开发HDD + Object Storage Driver** ✅✅✅ - Networking + SCSI Controller Entitlement已通过 - 可以立即开始开发 2. **准备详细的开发文档** ✅✅✅ - 创建Phase 3详细规划文档 - 审批通过后立即开始 ### 风险3:NVMe性能未达到目标 **风险等级:中** **描述: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审批**