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

7.2 KiB
Raw Permalink Blame History

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方法以确保测试的一致性和可比性。