서버에 RAID 5 어레이를 설치할 수 없습니다. "수퍼블록을 읽을 수 없습니다."

서버에 RAID 5 어레이를 설치할 수 없습니다. "수퍼블록을 읽을 수 없습니다."

저는 서버와 RAID 어레이를 처음 사용하는데 최근 서버에 설치하는 데 문제가 있었던 RAID 5 어레이를 복구하려고 합니다. 솔직히 말해서 제가 처음부터 이 포메이션을 세운 것은 아닙니다. 프로그램과 파일을 관리하기 위해 CentOS 7이 설치된 Dell 2950 PowerEdge 서버를 사용하고 있습니다. 재부팅 후 서버를 시작할 수 없을 때 문제가 시작되었습니다. 현재 설정에서는 마스터 서버가 시작될 때 어레이를 마운트하려고 시도합니다. 현재 /etc/fstab에 있는 명령은 시작 시 서버 충돌을 일으키기 때문에 서버가 시작될 때 주석 처리됩니다. 서버가 시작되면 해당 줄의 주석 처리를 제거합니다.

/dev/sdc  /array   ext4   defaults    1 2

그런 다음 설치하려고 하면 다음과 같습니다.

mount /array

다음 메시지가 나타납니다.

mount: wrong fs type, bad option, bad superblock on /dev/sdc,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

후행 dmesg:

[1625373.377926] sd 1:2:0:0: [sdc] tag#0 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK cmd_age=0s
[1625373.377929] sd 1:2:0:0: [sdc] tag#0 CDB: Read(16) 88 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00
[1625373.377931] blk_update_request: I/O error, dev sdc, sector 0
[1625373.377933] Buffer I/O error on dev sdc, logical block 0, async page read
[1633765.092732] nf_conntrack: falling back to vmalloc.
[1633765.093244] nf_conntrack: falling back to vmalloc.
[1633782.909748] sd 1:2:0:0: [sdc] tag#0 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK cmd_age=0s
[1633782.909757] sd 1:2:0:0: [sdc] tag#0 CDB: Read(16) 88 00 00 00 00 00 00 00 00 02 00 00 00 02 00 00
[1633782.909761] blk_update_request: I/O error, dev sdc, sector 2
[1633782.909782] EXT4-fs (sdc): unable to read superblock

잘못된 슈퍼 블록이 있는 것 같습니다. 이 문제를 해결하려면 어디서부터 시작해야 할지 모르겠습니다. 가능하다면 데이터 손실(10TB 이상) 없이 전체 어레이를 다시 포맷하고 싶지 않습니다. 다른 유용한 정보는 이것이 MD 호환 서버가 아니기 때문에(아마도 처음에는 그렇지 않았음이 분명함) mdadm명령이 적용되지 않는다는 것입니다. EXT4 파일 시스템으로 설정되어 있습니다. 또한 이 어레이가 5년 전 초기화되었을 때 올바르게 분할되었을 가능성도 없습니다. 즉, sdc0, sdc1 등이 없었습니다. 이것이 가져올 수 있는 전체 결과는 확실하지 않지만 일부 함수/스크립트에서는 배열이 적절하게 분할되어 있다고 가정하므로 잘못 사용하면 "털이 많아질" 수 있습니다. 이 문제와 관련된 도움을 주시면 대단히 감사하겠습니다. 문제를 진단하는 데 도움이 되는 정보를 제공하지 않은 경우 알려주시기 바랍니다.

업데이트: 어떤 슈퍼블록이 문제인지 찾을 수 있는지 확인하고 싶었습니다. 어레이를 마운트 해제한 후 다음을 시도했습니다. $ dumpe2fs /dev/sdc | grep -i superblock 이 명령의 출력은 다음과 같습니다.

dumpe2fs 1.42.9 (28-Dec-2013)
dumpe2fs: Attempt to read block from filesystem resulted in short read while trying to open /dev/sdc
Couldn't find valid filesystem superblock.

mke2fs -n /dev/sdc슈퍼블록에 대한 더 많은 정보를 얻을 수 있는지 알아보기 위해 달려보기도 했습니다 . 이것이 결과다

# mke2fs -n /dev/sdc
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdc is entire device, not just one partition!
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
335577088 inodes, 2684616704 blocks
134230835 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
81928 block groups
32768 blocks per group, 32768 fragments per group
4096 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000, 214990848, 512000000, 550731776, 644972544, 1934917632, 
        2560000000

업데이트(2022-11-15)

IT 팀의 도움을 받아 서버의 BIOS에 들어갈 수 있었습니다. RAID 5가 PERC 5/E이고 BIOS에서 슬롯 8 디스크가 "외부"로 간주된다는 것을 아는 것이 도움이 될 수 있습니다. 슬롯 8의 디스크를 "가져오기"("삭제"하는 대신)하고 어레이는 정상으로 돌아왔지만 성능이 저하된 상태였습니다. 이상하게도 슬롯 0의 디스크가 "누락"으로 표시되어 있습니다. 전역 핫 스페어로 어레이에 연결된 디스크가 있다고 생각하며 어레이는 가장을 유지하기 위해 이를 사용한다고 생각합니다. 데이터가 손실되지 않았는지 확인하기 위해 전역 핫 스페어를 다시 설정하는 방법을 알아보기 전에 "rsync"를 사용하여 외부 15TB 드라이브에 어레이를 백업했습니다. 복사 과정이 원활하게 진행되는 것에 손가락이 교차했습니다. 모두의 도움에 감사드립니다!

답변1

/dev/sdc

어 허.

이것이 하드웨어 RAID입니다. 당신이 첫 번째 위치에 있습니다.~해야 한다시작 시 컨트롤러를 찾고 있었습니다. 컴퓨터에서 Linux를 실행하는 동안 장치를 구성하는 것도 가능합니다. 하지만 이를 위해서는 매우 난해한 소프트웨어가 필요합니다. DELL Perc 5i 또는 6i가 될 수 있습니다. 이 컴퓨터는 매우 오래된 컴퓨터이므로 소프트웨어가 Ubuntu/Debian에서 작동하지 않을 수 있습니다. 인터넷에서 적합한 소프트웨어를 찾아야 합니다.

이상한 점은 이전에는 파티션 없이 구성되었다는 것입니다.

드라이브를 지운 후 무슨 일이 일어나고 있는지 말하지 않았습니다. 드라이브가 성공을 보고하는 것 같았습니다. 지금은 분명히 작동하고 있지만 컨트롤러에서 어레이를 다시 빌드하고 이를 통해 불량 블록을 실행하고 분할한 다음 새 파일 시스템을 생성하고 싶습니다.

답변2

데이터가 매우 중요하다면 다음과 같이 할 것입니다.

  1. /dev/sdc의 전체 내용(이미지)을 담을 수 있을 만큼 큰 별도의 저장 장치를 확보하세요. (RAID 배열 크기 * 1.15)

  2. 전체 RAID를 블록 수준 이미지 파일로 이 별도의 장치에 덤프합니다. (dd를 예로 들어보자)

  3. 이제 물리적 RAID 어레이의 데이터를 손상시키지 않고 이 이미지에서 모든 데이터 복구, FS 복구, 설치, 데이터 조각 등의 시도를 안전하게 수행할 수 있습니다.

  4. 문제가 발생하여 새 이미지를 덤프해야 하는 경우를 대비하여 물리적 RAID를 현재 상태로 유지하십시오.

이미지에서 복사/조각/추출된 모든 데이터는 세 번째 저장 장치에 저장되어야 합니다.


간단한 예:

RAID를 이미지 파일로 덤프하려면 먼저 저장하려는 장치(파티션)를 마운트해야 합니다.

sudo mkdir /mnt/imgfiles
sudo mount /dev/sdd2 /mnt/imgfiles

그런 다음 사용DD원시 배열 데이터를 이미지로 덤프합니다.

sudo dd if=/dev/sdc of=/mnt/imgfiles/array_raw.img

노트: 이 명령은 특정 옵션(기억나지 않음)을 명령줄에 추가하지 않는 한 진행 상황을 보고하지 않습니다.

노트 2: 시간이 오래 걸립니다. 하드 드라이브는 속도가 느리고 데이터가 많습니다.

답변3

콘솔에서 dmesg 및 dumpe2fs가 보고한 오류는 이것이 파일 시스템이 아닌 RAID 어레이 자체에 문제가 있음을 나타냅니다.

가장 먼저 해야 할 일은 RAID 어레이를 살펴보고(어쨌든) 여러 개의 실패한 디스크가 있는지 또는 일종의 재설정이 필요한지 확인하는 것입니다. 이를 수행하는 방법은 Dell 하드웨어에 따라 다릅니다.

ddrescue@svin83이 언급했듯이 " " 또는 " " 를 사용하여 /dev/sdc를 다른 백업 장치에 복사할 수 있는 것은 dd if=/dev/sdc of=/dev/XXX bs=1M conv=sync,noerror장치가 최소한 대부분 작동하는지 확인하고 !+ 오류가 발생하면 Oh $#를 방지하는 좋은 방법입니다. 항상 다른 일과 함께 발생합니다. 전체 어레이의 크기는 11TB 미만이므로 단지 몇 백 달러만 내면 전체 백업에 충분한 크기의 12/14TB SATA3 드라이브를 구입할 수 있습니다.

정렬 문제를 피하기 위해 하드웨어 RAID에 파티션 테이블이 없는 것은 드문 일이 아닙니다.

관련 정보