我的 Promise NAS NS4300N 最近坏了(电源或主板故障,可能是前者,因为它无法启动磁盘)。
我已经设法将驱动器(RAID5 配置中的 4 个 500GB 驱动器)作为图像 dd(1) 到新服务器上,即使其中一个驱动器出现了一些读取错误(conv=noerror ftw...)。
但是,由于 Promise NAS 不使用 mdadm(8) 来实现 RAID,而是使用“硬件”RAID(又名 FakeRAID),因此生成的图像如下所示:
$ fdisk -l /local/media/promise.dd.1
Disk /local/media/promise.dd.1: 465.8 GiB, 500106174464 bytes, 976769872 sectors
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: 0xb95a0900
Device Boot Start End Sectors Size Id Type
/local/media/promise.dd.1p1 63 2929918634 2929918572 1.4T 83 Linux
$ fdisk -l /local/media/promise.dd.2
Disk /local/media/promise.dd.2: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
$ fdisk -l /local/media/promise.dd.3
Disk /local/media/promise.dd.3: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
$ fdisk -l /local/media/promise.dd.4
Disk /local/media/promise.dd.4: 465.8 GiB, 500107862016 bytes, 976773168 sectors
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: 0xb95a0900
Device Boot Start End Sectors Size Id Type
/local/media/promise.dd.4p1 63 2929918634 2929918572 1.4T 83 Linux
当作为 loop(4) 设备安装时,图像如下所示:
$ sudo lsblk -io NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL
NAME FSTYPE SIZE MOUNTPOINT LABEL
..
loop0 promise_fasttrack_raid_member 465.8G
loop1 promise_fasttrack_raid_member 465.8G
loop2 promise_fasttrack_raid_member 465.8G
loop3 promise_fasttrack_raid_member 465.8G
毫不奇怪,mdadm(8) 无法读取这些内容,因为它无法找到可用的超级块:
$ sudo mdadm --verbose --examine /dev/loop0
/dev/loop0:
MBR Magic : aa55
Partition[0] : 2929918572 sectors at 63 (type 83)
$ sudo mdadm --verbose --examine /dev/loop1
mdadm: No md superblock detected on /dev/loop1.
而且当然:
$ sudo mdadm --verbose -A /dev/md127 --readonly --run /dev/loop1 /dev/loop2 /dev/loop3 /dev/loop4
mdadm: looking for devices for /dev/md127
mdadm: no recogniseable superblock on /dev/loop1
mdadm: /dev/loop1 has no superblock - assembly aborted
我认为我可以尝试使用 dmraid(8) 来读取/检查这些内容,因为据宣传,这是一款“发现、配置和激活软件 (ATA)RAID”但据我所知,这个说法只有当驱动器通过 BIOS 公开时才成立,而这些显然不是,因为它们是 loop(4) 设备:
$ sudo dmraid -ay
no raid disks
我有机会通过软件恢复数据吗?或者我唯一的选择是找到可以读取包含数据的物理驱动器的硬件(例如 Promise PCI 卡)吗?
谢谢阅读。
答案1
我也遇到了同样的情况。我能够使用 R-Studio 的演示版本恢复数据,以重建虚拟 RAID 阵列,主要如下所述:
https://www.r-studio.com/automatic-raid-detection.html
在“驱动器”菜单下,选择“打开图像”并导入之前使用创建的驱动器图像dd
。
在“创建虚拟 RAID”下拉菜单中选择“创建虚拟 RAID 和自动检测”,然后将打开的驱动器映像文件从树视图(左侧)拖放到虚拟 RAID 设备列表面板(右上角)。
单击“自动检测”。该过程应在几秒钟内完成。就我而言,它检测到 32k 块大小、RAID5、左异步(连续),置信度为 50.2%。它还显示了 RAID 5 阵列的教科书图表。单击“应用”。
返回“设备视图”树,现在应该有一个分区和卷组(例如:“vg002-lv001”),文件系统为 ext3。选择此条目并单击“创建映像”按钮。
在出现的对话框中,选择“字节到字节映像”,选择合适的路径和文件名。单击“确定”,然后等待一夜以完成该过程。确保您有足够的空间来存储生成的映像。(对于 RAID5 中的 4 x 500 GB 驱动器,大约为 1.5 TB。)
生成的图像文件可以循环安装以访问数据。例如
# mkdir /mnt/promise
# mount -o loop vg002-lv001.img /mnt/promise/
我还发现在运行 rsync 复制数据之前重新映射 UID 和 GID 很方便:
# mkdir /mnt/promise-bindfs
# bindfs --map=1001/1000:@499/@100 /mnt/promise /mnt/promise-bindfs