RAID 1是镜像,它依赖于镜像中的所有磁盘是彼此的精确副本。拿起您的随机硬盘驱动器和另一个随机硬盘驱动器,您那里可能有不同的数据,因此违反了这一假设。这就是为什么需要初始化。它只是将第一个驱动器的内容复制到其他驱动器。请注意,在某些情况下,无需初始化驱动器就可以摆脱麻烦-通常,崭新的设备在各处都已经有零,因此您可以简单地忽略它。该mdadm
选项会--assume-clean
执行此操作,但会警告您:
--assume-clean
告诉mdadm该数组已存在并且已知是干净的。当您尝试从主要故障中恢复时,它很有用,因为可以确保除非实际写入阵列,否则不会影响任何数据。如果要避免初始重新同步,也可以在创建RAID1或RAID10时使用它,但是不建议这种做法(通常是安全的)。仅当您真正知道自己在做什么时才使用此功能。
如果不这样做,则驱动器之间会存在差异,并且读取驱动器时,将不知道驱动器将读取什么内容。您应该对文件系统非常安全(但请注意以下内容),因为很可能您会在从该设备读取任何内容之前先进行写操作,然后您就可以了。
请注意,至少Linux mdadm
会在后台初始化数组。您可以在第一秒钟的基础上愉快地创建FS。在初始化完成之前,性能将受到影响,但这就是全部。
但:
a)在执行mkfs
一些实用程序时,检查该驱动器上是否已经有东西。虽然它仅接触驱动器的几个著名区域,但在您写任何东西之前它都会先读取,从而使您处于危险之中。
b)如果您定期对阵列进行重新同步,则RAID设备对您的FS一无所知。它只是从每个设备读取每个块并进行比较。而且,如果您不使用写时复制FS(例如ZFS或BTRFS)并且从不填充FS,那么从FS角度来看,多年不进行初始化仍是完全合理的。
为什么要与RAID1设备重新同步?
出于相同的原因,您与RAID5设备或任何其他级别(RAID0除外)重新同步。它读取所有数据并比较/验证RAID校验和(在RAID 5或6中)。如果以任何方式翻转一点(因为HD内存自发翻转,因为您和您的5个邻居的手机只是偶然干扰了这个特定的盘子区域,无论如何),它将检测到不一致,但是将无法检测到帮你。如果OTOH,其中一个硬盘驱动器仅报告“我无法读取该块”,而驱动器发生故障的可能性更大,则您只是较早地检测到故障,并减少了在降级模式下运行的时间(从驱动器故障,而不是从您注意到时开始)。如果一个驱动器出现故障,RAID将无法为您提供帮助;一个月后,如果您没有,RAID将无法为您提供帮助
RAID10
现在,对于RAID10,以上所有条件均成立。毕竟,RAID10只是告诉“我将两个RAID1设备放入一个RAID0对中”的聪明方法。
警告:
这都是不确定的行为。为什么我在Linux上使用进行过检查mdadm
,其他软件RAID的实现可能会有所不同。mdadm
我正在使用的其他版本的Linux内核和/或工具的行为也可能有所不同。