我有两个内置 4TB 硬盘,刚刚开始在 Debian Wheezy 中使用软件 RAID1。我有几个问题:
1) 在启动过程中,一切都顺利通过,只是我收到一条消息,上面写着“RAID 状态不正常”。一切似乎都运行正常。我可以正常读取/写入 RAID 阵列。我已按如下方式设置分区:
/dev/sda 上 10MB,/dev/sdb 上 10MB -> /dev/mdb1(交换空间)
/dev/sda 上 4TB,/dev/sdb 上 4TB -> /dev/mdb2(ext4 根分区)
每个驱动器上 1MB biosgrub
在安装的分区创建阶段,安装程序抱怨说 /dev/mdb1(交换)无法更改,因为它正在使用中。第一次安装中断,我不得不再次运行安装程序。所以,我只是忽略了它,让 /dev/mdb1 保持原样。启动过程中的这个 RAID 状态消息让我很烦。它是什么,我该怎么做才能修复它?
2) 重新同步的目的是什么?查看内容/proc/mdstat
告诉我它正在重新同步(顺便说一句,似乎速度非常慢)。当我写入 RAID 阵列时,写入的数据不会在两个驱动器上镜像吗?还是只写入一个驱动器,稍后再重新同步来处理镜像?如果后者是真的,那么重新同步的频率是多少?这很麻烦。
3) 有没有 Debian 工具可以让我查看每个驱动器的内容?我想手动检查每个驱动器的内容,看看它们是否都包含相同的数据。
答案1
我对这些问题的看法如下:
“RAID 状态不正常。”据称意味着重新同步尚未完成,因此阵列中的驱动器发生故障是不安全的(从 RAID 子系统的角度来看)。
这是什么?我该如何解决它?
只需让 RAID 子系统完成阵列同步。
重新同步的目的是 RAID 子系统必须确保两个驱动器上的数据部分相同,然后将所有阵列成员上的超级块标记为“最新的”。
写入镜像阵列导出的设备的数据将写入所有活动阵列成员,不会干扰重新同步。重新同步基本上意味着从头到尾扫描所有阵列成员的地址空间,并确保所有阵列成员都具有相同的数据;当某些数据写入同一地址的所有这些成员时,这显然不会影响重新同步,重新同步力求实现相同的目标,只是全局性的。
这是一种错误的方法:RAID 子系统不能保证您在 RAID 阵列的每个成员上都有“可读”的数据,即使它是镜像也是如此。Linux 软件 RAID 确实会“按原样”保留每个镜像阵列成员上的数据 — 就像没有镜像一样 — 只是在每个成员介质的末尾维护一个小的超级块。
这意味着您可以
/dev/sdX
单独读取构成镜像阵列的每个设备(那些),但这通常是一个坏主意,只有当您从故障镜像阵列中恢复单个成员并将其插入另一台机器以从其分区读取数据时才会使用。
TL;DR:让镜像完成同步,问题就会消失。