首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有快速写入但读取慢的RAID6 resync

具有快速写入但读取慢的RAID6 resync
EN

Server Fault用户
提问于 2017-11-06 08:59:33
回答 1查看 872关注 0票数 6

我在用Debian Jessie。

代码语言:javascript
复制
# uname -a
Linux host 4.9.0-0.bpo.3-amd64 #1 SMP Debian 4.9.30-2+deb9u5~bpo8+1 (2017-09-28) x86_64 GNU/Linux

并设置了一个RAID6。

代码语言:javascript
复制
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid1]
md0 : active raid6 sda[0] sdd[3] sdc[2] sdb[1]
      19532611584 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
      bitmap: 1/73 pages [4KB], 65536KB chunk

这是4倍希捷企业10TB 7200 are。当将大文件从RAID阵列复制到内部系统磁盘(也就是SSD)时,平均吞吐量为220 to /S。从SSD复制大文件到数组是使用145 to /S完成的。当每月进行RAID检查时(由cron作业执行checkarray --cron --all --idle --quiet启动,这是默认行为),我可以看到。

代码语言:javascript
复制
# cat /proc/mdstat                                                                                                                                                 Personalities : [raid6] [raid5] [raid4] [raid1]
md0 : active raid6 sda[0] sdd[3] sdc[2] sdb[1]
      19532611584 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
      [>....................]  check =  0.7% (72485728/9766305792) finish=817.2min speed=197694K/sec
      bitmap: 1/73 pages [4KB], 65536KB chunk

所以再同步速度也很好。现在,有一些奇怪的行为。在执行check时,我可以并行地将数据写入数组,并具有良好的性能。写入速度为100 is /S,可以看到RAID同步速度下降。完成复制到数组后,同步速度再次提高到以前的速度。问题是在运行check时从数组中读取。读数是在<20 are /S的情况下完成的,RAID的重同步速度不会降低。我不知道这是什么原因。

代码语言:javascript
复制
# ps aux | grep md0
root       211  0.4  0.0      0     0 ?        S    Okt22  93:40 [md0_raid6]
root       648  0.0  0.0      0     0 ?        S    Okt22   0:01 [jbd2/md0-8]
root     15361  4.4  0.0      0     0 ?        DN   02:25   0:00 [md6_resync]
root     15401  0.0  0.0  12752  2040 pts/2    S+   02:26   0:00 grep md6
# ionice -p 211
none: prio 0
# ionice -p 15361
idle

Resync过程被设置为idle,这是正确的。I/O调度程序设置为CFQ,用于所有底层物理磁盘。

这个系统中也有一个RAID1。

代码语言:javascript
复制
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid1]
md1 : active raid1 sde[0] sdf[1]
      3906887488 blocks super 1.2 [2/2] [UU]
      bitmap: 2/30 pages [8KB], 65536KB chunk

这个数组没有问题。在运行过程中,我可以以良好的速度写入和读取数组。在观看/proc/mdstat时,同步速度会降低I/O活动,并在完成后增加。但不适合在md0/RAID6上阅读I/O。至于md0的正常同步速度是很好的,正常读写没有重新同步是好的,甚至写入数组运行RAID检查是很好的,为什么读取坏当每月检查运行?

EN

回答 1

Server Fault用户

发布于 2017-11-08 21:00:05

让我首先说,我对mdadm或Debian没有真正的想法-不过,我认为您所看到的效果是非常普遍的。

当您查看RAID 6的工作原理时,通常要比读取速度慢一些:有了读,所有四个磁盘都可以同时读取。奇偶校验数据被跳过,相反,下一个数据段可以提前读取到缓存。可以达到的最佳读取速度是单个磁盘速度的n倍。

在写入时,数据由两个需要写入磁盘的不同奇偶校验段进行扩展。当所有磁盘同时写入时,要达到的最佳速度是单个速度的n-2倍。

一个RAID 6重新同步或重建很少,大磁盘将需要很长时间。本质上,必须读取每个条带,并将其与存储在磁盘上的冗余数据进行比较。磁盘负载很重,任何有效的I/O都必须与所有读操作竞争。这就是阅读速度慢的原因。要有良好的读取延迟,背景同步需要以低优先级运行,即当其他I/O被感知时,它需要停止并暂停片刻。

另一方面,只要有可用的缓存,写就会先进入缓存,并且看起来马上就完成了。真正的写作会在某个时候发生在背景中。只有当您的写入量超过缓存容量时,您才会注意到严重的减速。

要想在重新同步过程中使读取速度达到一个很好的水平,首先需要缓慢地运行背景检查,或者想出一种在完成高效读取时使其暂停的方法。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/882009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档