如何提高 raid1 mdadm 的写入速度?

如何提高 raid1 mdadm 的写入速度?

CentOS、Xeon 1230、16 Gb RAM、raid1 中的 2x1TB SSD(mdadm)。

从 raid1 读取的速度从 130 到 250 MB/s 不等,取决于文件等。

但写入速度非常慢:15-20 MB/s(iotopmc)!您知道 SSD 的实际写入速度。CPU 负载不超过 23-25%(只有一个核心)。所以情况不正常。

我该怎么做才能达到最快的速度?

我尝试增加 speed_limit_min:

# sysctl -w dev.raid.speed_limit_min=20000

但没有结果。

我应该怎么做才能提高写入速度?

更新 1:

突袭详情

# mdadm --detail /dev/md127
/dev/md127:
        Version : 1.2
  Creation Time : Mon Dec  7 14:23:49 2015
     Raid Level : raid1
     Array Size : 999547904 (953.24 GiB 1023.54 GB)
  Used Dev Size : 999547904 (953.24 GiB 1023.54 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Sun Feb 12 13:26:17 2017
          State : active
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : localhost:pv00
           UUID : 0fe1355e:edd9d104:e2db49ec:bc3bb9b6
         Events : 7865

    Number   Major   Minor   RaidDevice State
       0       8        2        0      active sync   /dev/sda2
       1       8       33        1      active sync   /dev/sdc1

sda 的 Parted 输出:

# parted /dev/sda print
Model: ATA Samsung SSD 850 (scsi)
Disk /dev/sda: 1024GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  538MB   537MB   primary  ext4         boot
 2      538MB   1024GB  1024GB  primary               raid

sdc 的 Parted 输出

# parted /dev/sdc print
Model: ATA Samsung SSD 850 (scsi)
Disk /dev/sdc: 1024GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1024GB  1024GB  primary               raid

mdstat 文件内容:

# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdd1[1] sdb1[0]
      976630464 blocks super 1.2 [2/2] [UU]
      bitmap: 0/8 pages [0KB], 65536KB chunk

md127 : active raid1 sdc1[1] sda2[0]
      999547904 blocks super 1.2 [2/2] [UU]
      bitmap: 3/8 pages [12KB], 65536KB chunk

是不可能的...

dmesg | grep -i ahci

什么都不返回...结束...这会导致我的问题吗?

更新 1: 打开(bios、initramfs)。无影响。复制 20 GB:起初为 130-160 MB/s,一两分钟后逐渐减慢到 17 MB/s。

更新 2:

# hdparm -I /dev/sda

/dev/sda:

ATA 设备,带有不可移动介质
        型号:三星 SSD 850 PRO 1TB
        序列号:S252NXAG905316P
        固件版本:EXM02B6Q
        传输:串行、ATA8-AST、SATA 1.0a、SATA II 扩展、SATA Rev 2.5、SATA Rev 2.6、SATA Rev 3.0
标准:
        使用:未知(小修订代码 0x0039)
        支持:9 8 7 6 5
        可能使用:9
配置:
        逻辑最大电流
        气缸 16383 16383
        头 16 16
        扇区/轨道 63 63
        --
        CHS 当前可寻址扇区:16514064
        LBA 用户可寻址扇区:268435455
        LBA48 用户可寻址扇区:2000409264
        逻辑扇区大小:512 字节
        物理扇区大小:512 字节
        逻辑扇区 0 偏移量:0 字节
        设备大小为 M = 1024*1024:976762 MBytes
        设备大小为 M = 1000*1000:1024209 MBytes (1024 GB)
        缓存/缓冲区大小 = 未知
        标称介质旋转速率:固态设备
功能:
        LBA、IORDY(可禁用)
        队列深度:32
        待机定时器值:由标准指定,没有设备特定的最小值
        R/W 多扇区传输:最大 = 1 当前 = 1
        DMA:mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
             周期时间:最小=120ns 建议=120ns
        PIO:pio0 pio1 pio2 pio3 pio4
             周期时间:无流量控制=120ns IORDY流量控制=120ns
命令/功能:
        已启用支持:
           * SMART 功能集
                安全模式功能集
           * 电源管理功能集
           * 写入缓存
           * 展望
           * 主机保护区功能集
           * WRITE_BUFFER 命令
           * READ_BUFFER 命令
           * NOP 命令
           * 下载微代码
                SET_MAX 安全扩展
           * 48位地址功能集
           * 设备配置覆盖功能集
           * 强制 FLUSH_CACHE
           *刷新缓存
           * SMART 错误日志
           * 智能自我检测
           * 通用日志功能集
           *写入_{DMA|多个}_FUA_EXT
           * 64 位全球名称
                写入-读取-验证功能集
           * WRITE_UNCORRECTABLE_EXT 命令
           * {READ,WRITE}_DMA_EXT_GPL 命令
           * 分段 DOWNLOAD_MICROCODE
           * Gen1 信号速度 (1.5Gb/s)
           * Gen2 信号速度 (3.0Gb/s)
           * Gen3 信号速度 (6.0Gb/s)
           * 本机命令队列 (NCQ)
           * 物理事件计数器
           * 未知 76[15]
           * DMA 设置自动激活优化
                设备启动的接口电源管理
           * 异步通知(例如媒体变化)
           * 软件设置保存
                未知 78[8]
           * 智能命令传输 (SCT) 功能集
           * SCT 写相同 (AC2)
           * SCT 错误恢复控制 (AC3)
           * SCT 功能控制 (AC4)
           * SCT 数据表 (AC5)
           * 保留 69[4]
           * 下载微码 DMA 命令
           * SET MAX SETPASSWORD/UNLOCK DMA 命令
           * 写入缓冲区 DMA 命令
           * 读取缓冲区 DMA 命令
           * 支持数据集管理TRIM(限制8个块)
安全:
        主密码修改代码 = 65534
                支持的
        未启用
        没有锁定
                冻结
        未过期:安全计数
                支持:增强擦除
        安全擦除单元需要 2 分钟。增强安全擦除单元需要 2 分钟。
逻辑单元 WWN 设备标识符:500253884009b0f0
        乙酰辅酶A:5
        IEEE OUI :002538
        唯一 ID :84009b0f0
校验和:正确


# hdparm -I /dev/sdc

/dev/sdc:

ATA 设备,带有不可移动介质
        型号:WDC WD1004FBYZ-01YCBB1
        序列号:WD-WMC6M0D492LN
        固件版本:RR04
        传输:串行、SATA 1.0a、SATA II 扩展、SATA Rev 2.5、SATA Rev 2.6、SATA Rev 3.0
标准:
        使用:未知(小修订代码 0x006d)
        支持:10 9 8 7 6 5
        可能使用:10
配置:
        逻辑最大电流
        气缸 16383 16383
        头 16 16
        扇区/轨道 63 63
        --
        CHS 当前可寻址扇区:16514064
        LBA 用户可寻址扇区:268435455
        LBA48 用户可寻址扇区:1953525168
        逻辑扇区大小:512 字节
        物理扇区大小:512 字节
        逻辑扇区 0 偏移量:0 字节
        设备大小为 M = 1024*1024:953869 MBytes
        设备大小为 M = 1000*1000:1000204 MBytes (1000 GB)
        缓存/缓冲区大小 = 未知
        尺寸:3.5 英寸
        标称介质旋转率:7200
功能:
        LBA、IORDY(可禁用)
        队列深度:32
        待机定时器值:由标准指定,具有设备特定的最小值
        R/W 多扇区传输:最大 = 16 当前 = 16
        高级电源管理级别:96
        DMA:mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
             周期时间:最小=120ns 建议=120ns
        PIO:pio0 pio1 pio2 pio3 pio4
             周期时间:无流量控制=120ns IORDY流量控制=120ns
命令/功能:
        已启用支持:
           * SMART 功能集
                安全模式功能集
           * 电源管理功能集
           * 写入缓存
           * 展望
           * WRITE_BUFFER 命令
           * READ_BUFFER 命令
           * NOP 命令
           * 下载微代码
           * 高级电源管理功能集
                待机时启动功能集
           * 开机后需要 SET_FEATURES 才能启动
           * 48位地址功能集
           * 强制 FLUSH_CACHE
           *刷新缓存
           * SMART 错误日志
           * 智能自我检测
           * 通用日志功能集
           *写入_{DMA|多个}_FUA_EXT
           * 64 位全球名称
           * IDLE_IMMEDIATE 与 UNLOAD
           * WRITE_UNCORRECTABLE_EXT 命令
           * {READ,WRITE}_DMA_EXT_GPL 命令
           * 分段 DOWNLOAD_MICROCODE
                未知 119[6]
                未知 119[7]
                未知 119[8]
                未知 119[9]
           * Gen1 信号速度 (1.5Gb/s)
           * Gen2 信号速度 (3.0Gb/s)
           * Gen3 信号速度 (6.0Gb/s)
           * 本机命令队列 (NCQ)
           * 物理事件计数器
           * NCQ 处于活动状态时空闲-卸载
           * NCQ 优先级信息
           * 未知 76[14]
           * 未知 76[15]
           * DMA 设置自动激活优化
                设备启动的接口电源管理
           * 软件设置保存
                未知 78[7]
           * 智能命令传输 (SCT) 功能集
           * SCT 写相同 (AC2)
           * SCT 错误恢复控制 (AC3)
           * SCT 功能控制 (AC4)
           * SCT 数据表 (AC5)
           * 保留 69[3]
           * 下载微码 DMA 命令
           * 长物理扇区诊断
安全:
        主密码修改代码 = 65534
                支持的
        未启用
        没有锁定
                冻结
        未过期:安全计数
                支持:增强擦除
        安全擦除单元需要 118 分钟。增强安全擦除单元需要 118 分钟。
逻辑单元 WWN 设备标识符:50014ee0aef2a46c
        乙酰辅酶A:5
        IEEE OUI : 0014ee
        唯一 ID :0aef2a46c
校验和:正确

更新3:smartctl

# smartctl -a /dev/sda

SMART 属性数据结构修订号:1
供应商特定的 SMART 属性及阈值:
ID# ATTRIBUTE_NAME 标志值 最差阈值类型 已更新 WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct 0x0033 100 100 010 预故障始终 - 0
  9 通电时间 0x0032 097 097 000 老化时间 始终 - 15006
 12 Power_Cycle_Count 0x0032 099 099 000 Old_age 始终 - 34
177 Wear_Leveling_Count 0x0013 099 099 000 预故障始终 - 18
179 Used_Rsvd_Blk_Cnt_Tot 0x0013 100 100 010 始终预故障 - 0
181 Program_Fail_Cnt_Total 0x0032 100 100 010 Old_age 始终 - 0
182 擦除失败计数总和 0x0032 100 100 010 Old_age 始终 - 0
183 Runtime_Bad_Block 0x0013 100 100 010 预故障始终 - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age 始终 - 0
190 Airflow_Temperature_Cel 0x0032 067 054 000 Old_age 始终 - 33
195 Hardware_ECC_Recovered 0x001a 200 200 000 Old_age 始终 - 0
199 UDMA_CRC_Error_Count 0x003e 100 100 000 Old_age 始终 - 0
235 Unknown_Attribute 0x0012 099 099 000 Old_age 始终 - 12
241 Total_LBAs_Written 0x0032 099 099 000 Old_age 始终 - 22922238691

更新 4: 我想我已经找到了。/etc/fstab 中的“discard”选项。它将测试服务器上的写入速度提高到 70-80 MB/s,但在目标服务器上,我现在无法检查它。

谢谢大家,我想问题已经解决了。

答案1

您所指的这个变量与RAID 重建速度。如果您的阵列处于正常模式(未重建),则它应该不会影响系统性能。

通过查看正在运行的进程,我可以注意到硬盘速度慢(或太忙)。您可以查找您知道正在访问具有D状态(不间断睡眠)的磁盘的进程。如果有,这可能表示磁盘速度慢。否则,您的进程可能没有以预期的速率执行 IO。

相关内容