gparted를 사용하여 파티션 테이블을 지웠습니다. 파티션을 복구할 수 있는 방법이 있습니까?

gparted를 사용하여 파티션 테이블을 지웠습니다. 파티션을 복구할 수 있는 방법이 있습니까?

"장치->파티션 테이블 생성... 후 적용"을 클릭하여 gparted를 사용하여 NTFS(Windows) 파티션 테이블을 지웠습니다. NTFS 파티션을 복구할 수 있는 방법이 있습니까?

이 명령을 사용해 보았 gpart /dev/sda 더니 다음과 같은 결과가 나왔습니다.

Begin scan...
End scan.

Checking partitions...
Ok.

Guessed primary partition table:
Primary partition(1)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

Primary partition(2)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

Primary partition(3)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

Primary partition(4)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

이 출력은 무엇을 의미합니까? 회복할 수 있는 방법이 있나요?

답변1

파티션 테이블을 복구할 수 있지만 이를 위해서는 두 가지 조건이 충족되어야 합니다.

  1. 컴퓨터를 재부팅하지 않았습니다.
  2. 테이블이 변경될 당시 드라이브가 사용 중이었습니다.

이것이 작동하는 방식은 커널이 파티션 레이아웃을 메모리에 유지한다는 것입니다. 파티션이 사용 중인 경우 파티션이 시작되는 위치를 알아야 하므로 더 이상 사용하지 않을 때까지 새 테이블 다시 로드를 거부합니다.

이를 수행하는 방법:

이동 /sys/block/sda. 그 안에는 각 파티션( sda1, sda2등) 에 대한 디렉터리가 표시됩니다 . 각각의 내부에는 startand size(so ) 라는 파일이 있습니다 /sys/block/sda/sda1/start. 완전히 동일한 시작 위치와 크기를 사용하여 파티션 테이블을 다시 생성하면 괜찮을 것입니다.

파티션 유형은 유지되지 않습니다. Linux는 이 정보에 관심이 없습니다. 따라서 다시 생성한 후에는 파티션 유형이 무엇으로 설정되었는지(NTFS 등) 기억해야 합니다.


원본 디스크:

# fdisk -l /dev/sdc

디스크 /dev/sdc: 8006MB, 8006926336바이트, 15638528 섹터
단위 = 1 * 512 = 512바이트의 섹터
섹터 크기(논리적/물리적): 512바이트 / 512바이트
I/O 크기(최소/최적): 512바이트 / 512바이트
디스크 식별자: 0x000ce29c

   장치 부팅 시작 끝 블록 ID 시스템
/dev/sdc1 2048 2099199 1048576 83 리눅스
/dev/sdc2 2099200 15638527 6769664 83 리눅스
# 마운트 | grep sdc
/mnt/tmp 유형 xfs(rw)의 /dev/sdc2
# 고양이 /mnt/tmp/세계
안녕하세요

파티션 테이블 지우기

# fdisk /dev/sdc
fdisk(util-linux 2.22.2)에 오신 것을 환영합니다.

변경 사항은 쓰기로 결정할 때까지 메모리에만 유지됩니다.
write 명령을 사용하기 전에 주의하십시오.


명령(도움말은 m): d
파티션 번호(1-4): 1
파티션 1이 삭제되었습니다.

명령(도움말은 m): d
선택된 파티션 2
파티션 2가 삭제되었습니다.

명령(도움말은 m): p

디스크 /dev/sdc: 8006MB, 8006926336바이트, 15638528 섹터
단위 = 1 * 512 = 512바이트의 섹터
섹터 크기(논리적/물리적): 512바이트 / 512바이트
I/O 크기(최소/최적): 512바이트 / 512바이트
디스크 식별자: 0x000ce29c

   장치 부팅 시작 끝 블록 ID 시스템

명령(도움말은 m): w
파티션 테이블이 변경되었습니다!

ioctl()을 호출하여 파티션 테이블을 다시 읽습니다.

경고: 오류 16: 장치 또는 리소스가 사용 중이므로 파티션 테이블을 다시 읽지 못했습니다.
커널은 여전히 ​​이전 테이블을 사용합니다. 새 테이블은 다음에서 사용됩니다.
다음에 재부팅하거나 partprobe(8) 또는 kpartx(8)를 실행한 후
디스크를 동기화하는 중입니다.

여전히 마운트되어 있고 액세스할 수 있다는 점에 유의하세요.

# 고양이 /mnt/tmp/세계
안녕하세요

오프셋 가져오기

# CD /sys/class/block/sdc

#ls
alignment_offset device@ events_poll_msecs 전원/ ro 슬레이브/
bdi@ 폐기_정렬 ext_range 대기열/ sdc1/ stat
기능 이벤트 보유자/범위 sdc2/하위 시스템@
dev events_async 기내 이동식 크기 uevent

# 고양이 sdc1/시작
2048년

# 고양이 sdc1/크기
2097152

# 고양이 sdc2/시작
2099200

# 고양이 sdc2/크기
13539328

파티션 테이블 복원

# fdisk /dev/sdc
fdisk(util-linux 2.22.2)에 오신 것을 환영합니다.

변경 사항은 쓰기로 결정할 때까지 메모리에만 유지됩니다.
write 명령을 사용하기 전에 주의하십시오.


명령(도움말은 m): n
파티션 유형:
   p 기본(기본 0개, 확장 0개, 무료 4개)
   전자 확장
선택(기본값 p): p
파티션 번호(1-4, 기본값 1): 1
첫 번째 섹터(2048-15638527, 기본값 2048): 2048
마지막 섹터, +섹터 또는 +크기{K,M,G}(2048-15638527, 기본값 15638527): +2097151
Linux 유형 및 크기 1GiB의 파티션 1이 설정되었습니다.

명령(도움말은 m): n
파티션 유형:
   p 기본(기본 1개, 확장 0개, 무료 3개)
   전자 확장
선택(기본값 p): p
파티션 번호(1-4, 기본값 2): 2
첫 번째 섹터(2099200-15638527, 기본값 2099200): 2099200
마지막 섹터, +섹터 또는 +크기{K,M,G}(2099200-15638527, 기본값 15638527): +13539327
Linux 유형 및 크기 6.5GiB의 파티션 2가 설정되었습니다.

명령(도움말은 m): p

디스크 /dev/sdc: 8006MB, 8006926336바이트, 15638528 섹터
단위 = 1 * 512 = 512바이트의 섹터
섹터 크기(논리적/물리적): 512바이트 / 512바이트
I/O 크기(최소/최적): 512바이트 / 512바이트
디스크 식별자: 0x000ce29c

   장치 부팅 시작 끝 블록 ID 시스템
/dev/sdc1 2048 2099199 1048576 83 리눅스
/dev/sdc2 2099200 15638527 6769664 83 리눅스

명령(도움말은 m): w
파티션 테이블이 변경되었습니다!

ioctl()을 호출하여 파티션 테이블을 다시 읽습니다.

경고: 오류 16: 장치 또는 리소스가 사용 중이므로 파티션 테이블을 다시 읽지 못했습니다.
커널은 여전히 ​​이전 테이블을 사용합니다. 새 테이블은 다음에서 사용됩니다.
다음에 재부팅하거나 partprobe(8) 또는 kpartx(8)를 실행한 후
디스크를 동기화하는 중입니다.

!!마지막 섹터를 지정할 때 크기 - 1을 사용합니다.!!

확인

드라이브를 마운트 해제하고 실행하여 partprobe커널에 새 테이블을 선택하도록 지시한 다음 다시 마운트하고 여전히 파일에 도달하는지 확인하겠습니다.

# 마운트 해제 /mnt/tmp/

# 파트프로브 /dev/sdc

# 마운트 /dev/sdc2 /mnt/tmp

# 고양이 /mnt/tmp/세계
안녕하세요

답변2

당신은 사용해 볼 수도 있습니다테스트디스크파티션 테이블을 복구합니다. Testdisk는 디스크 표면을 읽고 파티션이 시작되고 끝나는 위치를 결정하려고 시도합니다.

답변3

parted대략적인 위치를 알고 있는 경우 파일 시스템의 시작과 길이를 탐색할 수 있는 복구 명령이 있습니다.

답변4

NTFS 디스크의 크기를 알고 있다면 fdisk나 parted를 사용하여 이러한 디스크를 재설정할 수 있지만 운이 없다고 생각합니다.

관련 정보