plp-test/TESTPLAN.md
2025-04-22 16:53:06 +08:00

208 lines
7.2 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 数据完整性测试计划
## 1. 测试目标
本测试计划旨在评估在使用带有电源损耗保护Power Loss Protection, PLP的NVMe SSD作为缓存设备的Open-CAS环境中在断电情况下数据的完整性保护能力。测试将验证不同工作负载和断电场景下缓存数据的持久性和一致性。
## 2. 测试环境
### 2.1 硬件环境
- NVMe SSD: 一块带有PLP功能的企业级NVMe SSD缓存设备
- HDD: 一块传统机械硬盘(后端存储设备)
- 服务器: 支持Open-CAS的Linux服务器
### 2.2 软件环境
- 操作系统: Linux (推荐使用CentOS 7或Ubuntu 18.04以上版本)
- Open-CAS: 最新稳定版本
- 文件系统: ext4
### 2.3 缓存配置
- 缓存模式: Write-Back回写模式这是测试断电数据完整性的关键模式
- 缓存策略: Default (LRU)
- 清理策略: 默认
## 3. 测试场景
本测试方案包含以下六个关键测试场景:
### 3.1 顺序写入测试Sequential Write Test
- **测试目的**: 验证在顺序写入工作负载下PLP SSD的数据完整性保护能力
- **测试流程**:
1. 创建Open-CAS缓存实例使用NVMe SSD作为缓存设备HDD作为后端存储
2. 使用顺序写入方式写入固定大小默认100MB的数据到缓存
3. 验证所有数据的正确性
4. 记录写入性能指标
### 3.2 随机写入测试Random Write Test
- **测试目的**: 验证在随机写入工作负载下PLP SSD的数据完整性保护能力
- **测试流程**:
1. 创建Open-CAS缓存实例
2. 使用随机写入方式写入固定大小的数据到缓存
3. 验证所有数据的正确性
4. 记录写入性能指标
### 3.3 混合读写测试Mixed Read-Write Test
- **测试目的**: 验证在混合读写工作负载下PLP SSD的数据完整性保护能力
- **测试流程**:
1. 创建Open-CAS缓存实例
2. 执行混合读写操作70%读30%写)
3. 验证所有数据的正确性
4. 记录读写性能指标
### 3.4 高并发写入测试Concurrent Write Test
- **测试目的**: 验证在高并发写入工作负载下PLP SSD的数据完整性保护能力
- **测试流程**:
1. 创建Open-CAS缓存实例
2. 使用多个线程并发写入数据
3. 验证所有数据的正确性
4. 记录性能指标和并发能力
### 3.5 断电恢复测试Power Loss Recovery Test- 核心测试
- **测试目的**: 验证在断电场景下依靠PLP机制保护数据的能力
- **测试流程**:
1. 创建Open-CAS缓存实例使用Write-Back模式
2. 写入一部分数据并通过sync命令确保部分数据已刷新到磁盘
3. 继续写入数据但不同步,保证有部分数据仍在缓存中
4. 模拟断电通过强制终止Open-CAS进程
5. 重启系统并恢复缓存
6. 验证数据完整性,确定数据丢失量
7. 记录恢复时间和数据丢失率
### 3.6 长期稳定性测试Stability Test
- **测试目的**: 验证在长时间运行情况下,系统的稳定性和数据完整性
- **测试流程**:
1. 创建Open-CAS缓存实例
2. 运行混合读写工作负载持续较长时间默认60分钟
3. 在测试期间随机模拟多次断电
4. 验证数据完整性和系统稳定性
5. 记录长期运行性能指标
## 4. 关键测试指标
### 4.1 数据完整性指标
- **数据丢失率**: 断电后丢失的数据量占总数据量的百分比
- **数据损坏率**: 断电后被损坏(内容错误)的数据块数量占总数据块的百分比
- **元数据一致性**: 文件系统元数据在断电后是否保持一致
### 4.2 性能指标
- **写入吞吐量**: MB/s测量数据写入速度
- **读取吞吐量**: MB/s测量数据读取速度
- **IOPS**: 每秒输入/输出操作数衡量系统处理小型随机I/O的能力
- **写入延迟**: 毫秒,写操作的平均响应时间
- **读取延迟**: 毫秒,读操作的平均响应时间
### 4.3 恢复指标
- **恢复时间**: 毫秒,断电后系统恢复正常操作所需时间
- **元数据重建时间**: 元数据重建所需时间
- **缓存重建速度**: MB/s缓存重建速度
## 5. 测试方法与步骤
### 5.1 测试准备
1. 确保硬件环境符合要求特别是NVMe SSD具备PLP功能
2. 安装最新版本的Open-CAS
3. 配置系统,创建测试分区
4. 准备测试数据和验证工具
### 5.2 测试执行
1. 对每个测试场景,执行以下步骤:
- 重置测试环境,清理缓存
- 启动相应的测试程序
- 收集性能数据和日志
- 验证数据完整性
- 记录测试结果
2. 特别是对于断电恢复测试:
- 记录写入时的数据校验和
- 模拟断电(使用模拟断电工具或强制终止进程)
- 重启系统并恢复缓存
- 验证数据与原始校验和
- 计算数据丢失率和损坏率
### 5.3 测试频率与持续时间
- 基础性能测试每种测试执行3次取平均值
- 断电恢复测试进行至少10次断电模拟在不同写入阶段进行断电
- 长期稳定性测试持续运行至少24小时期间随机进行断电测试
## 6. 测试结果评估标准
### 6.1 数据完整性评估
| 等级 | 描述 | 数据丢失率 |
|------|------|------------|
| 优秀 | 几乎无数据丢失 | < 0.01% |
| 良好 | 极少数据丢失 | 0.01% ~ 0.1% |
| 一般 | 有少量数据丢失 | 0.1% ~ 1% |
| | 明显数据丢失 | > 1% |
### 6.2 性能评估
性能评估将根据实际硬件配置而有所不同,但一般来说:
- 写入吞吐量应达到NVMe设备理论值的70%以上
- 读取吞吐量应达到NVMe设备理论值的80%以上
- 写入延迟应保持在10ms以下
- 恢复时间应在30秒内完成
## 7. 测试结果报告
测试报告将包含以下内容:
1. 测试环境详细配置
2. 各测试场景的详细结果,包括:
- 数据完整性指标
- 性能指标
- 恢复指标
3. 断电恢复测试的详细分析
4. 测试结论和建议
5. 发现的问题和限制
## 8. 注意事项
- 确保测试过程中不会影响生产环境
- 在断电测试前备份重要数据
- 记录详细的测试日志,便于问题分析
- 考虑不同文件系统对测试结果的影响
- 确保测试覆盖不同的缓存写入策略特别是Write-Back vs. Write-Through
- 考虑温度对SSD性能的影响记录测试过程中的环境温度
## 9. 测试工具实现细节
本测试工具采用Go语言实现包含服务器端和客户端两部分
1. **服务器端**
- 管理Open-CAS实例的创建和配置
- 执行实际的数据写入和验证
- 模拟断电场景
- 收集性能指标和数据完整性指标
2. **客户端**
- 提供用户界面,允许选择测试场景
- 显示测试进度和结果
- 生成测试报告
主要的测试模块包括:
- `Sequential Write Test`: 顺序写入测试模块
- `Random Write Test`: 随机写入测试模块
- `Mixed Read-Write Test`: 混合读写测试模块
- `Concurrent Write Test`: 高并发写入测试模块
- `Power Loss Test`: 断电恢复测试模块
- `Stability Test`: 长期稳定性测试模块
每个测试模块实现了共同的接口包含Setup、Run和Cleanup方法以确保测试的一致性和可比性。