2013-08-25 2 views
1

각 MFT 레코드의 실제 (디스크 크기)에 대해 궁금합니다. MFT 레코드 당 클러스터 수가 부트 섹터에 설정되기 때문에 각 섹터의 크기가 같아집니다.NTFS - 파일 레코드 크기

그러나 각 레코드 헤더에는 추가 값인 Allocated size (at 0x1C)이 저장됩니다. 내가 관찰 할 수있는 한이 값은 항상 부트 섹터에 저장된 값과 같습니다.

이 두 가지가 다른 경우 (언제) 가능합니까? 그렇지 않은 경우 각 레코드의 Allocated size 값은 일종의 낭비입니다. 맞습니까?

답변

1

실제로 그렇게 낭비하는 것은 아닙니다. 파일 레코드에 저장된 속성의 수가 1KB를 초과하면 어떤 일이 발생하는지 살펴보아야합니다. (추가 파일 이름, 스트림 등을 추가하여) 추가 특성이 볼륨의 데이터 섹션이나 다른 파일 레코드에 저장되는 경우 다른 버전의 NTFS에 대해서는 분명하지 않습니다 (최소한 나에게).

NTFS의 이전 버전에서는 MFT 파일 레코드의 크기가 클러스터의 크기 (일반적으로 4KB)와 같았습니다.이 크기는 공간의 낭비 였기 때문에 모든 특성이 1KB 미만의 공간을 차지하기도했습니다. NT 5.0 (내가 잘못되었을 수도 있음) 이후, 일부 연구 끝에 Microsoft는 모든 MFT 파일 레코드가 1KB 여야한다고 결정했습니다. 따라서이 수를 저장하는 한 가지 이유는 이전 버전과의 호환성 때문일 수 있습니다. 이전에 4KB 파일 레코드를 사용했던 오래된 하드 드라이브를 발견하고 해당 드라이브에 파일을 추가하거나 일부 파일을 복사하려고한다고 가정 해보십시오.

그 번호를 저장하는 또 다른 용도는 파일 레코드를 얻을 때마다 부트 섹터를 읽지 않아도 될 크기를 확인하는 것입니다. 이전 버전과의 호환성 때문에 4KB 레코드와 1KB 레코드 사이의 전송을 완화시켜야하는 알고리즘이라고 가정 해보십시오. 예상되는 내용을 모르는 경우 예상 할만한 크기의 레코드를 찾으려면 부트 섹터를 읽어야합니다.

부트 섹터에 액세스 할 수 없거나 부트 섹터가 지워 졌거나 클러스터가 불량한 드라이브에서 파일을 복구하려고하면 어떻게됩니까? 볼륨이 여러 범위에 있고 하나의 범위에서 MFT를 읽고 부팅 섹터가 사용자가 액세스 할 수없는 또 다른 범위에 있다면 어떻게됩니까?

일반적으로 파일 시스템은 오랫동안 소수의 사람들에 의해 설계되었습니다. 이러한 가치가 중복된다면 나는 확실히 알아 차릴 것이라고 생각해야한다.

관련 문제