在 RaspberryPi 2 上使用 mdadm 设置 Raid 1 时出错

在 RaspberryPi 2 上使用 mdadm 设置 Raid 1 时出错

我在我的 RaspberryPi 上使用 mdadm 设置 RAID 1,该 RaspberryPi 有两个驱动器(均为 2 TB,均采用 exFAT 格式化,均具有独立电源),但遇到了错误。

不幸的是我不是 Linux 和命令方面的专家。

这是我所做的:

  • 使用 apt-get install mdadm 安装 mdadm
  • 找到两个设备sudo fdisk -l(如 /dev/sda 和 /dev/sdb)
  • 将 RAID 1 设置为 /dev/md0sudo mdadm -Cv /dev/md0 -l1 -n2 /dev/sd[ab]1
  • 格式化 /dev/md0sudo mkfs /dev/md0 -t ext4
  • 将 /dev/md0 挂载到 /media/nassudo mount /dev/md0 /media/nas
  • 编辑/etc/fstab/dev/md0 /media/nas ext4 4 0 0
  • 将 AUTOSTART=true 添加到 /etc/default/mdadm
  • 在 /etc/samba/smb.conf 中启用 samba

一切都很顺利,我可以使用 WinSCP 将文件上传到 /media/nas。

现在我的问题:第二天我的上传失败,错误代码为 4(没有进一步的错误文本)。当我运行时,sudo fdisk -l我发现了 sda 和 sdb 两个设备。此外还有大小为 2000.3 GB 的 /dev/md0,但还有大小为 2000.3 GB 的 /dev/md127。

当我运行时,sudo mdadm --detail /dev/md0我得到以下信息:

/dev/md0:版本:1.2 创建时间:2018 年 1 月 5 日星期五 12:23:50 Raid 级别:raid1 阵列大小:1953371712 (1862.88 GiB 2000.25 GB) 使用的开发大小:1953371712 (1862.88 GiB 2000.25 GB) Raid 设备: 2 总计设备:1 持久性:超级块是持久性的

Update Time : Sun Jan  7 14:37:23 2018
      State : clean, degraded

活动设备:1 工作设备:1 故障设备:0 备用设备:0

       Name : raspberrypi:0  (local to host raspberrypi)
       UUID : 926bc124:2945e335:1e79ab6c:06b12095
     Events : 21

Number   Major   Minor   RaidDevice State
   0       0        0        0      removed
   1       8        1        1      active sync   /dev/sda1

的输出sudo mdadm --detail /dev/md127是:

/dev/md127:版本:1.2 创建时间:2018 年 1 月 5 日星期五 12:23:50 Raid 级别:raid1 阵列大小:1953371712 (1862.88 GiB 2000.25 GB) 使用的开发大小:1953371712 (1862.88 GiB 2000.25 GB) Raid 设备: 总计 2设备:1 持久性:超级块是持久性的

Update Time : Sun Jan  7 14:38:47 2018
      State : clean, degraded

活动设备:1 工作设备:1 故障设备:0 备用设备:0

       Name : raspberrypi:0  (local to host raspberrypi)
       UUID : 926bc124:2945e335:1e79ab6c:06b12095
     Events : 27

Number   Major   Minor   RaidDevice State
   0       8       17        0      active sync   /dev/sdb1
   1       0        0        1      removed

当我尝试使用 再次设置 RAID 时sudo mdadm -Cv /dev/md0 -l1 -n2 /dev/sd[ab]1,出现错误:

mdadm: super1.x cannot open /dev/sda1: Device or resource busy mdadm: failed container membership check mdadm: cannot open /dev/sda1: Device or resource busy

如何重新设置 RAID,md127 从何而来以及导致此错误的原因是什么?

(重启没有任何作用)

提前致谢!

答案1

发生的情况是您的 RAID 阵列崩溃了。根据您提供的零碎输出,我怀疑/dev/sdb1遇到了暂时性故障(很可能是 Pi 的 USB 系统出现故障)并被标记为失败。当它重新上线时,Linuxmd子系统将其视为不属于任何已知阵列的新 RAID 卷,并将其设置为/dev/md127.

当你跑步时sudo mdadm -Cv /dev/md0 -l1 -n2 /dev/sd[ab]1,你很幸运:它失败了。跑步mdadm --create就差不多了绝不RAID 问题的解决方案。破坏数据的可能性远大于恢复数据的可能性。

此时,您最好的选择可能是销毁/dev/md127数组并重新添加/dev/sdb1/dev/md0.

  1. 确保这/dev/md0确实是您数据的实时副本。检查 的输出mount以验证它是否安装在 上/media/nas,并运行ls /media/nas以确保您的数据在那里。
  2. /dev/sdb1/dev/md127:中删除mdadm /dev/md127 --fail /dev/sdb1,然后是mdadm /dev/md127 --remove /dev/sdb1.
  3. 让自己/dev/sdb1看起来不再像 RAID 成员:wipefs -a /dev/sdb1
  4. 把它放回/dev/md0mdadm /dev/md0 --add /dev/sdb1
  5. 让计算机重建阵列,复制其中的所有内容/dev/sda1

为了防止将来发生这种情况,请在 中设置描述您的数组的条目/etc/mdadm/mdadm.conf。如果驱动器暂时脱离阵列,mdadm则会在配置文件中看到它,并会坐在那里等待您执行步骤 (4)。

如果您的设置有产生临时故障的习惯,请考虑向您的数组添加一个写入意图位图:mdadm --grow /dev/md0 --bitmap=internal。这会在一定程度上减慢写入速度,因为位图需要更新,但会大大加快恢复速度,因为只需将更改从一个磁盘复制到另一个磁盘。如果添加写入意图位图,则可以使用--re-add而不是将暂时发生故障的磁盘放回到阵列中--add

相关内容