我在/dev/md0上有一个使用 mdadm 创建的 raid5 阵列,它工作正常大约一年。它由三个 HDD 组成,每个 HDD 为 1TB。前几天发生了电源故障和UPS故障。不幸的是,这已经不是第一次了。
操作系统位于单独的 SSD 磁盘 ( /dev/sda ) 上,该磁盘不属于 raid 阵列的一部分,因此它可以启动但无法再挂载阵列。有时/dev/md0根本不存在。我也做了一些可能让事情变得更糟的事情。我跑fsck /dev/sdb -y了很多次在磁盘上写了很多次。
我担心我不会恢复我的文件。你能帮我解决这个问题吗?
谢谢。
挂载 /dev/md0 /mnt/raid5
mount: /dev/md0: can't read superblock
Run Code Online (Sandbox Code Playgroud)
系统日志:
Feb 25 15:59:53 pve kernel: [ 365.559378] EXT4-fs (md0): unable to read superblock
Feb 25 15:59:53 pve kernel: [ 365.560118] EXT4-fs (md0): unable to read superblock
Feb 25 15:59:53 pve kernel: [ 365.560216] EXT4-fs (md0): unable to read superblock
Feb 25 15:59:53 pve kernel: [ 365.560310] FAT-fs (md0): unable to read boot sector
Run Code Online (Sandbox Code Playgroud)
猫 /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
unused devices: <none>
Run Code Online (Sandbox Code Playgroud)
fdisk -l
Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 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
Disklabel type: dos
Disk identifier: 0x75633c0d
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 1950353407 1950351360 930G fd Linux raid autodetect
Disk /dev/sdc: 931.5 GiB, 1000204886016 bytes, 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
Disklabel type: gpt
Disk identifier: F397C12B-1549-45EA-97EA-6A41B713B58F
Device Start End Sectors Size Type
/dev/sdc1 2048 1950353407 1950351360 930G Linux RAID
Disk /dev/sdd: 931.5 GiB, 1000203804160 bytes, 1953523055 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: 0xcced27e3
Device Boot Start End Sectors Size Id Type
/dev/sdd1 2048 1950353407 1950351360 930G fd Linux raid autodetect
Run Code Online (Sandbox Code Playgroud)
有时 fdisk -l
-bash: /sbin/fdisk: Input/output error
Run Code Online (Sandbox Code Playgroud)
系统日志:
Feb 25 16:03:25 pve kernel: [ 577.221547] ata1.00: SRST failed (errno=-16)
Feb 25 16:03:25 pve kernel: [ 577.232569] ata1.00: reset failed, giving up
Feb 25 16:03:25 pve kernel: [ 577.232640] ata1.00: disabled
Feb 25 16:03:25 pve kernel: [ 577.232643] ata1.01: disabled
Feb 25 16:03:25 pve kernel: [ 577.232658] ata1: EH complete
Feb 25 16:03:25 pve kernel: [ 577.232683] sd 0:0:0:0: [sda] tag#0 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
Feb 25 16:03:25 pve kernel: [ 577.232697] sd 0:0:0:0: [sda] tag#0 CDB: Write(10) 2a 00 05 13 a0 38 00 00 08 00
Feb 25 16:03:25 pve kernel: [ 577.232702] blk_update_request: I/O error, dev sda, sector 85172280
Feb 25 16:03:25 pve kernel: [ 577.232784] Buffer I/O error on dev dm-6, logical block 9255, lost sync page write
Feb 25 16:03:25 pve kernel: [ 577.232928] sd 0:0:0:0: [sda] tag#0 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
Feb 25 16:03:25 pve kernel: [ 577.232936] sd 0:0:0:0: [sda] tag#0 CDB: Write(10) 2a 00 02 88 6a 10 00 00 68 00
Feb 25 16:03:25 pve kernel: [ 577.232941] blk_update_request: I/O error, dev sda, sector 42494480
Feb 25 16:03:25 pve kernel: [ 577.232948] EXT4-fs error (device dm-6): kmmpd:176: comm kmmpd-dm-6: Error writing to MMP block
Run Code Online (Sandbox Code Playgroud)
须藤 mdadm --examine /dev/sdb1
mdadm: No md superblock detected on /dev/sdb1.
Run Code Online (Sandbox Code Playgroud)
须藤 mdadm --检查 /dev/sdc1
/dev/sdc1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 34c11bda:11bbb8c9:c4cf5f56:7c38e1c3
Name : pve:0
Creation Time : Sun Jun 5 21:06:33 2016
Raid Level : raid5
Raid Devices : 3
Avail Dev Size : 1950089216 (929.88 GiB 998.45 GB)
Array Size : 1950089216 (1859.75 GiB 1996.89 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
Unused Space : before=262056 sectors, after=0 sectors
State : active
Device UUID : be76ecf7:b0f28a7d:718c3d58:3afae9f7
Internal Bitmap : 8 sectors from superblock
Update Time : Mon Feb 20 14:48:51 2017
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : ffbc1988 - correct
Events : 2901112
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 1
Array State : .AA ('A' == active, '.' == missing, 'R' == replacing)
Run Code Online (Sandbox Code Playgroud)
须藤 mdadm --examine /dev/sdd1
/dev/sdd1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x9
Array UUID : 34c11bda:11bbb8c9:c4cf5f56:7c38e1c3
Name : pve:0
Creation Time : Sun Jun 5 21:06:33 2016
Raid Level : raid5
Raid Devices : 3
Avail Dev Size : 1950089216 (929.88 GiB 998.45 GB)
Array Size : 1950089216 (1859.75 GiB 1996.89 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
Unused Space : before=262056 sectors, after=0 sectors
State : active
Device UUID : 7b9ed6e0:ffad7603:b226e752:355765a8
Internal Bitmap : 8 sectors from superblock
Update Time : Mon Feb 20 14:48:51 2017
Bad Block Log : 512 entries available at offset 72 sectors - bad blocks present.
Checksum : 19b6f3da - correct
Events : 2901112
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 2
Array State : .AA ('A' == active, '.' == missing, 'R' == replacing)
Run Code Online (Sandbox Code Playgroud)
感谢所有我恢复了数据。
我跑去sudo mdadm --verbose --assemble --force /dev/md0 /dev/sdc1 /dev/sdd1用剩下的两个好的硬盘组装阵列,它奏效了!
然后我格式化了 sdb 并将其重新添加到数组中sudo mdadm --manage /dev/md0 --add /dev/sdb1,我将很快购买一个新的替换它。我也在寻找备份解决方案..