这个问题也是为了澄清我这里是否有一个像样的 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 作为操作系统
我迄今为止的步骤:
- 通过 ssh 安装 mdadm 连接(或通过键盘和显示器的命令行 shell)
- 执行 smartmonctl 短测试和长测试,以确保硬盘没有损坏(因为通过亚马逊运输似乎大多数时候都像包装一样),据我判断,结果是 0 个错误
- 几乎按照本教程进行操作: https://canox.net/2016/06/die-eigene-cloud-mit-dem-raspberry-pi-und-nextcloud/
这意味着我花了一些时间来完成这些基本步骤,以 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 之间的某个地方尚未分析)。