我希望你一切都好。
我在一家 IT 公司担任技术人员,专注于 Windows 系统和云技术,因此遗憾的是我对 Linux 的了解非常有限。所以请原谅任何愚蠢的问题,但我会尽力提供帮助。另外,这是我第一次在这里发帖,所以如果我做错了什么,请告诉我。
故事是这样的:一位新客户打电话说他的服务器无法访问 -> 服务器已损坏(电源和主板损坏,即使使用新 PS,甚至没有 POST 蜂鸣声)。他以前的IT公司是一个人秀,他不幸去世了,所以没有得到那边的帮助。
服务器是一台已有 15 年历史的富士通,嵌入了 LSI 逻辑 RAID。在里面我们发现 2 个 2TB SATA HDD 连接到 MB。他的所有数据以及软件数据库文件都在此服务器上。当然没有备份..他不需要备份,因为一切都是镜像的..你知道。客户还表示,服务器操作系统是在 2-3 年前安装的。
因此,我开始使用一些恢复工具,例如 Diskinternals RAID Recovery,但这些工具并没有真正发挥作用。我只得到单个文件(其中一些是功能文档,因此磁盘本身似乎没问题),但没有文件夹等。要将客户的软件恢复到另一个系统,我们需要一个完整的文件夹、子文件夹和文件。
但我发现文件和文件夹只存在于 Linux 系统上。所以我认为之前的技术人员安装了Linux操作系统并为客户设置了网络共享。
因此,我将其中一个 Raid 成员磁盘的转储文件拉到另一个 HDD 上,并设置一台 Debian 机器进行进一步测试。我仍然不确定他是否设置了 linux / mdadm Raid 或者他是否使用板载 LSI Raid 控制器来完成此操作。
到目前为止,我还没有安装或重新组装磁盘。任何帮助将不胜感激。
- mount /dev/sdb /mnt/mountpoint 带来错误 FS 错误、选项错误、超级块损坏
- 磁盘在 /dev/ 中未显示为 md
lsblk:
sdb 8:16 0 1,8T 0 disk
├─sdb1 8:17 0 240G 0 part
└─sdb2 8:18 0 1,6T 0 part
fdisk -l
Festplatte /dev/sdb: 1,82 TiB, 2000398934016 Bytes, 488378646 Sektoren
Festplattenmodell: EFAX-68FB5N0
Einheiten: Sektoren von 1 * 4096 = 4096 Bytes
Sektorgröße (logisch/physikalisch): 4096 Bytes / 4096 Bytes
E/A-Größe (minimal/optimal): 4096 Bytes / 4096 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x87c99aec
Gerät Boot Anfang Ende Sektoren Größe Kn Typ
/dev/sdb1 * 2048 62916607 62914560 240G fd Linux RAID-Autoerkennung
/dev/sdb2 62916608 3897729167 3834812560 14,3T fd Linux RAID-Autoerkennung
/dev/sdb3 3897729168 3907029167 9300000 35,5G fd Linux RAID-Autoerkennung
mdadm --query /dev/sdb
/dev/sdb: is not an md array
mdadm--组装--扫描
mdadm: No arrays found in config file or automatically
mdadm --检查 /dev/sdb
mdadm: No md superblock detected on /dev/sdb
预先感谢您提供任何帮助或提示,KofftheHoff
编辑1:
使用后
losetup --find --show --read-only --sector-size 512 --partscan /dev/sdb
和
mdadm --examine /dev/loop*
我觉得这个看起来很有希望:
/dev/loop0:
MBR Magic : aa55
Partition[0] : 62914560 sectors at 2048 (type fd)
Partition[1] : 3834812560 sectors at 62916608 (type fd)
Partition[2] : 9300000 sectors at 3897729168 (type fd)
/dev/loop0p1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 7e3b9767:71d0e46d:6fe589d3:47671ff3
Name : schobert-fs:0
Creation Time : Wed Mar 27 18:49:49 2019
Raid Level : raid1
Raid Devices : 2
Avail Dev Size : 62881792 (29.98 GiB 32.20 GB)
Array Size : 31440896 (29.98 GiB 32.20 GB)
Data Offset : 32768 sectors
Super Offset : 8 sectors
Unused Space : before=32680 sectors, after=0 sectors
State : clean
Device UUID : 34f9240c:3f35c4a9:b20f6259:5a6a295e
Update Time : Fri Dec 2 16:10:26 2022
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : 9882cebb - correct
Events : 430
Device Role : Active device 1
Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
/dev/loop0p2:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 1c73d398:e5404786:1cba7820:fb5e4cd5
Name : schobert-fs:1
Creation Time : Wed Mar 27 18:50:09 2019
Raid Level : raid1
Raid Devices : 2
Avail Dev Size : 3834550416 (1828.46 GiB 1963.29 GB)
Array Size : 1917275200 (1828.46 GiB 1963.29 GB)
Used Dev Size : 3834550400 (1828.46 GiB 1963.29 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
Unused Space : before=262056 sectors, after=16 sectors
State : clean
Device UUID : 038f5d97:741a9a29:c4803eec:d5502d4b
Internal Bitmap : 8 sectors from superblock
Update Time : Wed Nov 30 10:19:49 2022
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : 5dcb018a - correct
Events : 12662
Device Role : Active device 1
Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
/dev/loop0p3:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 00bd818b:55eed0df:3ad0c7d3:0c7a3a97
Name : schobert-fs:2
Creation Time : Wed Mar 27 18:50:31 2019
Raid Level : raid1
Raid Devices : 2
Avail Dev Size : 9291808 (4.43 GiB 4.76 GB)
Array Size : 4645888 (4.43 GiB 4.76 GB)
Used Dev Size : 9291776 (4.43 GiB 4.76 GB)
Data Offset : 8192 sectors
Super Offset : 8 sectors
Unused Space : before=8104 sectors, after=32 sectors
State : clean
Device UUID : 1577f59e:d2022fbc:d0b79765:f127efbc
Update Time : Wed Nov 30 00:01:49 2022
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : dc81c5d0 - correct
Events : 92
Device Role : Active device 1
Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
mdadm: No md superblock detected on /dev/loop1.
mdadm: No md superblock detected on /dev/loop2.
mdadm: No md superblock detected on /dev/loop3.
mdadm: No md superblock detected on /dev/loop4.
mdadm: No md superblock detected on /dev/loop5.
mdadm: No md superblock detected on /dev/loop6.
mdadm: No md superblock detected on /dev/loop7.
mdadm: cannot open /dev/loop-control: Invalid argument
感谢@frostschutz,也感谢拉取图像的提示。我现在正在使用转储的磁盘,原始磁盘保持不变。
@gabor.zed 这些不同的名称 schobert-fs:0 /schobert-fs:1 /schobert-fs:2 证明你的假设吗?或者 : 之后的数字只是一个标记,它在 raid 中是什么驱动器?
lsblk 现在带来了这个:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 1,8T 1 loop
├─loop0p1 259:0 0 30G 1 part
├─loop0p2 259:1 0 1,8T 1 part
└─loop0p3 259:2 0 4,4G 1 part
fdisk 现在看起来也很合理:
Festplatte /dev/loop0: 1,82 TiB, 2000398934016 Bytes, 3907029168 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x87c99aec
Gerät Boot Anfang Ende Sektoren Größe Kn Typ
/dev/loop0p1 * 2048 62916607 62914560 30G fd Linux RAID-Autoerkennung
/dev/loop0p2 62916608 3897729167 3834812560 1,8T fd Linux RAID-Autoerkennung
/dev/loop0p3 3897729168 3907029167 9300000 4,4G fd Linux RAID-Autoerkennung
我什至现在在 /dev/ 中列出了 3 个 md 设备
MD125 MD126 MD127
mdadm --query --detail /dev/md126
/dev/md125:
Version : 1.2
Raid Level : raid0
Total Devices : 1
Persistence : Superblock is persistent
State : inactive
Working Devices : 1
Name : schobert-fs:2
UUID : 00bd818b:55eed0df:3ad0c7d3:0c7a3a97
Events : 92
Number Major Minor RaidDevice
- 259 2 - /dev/loop0p3
mdadm --query --detail /dev/md126
/dev/md126:
Version : 1.2
Raid Level : raid0
Total Devices : 1
Persistence : Superblock is persistent
State : inactive
Working Devices : 1
Name : schobert-fs:1
UUID : 1c73d398:e5404786:1cba7820:fb5e4cd5
Events : 12662
Number Major Minor RaidDevice
- 259 1 - /dev/loop0p2
mdadm --query --detail /dev/md127
/dev/md127:
Version : 1.2
Raid Level : raid0
Total Devices : 1
Persistence : Superblock is persistent
State : inactive
Working Devices : 1
Name : schobert-fs:0
UUID : 7e3b9767:71d0e46d:6fe589d3:47671ff3
Events : 430
Number Major Minor RaidDevice
- 259 0 - /dev/loop0p1
md设备不能自己挂载吧?奇怪的是他说 md 设备是 Raid0。现在不知道该怎么办。
至少当我尝试时:
mount -o ro -t auto /dev/md125 /mnt/raid1
我得到:
mount: /mnt/raid1: Der Superblock von /dev/md125 konnte nicht gelesen werden.
无法读取超级块
我想我必须在访问它之前以某种方式组装突袭?
编辑2:@frostschutz 我按照要求运行:
file -s /dev/md*
/dev/md125: empty
/dev/md126: empty
/dev/md127: empty
和
blkid
/dev/sda1: UUID="ae7d369d-cf6b-4f84-a010-5d8a4c6fac80" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="248a7be6-01"
/dev/sda5: UUID="e49af320-e5fc-45fa-91b4-528b231f0bbd" TYPE="swap" PARTUUID="248a7be6-05"
/dev/sdb1: PARTUUID="87c99aec-01"
/dev/loop0p1: UUID="7e3b9767-71d0-e46d-6fe5-89d347671ff3" UUID_SUB="34f9240c-3f35-c4a9-b20f-62595a6a295e" LABEL="schobert-fs:0" TYPE="linux_raid_member" PARTUUID="87c99aec-01"
/dev/loop0p2: UUID="1c73d398-e540-4786-1cba-7820fb5e4cd5" UUID_SUB="038f5d97-741a-9a29-c480-3eecd5502d4b" LABEL="schobert-fs:1" TYPE="linux_raid_member" PARTUUID="87c99aec-02"
/dev/loop0p3: UUID="00bd818b-55ee-d0df-3ad0-c7d30c7a3a97" UUID_SUB="1577f59e-d202-2fbc-d0b7-9765f127efbc" LABEL="schobert-fs:2" TYPE="linux_raid_member" PARTUUID="87c99aec-03"
编辑3:
因此,因为我认为所有数据都位于接下来的 md126 上,所以我运行:
mdadm --stop /dev/md126
mdadm: stopped /dev/md126
之后我尝试自动组装并将 md126 重新组合在一起,它似乎可以工作,因为它在 /dev/md/ 下提出了 raidname 和一个新设备
mdadm --assemble --scan
mdadm: /dev/md/schobert-fs:1 has been started with 1 drive (out of 2).
然后我尝试安装它,但它一直说不能安装,因为它是只读的。这是有道理的,因为循环设备处于只读模式。但是,当我使用选项 -o ro 以只读模式安装它时,它不应该运行吗?
mount -o ro /dev/md/schobert-fs\:1 /mnt/raid1
mount: /mnt/raid1: /dev/md126 konnte nicht im Lese-Schreib-Modus eingehängt werden, (Medium) ist schreibgeschützt..
编辑4:
万岁,我明白了!
找到mount手册最后的提示:
-r, --只读
以只读方式挂载文件系统。同义词是-o ro。
请注意,根据文件系统类型、状态和内核行为,系统仍可能写入设备。例如,如果文件系统脏了,Ext3 或 ext4 将重播其日志。为了防止这种写访问,您可能需要使用 ro,noload 挂载选项挂载 ext3 或 ext4 文件系统,或将块设备设置为只读模式,请参阅命令 blockdev(8)。
[…]
无恢复/无负载
安装时不要加载轴颈。请注意,如果文件系统未完全卸载,则跳过日志重播将导致文件系统包含不一致的情况,从而导致许多问题。
所以我跑了:
mount -o ro,noload /dev/md/schobert-fs\:1 /mnt/raid
瞧,所有文件都在那里!
非常感谢@frostschutz 和@gabor.zed 帮助我!
祝大家有美好的一天。
答案1
这里的主要问题不是 RAID,而是伪造的分区表。分区表是为 512 字节扇区创建的,但驱动器被检测为 4K 本机扇区。所以所有分区偏移量和大小都是完全错误的。
您也许可以使用 losetup 来解决这个问题:
losetup --find --show --read-only --sector-size 512 --partscan /dev/sdb
然后查看循环设备是否具有有效的分区和 mdadm 元数据:
mdadm --examine /dev/loop*
然后从那里继续,希望没有进一步的问题。
如果驱动器可能有缺陷,您也可以考虑ddrescue
先提取映像。图像文件通常也默认为 512 字节扇区处理。
将所有内容设为只读或使用写时复制覆盖。