실수로 부팅 디스크의 파티션을 삭제했습니다. 시스템은 여전히 ​​실행 중입니다. 어떻게 회복할 수 있나요?

실수로 부팅 디스크의 파티션을 삭제했습니다. 시스템은 여전히 ​​실행 중입니다. 어떻게 회복할 수 있나요?

실수로 잘못된 디스크의 모든 파티션을 삭제했습니다.

/dev/sda은 부팅 디스크이고 /dev/sdbRAID 미러로 설정하려는 새 디스크입니다.

나는 실수로 그것을 두들겨 패서 /dev/sda가 아닌 의 파티션 테이블을 삭제하게 되었습니다 /dev/sdb.

시스템은 여전히 ​​실행 중이므로 캐시된 파티션 테이블을 어딘가에서 실행하고 있습니다.

파티션 테이블을 복구하거나 적어도 볼 수 있어 파티션이 있던 위치에 정확히 다시 만들 수 있습니까?

fdisk /dev/sda -l파티션이 생성되지 않습니다.

응, 영리한 것 같아

답변1

커널은 파티션 테이블을 캐시에 영구적으로 보관합니다(다시 로드하도록 명시적으로 지시하지 않는 한, 일부 파티션이 사용 중인 경우에는 다시 로드할 수 없습니다). 따라서 재부팅할 때까지 안전합니다(또는 커널에 실제 디스크 내용을 반영하지 않는 데이터를 작동하도록 지시합니다. 예를 들어 이미 mdraid를 활성화한 경우 해당 메타데이터가 이미 디스크에 기록되었을 수 있습니다).

당신이 가지고 있다면최신 정보부트 섹터(처음 512바이트)를 백업하면 복원할 수 있습니다( cat boot-sector-backup >/dev/sda— 복원하려는 파일의 크기가 정확히 512바이트인지 확인하세요). 부트로더 설치로 인해 부트 섹터 백업이 생성되었을 수 있지만 업그레이드되었거나 그 이후로 다시 파티션을 나눈 경우에는 최신 상태가 아닙니다. 더 이상 사용되지 않을 수 있는 백업을 복원하지 마십시오.

파티션에 대한 커널 정보는 를 통해 액세스할 수 있습니다 /sys/class/block/sda/sda*. 각 파티션( sda1, sda2등) 의 디렉터리에서 :

  • start512바이트 섹터 단위로 파티션 시작 부분의 오프셋을 포함합니다.
  • size512바이트 섹터 단위의 파티션 크기를 포함합니다(확장 파티션 제외).

번호가 5 이상인 파티션이 있으면 논리 파티션입니다(참조:"확장" 파티션과 "논리" 파티션의 차이점은 무엇입니까), 확장 파티션 내부에 포함되어 있습니다. 단일 확장 파티션이 있거나 없거나 파티션 1~4 중 하나입니다. 파일에는 size확장 파티션의 크기가 포함되어 있지 않으므로 먼저 이를 확인해야 합니다. 모든 논리 파티션이 들어갈 만큼 충분히 커야 하며 기본 파티션(1~4번의 다른 파티션)을 포함해서는 안 됩니다.

달리다 fdisk /dev/sda. u단위를 섹터로 전환하는 데 사용됩니다 . 확장 파티션부터 시작하여 n올바른 오프셋과 크기(프롬프트에 표시된 대로 +크기에 관해서는 섹터 수 앞에 입력) 로 파티션( )을 만듭니다 .

p파티션 테이블이 올바른지 확인하는 데 사용됩니다 . 이러한 파티션 중 일부가 Linux 데이터 파티션이 아닌 경우 을 사용하여 t유형을 설정합니다( 82Linux 스왑의 경우, cWindows FAT32 파티션의 경우, 7Windows NTFS 파티션의 경우). 부팅 가능한 DOS/Windows 파티션이 있는 경우 부팅 가능 플래그( a)를 설정합니다.

출력이 양호해 보이는지 다시 확인한 다음 키를 눌러 w새 테이블을 디스크에 커밋합니다.

오프셋이 올바른 경우에만 작동하고 오프셋이 정확하지만 크기가 아닌 경우 디스크를 손상시킬 수 있는(읽기 전용 모드에서도 저널을 쓰기 때문에) /sys/class/block/sda/ in a tar archive on a USB stick. Then reboot from a removable media. **After rebooting, if the partition table you created is not correct, you risk massive data corruption**. So from the removable media, runfsck -n (don't forget the-n mount` 의 내용을 저장합니다 . ) to check the consistency of the filesystems on each partition (don't use).

fsck에서 파일 시스템을 찾지 못하면 파티션 오프셋이 잘못된 것입니다. 오류가 보고되면 파티션 크기가 잘못되었을 가능성이 있습니다.디스크에 쓰지 않는 한 파티션 테이블을 수정할 수 있습니다.. 마운트된 디스크에 파티션이 없을 때 w키를 누르면 fdisk커널이 파티션 테이블을 다시 읽게 됩니다. 파티션을 올바르게 설정하면 일반 시스템으로 재부팅하여 평소처럼 계속할 수 있습니다.

답변2

gpart다시 시작했더라도 도움이 될 것입니다.

관련 정보