如何使用 Raspberry PI 4b / DietPi 安全地配置/使用 SW RAID 5 而不丢失数据?

如何使用 Raspberry PI 4b / DietPi 安全地配置/使用 SW RAID 5 而不丢失数据?

这个问题也是为了澄清我这里是否有一个像样的 bug,软件还是硬件。我的目标是使用 USB3.0 HUB 和 3 个 4 TB Western Digital 硬盘驱动器为我的 Raspberry PI 4b 系统设置 SW-RAID-5。在配置(恢复)和/或将数据 rsync 到它的过程中出现了问题。我的范围:我是使用 (SW) RAID 和 Raspberry PI 的新手,但作为用户和 Java 程序员,我已经使用 Debian (UBUNTU) 大概 12 年了。

到目前为止,我的所有努力都集中在 1、2 或所有 3 个磁盘上的超级块错误上。然后我无法恢复阵列,并且它不断出现“输入/输出错误”。

我的配置:

  • 树莓派 4b
  • 3 4 TB 硬盘 WD RedOne NAS 系列
  • 4x USB 3.0 集线器连接到树莓派和硬盘
  • 推荐使用 DietPi 作为操作系统

我迄今为止的步骤:

这意味着我花了一些时间来完成这些基本步骤,以 root 用户身份登录,/dev/sd[abc] 只是一个初始启动情况,在插入和拔出以及添加新硬盘或移除硬盘时,情况显然会发生变化:

$ mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc
[$ mdadm --detail --scan >> /etc/mdadm/mdadm.conf]
[$ mount /dev/md0 /nextCloud]

步骤 2 和 3 只是可选的,并不是我上次尝试启动阵列(或初始化/恢复)的一部分

我花了很长时间才意识到,以下恢复部分对于创建系统至关重要,需要很长时间才能完成。虽然我发现建议在此“恢复”期间写入 RAID 阵列应该没问题,所以我首先尝试将备份数据放入其中:

我将备份硬盘(1.8TB)安装到另一个 USB 3.0 端口上并安装到 /usbmount:

$ cd /usbmount
$ rsync -a --info=progress2 video music private photo public /nextCloud

这是在“恢复”期间发生的,在启动后不久就以一组“输入/输出”错误结束,导致阵列无法使用。例如,之前我能够在阵列上创建一个目录,但在 rsync 命令之后,它会因某些或所有驱动器上的“超级块错误”而失败。

我记得用过

$ mdadm -D /dev/md0

第一次尝试这样做,结果如下(根据我的记忆,输出结果来自我的 UBUNTU 工作站并手动更改):

/dev/md0:
        Version : 1.2
  Creation Time : Tue Aug 27 00:27:01 2019
     Raid Level : raid5
     Array Size : 7813774336 (7451.80 GiB 8001.30 GB)
  Used Dev Size : 3906887168 (3725.90 GiB 4000.65 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Tue Aug 27 09:08:34 2019
          State : clean, degraded, recovering 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 512K

 Rebuild Status : 0.1% complete

           Name : laptoppete-G752VSK:0  (local to host laptoppete-G752VSK)
           UUID : d978dd44:93a147bb:4ce5f283:a7a1a3c1
         Events : 5110
    Number   Major   Minor   RaidDevice State
       -       -       -        0      -
       -       -       -        1      -
       -       -       -        2      -

    Number   Major   Minor   RaidDevice State
       0       8       48        0      spare part : /dev/sdd
       1       8       64        1      active sync   /dev/sde
       3       8       80        2      spare rebuilding   /dev/sdf

我尝试通过以下方法修复它:

  • 停止 mdadm
  • 无论如何将超级块归零都会失败

我只能通过在我的 Ubuntu 16.04 工作站上彻底销毁/重新格式化它才能再次访问我的数据阵列。

然后重新插入 RaspberryPi/DietPi 系统,在完成上述第一步后,我遇到了这个问题,因为我没有复制,只是等待 24 小时的恢复轨迹。我猜大约恢复了 40% 后,它又出现了同样的问题。与此同时,我试图 rsyncing 到另一台设备(32 GB 的棒),我只用它来测试我的 rsyncing 是否有问题(我也尝试了 rsync 和 --info=progress2 以及 --progress 标志)。我不确定,但我认为它在上次调用时失败了。

然后,所有 (!) 安装都再次损坏,所有连接的硬盘驱动器都发出损坏的超级块和“输入/输出”错误。再次无法访问阵列或其他已安装的硬盘驱动器,直到首先在其他系统上拔下/重新格式化并重新启动。

现在我诚恳地问你。我在这里犯了系统错误吗?或者我遇到了严重的 DietPi DeepShit I/O 问题,甚至是硬件故障?我很感激任何有用的帮助!提前致谢!

[编辑] 我在 UBUNTU 16.04 上完成了所有步骤,至少恢复速度更快,但也无法访问阵列,尤其是在拔出/重新插入后(尝试使用此链接连接我的目标 RaspberryPI 系统): https://serverfault.com/questions/32709/how-do-i-move-a-linux-software-raid-to-a-new-machine

有什么建议排除配置错误、驱动器、集线器或树莓派的硬件问题,或任何相关的 Linux 操作系统或工具问题关于 mdadm 或 rsync 非常欢迎!

答案1

正如 @davidgo 在上面以及本文后面所指出的那样关联,在 PI 上使用软件 RAID 不是一个好主意。特别是 RAID-5,对我来说,它是数据冗余、故障概率和价格之间最好的选择。

但是按照更简单的教程(一般具有相同的工作步骤)进行操作后,出现了问题,如问题所述。即使在 Ubuntu 上,新恢复的 RAID-5 系统在重启后也出现故障。导致系统故障的另一种可靠方法是简单地使用“rsync -a”进行复制。

因为我想要一个更可靠的系统,所以我现在转向了不同的解决方案。也许是一个备份的 own/nextCloud 系统,我只需每周备份一次即可增加数据安全性(手动使用脚本和仅用于此目的的 USB 驱动器,即我上面的第二个驱动器的配置)。

如果没有人想在这里补充内容,我会在这里给出这个答案,作为建议不要使用 USB3 集线器连接软件 RAID。使用基于硬件的 RAID,直接在系统总线上执行操作,而不是通过 USB3.0。如果我没有犯下严重错误,它根本不可靠也不强大。

在我看来,永久性数据丢失的风险很大,不仅仅是从概率上讲,正如上面链接和至顶网(在下面的评论中),而是就过程本身的不安全性而言(位于 USB 3.0 HUB 和 OS 系统以及管理 RAID 的工具:mdadm 之间的某个地方尚未分析)。

相关内容