개요:
이 기사에서는 FAT 32 파일 시스템 구조 정보, FAT 32 부트 섹터, FAT 32 파티션 테이블, FAT 32 MBR에 대해 자세히 소개합니다. 실수로 데이터를 손실한 경우 EaseUS Data Recovery Wizard를 무료로 다운로드하여 파일 삭제를 취소하고 손실된 데이터를 복구하고, 디스크를 포맷 해제하고, 포맷되거나 삭제된 하드 드라이브, 파티션을 FAT 32 파일 시스템으로 복원하십시오.
마스터 부트 레코드는 거의 모든 운영 체제에서 동일합니다. 이것은 Cylinder 0, Head 0, Sector 1에 있는 하드 드라이브의 첫 번째 섹터에 있습니다. 컴퓨터가 모든 하드웨어(POST)를 확인하고 소프트웨어 로딩을 제어한 후 실행되는 첫 번째 코드입니다. 하드 드라이브 위에. 여기에는 하드 드라이브의 여러 섹션을 정의하는 파티션 테이블도 포함됩니다. 기본적으로 이 작은 512바이트 섹션에 문제가 발생하면 하드 드라이브가 완전히 죽은 것입니다.
오프셋 | 설명 | 크기 |
000h | 실행 코드(부츠 컴퓨터) | 446바이트 |
1BEh | 첫 번째 파티션 항목(NextTable 참조) | 16바이트 |
1CEh | 두 번째 파티션 항목 | 16바이트 |
1DEh | 세 번째 파티션 항목 | 16바이트 |
1EEh | 네 번째 파티션 항목 | 16바이트 |
1FEh | 부트 레코드 서명(55hAAh) | 2바이트 |
오프셋 | 설명 | 크기 |
00시 | 현재 파티션 상태(00h=비활성, 80h=활성) | 1바이트 |
01h | 파티션 시작 - 헤드 | 1바이트 |
02시 | 파티션 시작 - 실린더/섹터(아래 참조) | 1단어 |
04시 | 파티션 유형(아래 목록 참조) | 1바이트 |
05시 | 파티션 끝 - 헤드 | 1바이트 |
06시 | 파티션 끝 - 실린더/섹터 | 1단어 |
08시 | 파티션의 MBR과 첫 번째 섹터 사이의 섹터 수 | 1 더블 워드 |
0Ch | 파티션의 섹터 수 | 1 더블 워드 |
10MB 하드 드라이브와 8086 시대에는 코드가 프리미엄이었던 것 같습니다. 그래서 그들은 공간을 보존하기 위해 최선을 다했습니다. 불행히도 이제 우리는 그것과 함께 살아야 하지만 운 좋게도 그들은 시스템을 번역하는 새로운 방법을 만들었습니다. 그래서 1024 Cylinder Limit(2^10)은 적어도 최신 컴퓨터에서는 큰 문제가 되지 않습니다. 오래된 것들은 일반적으로 전체 하드 드라이브를 볼 수 있도록 일종의 디스크 오버레이 프로그램이 필요합니다.
어쨌든 섹터를 여기에서 꺼내려면 AND 마스크($3F)를 적용해야 합니다. Cylinder를 얻으려면 상위 바이트를 가져와서 ($C0)으로 AND 마스킹된 하위 바이트와 OR한 다음 Shifted Left Two를 사용합니다. 설명하기가 쉽지 않으므로 실린더/섹터 인코딩 및 디코딩을 위해 내가 만든 두 가지 루틴(파스칼에서)을 사용하여 수행한 방법을 보여 드리겠습니다. 파스칼을 모르더라도 읽을 수 있기를 바랍니다.
Function CylSecEncode(Cylinder, Sector: Word): Word;
Begin
CylSecEncode: = (Lo(Cylinder) shl 8) or (Hi(Cylinder) shl 6) or Sector;
End;
Procedure CylSecDecode(Var Cylinder, Sector: Word; CylSec : Word);
Begin
Cylinder: = Hi(CylSec) or ((Lo(CylSec) and $C0) shl 2);
Sector: = (CylSec and $3F);
End;
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
실린더 비트 7~0 | 실린더 비트 9+8 | 섹터 비트 5 to0 |
파티션 유형 목록
표시된 것보다 더 많은 것이 있지만 MS 운영 체제와 관련된 것만 포함했습니다.
Value | 설명 |
00h | Unknown or Nothing(알수 없음 또는 없음) |
01h | 12-bit FAT |
04h | 16-bit FAT (32MB보다 작은 파티션) |
05h | Extended MS-DOS Partition |
06h | 16-bit FAT (32MB보다 작은 파티션) |
0Bh | 32-bit FAT (최대2048GB 파티션) |
0Ch | 0BH와 동일하지만 LBA 1 13h 확장을 사용 |
0Eh | 06H와 동일하지만 LBA 1 13h 확장을 사용 |
0Fh | 05H와 동일하지만 LBA 1 13h 확장을 사용 |
여러 파티션 읽기
FAT32에 여러 파티션이 있는 것은 FAT16만큼 가능성이 없지만 여전히 동일한 방식으로 작동합니다. 첫 번째 파티션은 기본 파티션이고 나머지는 모두 확장 파티션에 저장됩니다. 하지만 추가 파티션을 읽는 것은 약간 까다롭습니다(많지 않고 약간만). 파티션 테이블의 첫 번째 레코드는 기본 파티션의 위치(크기, 시작 위치, 끝 위치)를 보여줍니다. 파티션 테이블의 두 번째 항목은 전체 확장 파티션(하나 이상의 파티션을 포함할 수 있음)이 있는 위치를 보여줍니다. 더 많은 파티션을 읽으려면 확장 파티션이 시작되는 곳으로 이동하여 첫 번째 섹터를 읽습니다. MBR과 같은 역할을 합니다. 코드가 있어야 할 위치에 공백이 있고 파티션 테이블에서 첫 번째 항목에 대해 드라이브의 다음 파티션이 있고 더 이상 있으면 이전과 마찬가지로 다른 확장 파티션이 있습니다. 그러나 섹터 번호에 대한 모든 참조는 해당 새 MBR 포인트를 참조로 사용하여 만들어지므로 가상 드라이브가 됩니다. 이것이 의미가 없는 경우를 대비하여(그렇지 않은 경우 이해할 수 있는 내용을 설명하는 방식으로) 세 개의 파티션이 있는 드라이브가 설정되는 방법을 보여드리겠습니다.
전체 드라이브의 MBR
항목 #1 - 파티션 #1에 대한 포인트
항목 #2 - 전체 확장 파티션을 가리킵니다.
해당 확장 파티션의 첫 번째 섹터를 읽고 다른 MBR 구조를 볼 수 있습니다.
확장 파티션의 MBR
항목 #1 - 파티션 #2에 대한 포인트
항목 #2 - 파티션 #2 이후 확장 파티션의 나머지 부분에 대한 포인트
이제 해당 항목의 섹터 번호(특히 오프셋 08h의 항목)에 대한 모든 참조는 드라이브 시작 부분에서 참조되지 않고 확장 파티션 시작 부분에서 참조됩니다. 그러나 CHS(Cylinder, Head, Sector) 수치는 여전히 옳습니다.
다시 한 번, 해당 확장 파티션의 첫 번째 섹터를 읽고 다음 MBR을 보게 됩니다.
나머지 확장 파티션의 MBR
항목 #1 - 파티션 #3에 대한 포인트
마지막 파티션이므로 항목 #2가 없습니다.
다른 파티션이 있는 경우 패턴은 마지막 파티션에 도달할 때까지 이전과 같이 계속됩니다.
이 정보는 모든 파티션의 첫 번째 섹터에 있습니다.
오프셋 | 설명 | 크기 |
00시 | 점프 코드 + NOP | 3바이트 |
03h | OEM 이름(아마도 MSWIN4.1) | 8바이트 |
0Bh | 섹터당 바이트 | 1단어 |
0Dh | 클러스터당 섹터 | 1바이트 |
0Eh | 예약된 섹터 | 1단어 |
10시간 | FAT 사본 수 | 1바이트 |
11시간 | 최대 루트 디렉토리 항목(FAT32의 경우 해당 없음) | 1단어 |
13시간 | 32MB보다 작은 파티션의 섹터 수(FAT32의 경우 해당 없음) | 1단어 |
15시간 | 미디어 설명자(하드 디스크의 경우 F8h) | 1바이트 |
16시간 | 이전 FAT 시스템의 FAT당 섹터(FAT32의 경우 해당 없음) | 1단어 |
18시간 | 트랙당 섹터 | 1단어 |
1아 | 헤드 수 | 1단어 |
1채널 | 파티션의 숨겨진 섹터 수 | 1 더블 워드 |
20시간 | 파티션의 섹터 수 | 1 더블 워드 |
24시간 | FAT당 섹터 수 | 1 더블 워드 |
28시간 | 플래그(비트 0-4는 활성 FAT 복사를 나타냄)(비트 7은 FAT 미러링의 활성화 또는 비활성화 여부를 나타냄)(FATMirroring이 비활성화된 경우 FAT 정보는 비트 0-4로 표시된 복사본에만 기록됨) | 1단어 |
2아 | FAT32 드라이브 버전(HighByte = 메이저 버전, 낮은 바이트 = 마이너 버전) | 1단어 |
2채널 | 루트 디렉토리 시작의 클러스터 번호 | 1 더블 워드 |
30시간 | 파일 시스템 정보 섹터의 섹터 번호(아래 구조 참조)(파티션 시작 부분에서 참조) | 1단어 |
32시간 | BackupBoot 섹터의 섹터 번호(파티션 시작 부분부터 참조) | 1단어 |
34시간 | 예약된 | 12바이트 |
40시간 | 파티션의 논리 드라이브 번호 | 1바이트 |
41시간 | 미사용(이전 항목의 상위 바이트일 수 있음) | 1바이트 |
42시간 | 확장 서명(29시간) | 1바이트 |
43시간 | 파티션의 일련 번호 | 1 더블 워드 |
47시간 | 파티션의 볼륨 이름 | 11바이트 |
52시간 | FAT 이름(FAT32) | 8바이트 |
5아 | 실행 코드 | 420바이트 |
1FEh | 부트 레코드 서명(55hAAh) | 2바이트 |
일반적으로 이것은 파티션의 두 번째 섹터가 존재하지만 부트 섹터에 이에 대한 참조가 있기 때문입니다. 이동할 수 있다고 합니다. 나는 이것의 완전한 그림을 결코 얻지 못했다. 중요한 분야가 어디에 있는지 알고 있지만.
오프셋 | 설명 | 크기 |
00시 | 첫 번째 서명(52h 52h 61h41h) | 1 더블 워드 |
04시 | 알 수 없음, 현재(Null일 수 있음) | 480바이트 |
1E4h | FSInfo 섹터 서명(72h 72h 41h 61h) | 1 더블 워드 |
1E8h | 사용 가능한 클러스터 수(알 수 없는 경우 -1로 설정) | 1 더블 워드 |
1ECh | 가장 최근에 할당된 클러스터의 클러스터 번호입니다. | 1 더블 워드 |
1F0h | 예약된 | 12바이트 |
1FCh | 알 수 없음 또는 Null | 2바이트 |
1FEh | 부트 레코드 서명(55hAAh) | 2바이트 |
FAT32 드라이브 레이아웃
오프셋 | 설명 |
파티션 시작 | 부트 섹터 |
시작 + 예약 섹터 수 | 뚱뚱한 테이블 |
시작 + 예약된 수 + (FAT당 섹터 수 * 2) | 데이터 영역(클러스터 #2로 시작) |
클러스터 의미
클러스터는 정보가 있는 하드 드라이브의 섹터 그룹입니다. 4K 클러스터에는 8개의 섹터가 있습니다(512*8=4096). 각 클러스터는 FAT 테이블에서 한 자리를 차지합니다. FAT의 항목을 볼 때 거기에 있는 숫자는 해당 클러스터에 데이터가 있는지 여부와 데이터가 있는 경우 데이터의 끝인지 아니면 그 뒤에 다른 클러스터가 있는지 알려줍니다. 파티션의 모든 데이터는 클러스터 #2로 시작합니다. FAT 항목이 0이면 해당 클러스터에 데이터가 없습니다. FAT 항목이 0FFFFFFFh이면 체인의 마지막 항목입니다.
이것은 내 정보의 가장 큰 구멍 중 하나입니다. FAT 테이블과 관련하여 숫자가 무엇을 의미하는지 보여주는 곳을 찾을 수 없습니다. FAT32 드라이브만 봐도 체인의 끝을 알 수 있었는데, BAD Cluster가 무엇인지, 데이터를 표시할 수 있는 최대 유효 개수가 얼마인지 모르겠습니다.
지금은 다음 공식을 사용하여 파티션에서 유효한 최대 클러스터를 계산할 수 있습니다.
( (파티션의 섹터 수) - (지방당 섹터 수 * 2) - (예비 섹터 수) ) / (클러스터당 섹터 수)
해당 공식에 대한 답에 나머지가 있으면 파티션 끝에 몇 개의 추가 클러스터가 있음을 의미하므로(아마도 다른 클러스터를 만들기에는 충분하지 않음) 소수점 이하의 모든 항목을 제거할 수 있습니다. .
디렉토리 테이블
저수준에서 파일 시스템을 볼 때의 또 다른 측면은 디렉토리 테이블입니다. 디렉토리 테이블은 모든 파일 및 디렉토리 항목을 저장하는 것입니다. 기본적으로 FAT16과 FAT32의 디렉토리 테이블에는 한 가지 차이점만 있습니다. 차이점은 다음과 같습니다. 짧은 파일 이름 구조에서 예약된 OS/2 바이트(오프셋 20 [14h])는 클러스터 번호의 상위 워드로 대체됩니다(이제 2가 아닌 4바이트이기 때문에).
파일 할당 테이블
각주
1 - LBA = 논리적 블록 주소 지정 - 최신 BIOS에 내장된 Int 13h 확장을 사용하여 8GB 장벽 이상의 데이터에 액세스하거나 CHS(실린더, 헤드, 섹터) 대신 LBA 모드에서 엄격하게 액세스합니다.
실수로 FAT32 하드 드라이브, USB 또는 기타 저장 장치에서 데이터를 삭제, 제거 또는 포맷한 경우 당황하지 마십시오. 최선의 선택은 전문 하드 드라이브 데이터 복구 소프트웨어 가 도움을 받도록 하는 것입니다! 여기서는 간단한 3단계로 손실된 모든 데이터를 효과적으로 삭제 취소, 포맷 해제 및 복원할 수 있는 EaseUS Data Recovery Wizard를 사용해 볼 것을 권장합니다. 지금 무료로 다운로드하여 손실된 모든 FAT32 데이터를 다시 얻으십시오.
관련 문장
Windows 10/11 오류 코드 0x80004005를 간단하게 해결하기
즉시 해결! Windows 10/8/7에서 대상 폴더 액세스 거부