![是否可以将数据从 Intel PERC H710 适配器 RAID 控制器磁盘恢复到另一台带有 SAS 控制器的服务器](https://linux22.com/image/786858/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%B0%86%E6%95%B0%E6%8D%AE%E4%BB%8E%20Intel%20PERC%20H710%20%E9%80%82%E9%85%8D%E5%99%A8%20RAID%20%E6%8E%A7%E5%88%B6%E5%99%A8%E7%A3%81%E7%9B%98%E6%81%A2%E5%A4%8D%E5%88%B0%E5%8F%A6%E4%B8%80%E5%8F%B0%E5%B8%A6%E6%9C%89%20SAS%20%E6%8E%A7%E5%88%B6%E5%99%A8%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我有一台 Dell T420 服务器,配有 PERC H710 适配器 RAID 控制器。我有一个带有两个硬盘的 RAID 1。另一个磁盘位于同一个控制器中,没有 RAID,仅用于备份。
该服务器的主板现在已损坏,由于网卡硬件故障,无法启动。
我可以访问另一台带有 SAS 控制器的旧 Dell PowerEdge 2900。
我正在尝试将硬盘连接到旧服务器以恢复服务器的备份或文件系统,但尚未成功。
我尝试连接备份磁盘(Seagate Barracuda 2TB 磁盘),但在使用实时 Ubuntu 时它没有出现。
当我尝试使用其中一个 RAID 1 磁盘(Dell Constellation 4T 磁盘)时,它出现了,但是我无法安装该磁盘。
sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.37.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/sdb: 2 TiB, 2199023254528 bytes, 4294967294 sectors
Disk model: ST4000NM0033-9ZM
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/sdb1 1 4294967295 4294967295 2T ee GPT
sudo mount /dev/sdb1 /media/backup/
mount: /media/backup: special device /dev/sdb1 does not exist.
sudo mdadm --assemble --run /dev/md0 /dev/sdb1
mdadm: cannot open device /dev/sdb1: No such file or directory
mdadm: /dev/sdb1 has no superblock - assembly aborted
ls /dev/mapper/*
/dev/mapper/control
没有 PERC H710 控制器是否可以读取数据?
答案1
LSI/Avago/Broadcom MegaRAID SAS 设备可以很好地识别彼此的 RAID。PERC H710 就是这样一款带有 LSI 芯片的重新命名控制器。根据我的经验,我们曾经将一对设备从较旧的第 8 代 Dell PERC(不记得具体是哪个控制器)转移到某个较新的 LSI 卡上,该卡可以很好地识别 RAID 并从中启动操作系统,就像什么都没发生一样。与您的情况唯一的区别是新卡有更新LSI 芯片比旧 PERC 好。试试看。
此外,MegaRAID 使用 SNIA DDF 磁盘元数据,该元数据是公开定义的,并且被 Linux 软件 RAID MD 驱动程序识别。您甚至可以使用 mdadm 创建这样的 RAID。
你所看到的fdisk
所谓的保护性MBR. 它只意味着一件事:有一个谷氨酰胺磷酸酶设备上的分区表。如评论中所述,DDF 元数据位于设备末尾,因此通常位于末尾的第二个 GPT 放错了位置,因此 GPT 似乎已损坏,并且没有分区被识别。它也没有将其作为阵列启动,因为标准行为是“不要启动降级阵列,除非它在关机期间已被标记为降级”。
因此,如果您使用以下方式连接两个驱动器羟丙基甲基纤维素(无 RAID 功能,允许对驱动器进行原始访问)到 Linux 机器,即使是实时的,它也必须识别并从中创建“普通”软件 RAID。对它们两个重复此操作,然后检查/proc/mdstat
。
另一种方法是,如果我们知道虚拟磁盘的确切大小,我们可以设置一个循环设备在具有大小限制的硬盘之上,因此循环中的第二个 GPT 将出现在原位,并且它将找到其分区。可以猜测:LSI 的强制大小是 128MiB 或 1GiB,但为此我需要查看 4T 磁盘的确切大小。
答案2
大多数现代 Linux 发行版都可以识别这些“硬件” RAID 卷。
在理想情况下,可以将所有回收的磁盘连接到具有 SATA/SAS 控制器的机器,从 USB 闪存或 CD 启动 Linux,然后导航至:
- 以只读方式重建 RAID 阵列
只读部分很重要,因为可能的重建错误可能会毁坏数据的唯一幸存副本。
如果可行的话,可以在进行任何 RAID 重建尝试之前将整个磁盘的内容备份到其他地方。
在重建的 RAID 上安装文件系统(也是只读的)。Linux 拥有目前使用的大多数文件系统的驱动程序。其中一些不完整,但所有驱动程序都可用于读取文件。
通过网络或连接到同一台机器的其他存储设备复制重要数据。
发誓如果可以避免的话不再使用“硬件 RAID”。
因为没有“硬件 RAID”这样的东西。RAID 层始终以软件方式运行 - 无论是在专用控制器中还是(如 H710 的情况)在主机 CPU 上作为编写不太好的设备驱动程序运行。