본문 바로가기

프로그래밍

내 컴퓨터를 느려지게 하는 미스테리 현상 - 디스크 단편화(디스크 조각모음)

컴퓨터를 몇 년 쓰다보면 컴퓨터가 많이 느려진 느낌을 누구나 한 번 쯤 가져보게 마련입니다. 그러나 단지 느낌이 아니라 실제로 프로그램을 실행해보면 예전보다 훨씬 느리고 파일 복사나 다운로드 시에도 시간이 좀 더 걸리는 경우가 있습니다. 바이러스 검사를 해보아도 깨끗하고, 스파이웨어도 진단되지 않지만 이상하게 컴퓨터가 느려진 느낌이 드는건 왜일까요?

컴퓨터를 오래 사용하다보면 프로그램도 점점 늘어가고, 하드 디스크의 용량도 줄어들기 때문에 컴퓨터의 성능이 낮아지기도 합니다. 하지만 컴퓨터를 느려지게 하는 대표적인 원인은 바로 디스크 단편화 때문입니다. 디스크 단편화란 Windows에서 파일을 자주 읽고 써서 파일이 이곳 저곳으로 흩어지게 되는 현상을 말합니다.

컴퓨터는 하드 디스크를 작은 조각으로 나누어 관리합니다. 한 학년을 반으로 나누는 것이나, 동전을 셀 때 10개 단위로 모아 놓으면 셈하기 편리한 것처럼 관리를 편하게 하기 위해서입니다. 이러한 하드 디스크의 조각을 클러스터라고 합니다. 클러스터는 기본적으로 4KB 정도됩니다.

참고
2GB 이상의 하드드라이브를 NTFS 파일 시스템으로 포맷할 경우, 기본 할당 크기는 4KB입니다.


내부 단편화

이런 클러스터라는 조각들이 가득 들어 있는 것이 하드 디스크라고 보면 됩니다. 만약 하드 디스크에 4KB 이하의 파일을 저장한다면 어떻게 될까요? 별로 문제는 없습니다. 파일은 하나의 클러스터를 정해 그 안에 저장됩니다. 그렇다면 클러스터 안의 나머지 공간은 어떻게 될까요? 쓰이지 않는답니다. 4KB 짜리 클러스터 하나에 1KB 짜리 파일을 넣고 3KB가 남아도 남은 3KB는 더 이상 사용되지 않습니다. "어라? 이건 낭비 아닌가요?"라고 지적할 분도 있을 겁니다. 물론 낭비이긴 합니다. 이러한 현상을 내부 단편화(Internal fragmentation)이라고 합니다. 전문 용어지만, 개념은 이해하셨을 겁니다. 내부 단편화란 클러스터 내부에 쓰지 않는 곳이 생기는 것을 말합니다.

외부 단편화

하지만 내부 단편화보다 더 문제가 있습니다. 그것은 바로 외부 단편화(External fragmentation)입니다.
외부 단편화는 언제 생길까요? 예를 들어 봅시다. 40KB 짜리 파일이 있어서 저장을 하려고 한다면, 하드 디스크의 남은 공간 중에서 40KB 짜리 파일이 들어갈 수 있는 공간을 찾아 아래 그림과 같이 저장합니다.



그 후, 32KB짜리 파일을 더 저장할 일이 생겼을 때, 아래와 그림과 같이 저장됩니다.


여기까지는 큰 문제가 없습니다. 이제, 이전에 저장하였던 40KB 짜리 파일이 필요없어서 지웁니다. 빈공간이 40KB 생겼네요.



다음에 불행하게도 72KB 짜리의 파일이 저장된다면 어떻게 될까요? 비어 있는 공간부터 저장이 되므로 40KB 빈공간에 파일의 40KB 부분만 저장이 되고, 나머지 부분은 멀리 떨어진 부분에 저장이 됩니다. 아래와 같은 모습이 됩니다. 파일이 쪼개어 저장이 되었죠? 이렇게 파일이 조각나는 현상이 외부 단편화입니다.



위의 예에서는 파일이 두동강 나버렸지만, 실제로는 무수한 조각으로 나뉘어집니다. 이렇게 조각이 생겨버리면 무슨 문제가 생길까요? 하드 디스크의 구조와 연관이 있습니다.

하드 디스크의 구조

하드 디스크를 열어보면 왼쪽 그림과 같은 모양을 하고 있습니다. 그림에 보이는 동그란 알루미늄 원판을 플래터(platter)라고 합니다. 축음기의 레코드 판을 생각하면 이해가 쉬울겁니다. 플래터는 분당 7200~15000 번씩 회전합니다. 오래된 하드 디스크에서 '붕~' 하는 소음이 난다면 이 플래터가 돌아가는 소리일 것입니다.
플래터가 회전 운동을 한다면, 헤드는 수평 운동을 합니다. 헤드는 축음기의 바늘처럼 좌우로 움직이며, 플래터 표면을 스치듯 지나가며 플래터 표면의 자성을 읽어들입니다. 헤드와 플래터의 간격은 0.1~0.5 마이크론 정도이며, 담배 입자의 간격보다 더 작습니다. 하드 디스크에서 '극~ 극~'하는 작은 소리가 난다면, 바로 이 헤드가 움직이는 소리입니다.
하드 디스크는 이처럼 플래터의 회전운동과 헤드의 수평운동의 결합으로 플래터의 구석구석까지 클러스터를 쓰고 읽을 수가 있습니다.

만약 위의 예에서 보았듯이, 파일이 조각나면 무슨 문제가 생길까요? 파일이 연속적으로 나열된 클러스터에 저장되어 있다면, 헤드가 플래터 위를 움직이는 거리는 짧습니다. 플래터가 살짝만 회전하더라도 파일을 모두 읽을 수 있을 것입니다. 하지만 파일이 조각나있으면 하드 디스크는 무척 바빠집니다. 플래터는 계속 회전해야 하며 헤드도 수평운동을 해야합니다. 플래터의 구석 구석에 파일의 조각이 흩어져져있다면 파일을 읽어오거나 저장하는 시간이 길어집니다.
지금까지 예에서 나온 파일의 크기는 단지 몇 십 KB 정도일 뿐이었습니다. 하지만 실생활에서 사용하는 음악파일이나 동영상 파일은 이보다 100~10,000배 이상 크기때문에 디스크 단편화는 더욱 심각해 질수 있습니다. 600MB 짜리 파일의 경우 100~600개 이상 조각나는 경우도 흔히 있습니다.
디스크 조각 모음을 해보자
디스크 단편화는 컴퓨터를 느리게 할 뿐만아니라, 하드 디스크에 일을 많이 시키므로 하드 디스크의 수명도 단축시킵니다. 어떻게 해야할까요? Windows 에는 이러한 디스크 단편화를 막기 위한 프로그램이 하나 들어 있습니다. 바로 디스크 조각모음입니다. 디스크 조각 모음을 실행하면 조각난 파일을 최대한 붙여 놓기 때문에 디스크 단편화 현상이 많이 줄어들게 됩니다.
디스크 조각모음은 Windows XP 이후에 모습이 많이 바뀌었습니다. 이 글에서는 두 버전을 나누어 설명하겠습니다. 사용하는 Windows에 맞게 진행하기 바랍니다.

Windows XP, Windows 2000을 사용하는 경우
Windows 95, 98, Me를 사용하는 경우

마치며

디스크 조각모음을 완료하기까지 시간이 얼마나 걸렸나요? 1~2시간 안에 끝났다면 빠른 편입니다. 자기전에 디스크 조각 모음을 실행해 놓았는데 자고 일어나 보니 아직 끝나지 않았던 분들은 없는지요? 디스크 조각모음은 주기적으로 하는 것이 좋습니다. 동영상이나 대용량 파일을 자주 다운로드 받는다면 적어도 2~3달에 한 번 정도는 디스크 조각모음을 실행하는 것이 좋습니다. 물론 보약도 너무 많이 먹으면 몸에 해롭듯이 디스크 조각모음도 자주하면 하드의 수명을 단축시킬 수 있으므로 계획을 세워 주기적으로 하는 습관을 갖는 것이 바람직합니다.



[저자] 안철수연구소 EPI Unit 기술문서팀 이지훈

[안철수연구소 2007-05-14]
출처 : http://kr.ahnlab.com/info/securityinfo/infoView.ahn?seq=9882&category=03&email_nm=securityletter177&target_page_nm=ab005