是什么:在整个磁盘上使用 mdadm 的 RAID 1 表示/dev/md0
从 和/dev/sda
,sdb
在一个分区上使用 GPT md0
,在该分区上使用 ext4 ( md0p1
)。我认为会发生什么:更换主板后,Linux 检测到 ext4 上的问题md0p1
。我运行 fsckmd0p1
并对所有问题说“是”。这是一些错误的校验和,很多范围树可能更窄,并且一些日志不是空的。它似乎成功结束,我尝试挂载,/dev/md0p1
但有关于坏文件系统的相同错误。我再次运行 fsck md0p1
,但现在它说“没有超级块”,并且替代超级块编号没有帮助。我重新启动,现在在和mdadm
上都找不到它的超级块。 GPT 分区仍然正常,但 testdisk 发现两个磁盘上都没有 ext4 的迹象(仅 ms 数据)。sda
sdb
# fdisk -l
GPT PMBR size mismatch (3907028991 != 3907029167) will be corrected by w(rite).
Disk /dev/sda: 1,8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: D09686A6-2428-48EC-868B-D3C8CE5E0C23
Device Start End Sectors Size Type
/dev/sda1 34 3907024064 3907024031 1,8T Microsoft basic data
Partition 1 does not start on physical sector boundary.
...
GPT PMBR size mismatch (3907028991 != 3907029167) will be corrected by w(rite).
Disk /dev/sde: 1,8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: D09686A6-2428-48EC-868B-D3C8CE5E0C23
Device Start End Sectors Size Type
/dev/sde1 34 3907024064 3907024031 1,8T Microsoft basic data
Partition 1 does not start on physical sector boundary.
# mdadm --examine /dev/sd*
/dev/sda:
MBR Magic : aa55
Partition[0] : 3907028991 sectors at 1 (type ee)
mdadm: No md superblock detected on /dev/sda1.
...
/dev/sde:
MBR Magic : aa55
Partition[0] : 3907028991 sectors at 1 (type ee)
mdadm: No md superblock detected on /dev/sde1.
gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.1
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): p
Disk /dev/sda: 3907029168 sectors, 1.8 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): D09686A6-2428-48EC-868B-D3C8CE5E0C23
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 3907029134
Partitions will be aligned on 8-sector boundaries
Total free space is 5070 sectors (2.5 MiB)
Number Start (sector) End (sector) Size Code Name
1 34 3907024064 1.8 TiB 0700
Command (? for help): i
Using 1
Partition GUID code: EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (Microsoft basic data)
Partition unique GUID: E11B0DE3-9ABD-47B2-9F09-E993F76FBC6F
First sector: 34 (at 17.0 KiB)
Last sector: 3907024064 (at 1.8 TiB)
Partition size: 3907024031 sectors (1.8 TiB)
Attribute flags: 0000000000000000
Partition name: ''
所以我的问题是:
- 有机会恢复文件系统吗?我可以通过最重要的方式恢复一些文件,但它是 2 TB 的垃圾和很少有价值的文件,因此至少没有文件名就毫无意义。
- 更重要的是:出了什么问题?看来我做了所有建议的事情(除了没有备份),并且丢失了我的数据。
因为情况很奇怪,我将讲述整个故事:Linux 在 SSD 上运行,大部分数据(包括主目录)位于 2 个 HDD 上的 RAID 上。
自 2011 年或 2012 年以来,RAID 一直运行良好。6-8
个月前,我升级了计算机:将处理器从 2 核更改为 8 核,添加 RAM 并插入适用于 Windows 的 SSD。
在这台计算机第一次尝试打开后,我必须在 10-20 秒内按下重置按钮 1-2 才能将其打开。但所有其他系统都工作正常。
1-2 个月前 2 次所有应用程序开始崩溃,我在控制台中看到 I/O 错误,但重新启动后一切正常。
1 个月前,将 kubuntu 升级到最新版本。
两周前,事情变得糟糕了,
Linux 无法启动 – SSD 上出现一些错误。我购买了其他SSD,设法通过保存大部分文件系统ddrescue
,但它无法启动,所以我在SSD上的空分区上安装了新的操作系统。它在安装 mdadm 后组装 RAID,但不会添加分区/dev
:它是,/dev/md127
但不是 md127p1。我按照 gdisck 的建议修复了 md127 中的 GPT 表(它具有良好的主 GTP 表)并对齐已损坏的备份 GTP 表。对 md127p1(已更改为 md0p1)进行 fsck 没问题,我成功挂载了它。
它工作一两天,然后计算机无论如何都无法启动。
我设法吃过一次BIOS,但没有IDE设备,所以我买了新主板(旧的是华擎900FX Extreme3,新的是技嘉970-DS3P)。
更换主板后,我运行 Linux,它以恢复模式启动(/dev/md0p1
文件系统有问题),然后这就是我在问题开头所写的内容。
做错了什么?
- 没有备份——当然。现在我明白了 RAID 不是备份。
- 忽略IO错误?它使我的 SSD 与系统崩溃,所以它只是让我安装新的系统。
- 在 RAID 中设置分区是不是一个坏主意?从 sda1 和 sdb1 组装 raid 比从 sda 和 sdb 组装 raid 更好吗?
添加:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1,8T 0 disk <-- raid
└─sda1 8:1 0 1,8T 0 part
sdb 8:16 1 957,9M 0 disk
└─sdb1 8:17 1 956,9M 0 part
sdc 8:32 0 59,6G 0 disk
├─sdc1 8:33 0 1M 0 part
├─sdc2 8:34 0 29,8G 0 part /old
└─sdc3 8:35 0 29,8G 0 part /
sdd 8:48 0 119,2G 0 disk
└─sdd1 8:49 0 119,2G 0 part
sde 8:64 0 1,8T 0 disk <-- raid
└─sde1 8:65 0 1,8T 0 part
sr0 11:0 1 2G 0 rom