The Desktop Files조각 모음에 관한 진실

Wes Miller

하드 디스크가 존재하는 한, 디스크 조각화 문제는 사라지지 않을 것입니다. 따라서 시스템에 조금이라도 관심이 있다면 디스크 조각 모음을 정기적으로 수행해줘야 합니다. 아마도 매년 치과 의사와 나누던 이야기가 생각날 수도 있겠습니다. 그렇습니다. 치석을 제거하는 것처럼 디스크 조각 모음도 정기적으로 수행하는 것이 중요합니다.

컴퓨터를 전혀 켜지 않는 경우가 아니라면 디스크는 갈수록 조각화되기 마련입니다. 조각화가 어떻게 발생하는지는 잠시 뒤에 설명하기로 하고 먼저 디스크 조각 모음의 역사를 간략히 살펴보겠습니다.

디스크 조각 모음과 Windows NT

Windows NT®에는 디스크 조각 모음 유틸리티가 내장되어 있지 않았으며, 굳이 필요 없다는 것이 당시의 통념이었습니다. 어쨌든 NTFS는 처음부터 최적화를 염두에 두고 만들어졌으므로 조각화로 인한 문제가 FAT 볼륨의 경우만큼 크지는 않습니다. 그러나 시간이 흐를수록 NTFS에도 최적화되지 않은 파일 배치로 인한 성능 저하가 나타날 수 있습니다. 덕분에 타사 디스크 조각 모음 도구 시장이 번성했습니다. IT 전문가들 사이에서 가장 인기 있었던 제품 가운데 하나는 Executive Software(현 Diskeeper Corporation)의 Diskeeper 제품이었습니다. Windows 2000에 디스크 조각 모음 기능을 도입할 때, Microsoft는 Executive Software로부터 해당 기술을 라이선스했습니다. Windows® 2000 디스크 조각 모음 기능은 Microsoft® 관리 콘솔(MMC) 스냅인(dfrg.msc)에서 사용할 수 있었으며 볼륨을 클릭하거나 명령줄에서 직접 defrag.exe를 입력해서 실행할 수 있었습니다. 일정 지정 기능도 없고 제약이 많은 명령줄만 제공되었지만 그래도 많은 IT 전문가들은 기능 스크립트를 만들어 이 기본 버전을 이용해서 디스크 조각 모음 작업을 자동화했습니다. Windows XP와 Windows Server® 2003의 Defrag.exe는 기존 버전보다 다소 개선되었지만 자동화 기능이 제한적이어서 여전히 스크립트 작업이 필요했습니다.

필자의 전 직장이었던 Winternals Software를 포함한 여러 공급업체에서 기업용 디스크 조각 모음 시장을 노린 소프트웨어를 제작하기도 했습니다. 이러한 제품들은 대부분 같은 방식으로 작동했습니다. 즉, 중앙에 콘솔이 있고 클라이언트 시스템에 에이전트 프로그램이 있어서(상주 또는 요구 시 실행) 중앙의 콘솔이 디스크 조각 모음 작업의 시기와 방법을 지시하는 구조로 되어 있습니다.

Windows Vista®는 대체로 단일 시스템 디스크 조각 모음의 추세를 따르는 한편, 디스크 조각 모음 도구를 최적화하고 작은(64MB 이하) 파일 조각을 모으는 옵션을 포함시켰습니다. 이 옵션을 이용하면 디스크 조각 모음 속도는 빨라지지만 그보다 큰 파일 조각들은 디스크에 분산된 채로 남게 됩니다. 디스크 조각 모음 엔진 자체는 Windows Vista와 Windows Server 2008이 기존 버전의 Windows보다 강력합니다. 또한 자동으로 실행되며 수작업을 통한 일정 지정이 필요 없습니다. 그러나 대규모 조직을 관리하고 있거나 defrag.exe에서 기본적으로 제공하지 않는 방식으로 시스템을 최적화하고자 한다면 여전히 타사 소프트웨어를 라이선스해야 합니다. 그리고 기존 버전에서와 같이, NTFS 압축 기능이 폭넓게 사용되는 볼륨의 경우 디스크 조각 모음이 어려울 수도 있습니다. 그러한 경우에도 타사 도구가 도움이 될 것입니다.

조각화는 어떻게 발생하는가?

조각화는 시간의 흐름에 따라 파일들이 바뀌기 때문에 발생합니다. 이상적으로 볼 때, Windows 파일 자체는 바뀌지 않습니다. 최소한 자주 바뀌지는 않으며, 사실 서비스 팩과 소프트웨어 업데이트가 설치되는 경우에만 바뀝니다. 그 외의 경우, 시스템 파일은 비교적 일정한 상태를 유지합니다. 서비스 팩 설치와 같은 대대적인 업데이트를 수행하게 되면, 업데이트되는 파일들을 디스크의 제 위치에서 덮어쓸 수 없는 경우가 일반적이므로 조각화가 자연스럽게 발생하며, 부팅을 다시 해야 업데이트가 가능한 경우도 있어 조각화가 더 심해집니다.

반면 사용자 파일과 데이터, 그리고 Windows 레지스트리는 항상 변화에 노출되어 있습니다. 파일 읽기, 쓰기, 편집, 복사 및 삭제 등은 항상 상당한 조각화를 야기하며, 드라이브 용량이 채워질수록 특히 더 심해집니다.

이를 시각화하려면, 완벽하게 배열된 디스크를 상상해 보면 됩니다. 파일들이 서로 간 아무런 공간 없이 인접하게 공간을 차지하고 있는 상태 말입니다. 그런데 파일을 하나 열어 편집하고 그것을 저장하려 한다고 가정합시다. 그 파일의 크기가 커졌다면 Windows에서는 그 파일 전체를 디스크의 어딘가 다른 곳(파일 N 뒤로 가정)에 저장하거나 새로운 데이터 부분을 파일 N 뒤에 저장할 수 밖에 없습니다. 따라서 이제 파일 2가 조각화된 것입니다. 이제 파일 1을 편집한다면 조각화된 파일은 2개가 됩니다. 이런 일이 오랜 시간 반복되면 결국 시스템은 파일 하나를 찾기 위해 드라이브의 여러 곳을 찾아봐야 할 정도로 매우 조각화됩니다. 큰 데이터베이스 파일들을 사용하거나, 가상 컴퓨팅 기술로 인해 하드 디스크 파일이 크게 확대되거나 일반적인 디스크에 많은 양의 비디오 및 오디오가 저장되어 있는 경우, 조각화는 흔한 현상입니다. 물론 갈수록 커지고 있는 현재의 하드 디스크 크기를 감안할 때 조각화가 그리 큰 문제는 아닐 수 있으나 그렇다고 완전히 잊어버릴 수 있는 문제도 아닙니다. 게다가 하드 디스크 용량이 작은 구형 노트북의 경우 갈수록 반응 속도가 떨어질 것이고 부팅도 느려지고 파일을 열고 저장하는 데 걸리는 시간도 늘어날 것입니다.

중요한 것은 시스템의 조각화가 아니라 개별 파일의 조각화가 어느 정도냐 하는 것입니다. 다채로운 색상으로 상태를 표시하는 디스크 조각 모음 도구가 처음 등장한 이래, 이 도구의 보고 결과를 본 사용자들은 '색상을 질서 있게 정리해야겠다'는 생각을 하게 됩니다. 하지만 실제로 그것은 사용자의 의도에 거의 부합하지 않습니다. 일부 제품들은 디스크를 두 개의 블록, 즉 파일 데이터를 나타내는 색상 있는 블록과 빈 공간을 나타내는 일반적으로 흰색의 블록으로 표시하고자 했습니다. 유감스럽게도 이 방법은, 디스크 조각 모음의 빈도와 비용을 최소화하려는 것이 목적이라면 가장 좋지 않은 방법입니다. 모든 파일 데이터를 디스크의 맨 앞으로 과감하게 압축했는데, 어느 파일에 추가로 편집을 가할 때 그 사이의 빈 공간의 대부분이 제거되었다면, 그 편집 내용은 모두 파일 데이터의 맨 끝에 기록될 수 밖에 없습니다. 따라서 그런 식으로 조각 모음을 수행하면 실제로는 바로 다음 파일 편집 때부터 오히려 조각화를 더 야기하는 결과를 낳습니다. 양호한 방식의 조각 모음 이미지는 말끔하게 정리된 파일 데이터 블록 2개의 형태가 아니라 그다지 완벽하지 않은 형태로 나타납니다. 예를 들어 그림 1은 조각 모음 이전 테스트 시스템의 모습입니다. 그리고 그림 2는 같은 시스템이지만, Windows에서 조각 모음을 완료한 이후의 모습입니다.

그림 1 조각 모음 이전의 드라이브

그림 1** 조각 모음 이전의 드라이브 **(더 크게 보려면 이미지를 클릭하십시오.)

그림 2 조각 모음 이후의 드라이브

그림 2** 조각 모음 이후의 드라이브 **(더 크게 보려면 이미지를 클릭하십시오.)

참고로, Windows에서는 디스크 여기저기에 분산된 여러 파일의 조각화가 아니라 개별 파일의 조각화를 더 중시합니다. 그림 3의 조각 모음 보고서에서는 시스템의 조각을 모으기 전에 '가장 조각화된 파일'에 대한 섹션을 확인할 수 있습니다.

그림 3 조각 모음 보고서

그림 3** 조각 모음 보고서 **

따라서, 조각 모음 이후에도 Windows에서는 파일 데이터 집합이 디스크 맨 앞에 완전히 압축된 것을 보여 주지 않습니다. 또한 그림 12의 녹색 데이터가 큰 부분을 차지하고 있는 것을 확인하십시오. 그것은 Windows 페이지 파일로서, 곧 설명할 것입니다. Windows 시스템에서 최대 절전 모드를 사용 중이라면 조각 모음에서 유사하게 나타날 것입니다.

정기적 조각 모음은 필수

치과 치료에서와 마찬가지로, 조각 모음을 정기적으로 수행하는 것이 중요합니다. 서버와 같이 사용 빈도가 높은 시스템에서 정기적인 조각 모음의 중요성은 갈수록 커지고 있습니다. 조각 모음을 미룬다면, 이후 조각 모음에 걸리는 시간이 너무 늘어나 사용자들이 서버를 이용할 수 없게 되거나 서버가 응답을 멈추게 될 수 있습니다. 조각 모음에는 상당한 시간이 걸리고 조각 모음의 어느 단계에서는 CPU 사용량도 매우 늘어나기 때문입니다.

최고의 실시간 조각 모음 도구도 모든 조각을 완벽히 모을 수는 없습니다. 예를 들어 페이지 파일이나 레지스트리 파일처럼 열려 있는 파일이나 잠긴 파일은 조각 모음이 안 되는 경우가 있으며 최대 절전 모드 파일이 있는 경우에는 우회적인 방법을 사용해야 합니다. 최대 절전 모드 파일의 크기는 시스템에서 사용 중인 RAM의 크기와 같습니다. 잠긴 파일을 최적화하려면 다음에 실릴 조각 모음 트릭에 대한 섹션을 확인하시기 바랍니다.

필자는 조각 모음과 관련된 근거 없는 통념과 올바른 사실을 정확히 이해하는 것이 중요하다고 생각합니다. 그림 4그림 5에서는 조각 모음에 대한 논의 과정에서 필자가 들어온 일반적인 화제거리 몇 가지를 나열하고 그러한 문제들이 발생할 실제 가능성을 설명하고 있습니다.

Figure 5 조각 모음에 관한 통념

통념 가능성
시스템이 충돌합니다. 희박—충돌은 일반적으로 드라이버 또는 하드웨어 문제로 인해 발생합니다(메모리 손상, 열 문제로 인한 다시 부팅, 디스크 과열로 인한 디스크 장애).
응용 프로그램이 충돌합니다. 희박—전체 시스템의 경우와 마찬가지로, 올바로 제작된 응용 프로그램은 조각화로 인해 충돌이 생기지는 않으므로 억지로 강제되지 않는다면 조각화가 충돌을 야기하는 것으로 가정할 수는 없습니다.
레지스트리가 손상됩니다. 희박(위 내용 참고)—조각화는 레지스트리 손상을 일으키거나 야기하지 않습니다.
조각 모음을 수행했으면 디스크를 어떤 식으로 시각화하든 단일 색상 막대로 표시되어야 한다. 희박—빈 공간을 남겨두지 않거나 파티션을 축소 또는 분할하는 섹터 기반 이미지 도구로 시스템의 이미지를 만들 계획이 아니라면 시스템의 모든 파일을 일반적으로 압축하지 말아야 합니다. 파일을 디스크의 앞쪽으로 가져갈 필요는 있지만, 그 외에 공격적인 파일 통합은 조각화를 더 심화할 뿐입니다.
   

Figure 4 조각 모음에 관한 일반적인 우려

우려 가능성
시스템 성능이 저하됩니다. 높음—특히 시스템 사용량에 따라 다릅니다.
실수로 삭제한 파일의 복구가 어려워지거나 불가능해집니다. 높음—대부분의 파일 복구 도구는 (데이터 유형을 파악하기 위해) 발견적 방법과 파일 클러스터 근접성에 의존합니다. 파일이 흩어지면 복구 작업이 더 복잡하거나 불가능합니다.
시스템 조각 모음에는 많은 비용이 따릅니다. 중간—시스템 사용량과 그 시스템에서 시간의 흐름에 따라 파일들이 변경되는 정도 사이에는 직접적인 상관 관계가 있습니다. 사용자들이 파일을 매우 활발하게 수정하더라도, 예를 들어 그 파일을 서버 공유 영역에만 저장한다면 시간이 흘러도 성능 저하는 크게 발생하지 않습니다.
디스크 손상이 발생합니다. 낮음—실제로는 발생할 가능성이 별로 없습니다. 물론, 시스템을 혹사할수록(항상 켜두고 디스크를 작동시키며, 파일 편집이나 수정, 삭제 등을 많이 수행할수록) 디스크 손상 가능성은 커집니다. 그러나 오늘날의 하드웨어에서는 단순히 파일 편집으로 인해 디스크 손상이 발생할 가능성은 없습니다.
   

인프라의 일부로서의 조각 모음

모든 시스템에서 정기적으로 조각 모음 도구를 실행하는 것을 진지하게 고려해봐야 합니다. Windows에 기본 제공된 조각 모음 도구를 사용하는 방법과 타사의 옵션을 찾아보는 방법이 있습니다. 그것은 기본적으로 여러분이 어느 정도의 엔지니어링을 수행하고자 하느냐에 달려 있습니다. Windows XP 및 그 이후 버전에서는 defrag.exe를 '예약된 작업'으로 추가할 수 있습니다. support.microsoft.com/kb/555098의 기술 자료 문서에는 그 방법이 설명되어 있습니다. 노트북 컴퓨터의 디스크 조각 모음에는 몇 가지 특별히 고려할 사항이 있습니다. 사용자의 시스템에 전원이 켜졌을 때(이상적으로는 AC 전원) 디스크 조각 모음을 수행하고 싶겠지만, 또한 동시에, 모바일 사용자가 어떤 작업을 완수하려 할 때 조각 모음 작업으로 CPU 또는 디스크 사이클을 차지하고 싶지는 않을 것입니다. 그러나 유감스럽게도, 모바일 사용자가 자신의 시스템을 사용하지 않을 때는 시스템에 AC 전원이 꼽혀 있지 않고 대기 모드이거나 최대 절전 모드(전원 관리 및 '예약된 작업'의 관점에서 볼 때는 전원이 꺼진 상태)일 가능성이 높습니다. Winternals에서는 (다른 회사와 마찬가지로) 이상적인 모바일 사용자 시나리오를 설계하기 위해 상당한 노력을 들였습니다. 기본 내장된 조각 모음 도구와 '예약된 작업'을 사용하며 이전 버전보다 전원 인식 기능이 훨씬 향상된 Windows Vista만으로도 충분한 솔루션이 될 수 있습니다. 그렇지 않다면 모바일 시스템을 위한 타사 솔루션이 필요할 것입니다. 그 가운데 일부는 실제 조각 모음 작업을 시작하면서 실행되었음을 사용자에게 알려주고, 언제 얼마나 자주 실행되며 얼마나 오래 걸리는지도 알려 줍니다.

모바일 시나리오 외에도, 파일 시스템 이상의 조각화에 대해서도 생각해봐야 할 것입니다. 이것은 데스크톱 컴퓨터나 모바일 컴퓨터에서는 일반적으로 고려할 필요성이 있는 사항은 아닐 것입니다. 그러나 서버나 Microsoft Exchange, SQL ServerTM, 또는 기타 데이터 저장소는 고유의 조각 모음을 필요로 할 수 있습니다. 그러한 경우에는 해당 조각 모음을 파일 시스템 조각 모음 수행 이전에 해야 하는지 또는 이후에 해야 하는지를 판단해야 합니다.

타사 조각 모음 도구를 사용 중이라면 그것이 Windows 조각 모음 API를 사용하고 있는지 확인해 볼 필요가 있습니다. Windows NT 4.0 이래로, Windows는 예상치 못한 데이터 손실을 방지하기 위해 고유의 조각 모음 API를 채용해왔습니다. 예를 들어 파일을 이동하는 도중에 시스템 전원이 나가면 최악의 경우, 불완전한 조각 이동으로 인해 데이터 손실은 물론 시스템의 부팅이 불가능한 상황도 발생할 수 있습니다.

마지막으로, 가상 컴퓨팅 기술을 사용 중이라면 가상 디스크의 조각 모음을 관리하는 방법도 알아보고자 할 것입니다. 가상 디스크도 물리적 디스크와 마찬가지로 조각화가 발생할 수 있는데, 크기 제약으로 인해 여러 의미에서 더 심각할 수 있습니다. 또한 가상화 솔루션에서 디스크 또는 파티션의 축소가 가능하다면, 공간을 비우기 위해 또는 최소한 축소 작업에 걸리는 시간을 줄이기 위해서라도 조각 모음을 먼저 수행해야 할 것입니다.

추가 도구

지금쯤은 조각 모음이 매우 중요한 기능이라는 사실을 이해하셨을 것입니다. 조각 모음 자체를 목적으로 타사 도구를 사용하지 않는다 하더라도 Mark Russinovich의 PageDefrag라는 도구는 고려해볼 만합니다. 이 도구는 Microsoft Sysinternals 도구 사이트(microsoft.com/technet/sysinternals/FileAndDisk/PageDefrag.mspx)에서 구할 수 있습니다. 앞서 언급했듯이 Windows 페이지 파일은 Windows가 온라인 상태인 동안에는 조각 모음할 수 없습니다. 그것은 Windows 레지스트리 파일과 이벤트 로그의 경우에도 마찬가지입니다. PageDefrag는 작은 드라이버를 사용하여, Windows가 부팅을 마치고 이러한 파일들을 잠그기 전에 조각 모음을 수행할 수 있게 해줍니다. PageDefrag를 실행하고 다음번 다시 부팅 또는 다시 부팅할 때마다 실행되도록 설정하면 됩니다. 시스템이 다시 부팅되면, (부팅 프로세스 중 전에 디스크 검사가 실행되던 지점에서) 목록에 명시된 파일들의 조각을 모으게 됩니다(그림 6 참고).

그림 6 PageDefrag에서 조각 모음을 수행할 파일들

그림 6** PageDefrag에서 조각 모음을 수행할 파일들 **

PageDefrag가 완료되면 시스템은 부팅 과정을 정상적으로 마무리합니다. PageDefrag에 대한 자세한 내용은 Lance Whitney가 작성한 9월호 Utility Spotlight를 참고하십시오(technetmagazine.com/issues/2007/09/UtilitySpotlight). 참고로, PageDefrag는 Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003에서만 지원되며 Windows Vista에서는 아직 지원되지 않고 있습니다.

PageDefrag 외에도 Sysinternals에서는 Contig라는 도구도 제공하고 있습니다. 이 도구는 특정 파일을 수작업으로 조각 모음할 수 있게 해줍니다(microsoft.com/technet/sysinternals/FileAndDisk/Contig.mspx). 이 기능은 특정 파일이 일반적인 조각 모음 작업을 통해서는 조각 모음되지 않거나 조각 모음을 완료한 후에 특정 파일만 조각화된 경우에 유용하게 활용할 수 있습니다.

Contig는 또한 와일드카드를 사용하여 디렉터리 또는 하위 디렉터리 전체를 대상으로 조각 모음을 수행할 수 있습니다. 다음 명령은 구체적 위치에 관계없이 Windows 디렉터리 아래의 모든 파일에 대한 조각 모음을 수행합니다.

Contig –s c:\Windows\*.*

–v 스위치를 사용하면 화면에 자세한 정보가 표시되면서 작업이 진행되고 –q 스위치를 사용하면 정보 표시 없이 진행됩니다.

Wes Miller는 텍사스 오스틴에 있는 Pluck(www.pluck.com)의 개발 관리자입니다. 이전에는 오스틴에 위치한 Winternals Software에서 근무했으며 Microsoft에서 프로그램 관리자 및 Windows 제품 관리자로 일하기도 했습니다. 문의 사항이 있으면 technet@getwired.com을 통해 연락하십시오.

© 2008 Microsoft Corporation 및 CMP Media, LLC. All rights reserved. 이 문서의 전부 또는 일부를 무단으로 복제하는 행위는 금지됩니다..