NVMe SSD 和硬 RAID卡 实现集中式数据库全栈国产化的100万IOPS+
随着数字经济的快速发展和数据量的激增,高性能数据库系统成为企业业务的核心基础设施之一。在全栈国产化的背景下,如何构建高效、可靠的存储架构,实现 100 万 IOPS 的性能目标, 做为集中式数据库的基础设施提供支持,成为企业关注的重点。本文探讨通过 NVMe SSD 和硬件 RAID 卡组合,构建集中式数据库系统的技术路径。如利用 4 块NVMe SSD,在 RAID 0 下实际性能可超过 1,600,000 IOPS,完全满足高负载数据库的需求。
常见的存储接口协议
- SAS (Serial Attached SCSI):数据传输速率高,通常在 6Gbps 至 24Gbps(最新版本)之间。适用于企业级存储, 连接磁盘与RAID控制器。显示设备如/dev/sda
- SATA (Serial ATA):数据传输速率在 1.5Gbps、3Gbps 和 6Gbps 三个版本,现代主流为 SATA III(6Gbps)。适用于台式机、笔记本电脑。 连接硬盘与主机。
- NVMe (Non-Volatile Memory Express):专为闪存(SSD)设计,基于 PCIe 总线,具有极低的延迟和高带宽。支持高达 4GB/s(PCIe 3.0 x4)或更高(PCIe 4.0/5.0)的数据传输速率。适用于高性能 PC、服务器、工作站. 用于连接SSD 有PCIE和U.2接口,比SATA接口快,显示设备如/dev/nvmexxx
常见的存储设备
- HDD (Hard Disk Drive):转速常见为7200 RPM,10000RPM 15000 RPM,企业级可能达到 10,000 或 15,000 RPM。 IOPS 160-200,延迟在5-15ms
- SSD (Solid State Drive):基于 NAND 闪存的存储设备,没有机械部件。按接口协议分为 SATA SSD 和 NVMe SSD。 IOPS在10000-75000,延迟在0.1ms以内. 使用NVMe 接口SSD 读IOPS超过100W, 写能在50w+,延迟在0.025ms。
RAID 对性能的影响
NVMe SSD 的 IOPS (每秒输入/输出操作) 性能在单盘上已经远超传统的 SATA SSD 和 HDD,而在 RAID 配置下,性能可以进一步提升。
- RAID 0(条带化) 理论上 IOPS 为单盘性能的 线性倍增(根据硬盘数量)。
- RAID 1(镜像)IOPS 等于单盘性能(因为所有写入需同步到所有盘),读性能可以稍微提高(通过负载分担)。
- RAID 5/6(校验保护)写入性能受校验开销影响较大,通常低于 RAID 0。读取性能接近 RAID 0
- RAID 10(镜像+条带化) 读性能与 RAID 0 相近,写性能比 RAID 0 略低,但明显优于 RAID 5/6。
实际性能的限制因素
- RAID 控制器性能:高端 NVMe RAID 控制器至关重要,低端控制器可能成为瓶颈。
- 系统总线和网络带宽:如 PCIe 3.0 或 4.0 的通道数量会直接影响总性能。
- 软件开销:使用硬件 RAID 控制器通常比软件 RAID 更高效。
- 应用程序需求:实际 IOPS 需求需结合负载类型(随机/顺序读写、小/大块大小)。
使用 NVMe SSD 做 RAID,可以根据盘的数量和 RAID 类型实现 数百万 IOPS 的性能,适用于需要极高吞吐量的企业存储、数据库和高性能计算应用。
尽管RAID 5的写IOPS只有RAID 10的一半不到,但由于闪存成本等方面因素,我了解到大多数人还是选择了RAID 5。而且RAID 10还有镜像盘同时达到写寿命限制的风险,需要更重视磨损监控。
为了避免写缓存带来的干扰,测试时建议采用Write-Through的策略。如我们知道RAID 5每一次改写操作都会产生2次读和2次写I/O,也就是通常说的写惩罚为4。随机写之所以性能差,就是因为离散的操作不能在Cache中合并形成整条带I/O。Linux下需要考虑内核&设备驱动的多队列支持,有些情况下RAID卡会成为瓶颈。RAID卡直通/HBA模式的表现则要好得多,由于没有了RAID保护的开销,总随机写性能全面超越单个PCIe Flash.
案例
近年来我们在帮客户在国产化改在项目,最近有1套集中式数据库准备使用NVMe SSD 并做硬RAID ,因为硬件的发展,大部分场景集中数据库已基本满足。而NVMe SSD 做RAID的并不多,因过之前支持的RAID卡也不多,另一方面是成本。但是比分布式还是要节约的多。一直没有测试过这套组合的硬件性能基线是多少, 这里记录一下调测过程,因为数据库多使用8k block, 我们使用8k大小做读写测试。
环境
RAID卡 PERC H755 PCIe 4.0 RAID Broadcom
磁盘: DPRD3104TOT603T2000 大普微电子 4块 NVMe SSD 7.68T 支持速率 64Gbps 国产品牌 长江计算
CPU 鲲鹏920 ARM
操作系统 BC-linux for openUERA
RAID 10
NVMe U.2接口连接RAID卡 走SAS 所以在设备上映射为/dev/sda
相关阅读
《PCIe 4.0 SAS+NVMe RAID/HBA卡:最高读IOPS 300万、写24万》
4块盘RAID 10, 厂家4K 随机读当时FIO测试可以达到最大167w, 平均 139.6W的 IOPS
4块 RAID 10,但是我8K 随机读压测就在21W左右,这速度无法接受。而我们把RAID 10拆成RAID 0测试FIO 4块盘是80.4w,单块盘16w IOPS。 改RAID直通模式jbod ,4个硬盘合并成一个大的逻辑磁盘,数据依次存放,有别于RAID 0的条带分散,单块盘还是21W IOPS。
RAID 10 4*NVMe SSD
修改了一些配置后, 4块RAID 10 IOPS达到91W+, 再修改/sys/block/sda/queue/scheduler IO调度器为none, none io调度器是一个简单粗暴的调度器,但是对于高性能ssd设备来说是足够好的,none调度器针对nvme设备总是有不错的性能。压测IOPS在100W左右.
吞吐量 带宽可以压到13G/s.
RAID 0 NON-RAID(JBOD模式)
8k 随机读 , 4块盘同时跑160多万 IOPS, 一块盘近40W+ .
建议使用udev 固定盘符配置IO调度。如
KERNEL==”sd*”, SUBSYSTEM==”block”, PROGRAM==”/usr/lib/udev/scsi_id –whitelisted –replace-whitespace –device=/dev/$name”,RESULT==”36000c2948ef9d9e4a7937bfc65888bc8″,
另外建议Read Policy 配置No Read Ahead。 更多见案例Troubleshooting Oracle redo file on SSD wait event ‘log file sync’,Write Policy配置HDD建议Write Back:WB回写模式,而SSD建议WT, 但是当上层有大量数据下发时,缓存很快就被击穿,写性能呈现断崖式下降,同时在电池有问题时同样会出现。更多见案例Exadata x5 Raid电池对IO性能的影响
Recommended settings for hardware RAID arrays based on SSD:
RAID type: RAID 1 for 2x SSDs; RAID 5 for 3x and more SSDs, or RAID 10 for 4x and more pair SSD
Disk cache policy: Default (enabled by default)
Write policy: Write Through or Write Back, depends on the configuration
Read policy: No read ahead.
Stripe Size: 64K
发现一篇优秀的存储博文350万IOPS:NVMe SSD RAID卡性能测试解析
测试结果
PowerEdge R650即代表PERC H755N RAID卡+NVMe SSD;R640代表H730P RAID卡+SATA SSD。更多测试数据查看原blog。
磁盘8快NVMe 和Intel CPU 平台,比我们的测试环境配置要高。
总结
相信现在看到当前的NVME SSD+ 硬 RAID卡,提供的IO能力已经满足大部分应用,尤其是集中式数据库。通过 NVMe SSD 和硬件 RAID 卡的组合,集中式数据库不仅能够实现全栈国产化,还能提供超过 100 万 IOPS 的卓越性能,为高负载业务提供稳定、高效的存储支持。此架构在国产化替代和企业数字化转型中具有广阔的应用前景。
— over —
目前这篇文章还没有评论(Rss)