XFS가 슈퍼블록을 읽을 수 없음

XFS가 슈퍼블록을 읽을 수 없음

오늘 아침에 일어나서 내 RAID 호스트(Linux 소프트웨어 RAID)로부터 드라이브에 오류가 발생했다는 이메일을 받았습니다. 소비자용 하드웨어이므로 별 문제가 되지 않습니다. 콜드 스페어가 있어요. 그러나 서버에 접속했을 때 모든 것이 응답하지 않았습니다. 어느 시점에서 나는 전원을 끄고 다시 시작하는 것 외에는 선택의 여지가 없다고 생각했습니다.

시스템이 작동했는데 고장난 드라이브가 여전히 고장난 것으로 표시되어 있고 /proc/mdstat올바른 것 같습니다. 그러나 마운트되지 않고 /dev/md0다음과 같이 알려줍니다.

mount: /dev/md0: can't read superblock

이제 걱정이 되기 시작했습니다. 그래서 나는 시도 xfs_check하고 xfs_repair전자는 나에게 다음과 같이 말합니다.

xfs_check: /dev/md0 is invalid (cannot read first 512 bytes)

그리고 후자:

Phase 1 - find and verify superblock...
superblock read failed, offset 0, size 524288, ag 0, rval 0

fatal error -- Invalid argument

이제 나는 무서워지고 있습니다. 지금까지 내 인터넷 검색은 소용이 없었습니다. 지금은 아직 패닉 상태가 아닙니다. 이전에 겁을 먹었고 항상 며칠 내에 해결되었기 때문입니다. 오늘 밤에도 콜드 스페어를 꺼내서 36시간 동안 재구축한 다음 파일 시스템이 더 유용한 상태인지 확인할 수 있습니다. 어레이를 현재 11개에서 10개 드라이브로 다시 구성하고(아직 파일 시스템을 확장하지 않았기 때문에) 도움이 되는지 확인할 수도 있습니다(1주일 중 더 많은 시간이 소요됨).

하지만 직장에 있는 동안, 오늘 밤 집에서 이 일을 하기 전에 여기 전문가의 도움을 구하고 싶습니다.

파일 시스템과 RAID에 대해 더 잘 아는 사람이 권장 사항이 있습니까? 파일 시스템 문제를 추가로 진단하거나 복구하기 위해 여기에서 SSH를 통해 수행할 수 있는 작업이 있을까요?

편집하다:

/proc/mdstat실제로 단서를 제공하는 것 같습니다 .

Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md0 : inactive sdk1[10] sdh1[7] sdj1[5] sdg1[8] sdi1[6] sdc1[2] sdd1[3] sde1[4] sdf1[9] sdb1[0]
      19535119360 blocks

inactive? 그래서 배열을 조립하려고 합니다.

# mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1
mdadm: device /dev/md0 already active - cannot assemble it

이미 활성화되어 있나요? /proc/mdstat비활성 상태라고 말하는데 도요 ?

답변1

알고 보니 제가 두려워하기 시작한 것만큼 잠재적인 데이터 손실이 두렵지는 않았습니다. 어레이가 조립되었지만 조립될 수 없다는 것을 알았을 때 inactive어레이를 중지했습니다.

# mdadm -S /dev/md0
mdadm: stopped /dev/md0

그 다음에그것을 조립하려고했습니다 :

# mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1
mdadm: /dev/md0 assembled from 10 drives - not enough to start the array while not clean - consider --force.

여전히 조금 무섭습니다. 무슨 /proc/mdstat말을 하는지 살펴보겠습니다.

# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md0 : inactive sdb1[0](S) sdk1[10](S) sdf1[9](S) sdg1[8](S) sdh1[7](S) sdi1[6](S) sdj1[5](S) sde1[4](S) sdd1[3](S) sdc1[2](S)
      19535119360 blocks

전부... 예비 부품... ? 알았어, 또 겁이 났어. 다시 중지하세요.

# mdadm -S /dev/md0
mdadm: stopped /dev/md0

그리고 다음을 사용하여 제안된 내용을 시도해 보세요 --force.

# mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1 --force
mdadm: /dev/md0 has been started with 10 drives (out of 11).

11점 만점에 10점, 컴퓨터 옆 선반에 앉아 있기 때문에 지금까지는 매우 좋습니다.

# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md0 : active raid6 sdb1[0] sdk1[10] sdf1[9] sdg1[8] sdh1[7] sdi1[6] sdj1[5] sde1[4] sdd1[3] sdc1[2]
      17581607424 blocks level 6, 64k chunk, algorithm 2 [11/10] [U_UUUUUUUUU]

안도의 한숨을 쉬며 마지막 테스트를 진행합니다.

# mount /dev/md0 /mnt/data
# df -ahT
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/root     ext4     73G  6.9G   63G  10% /
proc          proc       0     0     0   -  /proc
sysfs        sysfs       0     0     0   -  /sys
usbfs        usbfs       0     0     0   -  /proc/bus/usb
tmpfs        tmpfs    1.7G     0  1.7G   0% /dev/shm
/dev/md0       xfs     15T   14T  1.5T  91% /mnt/data

모든 곳에서 구호. 마실 것이 필요하다...

답변2

2009년에도 비슷한 문제가 있었고 Facebook에 자랑했지만 솔루션을 다시 만들 수 없었습니다. 그러나 데이터 손실이 더 무서웠습니다. 나는 후손을 위해 그리고 그것을 찾을 수 있는 내 자신의 능력을 위해 게시하고 있습니다.

문제는 약간 달랐습니다. gparted는 sda1이 xfs이고 sda2가 알 수 없다고 말했습니다. 둘 다 RAID 파티션이어야 하고 xfs는 md0에 있어야 합니다.

# mdadm --assemble --force /dev/md0 /dev/sda1 /dev/sdb1
# xfs_repair -v /dev/md0
# mount /dev/md0 /mount/myRaid

관련 정보