注册
磁盘类型,调度算法与达梦数据库的选择
技术分享/ 文章详情 /

磁盘类型,调度算法与达梦数据库的选择

DM_336625 2026/05/21 19 0 0

磁盘类型

  1. 机械磁盘

简介:传统磁盘,利用磁头在旋转的盘片上读写数据,技术非常成熟,容量大且成本最低,是过去几十年的主流存储。

  • 核心特点

    • 速度慢:受限于盘片旋转速度(通常7200或10000转/分钟),随机I/O性能很差,因为需要频繁移动磁头寻道。这对数据库随机读写(如索引查找、日志写入)很不友好。
    • 延迟高:平均寻道时间在毫秒级,通常是3-15ms。
    • 成本低:单位容量价格最低,适合冷数据存储、备份归档等场景。
    • 怕震动:内部有精密机械结构,不适合高震动环境。
  1. 固态硬盘

    1. sata/ sas ssd

    • 简介:外形和接口与机械硬盘相同(2.5英寸或3.5英寸),但内部是闪存芯片。可以看作是“装了闪存芯片的机械硬盘替身”。

    • 核心特点

      • 性能适中:受限于SATA/SAS接口带宽(约550MB/s),但随机I/O性能远超机械硬盘(约100倍)。随机读延迟约0.1-0.2ms。
      • 兼容性好:可以直接替换服务器里的机械硬盘,无需更换背板或接口。
      • 性价比高:是服务器从机械盘升级到固态盘的常见选择。
      • 适用场景:主流OLTP数据库(如达梦、MySQL),中小型企业应用,作为系统盘或普通数据盘。

    2. nvme ssd

    • 简介:专为闪存设计的全新接口(M.2/U.2)和协议(NVMe),直接连接CPU的PCIe总线,消除了SATA/SAS接口的瓶颈。

    • 核心特点

      • 性能极致:顺序读写可达数GB/s(普通约3-7GB/s),随机I/O可达百万级IOPS,延迟极低(约0.02-0.05ms)。
      • 低延迟、高并发:内部队列深度极高,能同时处理大量I/O请求,非常适合高负载环境。
      • 价格较高:单位容量成本高于SATA SSD,但低于DRAM内存。
      • 适用场景:高性能核心交易系统、实时分析、分布式数据库(如OceanBase、TiDB)、AI训练、高频交易等。
#查看磁盘调度算法
lsblk -d -o NAME,TYPE,SIZE,MODEL,ROTA,TRAN

#判断标准:
TRAN 列 = sata:这就是你说的“普通 SATA SSD”或“SATA SSD”。

TRAN 列 = nvme:这就是高性能的 NVMe SSD。

注意:ROTA 列表示是否机械盘(0=固态,1=机械),但无法区分 SATA 和 NVMe,虚拟化环境不能使用这个判断

磁盘调度算法

1. none(原名 noop

  • 行为:最简单的 FIFO(先进先出)队列,几乎不做任何重排序或合并,直接将 I/O 请求下发给硬件。
  • 适用NVMe SSD 及其他硬件自身已有智能调度队列的高性能存储。这是 NVMe 设备的默认调度器。
  • 核心优势:CPU 开销最低,延迟最小。

2. mq-deadline

  • 行为:为读/写请求设置截止时间(读默认 500 毫秒,写默认 5 秒),确保没有请求会被无限期延迟。它会优先处理读请求,并将临近地址的请求合并以提升吞吐量。
  • 适用SATA SSD机械硬盘、对延迟稳定性要求高的混合负载场景。
  • 核心优势:延迟可预测,能保证最坏情况下的响应时间,是生产环境的基线推荐
  • 是Deadline的多队列版本,默认是Deadline

3. kyber

  • 行为:根据设定的目标延迟(读默认 2 毫秒,写默认 10 毫秒)动态调整队列深度,持续将延迟压至目标值以下。
  • 适用:追求持续低延迟的高性能 SSD(尤其是 NVMe)。
  • 核心优势:在高 IOPS 场景下能有效控制延迟。但学术研究表明,其长尾延迟(如 P99)表现可能不如 bfq 稳定。
  • 调优:可通过 /sys/block/nvme0n1/queue/iosched/read_lat_nsec 调整目标延迟。

4. bfq(Budget Fair Queueing)

  • 行为:为每个进程或 cgroup 分配时间预算,按权重公平分享 I/O 带宽。
  • 适用桌面环境多租户容器场景、机械硬盘。
  • 核心优势公平性最佳,能保证交互式应用不卡顿。
  • 代价:CPU 开销比 mq-deadline 高 5%-10%,且在 NVMe 设备上可能引入较高开销。

📊 调度器与磁盘类型选型矩阵

磁盘类型 推荐调度器 原因与说明
NVMe SSD(企业级/高性能) nonekyber none 无调度开销,直接将请求下发给硬件,性能最高;学术研究也表明,CPU是NVMe的主要瓶颈,减少调度开销至关重要。kyber 专为高IOPS优化,可控制目标延迟。
SATA/SAS SSD(普通固态盘) mq-deadline(首选)或 kyber mq-deadline 提供可预测的低延迟,是稳定的基线选择。如果遇到延迟波动问题,可尝试切换至 kyber
机械硬盘(HDD) mq-deadlinebfq mq-deadline 能有效减少寻道时间,避免请求“饿死”。bfq 适用于多用户或桌面环境,强调公平分配I/O带宽。
虚拟化磁盘(如 virtio) mq-deadline 作为通用稳妥选择,因为底层物理调度已由宿主机Hypervisor负责。/
#查看磁盘调度算法
cat /sys/block/sda/queue/scheduler

#临时修改
# 假设你的磁盘是sda,想临时切换为noop
echo noop > /sys/block/sda/queue/scheduler

#永久修改

#使用 grubby 工具
# 对所有内核生效,设置 elevator=noop
grubby --update-kernel=ALL --args="elevator=noop"

#编辑 /etc/default/grub 文件
# 1. 用编辑器打开文件
vi /etc/default/grub

# 2. 在 GRUB_CMDLINE_LINUX 行中添加 elevator=noop
# 例如原内容为: GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet"
# 修改后为: GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet elevator=noop"

# 3. 保存文件,并重新生成GRUB配置
grub2-mkconfig -o /boot/grub2/grub.cfg

达梦数据库选择

  • 根据服务器的不同,一般oltp系统中,将磁盘的调度算法设置为 deadline,特别是 arm 平台,必须要设置为 deadline。如存储为 nvme 等高性能的设备时,此类设备 IO 调度算法只有 none,则无需设置。

达梦社区技术 https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服