md raid5: "유효한 슈퍼블록이 없습니다." 그러나 mdadm --examine은 모든 것이 괜찮다고 말합니다.

md raid5: "유효한 슈퍼블록이 없습니다." 그러나 mdadm --examine은 모든 것이 괜찮다고 말합니다.

그리고 그런 일이 일어났습니다. 내 Linux 상자의 소프트웨어 RAID5가 어떻게 든 실패하여 이제 조립을 거부했습니다.

설정 개요:

  • 헤드리스 서버 운영데비안 제시 8.6(현재는 안정적)
  • 맞춤형리눅스 커널 v4.8.8(아래 참조), 주로 공식 Debian 패키지 기반 - 주로 BTRFS 코드 업데이트용
  • 2016년 11월 18일 기준으로 업데이트된 모든 패키지
  • 총 4개의 하드 드라이브:
    • /dev/sda로 분할되고 /boot/efi, 교환되고, /(순서대로)
    • /dev/sdbRAID 구성원임(파티션 테이블 없음)
    • /dev/sd[cd]각각은 전체 드라이브에 걸쳐 있고 sd[cd]1RAID의 구성원인 파티션을 가지고 있습니다.
    • sda500GB이고 sd[bcd]4TB 디스크입니다. sd[cd]1파티션의 크기는 정확히 동일하며 sdb파티션의 크기가 약간 더 크지는 않습니다(파티션 테이블에 사용되는 일부 공간을 낭비함).
  • 일단 조립되면 /dev/md0RAID는 /dev/md0p1전체 다중 디스크에 걸쳐 단일 파티션으로 추가 분할된 다음 BTRFS 파일 시스템을 보유합니다. (이것은 데비안 설치 프로그램에 의해 설정되며 지금 변경하기에는 너무 늦었습니다.)

최근 다섯 번째 디스크를 구입했는데 깨진 디스크가 도착했습니다. 서버에 디스크를 추가하고 바로 사이트를 떠나야 해서 하루 이틀 지나서야 이 사실을 인지하게 되었는데, 이 새 디스크는 아직 RAID에 포함되어 있지 않았기 때문에 아무런 변화가 없었습니다. .

새로 구입한 디스크를 추가했을 때 서버는 커널 4.8.7을 실행하고 있었고 모든 것이 괜찮아 보였습니다. 커널 버전 4.8.8을 컴파일하고 설치한 후 를 사용하여 서버를 종료하고 systemctl poweroff데드 디스크를 제거한 후 다시 시작해 보았습니다. 서버는 일반적으로 헤드리스이므로 약 5분의 유예 기간이 지나도 복구되지 않는 모습만 볼 수 있습니다. 단순히 전원 버튼을 눌러도 반응이 없어서 전원을 끄고 그래픽 카드(내장 그래픽 카드가 없었음)+모니터+키보드를 추가하니 systemd비상쉘이 나타났습니다.

이전 커널과 현재 커널이 포함된 비상 쉘을 받았는데 그게 원인이 아니거나 이미 피해가 발생한 것 같습니다. 현재 가능한 물리적 디스크 오류를 배제하기 위해 dd3개의 RAID 디스크를 모두 연결하고 있지만 /dev/null1TB가 넘는 디스크가 오류 없이 연결되어 있으므로 어떤 디스크에서도 슈퍼블록의 물리적 손상이 없다고 가정합니다.


이야기는 이쯤 했으니 좀 더 구체적으로 알아보자. 다음 명령은 모두 비상 루트 쉘에서 실행됩니다. 즉, 기본 시스템이 실행 중입니다(initrd가 아님).

/proc/mdstatRAID에 대해 아무것도 모릅니다:

Personalities : [raid6] [raid5] [raid4]
unused devices: <none>

내가 얻은 것은 다음과 같습니다 mdadm --assemble --verbose /dev/md0. ( /dev/sde이 로그를 추출하는 데 사용하는 외장 USB 하드 드라이브입니다.)

mdadm: looking for devices for /dev/md0
mdadm: no RAID superblock on /dev/sde1
mdadm: no RAID superblock on /dev/sde
mdadm: no RAID superblock on /dev/sdd
mdadm: no RAID superblock on /dev/sdc
mdadm: no RAID superblock on /dev/sda3
mdadm: no RAID superblock on /dev/sda2
mdadm: no RAID superblock on /dev/sda1
mdadm: no RAID superblock on /dev/sda
mdadm: /dev/sdd1 is identified as a member of /dev/md0, slot 2.
mdadm: /dev/sdc1 is identified as a member of /dev/md0, slot 1.
mdadm: /dev/sdb is identified as a member of /dev/md0, slot 0.
mdadm: failed to add /dev/sdc1 to /dev/md0: Invalid argument
mdadm: failed to add /dev/sdd1 to /dev/md0: Invalid argument
mdadm: added /dev/sdb to /dev/md0 as 0
mdadm: failed to RUN_ARRAY /dev/md0: Input/output error

...다음 줄은 다음과 같습니다 journalctl.

Nov 18 14:56:34 zoey kernel: md: sdc1 does not have a valid v1.2 superblock, not importing!
Nov 18 14:56:34 zoey kernel: md: md_import_device returned -22
Nov 18 14:56:34 zoey kernel: md: sdd1 does not have a valid v1.2 superblock, not importing!
Nov 18 14:56:34 zoey kernel: md: md_import_device returned -22
Nov 18 14:56:34 zoey kernel: md: bind<sdb>
Nov 18 14:56:34 zoey kernel: md/raid:md0: device sdb operational as raid disk 0
Nov 18 14:56:34 zoey kernel: md/raid:md0: allocated 3316kB
Nov 18 14:56:34 zoey kernel: md/raid:md0: not enough operational devices (2/3 failed)
Nov 18 14:56:34 zoey kernel: RAID conf printout:
Nov 18 14:56:34 zoey kernel:  --- level:5 rd:3 wd:1
Nov 18 14:56:34 zoey kernel:  disk 0, o:1, dev:sdb
Nov 18 14:56:34 zoey kernel: md/raid:md0: failed to run raid set.
Nov 18 14:56:34 zoey kernel: md: pers->run() failed ...
Nov 18 14:56:34 zoey kernel: md: md0 stopped.
Nov 18 14:56:34 zoey kernel: md: unbind<sdb>
Nov 18 14:56:34 zoey kernel: md: export_rdev(sdb)

아, 슈퍼블럭이 깨져 mdadm --assemble --force조립도 안 돼요! 무슨 mdadm --examine말인지 봅시다 :

/dev/sdb:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : cdab20e2:45150011:f10d83fe:f0299188
           Name : zoey:0  (local to host zoey)
  Creation Time : Fri Sep 26 17:23:15 2014
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 7813840560 (3725.93 GiB 4000.69 GB)
     Array Size : 7813770240 (7451.79 GiB 8001.30 GB)
  Used Dev Size : 7813770240 (3725.90 GiB 4000.65 GB)
    Data Offset : 196608 sectors
   Super Offset : 8 sectors
   Unused Space : before=196520 sectors, after=70320 sectors
          State : clean
    Device UUID : 1751c53f:c527c4cd:10e8f426:0217bf5e

    Update Time : Fri Nov 18 04:02:16 2016
  Bad Block Log : 512 entries available at offset 72 sectors
       Checksum : 7fa86509 - correct
         Events : 112125

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 0
   Array State : AAA ('A' == active, '.' == missing, 'R' == replacing)

/dev/sdc1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : cdab20e2:45150011:f10d83fe:f0299188
           Name : zoey:0  (local to host zoey)
  Creation Time : Fri Sep 26 17:23:15 2014
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 7813902336 (3725.96 GiB 4000.72 GB)
     Array Size : 7813770240 (7451.79 GiB 8001.30 GB)
  Used Dev Size : 7813770240 (3725.90 GiB 4000.65 GB)
    Data Offset : 196608 sectors
   Super Offset : 8 sectors
   Unused Space : before=196528 sectors, after=66560 sectors
          State : clean
    Device UUID : 0c60e19b:daff087f:c1f09dbb:41bb80c3

    Update Time : Fri Nov 18 04:02:16 2016
       Checksum : 866cea0a - correct
         Events : 112125

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 1
   Array State : AAA ('A' == active, '.' == missing, 'R' == replacing)

/dev/sdd1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : cdab20e2:45150011:f10d83fe:f0299188
           Name : zoey:0  (local to host zoey)
  Creation Time : Fri Sep 26 17:23:15 2014
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 7813902336 (3725.96 GiB 4000.72 GB)
     Array Size : 7813770240 (7451.79 GiB 8001.30 GB)
  Used Dev Size : 7813770240 (3725.90 GiB 4000.65 GB)
    Data Offset : 196608 sectors
   Super Offset : 8 sectors
   Unused Space : before=196528 sectors, after=66560 sectors
          State : clean
    Device UUID : e80a2296:dfadb7ad:e458e491:bf1d12b0

    Update Time : Fri Nov 18 04:02:16 2016
       Checksum : 72340d8d - correct
         Events : 112125

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 2
   Array State : AAA ('A' == active, '.' == missing, 'R' == replacing)

mdadm --examine --scan --verbose또한 모든 디스크를 제대로 찾는 것 같습니다.

ARRAY /dev/md/0  level=raid5 metadata=1.2 num-devices=3 UUID=cdab20e2:45150011:f10d83fe:f0299188 name=zoey:0
   devices=/dev/sdd1,/dev/sdc1,/dev/sdb

mdadm.conf이 줄은 현재 운영 체제를 처음 설치할 때 데비안 설치 프로그램이 생성한 파일에서도 찾을 수 있습니다(모든 것이 오랫동안 잘 작동했기 때문에 이 파일을 수동으로 변경하지 않았습니다):

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default (built-in), scan all partitions (/proc/partitions) and all
# containers for MD superblocks. alternatively, specify devices to scan, using
# wildcards if desired.
#DEVICE partitions containers

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
ARRAY /dev/md/0 metadata=1.2 UUID=cdab20e2:45150011:f10d83fe:f0299188 name=zoey:0

# This file was auto-generated on Fri, 26 Sep 2014 18:10:27 +0200
# by mkconf 3.2.5-5

/dev/sdcSMART는 또한 때때로 비정상적으로 높은 공기 흐름 온도를 제외하고는 모든 디스크가 괜찮다고 말합니다 In_The_Past. 그러나 온도 문제는 해결되었으며 다른 모든 값(특히 재할당/정지 섹터 = 0)은 허용 가능한 한계 범위 드라이브 내에 있습니다.

device mapper물리적 블록 장치의 오버레이에서 RAID를 다시 생성해 보았습니다. 그러나 이 설정은 RAID 내의 파티션 테이블을 인식하지 못하므로 파일 시스템을 마운트할 수 없습니다.여기서 타이프스크립트를 찾을 수 있습니다.


이것이 내가 헤매고 있는 곳이다. 제가 보기에는 RAID 전체가 괜찮아 보이는데 md드라이버가 조립을 거부하는 이유는 무엇입니까? 성공 가능성을 높이기 위해 시도할 수 있는 것이 있습니까?

답변1

가장 간단한 해결책은 --update=devicesize조립 중에 추가하는 것입니다.

방법은 모르겠지만 해당 드라이브에 대해 md가 기억하는 파티션 크기와 크기가 더 이상 일치하지 않는 것 같습니다. 모두에게 건배독일어 우분투 사용자 포럼그들은 수동으로 16진수 편집으로 문제를 힘들게 해결했고 마침내 mdadm.

관련 정보