장 - 3
디스크와 OS에 대한 논리적 접근 방식
하드 드라이브는 자체적으로 하드웨어를 제어할 수 없으며 작업을 수행하려면 BIOS(기본 입출력 시스템)와 DOS(또는 운영 체제)라는 두 가지 주요 프로그램이 필요합니다. 디스크의 운영 체제는 컴퓨터 하드웨어 및 하드 드라이브와 직접 상호 작용하지 않지만, 이 둘 사이에 BIOS가 필요합니다. 그렇기 때문에 BIOS는 컴퓨터에서 중요한 역할을 합니다.
바이오스
BIOS의 주요 역할은 컴퓨터에 연결된 하드웨어나 장치와 DOS 사이에 표준 인터페이스를 제공하는 것입니다. 시스템 BIOS는 시스템 하드웨어와 해당 시스템에서 실행되는 소프트웨어 간의 최하위 인터페이스입니다. 하드 드라이브에 대한 액세스를 관리하는 데 있어 다음과 같은 여러 가지 중요한 기능을 수행합니다.
- BIOS 인터럽트 루틴
- 하드 드라이브 감지 및 구성
- 하드 디스크 인터페이스 모드 지원
다양한 하드웨어와 소프트웨어 제품 간의 상호 운용성을 가능하게 하기 위해 시스템의 BIOS는 하드웨어 요구 사항에 맞게 사용자 정의되며 소프트웨어가 하드웨어에 액세스하는 표준적인 방식을 제공합니다. 이러한 서비스는 BIOS 서비스라고 하며 많은 운영 체제와 애플리케이션 프로그램에서 사용됩니다. 이러한 장치는 하드 드라이브에 단일 인터페이스를 제공하므로 애플리케이션은 각 유형의 하드 드라이브와 개별적으로 통신하는 방법을 알 필요가 없습니다.
표준 IDE/ATA 하드 드라이브는 다양한 BIOS 설정을 사용하여 BIOS에서 구성됩니다. 최신 BIOS 프로그램은 최신 IDE/ATA 드라이브를 감지하고 이러한 설정을 결정하여 자동으로 구성할 수 있습니다. BIOS는 마더보드의 시스템 칩셋과 시스템 I/O 버스를 사용하여 하드 드라이브에 사용할 수 있는 인터페이스 모드 유형을 제어합니다.
INT 13H 인터페이스 및 INT 13H 확장
BIOS에 대한 기본 인터페이스는 소프트웨어 인터럽트 13H로, 일반적으로 INT 13H로 알려져 있습니다. 여기서 INT는 인터럽트를 의미하고 13H는 16진수 표기법으로 숫자 19를 나타냅니다.
이 책의 프로그래밍 단계에서는 프로그래밍에서 인터럽트를 사용하는 방법을 자세히 연구하고 논의할 것입니다. Int13H 인터페이스는 BIOS에 전달할 수 있는 다양한 명령을 지원하며, BIOS는 이를 하드 드라이브로 전달합니다. 인터럽트 13H에는 디스크에서 수행해야 하는 읽기, 쓰기, 포맷 등 대부분의 작업이 포함됩니다.
Int13H를 사용하고 작업하려면 호출 프로그램에서 하드 디스크의 특정 매개변수를 알아야 하며 디스크에 액세스하기 위한 정확한 헤드, 실린더, 섹터 주소 지정을 루틴에 제공해야 합니다.
BIOS는 BIOS 설정 프로그램에서 구성된 대로 하드 드라이브 구조를 사용합니다. Int13H 인터페이스는 디스크 지오메트리를 지정하기 위해 24비트를 할당하며, 이는 다음과 같이 분류됩니다.
- 실린더 번호는 10비트이고, 총 실린더 수는 1024개입니다.
- 헤드 번호는 8비트이고, 총 헤드 수는 256개입니다.
- 섹터 번호는 6비트이고 총 63개의 섹터입니다.
따라서 디스크에 가능한 최대 섹터 수는 다음과 같습니다.
= 1024 * 256 * 63
= 16515072
여기서 볼 수 있듯이 INT 13H 인터페이스는 섹터당 512바이트로 최대 16515072개의 섹터를 포함하는 드라이브를 지원할 수 있습니다. 따라서 최대 디스크 크기는 다음과 같습니다.
= 16515072 * 512
= 8455716864바이트
~ 8,456GB
따라서 INT 13H 인터페이스는 약 8.456GB(또는 7.875GiB)의 디스크 크기를 지원할 수 있습니다.
오늘날 대부분의 컴퓨터 사용자는 8GB보다 훨씬 큰 용량의 하드 드라이브를 사용하고 있기 때문에 INT 13H 인터페이스는 마침내 현대 컴퓨터 시스템에서 더 이상 유용하지 않으며 INT 13H 확장이라는 새로운 인터페이스로 대체되었습니다. 그러나 INT 13H는 DOS 및 일부 다른 오래된 운영 체제에서도 호환 목적으로 사용될 수 있습니다.
Int 13H 확장
정말 흥미로운 점은 INT 13H 인터페이스가 설계되었을 때, 아무도 하드 드라이브에 8GB의 저장공간이 있을 것이라고 예상하지 못했다는 것입니다. 하지만 오늘날 우리는 가정용 개인용 컴퓨터에도 8GB 하드 드라이브의 용량이 훨씬 작다고 느낍니다.
이전 표준에는 중요한 한계가 있었습니다. 24비트의 주소 정보를 사용하여 섹터당 512바이트로 최대 16,515,072개의 섹터를 포함하는 드라이브만 처리할 수 있었고, 최대 용량은 8.456GB(또는 7.875GiB)였습니다.
따라서 문제는 액세스 경로를 24비트에서 더 큰 것으로 넓히는 것이었지만, 기존 INT13H BIOS 인터페이스를 확장하는 것은 불가능했습니다. 왜냐하면 우리가 이것을 시도하면 많은 오래된 하드웨어와 소프트웨어가 작동하지 않게 되기 때문입니다. 그리고 실제로, 여러분의 개발과 함께 작동하지 않는 많은 오래된 하드웨어와 소프트웨어로 컴퓨터 세계에서 존경받는 자리를 차지할 희망은 없습니다.
따라서 Int13H를 대체하기 위해 새로운 인터페이스가 개발되었습니다. 이러한 루틴을 Int13H 확장이라고 합니다. 이 새로운 인터페이스는 주소 지정에 24비트 대신 64비트를 사용하고 최대 하드 드라이브 크기를 9.4 * 10 21 바이트, 즉 9.4조 기가바이트로 허용합니다.
이 책의 프로그래밍 섹션에서 INT 13H와 INT 13H 확장의 사용법을 배울 것입니다. 초기에는 여러 가지 다른 크기 제한이 있었습니다. 인기 있는 논리적 및 물리적 제한 중 일부는 아래에 설명되어 있습니다.
2.1GB 제한
이 크기 제한은 실린더 수를 제공하는 CMOS RAM의 필드에 12비트만 할당하는 일부 오래된 BIOS에서 관찰되었습니다. 따라서 이 숫자는 최대 111111111111B(최대 가능한 12비트 이진수)일 수 있으며, 이는 4095와 같습니다. 이런 식으로 액세스할 수 있는 16개 헤드가 있는 최대 디스크 크기는 다음과 같습니다.
= 4095 * 16 * 63 * 512 바이트
= 2113413120 바이트에 접근 가능합니다.
33.8GB 제한
이 하드 디스크 크기 장벽은 1999년 초에 발견되었습니다. 대형 디스크는 16개 헤드, 63개 섹터/트랙, 16383개 실린더를 보고합니다. 많은 BIOS는 총 용량을 16*63으로 나누어 실제 실린더 수를 계산합니다.
33.8GB보다 큰 디스크의 경우 65535보다 큰 실린더 수가 발생합니다. 이 특정 사례에서 일부 버전의 Award BIOS는 65,535개가 넘는 실린더가 있는 드라이브를 처리할 수 없습니다. 이제 BIOS가 충돌하거나 중단됩니다. 하드 디스크 매개변수는 일반적으로 16개 헤드와 63개 섹터를 사용하므로 문제가 발생하기 전에 약 33.8GB 또는 31.5GiB의 용량이 됩니다.
해결 방법은 BIOS를 업그레이드하거나 점퍼를 사용하여 디스크가 더 작게 보이도록 하는 것입니다.
IDE 디스크에 대한 ATA 사양 - 137GB 제한
이전 ATA 사양은 137GB보다 큰 디스크에 대한 액세스를 허용하지 않습니다. 실제로는 섹터 번호를 지정하는 데 28비트만 사용합니다. 그러나 ATA-6은 48비트 섹터 번호로 확장을 정의합니다.
디스크 크기의 한계는 0에서 65535까지 세는 최대 65536개의 실린더, 0에서 15까지 세는 16개의 헤드, 1에서 255까지 세는 트랙당 255개의 섹터, 즉 디스크의 최대 총 용량의 조합으로 생성되었습니다.
= 65535 * 16 * 255 섹터
= 267386880 섹터
= 136902082560바이트(각각 512바이트의 섹터)
~ 137기가바이트
2개 및 4개 디스크 BIOS IDE 지원
오늘날 대부분의 최신 BIOS 프로그램은 하드 디스크 자동 감지를 지원하여 BIOS가 각 하드 디스크를 조사하여 논리적 지오메트리, 지원되는 전송 모드 및 기타 정보를 확인할 수 있습니다. 이는 BIOS에 따라 설정 시 또는 컴퓨터가 부팅될 때마다 동적으로 수행할 수 있습니다.
시스템 BIOS는 IDE/ATA 하드 디스크에 대한 기본 지원을 제공하므로 BIOS에 시스템에 어떤 하드 디스크가 있는지, 어떻게 제어해야 하는지 알려주는 여러 매개변수가 있을 수 있습니다. 시스템의 각 하드 디스크는 자체 설정을 가지므로 기본 마스터에 대한 설정과 기본 슬레이브에 대한 설정 등이 있습니다. 그러나 SCSI 하드 디스크는 호스트 어댑터와 내장 SCSI BIOS를 통해 구성됩니다.
크기가 8GB를 넘는 하드 디스크 드라이브는 기존 IDE/ATA BIOS 지오메트리 매개변수를 사용하여 설명할 수 없으므로 동적 자동 감지는 특히 오래된 컴퓨터 시스템의 경우 최신 드라이브를 설정하는 표준 방법입니다. 그러나 사용자는 여전히 일부 드라이브 매개변수를 수동으로 설정할 수 있습니다.
다음은 IDE/ATA 하드 디스크를 구성하기 위해 BIOS 설정 프로그램에서 일반적으로 발견되는 설정입니다. 하지만 최신 시스템에서는 가장 오래된 호환성 설정 중 일부는 더 이상 존재하지 않을 수도 있습니다.
- 디스크 유형: 원래는 사용자가 미리 정의된 목록에서 하드 디스크를 선택할 수 있도록 사용되었지만 현재는 드라이브에 대한 자동 또는 수동 매개변수 설정을 제어하는 데 사용됩니다.
- 크기: 하드 디스크 드라이브의 크기(10진수 메가바이트). 실린더, 헤드, 섹터 등과 같은 다른 매개변수에서 계산됩니다.
- 실린더: 디스크의 논리적 실린더 수. 헤드: 디스크의 논리적 헤드 수.
- 섹터: 디스크의 각 논리 트랙에 있는 512바이트의 논리 섹터 수. 일반적으로 현대 하드 디스크 드라이브는 단일 트랙에 63개의 섹터가 있습니다.
- 쓰기 사전 보상: 이는 매우 오래된 드라이브에 대해 어떤 실린더 번호 쓰기 조정을 해야 하는지 지정하는 호환성 설정입니다.
- 랜딩 존(파킹 헤드): 랜딩 존은 드라이브가 꺼졌을 때 데이터 손실이나 불량 섹터 생성을 방지하기 위해 BIOS가 헤드를 파킹하는 실린더입니다. 최신 하드 디스크 드라이브는 헤드를 자동으로 파킹하므로 오늘날에는 거의 필요하지 않습니다.
- 변환 모드: 504MB 이상의 하드 디스크를 지원하는 데 사용되는 BIOS 변환 모드입니다.
- 블록 모드: BIOS가 블록 단위로 디스크 전송을 수행하는 기능을 제어합니다.
- 프로그램된 I/O(DMA) 모드: 프로그램된 I/O 모드 또는 DMA 모드는 하드 디스크와의 전송을 수행하는 데 사용됩니다.
- 32비트 전송 모드: 더 높은 성능의 32비트 데이터 전송 사용을 제어합니다.
파일 시스템의 제한 사항
각 파일 시스템은 최대 볼륨 크기, 파일 크기, 볼륨당 파일 수를 지원합니다.
이제 예를 들어, 일반적으로 FAT16 및 FAT32 볼륨은 각각 4GB 및 32GB(일반적으로)로 제한됩니다. FAT 파일 시스템과 관련하여 알아야 할 몇 가지 제한 사항이 아래에 나와 있습니다.
- FAT12: 16MB보다 작은 FAT 볼륨은 FAT12로 포맷됩니다. 가장 오래된 FAT 유형이며 12비트 바이너리를 사용하여 클러스터 번호를 보관합니다. FAT12를 사용하여 포맷된 볼륨은 최대 4,086개의 클러스터를 보관할 수 있으며, 이는 2 12에서 FAT에서 사용할 몇 가지 예약된 값을 뺀 값과 같습니다. (이 장에서 다음에 제공하는 디스크의 논리적 구조에서 자세히 설명하겠습니다.) 따라서 FAT12는 더 작은 볼륨에 가장 적합합니다. 약 16MB보다 작은 플로피 디스크와 하드 디스크 파티션에서 사용됩니다.
- FAT16: FAT16은 16비트 이진수를 사용하여 클러스터 번호를 보관합니다. FAT16을 사용하는 볼륨은 최대 65,526개의 클러스터를 보관할 수 있으며, 이는 2 16에서 FAT에서 사용하도록 예약된 몇 가지 값을 뺀 값과 같습니다. (이 장에서 다음에 나오는 디스크의 논리적 구조에서 자세히 설명하겠습니다.) FAT16은 크기가 16MB에서 2,048MB까지인 하드 디스크 볼륨에 사용됩니다. 2GB보다 큰 FAT16 볼륨은 MS-DOS, Windows 95/98/ME 및 기타 여러 운영 체제를 실행하는 컴퓨터에서 액세스할 수 없습니다. 이러한 제한은 이러한 운영 체제가 32KB보다 큰 클러스터 크기를 지원하지 않기 때문에 발생하며, 이로 인해 2GB 제한이 발생합니다. (이 장에서 다음에 나오는 클러스터 제한 참조).
- FAT32: 이론적으로 최대 FAT32 볼륨은 최대 2048GB(약 2테라바이트)가 될 수 있습니다. FAT32는 Windows 95의 OEM SR2 릴리스와 Windows 98/ME에서 지원됩니다. FAT32는 28비트 바이너리 클러스터 번호를 사용합니다(32비트 중 4비트가 "예약됨"이기 때문에 32가 아니라는 것을 기억하세요). 따라서 이론적으로 FAT32는 2억 6,800만 개 이상의 클러스터(실제로는 2억 6,843만 5,456개 클러스터)가 있는 볼륨을 처리할 수 있으며 최대 2TB 크기의 드라이브를 지원합니다. 그러나 이를 위해서는 FAT 크기가 매우 커집니다.(이 장의 다음 주제에서 논의할 것입니다).
FAT 유형의 비교는 다음 표에 나와 있습니다.
NTFS: NTFS는 New Technology File System의 약자입니다. Windows 2000/XP에서 사용됩니다. 이론적으로 최대 NTFS 파티션 크기는 (2 64 – 1) 클러스터입니다.
NTFS 파일 시스템에 대한 자세한 설명은 이 책의 범위를 벗어납니다. 그러나 다음 표에서는 몇 가지 제한 사항을 제시합니다.
설명
|
한계 |
최대 파일 크기
|
16엑사바이트 – 1KB(264바이트 – 1KB) |
최대 볼륨 크기
|
(2 64 – 1) 클러스터 |
볼륨당 파일(및 폴더)
|
4,294,967,295 (2 32 – 1 ) 파리와 폴더 |
무리
모든 소프트웨어가 액세스할 수 있는 하드 디스크의 할당을 위한 가장 작은 공간 단위는 섹터로, 512바이트를 포함합니다. 각 파일에 필요한 만큼의 개별 섹터가 할당되는 디스크에 대한 할당 시스템을 가질 수 있습니다. 예를 들어, 1MB 파일은 데이터를 저장하기 위해 약 2,048개의 개별 섹터가 필요합니다.
FAT 파일 시스템의 경우 또는 대부분의 파일 시스템에서 개별 섹터는 사용되지 않습니다. 여기에는 여러 가지 성능상의 이유가 있습니다. DOS가 하드 디스크에 정보를 쓸 때 공간을 섹터별로 할당하지 않고 대신 클러스터라는 새로운 저장 단위를 사용합니다.
FAT는 수년 전에 설계되었으며 간단한 파일 시스템이며 개별 섹터를 관리할 수 없습니다. 대신 FAT는 섹터를 클러스터 또는 할당 단위라고 하는 더 큰 블록으로 그룹화합니다.
클러스터는 파일에 할당할 수 있는 가장 작은 디스크 공간 단위입니다. 이것이 클러스터를 종종 할당 단위라고 부르는 이유입니다. 파일이 512바이트 조각으로 나뉘면 디스크를 관리하는 것이 매우 어려울 수 있습니다.
개별적으로 관리되는 512바이트 섹터를 사용하는 20GB 디스크 볼륨에는 4,100만 개 이상의 개별 섹터가 포함되며, 이렇게 많은 정보를 추적하는 데는 시간과 리소스가 많이 소모됩니다. 그러나 일부 운영 체제는 섹터별로 파일에 공간을 할당하지만 이를 제대로 수행하려면 고급 인텔리전스가 필요합니다.
클러스터는 DOS가 디스크에 정보를 저장할 때 할당하는 최소 공간입니다. 디스크에 1바이트 길이의 정보만 저장하더라도 디스크 표면에 최소한 하나의 클러스터 영역이 필요합니다.
한 클러스터가 512바이트의 정보를 저장할 수 있다면 513바이트를 저장하려면 두 개의 클러스터가 필요합니다. 모든 파일에는 정수 개수의 클러스터가 할당되어야 합니다. 즉, 볼륨이 4,096바이트를 포함하는 클러스터를 사용하는 경우 610바이트 파일은 하나의 클러스터를 사용하므로 디스크에 4,096바이트가 있지만 4,097바이트 파일은 두 개의 클러스터를 사용하므로 디스크에 8,192바이트가 있습니다.
이것이 클러스터 크기가 디스크의 효율적인 사용을 극대화하는 데 매우 중요한 이유입니다. 따라서 클러스터 크기가 클수록 낭비되는 공간이 더 많아진다는 것을 이해할 수 있습니다.
다음에 주어진 그림은 BINARY.C라는 파일의 속성을 보여주고 디스크에서 파일이 사용하는 공간의 사실을 명확히 합니다. 파일의 실제 크기는 610바이트이지만 단일 클러스터가 4,096바이트이므로 파일은 디스크에서 하나의 클러스터(4,096바이트)를 사용합니다.
클러스터는 하나 이상의 섹터로 구성될 수 있습니다. 이는 사용되는 디스크 유형에 따라 달라집니다. 클러스터는 둘 이상의 섹터로 구성될 수 있으므로 할당 단위로 클러스터를 사용하면 DOS가 사용된 디스크 공간과 빈 디스크 공간의 정보를 보관하는 데 사용하는 파일 할당 테이블의 크기가 줄어듭니다.
클러스터 크기는 주로 디스크 볼륨의 크기에 따라 결정됩니다. 엄밀히 말해서는 아니지만 일반적으로 더 큰 볼륨은 더 큰 클러스터 크기를 사용합니다. 하드 디스크 볼륨의 경우 각 클러스터의 크기는 4섹터(2,048바이트)에서 64섹터(32,768바이트)까지입니다.
플로피 디스크는 훨씬 더 작은 클러스터를 사용하고, 어떤 경우에는 단 1섹터 크기의 클러스터를 사용합니다. 클러스터의 섹터는 연속적이므로 각 클러스터는 디스크의 연속적인 공간 블록입니다.
클러스터 크기와 파티션 또는 볼륨 크기는 직접적으로 관련되어 있기 때문에 성능과 디스크 활용도에 중요한 영향을 미칩니다. 클러스터 크기는 디스크 볼륨이 분할될 때 결정됩니다.
Partition Magic과 같이 특정 조건의 제한 내에서 기존 파티션의 클러스터 크기를 변경할 수 있는 유틸리티가 있지만, 일반적인 경우 파티션 크기와 클러스터 크기를 선택하면 고정됩니다.
앞서 설명했듯이 실린더 또는 트랙 번호는 0부터 시작하고 첫 번째 섹터 번호는 항상 1로 간주됩니다. 그리고 기억해야 할 점이 하나 더 있는데, 첫 번째 클러스터 번호는 항상 2로 간주된다는 것입니다.
클러스터 크기
클러스터는 데이터 영역에만 저장 영역을 할당하는 데 사용됩니다. FAT 및 디렉토리 영역은 클러스터 크기에 따라 할당되지 않습니다. 512바이트 섹터를 사용하는 디스크에서 512바이트 클러스터는 1개의 섹터를 포함하는 반면 4KB 클러스터는 8개의 섹터를 포함합니다.
다음 표는 DOS에서 다양한 디스크 형식에 사용하는 기본 클러스터 크기를 나열합니다. 그러나 클러스터의 크기는 일부 상황에서 기본 크기와 다를 수 있습니다.
플로피 디스크 드라이브(FDD) |
드라이브 유형 |
섹터/클러스터 |
총 클러스터 크기(바이트)(각 512바이트의 섹터) |
5.25인치 360Kb FDD |
2개 부문 |
1,024 |
5.25인치 1.2Mb FDD |
1개 섹터 |
512 |
3.5인치 720Kb FDD |
2개 부문 |
1,024 |
3.5인치 1.44Mb FDD |
1개 섹터 |
512 |
3.5인치 2.88MB FDD |
2개 부문 |
1,024 |
FAT16, FAT32, NTFS는 각각 파티션 크기에 따라 다른 클러스터 크기를 사용하고 각 파일 시스템은 지원할 수 있는 최대 클러스터 수가 있습니다. 클러스터 크기가 작을수록 디스크는 클러스터 내의 사용되지 않은 공간을 다른 파일에서 사용할 수 없기 때문에 정보를 더 효율적으로 저장합니다.
다음 표는 FAT16, FAT32 및 NTFS 파일 시스템 파티션의 기본 클러스터 크기를 보여줍니다. FAT 32는 훨씬 더 효율적인 저장 및 더 큰 하드 드라이브 사용을 허용하고, 32비트 FAT는 Windows 95 OSR-2 및 Windows 98/ME와만 호환됩니다. FAT 16은 MS-DOS, Windows 3.1, Windows 95 및 Windows NT에서 지원됩니다. 운영 체제 Windows 2000/XP는 NTFS 파일 시스템을 사용합니다.
참고: 여기서 1 KiB는 1 바이너리 킬로바이트를 나타내는 것으로, 1 KiB는 1024바이트를 의미하며, 512바이트의 두 섹터가 1 KiB와 동일하다고 말할 수 있습니다.
FAT16 파티션의 크기가 커질수록 디스크 공간 낭비도 커집니다. FAT32를 사용하면 클러스터 크기가 줄어들어 효율적인 스토리지가 제공됩니다. FAT32는 더 큰 하드 디스크를 사용하고 클러스터 크기를 크게 줄일 수 있지만, FAT32를 사용할 때 중요한 성능 고려 사항이 있습니다. 수십 기가바이트의 거대한 하드 디스크가 FAT32를 새로운 시스템에 필수적으로 만들었다는 것입니다. 오히려 FAT16과 FAT32 중에서 실용적인 선택이 더 이상 없다고 말할 수 있습니다.
FAT16이 지원할 수 있는 최대 크기인 2,048MB의 파티션을 고려해 보겠습니다. 이 파티션이 FAT16에서 설정되면 65,526개의 클러스터가 있는 파일 할당 테이블이 생성되고 각 클러스터는 32KiB의 디스크 공간을 차지합니다.
큰 클러스터 크기는 실제로 디스크 공간의 큰 낭비를 초래합니다. 따라서 이 파티션에서 FAT32를 사용하는 것이 좋습니다. 그러면 클러스터 크기가 32KiB에서 4KiB로 줄어듭니다.
사실, 이렇게 하면 디스크의 여유 공간이 엄청나게 줄어들어 최대 30%까지 줄어들 수 있고, 이전에 낭비했던 수백 메가바이트의 디스크 공간을 확보할 수 있습니다. 이런 상황에서는 보통 옳은 일입니다. 하지만 여기에는 또 다른 측면이 있습니다. 이렇게 줄어든 클러스터 크기는 무료로 얻을 수 없습니다.
각 클러스터가 더 작기 때문에 같은 양의 디스크를 커버하려면 더 많은 클러스터가 필요합니다. 따라서 65,526개의 클러스터 대신 이제 524,208개가 됩니다.
게다가 FAT32의 FAT 항목은 32비트 폭(각 항목은 4바이트)인 반면 FAT16의 항목은 16비트(각 항목은 2바이트)입니다. 결과적으로 FAT32의 FAT 크기는 FAT16보다 16배 더 큽니다. 다음 표는 요약합니다.
2,048MB 디스크 볼륨의 경우 FAT 16 및 FAT 32 |
FAT 유형 |
FAT16 |
FAT32 |
클러스터 크기 |
32키로바이트 |
4키로바이트 |
FAT 항목 수 |
65,526 |
524,208 |
FAT의 크기 |
131052바이트
(~ 128KiB) |
2096832바이트
(~ 2MiB) |
FAT32 볼륨의 크기를 2GB에서 8GB로 늘리면 FAT의 크기가 약 2MiB에서 8MiB로 늘어납니다. 이것의 중요성은 FAT32 볼륨이 FAT를 보관하기 위해 디스크에서 수 메가바이트의 공간을 낭비해야 한다는 사실이 아닙니다. 이렇게 함으로써 FAT의 크기를 줄여서 그보다 훨씬 더 많은 공간을 절약할 수 있기 때문입니다. 진짜 문제는 FAT가 볼륨의 모든 파일에 대한 모든 클러스터 포인터를 보관한다는 것입니다. FAT의 크기가 크게 증가하면 시스템 속도에 부정적인 영향을 미칠 수 있습니다.
이러한 이유로 파일 할당 테이블의 크기를 적당한 크기로 제한하는 것이 중요합니다. 사실, 대부분의 경우 클러스터 크기와 FAT 크기 사이의 균형을 찾는 문제입니다. 이에 대한 좋은 예는 FAT32 자체에서 선택한 클러스터 크기입니다.
FAT32는 최대 2억 6,800만 개의 클러스터를 처리할 수 있으므로 4KiB 클러스터 크기는 개념적으로 1TiB(1,024GiB) 크기의 디스크 볼륨을 지원할 수 있습니다. 하지만 문제는 그렇게 하면 항목당 2억 6,800만 x 4바이트로 FAT 크기가 1GB를 넘게 된다는 것입니다.
이러한 이유로 FAT32는 최대 8GiB 크기의 볼륨에 대해 4KiB 클러스터만 사용하고, 그 다음에는 클러스터 크기에 대해 이전에 제공된 표에 표시된 대로 더 큰 클러스터가 사용됩니다. 공식적으로 선언된 FAT32에서 지원하는 최대 파티션 크기는 2,048GiB(2TiB)입니다.
하드 디스크의 논리적 구조
기본적으로 하드 디스크의 논리적 구조는 다음의 다섯 가지 논리적 용어로 구분할 수 있습니다.
- MBR(마스터 부트 레코드)
- DBR(DOS 부트 레코드)
- FAT(파일 할당 테이블)
- 루트 디렉토리
- 데이터 영역
다음 그림은 하드 디스크의 논리적 구조를 형성하는 이러한 논리적 용어의 개념적 배열을 나타냅니다.
하드 디스크의 논리적 구조
마스터 부트 레코드(MBR) 또는 때때로 마스터 파티션 테이블(MPT)이라고도 하는 이 레코드에는 하드 디스크 드라이브에서 활성(또는 부팅 가능한) 파티션을 로드하고 시작하는 작은 프로그램이 들어 있습니다. 마스터 부트 레코드에는 시작 섹터, 종료 섹터, 파티션 크기 등과 같이 하드 디스크 드라이브의 모든 4개 기본 파티션에 대한 정보가 들어 있습니다.
MBR은 절대 섹터 0 또는 실린더 0, 헤드 0, 섹터 1에 위치하며, 디스크에 두 개 이상의 파티션이 있는 경우 각 확장 파티션 볼륨의 시작 부분에 확장 마스터 부트 레코드가 있습니다(다음에 나오는 그림 참조).
MBR은 DOS의 FDISK.EXE 명령을 실행하여 하드 디스크 드라이브에 생성됩니다. 그러나 동일한 작업을 수행하는 다른 소프트웨어도 많이 있습니다. FDISK를 사용하면 이러한 파티션 중 하나를 활성화하거나 부팅 가능하게 만들 수 있습니다.
이렇게 하면 시스템이 시작될 때 활성 파티션의 부트 섹터가 제어권을 받을 수 있습니다. 플로피에는 파티션이 없으므로 플로피에는 MBR이 없습니다.
DOS는 파티션의 이름을 지정하는 데 단일 대문자 알파벳을 사용하므로 DOS에서 허용하는 모든 유형의 파티션의 최대 수는 드라이브 문자 C(C:)에서 드라이브 문자 Z(Z:)까지 24개입니다. 따라서 두 개 이상의 실제 하드 디스크 드라이브가 있는 경우에도 모든 드라이브의 총 파티션 수는 24개를 초과할 수 없습니다.
POST(Power-On Self Test) 후 BIOS는 하드 디스크에서 MBR(마스터 부트 레코드)을 메모리로 로드한 다음 실행합니다. 먼저 MBR은 하드 디스크에서 활성 파티션을 확인한 다음 DOS 부트 레코드(DBR)를 메모리로 로드하고 운영 체제 부트 코드로 제어권을 넘긴 다음 운영 체제 부트 레코드 코드가 나머지 운영 체제를 메모리로 로드합니다.
마스터 부트 레코드 형식
마스터 부트 레코드 형식
하드 디스크 드라이브를 여러 개의 논리 드라이브로 분할할 수 있으며, 일반적으로 DOS에서 자체 드라이브 문자가 지정됩니다. 한 번에 하나의 파티션만 활성(또는 부팅 가능) 파티션으로 표시할 수 있습니다.
마스터 부트 레코드 형식
마스터 부트 레코드는 마스터 파티션 테이블에서 4개의 항목으로 제한됩니다. 그러나 확장 마스터 부트 레코드의 위치는 확장 파티션 테이블이 포함된 마스터 부트 레코드의 도움으로 얻을 수 있으며, 그 형식은 메인 파티션 테이블과 정확히 동일하지만 부트 코드가 없습니다.
확장된 마스터 부트 레코드에서 이 446바이트 공간은 일반적으로 부트 코드에 예약되어 비어 있습니다. 마스터 부트 레코드의 모든 512바이트는 표에 나와 있는 대로 다음과 같이 끊어집니다.
오프셋 |
설명 |
크기 |
000H |
초기 프로그램 로더(IPL), 실행 코드(컴퓨터의 첫 번째 부팅을 제공) |
446바이트 |
1베흐 |
첫 번째 파티션 항목(다음 표 참조) |
16바이트 |
1CEH |
두 번째 파티션 항목 |
16바이트 |
1DEH |
세 번째 파티션 항목 |
16바이트 |
1이이이 |
네 번째 파티션 항목 |
16바이트 |
1페헤 |
실행 가능 마커 또는 부팅 가능 섹터 서명 또는 매직 넘버(AAH 55H) |
2바이트 |
총 = 512바이트 |
모든 확장 파티션은 확장 파티션 항목에 예약된 공간 내에 존재해야 합니다. 확장 파티션 중 두 개만 사용하도록 되어 있으며, 첫 번째는 일반 파티션으로, 두 번째는 다른 확장 파티션(존재하는 경우)으로 사용됩니다. 따라서 하나의 마스터 파티션 테이블의 도움으로 그 옆에 있는 다른 확장 마스터 파티션 테이블의 위치를 알아낼 수 있습니다(존재하는 경우).
파티션 테이블 항목 형식
MBR의 모든 파티션의 파티션 테이블 항목 형식은 다음 표에 나와 있습니다. 모든 MBR의 모든 파티션 항목은 특정 의미를 가진 다음 바이트로 나눌 수 있습니다.
부팅 유형 표시기 바이트(1바이트): 이 바이트가 00H이면 파티션이 활성화되지 않은 것이고, 바이트가 80H이면 파티션이 활성화된 파티션 또는 부팅 가능한 파티션을 의미합니다. 다른 바이트가 존재할 것으로 예상되지는 않지만, 다른 바이트가 존재하는 경우 파티션 테이블 손상 또는 파티션 테이블의 바이러스 공격으로 인한 것일 수 있습니다.
시작 실린더 - 헤드 - 파티션의 섹터 번호(3바이트): 디스크의 CHS(실린더, 헤드, 섹터)를 계산할 때 물리적 CHS는 다음과 같이 계산됩니다.
- 물리적 부문은 1부터 계산됩니다.
- 물리적 머리는 0부터 계산됩니다.
- 물리적 실린더는 0부터 계산됩니다. (자세한 내용은 이전 장을 참조하세요.)
- 오프셋 01H의 바이트는 해당 파티션의 16진법에서 시작 헤드 번호를 나타냅니다.
오프셋 02H의 바이트의 최하위 6비트가 파티션의 시작 섹터 번호를 만들고 나머지 2비트(두 개의 최상위 비트)의 조합과 오프셋 03H의 다른 바이트의 8비트(10비트 번호의 나머지 8개 최하위 비트)가 파티션의 시작 실린더 번호를 만듭니다.
오프셋 |
의미 |
크기 |
설명 |
00시 |
부팅 유형 표시기 바이트 |
1바이트 |
Byte가 00H 이면 파티션이 비활성 상태이고 Byte가 80H 이면 파티션이 활성 상태(또는 부팅 가능)입니다. |
01시 |
파티션 시작의 헤드 번호 |
1바이트 |
16진법에서 파티션의 시작 헤드 번호 |
02시 |
파티션 시작의 섹터 및 실린더 번호 |
2바이트 |
첫 번째 바이트의 6비트는 시작 섹터 번호를 만들고 나머지 2비트(가장 중요한 두 비트)와 다른 바이트의 8비트(10비트 번호의 나머지 8개 최하위 비트)의 조합은 파티션의 시작 실린더 번호를 만듭니다. |
04시 |
파일 시스템 표시기 바이트 |
1바이트 |
16진법의 파일 시스템 표시기 바이트(표시기에 대해서는 다음에 제공된 표 참조) |
05시 |
파티션 끝의 헤드 번호 |
1바이트 |
16진법에서 파티션의 끝 헤드 번호 |
06시 |
파티션 끝의 섹터 및 실린더 번호 |
2바이트 |
첫 번째 바이트의 6비트는 종료 섹터 번호를 만들고 나머지 2비트(최상위 2비트)와 다른 바이트의 8비트(10비트 번호의 나머지 8개 최하위 비트)의 조합은 파티션의 종료 실린더 번호를 만듭니다. |
08시 |
파티션 시작의 상대 섹터 번호 |
4바이트 |
MBR과 파티션의 첫 번째 섹터 사이의 섹터 수 |
0CH |
파티션의 섹터 수 |
4바이트 |
파티션의 섹터 수 |
총 = 16바이트 |
실린더 및 섹터 인코딩은 다음에 수행된 샘플 파티션 테이블 연구의 예에서 제공되었습니다.
파일 시스템 표시기 바이트(1바이트): 오프셋 04H의 파일 시스템 표시기 바이트는 해당 파티션의 파일 시스템을 나타냅니다. 다양한 파일 시스템에 대한 파일 시스템 표시기 바이트를 나열한 표는 이 장에서 다음에 제공됩니다.
종료 실린더 - 헤드 - 파티션의 섹터 번호(3바이트): 인코딩은 시작 실린더 - 헤드 - 파티션의 섹터 번호와 동일합니다.
파티션 시작 부분의 상대 섹터 번호(4바이트): 16 진수 방식으로 표현된 파티션의 MBR과 첫 번째 섹터 사이의 섹터 수입니다.
파티션의 섹터 수(4바이트) : 16 진수 시스템으로 나타낸 파티션의 섹터 수입니다.
실린더, 헤드 및 섹터 번호는 BIOS로 전달해야 하는 번호라는 점을 항상 기억해야 합니다. 따라서 BIOS가 변환(LBA 모드 또는 INT 13H 확장 지원)을 사용하는 경우 값이 물리적 CHS 값을 나타내지 않을 수 있습니다. 대용량 하드 드라이브(8.4GB 이상)의 경우 CHS 값이 유효하지 않을 수 있습니다. 이러한 값은 일반적으로 무시해야 하며 대신 절대 섹터 값이 사용됩니다.
다음에 주어진 그림은 FAT32 파티션이 있는 디스크의 MBR을 보여줍니다. 그림 끝의 64바이트 강조된 영역은 MBR의 마스터 파티션 테이블을 나타냅니다.
시작 및 종료 CHS의 인코딩은 다음과 같습니다.
- 오프셋 00H에서 80(16진수)은 해당 파티션이 활성 파티션임을 나타냅니다.
- 오프셋 01H에서 01(16진수)은 시작 헤드 번호 = 1을 나타냅니다.
- 오프셋 02H 및 03H에서 두 바이트를 조합하면 다음에 주어진 인코딩에 따라 파티션의 시작 섹터와 실린더 번호가 형성됩니다.
FAT32 파티션이 있는 디스크의 MBR
따라서 파티션의 시작 CHS는 0-0-1입니다.
마찬가지로 파티션 종료에 대한 헤드 번호는 FE(16진수)로 254이고, 파티션의 종료 실린더 및 섹터 번호에 대한 인코딩은 다음 표에 나와 있습니다.
따라서 분할의 마지막 CHS는 701-254-63입니다.
오프셋 04H의 바이트 0B(16진수)는 파티션의 파일 시스템 표시 바이트입니다. 바이트 0B(H)는 파티션에 FAT32 파일 시스템이 있음을 나타냅니다. 다양한 파일 시스템과 해당 파일 시스템 표시 바이트에 대한 표는 다음과 같습니다.
파일 시스템 표시기 바이트(16진수) |
파티션/파일 시스템 설명 |
00시 |
사용되지 않음/빈 파티션 테이블 항목
(이것은 디스크의 사용되지 않은 영역을 지정하는 데 사용되지 않지만 사용되지 않은 파티션 테이블 항목을 표시합니다) |
01시 |
DOS 12비트 fat
(유형 01H 는 최대 15MB 파티션용) |
02시 |
XENIX: 루트 파일 시스템 |
03시 |
XENIX /usr 파일 시스템(폐기됨)
(XENIX는 Unix V7의 오래된 부분입니다. Microsoft XENIX 운영 체제는 1980년 8월에 발표되었습니다. Intel 8086, Zilog Z8000, Motorola M68000 및 Digital Equipment PDP-11용 Unix 운영 체제의 휴대용 및 상업용 버전이었습니다. Microsoft는 1983년 4월에 XENIX 3.0을 출시했습니다. SCO는 1983년에 8088/8086용 최초의 XENIX를 출시했습니다.) |
04시 |
16비트 FAT, DOS 3.0+ (파티션 크기 < 32M)
(일부 오래된 DOS 버전에는 이 파티션이 하드 디스크의 첫 번째 물리적 32MB에 위치해야 하는 버그가 있었습니다) |
05시 |
DOS 확장 ( DOS 3.3+ 확장 볼륨)
최대 8.4GB 디스크를 지원합니다. 이 유형 05H DOS/Windows는 사용 가능하더라도 확장 BIOS 호출을 사용하지 않습니다.) |
06시 |
16비트 FAT, DOS Big, DOS 3.31+ (파티션 크기 >= 32M)
(DOS 및 Windows 95/98의 경우 파티션은 최대 2GB이며, 각 클러스터에는 최대 65536개의 클러스터가 있고 최대 32KB입니다. Windows NT는 64KB 클러스터를 사용하여 최대 4GB의 FAT16 파티션을 만들 수 있습니다.) |
07시 |
OS/2 IFS(설치 가능 파일 시스템) (HPFS는 이 파일 시스템의 가장 잘 알려진 예입니다. OS/2는 설치된 IFS에 대해 ID가 7인 파티션만 확인합니다. 이것이 EXT2 IFS 패킷에 특별한 "Linux 파티션 필터" 장치 드라이버가 포함되어 OS/2가 Linux 파티션의 ID가 07이라고 생각하도록 속이는 이유입니다.) |
07시 |
고급 유닉스 |
07시 |
윈도우 NT NTFS |
07시 |
QNX2.x(1988년 이전)
(파티션 유형 07H의 실제 파일 시스템의 경우 파티션 부트 레코드를 검사해야 함) |
08시 |
OS/2(v1.0 ~ v1.3만 해당) |
08시 |
AIX 부팅 파티션
[AIX(Advanced Interactive Executive)는 IBM의 Unix 버전입니다.] |
08시 |
스플릿드라이브 |
08시 |
여러 드라이브에 걸친 DELL 파티션 |
08시 |
코모도어 DOS |
08시 |
QNX 1.x 및 2.x
(QNX 파티션에 따르면 "qny") |
09시 |
AIX 데이터 파티션 |
09시 |
Coherent file system
[Coherent was a UNIX like Operating System for the 286-386-486 systems, marketed by Mark Williams Company led by Bob Swartz. It was renowned for its good documentation. It was introduced in 1980 and died 1 Feb 1995. The last versions are V3.2 for 286-386-486 and V4.0 (May 1992, using protected mode) for 386-486 only. It sold for $99 a copy and it is rumored that 40000 copies have been sold. A Coherent partition has to be primary. ] |
09H |
QNX 1.x and 2.x ("qnz" according to QNX Partitions) |
0aH |
OS/2 Boot Manager
(OS/2 is the operating system designed by Microsoft and IBM to be the successor of MS-DOS) |
0aH |
Coherent swap partition |
0aH |
OPUS
(Open Parallel Unisys Server) |
0bH |
WIN95 OSR2 32-bit FAT
(OSR2 stands for Microsoft’s “OEM Service Release 2”. It is for Partitions up to 2047GB. Almost always, Windows 95/98/ME have the same File system which is FAT-32, within the same partitions limits) |
0cH |
LBA-mapped WIN95 OSR2 32-bit FAT
(It is using Logical Block Addressing – mode of Interrupt 13H extensions therefore we can say that this is the Extended INT 13H equivalent of 0BH. Almost always, Windows 95/98/ME have the same File system which is FAT-32, within the same partitions limits) |
0eH |
LBA-mapped WIN95: DOS 16-bit FAT or Logical Block Addressable VFAT
(It is same as 06H but using LBA-mode of INT 13H) |
0fH |
LBA-mapped WIN95: Extended partition or Logical Block Addressable VFAT
(It is same as 05H but using LBA-mode of INT 13H. Windows 95 uses 0EH and 0FH as the extended INT13H equivalents of 06H and 05H. Windows NT does not recognize the four Windows 95/98/ME types 0BH, 0CH, 0EH and 0FH) |
10H |
OPUS
(Octal Program Updating System) |
11H |
Hidden DOS 12-bit FAT or OS/2 Boot Manager hidden 12-bit FAT partition or DOS Seen From OS/2 (When OS/2 Boot manager boots a DOS partition, it will hide all primary DOS partitions except the one that is booted, by changing its ID and 01H, 04H, 06H and 07H becomes 11H, 14H, 16H and 17H, respectively. |
12H |
Compaq Configuration/diagnostics partition
(It is used by Compaq for their configuration utility partition. It is a FAT-compatible partition that boots into their utilities, and can be added to a LILO menu as if it were MS-DOS. ) |
14H |
(Hidden DOS 16-bit FAT or OS/2 Boot Manager Hidden DOS 16-bit FAT) <32M Partition
(Partition size is less than 32M. ID 14H is resulted from using Novell DOS 7.0 FDISK to delete Linux Native partition. ) |
15H |
Hidden DOS-Extended |
16H |
(Hidden DOS 16-bit FAT or OS/2 Boot Manager hidden 16-bit FAT ) >=32M Partition |
17H |
OS/2 Boot Manager hidden HPFS partition or Hidden IFS (e.g., HPFS) |
17H |
Hidden NTFS partition |
18H |
AST SmartSleep Partition or AST special Windows swap file ("Zero-Volt Suspend" partition)
[AST Research, Inc. (named from first initials of the founders, Albert Wong, Safi Qureshey and Thomas Yuen). Ascentia laptops have a “Zero – Volt Suspend Partition” or `SmartSleep Partition' of size 2MB+memory size.] |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
19H |
Willowtech Photon COS
(Code 19H is Claimed for Willowtech Photon COS by Willow Schlanger. |
1bH |
Hidden WIN95 OSR2 32-bit FAT or Hidden Windows 95 FAT32 Partition |
1cH |
LBA-mapped Hidden WIN95 OSR2 32-bit FAT
(It is hidden Windows95 FAT32 partition using LBA-mode of INT 13H Extensions) |
1eH |
LBA-mapped Hidden WIN95 16-bit FAT or Hidden LBA VFAT partition |
1FH |
LBA mapped Hidden WIN95 Extended or Hidden Extended LBA VFAT Partition |
20H |
OFSI
(Willowsoft Overture File System ) |
21H |
Officially listed as Reserved
(HP Volume Expansion, SpeedStor variant.) |
21H |
FSO2
(Claimed for FSO2 (Oxygen File System) by Dave Poirier) |
22H |
FSO2 확장 파티션
(Dave Poirier가 산소 확장 파티션이라고 주장) |
23시 |
공식적으로 예약됨으로 표시됨 |
24시간 |
NEC DOS 3.x |
26시간 |
공식적으로 예약됨으로 표시됨 |
31시 |
공식적으로 예약됨으로 표시됨 |
32시간 |
NOS (네트워크 운영 체제)
( 32H는 호주 멜버른에 있는 Alien Internet Services에서 개발 중인 운영 체제 NOS에서 사용되고 있습니다. 32H라는 ID가 선택된 이유는 남아 있는 몇 안 되는 것 중 하나일 뿐만 아니라 32k가 원래 이 OS가 목표로 삼았던 EEPROM의 크기이기 때문입니다. |
33시간 |
공식적으로 예약됨으로 표시됨 |
34시간 |
공식적으로 예약됨으로 표시됨 |
35시간 |
OS/2 또는 eCS의 JFS
[ 35H 는 OS/2 Warp Server for e-Business, OS/2 Convenience Pack(버전 4.5라고도 함) 및 eComStation(eCS, OS/2 Convenience Pack의 OEM 버전)에서 JFS(IBM AIX 저널링 파일 시스템)의 OS/2 구현을 위해 사용됩니다.] |
36시간 |
공식적으로 예약됨으로 표시됨 |
38시간 |
THEOS v3.2(2GB 파티션) |
39시간 |
플랜 9 파티션
( Plan 9는 Bell Labs에서 다양한 아키텍처를 위해 개발한 운영 체제입니다. 원래 Plan 9는 디스크 끝에 할당되지 않은 부분을 사용했습니다. Plan 9의 3번째 에디션에서는 39H 유형의 파티션을 사용하며, 이는 파티션의 두 번째 섹터에 있는 Plan 9 파티션 테이블 에 설명된 하위 파티션으로 세분화되었습니다 .) |
39시간 |
THEOS v4 스팬 파티션 |
3aH |
THEOS v4(4GB 파티션) |
3bH |
THEOS v4 확장 파티션
( THES는 1983년 티모시 윌리엄스가 설립한 PC용 다중 사용자 멀티태스킹 운영 체제입니다.) |
3CH(3차) |
PartitionMagic 복구 파티션
( Partition Magic 이나 Drive Image 와 같은 PowerQuest 제품이 디스크를 변경할 때는 운영 체제가 디스크를 수정하지 못하도록 먼저 유형 플래그를 3CH로 변경합니다. 프로세스가 끝나면 원래 상태로 다시 변경됩니다. 따라서 3CH 유형 플래그를 볼 수 있는 유일한 경우는 전원이 꺼지거나 사용자가 재부팅하는 등 프로세스가 어떤 식으로든 중단된 경우입니다. 파티션 테이블 편집기나 디스크 편집 프로그램을 사용하여 수동으로 원래대로 변경하면 대부분의 경우 문제가 없습니다.) |
3dH |
숨겨진 NetWare |
40시간 |
Venix 80286
(PC용 유닉스 계열의 매우 오래된 운영체제입니다.) |
41시간 |
Linux/MINIX(DR-DOS와 디스크 공유)
(DR-DOS는 Digital Research-Disk Operating System의 약자입니다.) |
41시간 |
개인 RISC 부트 |
41시간 |
PPC PReP(Power PC 참조 플랫폼) 부트 파티션 |
42시간 |
Linux 스왑(DR-DOS와 디스크 공유) |
42시간 |
SFS(Secure File System)
( SFS는 Peter Gutmann이 작성한, 386대 이상의 PC에서 사용되는 DOS용 암호화된 파일 시스템 드라이버입니다.) |
파일 시스템 표시기 바이트(16진수) |
파티션/파일 시스템 설명 |
42시간 |
Windows 2000 동적 확장 파티션 마커 ( 레거시 파티션 테이블에 42H
유형의 파티션 테이블 항목이 있는 경우 Windows 2000은 레거시 파티션 테이블을 무시하고 독점 파티션 테이블과 독점 파티셔닝 구성(LDM 또는 DDM)을 사용합니다. 하드 링크된 파티션이 없는 순수 동적 디스크는 전체 디스크를 정의하기 위해 단일 파티션 테이블 항목인 42H 유형만 있습니다 . 동적 디스크는 각 동적 디스크의 끝에 있는 1MB 개인 영역에 있는 데이터베이스에 볼륨 구성을 저장합니다.) |
43시간 |
Linux 네이티브(DR-DOS와 디스크 공유) |
44시간 |
GoBack 파티션
( GoBack 은 디스크에 대한 변경 사항을 기록하여 이전 상태를 보거나 돌아갈 수 있는 유틸리티입니다. 디스크 관리자처럼 디스크 I/O를 담당하고 로그를 자체 파티션에 저장합니다.) |
45시간 |
Boot-US 부트 관리자
( Boot-US(Ulrich Straub) 부트 관리자는 MBR, 별도의 기본 파티션 또는 디스켓에 설치할 수 있습니다. 기본 파티션에 설치되는 경우 이 파티션의 ID는 45H 입니다 . 이 파티션은 파일 시스템을 포함하지 않고 부트 관리자만 포함하며 단일 실린더(8.4GB 이하)를 차지합니다.) |
45시간 |
곧장 |
45시간 |
EUMEL/공지사항 |
46시간 |
EUMEL/공지사항 |
47시간 |
EUMEL/공지사항 |
48시간 |
EUMEL/Elan
( EUMEL , 나중에 Ergos L3 로 알려짐 , GMD의 Jochen Liedtke가 Elan 프로그래밍 언어를 사용하여 개발한 다중 사용자 멀티태스킹 시스템입니다 . 독일 학교에서 컴퓨터 과학 교육을 위해 사용되었습니다.) |
4aH |
아다오스 아퀼라 |
4aH |
DOS용 ALFS/THIN 경량 파일 시스템 |
4CH(4차) |
오베론 파티션 |
4dH |
QNX4.x |
4eH |
QNX4.x 2번째 파티션 |
4fH |
QNX4.x 3번째 파티션
( QNX 는 POSIX ( Portable Operating System Interface for Unix ) 인증을 받은, 마이크로커널, 분산, 내결함성 운영 체제로 386 이상에서 사용 가능하며 임베디드 애플리케이션의 386EX 지원이 포함됩니다.) |
4fH |
Oberon 부팅/데이터 파티션 |
50시간 |
OnTrack Disk Manager(이전 버전), Read-Only Partition ( Disk Manager는 DOS에서 504MB보다 큰 IDE 디스크를 사용할 수 있도록 하는 OnTrack 프로그램입니다 . 1.3.14 이전의 Linux 커널 버전은 DM과 공존할 수 없습니다.) |
50시간 |
Lynx RTOS(실시간 운영 체제)
( Lynx RTOS를 사용하면 SCSI와 IDE 드라이브에 각각 2GB 크기의 파티션을 최대 14개까지 배치하여 총 28GB의 파일 시스템 공간을 확보할 수 있습니다.) |
50시간 |
원주민 오베론 |
51시간 |
OnTrack Disk Manager(DM6.0 Aux1) , 읽기/쓰기 파티션 |
51시간 |
노벨 |
52시간 |
CP/M |
52시간 |
Microport SysV/AT 또는 Microport System V/386 |
53시간 |
OnTrack Disk Manager(DM6.0 Aux3), 쓰기 전용 파티션 |
54시간 |
OnTrack Disk Manager 6.0 동적 드라이브 오버레이 |
55H |
EZ-Drive 파티션
( EZ-Drive 는 1992년 MicroHouse 에서 개발한 디스크 관리 프로그램과 유사합니다. 현재는 StorageSoft 에서 판매하고 있습니다 .) |
56시간 |
Golden Bow VFeature 분할 볼륨.
(이것은 또한 유틸리티 소프트웨어와 같은 디스크 관리자입니다. 이것은 비표준 DOS 볼륨입니다.) |
56시간 |
DM을 EZ-BIOS로 변환 |
57시간 |
DrivePro
( DrivePro는 1992년 MicroHouse 에서 개발했습니다. 현재는 StorageSoft 에서 판매하고 있습니다 .) |
57시간 |
VNDI 파티션 |
5cH |
Priam EDisk 분할 볼륨
( Priam EDisk 는 디스크 관리자 유형의 유틸리티 소프트웨어입니다. 이것은 비표준 DOS 볼륨입니다.) |
61시간 |
SpeedStor
( 저장 차원 SpeedStor 분할 볼륨. 비표준 DOS 볼륨입니다. 디스크 관리자 유형의 유틸리티 소프트웨어입니다.) |
63시간 |
Unix System V/386, 386/ix, SCO, ISC Unix, UnixWare, Mach, Mach의 MtXinu BSD 4.3, GNU Hurd |
64시간 |
노벨 넷웨어 286, 2.xx |
파일 시스템 표시기 바이트(16진수) |
파티션/파일 시스템 설명 |
64시간 |
PC-ARMOUR 보호 파티션
( 64H 는 Dr. A. Solomon이 개발한 PC-ARMOUR 디스크 보호 에서 사용되며 , 올바른 암호가 입력될 때까지 디스크에 접근할 수 없도록 유지하고 0-0-1이 요청되었을 때 CHS = 0-0-2를 보여주는 INT 13H 후크가 메모리 상단 위에 로드됨) |
65시간 |
Novell NetWare 3.86, 3.xx 또는 4.xx
( Novell Netware 3.0 이상 버전은 드라이브당 하나의 파티션을 사용합니다. 이러한 파티션 내부에 논리적 볼륨을 할당합니다. 볼륨은 여러 드라이브에 분할할 수 있습니다. 사용되는 파일 시스템은 Turbo FAT 라고 하며 DOS FAT 파일 시스템과 매우 모호하게 유사합니다. Novell Netware는 사용 가능한 주요 네트워크 운영 체제였습니다. Netware 68 또는 S-Net (1983)은 Motorola 68000용이었고 Netware 86은 Intel 8086 또는 8088용이었습니다. Netware 286은 Intel 80286용이었고 나중에 Netware 2.2 로 병합된 다양한 버전으로 존재했습니다 . Netware 386은 나중에 Netware 3.x (3.0, 3.1, 3.10, 3.11 및 3.12 등) 버전 으로 이름이 변경된 Intel 386용 C로 다시 작성된 것입니다 . 후속 버전인 Netware 4.xx 에는 버전이 있습니다. 4.00, 4.01, 4.02, 4.10, 4.11. 그런 다음 Intranetware가 등장했습니다.) |
66시간 |
Novell Netware SMS 파티션
( SMS 는 Storage Management Services의 약자입니다. 현재는 사용되지 않습니다.) |
67시간 |
노벨 |
68시간 |
노벨 |
69시간 |
Novell Netware 5+ 및 Novell Netware NSS 파티션
( NSS는 Novell Storage Services의 약자입니다.) |
70시간 |
DiskSecure 멀티부팅 |
71시간 |
공식적으로 예약된 것으로 표시됨 |
73시간 |
공식적으로 예약된 것으로 표시됨 |
74시간 |
공식적으로 예약된 것으로 표시됨 |
74시간 |
Scramdisk 파티션
( Scramdisk 는 디스크 암호화 소프트웨어입니다. 컨테이너 파일, 74H 유형의 전용 파티션 및 WAV 오디오 파일에 숨겨진 디스크를 지원합니다.) |
75시간 |
IBM PC/IX |
76시간 |
공식적으로 예약된 것으로 표시됨 |
77시간 |
M2FS/M2CS 파티션 |
77시간 |
QNX 4.x |
78시간 |
XOSL 파일 시스템
( XOSL 부트 로더 파일 시스템) |
78시간 |
QNY 4.x |
79시간 |
QNZ 4.x |
7EH |
고치다 |
7층 |
Alt-OS-개발 파티션 표준 |
80H |
이전 MINIX, MINIX v1.1 ~ v1.4a |
81H |
MINIX 1.4b 및 이후 버전
( MINIX 는 1989년에서 1991년 사이에 Andy Tanenbaum과 암스테르담 자유대학교 학생들이 작성한 유닉스 계열의 운영 체제입니다. PC(8086 이상), Macintosh, Atari, Amiga, Sparc에서 실행됩니다. |
81H |
초기 리눅스 |
81H |
Mitac 고급 디스크 관리자 |
82시간 |
초기 |
82시간 |
Solaris x86
( Solaris는 ID 82H 의 단일 파티션을 만든 다음 파티션 내의 Sun 디스크 레이블을 사용하여 추가로 분할합니다.) |
82시간 |
리눅스 스왑 파티션 |
83H |
Linux Native Partition 또는 Linux Native File System 또는 Linux Ext2fs
(Linux는 1991년부터 Linus Torvalds와 인터넷의 많은 다른 사람들이 작성한 Unix와 유사한 운영 체제입니다. PC 386 이상과 다양한 다른 하드웨어에서 실행됩니다. GPL(General Public License)에 따라 배포됩니다. xiafs, ext2, ext3, reiserfs 등 다양한 파일 시스템 유형은 모두 ID 83H를 사용합니다 .) |
84시간 |
OS/2 숨김 C: 드라이브 또는 OS/2-renumbered type 04 파티션.
( OS/2-renumbered type 04h 파티션은 DOS C: 드라이브 숨기기와 관련됨) |
84시간 |
최대 절전 모드 파티션
(MKS2D 유틸리티를 사용하는 Dell Latitude(Dell BIOS 포함) 등 다양한 노트북 모델에서 보고됨) |
85H |
Linux 확장 파티션 |
86H |
오래된 Linux RAID 파티션 슈퍼 블록 |
86H |
FAT16 볼륨/스트라이프 세트(Windows NT) 또는 NTFS 볼륨 세트
(레거시 장애 허용 FAT16 볼륨입니다.) |
87H |
HPFS 내결함성 미러링 파티션 또는 NTFS 볼륨 세트 또는 NTFS 볼륨/스트라이프 세트
(레거시 내결함성 NTFS 볼륨. HPFS 내결함성 미러링 파티션.) |
8아헤 |
Linux 커널 파티션
(AiR-BOOT에서 사용됨) |
파일 시스템 표시기 바이트(16진수) |
파티션/파일 시스템 설명 |
8비하 |
레거시 폴트 톨러런트 FAT32 볼륨 |
8cH |
BIOS 확장 INT 13H를 사용하는 레거시 장애 허용 FAT32 볼륨 . |
8dH |
Free FDISK 숨겨진 기본 DOS FAT12 파티션
( Free FDISK 는 FreeDOS 에서 사용하는 FDISK입니다 . 10진수 140 (8CH) 을 추가하여 01H , 04H , 05H , 06H , 0BH , 0CH , 0EH 및 0FH 유형을 숨깁니다 .) |
8eH |
Linux 논리 볼륨 관리자 파티션 |
90시간 |
FDISK 숨겨진 기본 DOS FAT16 파티션 해제 |
91시간 |
무료 FDISK 숨겨진 DOS 확장 파티션 |
92시간 |
무료 FDISK 숨김 기본 DOS 대용량 FAT16 파티션 |
93H |
숨겨진 Linux 네이티브 파티션 |
93H |
아메바 파일 시스템 |
94시간 |
아메바 불량 블록 테이블
(아메바는 1981년부터 Andy Tanenbaum이 Frans Kaashoek, Sape Mullender, Robert van Renesse 등과 함께 작성한 분산 운영 체제입니다. PC(386 이상), Sun3, Sparc, 68030에서 실행됩니다. 연구 및 교육 목적으로 대학에서 무료로 사용할 수 있습니다.) |
95H |
MIT EXOPC 네이티브 파티션 |
97H |
FDISK 숨겨진 기본 DOS FAT32 파티션 해제 |
98시간 |
무료 FDISK 숨겨진 기본 DOS FAT32 파티션(LBA) |
99시간 |
Mylex EISA SCSI 또는 DCE376 논리 드라이브 ( Mylex DCE376 EISA SCSI 어댑터가 드라이브의 1024 실린더를 넘어서는 파티션
에 사용함 ) |
9아하 |
FDISK 숨겨진 기본 DOS FAT16 파티션(LBA) 해제 |
9비하 |
무료 FDISK 숨겨진 DOS 확장 파티션(LBA) |
9fH |
BSD/OS |
아0H |
Phoenix NoteBIOS 전원 관리 "디스크에 저장" 파티션 또는 노트북 최대 절전 모드 파티션
( IBM Thinkpad , Phoenix NoteBIOS , Toshiba 등 다양한 노트북에서 제로 볼트 일시 중지 파티션, 일시 중지 디스크 파티션, 저장 디스크 파티션, 전원 관리 파티션 , 최대 절전 모드 파티션 이라는 이름으로 보고되며 , 일반적으로 디스크 영역의 시작 또는 끝에 있습니다.) |
에이1에이치 |
노트북 최대 절전 모드 파티션
(NEC 6000H 노트북에서 "디스크에 저장" 파티션으로 사용됨. A0H 및 A1H 유형은 Phoenix BIOS가 있는 시스템에서 사용됨 . Phoenix PHDISK 유틸리티가 이들과 함께 사용됨.) |
에이1에이치 |
HP 볼륨 확장(SpeedStor 변형) |
a3H |
공식적으로 예약됨으로 표시됨 |
에이4에이치 |
공식적으로 예약됨으로 표시됨 |
a5H |
BSD/386, 386BSD, NetBSD, FreeBSD
(386BSD는 1991년경 빌 졸리츠가 4.3BSD Net/2를 PC로 포팅한 유닉스 계열의 운영 체제입니다.) |
a6H |
OpenBSD
(Theo de Raadt가 이끄는 OpenBSD는 NetBSD에서 분리되었습니다. 보안을 강조합니다.) |
a7H |
NEXTSTEP
( NEXTSTEP은 Mach 2.6 과 Mach 3.0 의 기능을 기반으로 합니다 . 이는 진정한 객체 지향 운영체제이자 사용자 환경입니다. |
a8H |
Mac OS-X
( Apple의 OS-X는 파일 시스템 파티션에 이 유형을 사용합니다) |
a9H |
넷BSD |
아아 |
Olivetti Fat 12 1.44MB 서비스 파티션
(DOS 6.22와 파티션 테이블에서 06H 와 AAH 유형을 교환하는 유틸리티가 포함되어 있습니다.) |
아브히 |
Mac OS-X 부팅 파티션
(Apple의 OS-X(Darwin Intel)는 이 유형을 부팅 파티션으로 사용합니다.) |
아브히 |
GO!파티션 |
죽은 |
ShagOS 파일 시스템 |
byH |
ShagOS 스왑 파티션 |
비0H |
BootStar Dummy
(부트 관리자 BootStar는 최대 15개의 기본 파티션으로 구성된 자체 파티션 테이블을 관리합니다. MBR의 사용되지 않는 항목을 BootStar Dummy 값으로 채웁니다.) |
비1에이치 |
공식적으로 예약됨으로 표시됨 |
비3H |
공식적으로 예약됨으로 표시됨 |
비포에이치 |
공식적으로 예약됨으로 표시됨 |
b6H |
공식적으로 예약됨으로 표시됨 |
B6H |
Windows NT 미러 세트(마스터), FAT16 파일 시스템 |
b7H |
BSDI 파일 시스템(2차적으로 스왑), BSDI BSD/386 파일 시스템 |
B7H |
Windows NT 미러 세트(마스터), NTFS 파일 시스템 |
파일 시스템 표시기 바이트(16진수) |
파티션/파일 시스템 설명 |
비8H |
BSDI BSD/386 스왑 파티션(2차적으로 파일 시스템)
(BSDI(Berkeley Software Design, Inc.)는 전 CSRG(UCB Computer Systems Research Group) 멤버에 의해 설립되었습니다. Net/2에 기반한 운영 체제는 BSD/386이라고 불렸습니다.) |
BBH(비비에이치) |
부팅 마법사가 숨겨짐 |
잘 |
Solaris 8 부팅 파티션 |
씨0H |
DR-DOS/Novell DOS 보안 파티션 |
코히(COH) |
한국어: |
씨0H |
REAL/32 보안 소형 파티션 |
씨0H |
NTFT 파티션 |
c1H |
DR DOS 6.0 LOGIN.EXE 보안 12비트 FAT 파티션 |
c2H |
DR-DOS 7+용으로 예약됨 |
c2H |
숨겨진 리눅스 |
c3H |
숨겨진 리눅스 스왑 |
씨4에이치 |
DR DOS 6.0 LOGIN.EXE 보안 16비트 FAT 파티션 |
c5H |
DRDOS/보안(확장) |
c6H |
DRDOS/secured (FAT-16, >= 32M)
( DR-DOS 6.0은 LOGIN.EXE - 보안 파티션에 대한 파티션 유형에 C0H를 추가 하여 사용자가 MS-DOS 플로피에서 부팅하여 암호 확인을 피할 수 없도록 합니다. 그렇지 않으면 C1H , C4H , C5H , C6H 및 D1H , D4H , D5H , D6H 유형이 1H , 4H , 5H , 6H 와 정확히 마찬가지로 사용되는 것 같습니다 .) |
c6H |
손상된 FAT16 볼륨/스트라이프 세트(Windows NT) (NTFS는 장애 허용 세트의 비활성화된 부분에 대한 파티션 유형에 C0H를
추가합니다 . 따라서 C6H , C7H 유형을 얻습니다 .) |
c7H |
Windows NT가 NTFS 볼륨/스트라이프 세트를 손상시켰습니다. |
c7H |
시링크스 부츠 |
c8H |
공식적으로 예약됨으로 표시됨 |
c9H |
공식적으로 예약됨으로 표시됨 |
카하 |
공식적으로 예약됨으로 표시됨 |
씨비에이치 |
DR-DOS 보안 FAT32용으로 예약됨 |
씨씨씨 |
DR-DOS 보안 FAT32(LBA)용으로 예약됨 |
씨디에이치 |
CTOS 메모리 덤프 |
세흐 |
DR-DOS 보안 FAT16(LBA)용으로 예약됨 |
디0H |
REAL/32 보안된 대규모 파티션
(REAL/32는 DR 다중 사용자 DOS의 연속입니다.) |
디1에이치 |
오래된 다중 사용자 DOS 보안 FAT12 |
디포에이치 |
이전 다중 사용자 DOS 보안 FAT16 <32M |
디5H |
이전 다중 사용자 DOS 보안 확장 파티션 |
디6H |
이전 다중 사용자 DOS 보안 FAT16 >=32M |
디8에이치 |
CP/M-86 |
이미 |
비 FS 데이터 |
디비히 |
디지털 리서치 CP/M, 동시 CP/M, 동시 DOS |
디비히 |
CTOS(Convergent Technologies OS-Unisys) |
디비히 |
KDG Telemetry SCPU 부팅
(KDG Telemetry는 ID DBH를 사용하여 DT800 범위의 'x86 기반 SCPU(Supervisory CPU) 모듈에서 실행되는 코드의 보호 모드 바이너리 이미지를 저장합니다.) |
디디에이치 |
숨겨진 CTOS Memdump |
데히 |
Dell PowerEdge 서버 유틸리티(FAT) |
디에프에이치(dfH) |
DG/UX 가상 디스크 관리자 파티션 |
디에프에이치(dfH) |
BootIt EMBRM
(부트 관리자 BootIt은 최대 255개의 기본 파티션으로 구성된 자체 파티션 테이블을 관리합니다.) |
이오에이치 |
ST Microelectronics 에서 ST AVFS라는 파일 시스템을 위해 예약되어 있습니다. |
이1H |
DOS 액세스 또는 SpeedStor 12비트 FAT 확장 파티션
(1023개 이상의 실린더에 있는 SSTOR 파티션입니다.) |
이투에이치(E2H) |
DOS 읽기 전용 |
이3H |
저장 크기 |
이4H |
SpeedStor 16비트 FAT 확장 파티션 < 1024 실린더 |
이5H |
공식적으로 예약됨으로 표시됨 |
이5H |
논리적 섹터화 FAT를 갖춘 Tandy DOS |
이6H |
공식적으로 예약됨으로 표시됨 |
이비(ebH) |
BeOS BFS (BFS1)
( BeOS 는 Power PC에서 실행되는 운영 체제입니다) |
에드H |
Matthias Paul의 Sprytix를 위해 예약됨 |
여기요 |
이 레거시 MBR 뒤에 EFI 헤더가 따른다는 표시 |
만약H |
EFI 파일 시스템을 포함하는 파티션 |
f0H |
Linux/PA-RISC 부트로더 |
f1H |
저장 크기 |
f2h ... |
DOS 3.3+ 보조 파티션 |
f2h ... |
논리적 섹터화 FAT가 있는 Unisys DOS |
f3H |
공식적으로 예약됨으로 표시됨 |
f4h4h(에프포에이치) |
SpeedStor 대형 파티션 |
F4H |
프롤로그 단일 볼륨 파티션 |
파일 시스템 표시기 바이트(16진수) |
파티션/파일 시스템 설명 |
f5H |
프롤로그 다중 볼륨 파티션 ( F4H
유형 파티션은 볼륨 하나를 포함하고 있으며 더 이상 사용되지 않습니다. F5H 유형 파티션은 MD0 ~ MD9 라고 하는 볼륨을 1~10개 포함합니다 . 하나 이상의 시스템을 지원합니다. 각 볼륨은 NGF 파일 시스템이나 TwinFS 파일 시스템을 파일 시스템 으로 가질 수 있습니다 .) |
f6H |
공식적으로 예약됨으로 표시됨 |
F6H |
저장 크기 SpeedStor |
파흐 |
MandrakeSoft의 Bochs x86 에뮬레이터 |
피비에이치 |
VMware 파일 시스템 파티션 |
에프씨에이치 |
VMware 스왑 파티션
(VMware는 Linux , Windows , FreeBSD를 실행할 수 있는 가상 머신을 제공합니다 .) |
fdH |
지속적인 슈퍼 블록을 사용하여 자동 감지 기능이 있는 Linux RAID 파티션 |
페흐 |
SpeedStor 1024개 이상의 실린더 |
페흐 |
랜스텝 |
페흐 |
IBM PS/2 IML(Initial Microcode Load) 파티션
(디스크 끝에 위치) |
페흐 |
Windows NT 디스크 관리자의 숨겨진 파티션 (Windows NT 디스크 관리자는 숨겨진 파티션(즉, 존재하지만 액세스할 수 없는 파티션)을 FEH
유형으로 표시합니다 .) |
페흐 |
Linux 논리 볼륨 관리자 파티션(이전) |
ffH |
XENIX 불량 블록 테이블 |
DOS 부트 레코드(DBR) / DOS 부트 섹터
파티션 테이블 다음으로 DOS 부트 레코드(DBR) 또는 때때로 DOS 부트 섹터라고도 하는 것은 하드 드라이브에서 두 번째로 중요한 정보입니다. 디스크 복구를 위한 대부분의 상용 애플리케이션은 파괴된 부트 레코드를 재생성할 수 있습니다.
하드 디스크의 첫 번째 파티션에 대한 DOS 부트 레코드(DBR)는 일반적으로 절대 섹터 63(디스크 드라이브의 64번째 섹터)에 있으며, CHS 형태로는 대부분의 드라이브의 경우 C–H–S = 0–1–1이라고 할 수 있습니다.
그러나 이 위치는 드라이브의 SPT(트랙당 섹터)에 따라 다를 수 있습니다. 예를 들어, 31개의 SPT만 있는 오래된 245MB 드라이브에서 부트 레코드는 32번째 섹터(절대 섹터 31)에 위치했습니다.
DBR은 DOS의 FORMAT 명령으로 생성됩니다. 이 프로그램은 DOS 플로피 디스크(또는 일부 OS 제한에 따라 다른 볼륨에서 직접)에서 실행하여 FDISK 명령을 사용하여 분할이 완료된 후 DBR을 생성할 수 있습니다.
DBR이 있는 섹터는 DOS의 해당 파티션의 논리적 섹터 1이 됩니다. DOS에서 사용하는 섹터 번호는 DBR이 있는 물리적 섹터에서 시작합니다.
각 DOS 파티션의 첫 번째 논리적 섹터에는 DOS 부트 레코드(DBR) 또는 DOS 부트 섹터가 포함됩니다. DBR의 역할은 하드 디스크 드라이브에서 컴퓨터의 주 메모리로 운영 체제를 로드하고 로드된 프로그램에 시스템 제어권을 부여하는 것입니다.
이를 위해 DBR에는 마스터 부트 레코드(MBR) 실행 프로그램에서 실행되는 작은 프로그램이 들어 있습니다. 모든 DOS 파티션에는 컴퓨터를 부팅하는 프로그램 코드가 들어 있습니다. 즉, 운영 체제를 로드하지만 해당 파티션만 마스터 부트 레코드에서 제어권을 부여받습니다. 마스터 부트 레코드는 파티션 테이블 항목에서 활성 파티션으로 지정됩니다.
DBR의 부트 프로그램은 파티션의 루트 디렉토리에서 두 개의 프로그램 파일 IBMBIO.COM 또는 IO.SYS와 IBMDOS.COM 또는 MSDOS.SYS를 찾습니다. IBMBIO.COM과 IBMDOS.COM은 PC-DOS 시스템 또는 원래 IBM 시스템의 두 개의 숨겨진 시스템 프로그램 파일입니다. 반면 IO.SYS와 MSDOS.SYS는 IBM 호환 시스템과 함께 제공되는 MS-DOS 운영 체제의 두 개의 숨겨진 시스템 프로그램 파일입니다.
그 후, IO.SYS(또는 IBMBIO.COM) 프로그램은 MSDOS.SYS(또는 IBMDOS.COM) 프로그램과 COMMAND.COM 프로그램을 로드합니다. 이 전체 프로세스를 컴퓨터의 "부팅"이라고 합니다. 이러한 시스템 파일을 디렉토리에서 사용할 수 없는 경우 이 MBR 프로그램은 다음과 같은 안심시키는 오류 메시지를 표시합니다.
“잘못된 시스템 디스크 또는 디스크 I/O 오류,
디스크를 교체한 후 아무 키나 누르세요…”
화면에서 사용자가 위에 언급된 프로그램이 담긴 부팅 디스크를 플로피 드라이브에 넣고 키를 누를 때까지 기다립니다.
플로피 디스크에는 파티션이 없기 때문에 절대 섹터 0에 MBR이나 마스터 파티션 테이블이 없습니다. 대신 첫 번째 섹터에 DBR이 있습니다.
다음 표는 FAT12 파일 시스템으로 포맷한 후의 3½ 인치, 1.44 MB 플로피 디스크 레이아웃에 대한 간단한 지도입니다. 부트 레코드, FAT 사본 두 개, 루트 디렉토리 및 데이터 영역 시작 부분이 있는 위치를 보여줍니다.
트랙당 18개 섹터, 80개 트랙, 양면, 섹터당 512바이트(클러스터당 1개 섹터 사용)를 갖고 FAT12 파일 시스템으로 포맷된 3½ 인치, 1.44MB 플로피 디스크의 논리적 맵입니다 . |
절대 섹터 |
내용물 |
0 |
부트 레코드 |
1 – 9 |
지방 1 |
10~18세 |
팻2 |
19 – 32 |
루트 디렉토리 |
33 – 2879 |
데이터 영역 |
데이터 영역에 하위 디렉토리를 만들고 그 안에 파일이 들어 있는 것처럼 보이게 할 수도 있습니다. 사실, 하위 디렉토리는 이 디렉토리 안에 들어 있는 것처럼 보이는 모든 파일과 각 파일에 대한 모든 관련 데이터(예: 각 파일의 시작 클러스터 위치, 날짜, 시간 및 파일 크기 등)를 나열하는 특수 파일에 불과합니다.
DBR에는 디스크 지오메트리에 대한 몇 가지 중요한 정보도 포함되어 있습니다. 이 정보는 다음과 같은 모든 파티션의 첫 번째 섹터에 있습니다.
- 점프 코드 + NOP
- OEM 이름 및 버전
- 섹터당 바이트
- 클러스터당 섹터
- 예약된 섹터
- FAT 사본 수
- 최대 루트 디렉토리 항목(FAT32에서는 사용할 수 없음)
- 32MB보다 작은 파티션의 섹터 수(따라서 FAT32에서는 사용할 수 없음)
- 미디어 설명자(하드 디스크의 경우 F8h)
- FAT당 섹터(이전 FAT 시스템에서는 사용 불가능, FAT32에서는 사용 불가능)
- 트랙당 섹터
- 머리의 수
- 파티션의 숨겨진 섹터 수
- 파티션의 섹터 수
- FAT당 섹터 수
- FAT 정보 설명자 플래그
- FAT32 드라이브 버전
- 루트 디렉토리 시작의 클러스터 번호
- 파일 시스템 정보 섹터의 섹터 번호
- 백업 부트 섹터의 섹터 번호
- 예약된
- 파티션의 논리 드라이브 번호
- 확장된 서명(29H)
- 파티션의 일련 번호
- 파티션의 볼륨 이름
- FAT 이름
- 실행 가능한 코드
- 실행 가능한 마커 또는 매직 넘버(AAH 55H)
DBR의 처음 3바이트에는 정보를 건너뛰고 확장을 가능하게 하는 JMP 명령어가 들어 있는데, 이는 MBR이 이 섹터를 메모리에 로드하고 실행을 여기로 전송하기 때문입니다. 일반적으로 이 3바이트는 E9 XX XX(16진수) 또는 EB XX 90(16진수)과 같은 형식의 16진수입니다.
초기 JMP 명령 OEM ID 다음에 오는 8비트 필드는 Microsoft에서 OEM 식별을 위해 예약한 것입니다. OEM ID는 부트 레코드를 만든 프로그램을 설명합니다. 이는 종종 Windows 95/98/ME의 경우 "MSWIN4.0" , OS/2의 경우 "IBM 20.0" , MS-DOS 4.0 이상의 경우 "MSDOS5.0" 입니다.
부트 섹터의 세 번째 주요 구성 요소는 BIOS 매개변수 블록(BPB)입니다. 디스크 매개변수 블록은 DOS에 매우 중요한 데이터 영역입니다. DOS가 다음을 찾는 데 도움이 됩니다.
- 섹터당 바이트
- 클러스터당 섹터
- 예약된 섹터
- FAT의 수
- 루트 디렉토리 항목 수
FAT32 DOS 부트 레코드 형식 |
오프셋 |
설명 |
크기 |
00시 |
점프 코드 + NOP |
3바이트 |
03시 |
OEM 이름 및 버전 |
8바이트 |
0비에이치 |
섹터당 바이트 |
2바이트 |
0DH |
클러스터당 섹터 |
1바이트 |
0EH |
예약된 섹터 |
2바이트 |
10시간 |
FAT 사본 수 |
1바이트 |
11시 |
최대 루트 디렉토리 항목(FAT32에서는 사용할 수 없음) |
2바이트 |
13시 |
32MB보다 작은 파티션의 섹터 수(따라서 FAT32에서는 사용할 수 없음) |
2바이트 |
15시 |
미디어 설명자(하드 디스크의 경우 F8H) |
1바이트 |
16시간 |
FAT당 섹터(이전 FAT 시스템에서는 사용 불가능, FAT32에서는 사용 불가능) |
2바이트 |
18시 |
트랙당 섹터 |
2바이트 |
1AH |
머리의 수 |
2바이트 |
1채널 |
파티션의 숨겨진 섹터 수 |
4바이트 |
20시간 |
파티션의 섹터 수 |
4바이트 |
24시간 |
FAT당 섹터 수 |
4바이트 |
28시간 |
플래그(비트 0-4는 활성 FAT 복사를 나타냄)(비트 7은 FAT 미러링이 활성화되었는지 비활성화되었는지 나타냄 <Clear는 활성화됨>)(FAT 미러링이 비활성화된 경우 FAT 정보는 비트 0-4로 표시된 복사본에만 기록됨) |
2바이트 |
2AH |
FAT32 드라이브 버전(상위 바이트 = 주 버전, 하위 바이트 = 부 버전) |
2바이트 |
2채널 |
루트 디렉토리 시작의 클러스터 번호 |
4바이트 |
30시간 |
파일 시스템 정보 섹터의 섹터 번호(파티션 시작 부분에서 참조) |
2바이트 |
32시간 |
백업 부트 섹터의 섹터 번호(파티션 시작 부분에서 참조) |
2바이트 |
34시간 |
예약된 |
12바이트 |
40시간 |
파티션의 논리 드라이브 번호 |
1바이트 |
41시간 |
사용되지 않음(이전 항목의 상위 바이트일 수 있음) |
1바이트 |
42시간 |
확장된 서명(29H) |
1바이트 |
43시간 |
일련 번호 또는 32비트 바이너리 파티션 ID
(OS 자체에서 제공하는 32비트 바이너리 ID) |
4바이트 |
47시간 |
파티션의 볼륨 이름 |
11바이트 |
52시간 |
FAT 이름(이 경우 FAT32) |
8바이트 |
5AH |
실행 가능한 코드 |
420바이트 |
1페헤 |
실행 가능한 마커 또는 매직 넘버(AAH 55H) |
2바이트 |
- 논리 볼륨의 총 섹터(소형, 논리 볼륨 크기가 32MB 이하인 경우)
- 미디어 설명자 바이트
- FA당 섹터 수
이 정보는 FAT 및 기타 중요한 값의 위치를 찾는 데 도움이 됩니다. 여기에 잘못된 정보를 입력하거나 이러한 값을 손상시키면 하드 디스크 드라이브에서 부팅이 불가능합니다. 때로는 디스크 매개변수 블록에 잘못된 정보가 있으면 하드 디스크 드라이브와 플로피 디스크 드라이브에서 부팅이 되지 않습니다.
섹터당 바이트는 거의 항상 512입니다. 그렇지 않은 경우에는 2의 정수 거듭제곱이어야 합니다(예: 64, 128, 256).
클러스터당 섹터 수는 클러스터 크기에 따라 달라집니다. (이 장에서 앞서 언급한 클러스터 섹션 참조). FAT 사본 수는 거의 항상 2입니다.
루트 디렉토리 수: 파일 시스템과 볼륨 크기에 따라 다릅니다. (앞서 주어진 파일 시스템 제한과 다음에 주어진 루트 디렉토리 설명을 참조하세요).
총 섹터 수: 숨겨진 섹터는 제외합니다. BPB에서 0이면 확장 부트 레코드 정보의 필드가 사용되고 그 반대의 경우도 마찬가지입니다. 오프셋 26H에서 서명 바이트를 검사하여 확장 정보(DOS 4.0 이상)를 사용할 수 있는지 확인할 수 있습니다.
논리적 DOS 드라이브의 부트 섹터 이전의 모든 섹터는 '숨겨진' 섹터로 간주됩니다. DOS는 숨겨진 섹터를 해석하지 않습니다. 일반 플로피 드라이브에는 숨겨진 섹터가 0개 있습니다. 하드 드라이브 파티션에는 드라이브에서의 위치를 나타내는 숫자가 있습니다. 첫 번째 실린더의 첫 번째 헤드 전체는 일반적으로 파티션 테이블에 예약되어 있지만 실제로 사용되는 것은 첫 번째 섹터뿐입니다.
미디어 설명자: 미디어 또는 디스크 유형을 나타내는 데 사용됩니다. 일반 값은 확장 DOS 파티션의 경우 0이고 하드 드라이브의 경우 F8H입니다. 미디어 설명자 바이트 값은 다음 표에 나와 있습니다.
미디어 설명자 |
유형 |
용량 |
크기와 유형 |
F0H |
2.88MB |
3.5", 양면, 트랙당 36개 섹터 |
F0H |
1.44MB |
3.5", 양면, 트랙당 18개 섹터 |
F9H |
720KB |
3.5", 양면, 트랙당 9개 섹터 |
F9H |
1.2MB |
5.25", 양면, 트랙당 15개 섹터 |
FDH |
360킬로바이트 |
5.25", 양면, 트랙당 9개 섹터 |
FFH |
320킬로바이트 |
5.25", 양면, 트랙당 8개 섹터 |
FCH |
180킬로바이트 |
5.25", 단면, 트랙당 9개 섹터 |
페흐 |
160킬로바이트 |
5.25", 단면, 트랙당 8개 섹터 |
F8H |
--------- |
고정 디스크 |
FAT 섹터 수: 계산해야 합니다. FAT 크기를 계산하는 방법은 해당 장에서 제공된 FAT 설명에 나와 있습니다.
FAT32 파일 시스템의 DBR은 다음 그림과 같습니다.
FAT의 분야
트랙당 섹터(또는 헤드당 섹터): 헤드당 섹터는 하나의 헤드로 그룹화된 섹터 수입니다. 마찬가지로 실린더당 헤드는 헤드당 실린더 수를 나타냅니다. 이 파티션이 CHS 파티션인 경우 이러한 값은 BIOS에서 반환된 값과 동일해야 합니다. 동일하지 않은 경우 디스크가 잘못 구성되었고 파티션을 사용할 수 없을 수 있음을 고려해야 합니다.
숨겨진 섹터: 이미 논의했듯이, 이것은 볼륨 시작 부분, 부트 섹터 자체보다 앞선 물리적 디스크의 섹터 수입니다. 부트 시퀀스 중에 루트 디렉토리와 데이터 영역에 대한 절대 오프셋을 계산하는 데 사용됩니다. 이 파티션의 시작 부분과 파티션 테이블 자체 사이의 섹터 수라고 생각하면 됩니다.
이 필드는 파티션 테이블의 "파티션 앞의 섹터 수"와 동일해야 합니다. 2차 파티션이 존재할 수 있으므로 반드시 첫 번째 섹터의 물리적 LBA 주소가 아니라는 점에 유의하세요.
숨겨진 섹터가 파티션 테이블과 동일하지 않으면 부트 섹터가 손상되어 파티션을 사용할 수 없다고 생각할 수 있습니다. 또한 상위 단어는 일반적으로 이전 버전의 DOS에서 가비지를 포함합니다.
부트 섹터가 손상되었다고 의심되는 경우 위에 나열된 여러 필드를 검사하여 나열된 값이 의미가 있는지 확인할 수 있습니다.
예를 들어, 섹터당 바이트는 대부분의 경우 512가 됩니다. 또한 디스크를 포맷한 운영 체제에 적합한 부트 섹터의 실행 코드 섹션에서 텍스트 문자열을 볼 수 있습니다.
예를 들어, MS-DOS에서 포맷한 FAT 볼륨의 일반적인 텍스트 문자열은 다음과 같습니다. "잘못된 시스템 디스크입니다.", "디스크 I/O 오류입니다.", "디스크를 교체한 다음 아무 키나 누르세요.", "비시스템 디스크 또는 디스크 오류입니다.", "교체하고 준비가 되면 아무 키나 누르세요." 및 "디스크 부팅 실패입니다." Windows NT에서 포맷한 FAT 볼륨의 텍스트 문자열은 다음과 같습니다. "BOOT: NTLDR을 찾을 수 없습니다(또는 찾을 수 없습니다)", "디스크를 읽는 중 I/O 오류가 발생했습니다." 및 "다른 디스크를 삽입하세요."
하지만 이 목록이 모든 것을 포함하는 것은 아니라는 점을 기억하세요. 부트 섹터에서 다른 메시지를 발견했다고 해서 반드시 부트 섹터에 문제가 있다는 것을 나타내는 것은 아닙니다. MS-DOS와 Windows NT의 다른 버전은 부트 섹터에 약간 다른 메시지 문자열이 있는 경우가 있습니다.
반면, 아무런 텍스트도 발견되지 않거나 텍스트가 MS-DOS나 Windows NT와 명백히 관련이 없다면 부트 섹터가 바이러스에 감염되었거나 다른 형태의 데이터 손상이 발생했을 가능성을 고려해야 합니다.
바이러스에 감염된 부트 섹터를 복구하려면 일반적으로 상용 바이러스 백신 프로그램을 사용하는 것이 가장 좋습니다. 많은 바이러스와 트로이 목마는 부트 섹터에 데이터를 쓰는 것 이상의 일을 하므로 부트 섹터를 수동으로 복구하는 것은 권장되지 않습니다. 바이러스나 트로이 목마를 완전히 제거하지 못할 수 있으며 어떤 경우에는 이롭기보다 해로울 수 있기 때문입니다. 그러나 이 책의 프로그래밍 섹션에서 DBR을 다룰 것입니다.
부트 섹터가 다른 이유로 손상되었을 것으로 의심되는 경우, 위에서 설명한 필드를 수동으로 수정하여 드라이브를 다시 포맷하지 않고도 부트 섹터 손상에서 복구할 수 있습니다. 이 책에서는 복구 프로그래밍 기법을 통해 프로그래밍으로 이러한 문제를 극복하려고 노력할 것입니다.
파일 할당 테이블(FAT)
DBR 다음은 파일 할당 테이블입니다. 파일 할당 테이블(FAT)은 1977년에 Microsoft 독립형 Disk Basic의 플로피 디스크에 데이터를 저장하기 위해 도입되었습니다. FAT는 확장되는 요구에 맞게 여러 번 수정되었습니다. 이동식 및 고정 미디어 모두에서 데이터를 관리하기 위한 빠르고 유연한 시스템의 요구 사항을 충족하도록 개발되었습니다.
1996년에 FAT32가 Windows 95 OSR2와 함께 도입되었습니다. 앞서 논의했듯이 Windows 98/ME는 하드 드라이브 크기의 FAT32를 지원합니다. 이제 이러한 운영 체제에서는 FAT32 파일 시스템이 일반적으로 사용됩니다.
첫 번째 DOS FAT 파일 시스템(DOS 1.x)은 오늘날에도 플로피 디스크에 사용되고 있는 12비트 FAT 시스템을 사용했습니다. DOS 2.x는 하드 디스크에 대한 지원을 추가했고, 볼륨이 더 커졌기 때문에 16비트 FAT 항목으로 전환했습니다.
1987년경에 DOS 4.0은 우리가 이미 파일 시스템의 한계에 대해 논의했듯이 대용량 디스크 지원 문제를 극복하기 위해 저수준 섹터 처리를 32비트 매개변수를 사용하도록 변경했습니다.
FAT는 디스크 드라이브의 전체 표면에 대한 맵을 유지하여 어느 영역이 비어 있고, 어느 영역이 손상되었고, 어느 영역이 어떤 파일에 의해 사용되고 있는지 등을 파악합니다. 디스크 표면에 저장된 데이터에 액세스해야 할 때 DOS는 FAT를 참조하여 데이터가 들어 있는 하드 디스크 표면 영역을 찾습니다.
사용할 FAT의 유형은 하드 디스크 드라이브의 파티션 중에 FDISK 프로그램에 의해 결정됩니다. 그러나 실제 FAT는 DOS의 FORMAT 프로그램에 의해 작성됩니다.
FAT는 디스크 표면의 모든 섹터를 추적하지 않고 대신 "클러스터" 또는 "할당 단위"라고 하는 섹터 그룹으로 디스크 영역을 관리합니다(같은 장에서 앞서 설명한 클러스터 참조).
클러스터는 DOS가 파일에 할당하는 하드 디스크 드라이브 공간의 가장 작은 단위로, 드라이브 크기에 따라 하나 이상의 섹터로 구성됩니다. 클러스터 크기는 하드 디스크 드라이브의 하이 레벨 포맷 중에 DOS FORMAT 프로그램에 의해 결정되고 고정됩니다. (앞서 제공된 "클러스터 크기" 논의 참조)
실제로 FAT는 전체 볼륨의 클러스터 인덱스입니다. FAT에는 각 클러스터에 대한 항목이 하나씩 있습니다. FAT의 처음 두 항목에는 FAT에 대한 정보가 들어 있습니다. FAT의 세 번째 및 그 이후 항목은 디스크 공간의 클러스터에 할당되며, 파일이 사용할 수 있는 첫 번째 클러스터부터 시작합니다.
FAT는 매우 중요한 항목이므로 DOS는 FAT 사본 두 개, 즉 기본 FAT 또는 FAT1과 보조 FAT 또는 FAT2를 보관합니다(일반적으로 사본이 두 개이지만 많은 새로운 운영 체제는 FAT 사본을 두 개 이상 만듭니다).
각 FAT는 디스크의 인접한 섹터를 차지하며, 첫 번째 FAT 바로 뒤에 두 번째 FAT가 있어도 DOS가 두 번째 FAT를 사용하여 문제를 수정하지 않습니다. 대신 첫 번째 FAT가 업데이트되면 DOS가 이를 두 번째 FAT에 복사하는데, 이 과정에서 두 번째 FAT도 손상됩니다.
이 업데이트는 DOS가 1번째와 2번째 FAT가 일치하지 않는다는 것을 발견할 때마다 수행됩니다. 따라서 1번째 FAT가 손상된 경우 디스크 편집 소프트웨어를 사용하여 1번째 FAT를 2번째 FAT와 비교하여 즉시 복구해야 합니다. 이는 DOS가 손상된 FAT를 2번째 FAT에 복사하기 전에 수행해야 합니다.
FAT32가 도입되면서 FAT 항목과 섹터 번호가 모두 32비트가 되었습니다. 즉, 섹터당 512바이트로 곱해진 4,294,967,296개의 고유한 32비트 값이 있으며, FAT32에서 가능한 최대 디스크 크기는 2테라바이트(2,199,023,255,552바이트)입니다.
FAT 32의 각 파일에 대한 디렉토리 항목의 크기는 FAT16에서 필요한 2바이트가 아닌 파일의 시작 클러스터 값을 포함하는 4바이트입니다. 값이 클수록 가능한 클러스터 수가 더 많아집니다.
전통적으로 각 디렉토리 항목은 32바이트 레코드이며, 이는 동일하게 유지됩니다. 디렉토리 레코드의 중간에는 Microsoft가 자체적으로 나중에 사용하기 위해 예약한 10바이트(바이트 12~21)가 있습니다. 이 중 2바이트는 이제 FAT32에서 시작 클러스터를 지정하는 데 필요한 추가 바이트를 수용하는 데 사용됩니다.
이미 논의했듯이 FAT에는 12비트, 16비트, 32비트 버전이 있습니다. 32비트 FAT는 훨씬 더 효율적인 저장을 허용하여 최대 30% 더 효율적일 수 있으며 더 큰 하드 드라이브를 사용할 수 있습니다.
운영 체제의 파일 시스템이 프로그램에서 파일 내용을 찾기 위해 호출되면 해당 파일의 디렉토리 항목에 있는 첫 번째 클러스터 값이 읽혀져 FAT 체인을 찾는 데 사용됩니다. FAT 체인은 파일에 속하는 데이터가 포함된 클러스터 목록입니다.
FAT32 드라이브 레이아웃 |
오프셋 |
설명 |
파티션 시작 |
부트 섹터 |
파티션 시작 + 예약된 섹터 수 |
FAT 테이블 |
파티션 시작 + 예약된 섹터 수 + (FAT당 섹터 수 * 2)
[FAT 미러링이 활성화되어 있다고 가정하면 이는 거의 항상 사실입니다.] |
루트 디렉토리 |
파티션 시작 + 예약된 섹터 수 + (FAT당 섹터 수 * 2) + 루트 디렉토리의 섹터 수 |
데이터 영역 |
FAT 항목에는 다음을 나타내는 값이 포함될 수 있습니다.
- 주어진 파일에 대한 FAT 체인의 다음 클러스터
- 자유 클러스터, 즉 어떤 파일에서도 사용되지 않는 클러스터
- 불량 섹터에 대한 정보, 즉 물리적으로 손상되어 사용해서는 안 되는 하나 이상의 섹터가 포함된 클러스터입니다.
- 파일의 최종 클러스터
FAT 테이블 항목 |
숫자(16진수) |
설명 |
0 |
무료 클러스터 |
???? |
클러스터 사용 중, 체인의 다음 클러스터 |
FF0-FF6 / FFF0-FFF6 |
클러스터가 예약되었습니다 |
FF7 /FFF7 |
클러스터에 불량 섹터가 포함되어 있습니다 |
FF8-FFF / FFF8-FFFF |
파일의 끝 |
각 FAT 항목은 클러스터 주소를 나타내며 파일의 다음 클러스터 주소(FAT 항목)에 대한 포인터를 포함합니다. 파일의 마지막 FAT 항목에는 포인터 대신 최종 클러스터 값이 포함됩니다. FAT의 처음 두 항목에는 FAT에 대한 정보가 포함됩니다. FAT의 이 바이트에는 미디어 설명자 바이트가 포함됩니다. 이 바이트는 이 FAT 항목이 속한 디스크 미디어의 유형을 찾는 데 사용할 수 있습니다.
FAT의 세 번째 및 그 이후 항목은 디스크 공간 클러스터에 할당되며, 파일에서 사용할 수 있는 첫 번째 클러스터부터 시작합니다. FAT 항목은 전달하려는 정보에 따라 위 표에 제공된 값 중 하나를 가질 수 있습니다.
12비트 FAT의 000H 또는 16비트 FAT의 0000H는 이 FAT 위치에 해당하는 클러스터가 할당되지 않았거나 비어 있음을 나타냅니다. 12비트 FAT의 FF8H에서 FFFH까지의 값 또는 16비트 FAT의 FFF8H에서 FFFFH까지의 값은 이 클러스터가 파일의 클러스터 체인에서 마지막 클러스터임을 나타냅니다.
12비트 FAT의 FF0H에서 FF7H까지의 값은 예약된 클러스터를 나타냅니다. 12비트 FAT의 FF7H 또는 16비트 FAT의 FFF7H는 FAT 위치에 해당하는 클러스터가 불량 클러스터임을 나타냅니다. 즉, 기본적으로 불량 섹터를 포함하는 클러스터입니다. 이 클러스터는 데이터 저장에 사용되지 않습니다.
FAT 테이블의 다른 모든 값은 파일 할당 체인의 다음 클러스터를 가리키는 포인터입니다.
Windows가 부적절한 종료를 감지하는 방법
이것은 매우 일반적인 일이며 Windows를 사용할 때 여러 번 보았을 것입니다. 전원 고장, 소프트웨어 손상, 실수로 종료 등의 이유로 컴퓨터가 부적절하게 종료된 경우 컴퓨터를 다시 시작하면 부팅 과정 중에 부적절한 종료 메시지가 화면에 표시되고 운영 체제가 디스크에서 오류를 검사합니다.
다음 두 그림은 32비트 FAT의 시작 부분인 256바이트를 보여줍니다. 하지만 이를 논의하기 위해서는 초기 8바이트만 필요합니다.
실제로 Windows 운영 체제가 메모리에 로드되면, 즉 Windows가 시작되면 FAT의 8번째 바이트(또는 오프셋 7H)가 0FH 또는 FFH에서 07H 또는 F7H가 됩니다.
Microsoft에서는 실행 중인 운영 체제가 들어 있는 볼륨에만 바이트 0FH를 사용하고, 액세스하는 다른 볼륨에는 바이트 FFH를 사용합니다.
Windows가 부팅을 시작하면 8번째 바이트는 07H 또는 F7H로 변경되고, Windows가 제대로 종료된 경우에만 이 값은 0FH 또는 FFH로 다시 설정됩니다.
정전이 발생하거나, 컴퓨터의 전원 스위치가 실수로 꺼지거나, 어떤 소프트웨어 문제로 인해 시스템이 수동으로 재부팅되면 이 바이트는 07H 또는 F7H로 유지됩니다. 이는 다음에 컴퓨터를 부팅할 때 부적절한 종료가 발생했다는 것을 Windows 운영 체제에 알리고 Windows가 디스크 검사 프로그램(Scandisk)을 사용하여 디스크에 오류가 있는지 확인합니다.

루트 디렉토리
마지막 FAT 다음에는 루트 디렉토리가 있습니다. 루트 디렉토리는 하드 디스크 드라이브에 저장된 정보의 목차와 같습니다. 루트 디렉토리의 위치는 FAT 뒤에 위치하므로 부트 레코드의 값을 더하면 쉽게 확인할 수 있습니다.
디렉토리 영역은 파일 이름, 파일 생성 날짜 및 시간, 파일 속성, 파일 크기 및 특정 파일의 시작 클러스터에 대한 정보를 보관합니다. 파일에 대한 이 정보를 설명하는 각 디렉토리 항목은 32바이트 정보입니다.
루트 디렉토리는 루트 디렉토리에서 분기되는 파일과 디렉토리에 대한 정보를 포함합니다. 모든 추가 디렉토리는 루트 디렉토리와 동일한 형식으로 파일로 저장됩니다. 이전에는 루트 디렉토리가 고정된 크기로 디스크의 고정된 위치에 있었지만 이제는 파일로 취급되므로 필요에 따라 자유롭게 확장할 수 있습니다.
루트 디렉토리에 저장할 수 있는 파일 수는 사용하는 FAT 유형에 따라 달라집니다. 예를 들어, 12비트 FAT가 있는 3½인치 1.44Mb 플로피 디스크의 경우 224개 항목으로 제한되며, 225번째 파일을 저장하려고 하면 DOS에서 "파일 생성 오류"가 표시됩니다. 16비트 FAT를 사용하면 루트 디렉토리에 총 512개 항목을 가질 수 있습니다. 플로피 또는 하드 디스크의 각 주 디렉토리는 루트 디렉토리 항목 역할도 합니다.
다음 표는 다양한 미디어와 FAT에 대한 루트 항목의 제한을 나열합니다.
미디어 및 파일 시스템 설명 |
최대 루트 디렉토리 항목 |
단면 5¼ 인치 180K FDD |
64 |
양면 5¼ 인치 320K FDD |
64 |
양면 5¼ 인치 360K FDD |
112 |
양면 3½ 인치 720K FDD |
112 |
양면 5¼인치 1.2메가바이트 FDD |
224 |
양면 3½ 인치 1.44메가바이트 FDD |
224 |
양면 3½ 인치 1.68메가바이트 DMF 포맷 디스크(Microsoft에서 CAB 파일을 만든 이유입니다!) |
16 |
양면 3½ 인치 2.88메가바이트 FDD |
240 |
하드 드라이브(FAT12 및 FAT16) |
512 |
FAT 32를 사용하는 하드 드라이브(경로 디렉토리를 파일로 처리하기 때문) |
65,536 |
이는 16비트 FAT를 사용하면 하드 디스크 드라이브에 512개의 파일만 저장할 수 있다는 것을 의미하지 않습니다. 하위 디렉토리를 사용하여 드라이브 크기에 의해서만 제한된 수의 파일을 저장할 수 있습니다.
플로피의 볼륨 레이블은 일반적으로 부트 섹터에 저장되지만 하드 드라이브의 볼륨 레이블은 루트 디렉토리 항목으로 저장되고 부트 섹터에 예약된 공간은 공백으로 비워둡니다. DOS의 DIR 명령은 디렉토리가 있으면 디렉토리에 있는 것을 반환하고, 없으면 부트 섹터에 있는 것을 반환합니다.
디렉토리 항목에는 클러스터 체인과 파일 이름이 포함됩니다. 따라서 가장 중요한 디렉토리 항목은 루트 디렉토리입니다. 모든 하위 디렉토리를 가리키는 클러스터 인덱스가 포함되어 있기 때문입니다.
모든 디렉토리에는 두 개의 항목이 들어 있습니다. 현재 디렉토리(이 하위 디렉토리)의 경우 ".", 상위 디렉토리(이 하위 디렉토리의 상위 디렉토리)의 경우 ".."입니다. 클러스터에 디렉토리가 있는 경우 이러한 항목은 항상 클러스터의 시작 부분에 위치하므로 이러한 항목을 쉽게 추적할 수 있습니다. 다음 표는 루트 디렉토리의 디렉토리 항목 형식을 보여줍니다. 다음에 주어진 표는 루트 디렉토리의 파일에 대한 32바이트 디렉토리 항목이 어떻게 슬라이스되어 다양한 정보를 저장하는지 보여줍니다.
오프셋 |
크기 |
설명 |
00시 |
8바이트 |
파일 이름
(파일 이름의 첫 번째 문자의 특수한 의미는 다음 표 참조) |
08시 |
3바이트 |
확대 |
0비에이치 |
1바이트 |
파일 속성(파일 속성 표 참조) |
0CH |
10바이트 |
예약된 |
16시간 |
2바이트 |
생성 시간 또는 마지막 업데이트 시간(날짜-시간 형식 표 참조) |
18시 |
2바이트 |
생성 날짜 또는 마지막 업데이트 날짜(날짜-시간 형식 표 참조) |
1AH |
2바이트 |
파일의 시작 또는 첫 번째 클러스터
(값 0000H는 부모 디렉터리(' .. ') 항목에서 부모 디렉터리가 루트 디렉터리임을 나타내는 데 사용됨) |
1채널 |
4바이트 |
파일 크기(바이트) |
파일 이름에는 대문자로 된 이름이 포함되며, 파일 이름의 크기가 8자보다 작으면 공백은 ASCII 숫자 32의 공백 문자로 채워집니다. 확장자 필드에는 대문자로 된 파일 확장자가 포함됩니다.
파일 이름이 8자보다 길면 Windows는 긴 파일 이름을 6자의 대문자로 자르고 기본 파일 이름의 끝에 "~1"을 추가하여 짧은 파일 이름을 만듭니다.
같은 처음 여섯 글자를 가진 다른 파일 이름이 이미 있는 경우, 그 숫자가 증가합니다. 확장자는 동일하게 유지되고, 이전 버전의 Windows와 DOS에서 불법이었던 모든 문자는 밑줄로 대체됩니다.
긴 파일 이름은 속성 바이트가 0FH로 설정된 특수 포맷의 32바이트 긴 파일 이름(LFN) 디렉토리 항목에 저장됩니다. 주어진 파일이나 하위 디렉토리의 경우, 하나 이상의 긴 파일 이름 디렉토리 항목 그룹이 디스크의 단일 8.3 디렉토리 항목 바로 앞에 있습니다.
각 LFN 디렉토리 항목에는 최대 13자의 긴 파일 이름이 들어가고, 운영 체제는 필요한 만큼 문자열을 연결하여 전체 긴 파일 이름을 구성합니다.
이것이 원인입니다. 긴 파일 이름이 파일 시스템에서 루트 디렉토리 항목의 최대 가능한 수를 줄이는 이유입니다. Windows가 긴 파일 이름을 지원하는 방법은 이 장의 후반부에서 자세히 논의합니다.
파일 이름의 첫 번째 바이트에는 파일에 대한 중요한 정보도 포함될 수 있습니다. 이 바이트가 제공하는 정보는 다음 표에 나와 있는 것 중 하나일 수 있습니다.
파일 이름의 첫 글자 |
값 |
의미 |
00시 |
이 디렉토리 항목이 사용되지 않음을 나타냅니다. |
05시 |
파일 이름의 첫 번째 문자가 E5H 문자임을 나타냅니다. 하지만 실제로 파일은 삭제되지 않았습니다. (E5H의 의미 참조) |
E5H |
파일이 지워졌고 이 디렉토리 항목은 삭제된 파일의 디렉토리 항목입니다. 이전에 해당 파일이 차지했던 데이터 영역은 이제 다른 새 파일에 할당할 수 있습니다. |
2EH |
이것은 하위 디렉토리입니다. 이 항목의 클러스터 번호 필드에는 디렉토리의 클러스터 번호가 포함됩니다. |
2EH 2EH |
디렉토리 항목의 두 개의 2EH는 하위 디렉토리의 부모 디렉토리 항목을 나타냅니다. 이 항목의 클러스터 번호에는 이 디렉토리의 부모 디렉토리의 클러스터 번호가 포함됩니다. 부모 디렉토리가 루트 디렉토리인 경우 클러스터 번호는 0000H가 됩니다. |
속성은 8비트 바이너리 코드 필드입니다. 다음 표는 주어진 파일의 속성 플래그 상태에 대해 설명합니다.
속성 비트 |
기인하다 |
조금 |
이진법 |
마녀 |
읽기 전용 파일 플래그 |
0 |
........? |
01시 |
숨겨진 파일 플래그 |
1 |
......?. |
02시 |
시스템 파일 플래그 |
2 |
......?.. |
04시 |
볼륨 레이블 플래그
(항목이 볼륨 레이블임을 나타냄) |
3 |
....?... |
08시 |
하위 디렉토리
(디렉토리와 동일한 형식) |
4 |
...?.... |
10시간 |
보관 비트
(마지막 백업 이후 수정된 파일) |
5 |
..?..... |
20시간 |
예약됨 (0개 포함) |
6 |
.0...... |
- |
예약됨 (0개 포함) |
7 |
0....... |
- |
한 파일에 여러 속성이 있을 수 있습니다. 예를 들어, 단일 파일은 읽기 전용이면서 숨김 파일일 수도 있고, 단일 파일에 시스템 파일과 숨김 파일이라는 두 속성이 모두 있을 수도 있습니다. (디렉토리 항목 인코딩에 대한 다음 예제 참조).
시간과 날짜는 32비트(시간 16비트, 날짜 16비트)의 특수하게 코딩된 필드입니다. 파일의 생성 또는 마지막 업데이트 시간과 생성 또는 마지막 업데이트 날짜를 구성하기 위한 이러한 비트 인코딩의 구분은 다음 표에 나와 있습니다.
디렉토리 항목의 16번째와 17번째 바이트인 파일의 생성 또는 마지막 업데이트 시간 항목은 위 표에 나와 있는 형식을 따릅니다. 인코딩은 다음과 같습니다.
- H는 시간을 나타내는 이진수이며 범위는 0~23입니다.
- M은 분을 나타내는 이진수이며 범위는 0~59입니다.
- S는 2초 단위로 증가하는 초를 나타내는 2진수입니다.
- 파일의 생성 또는 마지막 업데이트 데이터 항목은 18번째이며
- 디렉토리 항목의 19번째 바이트는 다음과 같은 형식을 갖습니다.
- Y는 0~127 또는 1980~2107년 사이의 이진수입니다.
- M은 월을 나타내는 이진수이며 1~12까지 가능합니다.
- D는 날짜를 나타내는 이진수이며 1~31까지 가능합니다.
이 디렉토리 항목은 첫 번째 클러스터 값을 기준으로 FAT 항목과 연결됩니다. DOS가 디렉토리에서 모든 파일의 시작 클러스터 값을 갖게 되면 DOS는 FAT를 사용하여 전체 파일을 찾을 수 있습니다. 체인의 항목 클러스터는 파일을 구성하는 첫 번째 클러스터입니다. 속성의 디렉토리 플래그가 설정된 경우 이 필드는 새 디렉토리 항목을 가리킵니다.
파일 크기 항목은 4바이트입니다. 이를 통해 FAT32가 최대 4,294,967,295바이트(약 4GiB)의 파일 크기를 지원하는 방식을 계산할 수 있습니다. 4바이트는 32비트이며 32비트 바이너리로 구성된 최대 파일 크기는 다음과 같습니다.
= 11111111 11111111 11111111 11111111 (B) 바이트
= 4,294,967,295 (D) 바이트
~ 4기가바이트
따라서 FAT32는 최대 4GiB의 파일 크기를 지원합니다.
루트 디렉토리 항목
손상된 파일을 복구할 때 파일의 크기와 파일의 시작 클러스터는 귀중한 리소스가 될 수 있습니다. 파일이 몇 개의 클러스터로 구성되어야 하는지 계산할 수 있기 때문입니다.
이전에 주어진 그림은 일곱 개의 다른 파일에 대한 루트 디렉토리 항목을 보여줍니다. 이러한 항목에 대한 인코딩은 다음 표에 나와 있습니다.
긴 파일 이름(LFN)
앞서 루트 디렉토리 논의에서 논의했듯이, 이전에는 루트 디렉토리의 크기가 고정되어 있었고 디스크의 고정된 위치에 있었지만, 이제는 파일로 처리되므로 필요에 따라 자유롭게 커질 수 있습니다.
이것은 긴 파일 이름에 매우 중요한데, 각 긴 파일 이름은 여러 디렉토리 항목을 사용하기 때문입니다. 8.3 파일 이름을 사용하는 운영 체제에 긴 파일 이름 지원을 추가하는 것은 디렉토리 항목을 확장하여 11자 이상을 보관하는 것만큼 간단하지 않습니다.
이 새로운 운영 체제가 255자 파일 이름을 반환하면 11자 이상을 받지 못할 것으로 예상하는 많은 이전 애플리케이션이 충돌할 것입니다. 프로그램이 읽는 파일 이름을 저장하기 위해 메모리를 따로 마련해야 하고, 파일 이름에 16바이트를 따로 마련하고 운영 체제가 (예를 들어) 32자를 그 공간에 복사하면 다른 데이터가 덮어쓰기되기 때문입니다. 애플리케이션을 망가뜨리는 확실한 방법은 무작위 데이터를 데이터 공간에 복사하는 것입니다.
이 문제를 해결하기 위해 Windows 95에서는 이전 버전의 DOS 및 Windows 응용 프로그램과의 호환성을 유지하면서 긴 파일 이름을 지원하는 문제에 대한 영리한 솔루션이 발견되었습니다.
대부분의 애플리케이션(Norton Disk Doctor 등의 저수준 디스크 유틸리티 제외)이 시스템에 파일과 하위 디렉터리 이름을 쿼리할 때, 디스크에서 디렉터리 항목을 직접 읽어들이지 않고 운영 체제에 내장된 열거 함수를 사용하여 이를 수행합니다.
알다시피 디렉토리 항목은 읽기 전용, 숨김, 시스템 및 볼륨 레이블 속성 비트의 조합으로 표시됩니다. 디렉토리 항목의 속성 바이트가 값 0FH를 유지하는 경우 모든 기존 버전의 DOS와 모든 Windows 95 이전 버전의 Windows에 내장된 열거 함수는 마치 거기에 없는 것처럼 해당 디렉토리 항목을 건너뛸 것입니다.
그런 다음 해결책은 모든 파일과 하위 디렉토리에 두 개의 이름을 저장하는 것이었습니다. 모든 애플리케이션에서 볼 수 있는 짧은 이름과 Windows 95(및 이후) 애플리케이션과 긴 파일 이름에 대한 지원을 추가하기 위해 다시 작성된 애플리케이션에서만 볼 수 있는 긴 이름입니다. 짧은 파일 이름은 기존 32바이트 디렉토리 항목에 8.3 형식으로 저장됩니다.
Windows가 긴 파일 이름을 여섯 개의 대문자로 자르고 기본 파일 이름의 끝에 "~1"을 추가하여 짧은 파일 이름을 만든다는 것은 이미 설명했습니다.
같은 처음 여섯 글자를 가진 다른 파일 이름이 이미 있는 경우, 그 숫자가 증가합니다. 확장자는 동일하게 유지되고, 이전 버전의 Windows와 DOS에서 불법이었던 모든 문자는 밑줄로 대체됩니다.
긴 파일 이름은 속성 바이트가 0FH로 설정된 특수 포맷의 32바이트 긴 파일 이름(LFN) 디렉토리 항목에 저장됩니다. 주어진 파일이나 하위 디렉토리의 경우, 하나 이상의 긴 파일 이름 디렉토리 항목 그룹이 디스크의 단일 8.3 디렉토리 항목 바로 앞에 있습니다.
각 긴 파일 이름 디렉토리 항목에는 최대 13자의 긴 파일 이름이 들어가고, 운영 체제는 필요한 만큼 문자열을 연결하여 전체 긴 파일 이름을 구성합니다.
긴 파일 이름 디렉토리 항목의 경우 파일 이름은 유니코드 형식으로 저장되며, 이는 ASCII 1바이트가 아닌 문자당 2바이트가 필요합니다. 파일 이름 문자는 세 개의 별도 필드에 분산됩니다.
- 길이는 처음 10바이트(5자)입니다.
- 두 번째 12바이트(6자)
- 세 번째 4바이트(두 개의 문자).
- 디렉토리 항목의 첫 번째 바이트의 최하위 5개 비트는 다른 항목과 관련된 디렉토리 항목의 위치를 식별하는 순서 번호를 보유합니다.
- 동일한 파일과 연관된 긴 파일 이름 디렉토리 항목입니다.
긴 파일 이름에 LFN 디렉토리 항목 3개가 필요한 경우, 첫 번째 항목의 시퀀스 번호는 1, 두 번째 항목의 시퀀스 번호는 2, 세 번째 항목의 시퀀스 번호는 3이 되고 세 번째 항목의 첫 번째 바이트의 비트 6이 1로 설정되어 시퀀스의 마지막 항목임을 나타냅니다.
속성 필드는 파일 시스템이 속성 바이트를 검사할 때까지 어떤 유형의 디렉토리 항목을 처리하고 있는지 알 수 없기 때문에 8.3 디렉토리 항목과 같은 LFN 디렉토리 항목에 나타납니다. 시작 클러스터 번호 필드도 같은 위치에 나타나지만 LFN 디렉토리 항목에서 값은 항상 0입니다. 유형 표시기 필드도 모든 긴 파일 이름에서 0을 유지합니다.
긴 파일 이름의 문제 중 하나는 짧은 파일 이름보다 디스크 공간을 더 많이 차지한다는 것입니다. 긴 이름이 하위 디렉토리에 저장될 때는 큰 문제가 되지 않습니다. 디스크 공간이 있는 한 하위 디렉토리는 추가된 디렉토리 항목을 수용하기 위해 커질 수 있지만 루트 디렉토리에서 사용할 수 있는 디렉토리 항목의 최대 수는 고정되어 있고 긴 파일 이름은 크기가 제한된 루트 디렉토리에서 공간을 낭비하기 때문입니다.
예를 들어, 하드 디스크의 루트 디렉토리에 디렉토리 항목이 최대 512개만 있는 경우 128자 이름에는 긴 이름이 10개, 짧은 이름이 1개 등 총 11개 항목이 필요하므로 각각에 128자 이름을 지정하면 루트 디렉토리에 파일과 하위 디렉토리를 46개만 만들 수 있습니다.
FAT32의 경우에도 이 문제는 해결되지 않습니다. FAT32 시스템에서는 루트 디렉토리가 크기가 커질 수 있는 파일로 처리되기 때문에 FAT32의 루트 디렉토리도 커질 수 있기 때문입니다.
데이터 영역(또는 파일 영역)
루트 디렉토리에 이어서 데이터 영역(또는 파일 영역)이 시작됩니다. 오히려 루트 디렉토리 이후의 볼륨의 나머지 부분을 데이터 영역이라고 할 수 있습니다.
데이터 영역은 디스크 표면에 저장된 실제 데이터를 포함합니다. DOS는 데이터 영역의 첫 번째 섹터에 클러스터 번호 2를 사용하므로 다양한 계산을 수행하는 동안 클러스터 번호는 2부터 시작해야 한다는 점을 명심해야 합니다.
하드 디스크 드라이브를 포맷할 때 DOS의 FORMAT 명령은 데이터 영역의 데이터를 파괴하거나 덮어쓰지 않습니다. FORMAT 명령은 디렉토리 항목과 FAT 항목만 제거하고 실제 데이터 영역에는 영향을 미치지 않습니다.
이렇게 하면 실수로 포맷된 하드 디스크 드라이브를 복구할 수 있는데, 이는 실수로 포맷된 플로피 디스크의 모든 경우에 가능한 것은 아닙니다. Windows에서 전체 포맷을 할 때 플로피의 데이터 영역은 F6H 문자로 채워지고 모든 정보가 덮어쓰기됩니다.
DOS는 "마지막 클러스터 사용"(LCU) 포인터라고 하는 16비트/32비트 포인터를 사용하여 마지막으로 사용된 클러스터 번호를 저장합니다. 처음에 이 포인터 값은 0이고, 특정 클러스터에 어떤 정보가 기록되면 해당 클러스터 번호가 LCU 포인터에 저장됩니다.
그 후, 새로운 정보를 쓸 때마다 DOS는 LCU 번호부터 빈 클러스터를 검색합니다. 이렇게 하면 디스크에 쓰여진 새로운 데이터가 새로운 사용되지 않는 영역에 쓰여질 때 연속적으로 유지됩니다.
이제 실수로 삭제된 경우 데이터를 이해하는 것이 훨씬 쉬워질 것입니다. 파일이 디스크의 한 연속된 영역에 있기 때문입니다. 디스크 끝에 도달하거나 시스템이 재설정되면 LCU 포인터 값이 0으로 재설정됩니다.
하지만 문제는 여기서 끝나지 않습니다. 디스크에 새 파일만 만들고 이전에 저장된 파일에서 파일을 삭제하거나 수정하지 않는 것은 사실상 불가능합니다. LCU만 사용하면 파일을 많이 만들고 삭제하는 경우 문제가 발생합니다. 이렇게 하면 새 데이터가 하드 디스크의 내부 트랙으로 점점 더 이동하게 됩니다.
따라서 디스크에 저장된 파일이 이동되거나 삭제되면 파일이 점유했던 데이터 영역의 클러스터는 이제 데이터 영역에서 사용 가능한 할당되지 않은 클러스터로 설정되어 새 데이터를 쓸 준비가 됩니다. 이렇게 하면 운영 체제가 모든 데이터를 디스크의 내부 트랙으로 옮길 필요가 없습니다.
그러나 파일을 많이 삭제하고 생성하면 디스크의 데이터가 조각나고 이로 인해 데이터 조각화가 발생합니다.
조각화되고 조각 모음된 데이터
우리는 디스크의 각 파일이 클러스터의 연결 목록으로 저장되고, 이를 통해 파일에 포함된 데이터가 디스크의 어느 곳에나 위치할 수 있다는 것을 이미 논의했습니다. 4,096바이트 클러스터를 사용하여 디스크에 저장된 10MB 파일이 있다면, 그것은 2,560개의 클러스터를 사용하고 있는 것입니다. 이러한 클러스터는 디스크의 다른 트랙, 다른 플래터에 있을 수 있으며, 사실, 어디에나 있을 수 있습니다.
파일을 디스크 전체에 분산할 수 있지만, 이는 바람직한 상황과는 거리가 멉니다. 이유는 바람직하지 않은 느린 성능 때문입니다. 하드 디스크는 비교적 느린 장치인데, 주로 기계적인 부품이 들어 있기 때문입니다. 하드 디스크가 헤드를 다른 트랙으로 옮겨야 할 때마다 수천, 수천 개의 프로세서 사이클에 해당하는 시간이 걸립니다.
따라서 우리는 각 파일이 디스크에 퍼져 있는 정도를 최소화하고자 합니다. 이상적인 경우, 모든 파일은 실제로 완전히 연속적일 것입니다. 즉, 사용하는 각 클러스터가 디스크에서 차례로 위치하게 됩니다. 이렇게 하면 필요한 경우 하드 디스크의 기계적 움직임 없이 전체 파일을 읽을 수 있습니다.
실제로 파일 시스템은 대부분의 파일 또는 모든 파일이 연속된 상태로 시작하지만 시간이 지나면서 파일이 생성되고 삭제됨에 따라 디스크의 데이터는 점점 더 조각화됩니다.
단편화를 이해하기 위해 간단한 예를 고려해 보겠습니다. 아래 표는 12개 클러스터의 사용을 나타냅니다. 처음에는 표가 비어 있습니다.
클러스터 1 |
클러스터 2 |
클러스터 3 |
클러스터 4 |
클러스터 5 |
클러스터 6 |
클러스터 7 |
클러스터 8 |
클러스터 9 |
클러스터 10 |
클러스터 11 |
클러스터 12 |
이제 이 디스크에 파일 A, B, C, D라는 네 개의 파일을 만든다고 가정해 보겠습니다. 파일 A는 1개의 클러스터를 차지하고, 파일 B는 4개를 차지하고, 파일 C는 2개를 차지하고, 파일 D는 3개를 차지합니다. 우리는 그것들을 사용 가능한 공간에 저장하고, 그것들은 다음 그림에서 보듯이 모두 연속적으로 시작합니다.
얼마 후에 파일 C를 삭제하고 이렇게 하면 파일 C가 차지했던 두 클러스터가 이제 자유롭거나 할당되지 않습니다. 그러면 디스크가 다음 그림과 같이 보입니다.
이제 3개의 클러스터가 필요한 새로운 파일 E를 만듭니다. 하지만 디스크에 3개의 클러스터 길이를 가진 연속된 블록이 없으므로 이전에 C가 차지했던 공간의 일부를 사용하여 E를 두 개의 조각으로 분할해야 합니다. 이제 디스크는 다음에 주어진 그림과 같이 보일 것입니다.
에이 |
비 |
비 |
비 |
비 |
그리고 |
그리고 |
디 |
디 |
디 |
그리고 |
|
일정 시간 후에 파일 A와 E를 삭제하고 5개의 클러스터를 차지하는 파일 F를 만들어 보겠습니다. 이제 디스크는 아래에 주어진 그림과 같습니다.
에프 |
비 |
비 |
비 |
비 |
에프 |
에프 |
디 |
디 |
디 |
에프 |
에프 |
이제 파일 F가 세 개의 조각으로 나뉜 것을 볼 수 있습니다. 디스크의 이러한 유형의 데이터를 조각난 데이터라고 합니다. 위에 제시된 예는 조각화의 매우 단순화된 예입니다. 실제 디스크에는 수천 개의 파일과 수천 개의 클러스터가 있기 때문에 문제가 확대됩니다. 이를 통해 무슨 일이 일어나는지에 대한 일반적인 아이디어를 얻을 수 있습니다.
조각 모으기 프로그램(Microsoft의 DEFRAG 프로그램, Norton의 SpeedDisk와 같은)이 하는 일은 디스크를 재정렬하여 파일을 연속된 형태로 되돌리는 것입니다. 디스크 조각 모으기 유틸리티를 실행한 후, 우리가 이야기했던 디스크의 조각 모으기된 데이터는 아래에 주어진 그림과 같이 보일 것입니다.
비 |
비 |
비 |
비 |
에프 |
에프 |
에프 |
에프 |
에프 |
디 |
디 |
디 |
조각화되고 조각 모음된 데이터는 많은 경우 데이터 복구 중에 매우 중요합니다.
데이터 복구를 위해 두 개의 손상된 디스크가 있다고 가정해 보겠습니다. 하나는 데이터가 조각난 디스크이고 하나는 최근에 조각 모음을 했습니다. 그리고 파일의 FAT 및 루트 정보가 손상되었으므로 두 디스크의 표면에서 데이터를 수집하여 데이터 복구를 수행해야 합니다. 이러한 유형의 경우 복구 비율은 디스크의 데이터 조각 모음에 비례합니다.
분명히, 조각 모음된 디스크에서 데이터를 복구하는 것은 쉽고 데이터 복구 비율도 높을 것입니다. 그러나 반면에 조각 모음된 디스크에서 데이터를 복구하는 것은 어렵고 시간이 많이 걸리며 복구된 데이터의 비율도 실망스러울 것입니다.
데이터 손상 원인 식별
순서대로 따르면 손상 영역을 찾는 데 도움이 될 수 있는 몇 가지 특정 단계가 있습니다. 이러한 단계는 다음과 같이 복구 절차와 함께 설명되었습니다.
부팅 가능한 플로피로 시스템 부팅
사용하던 운영 체제의 부팅 가능한 플로피 또는 CD로 시스템을 부팅합니다. 논리 드라이브 C: 또는 D: 또는 무엇이든 읽어보세요. 드라이브에 액세스할 수 있다면 드라이브에서 모든 데이터를 복사하기만 하면 됩니다. 이제 디스크가 제대로 부팅되지 않는 이유를 덜 스트레스 받으며 알아낼 수 있습니다.
MBR 정보 확인
하드 디스크에서 가장 중요한 첫 번째 데이터는 MBR과 그 안에 있는 테이블, 즉 파티션 테이블입니다. 이 책에 포함된 디스크에는 "TTEDITOR.EXE"라는 이름의 작은 디스크 편집 도구가 들어 있습니다. 아니면 다른 프로그램을 사용하여 하드 디스크를 분석할 수도 있습니다.
Diskedit은 데이터 복구 목적으로 디스크를 분석하는 데 가장 적합한 프로그램입니다. 글쎄요, 사용하기 쉬운 프로그램은 여러분의 몫입니다. MBR과 특히 파티션 테이블을 읽어보세요.
이 장에서 논의한 MBR 설명에서 보셨듯이, MBR의 후반부에는 읽을 수 있는 텍스트가 있는데, 여기에 오류가 있는 경우 오류 메시지로 표시됩니다. 이러한 텍스트 메시지는 다음과 같이 표시됩니다.
이러한 오류 메시지가 제공되지 않으면 MBR이 손상되었음을 나타냅니다. 또한 "귀하의 시스템이 ...에 의해 해킹되었습니다."와 같은 불법적인 메시지나 다른 예상치 못한 메시지가 표시될 수 있습니다. 이는 MBR에 심각한 문제가 있음을 나타내며, 아마도 바이러스 감염 때문일 것입니다.
이제 초기 446바이트 이후의 MBR 파티션 테이블을 확인합니다. 파티션 테이블이 비어 있으면 부팅 시 오류 메시지가 표시되지 않습니다. DOS는 파티션되지 않은 드라이브를 무시합니다. 드라이브 A:에 부팅 가능한 플로피가 없으면 시스템은 드라이브 A:에 부팅 가능한 플로피를 삽입하도록 요청합니다.
여기서 주의해야 할 중요한 점은 이전에 작동하던 드라이브에서 파티션 테이블이 비어 있어서는 안 된다는 것입니다. 즉, 무언가가 파티션 테이블을 지운 것입니다. 파티션 테이블이 비어 있으면 백업에서 MBR을 복원합니다.
백업이 작동하지 않으면 복구 프로세스가 성공적으로 완료된 후에도 이 섹터에 물리적 손상이 있습니다. 다음 장에서 제공하는 데이터 복구 프로그래밍 기술을 시도하여 데이터를 복구하세요. 프로그래머가 전혀 아니라면 좋은 데이터 복구 센터에 가는 것이 좋습니다.
MBR 백업이 없다면 Diskedit와 같은 디스크 편집 도구를 사용하여 수동으로 파티션 테이블을 작성해 보세요. 그러나 어떤 경우에는 이 작업을 수행하기가 매우 어려울 수 있습니다.
프로그래머가 아니고 백업도 없는 사용자의 경우, 제가 대학 시절 데이터 복구 프로젝트를 개발할 때부터 사용해 온 방법을 사용할 수 있습니다.
여러분이 해야 할 일은 여러분과 거의 같은 크기의 디스크, 같은 개수의 파티션을 갖고 있고, 가장 중요한 것은 여러분의 컴퓨터에 사용되었던 것과 동일한 운영 체제를 갖고 있는 근처의 컴퓨터를 검색하는 것입니다.
하지만 대부분의 경우 완벽하게 작동합니다. 그렇지 않더라도 적어도 디스크의 첫 번째 파티션에 액세스하는 데 도움이 될 수 있습니다. 첫 번째 파티션에 설치되었고 다른 정보가 손상되지 않았다면 운영 체제도 정상적으로 부팅됩니다.
MBR이 정상이면 DBR을 확인하세요
MBR이 괜찮다면 DBR(DOS 부트 레코드)을 확인하세요. 이미 논의했듯이, 이것은 DOS 파티션의 첫 번째 섹터이며 숨겨진 파일을 로드하고 운영 체제를 부팅하는 작은 프로그램을 포함합니다.
DBR에는 FAT, 루트 디렉토리 클러스터, 파티션 크기 등에 대한 많은 중요한 정보가 포함되어 있습니다. DBR이 손상되었거나 불법 정보가 있는 경우 Diskedit와 같은 유틸리티를 사용하여 DBR 정보를 읽고 백업에서 DBR을 복원하세요.
모든 데이터 복구용 전문 소프트웨어는 DBR을 다시 쓸 수 있습니다. 책의 다음 장에서 프로그래밍을 사용하여 파티션의 DBR을 다시 쓰는 방법에 대해 논의하겠습니다.
Diskedit를 사용하여 적절한 정보를 제공하여 파티션의 DBR을 다시 쓸 수도 있습니다.
손상 영역을 찾는 매우 쉬운 방법도 있습니다. 화면에 표시되는 오류 메시지에는 표시되어야 할 특정 원인이 있습니다. 몇 가지 중요한 오류 메시지에 대한 설명은 다음과 같습니다.
메시지 |
설명 |
“드라이브를 읽는 섹터를 찾을 수 없습니다” |
이 메시지는 DOS 작업 중에 나타날 수 있습니다. 일반적으로 페이딩이나 섹터 ID 손실로 인해 발생합니다. |
“드라이브 읽기 데이터 오류” |
이 메시지는 DOS 작업 중에 나타날 수 있습니다. 데이터 검사(CRC(Cyclic Redundancy Check) 또는 ECC(Error Correction Code))에 실패하여 발생합니다. 이 "데이터 검사"는 디스크에서 읽은 데이터가 신뢰할 수 있는지 확인하는 데 사용되는 메커니즘을 말합니다. |
“0개의 하드 디스크가 발견되었습니다" |
컴퓨터의 BIOS에서 하드 디스크가 감지되지 않으면 표시됩니다. 하드 디스크의 전원 및 데이터 케이블 연결을 확인하세요. 연결이 모두 정상이면 문제는 하드 디스크의 일부 하드웨어 오류 때문일 수 있습니다. |
“하드 드라이브 오류, 계속하려면 F1을 누르세요” |
위와 동일 |
“잘못된 드라이브 사양” |
시스템이 하드웨어를 인식하지 못하거나, 파티션 정보가 없거나, 드라이브의 장치 드라이버가 누락된 경우 표시됩니다. |
“잘못된 구성입니다. 계속하려면 F1을 누르세요.” |
하드 디스크를 사용할 수 있는 경우 마더보드의 배터리가 소진되었거나 시스템의 구성 설정 정보가 손실되었거나 디스크가 응답하지 않습니다. |
“잘못된 파티션 테이블” |
이것은 MBR 오류 메시지입니다. MBR의 파티션 테이블에 유효한 파티션 정보가 없을 때 표시됩니다. |
“운영 체제 로딩 오류” |
이것은 MBR 오류 메시지입니다. MBR 정보 손상의 모든 유형으로 인해 표시됩니다. |
“운영 체제가 없습니다” |
위와 같습니다. |
“디스크 부팅 실패” |
이것은 DBR 오류 메시지입니다. 일반적으로 플로피 디스크에서 부팅하면 하드 드라이브에 접근할 수 있습니다. 부팅할 수는 없지만 디스크에 있는 데이터에 액세스하는 데는 영향을 미치지 않습니다. |
"비시스템 디스크 또는 디스크 오류" |
위와 같습니다. |
"잘못된 명령 인터프리터 또는 누락된 명령 인터프리터" |
이 메시지는 명령 인터프리터가 잘못되었거나 누락되어 표시됩니다. 예를 들어, 운영 체제가 현재 경로에서 command.com을 찾지 못하거나 command.com이 손상된 경우입니다. |