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 마운트 |
/dev/sdc2 /mnt/tmp의 xfs(rw) 유형
# 고양이/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@discard_alignment ext_range 대기열/sdc1/stat
기능 이벤트 홀더/범위 sdc2/subsystem@
dev events_async 기내 이동식 크기 uevent

# 고양이 sdc1/시작
2048년

#catsdc1/크기
2097152

# 고양이 sdc2/시작
2099200

#catsdc2/크기
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를 사용하여 디스크 크기를 재설정할 수 있지만 운이 없을 것 같습니다.

관련 정보