Memblaze FlashRAID + PBlaze NVMe SSD 助 力 MySQL 提 升 性 能 和 可 靠 性
目 录 摘 要... 3 MySQL 介 绍... 3 FlashRAID 介 绍... 3 测 试 环 境 介 绍... 4 整 体 测 试 环 境... 4 性 能 测 试 工 具... 4 FlashRAID 配 置... 5 测 试 前 提 条 件... 6 测 试 结 果... 7 MySQL 数 据 库 在 FlashRAID + 4 x PBlaze4 NVMe SSD 上 面 的 性 能 表 现... 7 FlashRAID 软 件 增 加 的 延 时... 8 使 用 FlashRAID+NVMe SSD 承 载 MySQL 时,CPU io wait 比 率 占 比... 8 FlashRAID 消 耗 CPU 比 率... 9 FlashRAID 的 写 放 大 (WA) 计 算... 9 NVMe SSD 的 写 放 大 (WA) 计 算... 9 结 论... 2
摘 要 随 着 闪 存 卡 的 普 及, 使 得 用 户 MySQL 数 据 库 相 关 的 IT 系 统 可 以 做 到 轻 资 产 高 性 能 高 效 能 相 比 SATA SSD, NVMe 协 议 效 率 比 SATA SSD 使 用 的 AHCI 协 议 效 率 更 高,NVMe SSD 可 提 供 更 高 性 能 和 更 低 时 延, 且 NVMe SSD 支 持 多 核 多 队 列 技 术 (Multi-Core & Multi-Queue), 可 以 在 多 核 系 统 下 实 现 无 锁 并 发 并 相 对 SATA SSD 减 小 CPU io wait 相 比 普 通 的 PCIe SSD, 新 的 Linux/Windows/VMware 等 平 台 会 自 带 NVMe SSD 原 生 驱 动, 大 大 减 少 运 维 人 员 驱 动 的 维 护 工 作, 同 时 NVMe SSD 还 支 持 做 启 动 盘, 并 在 不 同 的 硬 件 和 软 件 环 境 下 支 持 热 插 拔, 这 是 整 个 NVMe 生 态 共 同 协 作 的 结 果 因 此 NVMe SSD 承 载 MySQL 数 据 库 慢 慢 会 成 为 更 多 用 户 的 选 择 PBlaze4 是 Memblaze 推 出 的 企 业 级 NVMe SSD, 可 以 很 好 的 满 足 MySQL 数 据 库 的 性 能 需 求 但 是 如 何 在 使 用 NVMe SSD 提 高 单 节 点 MySQL 数 据 库 性 能 的 同 时, 保 证 MySQL 数 据 库 存 储 的 可 靠 性?Memblaze 公 司 适 时 推 出 的 FlashRAID 软 件 很 好 的 帮 助 客 户 解 决 了 这 一 问 题 本 中 展 示 出 了 FlashRAID + 4 x PBlaze NVMe SSD 在 承 载 MySQL 数 据 库 的 联 机 事 务 处 理 (OLTP) 业 务 时 稳 定 和 优 异 的 性 能, 以 及 FlashRAID 软 件 极 低 的 CPU 占 有 率 对 于 SSD 的 寿 命,FlashRAID 软 件 只 引 入 很 小 的 写 放 大 (WA), 几 乎 不 会 增 加 对 SSD 寿 命 的 消 耗 同 时 CPU wait IO 的 比 率 极 低, 说 明 FlashRAID + PBlaze NVMe SSD 在 多 核 系 统 下 承 载 MySQL 数 据 库 这 种 多 线 程 并 发 的 业 务 是 非 常 适 合 的 MySQL 介 绍 MySQL 是 一 个 关 系 型 数 据 库 管 理 系 统, 由 于 其 体 积 小 速 度 快 总 体 拥 有 成 本 低, 尤 其 是 开 放 源 码 这 一 特 点, 一 般 中 小 型 网 站 的 开 发 都 选 择 MySQL 作 为 网 站 数 据 库 MySQL 的 Master-Slave 或 Master-Master 复 制 架 构, 使 得 用 户 可 以 以 较 简 洁 的 灾 备 模 式 为 应 用 提 供 高 可 靠 性, 并 可 以 选 择 在 Master 节 点 或 Slave 节 点 使 用 NVMe SSD 加 速 数 据 库 IO 访 问 能 力, 优 化 访 问 延 时 在 获 得 高 性 能 的 同 时, 由 于 单 节 点 NVMe SSD 故 障 往 往 会 引 发 Master-Slave 切 换 动 作, 这 加 大 了 运 维 人 员 的 工 作 量 因 此, 提 高 MySQL 单 节 点 NVMe SSD 可 靠 性 的 任 务 迫 在 眉 睫, 在 这 方 面 Memblaze 推 出 的 FlashRAID 软 件 为 客 户 提 供 了 很 好 的 解 决 方 案 FlashRAID 介 绍 FlashRAID 是 Memblaze 公 司 专 为 高 速 NVMe SSD 设 计 的 集 卷 管 理 和 数 据 保 护 为 一 身 的 系 统 存 储 软 件 FlashRAID 可 以 把 多 个 NVMe SSD 物 理 存 储 资 源 进 行 池 化, 并 导 出 多 个 虚 拟 逻 辑 卷 给 前 端 应 用 使 用 FlashRAID 极 大 提 升 系 统 中 多 块 NVMe SSD 的 数 据 可 靠 性, 充 分 聚 合 NVMe SSD 的 性 能 和 容 量, 同 时 简 化 服 务 器 中 多 块 NVMe SSD 的 管 理 FlashRAID 提 供 多 种 RAID 数 据 保 护 级 别,RAID,,5,6 以 及 复 合 RAID 5, 不 同 RAID 级 别 的 性 能 以 及 数 据 容 错 性 不 同 RAID 级 别 的 设 定 可 以 在 vdisk 级 别 指 定 vdisk 是 FlashRAID 以 块 设 备 接 口 提 供 的 虚 拟 卷, 类 似 LUN 客 户 端 可 以 直 接 当 做 普 通 块 设 备 使 用 3
FlashRAID 采 用 了 全 局 资 源 池 化 技 术, 将 所 有 SSD 的 存 储 资 源 进 行 细 粒 度 池 化 管 理, 统 一 通 过 资 源 分 配 器 进 行 资 源 的 再 分 配, 可 通 过 增 加 SSD 快 速 动 态 拓 展 资 源 池 大 小 FlashRAID 针 对 SSD 的 寿 命 特 性 实 现 了 全 局 磨 损 均 衡 和 逆 磨 损 均 衡, 使 得 FlashRAID 在 提 供 数 据 安 全 保 护 的 同 时 能 最 大 限 度 的 使 用 SSD 全 局 磨 损 均 衡 根 据 SSD 进 入 系 统 的 服 务 程 度, 尽 量 将 数 据 写 入 处 于 青 年 状 态 的 设 备 中 ( 磨 损 更 少, 寿 命 更 长 的 设 备 ), 保 证 各 个 设 备 处 于 相 同 寿 命 状 态 当 存 储 池 中 有 多 个 NVMe 设 备 进 入 老 年 状 态 ( 寿 命 将 尽 时 ), 逆 磨 损 均 衡 会 集 中 将 数 据 写 入 某 一 个 磨 损 更 高 的 设 备, 使 之 退 役, 以 此 避 免 多 个 处 于 老 年 期 的 设 备 同 时 出 现 寿 命 耗 尽 情 况, 保 证 数 据 安 全 性 当 FlashRAID 运 行 时, 有 掉 盘 或 者 坏 盘 情 况 发 生 时, 会 触 发 FlashRAID 的 数 据 重 构 操 作 会 基 于 元 数 据 信 息, 从 其 他 设 备 上 提 取 数 据 信 息, 自 动 重 构 出 属 于 失 效 设 备 中 的 有 效 数 据 部 分, 并 写 入 存 储 池 中 其 他 存 储 设 备 中 存 储 池 中 的 所 有 有 效 设 备 都 参 与 重 构 的 读 写 操 作, 提 高 重 构 性 能, 存 储 设 备 越 多, 重 构 速 度 越 快 并 且 FlashRAID 通 过 智 能 数 据 重 构 ( 数 据 感 知 重 构 算 法, 优 先 级 调 度 重 构 算 法, 局 部 重 构 算 法 ) 优 先 恢 复 处 于 丢 失 风 险 最 高 的 数 据, 高 效 保 护 数 据 安 全 性 FlashRAID 根 据 不 同 的 数 据 保 护 策 略, 在 创 建 vdisk 时 可 设 置 不 同 RAID 级 别 FlashRAID 对 元 数 据 通 过 多 副 本 的 方 式 进 行 冗 余 保 护, 确 保 存 储 数 据 可 靠 性 测 试 环 境 介 绍 整 体 测 试 环 境 服 务 器 : Supermicro SuperServer 28U-TNRT+, 2 Intel(R) Xeon(R) CPU E5-2695 v3 @ 2.3GHz*28,96GB DRAM 存 储 设 备 : 4 x Memblaze 3.2T PBlaze4 Intel S35 24GB 作 为 系 统 盘 测 试 工 具 : sysbench.5 软 件 : CentOS 7. FlashRAID V. MySQL 5.7.(innodb) 性 能 测 试 工 具 sysbench 是 一 款 开 源 的 多 线 程 性 能 测 试 工 具, 可 以 执 行 CPU/ 内 存 / 线 程 /IO/ 数 据 库 等 方 面 的 性 能 测 试 数 据 库 目 前 支 持 对 MySQL/Oracle/PostgreSQL 的 测 试 本 文 利 用 sysbench 在 mysql 数 据 库 上 测 试 OLTP 模 型, 对 应 测 试 oltp.lua 脚 本 (oltp.lua 为 模 拟 事 物 测 试 脚 本, 支 持 myisam 和 innodb 存 储 引 擎, 测 试 包 含 如 下 内 容, 并 采 用 如 框 图 默 认 参 数 ) oltp_point_selects *, oltp_simple_ranges *, oltp_sum_rangesm *, oltp_order_ranges *, oltp_distinct_ranges *, oltp_index_updates *, oltp_non_index_updates *, DELETE *, INSERT *. 4
FlashRAID 配 置 disk 信 息 : 这 里 可 以 看 到 FlashRAID 管 理 了 4*NVMe 3.2TB SSD spool 信 息 : 这 里 可 以 看 到 FlashRAID 管 理 的 4*NVMe SSD 组 成 sp 这 个 pool, 按 照 Raid5(2+) 的 使 用 方 式 最 大 支 持,98GB 的 vdisk 总 容 量 vdisk 信 息 : 5
这 里 可 以 看 到 我 们 在 FlashRAID 的 sp pool 创 建 了 4 个 vdisk(mfvd_, mfvd_6, mfvd_32,mfvd_48), 其 中 创 建 测 试 MySQL 数 据 库 的 是 mfvd_6 这 个 vdisk 虚 拟 卷 它 的 Raid 级 别 是 Raid 5,stripe unit count=2 表 示 写 2 个 数 据 要 个 校 验 位, 即 Raid5(2+),stripe unit=8kb 表 示 每 个 SSD 的 stripe 大 小 MySQL 测 试 表 数 据 量 共 创 建 5*2 万, 共 亿 行 数 据 测 试 前 提 条 件 在 测 试 之 前, 需 要 考 虑 以 下 操 作 :. 确 保 PBlaze4 的 分 区 有 4KiB 对 齐 2. 打 开 irqbalance 服 务 或 将 NVMe SSD 每 一 个 中 断 绑 定 到 每 一 个 CPU core( 不 用 区 分 NUMA Node) 3. 设 置 CPU 的 使 用 模 式 为 最 大 性 能 模 式 4. MySQL 的 读 IO 多 为 6KB, 写 IO 从 52 字 节 到 52KB 均 存 在 ( 但 6KB 占 比 较 高 ), 故 设 置 FlashRAID 的 RAID 级 别 为 Raid5(2+) 且 Stripe Unit Size 为 8KB, 这 样 MySQL 下 发 的 6KB IO 会 完 整 的 读 写 一 个 Full Stripe Unit Size(2*8KB), 以 使 得 FlashRAID 软 件 和 MySQL 做 最 佳 匹 配 5. 使 用 ext4 文 件 系 统, 设 置 rw,noatime,nodiratime,nobarrier,data=ordered 为 mount 选 项 6. 设 置 MySQL 数 据 库 如 下 参 数 : innodb_buffer_pool_size=65536m innodb_buffer_pool_instances=6 innodb_doublewrite= innodb_flush_log_at_trx_commit=2 innodb_flush_method=o_direct innodb_read_io_threads = 8 innodb_write_io_threads = 6 7. 在 sysbench 测 试 工 具 中 配 置 5 个 2 千 万 数 据 的 表, 并 设 置 测 试 并 发 连 接 数 为 64 8. 全 盘 随 机 写 预 处 理 4*PBlaze4 NVMe SSD 9. 测 试 中 为 了 明 确 看 出 FlashRAID 软 件 占 用 多 少 CPU 资 源, 故 绑 定 FlashRAID 到 CPU 到 核, 绑 定 MySQL 进 程 到 CPU 2 到 55 核 6
db (Reads & Writes)/s 259 57 775 33 29 549 87 265 2323 258 2839 397 3355 IOPS(Avg. Block size=7.9 KB) 258 55 772 29 286 543 8 257 234 257 2828 385 3342 3 6 9 2 5 8 2 24 27 3 33 226 45 676 9 26 35 576 8 226 225 2476 27 2926 35 3376 TPS latency(ms) Memblaze FlashRAID +PBlaze SSD 助 力 MySQL 提 升 性 能 和 可 靠 性 测 试 结 果 MySQL 数 据 库 在 FlashRAID + 4 x PBlaze4 NVMe SSD 上 面 的 性 能 表 现 FlashRAID sysbench OLTP Test 4 2 8 6 4 2 max latency of oltp trx under QoS 95% 2 8 6 4 2 TIME(s) TIME(s) 图 TPS 值 图 2 每 秒 事 物 95% 时 延 低 于 多 少 ms 图 表 示 每 秒 钟 可 以 完 成 平 均,745.92 次 事 物, 每 个 事 物 包 含 次 oltp_point_selects, 次 oltp_simple_ranges, 次 oltp_sum_rangesm, 次 oltp_order_ranges, 次 oltp_distinct_ranges, 次 oltp_index_updates, 次 oltp_non_index_updates, 次 DELETE 和 次 INSERT 操 作 这 个 结 果 表 明 承 载 在 FlashRAID 上 面 的 MySQL 数 据 库 可 以 得 到 很 好 的 性 能 发 挥, 每 秒 处 理 事 物 能 力 过 万 图 2 显 示 的 是 每 秒 完 成,745.92 次 事 物, 其 中 95% 的 事 物 完 成 的 时 延 在 上 图 所 示 的 时 延 之 下, 平 均 在 9.97ms 以 下, 这 显 示 了 MySQL 跑 在 FlashRAID 上 仍 然 具 有 很 低 的 时 延 抖 动 性 FlashRAID sysbench oltp test 25 2 5 5 4 2 8 6 4 2 FlashRAID sysbench oltp test Time(s) db reads db writes db reads+writes VDISK(READ+WRITE) nvmen(read+write) nvmen(read+write) nvme2n(read+write) nvme3n(read+write) Time(s) 图 3,db 层 面 每 秒 读 写 次 数 图 4s, db 层 面 每 秒 读 写 次 数 图 3 显 示 了 MySQL sysbench oltp 测 试 过 程 中 db 层 面 每 秒 完 成 的 读 写 次 数 达 到 平 均 2,464 次, 且 几 乎 没 有 波 动 图 4 显 示 了 对 应 的 测 试 过 程 中 FlashRAID 的 vdisk 和 4 个 nvme ssd 上 面 IOPS(nvme ssd 的 平 均 block size=7.9kb), 从 图 中 可 以 看 出 如 果 按 照 7.9KB 的 block size 计 算,vdisk 的 IOPS 达 到 了 平 均 9,9.48, 7
226 45 676 9 26 35 576 8 226 225 2476 27 2926 35 3376 258 55 772 29 286 543 8 257 234 257 2828 385 3342 226 45 676 9 26 35 576 8 226 225 2476 27 2926 35 3376 Memblaze FlashRAID +PBlaze SSD 助 力 MySQL 提 升 性 能 和 可 靠 性 而 对 应 的 4 个 nvme ssd 的 IOPS 之 和 达 到 了 8,823.6, 考 虑 到 Raid5(2+) 的 比 例,nvme ssd 相 比 VDISK 多 出 的 额 外 的 IOPS 比 例 并 不 高, 后 面 我 们 会 详 细 计 算 FlashRAID 软 件 引 入 的 写 放 大 (WA) 是 非 常 小 的 FlashRAID 软 件 增 加 的 延 时 VDISK & NVMe Read Latency(ms) VDISK & NVMe Write Latency(ms).8.6.4.2.8.6.4.2 VDISK READ Latency(ms) nvmen READ Latency(ms) nvmen READ Latency(ms) nvme2n READ Latency(ms) nvme3n READ Latency(ms) VDISK WRITE Latency(ms) nvmen Write Latency(ms) nvmen Write Latency(ms) nvme2n Write Latency(ms) nvme3n Write Latency(ms) 图 5, VDISK 和 nvme ssd 读 latency(ms) 图 6, VDISK 和 nvme ssd 写 latency(ms) 图 5 可 以 看 出 FlashRAID 软 件 在 读 IO 层 面 比 平 均 读 latency 最 大 的 nvme ssd 多 引 入 了 近.24ms 的 时 延 图 6 可 以 看 出 FlashRAID 软 件 在 写 IO 层 面 比 平 均 写 latency 最 大 的 nvme ssd 多 引 入 了 近.53ms 的 时 延 FlashRAID 在 提 高 单 节 点 可 靠 性 的 同 时, 多 加 了 一 层 软 件 引 入 时 延 是 合 理 的 使 用 FlashRAID+NVMe SSD 承 载 MySQL 时,CPU io wait 比 率 占 比 8 6 4 2 CPU Util% CPU user% CPU id% CPU sys% CPU wait% 图 7, CPU 的 io wait 比 率 图 8, mysql 和 sysbench 占 用 CPU 比 例 图 7 和 图 8 均 可 以 看 出 测 试 过 程 中 绝 大 部 分 CPU 被 MySQL 和 sysbench 测 试 工 具 这 些 用 户 态 程 序 所 占 图 7 可 以 看 出 CPU wait 在 IO 上 面 的 比 例 平 均 只 有 8.76% NVMe SSD 由 于 采 用 多 核 多 队 列 (Multi-C & Multi-Q) 技 术, 使 得 每 一 个 CPU 的 core 只 会 有 每 个 NVMe SSD 所 需 处 理 中 断 的 一 个 发 送 队 列 和 一 个 完 成 队 列, 这 样 在 多 核 系 统 下 NVMe SSD 更 容 易 做 到 无 锁 并 发, 使 得 多 核 CPU 的 使 用 效 率 提 升,CPU io wait 比 率 下 降 8
FlashRAID 消 耗 CPU 比 率 图 9, CPU 使 用 情 况 图 9 显 示 了 测 试 中 CPU 的 使 用 情 况, 其 中 测 试 时 将 FlashRAID 进 程 绑 定 在 CPU core 和 core,mysql 进 程 绑 定 在 CPU core2 到 core55, 如 图 中 所 示 FlashRAID 软 件 消 耗 CPU 比 例 不 到 2 个 CPU 的 core FlashRAID 的 写 放 大 (WA) 计 算 FlashRAID RAID5 (2+) VDISK Avg. Write IOPS 4 x NVMe SSD Avg. Write IOPS Block Size=7.9KB 48,95 74,284 FlashrRAID 写 放 大 为 = FlashRAID 总 数 据 写 入, 所 以 FlashRAID+NVMeSSD 在 做 MySQL SSD 总 数 据 写 入 sysbench oltp 测 试 时 的 写 放 大 (WA)=74,284/48,95=.58 但 考 虑 到 Raid5(2+) 本 身 的 写 放 大 (WA) 理 论 上 就 =.5, 所 以 FlashRAID 软 件 引 入 的 写 放 大 比 例 只 占 (.58-.5)/.58=.9% 由 此 可 见 FlashRAID 软 件 在 MySQL 应 用 环 境 下 本 身 引 入 的 写 放 大 (WA) 非 常 小, 此 时 使 用 FlashRAID 方 案 的 写 放 大 (WA) 只 取 决 于 客 户 使 用 的 RAID 保 护 级 别 和 Stripe Unit Count NVMe SSD 的 写 放 大 (WA) 计 算 9
测 试 起 始 时 间 测 试 结 束 时 间 3:57:26 4:58:8 WA nvmen Total write to controller in GB(Host Write) 4447 47 Total write in GB since device born(nand Write) 65944 678.8254 nvmen Total write to controller in GB(Host Write) 3826 38877 Total write in GB since device born(nand Write) 62 6226.662338 nvme2n Total write to controller in GB(Host Write) 4834 4452 Total write in GB since device born(nand Write) 65364 66395.668285 nvme3n Total write to controller in GB(Host Write) 35975 36266 Total write in GB since device born(nand Write) 56344 5689.597938 由 上 表 可 见 Memblaze NVMe SSD 在 FlashRAID 和 MySQL 应 用 软 件 使 用 场 景 下 的 写 放 大 (WA) 只 有.59 到.82 结 论 本 测 试 清 晰 地 显 示 出 MySQL 运 行 在 FlashRAID + Memblaze PBlaze4 NVMe SSD 上 出 色 OLTP( 联 机 事 务 ) 处 理 能 力 且 在 MySQL 应 用 场 景 中 FlashRAID 软 件 本 身 性 能 表 现 平 稳, 且 引 入 的 写 放 大 (WA) 很 小 可 以 忽 略 不 计, 对 SSD 的 寿 命 不 会 造 成 影 响 Memblaze PBlaze4 NVMe SSD 超 强 的 性 能 和 稳 定 性 加 上 FlashRAID 的 可 靠 性 保 证, 为 客 户 提 供 了 一 种 很 好 的 数 据 库 解 决 方 案 版 权 声 明 本 文 档 中 的 所 有 内 容 格 式 及 相 关 产 品 的 版 权 属 于, 在 未 经 许 可 的 情 况 下, 不 得 任 意 引 用 拷 贝 抄 袭 仿 制 或 翻 译 成 其 他 语 言 本 文 档 提 到 的 其 他 商 标 或 商 品 名 称 均 是 他 们 公 司 所 属 的 商 标 或 注 册 商 标, 除 非 特 别 声 明, 此 类 商 标 或 商 品 与 本 公 司 没 有 任 何 联 系 本 文 档 中 的 内 容 可 能 会 有 更 新, 如 有 变 更, 恕 不 另 行 通 知 2-26