2009년 7월 5일 일요일

클러스터 크기 조정으로 HDD 속도 10% 향상

1. 클러스터 크기(Cluster Size)

파일 시스템에서 말하는 클러스터란 디스크에 파일을 저장하는 단위를 뜻합니다. 예를 들어 530KB짜리 파일을 저장하는 경우 디스크의 클러스터 크기가 4KB라면 530/4=132.5, 즉 클러스터 133칸인 532KB를 사용하게 되고, 클러스터 크기가 64KB라면 530/64=8.28125 즉 클러스터 9칸인 576KB를 사용하게 됩니다.

클러스터가 작으면 낭비하는 공간(slack)이 줄어들어 디스크를 효율적으로 사용할 수 있는 반면, 다루어야 하는 클러스터 수가 많아져서 속도는 느려진다는 단점이 있습니다. 이 글에서는 클러스터를 기존보다 크게 조정함으로써 하드디스크 공간을 어느 정도 희생하더라도 속도 향상을 꾀하는 것이 목표입니다. 아래는 NTFS로 포맷된 OS 파티션(C:)을 기본값인 4KB에서 64KB로 늘리는 방법입니다.

작은 클러스터(4KB) : 디스크 용량을 효율적으로 사용(532KB vs 576KB)
큰 클러스터(64KB) : 클러스터 수가 적어서 속도가 빠르다(133칸 vs 9칸)

2. 클러스터 크기 조정 방법

클러스터 크기를 조정하는 가장 간단한 방법은 하드디스크를 처음 포맷할 때 설정하는 것입니다. 하지만 이미 하드디스크를 사용하는 중이라 포맷이 힘들다면  다소 복잡한 단계를 거쳐야하는데, 다음 모든 과정에 자신이 없다면 무리하게 시도하지 마시고, 일단 기억만 하셨다가 나중에 포맷할 일이 생기면 그때 적용하시기 바랍니다.

1) 디스크 오류 검사

디스크 오류 검사 스크린샷

클러스터 크기 조정은 아주 민감한 작업이므로 디스크에 문제가 없는 상태에서 진행해야 합니다. 이 절차를 소홀히 했다가는 본 과정에서 에러가 발생하면서 자료를 모두 날려버릴 수도 있습니다.

2) 파티션 백업 및 복구용 CD 확보

Acronis True Image Home 2009 스크린샷

마찬가지로 예방 차원에서 파티션을 백업합니다. Norton Ghost나 Acronis True Image Home 중에서 편한대로 하시되, 복구용 디스켓이나 복구용 CD(시만텍 복구 디스크, 아크로니스 부팅용 복구 미디어, Hiren's BootCD 등)도 필수로 있어야합니다. 만약 OS 파티션을 작업하다가 에러가 발생하면 윈도우 부팅조차 되지 않기 때문입니다.

3) 클러스터 크기 조정

본격적인 과정입니다. 자료를 살린 채로 클러스터 크기를 조정하기 위해서는 PowerQuest PartitionMagic이나 Acronis Disk Director Suite가 필요합니다. 저는 아크로니스 디스크 디렉터로 작업했지만 파티션매직도 과정은 동일합니다.

Acronis Disk Director Suite 스크린샷
(1) 조정할 파티션 선택

(2) Change Cluster Size 메뉴

Acronis Disk Director Suite 스크린샷
(3) 클러스터 크기 선택 및 OK 버튼

Acronis Disk Director Suite 스크린샷
(4) Commit 버튼

(5) 재부팅

이 과정에서 정전이나 물리적 충격, 또는 디스크에 오류가 존재하면 저장되어있던 자료를 읽지 못하게 됩니다. 2번 과정에서 백업한 이미지로 파티션을 복구한 뒤에 처음부터 다시 시작하세요.

4-1) 벤치마크(성능)

CrystalDiskMark 스크린샷
ATTO Disk Benchmark 스크린샷CrystalDiskMark 스크린샷
 
ATTO Disk Benchmark 스크린샷

실제로 성능 향상이 이루어졌는지 확인하는 과정입니다. 왼쪽이 4KB 클러스터, 오른쪽이 64KB 클러스터입니다. 수치상으로는 약 5~15% 향상된 걸로 나오네요.

4-2) 벤치마크(용량 효율)

다음으로는 용량 효율을 비교해보겠습니다.

Karen's Disk Slack Checker 스크린샷
Karen's Disk Slack Checker 스크린샷
Karen's Disk Slack Checker 스크린샷
4KB 클러스터 파일 등록정보 스크린샷
64KB 클러스터 파일 등록정보 스크린샷

OS용 파티션은 수 KB 미만의 작은 파일이 대부분을 차지하기 때문에 낭비되는 용량(slack)이 엄청나게 큰 것을 볼 수 있습니다. 1KB짜리 파일을 저장하더라도 64KB가 필요하기 때문에 나머지 63KB는 그냥 사라지는 것이지요. 실제 데이터 크기(15.8GB)와 저장된 크기(18.2GB)를 비교하면 약 15%가 낭비되는 것으로 나옵니다.

4KB 클러스터 파일 등록정보 스크린샷
64KB 클러스터 파일 등록정보 스크린샷

반면에 고용량 파일로 채워진 저장용 파티션은 낭비가 거의 없습니다. 실제 데이터가 501GB로 OS 파티션의 데이터보다 훨씬 크지만 낭비되는 공간은 0.4% 미만입니다. 즉 저용량 파일과 고용량 파일의 비율에 따라 낭비율이 결정되는데, 약간의 통계학적 지식만 이용하면 쉽게 예상해볼 수 있습니다.

계급 내에서는 균등분포로 가정 
낭비 용량 = (64-계급값)*도수
낭비 용량 예측 (OS 파티션, 64KB 클러스터 기준)
계급 계급값 파일 수 비율 낭비 용량
~ 1KB 미만 0.50KB 8,394개 16.4% 520.53MB
1KB 이상 ~ 2KB 미만 1.50KB 3,492개 6.8% 213.13MB
2KB 이상 ~ 4KB 미만 3.00KB 3,876개 7.6% 230.89MB
4KB 이상 ~ 8KB 미만 6.00KB 5,290개 10.3% 299.63MB
8KB 이상 ~ 16KB 미만 12.00KB 7,192개 14.0% 365.22MB
16KB 이상 ~ 32KB 미만 24.00KB 5,219개 10.2% 203.87MB
32KB 이상 ~ 64KB 미만 48.00KB 4,800개 9.4% 75.00MB
64KB 이상 ~ - 12,940개 25.3% 404.38MB
총계 - 51,203개 100.0% 2,313MB
실제 - 2,406MB

3. 덧붙여서

클러스터가 크면 좋다는 사실은 알고 있지만 용량 낭비가 심하다는 점 때문에 적용을 꺼려하던 분들을 위해서 정확한 수치를 제공했습니다. OS 파티션의 경우 절충안으로 16KB만 설정하는 것도 적당하다고 생각합니다.

제가 테스트한 HDD는 WD6400AAKS와 WD10EADS 모델로 일반적인 하드디스크입니다. RAID0 구성이나 SSD, 플래시 메모리에도 물론 적용할 수는 있지만, 클러스터가 크면 빠르다는 결론만 같을 뿐, 다른 이론적 접근이 추가로 필요합니다.

그리고 어디까지나 개인적으로 실험한 결과이기 때문에 10%라는 수치가 과장되었을 수도 있는데, 다른 벤치마크 결과들을 보더라도 일반적으로 속도가 5~10% 향상되는 것으로 나타납니다.

댓글 없음:

댓글 쓰기