我有一个 4 磁盘 RAID5 阵列,其中四个 3TB 硬盘中的一个坏了。由于 RAID5 可以容忍单个驱动器故障,因此我想尝试在不更换坏掉的驱动器的情况下操作 RAID5。(使用 3/4 个驱动器运行阵列)
我正在尝试在 Linux 环境中恢复数据,用来mdadm
组装和安装磁盘,以便我可以访问数据并将其卸载到其他外部存储器。
当我lsblk
得到以下信息时:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 111.8G 0 disk
├─sda1 8:1 0 103.9G 0 part /
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 7.9G 0 part [SWAP]
sdb 8:16 0 2.7T 0 disk
├─sdb1 8:17 0 2.4G 0 part
├─sdb2 8:18 0 2G 0 part
└─sdb3 8:19 0 2.7T 0 part
└─md2 9:2 0 8.2T 0 raid5
sdc 8:32 0 2.7T 0 disk
├─sdc1 8:33 0 2.4G 0 part
├─sdc2 8:34 0 2G 0 part
└─sdc3 8:35 0 2.7T 0 part
└─md2 9:2 0 8.2T 0 raid5
sdd 8:48 0 2.7T 0 disk
├─sdd1 8:49 0 2.4G 0 part
├─sdd2 8:50 0 2G 0 part
└─sdd3 8:51 0 2.7T 0 part
└─md2 9:2 0 8.2T 0 raid5
第一个驱动器是运行操作系统的 SSD,其他 3 个驱动器是 RAID5 阵列的一部分。故障驱动器已被移除。我还可以根据每个驱动器第三个分区的大容量判断哪个分区存储了我想要恢复的 NAS 数据。(sdb3, sdc3, sdd3
)
我尝试使用以下方法组装驱动器:
mdadm --assemble --run /dev/md2 /dev/sd[bcd]3
这给了我:/dev/md2 has been started with 3 drives (out of 4).
然后我尝试:
mount -t ext4 /dev/md2 /home/raid
这会产生错误:
mount: wrong fs type, bad option, bad superblock on /dev/md2,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
我读过这是因为没有文件系统,但这些驱动器来自 Synology DS412 + NAS,它上面有一个可用的文件系统,因为它们被用于家庭网络存储。
dmesg | tail
给出错误Number of reserved GDT blocks insanely large: 8189
对此的进一步研究产生了这个问题 https://askubuntu.com/questions/894530/insanely-large-gdt-blocks-with-mdadm-partitions谁的答案链接到一个帖子,该帖子暗示该问题可能是对内核版本 4.7 的补丁导致的,该补丁改变了 GDT 块的处理方式?建议的解决方案是使用运行此更新之前内核的 Linux 版本,注意 15.10 是他们的选择。
按照建议,我尝试运行 Ubuntu 15.10,但默认情况下不包含它mdadm
,我无法安装它。我认为这可能是因为 15.10 已经过期,不再受支持。尝试安装时apt-get
混入了一堆 404 错误,安装总是失败。
有人建议我尝试file -s /dev/md2
,它返回一个字符串到我不确定如何在不手动转移的情况下转移,但它描述了Linux Rev ID、ext4文件系统、UUID、卷名(extents)
、(large files)
和(huge files)
是否可能仅使用 4 个驱动器中的 3 个即可访问阵列,以便我无需更换硬件即可从中恢复数据?
答案1
mdadm
我必须使用 Ubuntu 15.10,并在终止版本上安装变通方法才能成功安装该阵列。
Linux Kernel 4.7 中的一个补丁改变了 Linux 处理大型 GPT 块的方式,旨在避免内存损坏,但在这种情况下也会导致 RAID 安装失败。
我能够通过切换到 Ubuntu 15.10 来安装 RAID 阵列。但是,mdadm
默认情况下不会在此版本的 Ubuntu 上安装,并且由于不再支持它,尝试下载mdadm
失败并出现 404 错误,因为链接的资源不再可用。
要在 15.10 上安装mdadm
,请按照此处的说明操作:如何安装软件或从旧的不受支持的 Ubuntu 版本升级?
从其中一个答案:
不受支持的旧版本的存储库 […] 将被移至存档服务器。以下是可用的存储库:http://old-releases.ubuntu.com。
[…]
如果您想继续使用过时的版本,请编辑
/etc/apt/sources.list
并更改archive.ubuntu.com
为。security.ubuntu.com
old-releases.ubuntu.com
您可以使用以下方式执行此操作
sed
:
sudo sed -i -re 's/([a-z]{2}\.)?archive.ubuntu.com|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
然后更新:
sudo apt-get update && sudo apt-get dist-upgrade
您现在可以安装mdadm
使用
sudo apt-get install mdadm
安装后,运行命令:
sudo mdadm --assemble --run /dev/md2 /dev/sd[bcd]3`
(在我的例子中,我指向/dev/md2
因为这是我的 RAID5,然后/dev/sd[bcd]3
因为sdb3
、sdc3
和sdd3
是我的数据所在的每个驱动器的数据分区,如您在上表中所见。根据您的需要更改这些。)
(如果您收到有关驱动器繁忙或正在运行的错误,只需运行sudo mdadm --stop /dev/md2
)。
下一个
sudo mount -t ext4 /dev/md2 /home/raid
(您可能需要先使用 创建该目录sudo mkdir /home/raid
)。
然后,该阵列便可在/home/raid
目录中使用,我可以在目录中访问我的数据以进行备份。