首页 » PostgreSQL/GaussDB, 系统相关 » NVMe SSD 和硬 RAID卡 实现集中式数据库全栈国产化的100万IOPS+

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)

我要评论