首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用mdadm加速从Raid 5到Raid 6的迁移?

如何用mdadm加速从Raid 5到Raid 6的迁移?
EN

Unix & Linux用户
提问于 2014-07-23 14:40:27
回答 2查看 5.3K关注 0票数 5

今天,我通过添加一个新磁盘(从7个磁盘到8个磁盘,全部为3TB),开始将Raid 5迁移到Raid 6。现在,重塑正在进行中:

代码语言:javascript
运行
复制
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid6 sdi[9] sdh[8] sdf[7] sdc[6] sdd[4] sda[0] sde[5] sdb[1]
      17581590528 blocks super 1.2 level 6, 512k chunk, algorithm 18 [8/7] [UUUUUUU_]
      [>....................]  reshape =  2.3% (69393920/2930265088) finish=6697.7min speed=7118K/sec

unused devices: <none>

但它像地狱一样缓慢。这将是近5天前完成。我在大约一天内对数组进行了整形,但这里太可怕了。速度很慢。备份文件位于SSD上。

我确实改变了条纹的尺寸,最小和最大的速度限制,它没有改变任何东西。

有没有办法把这个过程加快到合理的时间,或者我要等5天才能完成呢?

更新: iostat -kx 10

代码语言:javascript
运行
复制
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.05    0.00    1.68   22.07    0.00   76.20

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda            1675.90  1723.00   27.60   23.90 13875.20  6970.00   809.52     0.55   10.79    8.59   13.33   7.97  41.02
sdb            1675.90  1723.10   27.20   23.80 13670.40  6970.00   809.43     0.55   10.80    8.96   12.90   8.12  41.43
sdc            1675.90  1723.60   27.50   23.30 13824.00  6970.00   818.66     0.65   12.85   10.48   15.65   9.83  49.94
sdd            1675.90  1723.10   27.60   23.80 13875.20  6970.00   811.10     0.55   10.80    8.93   12.98   8.16  41.95
sde            1675.90  1723.10   27.20   23.80 13670.40  6970.00   809.43     0.60   11.79    9.17   14.79   9.19  46.87
sdf            1675.90  1723.80   27.70   23.10 13926.40  6970.00   822.69     0.72   14.28   11.65   17.43  10.12  51.40
sdg               0.00     4.10    0.00   93.20     0.00 39391.20   845.30     6.07   65.14    0.00   65.14   2.71  25.29
dm-0              0.00     0.00    0.00    4.30     0.00    18.40     8.56     0.00    0.07    0.00    0.07   0.02   0.01
dm-1              0.00     0.00    0.00   89.60     0.00 39372.80   878.86     6.07   67.78    0.00   67.78   2.82  25.28
md0               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdh            1583.50  1631.70  216.50  115.90 13824.00  6970.00   125.11     1.56    4.73    5.36    3.55   0.43  14.41
sdi               0.00  1631.70    0.00  115.90     0.00  6970.00   120.28     0.21    1.77    0.00    1.77   0.28   3.25
dm-2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-3              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-4              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

sdi是我上次添加的磁盘。sdg就是SSD。dmX是LVM上的分区。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2014-07-29 19:45:54

在我看来,这与从raid 5到raid 6的mdadm迁移有关。我刚刚在阵列中添加了一个新的磁盘,我的硬件的增长速度是完全合理的(40万K/S)。

票数 1
EN

Unix & Linux用户

发布于 2015-09-16 00:59:56

根据这篇博文是尼尔·布朗写的 ( 创建者mdadm),您可以通过以下方式避免mdadm's块范围备份过程造成的速度损失:

  1. 增加RAID设备的数量(例如:将4磁盘RAID5重组为5磁盘RAID6) mdadm --grow /dev/md0 --level=6 --raid-disk=5
  2. 不要指定选项--backup-file

他在博客文章中详细说明的理由是,当添加了另一个驱动器时,备份文件是不必要的。这是由于流程略有不同,因为在这种情况下,旧的布局和新的布局之间通常存在差距,可以用来备份在重塑过程中操作的旧布局数据。

这篇文章的摘录更详细地解释了这一点:

如果我们认为" RAID5“比标准定义更通用一些,并且允许它是任何在多个设备上条纹数据加上一个奇偶校验块的布局,那么我们就可以把RAID4看作是RAID5的特例。然后,我们可以想象从RAID0到RAID5的转换为两个步骤。第一个转换为RAID5,使用以奇偶校验磁盘作为最后一个磁盘的RAID4布局。这显然不需要重新定位任何数据,因此更改可以立即进行。它在一个RAID5布局中创建一个降级的RAID4,因此它不是完整的,但它显然是朝着正确方向迈出的一步。我相信你能看到接下来会发生什么。在将RAID0转换为具有不寻常布局的降级RAID5之后,我们将使用新的更改布局功能来转换为真正的RAID5。这是一个非常类似的过程,现在可以用来将RAID5转换为RAID6。我们首先用非标准布局将RAID5更改为RAID6,奇偶校验块按正常分布,但Q块全部位于最后一个设备(一个新设备)上。这是使用RAID6驱动程序的RAID6,但使用的是非RAID6 6布局。因此,我们“简单地”改变布局,工作就完成了。RAID6可以通过反向过程转换为RAID5。首先,我们将布局更改为几乎是RAID5的布局,但是有一个额外的Q磁盘。然后,我们通过忘记Q盘来转换为真实的RAID5。在所有这些中,最混乱的部分是确保数据在崩溃或其他系统关闭时幸存下来。第一次整形只允许增加设备数量,这是相当容易的。在大多数情况下,设备在读取旧布局中的数据与正在写入新布局中的数据之间存在差距。这一差距使我们有两份数据副本。如果我们禁用写入一个小部分,而它正在被重塑,那么在崩溃后,我们知道旧的布局仍然有良好的数据,并简单地重新布局的最后几个条纹,我们记录的任何时候,我们所做的。这并不适用于前几条,因为它们需要在旧的布局上编写新的布局。因此,崩溃后,旧布局可能已损坏,新布局可能不完整。因此mdadm注意对最初的几条条进行备份,当它组装一个数组时,该数组仍处于重塑的早期阶段,它首先从备份中恢复。对于不改变设备数量的整形,例如更改块大小或布局,每次写入都会重写相同数据的旧布局,因此在崩溃后,肯定会有一系列块,我们无法知道它们是在旧的布局中,还是在新的布局中,或者两者兼而有之。因此,我们需要始终有一个备份的范围的块,目前正在被重塑。这是mdadm3.1中新功能中最复杂的部分(尚未发布,但可在git://neil.brn.name/ mdadm的devel-3.1分支中找到)。mdadm监视重塑,设置一个上限,它可以在任何时候取得多大的进展,并确保它允许重新排列的区域已写入禁用并已备份。这意味着所有数据将被复制两次,一次复制到备份,一次复制到数组上的新布局。这显然意味着这种重塑将非常缓慢。但这是我们为了安全而必须付出的代价。就像保险一样。你可能讨厌不得不付钱,但如果你不付钱,发现你需要它,你会更讨厌它。

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

https://unix.stackexchange.com/questions/146131

复制
相关文章

相似问题

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