如何在驱动器处于“ E”状态的Synology NAS上恢复mdadm阵列?


12

Synology具有md驱动程序和mdadm工具集的自定义版本,可在内核的rdev-> flags结构中添加“ DriveError”标志。

实际影响-如果您很不幸导致阵列故障(第一个驱动器),再加上第二个驱动器上的错误-阵列将进入一种状态,即使从驱动器上读取数据,该阵列也无法修复/重建阵列精细。

在这一点上,从THIS数组的角度来看,我并不真正担心这个问题,因为我已经撤消了内容并打算进行重构,但更多的是希望将来有一个解决之道。 ,因为这是我第二次受到它的困扰,而且我知道我已经看到其他人在论坛上问类似的问题。

对Synology的支持并没有多大用处(并且大多是无响应的),并且不会共享任何有关处理包装盒上突袭的信息。

/ proc / mdstat的内容:

ds1512-ent> cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
md2 : active raid5 sdb5[1] sda5[5](S) sde5[4](E) sdd5[3] sdc5[2]
      11702126592 blocks super 1.2 level 5, 64k chunk, algorithm 2 [5/4] [_UUUE]

md1 : active raid1 sdb2[1] sdd2[3] sdc2[2] sde2[4] sda2[0]
      2097088 blocks [5/5] [UUUUU]

md0 : active raid1 sdb1[1] sdd1[3] sdc1[2] sde1[4] sda1[0]
      2490176 blocks [5/5] [UUUUU]

unused devices: <none>

mdadm --detail / dev / md2的状态:

/dev/md2:
        Version : 1.2
  Creation Time : Tue Aug  7 18:51:30 2012
     Raid Level : raid5
     Array Size : 11702126592 (11160.02 GiB 11982.98 GB)
  Used Dev Size : 2925531648 (2790.00 GiB 2995.74 GB)
   Raid Devices : 5
  Total Devices : 5
    Persistence : Superblock is persistent

    Update Time : Fri Jan 17 20:48:12 2014
          State : clean, degraded
 Active Devices : 4
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 64K

           Name : MyStorage:2
           UUID : cbfdc4d8:3b78a6dd:49991e1a:2c2dc81f
         Events : 427234

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       21        1      active sync   /dev/sdb5
       2       8       37        2      active sync   /dev/sdc5
       3       8       53        3      active sync   /dev/sdd5
       4       8       69        4      active sync   /dev/sde5

       5       8        5        -      spare   /dev/sda5

如您所见-/ dev / sda5已重新添加到阵列中。(正是该驱动器彻底失败了)-但是即使md认为该驱动器是备用驱动器,也不会对其进行重建。在这种情况下,/ dev / sde5是处于(E)DiskError状态的问题驱动器。

我试过停止md设备,运行力重新组装,从设备/ etc中删除/读取sda5。行为无变化。

我能够使用以下命令完全重新创建阵列:

mdadm --stop /dev/md2
mdadm --verbose \
   --create /dev/md2 --chunk=64 --level=5 \
   --raid-devices=5 missing /dev/sdb5 /dev/sdc5 /dev/sdd5 /dev/sde5

这使数组回到此状态:

md2 : active raid5 sde5[4] sdd5[3] sdc5[2] sdb5[1]
      11702126592 blocks super 1.2 level 5, 64k chunk, algorithm 2 [5/4] [_UUUU]

然后,我重新添加了/ dev / sda5:

mdadm --manage /dev/md2 --add /dev/sda5

之后,它开始重建:

md2 : active raid5 sda5[5] sde5[4] sdd5[3] sdc5[2] sdb5[1]
      11702126592 blocks super 1.2 level 5, 64k chunk, algorithm 2 [5/4] [_UUUU]
      [>....................]  recovery =  0.1% (4569508/2925531648) finish=908.3min speed=53595K/sec

注意与丢失插槽的确切位置匹配的“丢失”驱动器的位置。

完成此操作后,我想我可能会拉出有问题的驱动器,然后重新构建它。

我正在寻找有关是否有任何“较不可怕”的方式来进行此修复的建议-或者是否有人通过Synology阵列经历了这种经验,并且知道如何迫使其重建,而不是使md设备脱机并从头开始创建阵列。


我发现自己处于类似情况。您成功解决了这个问题吗?
dvorak 2014年

是的,我能够按照上述步骤重建阵列。我确实通过清除并从R5更改为R6进行了跟踪-因为在这一点上,我对Synology的“将整个阵列存储”的行为感到非常不满,我想确保容忍多个驱动器“失败” ”。在我们的案例中,第二个出现“小故障”错误的驱动器通过了扩展的智能测试,甚至没有出现任何问题。
内森·诺林格2014年

感谢您的帮助。我不太有把握摆弄这一切,我不是团队专家。我现在面临相同的问题,但就我而言,我有一个磁盘RAID 1阵列(/ dev / md3),其中/ dev / sde3被标记为可怕的[E]。我认为我应该可以按照与您相同的步骤进行操作,但是由于那是阵列的单个磁盘,因此我不知道它会做什么;-)。无论如何mdadm --stop / dev / md3命令失败(设备或资源繁忙)。我想我会把Google再
待一会儿

如果您无法停止阵列,则听起来好像正在使用该阵列-即已将其挂载,或者正在对该设备运行其他任务。
内森·纳林格2015年

2
对我来说幸运的是,Synology帮助我解决了该问题。它们足够友好,可以为我提供运行的命令。我已经把我的情况下,别人跑博客的信息到这个问题:dsebastien.net/2015/05/19/...
dSebastien

Answers:


3

我遇到相同问题后发现的解决方案只是一个补充。我关注了dSebastien的博客文章,介绍如何重新创建数组:

我发现重新创建数组的方法比上述方法更好。但是,重新创建阵列后,该卷仍未在Web界面上显示。我的LUN均未显示。基本上显示没有配置的新阵列。我联系了Synology支持,他们远程解决了该问题。不幸的是,当我离开控制台时,他们进入了远程控制。我确实设法捕获了会议,并仔细研究了他们的工作。在尝试恢复我的一些数据时,驱动器再次崩溃,而我又回到了同样的情况。我在dSebastien的博客中重新创建了阵列,然后浏览了synology会话以执行更新。运行以下命令后,我的阵列和LUN出现在Web界面上,并且可以使用它们。我对Linux的经验几乎为零,但这是我在我的情况下执行的命令。希望这可以帮助其他人,但是使用此方法后果自负。最好联系Synology支持并让他们为您解决此问题,因为这种情况可能与您的情况有所不同

DiskStation> synocheckiscsitrg
synocheckiscsitrg: Pass 

DiskStation> synocheckshare
synocheckshare: Pass SYNOICheckShare()
synocheckshare: Pass SYNOICheckShareExt()
synocheckshare: Pass SYNOICheckServiceLink()
synocheckshare: Pass SYNOICheckAutoDecrypt()
synocheckshare: Pass SYNOIServiceShareEnableDefaultDS()

DiskStation> spacetool --synoblock-enum
****** Syno-Block of /dev/sda ******
//I've removed the output. This should display info about each disk in your array

DiskStation> vgchange -ay
  # logical volume(s) in volume group "vg1" now active

DiskStation> dd if=/dev/vg1/syno_vg_reserved_area of=/root/reserved_area.img
24576+0 records in
24576+0 records out

DiskStation> synospace --map_file -d
Success to dump space info into '/etc/space,/tmp/space'

DiskStation> synocheckshare
synocheckshare: Pass SYNOICheckShare()
synocheckshare: Pass SYNOICheckShareExt()
synocheckshare: Pass SYNOICheckServiceLink()
synocheckshare: Pass SYNOICheckAutoDecrypt()
synocheckshare: Pass SYNOIServiceShareEnableDefaultDS()

DiskStation> synocheckiscsitrg
synocheckiscsitrg: Not Pass, # conflict 

DiskStation> synocheckiscsitrg
synocheckiscsitrg: Pass 

1

另一个补充:我的单磁盘/ RAID级别0设备遇到了非常相似的问题。

Synology支持非常有帮助,并恢复了我的设备。这是发生的事情,希望这对其他人有帮助:

我的磁盘在一个特定的块上发生了读取错误,系统日志(dmesg)中的消息为:

[4421039.097278] ata1.00: read unc at 105370360
[4421039.101579] lba 105370360 start 9437184 end 5860528064
[4421039.106917] sda3 auto_remap 0
[4421039.110097] ata1.00: exception Emask 0x0 SAct 0x2 SErr 0x0 action 0x6
[4421039.116744] ata1.00: edma_err_cause=00000084 pp_flags=00000003, dev error, EDMA self-disable
[4421039.125410] ata1.00: failed command: READ FPDMA QUEUED
[4421039.130767] ata1.00: cmd 60/00:08:b8:d2:47/02:00:06:00:00/40 tag 1 ncq 262144 in
[4421039.130772]          res 41/40:00:f8:d2:47/00:00:06:00:00/40 Emask 0x409 (media error) <F>
[4421039.146855] ata1.00: status: { DRDY ERR }
[4421039.151064] ata1.00: error: { UNC }
[4421039.154758] ata1: hard resetting link
[4421039.667234] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl F300)
[4421039.887286] ata1.00: configured for UDMA/133
[4421039.891777] ata1: UNC RTF LBA Restored
[4421039.895745] ata1: EH complete

几秒钟后,我收到了Volume 1 has crashed来自我设备的可怕邮件。

-免责声明:请务必用您的设备名替换设备名称,不要简单地复制并粘贴这些命令,因为这会使情况变得更糟!-

停止smb之后,我能够以只读方式重新安装该分区,并使用badblocks check(-c)运行e2fsk :

umount /dev/md2
e2fsck -C 0 -v -f -c /dev/md2

(也可以使用它e2fsck -C 0 -p -v -f -c /dev/md2来尽可能地无人值守运行,尽管在我的情况下这无法解决,因为错误必须手动修复。因此,我不得不重新启动e2fsck。结论:-p在磁盘错误的情况)

尽管e2fsck能够解决错误,并且smartctl也未显示Raw_Read_Error_Rate的增加,但是该设备仍无法以读写模式装入该卷。DSM仍然显示“卷崩溃”

所以我在支持下开了张票。首先花了很长时间,但最后他们通过使用以下方法重建RAID阵列来解决此问题:

synospace --stop-all-spaces
syno_poweroff_task -d 
mdadm -Sf /dev/md2
mdadm -AfR /dev/md2 /dev/sda3

在执行任何操作之前,请务必检查设备名称(/dev/mdX/dev/sdaX)。 cat /proc/mdstat将显示相关信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.