mdadm RAID0 阵列恢复

mdadm RAID0 阵列恢复

我有一台 Linux 文件服务器,其中有两个 12 磁盘 MD1000 磁盘阵列连接到 RAID 控制器。不幸的是,电源故障导致 RAID 控制器上的配置数据丢失,现在报告没有磁盘配置。我没有原始配置的备份或记录。

查看上次成功启动时的服务器日志,它使用 mdadm 构建一个由 4 个设备组成的 RAID0 阵列(虽然任何地方都没有 mdadm.conf 文件,所以我猜它会自动检测)并且每个设备都是一个硬件 RAID5 阵列。

尝试恢复配置和数据:我对每个磁盘执行了 dd,并使用 ReclaiMe(Windows)工具确定原始配置是 RAID50,具有 4 个硬件 RAID5 阵列(使用 mdadm 组合)- 外加 4 个备用磁盘。

ReclaiMe 还恢复了 4 个 RAID5 阵列的图像(恢复到标记为 1.img、2.img、3.img、4.img 的文件中),并为 RAID0 构建指定了以下配置信息:

  1. 在 R-Studio 窗口的右侧,将“RAID 类型”设置为“RAID0(条带集)”。
  2. 下面,将“块大小”设置为“256 KB”。
  3. 在“父级”表中,在所有行中输入“63 部门”作为“偏移量”。

我已使用 R-studio 和这些参数来验证数据是否存在,现在我正尝试使用 mdadm 组装 RAID0 阵列,以便我可以挂载原始文件系统。此时我有点卡住了。我已挂载包含映像的(NTFS 格式)物理磁盘(每个映像 1 个物理磁盘),然后将映像本身作为循环设备挂载:

# losetup /dev/loop1 /media/ubuntu/disk1/1.img
# losetup /dev/loop2 /media/ubuntu/disk2/2.img
# losetup /dev/loop3 /media/ubuntu/disk3/3.img
# losetup /dev/loop4 /media/ubuntu/disk4/4.img

在循环设备上运行 fdisk:

# fdisk -l /dev/loop2
Disk /dev/loop2: 2000.4 GB, 2000435544064 bytes
255 heads, 63 sectors/track, 243205 cylinders, total 3907100672 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
Disk identifier: 0x00000000

  Device Boot      Start         End      Blocks   Id  System
/dev/loop2p1              63  3902798969  1951399453+  fd  Linux raid autodetect

当我尝试自动组装时,我得到:

# mdadm --assemble --scan -v
mdadm: Cannot assemble mbr metadata on /dev/loop4
mdadm: Cannot assemble mbr metadata on /dev/loop3
mdadm: Cannot assemble mbr metadata on /dev/loop2
mdadm: Cannot assemble mbr metadata on /dev/loop1

当我尝试手动执行此操作时:

# mdadm --create /dev/md0 -v --level=0 --assume-clean --raid-devices=4 /dev/loop1 /dev/loop2 /dev/loop3 /dev/loop4
mdadm: chunk size defaults to 512K
mdadm: /dev/loop1 appears to be part of a raid array:
level=raid0 devices=0 ctime=Thu Jan  1 00:00:00 1970
mdadm: partition table exists on /dev/loop1 but will be lost or
   meaningless after creating array
mdadm: /dev/loop2 appears to be part of a raid array:
level=raid0 devices=0 ctime=Thu Jan  1 00:00:00 1970
mdadm: partition table exists on /dev/loop2 but will be lost or
   meaningless after creating array
mdadm: /dev/loop3 appears to be part of a raid array:
level=raid0 devices=0 ctime=Thu Jan  1 00:00:00 1970
mdadm: partition table exists on /dev/loop3 but will be lost or
   meaningless after creating array
mdadm: /dev/loop4 appears to be part of a raid array:
level=raid0 devices=0 ctime=Thu Jan  1 00:00:00 1970
mdadm: partition table exists on /dev/loop4 but will be lost or
   meaningless after creating array
Continue creating array? N

我想知道 ReclaiMe 输出中提到的偏移量以及与 fdisk 输出中的 Start 63 相对应的偏移量是否需要不同的 losetup,因此尝试了(因为 63 * 512 = 32256):

# losetup /dev/loop1 /media/ubuntu/disk1/1.img -o 32256
# losetup /dev/loop2 /media/ubuntu/disk2/2.img -o 32256
# losetup /dev/loop3 /media/ubuntu/disk3/3.img -o 32256
# losetup /dev/loop4 /media/ubuntu/disk4/4.img -o 32256

然后:

# mdadm --assemble --scan -v 
mdadm: no recogniseable superblock on /dev/loop4
mdadm: no recogniseable superblock on /dev/loop3
mdadm: no recogniseable superblock on /dev/loop2
mdadm: no recogniseable superblock on /dev/loop1

因此,我尝试再次手动创建:

# mdadm --create /dev/md0 -v --level=0 --assume-clean --raid-devices=4  /dev/loop1 /dev/loop2 /dev/loop3 /dev/loop4
mdadm: chunk size defaults to 512K
mdadm: /dev/loop1 appears to contain an ext2fs file system
    size=-784337920K  mtime=Wed Dec  4 12:34:29 2013
Continue creating array? N

此时,我不知道该怎么办。我已经尝试过几次从备份中恢复 4 个 img 文件(总计 8TB),但都失败了。

[此外,有什么方法可以确定元数据版本或块大小吗?]

相关内容