这里有多个问题 - 但首先是这个问题:我们有一台 Dell PowerEdge R710,配备 PERC 6/i RAID 控制器(或控制器),采用 RAID10 配置。
该系统运行 Ubuntu Server 10.04 LTS,其中 MySQL 执行读取密集型工作负载。
我使用增加预读功能blockdev --setra ### /dev/sda
来增加预读功能(至少在理论上,读取是顺序读取)。这似乎没有产生重大影响。我没有更改磁盘提升器(我见过noop
并deadline
推荐过)。
系统负载猛增,这似乎与磁盘 I/O 等待有关。系统等待磁盘 I/O 的时间最多可达 50%,而 CPU % 约为 7-10%。具有 RAID5 和写入密集型 MySQL 安装的类似系统完全超过了该系统。
根据 Dell OpenManage 的报告,RAID10 系统似乎有两个 PERC 6/i 控制器;但是,只有控制器 0 有机柜,并且只有控制器 0 上有 RAID。RAID 由四个磁盘(我认为是插槽 0-3)和两个空闲插槽组成。
该系统还在 PowerSaving 配置文件中运行,可让操作系统管理 CPU 速度。
该系统还受到某些 Linux 内核中发现的 fsync() 错误的影响。
最后,PERC 6/i 报告固件已过时:它有 6.2.0-0013 并且需要 6.3.0-0001。
现在的问题是:
- 是否可以将 RAID10 阵列的一部分移动到第二个控制器?
- 是否实际上有两个控制器可在同一背板上使用,或者我遗漏了什么?
- 固件更新能解决磁盘速度问题吗?
- RAID 级别与较大的磁盘 IO 等待有关系吗?
- 省电模式会有多大效果?(有些报告似乎说它会降低内核速度。)
我强烈怀疑有某种配置可以使磁盘的速度快得可怕,但我似乎无法确定。
更新:此处使用的四个磁盘均为 Hitachi HDS721010CLA332 型号,该型号被列为具有 SATA“总线协议”,但也有“SAS 地址”?这些磁盘是否就是我听说过的那些速度相当慢的 SAS 模拟驱动器?无论如何,这些显然是 7200 RPM 驱动器。
比较系统包含 SAS 驱动器:Seagate ST31000640SS - 也是 7200 RPM。此比较系统还使用了两个 RAID 控制器,并与其关联了“背板”条目。
答案1
PERC 6/i 是双端口控制器;每个端口有 4 个 SAS 通道。在 8x2.5 英寸 R710 机箱上,这是前面板磁盘到 SAS 通道的一对一映射。在 3.5 英寸机箱上,端口 6 和 7 未使用。使用 4 磁盘阵列,您可以将 2 个磁盘移动到插槽 4 和 5 以在通道之间分配工作负载,尽管 PERC 卡上仍然有一个处理器和内存。
更新固件通常是一个好主意,并且是一个相当轻松的过程(尽管它需要重新启动。)
答案2
4 磁盘 RAID 10 可为您提供 2 个磁盘的写入性能和 4 个磁盘的读取性能(绝对是最佳情况)。7200 rpm 硬盘应提供 75-100 IOps。您看到了什么样的性能?您是否读到%util
接近 100 iostat
?
如果主要负载由数据库生成,是什么让您认为它将主要为顺序负载?数据库是典型的随机访问情况。您可以使用它iostat
来查看平均请求大小。collectl
还会为您提供有关内核中完成的 I/O 合并的信息。它是否符合您对主要为顺序读取的预期?
你指的是什么 fsync() 内核错误?
你使用什么文件系统?什么挂载选项?noatime
选项可以让你明显加快 ext[34] 的速度,因为修改访问时间意味着每次读取文件时都需要额外的写入(最坏的情况是高分辨率时间戳)。
答案部分 ;)
固件更新可能会有所帮助,但不要指望奇迹。你可能会获得几个百分点,而不是
RAID 10 是性能最佳的级别(如果您想保持冗余),因此它本身不会造成问题。但是,您可能有分区和/或 LV 与条带大小不一致。这可能会使小型随机读取所需的 IO 增加一倍(最坏情况),并且会对任何类型的 I/O 造成开销。
省电模式不会花费太多。从您告诉我们的情况来看,磁盘太忙,无法减速,而且 CPU 无论如何都在等待 I/O。
答案3
谨慎使用显示平均 CPU 负载的工具。这个数字当然是查看大致负载的良好起点,但是如果您看到 24 个 CPU 系统上的负载为 50%,您怎么知道 12 个 CPU 没有 100% 利用率,而其他 12 个处于空闲状态?我见过负载低于 10% 的情况,但 1 个 CPU 却在 100% 处理中断。-mark
答案4
我们的一台服务器有该 RAID 控制器和固件版本;显然,最新版本的固件修复了写入缓存电池无法正常充电的错误。由于电池未充电,控制器会切换到直写模式来保护您的数据,这会严重影响您的性能。
更新固件并给电池充电几个小时。然后你就可以正常运行了。