CentOS、Xeon 1230、16 Gb RAM、raid1 中的 2x1TB SSD(mdadm)。
从 raid1 读取的速度从 130 到 250 MB/s 不等,取决于文件等。
但写入速度非常慢:15-20 MB/s(iotop
等mc
)!您知道 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。