기억장치/표기 용량과 실제

1 개요

1 테라 하드 디스크는 왜 931 GB인가???

2 설명

1 기가(Giga)는 십진법으로 10억이라는 뜻이다(아래 단위 참고). 단위가 바뀌면 1,000배가 증가한다.

하지만 컴퓨터는 기본적으로 2진법을 쓰기 때문에 컴퓨터에서는 본래의 단위와 근접한 210, 즉 1024를 기준으로 단위를 올린다. 따라서 컴퓨터에서 디지털 매체의 용량을 계산할 때 1GB(기가바이트)는 각각 다음과 같이 표현된다.

1 바이트의 230
1 킬로바이트의 220
1 메가바이트의 210
1,073,741,824 byte(바이트)
= 1,048,576 KB(킬로바이트)
= 1,024 MB(메가바이트)
= 1 GB(기가바이트).

이는 컴퓨터 초창기부터 일관된 표기법이었으며 메모리나 하드디스크 등 컴퓨터의 모든 부문에 사용되었다. 아직도 PC 메인 메모리(RAM)는 이 방식으로 용량을 표기한다. 즉, 1 GB RAM이라고 하면 1,073,741,824 byte를 말한다.

저장용량이 MB 레벨일 때는, 1000과 1024의 차이는 무시할 정도였지만, 단위가 GB, TB로 넘어가면 그 차이는 결코 무시할 수 있을 정도가 아니게 되었다. 이런 이유로 1990년대 초반 하드 디스크 업체에서 자사 제품의 용량을 크게 보이게 하기 위해 아래에서 언급한 십진법 표기를 하게 되었다.

참고로 플로피 디스크는 일종의 과도기적 표현을 사용했는데 1.44MB인 3.5" 2HD 디스켓은 80 트랙, 트랙당 18 섹터, 섹터당 512 바이트, 양면으로 80 * 18 * 512 * 2 = 1474560 바이트이다. 그리고, 이를 1024로 나누면 정확히 1440KB이다. 그런데, 한번 더 1024로 나누면 1.40MB 라고 표기해야 하지만, 암묵적으로 1000으로 나눠서 1.44MB로 표기된다. 1KB = 1024Bytes이지만, 1MB = 1000KB로 계산한 셈이다. 이는 1.2MB 용량의 5.25 2HD 디스켓도 동일하다. 트랙당 15섹터라는 점만 다르며 나머지는 동일하다 80 * 15 * 512 * 2 = 1228800 바이트 = 1200 KB인데, 역시 1.2MB로 표기된다.

3 계산 방식 차이

그런데 하드 디스크플래시 메모리 제조사는 자사의 제품 용량을 표기할 때 십진법으로 표기한다. 하지만 Microsoft Windows는 하드 디스크 용량을 2진법의 실제 하드 디스크 용량을 그대로 10진법으로 바꿔서 표기하기 때문에 실제 하드는 스펙에 표기된 용량보다 작다! 하드 디스크를 생산하는 업체는 1 GB를 109 byte로 따지고, 윈도우는 1 GB를 230 byte로 따진다. 그러므로 십진법으로 표기한 1 GB(109 byte)는 2진법으로 표기한 1 GB(230 Byte)에 73,741,824 byte가 모자란다. 대략 70 MB이다.

예를 들어, 용량이 5000억 byte인 하드 디스크가 있다고 하자. 이것을 하드 디스크 제조사에서는 10억으로 나누어 500 GB로 계산하지만, 윈도우는 230(=1,073,741,824)로 나누어 대략 465 GB라고 계산한다.

이게 단위가 커질 수록 심해져서(예를 들어 210에서는 2.35%정도, 220에서는 4.65%정도가 된다.), 대용량 하드는 표시 용량과 컴퓨터 상의 인식 용량이 몇 GB씩 차이가 나기 시작한다. 80 GB쯤일 땐 4 GB 정도 차이가 나던 것이 320 GB 용량의 하드디스크에선 20 GB 정도가 비어버리고 3 TB(테라바이트) 하드는 206 GB가 모자란다. 대략적 용량을 쉽게 계산하려면 현재의 4TB 이하 하드급에서는 ×0.9313(7.4%)로(기가단위에서의 용량차이) 계산하면 대략적으로 나온다. 몇 백 TB급이나 페타 단위를 계산하기 위해서 테라 단위에서의 용량 차이를 계산하려면 ×0.9095이 된다. (출처: [1])

하드 디스크의 용량 차이 문제는 고스란히 플래시 메모리를 이용한 기억장치(SSD, Secure Digital, USB 메모리 등)에까지 이어졌다. 후새드.

다만 RAM 같은 휘발성 기억장치나, 기록에 제한이 있는 CD는 꼼수를 부리지 않고 만드는지 이런 현상이 없다.(일부 DVD는 4.38GB임) 즉 4GB 램 모듈은 운영체제에서도 4GB로 맞아떨어진다.

4 해결 방안 : 이진 접두어

사실은 십진법으로 표기하는 것이 MKS 단위체계에 따른 국제 표준에 부합하는 표기 방법이다. 그러나 전산 분야에서의 2진수 기반 용량 체계가 널리 쓰이고 있는 것을 하드 디스크 업체들에서 모를 리 없다는 점을 생각하면, 용량을 최대한 크게 보이게 하기 위한 교묘한 꼼수라고도 볼 수 있다. 이런 꼼수가 처음 사용될 무렵이 40~50MB 하드디스크가 널리 쓰일 시절로, 그 때만 해도 차이가 적어 대부분의 사람들이 인지하지 못했다. 이때는 교묘하다고 해줄만 했다. 그런데 위에 말한 대로 단위가 커질 수록 심해져서... 실제로 예전에 미국에서 집단 소송 먹어서 배상까지 했다. 당시 기사를 본 사람들은 더 이상 그런 짓을 안 할 거라 생각했지만 그런 거 없다. 해당 배상사건 이후 업체들에서 제품표면에 1MB = 1,000,000bytes / 1GB = 1,000,000,000bytes 식으로 명시를 해놔버려서(예시) 더 이상 미국 소비자 보호법으로 소송 걸어도 소용이 없기 때문. 심지어 예시 링크된 삼성 F3 1T HDD는 실제 사용가능 용량은 포맷, 파티션질, OS 등의 이유로 광고된 용량과 다를 수 있다고 영어로 친절하게 설명까지 해놨다! 언제나 기업들은 이런 데만 빠르고 충실하다. 오히려 바이트 대신 비트를 안쓰는게 대견하게 느껴질 정도다.

때문에 일부는 이진법에서 말하는 기가바이트(GB)(230 바이트. 즉, 10억 7374만 1824 바이트)를 말하기 위해 기비바이트(GiB)를 사용해야 한다고 하며, 이게 국제 전기 표준 회의(IEC)에서 정의된 표준(IEC 80000-13)이다. 230 byte = 1 GiB이고, 109 byte = 1 GB. 다만 쓰는 사람이 없어서…

GiB는 이진 기가바이트(Giga Binary Byte)의 줄임말.

이진 접두어한국어
Ki키비210
Mi메비220
Gi기비230
Ti테비240
Pi페비250

리눅스 계열이나 오픈소스 프리웨어 등에서는 조금씩 채택해 가고 있으며, 일부 경우는 십진 접두어와 이진 접두어로 둘 다 표기해 주는 방법을 사용하여 혼란을 피하기도 한다. 하지만 M$에서 무시하고 있어서 대중화는 아직 안 될 거야 아마 가끔 논란 자체에 빡쳤는지 무조건 바이트 단위로 풀어서 보여주는 프로그램도 매우 드물게 있다.

이진 접두사에 대한 자세한 것은 IEC 링크를 참조.

참고로 영어권에서 일부 업체들은 메가, 기가 대신 밀리언, 빌리언 같은 영어 접두사를 쓰기도 한다.

여담으로 많은 하드 디스크는 이렇게 정확히 계산한 용량보다는 아주 조금이라도 더 많다. (실제로 1테라는 윈도우식 기가바이트로 정확히 계산하면 10^12 / 2^40 * 1024 = 931.32 기가바이트[2]이지만, 1테라 하드는 윈도우에서 용량 잡아보면 931.33기가 이상인 경우가 대부분 그래봤자 931.51기가인데?) 이유는 하드 디스크라는 물건 자체가 아날로그적인 물건이라서 원하는 용량을 100.00000% 정확하게 맞추는 게 불가능하기 때문, 그렇다고 대충 하다간 위의 미국 집단 소송 배상금 사건을 한 번 더 치를 가능성도 있기 때문에, 자신들이 법적으로 명시한 용량보다 적은 경우는 절대로 없다! [3] 물론 신품 기준이고, 사용중 배드섹터로 용량이 준다거나 하는 건 기업 입장에선 상관없다. 이런 건 대놓고 어기다가 천조국 특유의 집단 소송에 제대로 걸리면 정말 피눈물 나기 때문에 기업을 믿어도 되는 사안이다.
위 내용은 일부 SSD에도 해당하는 예일 수도 있는데, 2의 제곱수가 아닌 0으로 맞어 떨어지는 용량(120GB, 250GB, 500GB 등)의 제품의 경우, 일부 셀(SSD에서 데이터를 저장하는 최소단위)이 수명 고갈로 인해 쓰기 불가능한 사태에 대비해 전체 용량의 일부를 비상용으로 빼놓은 것이다. 주로 TLC를 쓴 제품에서 볼 수 있다.

5 단위 수의 명칭

컴퓨터 개발 초창기에는 메가, 기가바이트로도 충분히 용량을 표시하고도 남았으나, 컴퓨터의 발전이 멈추지 않았기 때문에 다음 단위의 접두사를 사용한 테라바이트(terabyte)라는 단위가 사용되기 시작했다. 1 테라바이트는 1024 기가바이트이다. 테라의 다음 단위 접두사는 페타(peta)다. 이미 몇몇 웹 사이트는 페타 정도는 간단히 뛰어넘고 있다.

원래 킬로, 메가, 기가의 어원은 라틴어 접두사다.

- 킬로(kilo): 일천, 즉 103
- 메가(mega): 백만, 즉 106
- 기가(giga): 십억, 즉 109
- 테라(tera): 일조, 즉 1012
- 페타(peta): 천조, 즉 1015

SI 단위 항목의 1보다 큰 접두사를 참고.

6 표기용량과 실제용량 비교

6.1 계산

단위표기 계산실제 계산차이비율[4]비고
KB1000110241240.9766
MB100021024248,5760.95371MB당 약 47.4KB의 차이 발생
GB100031024373,741,8240.93131GB당 약 70.3MB의 차이 발생
TB100041024499,511,627,7760.90951TB당 약 92.7GB의 차이 발생
YB1000810248208,925,819,614,629,174,706,1760.82721YB당 약 177.0ZB의 차이 발생
?B[5]100030102430약 1.037 E900.49091 × 1030B당 약 521.3 × 1027B의 차이 발생

단위가 커질수록 차이가 커지며, 결국 50% 이상의 차이가 발생하는 것을 볼 수 있다.
2010년대 중반인 현재 하드디스크 드라이브에 가장 많이 쓰이는 단위인 테라바이트 기준으로 1테라바이트당 9~10 % 차이가 남을 볼 수 있다.

6.2 예시

표기(GB)표기(Byte)실제(GiB)손실표기 × 0.9313
4,000(4TB)4,000,000,000,0003,7252753,725
3,000(3TB)3,000,000,000,0002,7942062,794
2,000(2TB)2,000,000,000,0001,8631371,863
1,500(1.5TB)1,500,000,000,0001,3971031,397
1,000(1TB)1,000,000,000,000931.368.7931.3
750750,000,000,000698.551.5698.5
640640,000,000,000596.044.0596.0
500500,000,000,000465.734.3465.7
320320,000,000,000298.022.0298.0
250250,000,000,000232.817.2232.8
160160,000,000,000149.011.0149.0
120120,000,000,000111.88.24111.8
8080,000,000,00074.515.4974.50
4040,000,000,00037.252.7537.25

하드 디스크 실제 용량 계산기

#2
  1. 하드 디스크 뿐만 아니라 플래시 메모리에서도 이런 현상이 있기 때문에 문서 이름이 변경되었다.
  2. 소수점 셋째자리에서 반올림 또는 버림 해당 자리수가 2라서 반올림하나 버림하나 똑같다
  3. 그리고 실제 용량은 윈도우에서 보이는 용량보단 '아주 조금' 더 많다. 이유는 MBR이나 GPT 생성을 위한, 정말 윈도우에선 아무 파티션도 안 보이는 공장 초기화 상태에서도 무조건 있어야 되는 '정보'들이 차지하는 자리도 있지만, 배드섹터가 생기면 여분의 섹터로 대체하고 숨기는 기술이 기본이 된 지 오래이기 때문이다. 하드 디스크의 정보를 보는 프로그램에서 Reallocated 어쩌고 하는 항목들이 이 기술의 작동에 관련된 정보들이다.
  4. 표기 ÷ 실제
  5. SI 접두어에서는 Y(1024)까지만 정의되어 있다.