首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MDADM超块恢复

MDADM超块恢复
EN

Ask Ubuntu用户
提问于 2011-10-19 04:12:35
回答 3查看 97K关注 0票数 7

经过一个能量循环,我发现我的RAID 5阵列不再工作了。我尝试了各种方法来重新组装数组,但是到目前为止还没有什么效果。我相信我需要在某种程度上重新创建超级块和UUID,但是我不愿意将其转换为不会丢失一堆数据的东西。感谢您的阅读。

cat /etc/mdadm/mdadm.conf

代码语言:javascript
复制
DEVICE partitions
ARRAY /dev/md0 level=raid5 num-devices=4 metadata=0.90 UUID=fd522a0f:2de72d76:f2afdfe9:5e3c9df1
MAILADDR root

这是正常的。它应该有4x2000GB的驱动器(sda,sdc,sde,sdd)。

cat /proc/mdstat

代码语言:javascript
复制
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : inactive sdd[1](S)
  1953514496 blocks

unused devices: <none>

这是一个问题。它只显示数组中的一个驱动器,而且它也是不活动的。数组中也应该有sda、sdc和sde。当我做mdadm --examine /dev/sdd时,一切看起来都很好。在另一个驱动器上,检查显示/dev/sdX上没有RAID超级块。

mdadm --examine --scan

代码语言:javascript
复制
ARRAY /dev/md0 level=raid5 num-devices=4 metadata=0.90 UUID=fd522a0f:2de72d76:f2afdfe9:5e3c9df1

那里没有帮助。

mdadm --assemble --scan -v

代码语言:javascript
复制
mdadm: looking for devices for /dev/md0
mdadm: no RAID superblock on /dev/sde
mdadm: /dev/sde has wrong uuid.
mdadm: cannot open device /dev/sdd: Device or resource busy
mdadm: /dev/sdd has wrong uuid.
mdadm: no RAID superblock on /dev/sdc
mdadm: /dev/sdc has wrong uuid.
mdadm: cannot open device /dev/sdb5: Device or resource busy
mdadm: /dev/sdb5 has wrong uuid.
mdadm: no RAID superblock on /dev/sdb2
mdadm: /dev/sdb2 has wrong uuid.
mdadm: cannot open device /dev/sdb1: Device or resource busy
mdadm: /dev/sdb1 has wrong uuid.
mdadm: cannot open device /dev/sdb: Device or resource busy
mdadm: /dev/sdb has wrong uuid.
mdadm: no RAID superblock on /dev/sda
mdadm: /dev/sda has wrong uuid.

从这一点看,我似乎没有UUID,也没有用于sda、sdc和sde的超级块。

sudo fdisk -l

代码语言:javascript
复制
Disk /dev/sda: 2000.4 GB, 2000397852160 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907027055 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

Disk /dev/sda doesn't contain a valid partition table

Disk /dev/sdb: 250.1 GB, 250058268160 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488395055 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: 0x353cf669

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63   476327249   238163593+  83  Linux
/dev/sdb2       476327250   488392064     6032407+   5  Extended
/dev/sdb5       476327313   488392064     6032376   82  Linux swap / Solaris

Disk /dev/sdc: 2000.4 GB, 2000397852160 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907027055 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

Disk /dev/sdc doesn't contain a valid partition table

Disk /dev/sdd: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 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

Disk /dev/sdd doesn't contain a valid partition table

Disk /dev/sde: 2000.4 GB, 2000397852160 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907027055 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

Disk /dev/sde doesn't contain a valid partition table

因此,看起来我的RAID磁盘中没有一个分区表或UUID。我发现的最接近问题的是这条线,它建议运行mdadm --create /dev/md0 -v -l 5 -n 4 /dev/sda /dev/sdc /dev/sde /dev/sdd并使用fsck -fn /dev/md0检查有效的文件系统。然而,第一个命令吐出了mdadm: no raid-devices specified. --我使用sda1、sdc1等重新尝试了这个命令,但是接下来我得到了以下内容:

代码语言:javascript
复制
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: super1.x cannot open /dev/sda1: No such file or directory
mdadm: ddf: Cannot open /dev/sda1: No such file or directory
mdadm: Cannot open /dev/sda1: No such file or directory
mdadm: device /dev/sda1 not suitable for any style of array

如果我在命令中创建了一个sda1,并将其作为一个“缺失”变量保留,那么它对sdc1来说也是一样的。

,我确信我正在使这件事变得比需要的更复杂。有经验的人能帮我吗?谢谢你提前给我时间。

*编辑*当我运行dumpe2fs /dev/sda时,我得到:

代码语言:javascript
复制
dumpe2fs 1.41.14 (22-Dec-2010)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          bbe6fb91-d37c-414a-8c2b-c76a30b9b5c5
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype     needs_recovery sparse_super large_file
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              366288896
Block count:              1465135872
Reserved block count:     73256793
Free blocks:              568552005
Free inodes:              366066972
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      674
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Filesystem created:       Wed Oct 28 12:23:09 2009
Last mount time:          Tue Oct 18 13:59:36 2011
Last write time:          Tue Oct 18 13:59:36 2011
Mount count:              17
Maximum mount count:      26
Last checked:             Fri Oct 14 17:04:16 2011
Check interval:           15552000 (6 months)
Next check after:         Wed Apr 11 17:04:16 2012
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      17e784d8-012e-4a29-9bbd-c312de282588
Journal backup:           inode blocks
Journal superblock magic number invalid!

所以东西还在那里。还在研究..。

EN

回答 3

Ask Ubuntu用户

回答已采纳

发布于 2011-11-29 13:26:25

呀!真是个泡菜。我们看看能不能帮你解决问题。首先回顾一下磁盘和分区表:

代码语言:javascript
复制
sda - no partition table
sdb - sdb1 [Linux] sdb2 [Linux extended] sdb5 [swap]
sdc - no partition table
sdd - no partition table
sde - no partition table
  1. 所有这些都没有标记fd自动检测,这是默认的。
  2. 您没有使用分区来组织磁盘空间0
  3. 您似乎已将整个磁盘格式化为ext2 2/3,并将整个磁盘用作raidset的一部分。

最后一点是我认为你是在哪里被推翻的。initscripts可能认为你应该做一个fsck,理智地检查了卷,并在这个过程中删除了MD超级块。对于RAID集中的卷,dumpe2fs不应该返回任何内容。

以我的RAID为例:

代码语言:javascript
复制
root@mark21:/tmp/etc/udev# fdisk -l /dev/sda

Disk /dev/sda: 640.1 GB, 640135028736 bytes
255 heads, 63 sectors/track, 77825 cylinders, total 1250263728 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: 0x0000ffc4

Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048  1240233983   620115968   fd  Linux raid autodetect

root@mark21:/tmp/etc/udev# dumpe2fs /dev/sda1
dumpe2fs 1.41.14 (22-Dec-2010)
dumpe2fs: Bad magic number in super-block while trying to open /dev/sda
Couldn't find valid filesystem superblock.

您完全可以重新创建RAID集,这是非常幸运的,但这不会改变部署中的根本缺陷。这种情况还会再次发生。

我建议的是:

  1. 备份raid集上的所有内容
  2. 销毁数组并从每个设备中删除md超级块( mdadm)
  3. 清除那些磁盘:dd if=/dev/zero of=/dev/sdX bs=1M count=100
  4. 在sda、sdc、sdd和sdf上创建跨越99%磁盘0的分区
  5. 将这些分区标记为type fd linux-raid wiki
  6. 永远不要用任何类型的文件系统格式化这些分区。
  7. 创建一个新的RAID 5: mdadm --创建/dev/md0 -v -f -l 5 -n 4 /dev/sda1 1 /dev/sdc1 1 /dev/sdd1 /dev/sde1 1
  8. 更新/etc/mdadm.conf中的新UUID
  9. 从此幸福地生活

我从您的描述中推测sdb是您的系统磁盘,这很好。只需确保您不会意外地将其包含在raid集的创建中。在此之后,您应该在正确的轨道上,永远不会再遇到这个问题。

0我有一次在SATA磁盘上遇到了一个非常糟糕的错误,它有很多不好的块。在使用供应商工具重新构建磁盘之后。我曾经相同的磁盘集现在是唯一的,坏驱动器现在比低级别格式开始之前少了几个街区,这当然破坏了我的分区表,并阻止驱动器重新加入MD RAID集。

硬盘通常有一个“免费列表”的备份块,只用于一个场合。我的理论是,这个列表一定已经用完了,因为这不是一个企业磁盘,而不是失败的安全,让我有机会把它发送出去进行数据恢复,它决定截断我的数据并调整整个磁盘的大小。

因此,在创建RAID集时,我不再使用整个磁盘,而是在创建通常跨越整个磁盘的分区时,使用95%-99%的可用可用空间。这也为您在替换失败的成员时提供了一些额外的灵活性。例如,并不是所有的250 GB磁盘都有相同数量的空闲块,所以如果您以舒适的幅度低于最大值,那么您可以使用几乎任何一个磁盘品牌来替换失败的成员。

票数 5
EN

Ask Ubuntu用户

发布于 2011-10-19 07:00:10

我以前也有过同样的问题,但我并没有把它记录下来(一段时间前)。

我记得一些关于使用e2fsck -b <superblockSector> /dev/sdX和尝试备份超块扇区的事情

你也可以看看TestDisk

票数 1
EN

Ask Ubuntu用户

发布于 2012-06-18 10:24:17

你写这篇文章已经有一段时间了,但我会写如下:

"mdadm:无法打开设备/dev/sdb1 1:设备或资源繁忙“

很好检查一下

cat /proc/mdstat

我想你的硬盘是和某个前突击搜查有关的。/dev/md126 126

如果是,停止raid

mdadm --停止/dev/dev 125

然后尝试重新组装raid /dev/md0

mdadm --组装--详细--更新摘要/dev/md0 /dev/sda3 3 /dev/sdb3 3 /dev/sdc3 3 /dev/sdd3

但是:更重要的问题:

不使用磁盘大于1.5TB的RAID 5!

不可恢复的误码率

这是在应用循环冗余校验(CRC)码和多次重试后驱动器无法恢复数据的速率。对于企业级驱动器(SCSI、FC、SAS),UBE (不可恢复的位错误)通常指定为10^15中的1位,对于桌面类驱动器(IDE/ATA/PATA、SATA),UBE在10^14中指定为1位。(因此每1.7 TB)

所以,如果你的一个驱动器失败了,那么它就有55%的可能性不会重建(对于UBE 10^-14)祝你好运.

这里有更多信息:http://www.raidtips.com/raid5-ure.aspx

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/69086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档