Debian 8 서버에서 HDD /dev/sda가 충돌했습니다. mdadm
이메일로 알려주고 디스크를 교체했습니다.
서버를 백업한 후 .GPT를 사용하여 복사했습니다 sgdisk -R /dev/sdb /dev/sda
. 키보드의 "Enter" 키를 눌렀을 때 나는 내 실수를 깨달았습니다.
이제 두 디스크 모두에 빈 GPT가 있습니다.
/dev/sdb
내 질문은 잘못된 GPT를 복사한 후 재부팅하지 않았기 때문에 서버가 계속 실행되는 동안 GPT를 다시 생성할 수 있느냐는 것입니다.
sfdisk -d /dev/sdb > sdb.partition.table
고장난 하드 드라이브를 교체하기 전에 백업을 만들었습니다. 그런데 백업을 안 했으니 sgdisk
백업은 전혀 쓸모가 없군요.
또한 이 출력이 있습니다.fdisk -lGPT를 복사하기 전에 시작하세요.
Disk /dev/sdb: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 454774BD-960F-45C6-8C82-AE5C156444E0
Device Start End Sectors Size Type
/dev/sdb1 4096 33558527 33554432 16G Linux RAID
/dev/sdb2 33558528 34607103 1048576 512M Linux RAID
/dev/sdb3 34607104 5860533134 5825926031 2.7T Linux RAID
/dev/sdb4 2048 4095 2048 1M BIOS boot
Partition table entries are not in disk order.
Disk /dev/md0: 16 GiB, 17171349504 bytes, 33537792 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/md1: 511.7 MiB, 536543232 bytes, 1047936 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/md2: 2.7 TiB, 2982739705856 bytes, 5825663488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
답변1
다음과 같은 연구와 노력 끝에테스트 디스크, 원래 GPT를 복원하는 확실한 방법을 찾지 못했습니다./dev/sdb
그래서 사용해 보았는데CG디스크원래의 "섹터 레이아웃"이 아직 기록되어 있기 때문에 작동했습니다 /dev/sdb
.
Disk identifier: 9F95A04D-3ECB-144D-B2A0-55CDD986072B
Device Start End Sectors Size Type
/dev/sdb1 4096 33558527 33554432 16G Linux RAID
/dev/sdb2 33558528 34607103 1048576 512M Linux RAID
/dev/sdb3 34607104 5860533134 5825926031 2.7T Linux RAID
/dev/sdb4 2048 4095 2048 1M BIOS boot
이 정보를 바탕으로 위에서 설명한 것과 동일한 시작 섹터, 동일한 수의 섹터 및 동일한 파일 시스템 유형을 가진 파티션을 만들었습니다.
GPT에 쓴 후 /dev/sdb
위와 fdisk -l /dev/sdb
동일한 결과를 얻었습니다.
sgdisk -R /dev/sda /dev/sdb
fdisk -l /dev/sda
그런 다음 (이번에는 올바른 순서로) GPT를 복사했는데 다음과 똑같은 "섹터 레이아웃"이 표시되었습니다 ./dev/sda
/dev/sdb
Disk identifier: 4CB38488-8B72-44AA-8449-4E4692165893
Device Start End Sectors Size Type
/dev/sdb1 4096 33558527 33554432 16G Linux RAID
/dev/sdb2 33558528 34607103 1048576 512M Linux RAID
/dev/sdb3 34607104 5860533134 5825926031 2.7T Linux RAID
/dev/sdb4 2048 4095 2048 1M BIOS boot
이제 남은 일은 다음 명령을 사용하여 RAID 볼륨을 다시 동기화하는 것입니다.미다뎀grub2를 다시 설치하십시오.
앞에서 언급한 대로 재동기화가 완료된 후 grub2를 다시 설치하고 ( 확실히 확인하기 위해 /dev/sda
grub2도 다시 설치했습니다 ) 새 장치 맵을 생성했습니다. /dev/sdb
(그러나 grub2 코어 이미지 경고를 피하기 위해 HDD 버퍼를 플러시해야 했습니다.)
서버를 다시 시작했는데 다시 정상적으로 실행되었습니다.
중요한: 저는 서버의 전체 백업이 있었고 이것이 작동할지 100% 확신하지 못했고 파티션이 손상될 수 있었기 때문에 이 GPT 패치만 수행했습니다.