Windows의 디스크 조각 모음 및 디스크 검사의 논리는 무엇입니까? C# 코딩을 사용하여 할 수 있습니까?디스크 조각 모음 및 디스크 검사의 논리
답변
완전성을 위해, 여기에 조각 모음에 대한 C#을 API 래퍼는 다음과 같습니다 이러한 API와
http://blogs.msdn.com/jeffrey_wall/archive/2004/09/13/229137.aspx
조각 모음은 요즘 매우 안전 (있어야)합니다. 원하는 경우에도 파일 시스템을 손상시킬 수 없어야합니다.
상업용 조각 모음 프로그램은 동일한 API를 사용합니다.
차이점은 상용 회사는 파일 시스템에 대해 알고 OP는 조각 모음을 정의 할 수 없다는 것입니다. 내가 그에게 총을주기 전에 방아쇠가 무엇인지 알기를 바란다. –
가능한 API 도우미는 msdn에서 Defragmenting Files입니다.
네이티브 Win32로 마샬링 할 때 원하지 않는 오버 헤드가 발생할 수 있으므로이 작업에 C# 사용에 대해주의 깊게 생각해야합니다.
조각 모음의 논리를 모르거나 정식으로 오류를 검사 할 수 없도록 파일 시스템을 직접 작성하지 않은 경우 'defrag'및 'chkdsk'를 실행하는 새 프로세스를 시작하지 않는 것이 좋습니다. '?
파일 시스템의 중요성에도 불구하고 파일 시스템은 파일 이름을 디스크 블록 목록에 매핑하는 데이터 구조에 불과합니다. 파일의 실제 길이 및 파일 목록 (예 : 디렉토리)을 유지하는 특수 파일과 같은 메타 정보를 추적합니다. 디스크 검사기는 데이터 구조가 일관성이 있는지 확인합니다. 즉, 모든 디스크 블록은 파일에 할당하거나 단일 파일에 속해야합니다. 또한 디스크 블록 세트가 디렉토리에 있어야하지만 어떤 이유로는 존재하지 않는 파일 인 것으로 보이는 특정 경우를 확인할 수 있습니다.
조각 모음은 각 파일에 할당 된 디스크 블록 목록을 조사하는 것입니다. 일반적으로 디스크 전체에 흩어져있는 블록이 아닌 인접한 블록 세트를 사용하면 파일이 더 빨리로드됩니다. 그리고 일반적으로 전체 파일 시스템은 사용중인 모든 디스크 블록이 디스크의 하나의 적절한 범위에 국한되도록 최선을 다할 것입니다. 따라서 파일 시스템을 손상시키지 않으면 서이 목적을 달성하기 위해 안전하게 디스크 블록을 이동시키는 것이 트릭입니다.
여기서 가장 큰 어려움은 디스크를 사용하는 동안이 응용 프로그램을 실행하는 것입니다. 그것은 가능하지만 아주 명백하거나 매우 미묘한 오류를 만들지 않고 파일의 대부분이나 전부를 파괴하지 않도록 아주 조심해야합니다. 파일 시스템을 오프라인으로 작업하는 것이 더 쉽습니다.
또 다른 어려움은 파일 시스템의 복잡성을 다루는 것입니다. 예를 들어, NTFS보다는 FAT32를 지원하는 무언가를 만드는 것이 훨씬 낫습니다. 전자는 훨씬 더 간단한 파일 시스템이기 때문입니다.
저수준 블록 액세스와 동시성 문제 (파일 시스템이 사용되지 않을 때 작업하는 것이 가장 좋습니다)를 처리 할 수있는 합리적인 방법이 있다면 C#, perl 또는 다른 언어로이 작업을 수행 할 수 있습니다 너는 좋아한다.
매우 조심하십시오. 초기 버전의 프로그램은 전체 파일 시스템을 파괴합니다. 최신 버전은 그렇게하지 만 불분명 한 상황에서만 가능합니다. 사용자가 데이터를 파괴하면 사용자가 매우 화를 잘 겪고 소송을 당하게됩니다.
감사합니다 필립스,이게 해결책이 될지도 몰라. – Sauron
완벽하게 안전하며 조각 모음을위한 Windows API가 있으며 NTFS 파일 시스템에서 작동합니다. – andreialecu
마크 루시노 비치 (Mark Russinovich)는 얼마전에 Inside Windows NT Disk Defragmentation이라는 기사를 썼다. 정말로이 작업을 수행하려면 조각 모음을 위해 기본 제공되는 기능을 사용하는 것이 좋습니다. 최근 운영체제에서는 조각 모음을 신경 쓰는 사용자가 필요 없다는 것을 알았습니다. 그것은 일정에 따라 자동으로 수행되고 MS의 NTFS 사용자는 당신보다 그 물건에 더 똑똑합니다. (미안하지만, 지금 당분간이 일을합니다.
이 기사는 대단히 유용합니다. – Sauron
디스크 조각 모음은 복잡한 주제이며 조각 모음을 수행중인 장치의 기본 파일 시스템에만 적용됩니다. 정확히 무엇을 성취하려고합니까? – scwagner
C#에서 디스크 조각 모음을 수행하는 이유는 무엇입니까? –
시스템 기반 응용 프로그램을 만들고 있습니다. 디스크 조각 모음과 디스크 검사기를 구현하고 싶습니다. – Sauron