论文部分内容阅读
传统的基于磁盘和串行接口(SATA)的固态硬盘设计的分布式存储系统,已经不能满足当前的超大规模存储需求。而新型存储设备NVMe SSD为超大规模存储系统带来了新的突破口。针对传统存储软件栈的巨大软件开销导致不能够发挥NVMe SSD的硬件性能问题,借助于Intel存储软件开发工具SPDK提供的用户态NVMe存储软件栈,设计并实现一种满足超大规模、高性能的存储系统的本地存储系统NVMeStore。结合用户态NVMe软件栈的超低延迟和高并发I/O共享架构的应用场景,提出针对NVMe SSD的数据读写优化方案,资源分配和性能隔离方案。固态硬盘内部存在写干扰问题,写干扰导致SSD读性能大幅下降。通过读写队列分离技术将读写请求分离,并提交到不同的NVMe队列对,以减少读写请求间的相互干扰,从而提高读性能。提出读写队列动态比例调整方案和应用动态绑定方案,在不影响系统总体性能的前提下,提高CPU资源使用率。在不同读写比例混合负载下,该方案相比于默认方案,性能提升3%~102%;相比于Fqueue方案,性能提升1%~15%。NVMe软件栈旁路内核I/O调度层,在提高性能的同时,丢失了公平性保障机制,使得NVMe SSD不能为上层应用提供可保障的性能指标。通过测试得出NVMe SSD上不同应用的性能表现与其负载密切相关。提出基于加权的请求提交数的I/O调度策略,动态调整应用的请求提交数量,实现存储资源的合理分配,避免应用性能随负载变化波动的问题。测试不同负载模式下各个应用的服务质量保障情况,该方案保障各个应用的性能与理想性能之间的误差不超过4%。对NVMeStore和Intel SPDK BlobStore进行了测试,NVMeStore与BlobStore拥有相同的读性能,而写性能提高了15%以上。在混合负载下,NVMeStore的性能相比于BlobStore,提高了5%~100%,并提供了更稳定的性能。