plp-test/README.md
2025-04-23 10:33:06 +08:00

93 lines
2.5 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.

# 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
```
这将执行数据完整性检测,并提供详细的数据丢失报告。