当镜像时,RAID1系统如何确定要使用哪个磁盘作为源,以及使用哪个磁盘作为目标?
例如,假设以下场景:用两个磁盘创建一个RAID1数组A和B。A被磁盘C替换,磁盘C被添加到数组中。随着时间的推移,文件正在被修改。现在,B被移除,A被重新插入。
RAID1系统会意识到A和C不同步吗?而C比A更时髦?如果没有,是否有安全的方法来避免镜像进程在插入磁盘A时立即启动?
编辑:我应该澄清一下,在我的场景中,我假设A在被删除时没有失败,因此,据我所知,当RAID1系统必须决定在它们之间进行镜像时,附近的A或C都是“脏”的。(我假设没有位图,但我知道这可能与此相关。)
发布于 2012-10-07 22:53:07
所发生的情况是,这两个磁盘是连续写入,并从互换读取。它是一个多主系统,并由此产生的读取性能提高由镜像.
当一个卷变坏时,该数组被称为degraded。然后添加一个新磁盘;RAID控制器知道这个驱动器不包含卷的一部分(它是dirty),并且数组开始从数组的其他位置复制它应该存储的数据(这个过程称为rebuilding);对于RAID 1,只有一个地方可以复制它。重建完成后,新卷为clean,系统具有容错性和多主重(normal)特性.
如果另一个原始磁盘在重新构建之前被删除或失败,则会有数据丢失(如果删除但没有死,这是微不足道的恢复)。但是,如果在重建完成并添加了一个新磁盘后将其删除,则数组将经历完全相同的降级过程,从而恢复正常。
这是稍微简化,虽然它代表了绝大多数情况下,磁盘失败或以其他方式被删除和添加。例如,通常还可以将卷的部分标记为脏的。
发布于 2012-10-07 20:10:25
您正在讨论的是使用mdadm的软件镜像。不管你是否使用位图,你都没有写。我假设您确实使用了位图(在另一种情况下,当磁盘丢失/重新连接/任何其他情况下,完整的重新镜像将从第一个块开始)。
在位图的情况下,这些位图将存储在每个磁盘上--或者作为镜像上的内部位图--磁盘本身,或者存储在外部位图上(如果您指定的话)--这也是每个磁盘。
现在,这也是对您的问题的答案:在开始时,所有的位都被标记为“脏”,即需要重新同步。每个位表示物理磁盘上的一个块。所以这些位图的状态很重要。
您可以使用cat /proc/mdstat查看这些位图的状态。
请注意,如果创建镜像,则创建位图不是标准操作。在使用mdadm --grow之后,您可以更改它。
发布于 2018-04-24 08:44:58
如果你让它在任何一点上都有动力的话。它通常会在驱动器上有类似于写计数器的东西。因此,无论哪一个是最高的主人,它将采取。
所以,如果你拿出驱动器A一个星期,但继续运行与驱动器B,它会有一些书面在这段时间,并有一个更高的写计数器。然后就成了主人。
一些控制器将在上一次引导的基础上建立起它的基础。如果一个驱动器丢失了一个星期,那么它会重新出现,现在它被认为是不同步的。
如果您要同时删除两个驱动器,它将取决于控制器将做什么。很可能只是显示一个可以导入的外部数组。
https://serverfault.com/questions/435732
复制相似问题