2010-03-26 5 views
1

특정 파일의 조각화 상태 (즉,이 파일이 차지하는 개별 조각의 양)를 결정할 수 있습니까? 그렇다면 어떻게 이것을 .net을 사용하여 할 수 있습니까?파일의 조각화 상태를 프로그램 방식으로 결정

동기 부여는 다음과 같습니다. 내 응용 프로그램은 데이터를 FileStream에 보관하고 필요할 때 크기를 변경합니다. 결국 파일이 조각 나게됩니다. 파일의 조각화 상태를 모니터링하고이를 기반으로 파일을 복사하여 새 파일로 교체해야하므로 (따라서 MFT를 변경하지 않고 "조각 모음") 파일을 결정해야합니다.

답변

3

이것은 "조기 최적화"범주에 해당합니다. 단편화를 일으킬 수 있다는 보장이 전혀 없기 때문에 디스크 끝에 파일 끝까지 커밋되지 않은 클러스터가있을 수 있으며 종종 그렇게됩니다. 아마도 요점은 .NET 프레임 워크에서이를 감지하거나 수정할 수있는 것이 아무것도 없다는 것입니다. 볼륨의 MFT에 액세스하려면 비 관리 코드 및 관리자 권한이 필요합니다.

디스크 조각 모음은 일반적인 컴퓨터 유지 관리 작업입니다. Win7에서는 자동으로 실행됩니다.

+0

@nobugz, POV에 감사드립니다.하지만 설명해주십시오 : 1. 자주 FileStream의 크기를 늘리면 조각화가 발생하는 경향이 있습니다 (내 경험에 따르면 http://stackoverflow.com/questions도 참조하십시오./917309/how-can-i-limit-file-fragmentation-while-with-working-with-net)을 사용합니다. 2. 특정 크기의 새로운 스트림을 만들고 원본 스트림을 복사하면 조각화를 극복하는 경향이 있습니다. 새 파일에는 예쁜 시퀀스의 클러스터가 할당되므로이 문제를 "고칠"수있는 방법이 있습니다. –

+0

3. 나는 조각화를 가정하지 않고 가능한 것으로 가정하고 있으며 런타임에 내 의구심을 부정하거나 확인하는 방법을 찾고 있습니다. 4. 나는 defragAnalysis를 활성화하고 로그 파일을 확인하는 매우 추악한 방법을 취할 수는 있지만, 그것은 정말로 추악합니다. 5. 고객이 디스크를 조각 모음하지 않고 대부분 WinXP를 사용하고 있음을 확실히 말할 수 있습니다. @ Mark Ransom, 나는 SSD를 받고 싶습니다. 그리고 나는 각 고객을 위해 하나씩 얻고 싶습니다. 아마도 10 년 후에 파일 조각화는 쓸모 없게 될 것입니다. 그 사이에 ... –

+0

@nobugz, 결국, 당신은 아마 맞을 것입니다. 이것은 아마 시기상조 한 최적화 일 것입니다. 그래도 질문 자체에 대한 답변을 얻고 싶습니다. (동기 부여 무시) –