2013-07-25 2 views
1

NTFS 및 Windows에 대한 연구를 진행하고 있으며 NTFS 스파 스 파일을 어떻게 처리해야하는지 조금 혼란 스럽습니다. 나는 현재 거래 갱신 저널링에 사용되는 $ UsnJrnl을보고있다.

스파 스 파일은 파일 시스템 내의 다른 파일과 같지만 파일에는 0의 큰 섹션이 포함되어 디스크에 0을 쓰고 본질적으로 공간을 낭비하지 않고 단지 0을 포함하는 클러스터의 수가 저장됩니다. 일례로서

내 테스트 시스템의 $ UsnJrnl의 데이터 런은 :

Cluster start: 0 
Number of clusters: 1408 
(Sparse) 

Cluster start: 510119 
Number of clusters: 128 

Cluster start: 256 
Number of clusters: 2448 

이것은 $ UsnJrnl 파일이 디스크에 3984 개 클러스터의 총 점유된다는 것을 의미한다 (Winhex을 사용하여 얻은) 그러나 그 중 1408 개가 희소하므로 디스크에 실제로 존재하지 않습니다.

이렇게하면 1408 개의 0으로 채워진 클러스터가 510119에서 시작하는 128 개의 클러스터 바로 앞에 있습니까?

기본적으로 디스크의 정확한 시작 및 끝 오프셋을 결정할 수 있습니다. 예를 들어 클러스터 x에서 클러스터 512822까지 실행됩니다. 그러나 스파 스 클러스터는 실제로 두 번째 클러스터가 실행되기 전에 실제로 할당되어 실제로 연속적으로 할당 될 수있는 경우 하나의 인접한 블록이됩니다.

나는 그것이 의미가 있기를 바랍니다. 그리고 어떤 정보 나 조언도 크게 기뻐할 것입니다!

답변

1

아니요, $ UsnJrnl이 디스크의 2576 클러스터를 차지한다는 의미입니다. 스파 스 클러스터를 읽으려고하면 스파 스 클러스터가 디스크의 공간을 차지하지 않습니다. 귀하의 예제에서 클러스터 10, NTFS는 단지 0을 반환합니다.

일반적으로 파일이 조각화 될 수 있으므로 파일의 시작 및 끝 클러스터를 결정할 수 없습니다. 예를 들어 첫 번째 1408 개의 클러스터가 디스크에 전혀 할당되지 않았다고 가정하면 해당 파일의 128 개의 클러스터가 디스크 클러스터를 차지합니다. 510119 - 510247, 그러면 파일의 2448 클러스터가 디스크 클러스터 256-2704를 차지합니다. 따라서이 경우 파일은 클러스터 X (디스크)에서 시작하고 클러스터 Y (디스크에서)로 종료한다고 말할 수 없습니다. 파일이 단편화되지 않은 경우에만 가능합니다 (단 하나의 클러스터 실행 만 사용하는 경우).