zj3t

email: euntaejang@gmail.com

Latest Posts

클러스터 (Cluster)

By 오후 10:10

운영체제는 저장매체의 공간을 활용하기 위해 파일시스템을 사용한다. 앞서 살펴본 바와 같이 LBA라는 주소 지정 방식을 사용할 경우 저장매체의 공간은 논리적으로 일렬로 쭉 늘어선 형태가 될 것이다. 이러한 논리적인 공간에 데이터를 읽고, 쓰고 하는 등의 관리를 위해 파일시스템이라는 좀 더 상위의 논리적인 구조를 사용한다. 
저장매체(하드디스크)의 물리적인 최소 단위는 1 섹터(512 바이트)이다. 따라서, 실제 하드디스크 컨트롤러에 의해 동작하는 단위도 섹터단위로 읽고 쓰여진다. 하지만 현대의 파일시스템들은 섹터단위로 데이터를 관리하지 않고, 여러 섹터를 묶은 클러스터라는 개념으로 데이터를 관리한다. 이는 평균적인 파일 크기가 커진 상황에서 섹터 단위로 관리하는 것은 비효율적이기 때문이다.
한 예로 클러스터의 크기가 4KB(4096 바이트)라고 했을 경우, 1 MB의 파일을 기록하고자 BIOS를 통해 I/O 명령을 전달 할 때 총 256번의 처리가 필요하다. 하지만 섹터 단위로 데이터를 관리할 경우 2,048번의 처리가 필요하다.
실제 디스크 컨트롤러는 섹터 단위로 처리하므로, 컨트롤러 입장에서는 별 차이가 없을 것이다. 반면, 운영체제 입장에서는 I/O와 같은 명령의 경우 인터럽트를 통해 처리 완료를 통보 받게 되는데 멀티 프로세스 환경에서 이러한 인터럽트가 줄게 되므로 더 큰 효율이 발생할 것이다.
윈도우에서는 위와 같이 포맷시 클러스터의 크기를 설정할 수 있다. 클러스터 크기를 지정하지 않을 경우 볼륨 크기에 따라 미리 정의된 클러스터 크기가 기본으로 할당된다. 볼륨 크기에 따른 기본 클러스터 크기는 다음과 같다.
FAT32에서의 기본 클러스터 크기
 Volume Size Cluster Size
 32MB – 8GB 4KB
 8GB – 16GB 8KB
 16GB – 32GB 16KB
 32GB – 32KB
NTFS에서의 기본 클러스터 크기
 Volume Size Cluster Size
 7MB – 512MB 512Byte
 513MB – 1GB 1KB
 1GB – 2GB 2KB
 2GB – 4KB
볼륨 크기에 따라 클러스터 크기가 변하는 이유는 디스크의 효율을 고려한 결정이다. 다음 그림을 살펴보면 클러스터의 크기는 4KB이다. 해당 클러스터 하에서 100 바이트의 파일을 저장 할 경우 실제 물리적인 공간은 100 바이트를 차지하지만 클러스터라는 개념으로 인해 4KB가 해당 파일에 할당이 된다. 따라서 나머지 공간은 낭비되는 영역이 된다. 
클러스터 크기보다 작은 데이터가 많은 경우에는 이러한 낭비되는 공간이 비효율적이겠지만, 파일의 크기가 비교적 큰 경우에는 앞서 언급한 대로 I/O 작업을 줄여주기 때문에 더 효율적이다. 따라서, 클러스터 사이즈보다 작은 데이터가 많이 기록되는 환경이 아니라면 포맷 시 클러스터의 크기를 고려하지 않고 윈도우에서 지원하는 기본 클러스터 크기를 사용하는 것이 바람직 할 것이다.
다음 그림은 1바이트의 데이터만 기록한 후 파일의 등록정보를 확인한 것이다. 실제 1 바이트가 기록되었음에도 불구하고 클러스터의 사용으로 인해 디스크 할당은 4KB가 된 것을 확인할 수 있다.

You Might Also Like

0 개의 댓글