디스크 조각 모음

 

[image]
Windows 10에 내장된 '드라이브 조각 모음 및 최적화'
1. 개요
2. 작동 원리[1]
3. 사용자 지침
4. 상세
5. 플래시 메모리 저장매체에서
6. 기타


1. 개요


하드디스크 최적화 프로그램.

2. 작동 원리[2]


  • ■■■■■■■■■■■■■□□□□□□□□□□□
24 MB의 공간에 4개의 파일이 이와 같은 형태로 저장되어 있다고 가정하자. 한 칸은 1 MB를 나타낸다.
  • ■■■■■■■■■■■■■□□□□□□□□□□
  • MB짜리 검은색[3] 파일은 별 이상 없이 저장되었다.
  • ■■■■■■■□□■■■■□□□□□□□□□□
이후 초록색 파일이 삭제된 상태에서 3 MB를 차지하는 새로운 파일을 저장하려면...
  • ■■■■■■■■■■■■■□□□□□□□□□
보라색 파일은 파편화가 일어나게 된다.
  • □□□□■■■■■■■■■□□□□□□□□□
추가로 분홍색 파일과 검정색 파일을 삭제하였다.
  • □□■■■■■■■■■■■■■□□□□□□□
이 상태에서 5 MB짜리 갈색 파일을 저장하려고 하면 이쪽도 파편화가 된다. 결과적으로 파일은 4개지만 액세스 횟수는 7번이 되어 75%나 일을 더 해야 하는 상황이 된다.
  • ■■■■■■■■■■■■■■■□□□□□□□□□
이걸 조각 모음을 통해 이런 상태로 정렬하면 액세스 횟수가 정상화된다.

3. 사용자 지침


디스크가 꽉 찬 상태에서는 디스크 조각 모음이 실행되지 않는다. 조각 모음을 할 때는 파일을 임시로 같은 디스크의 다른 곳에 복사한 후 원래 파일을 지우기 때문에 여분의 공간이 필요하다. 따라서 여유 용량이 매우 적은 상태로 조각 모음을 실행하면 파일을 조금씩 옮기기 때문에 매우 비효율적으로 오랜 시간동안 조각 모음을 하게 된다. 조각 모음 전에는 항상 어느 정도 여유 공간을 만들자.
또한 디스크 조각 모음은 거의 토렌트와 맞먹는 수준으로 하드디스크에 부하를 거는 작업이기에 너무 자주 하는 것도 좋지 않으며 조각 모음 중에는 하드디스크 속도가 심각하게 느려지므로 컴퓨터를 쓰지 않는 시간대에 1~2주에 한 번 정도 그리고 파편화가 10% 이상 진행되었을 때 조각 모음을 하는 것이 적당하다.
애초에 파일이 조각나는 것을 예방하기 위해서 사용자가 할 수 있는 대표적인 방법은 파일을 동시에 여러 개 다운받는 행위를 자제하는 것이다.
그리고 조각 모음을 하다가 중단시 한 만큼 파일이 남는다. 즉 용량이 그만큼 또 찬다는 소리. 1% 진행 중에라도 멈추면 그나마 다행이지만 여튼 하드가 클수록 % 단위가 크기에 중단시 잔용량이 많아 공간 낭비가 심해서 처음에 오래 걸리는지 모르던 이용자들이 하다가 오래 걸려 중단하는 일이 있다.

4. 상세


대부분의 운영 체제에 기본으로 포함하고 있는 프로그램이다. 하드디스크SSD같은 저장 장치에 파일 저장 시 동시 작성, 동시 입출력, 저장 공간 부족 등 여러 요인으로 순차적으로 저장되지 않는 경우가 생긴다. 즉 파일이 저장 장치 또는 OS의 문제로 인해 여러 개로 쪼개져서 이 곳 저 곳에 흩어져서 저장되는 것을 말한다. 이런 것을 파편화라고 부른다. 파편화가 발생한 파일을 읽기 위해서는 저장 장치가 여기저기 흩어진 조각들을 모두 찾아 읽어야 한다. 필요한 파일은 하나인데 막상 읽을 때는 더 작은 용량의 여러 파일을 읽는 효과가 발생하여 실행 속도가 느려지는 것이다. 이러한 파편화된 파일을 디스크 조각 모음을 이용하여 파일을 정상적인 한 덩어리로 모아준다.
기본 프로그램이 아닌 전문적인 조각 모음 프로그램은 어느 수준의 작업을 할지 정할 수 있다. 간단히는 가장 큰 조각을 그 자리에 둔 채 이리저리 흩어진 작은 조각들을 찾아서 붙이는 방식, 파일을 한 덩어리로 이어붙인 후 디렉토리와 파일명의 순서대로 정렬시키는 방식, 사용 빈도가 높은 시스템 파일은 읽기 속도가 빠른 외측에 몰아놓는 방식 등 세세한 옵션이 있다.
조각난 파일이 많고 조각 모음과 재정렬의 옵션이 높을수록 작업 시간이 길어지지만 조각 모음 프로그램에 따라서도 작업 시간이나 조각 모음 효율에 큰 차이가 난다.
조각 모음을 할 때는 최대한 종료할 수 있는 프로그램은 다 닫은 후에 실행해야 속도와 안정성에 좋다. 상당수의 프로그램이 작동할 때 HDD를 사용하고 조각 모음과 동시에 다른 프로그램을 구동하면 HDD의 부하가 높아지기 때문이다.
과거 하드디스크의 속도가 떨어지던 시절엔 컴퓨터의 속도를 좌지우지하는 요인 중 하나였다. 그러나 캐시 메모리의 대형화와 자기 디스크에 대한 기술 발전 등으로 처리 속도나 저장 용량 등의 성능이 급속히 향상되고 디스크 조각 모음이 거의 불필요한 SSD가 널리 보급되어가는 오늘날에는 중요성이 다소 떨어졌다.[4] 게다가 조각 모음은 거의 토렌트와 맞먹는 수준으로 하드디스크에 부하를 거는 작업이기 때문에 너무 자주 실행하면 오히려 하드디스크 내구성에 문제를 일으킬 수 있다. 따라서 거의 이용하지 않는 시간대를 노려 1주~2주 정도에 한번 자동으로 조각 모음을 하도록 하는 것이 좋다.

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


물리적 시간 소요가 발생하지 않는 플래시 메모리형 저장 매체[5]는 '''사용하지 않기를 권한다'''. 컴퓨터 지식이 없는 사람을 위해 설명하자면 전자책은 책 정리를 할 필요가 없는 것과 똑같은 원리다.
플래시 메모리 기반 매체 역시 파편화가 발생한다. HDD는 기계적인 방식을 사용하여 파일에 접근하므로 파편화가 심할수록 속도가 느려지지만 플래시 메모리 매체는 파일에 접근할 때 전자적인 방식을 사용하기 때문에 엑세스 시간이 매우 짧아 파편화에 따른 속도 차이가 거의 없다. 이는 파일이 저장된 위치를 순간적으로 찾아내는 성능 지표인 랜덤 액세스를 보면 알 수 있다. 하드디스크는 보통 9~20ms, USB 메모리는 1ms 미만, SSD는 아무리 느려도 0.1ms 이하이다. 즉 흩어진 조각이 10개일 경우 그것들을 모두 읽어들이는 데 필요한 시간이 하드디스크는 최소 90ms가 걸리는 반면 SSD는 10개든 100개든 1000개든 간에 별 차이 없이 1ms 안에 해낸다.
플래시 메모리에도 하드디스크의 플로터와 같이 재기록 수명이 있는데 조각 모음은 전체 공간을 썼다 지웠다 하면서 재기록 횟수를 소모하면서 '''수명을 감소'''시킨다. 그래서 Windows 7에서는 클린 설치 시 SSD가 있다면 디스크 조각 모음이 작동하지 않는다.
조각 모음은 플래시 메모리 매체에 오히려 악영향을 미치는데 이것은 플래시 메모리의 특성에서 기인한다. 플래시 메모리는 데이터를 기록할 때마다 수명이 줄어드는데 SLC라면 큰 문제는 없다. SLC는 약 5~10만 회의 재기록 수명을 가지기 때문. 그러나 MLC로 가면 재기록 회수가 3천~1만 회로 대폭 줄어들고 TLC는 최대 1천 회 정도로 더 줄어든다. 거기다 제조 공정이 작을수록 이 수명은 더 줄어든다. 요즘 나오는 SSD가 저가형은 TLC를 많이 쓴다는 점을 생각해보면 무시할 수 없는 수치가 된다. 조각 모음에 대한 실익도 거의 없으니 '''굳이 할 필요가 없다'''라고 알면 된다. 특히 Windows 8 이상에서는 조각 모음 기능을 지원하지도 않는다. 만약 매니지먼트 기능을 쓴다면 좋을 일이 없으므로 해당 기능은 꺼두자.
Windows 8.1 이후에는 내장된 조각 모음 프로그램이 SSD 장착을 인식한다. '조각 모음'이 아니라 ''''드라이브 최적화''' 및 조각 모음'인 부분에서 기능의 차이를 추측해 볼 수 있다. 실행하면 보이는 첫 화면에서 미디어 유형 란에 'SSD(반도체 드라이브)'라고 뜬다. 여기서 최적화 버튼을 누르면 HDD에게 하는 조각 모음을 하는 것이 아니라 MFT를 최적화하고 TRIM을 진행한다. 단 Windows에 기본으로 내장된 조각 모음 프로그램 한정이며 '''백신(예를 들어 노턴 시큐리티) 등에 딸려있는 최적화 시스템에 있는 조각 모음은 SSD 최적화를 지원하지 않아 무턱대고 최적화했다간 화를 당하기 십상이다.''' 반드시 최적화 내용을 살펴보고 조각 모음이 있다면 그 기능은 빼놓고 하도록 하자. 2020년 1월 재확인 결과 노턴 시큐리티를 포함한 거의 대부분의 디스크 조각 모음 프로그램들은 '''아직도 SSD 최적화를 지원하지 않는다.'''
Windows 8.1부터 내장된 '드라이브 최적화 및 조각 모음'을 실행하고 난 뒤 곧장 작업 관리자의 성능 탭을 보자. 그러면 SSD가 논다며 활성 시간이 0~5% 이내로 뜨겠지만 막상 SATA 작동 등은 길게(2~3초 동안) 빛이 날 것이다.
몇몇 모델은 한참 동안[6] 드라이브 활성 시간이 100%를 보인다.
PMPMP3 플레이어는 어지간히 많이 혹사시키며 사용하지 않는 한 성능에 영향이 있을만큼의 파편화가 발생하지 않는다. 신경이 쓰인다면 백업 후 포맷한 후에 다시 복사해 넣도록 하자. 모든 파일이 각각 한 덩이씩 똑바로 들어가서 조각 모음을 한 것과 마찬가지가 되며 전송 인터페이스가 USB 2.0 미만일 경우라면 이 쪽이 차라리 빠르다. 실익은 없으니 자기 만족 이상의 의미는 없다는 점을 명심하자.
현재 대중화된 Windows 10(1909 기준)에서는 SSD와 HDD를 자동 인식하여 최적화 버튼을 누른다면 SSD는 TRIM을, HDD는 디스크 조각 모음을 진행하므로 걱정할 필요는 없다.
또한 SSD를 C드라이브로 설정시 '매주', '최적화'를 자동으로 하는 것이 기본 설정이기 때문에 신경을 쓸 필요도 없다
물론 PMP 중 하드디스크를 사용하는 종류는 디스크 조각 모음을 해도 된다.

6. 기타


Windows 7 이상의 OS를 사용 중이라면 내장된 프로그램이 자동으로 조각 모음을 실행하므로 XP 이하의 컴퓨터를 이용하지 않는다면 별도로 신경써서 진행할 필요는 없다. 물론 설정을 해제할 수도 있다.
Microsoft에게 인수된 Sysinternals가 제작한 Contig를 이용하면 고속/고효율로 조각 모음을 할 수 있다. 단 커맨드 라인 툴이므로 GUI 프론트엔드인 'Power Defragmenter'를 통해 사용하는 편이 손발이 편하다. 링크
Windows에서 페이징(가상 메모리) 파일과 레지스트리 하이브는 조각 모음을 시켜주면 큰 성능 향상을 보일 때도 있다. 단 이것은 일반적인 조각 모음 소프트웨어로는 불가능하고 상기한 Sysinternals의 PageDefrag[7], 혹은 Elcor의 Registry Defragmentation 등의 프로그램을 사용해야 한다. 그리고 레지스트리는 데이터의 물리적 조각 모음보다는 문맥적 조각 모음이라고 하는 편이 보다 정확할 것이다. 유닉스/리눅스 계열은 가상 메모리를 swap 파티션에서 해결하고 레지스트리 개념이 애초부터 없으니 상관없다.
macOS에는 디스크 조각 모음 유틸리티가 없는 듯이 보이지만 사실은 20MB 미만의 파일에 한해 OS가 알아서 백그라운드에서 단편화를 제거한다. 그보다 큰 파일은 디스크에 기록할 때 가장 큰 공간에 먼저 기록하는 방식으로 파편화가 생기지 않도록 한다. 그러나 대용량 파일의 읽고 쓰기가 잦거나 하드디스크 공간이 부족하면 단편화를 피할 수 없다. Apple에서는 전자의 경우 서드파티의 유틸리티를 사용할 수 있으며 후자의 경우 하드디스크를 좀 더 큰 용량으로 업그레이드하라고 권장한다. 서드파티의 유틸리티를 사용하지 않는다면 포맷하고 타임 머신의 백업을 다시 불러들여오면 된다.
[image]
Windows 내장 디스크 조각 모음 프로그램의 시초는 디스크키퍼 코퍼레이션에서 만들었다. 디스크 최적화 유틸리티 전문 업체로 Microsoft에서 하청을 받은 것이다. 원래는 무지막지하게 비싼 가격에 디스크키퍼라는 프로그램을 팔았는데 콘두시브 테크놀로지가 인수하면서 개인용 제품의 가격이 매우 저렴해졌다. 디스크키퍼는 빠른 하드디스크 조각 모음 속도와 조각 발생을 예방하는(!) 기능, 지능형 조각 모음[8]을 갖춰 조각 모음계의 끝판왕 유틸리티로 유명하다. SSD의 대두 이후에는 트림까지 지원하는 최적화 기술을 제공함으로써 디스크키퍼 하나로 하드디스크와 SSD를 통합 관리할 수 있다. 그리고 메모리 캐시 기능도 추가되었다. 현재 램디스크가 아닌 캐시 프로그램 중에서는 유일하게 동적 할당[9]을 지원하나 그 반작용인지 메모리 캐시 하나에만 주력하고 고정적으로 할당하는 프로그램보다는 캐시 성능이 떨어진다는 평을 받는다.#
파편화를 줄일 수 있는 방법으로 저장 장치의 클러스터 사이즈를 64KB로 증가시키는 방법이 알려져있다.[10] 저장 장치는 클러스터 사이즈를 한 칸으로 해서 수많은 칸으로 저장되는데 기본값은 4KB이다. 1MB의 파일의 경우 클러스터 사이즈가 4KB라면 256조각, 64KB라면 16조각이다.[11] 하나의 파일이 가지는 조각의 숫자가 줄어들어서 파편화가 줄어드는 것이다. 물론 64KB 이하의 미세 파편화가 발생하지 않는다는 것이다.[12]

[1] 랜덤 액세스로 아래 저장 공간에서는 일어나지 않을 수도 있지만 파편화가 일어나는 상황을 가정했습니다.[2] 랜덤 액세스로 아래 저장 공간에서는 일어나지 않을 수도 있지만 파편화가 일어나는 상황을 가정했습니다.[3] 다크 테마는 하얀색[4] 물론 여전히 하드디스크만 쓰고 있다면 시간적인 여유가 있을 때 조각 모음을 해 주는것이 좋다. 아무리 기술이 발전한다 하더라도 파편화가 일정 수준 이상으로 진행되면 눈에 띄게 체감 성능이 떨어진다.[5] SSD, 외장 SSD, USB 메모리, SD카드 등. 저장 장치에 구분이 힘든 일반인이라면 '회전'하는 것(플로피 디스크, CD, DVD, 블루레이, ZIP 드라이브, 하드디스크)이 아닌 모든 저장 장치라고 생각하면 편하다.[6] 3~10초 정도이지만 프리징 현상이 발견되는 경우도 발견.[7] Windows 7과 vista부터는 지원하지 않는다.[8] 자주 사용하는 데이터를 앞쪽으로 옮겨서 속도 향상을 꾀한 것으로 근본 원리는 앞자르기와 동일하다.[9] 메모리 사용량에 따라 실시간으로 캐시 크기를 조절.[10] 클러스터는 파일 시스템에서 말하는 최소 저장 단위로 어떤 용량의 파일이라도 저장될 때는 클러스터 사이즈에 맞춰서 1개에서 여러 개의 조각으로 저장된다.[11] 1KB의 파일을 저장할 경우에는 클러스터 사이즈에 따라서 실제로 저장되는 용량은 4KB 클러스터 사이즈에서 4KB, 64KB 클러스터 사이즈에서 64KB로 저장된다.[12] 근본적인 원인을 해결하지는 못하지만 안 한 것보다는 낫다는 평이지만 64KB 이하의 적은 용량의 파일이 많은 경우 역효과가 나기도 한다. 1Byte를 쓰기 위해서는 64KB를 써야 한다.