Ada*_*dam 20 software-raid ubuntu mount data-recovery
基本安装
安装时出现以下错误
wrong fs type, bad option, bad superblock on
并在dmesg
EXT4-fs (sdc1): VFS: Can't find ext4 filesystem
我试图找到磁盘的文件系统类型并想出了
$sudo file -s /dev/sdc
/dev/sdc: x86 boot sector; partition 1: ID=0x83, starthead 254, startsector 63, 1953520002 sectors, code offset 0xb8
一些命令的输出
fdisk -l /dev/sdc
$fdisk -l /dev/sdc
Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 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: 0x0005ed9c
Device Boot Start End Blocks Id System
/dev/sdc1 63 1953520064 976760001 83 Linux
文件 -s /dev/sdc1
$file -s /dev/sdc1
/dev/sdc1: data
hexdump -C -n 32256 /dev/sdc(不确定这是否有帮助)
$hexdump -C -n 32256 /dev/sdc`
00000000 fa b8 00 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0 |................|
00000010 fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00 |...|.........!..|
00000020 00 be be 07 38 04 75 0b 83 c6 10 81 fe fe 07 75 |....8.u........u|
00000030 f3 eb 16 b4 02 b0 01 bb 00 7c b2 80 8a 74 01 8b |.........|...t..|
00000040 4c 02 cd 13 ea 00 7c 00 00 eb fe 00 00 00 00 00 |L.....|.........|
00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000001b0 00 00 00 00 00 00 00 00 9c ed 05 00 00 00 00 fe |................|
000001c0 ff ff 83 fe ff ff 3f 00 00 00 82 59 70 74 00 00 |......?....Ypt..|
000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
00000200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00007e00
Run Code Online (Sandbox Code Playgroud)小智 16
这在 Ubuntu 14.04 中运行良好:
sudo -i
mdadm --assemble --scan
Run Code Online (Sandbox Code Playgroud)
你会得到:
mdadm: /dev/md/1 has been started with 1 drive (out of 2)
Run Code Online (Sandbox Code Playgroud)
然后挂载并查看您的文件:
cd /mnt && mkdir to-restore-md1 && mount /dev/md1 to-restore-md1
ls -la to-restore-md1
Run Code Online (Sandbox Code Playgroud)
Linux mdraid 有几种元数据格式。格式 0.9 和 1.0 将元数据放在包含设备的末尾,有效负载(文件系统)从设备的开头开始,可以直接访问,无需通过 RAID 层。格式 1.1 和 1.2 分别将元数据放在包含设备的中间和开头,因此有效负载处于偏移量。
Ubuntu 安装程序使用 1.2 元数据格式创建卷,因此您的数据在元数据之后而不是在设备的开头开始。
访问该数据的最简单方法是组装raid 设备。在 RAID-1 卷中,单个设备就足够了。
madadm -A /dev/sdc1
Run Code Online (Sandbox Code Playgroud)
(停在这里,除非你喜欢痛苦。)
您还可以访问偏移量的数据。我认为这样做的唯一一点是,如果您必须在不支持 1.x mdraid 格式的非常旧的内核中工作。首先,确定偏移量mdadm -E /dev/sdc1:寻找线Data Offset : SSS sectors。一个 mdadm 扇区是 512 字节。
sectors=$(mdadm -E /dev/sdc1 | awk -F: '$1 ~ /Data offset/ {print $2}')
bytes=$(($sectors * 512))
losetup -f -o $bytes /dev/sdc1
Run Code Online (Sandbox Code Playgroud)
无奈之下,对于 1.x 格式,数据偏移量存储在元数据的 128-135 字节中,little-endian¹。1.2 元数据是设备开始后的 4096 字节。
您还可以更改分区表以使其进一步启动。对你的算术非常小心。仅当您想在无法访问 raid 设备的旧系统中长期使用磁盘时才这样做。
¹还是平台字节序?我不知道。
您似乎已经消除了 mdadm 超级块。如果它曾经存在并且格式为 1.1 或 1.2,则文件系统很可能位于偏移量 2048 扇区。您可以运行e2fsck /dev/sdc1?offset=2048以强制它从该偏移量开始查找文件系统。如果找到它,那么您可以修改分区表以指向文件系统实际启动的位置。您可以使用parted /dev/sdc和unit s命令来使用扇区单位。 print表中,记下开始和结束扇区,然后是rm分区,然后重新创建它并mkpart使用相同的结束扇区,但将偏移量添加到开始扇区。
如果 2048 不起作用,您也可以尝试 1985。