나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-06-25 00:02:53

디스크 조각 모음

1. 개요2. 상세3. 작동 원리4. 사용자 지침5. 플래시 메모리 저장 매체에서6. 기타

1. 개요

파일:diskdefrag.png
Windows 10에 내장된 '드라이브 최적화'

보조 기억 장치 최적화 프로그램.

2. 상세

대부분의 운영체제에 기본으로 포함하고 있는 프로그램이다. 하드 디스크파일 저장 시 동시 작성, 동시 입출력, 저장 공간 부족 등 여러 요인으로 순차적으로 저장되지 않는 경우가 생긴다. 즉, 파일이 저장 장치 또는 운영 체제의 문제로 인해 여러 개로 쪼개져서 이곳 저곳에 흩어져서 저장되는데 이를 단편화(fragmentation)라고 한다. 단편화가 발생한 파일을 읽기 위해서는 저장 장치가 여기저기 흩어진 조각들을 모두 찾아 읽어야 한다. 필요한 파일은 하나인데 막상 읽을 때는 더 작은 용량의 여러 파일을 읽는 효과가 발생하여 실행 속도가 느려진다. 디스크 조각 모음은 단편화된 파일을 한 덩어리로 모아준다.

기본 프로그램이 아닌 전문적인 디스크 조각 모음 프로그램은 어느 수준의 작업을 할지 정할 수 있다. 간단히는 가장 큰 조각을 그 자리에 둔 채 이리저리 흩어진 작은 조각들을 찾아서 붙이는 방식, 파일을 한 덩어리로 이어붙인 후 디렉토리와 파일명의 순서대로 정렬시키는 방식, 사용 빈도가 높은 시스템 파일은 읽기 속도가 빠른 외측에 몰아놓는 방식 등 세세한 옵션이 있다.

조각난 파일이 많고 디스크 조각 모음과 재정렬 수준 옵션이 높을수록 작업 시간이 길어지지만 디스크 조각 모음 프로그램에 따라서도 작업 시간이나 디스크 조각 모음 효율에 큰 차이가 난다.

디스크 조각 모음을 할 때는 최대한 종료할 수 있는 프로그램은 다 닫은 후에 실행해야 속도와 안정성에 좋다. 상당수의 프로그램이 작동할 때 HDD를 사용하고 디스크 조각 모음과 동시에 다른 프로그램을 구동하면 HDD의 부하가 높아지기 때문이다.

하드 디스크의 속도가 떨어지던 시절엔 컴퓨터의 속도를 좌지우지하는 요인 중 하나였지만 캐시 메모리의 대형화와 자기 디스크에 대한 기술 발전 등으로 처리 속도나 저장 용량 등의 성능이 급속히 향상되고 디스크 조각 모음이 불필요한 SSD가 널리 보급되는 오늘날에는 중요성이 다소 떨어졌다.[1] 그렇지만 여전히 하드 디스크만 쓰고 있다면 시간적인 여유가 있을 때 디스크 조각 모음을 해 주는 것이 좋다. 아무리 기술이 발전한다고 하더라도 단편화가 일정 수준 이상으로 진행되면 눈에 띄게 체감 성능이 떨어지기 때문이다.

3. 작동 원리

랜덤 액세스로 아래 저장 공간에서는 일어나지 않을 수도 있지만 단편화가 일어나는 상황을 가정하였다.

4. 사용자 지침

디스크가 꽉 찬 상태에서는 디스크 조각 모음이 실행되지 않는다. 디스크 조각 모음을 할 때는 파일을 임시로 같은 디스크의 다른 곳에 복사한 후 원래 파일을 지우기 때문에 여분의 공간이 필요하다. 따라서 여유 용량이 매우 적은 상태로 디스크 조각 모음을 실행하면 파일을 조금씩 옮기기 때문에 매우 비효율적으로 오랜 시간동안 디스크 조각 모음을 하게 된다. 디스크 조각 모음 전에는 항상 어느 정도 여유 공간을 만들자.

디스크 조각 모음은 거의 토렌트와 맞먹는 수준으로 하드 디스크에 부하를 거는 작업이기 때문에 너무 자주 하는 것도 좋지 않으며 디스크 조각 모음 중에는 하드 디스크 속도가 심각하게 느려지므로 컴퓨터를 쓰지 않는 시간대에 1~2주에 한 번 정도, 그리고 단편화가 10% 이상 진행되었을 때 디스크 조각 모음을 하는 것이 적당하다.

파일이 조각나는 것을 예방하기 위해서 사용자가 할 수 있는 대표적인 방법은 파일을 동시에 여러 개 다운받는 행위를 자제하는 것이다.

5. 플래시 메모리 저장 매체에서

물리적 시간 소요가 발생하지 않는 플래시 메모리형 저장 매체(SSD, 외장 SSD, USB 메모리, SD카드 등)[2]Windows 7과 그 이하 운영 체제에서는 디스크 조각 모음을 사용하지 않는 것이 좋다. 컴퓨터 지식이 없는 사람을 위해 설명하자면 전자책은 책 정리를 할 필요가 없는 것과 비슷한 원리다. SSD 드라이브의 관리에는 조각 모음 대신 TRIM 작업을 진행하는데, 이것은 실제 데이터 저장공간 자체가 아니라 그와 연결된 파일 참조 목록을 최적화하는 작업이다.

플래시 메모리 기반 매체는 컨트롤러가 성능과 수명이라는 두 마리의 토끼를 동시에 잡기 위해 기술적인 이유로 여러 플래시 메모리 칩에 걸쳐 분산해 기록한다. SSD 제조 회사들은 높은 수준의 대역폭을 확보하기 위해 컨트롤러를 이용해 파일을 여러 플래시 메모리 칩에 분산 기록하는데 이를 인터리빙(Interleaving)이라 부른다. 플래시 메모리의 수명은 기록 횟수이기 때문에 컨트롤러는 모든 플래시 메모리 영역에 고른 횟수로 기록할 수 있도록 관리하는데 이를 마모 평준화(Wear Leveling)라고 한다. 그렇기 때문에 플래시 메모리 기반 매체는 하드 디스크와 다르게 단편화 문제가 없다. 오히려 하드디스크적 관점에서 SSD를 본다면 SSD의 성능과 수명은 파일이 낸드 플래시 칩 내에서 물리적으로 파편화되어 있을 때 더 향상된다.

하드 디스크는 파일 접근을 위해 스핀들 모터로 플래터를 회전하는 상태에서 액추에이터로 헤드를 움직여 섹터를 탐색하는 구조이기 때문에 단편화가 심할수록 속도가 느려질 수밖에 없지만 플래시 메모리는 전자적인 방식을 사용해 접근하는 덕에 클럭 주기와 컨트롤러 처리 시간만 필요하기 때문에 기록 상태와 관계없이 접근 시간이 매우 짧다는 특징도 있다. 이는 파일이 저장된 위치를 순간적으로 찾아내는 성능 지표인 임의 접근 시간을 보면 알 수 있다. 하드 디스크는 보통 9~20ms, USB 메모리는 1ms 미만, SSD는 아무리 느려도 0.1ms 이하이다. 즉, 흩어진 조각이 10개일 경우 그것들을 모두 읽어들이는 데 필요한 시간이 하드 디스크는 최소 90ms가 걸리는 반면 SSD는 10개든 100개든 1000개든 간에 똑같이 1ms 안에 해낸다.

플래시 메모리에도 하드 디스크의 플래터와 같이 재기록 수명이 있는데 디스크 조각 모음은 전체 공간을 썼다 지웠다 하면서 재기록 횟수를 소모하면서 수명을 감소시킨다. 그래서 Windows 7에서는 클린 설치 시 SSD가 있다면 디스크 조각 모음 자동 실행이 작동하지 않는다.

Windows 7까지의 디스크 조각 모음은 플래시 메모리 매체에 악영향을 끼치는데 플래시 메모리는 데이터를 기록할 때마다 수명이 줄어들기 때문이다. 전술한 이유로 디스크 조각 모음에 대한 실익도 없으니 실행하지 않는 것이 좋다. 만약 자동 실행 기능이 설정되어 있다면 좋을 일이 없으므로 꺼 두는 것이 좋다.

Windows 8 이후부터 SSD의 특성을 고려해 만들어졌다. '디스크 조각 모음'이 '드라이브 조각 모음 및 최적화'로 바뀐 점에서 기능 차이를 추측할 수 있다. 실행하면 보이는 첫 화면에서 미디어 유형 란에 'SSD(반도체 드라이브)'라고 뜬다. 여기서 최적화 버튼을 누르면 디스크 조각 모음 작업이 아니라 MFT를 최적화하고 TRIM을 진행한다. 단, Windows에 기본으로 내장된 드라이브 최적화 프로그램 한정이며 백신(예를 들어 노턴 시큐리티) 등에 딸려 있는 최적화 기능에 있는 디스크 조각 모음은 SSD 최적화를 지원하지 않아 무턱대고 최적화 작업을 진행했다간 화를 당할 수 있다. 반드시 최적화 내용을 살펴보고 디스크 조각 모음이 있다면 그 기능은 빼놓고 해야 한다.

6. 기타

Windows 7 이상의 운영 체제를 사용 중이라면 내장된 프로그램이 자동으로 디스크 조각 모음을 실행하므로 Windows XP 이하의 컴퓨터를 이용하지 않는다면 별도로 신경써서 진행할 필요는 없다. 설정을 해제할 수도 있다.

Microsoft에게 인수된 Sysinternals가 제작한 Contig를 이용하면 고속/고효율로 디스크 조각 모음을 할 수 있다. 단 커맨드 라인 툴이므로 GUI 프론트엔드인 'Power Defragmenter'를 통해 사용하는 편이 손발이 편하다. #

Windows에서 페이징(가상 메모리) 파일과 레지스트리 하이브는 디스크 조각 모음을 시켜주면 큰 성능 향상을 보일 때도 있다. 단 이것은 일반적인 디스크 조각 모음 소프트웨어로는 불가능하고 상기한 Sysinternals의 PageDefrag[3] 혹은 Elcor의 Registry Defragmentation 등의 프로그램을 사용해야 한다. 레지스트리는 데이터의 물리적 디스크 조각 모음보다는 문맥적 디스크 조각 모음이라고 하는 편이 보다 정확할 것이다. 유닉스/리눅스 계열은 가상 메모리를 swap 파티션에서 해결하고 레지스트리 개념이 애초부터 없으니 상관없다.

macOS에는 디스크 조각 모음 유틸리티가 없는 것처럼 보이지만 사실은 20MB 미만의 파일에 한해 운영 체제가 알아서 백그라운드에서 단편화를 제거한다. 그보다 큰 파일은 디스크에 기록할 때 가장 큰 공간에 먼저 기록하는 방식으로 단편화가 생기지 않도록 한다. 그러나 대용량 파일의 읽고 쓰기가 잦거나 하드 디스크 공간이 부족하면 단편화를 피할 수 없다. Apple에서는 전자는 서드파티의 유틸리티를 사용할 수 있으며 후자는 하드 디스크를 좀 더 큰 용량으로 업그레이드하라고 권장한다. 서드파티의 유틸리티를 사용하지 않는다면 포맷하고 타임 머신의 백업을 다시 불러들여오면 된다.

파일:external/www.vaio.or.kr/bb4f2b8462e3d64bfe1cd7828e6b5602.jpg

Windows 내장 디스크 조각 모음 프로그램의 시초는 디스크키퍼 코퍼레이션에서 만들었다. 디스크 최적화 유틸리티 전문 업체로 Microsoft에서 하청을 받은 것이다. 원래 디스크키퍼는 무지막지하게 비싼 가격에 팔았는데 회사명을 콘두시브 테크놀로지#로 변경하면서 잠시 개인용 제품의 가격을 매우 저렴하게 낮춘 적이 있었다. 디스크키퍼는 빠른 하드 디스크 조각 모음 속도와 단편화 발생을 예방하는 기능, 지능형 디스크 조각 모음[4]을 갖춰 디스크 조각 모음계의 끝판왕 유틸리티로 유명하다. SSD의 대두 이후에는 TRIM까지 지원하는 최적화 기술을 제공함으로써 디스크키퍼 하나로 하드 디스크와 SSD를 통합 관리할 수 있으며 메모리 캐시 기능도 추가되었다. 현재 램디스크가 아닌 캐시 프로그램 중에서는 유일하게 동적 할당[5]을 지원하지만 그 반작용인지 메모리 캐시 하나에만 주력하고 고정적으로 할당하는 프로그램보다는 캐시 성능이 떨어진다는 평을 받는다.# 2020년 콘두시브 테크놀로지는 디스크키퍼와 SSD 키퍼, V-locity를 하나로 통합해 DymaxIO를 출시했으며 디스크키퍼를 단종했다.

단편화를 줄일 수 있는 방법으로 저장 장치의 클러스터 크기를 64KB로 증가시키는 방법이 알려져 있다.[6] 저장 장치는 클러스터 크기를 한 칸으로 해서 수많은 칸으로 저장되는데 기본값은 4KB다. 1MB의 파일은 클러스터 크기가 4KB라면 256조각, 64KB라면 16조각이다.[7] 하나의 파일이 가지는 조각의 숫자가 줄어들어서 단편화가 줄어들어 64KB 이하의 미세 단편화가 발생하지 않는다는 것이다. 그러나 단편화를 완전히 해결할 수 있는 방법이 아니며 64KB 이하의 적은 용량의 파일이 많은 경우 저장 효율이 낮아지는 단점도 있다.

[1] 가장 대중적으로 판매되는 하드 디스크들도 캐시 메모리가 과거에 비해 엄청나게 늘어나 디스크 조각 모음의 필요성이 거의 없어졌다.[2] 구분이 힘들다면 '회전'하는 것, 플로피 디스크, CD, DVD, 블루레이, ZIP 드라이브, 하드 디스크가 아닌 모든 저장 장치라고 생각하면 편하다.[3] Windows 7과 vista부터는 지원하지 않는다.[4] 자주 사용하는 데이터를 앞쪽으로 옮겨서 속도 향상을 꾀한 것으로 근본 원리는 앞자르기와 동일하다.[5] 메모리 사용량에 따라 실시간으로 캐시 크기를 조절.[6] 클러스터는 파일 시스템에서 말하는 최소 저장 단위로 어떤 용량의 파일이라도 저장될 때는 클러스터 크기에 맞춰서 1개에서 여러 개의 클러스터로 저장된다.[7] 1KB의 파일을 저장할 경우에는 클러스터 크기에 따라서 실제로 저장되는 용량은 4KB 클러스터 크기에서 4KB, 64KB 클러스터 크기에서 64KB로 저장된다.