# Open-CAS 断电 PLP SSD 数据完整性测试 本项目提供了一套用于测试Open-CAS在断电情况下的PLP SSD数据完整性的测试框架。测试涵盖了多种数据写入场景,并通过模拟断电来验证数据的持久性和一致性。 ## 环境要求 - Go 1.20+ - NVMe SSD (支持PLP - Power Loss Protection) - HDD 硬盘 - 已安装配置的Open-CAS ## 目录结构 ``` . ├── cmd/ │ ├── client/ # 客户端命令行工具 │ └── server/ # 服务器命令行工具 ├── internal/ │ ├── config/ # 配置处理 │ ├── model/ # 数据模型 │ ├── testcase/ # 测试用例实现 │ └── utils/ # 工具函数 ├── pkg/ # 可被外部导入的包 │ └── opencastools/ # Open-CAS操作工具 ├── scripts/ # 测试脚本 ├── go.mod # Go模块文件 └── README.md # 本文档 ``` ## 使用方法 1. 配置测试环境 在运行测试前,请确保您的Open-CAS已正确配置,并将需要测试的NVMe和HDD设备路径在配置文件中指定。 2. 启动服务器 ```bash go run cmd/server/main.go -config config.yaml ``` 3. 运行客户端测试 ```bash go run cmd/client/main.go -server localhost:8080 -test all ``` ## 测试场景 本测试框架包含以下测试场景: 1. 顺序写入测试 2. 随机写入测试 3. 混合读写测试 4. 高并发写入测试 5. 断电恢复测试 6. 长期稳定性测试 详细测试指标和结果分析请参阅测试报告。 ## 新增功能: 实时进度和数据完整性检测 ### 实时进度追踪 客户端现在支持从服务器实时获取测试进度,使用流式传输技术(Server-Sent Events)实现。这使得客户端可以实时查看测试的进度和状态,而不需要频繁轮询。 ### 断电数据完整性检测 系统现在支持在服务器意外断电后进行数据完整性检测,能够详细报告: 1. 有多少数据块丢失 2. 有多少数据块已损坏 3. 总共丢失了多少MB的数据 4. 提供数据恢复结果 ### 使用方法 #### 运行常规测试(实时进度) ```bash ./bin/client -test power_loss -server localhost:8080 ``` #### 运行断电后的恢复测试 在服务器断电并重启后,执行以下命令检查数据完整性: ```bash ./bin/client -recovery -server localhost:8080 ``` 这将执行数据完整性检测,并提供详细的数据丢失报告。