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

 

1. 개요
2. 원인과 현상
3. 해결 방안 : 이진 접두어
3.1. 접두어 목록
3.2. 참고할 만한 링크
3.3. 소프트웨어 제작자들의 선택
4. 표기용량과 실제용량 비교
4.1. 1000 단위를 사용하는 매체
4.2. 1024 단위를 사용하는 매체
4.3. 업체에 따라 다른 경우
4.4. 혼용
5. 여담

[image]
'''1 TB → 931 GB'''
'''2 TB → 1.81 TB[1]'''

1. 개요


1 TB 하드디스크를 구매하여 포맷하고, 윈도우에서 용량을 확인하면 931 GB 로 출력된다. 이는 십진수 (1000의 배수)기반으로 출력하느냐, 이진수 (1024의 배수) 기반을 출력하느냐에 따라 계산이 달라짐에 따라 발생하는 문제이다. 스마트폰을 컴퓨터에 연결해도 컴퓨터는 2진법으로 계산하기 때문에 실제 스마트폰 용량과 차이가 있다.
원래 SI 단위를 기준으로 하면 1k = 1,000이고, 1M = 1,000,000이며, 1G = 1,000,000,000이며, 단위가 바뀔 때마다 1000배씩 증가한다. 즉, 1 기가(Giga)는 십진법으로 10억이다. SI 단위 항목의 1보다 큰 접두사 참조.
SI 단위대로 올바르게 썼다면 1 kB[2] = 1 000 B, 1 MB = 1 000 kB = 1 000 000 B, 1 GB = 1 000 MB = 1 000 000 000 B가 되었어야 했다. 하지만, 컴퓨터는 기본적으로 2진법을 쓰기 때문에 컴퓨터에서는 본래의 단위와 근접한 210, 즉 1024를 기준으로 널리 사용했다. 비트나 바이트 등 컴퓨터의 정보를 나타낼 경우에는 1 KB[3] = 1 024 B, 1 MB = 1 024 KB = 1 048 576 B, 1 GB = 1 024 MB = 1 073 741 824 B 를 가리키는 경우가 흔했다. 서로 다른 의미인데도 불구하고 같은 접두어를 붙여버린 것. 그나마 1024를 나타낼 때는 대문자 K를 쓰는데, 이게 SI 접두어와 겹치지 않는 유일한 경우이다. SI 접두어에서 1000을 나타낼 때는 소문자 k를 쓰기 때문.[예시]
이는 컴퓨터 초창기부터 널리 쓰이는 표기법이었으며 메모리나 하드디스크 등 컴퓨터의 모든 부문에 사용되었다.[4] 그런데 저장용량이 KB, MB 레벨일 때는 1000과 1024의 차이를 무시할 수 있을 정도였지만, 단위가 GB, TB로 넘어가면서 그 차이는 결코 무시할 수 있을 정도가 아니게 되었다.

2. 원인과 현상



이런 상황이 발생한 원인을 한 줄로 정리하면, 컴퓨터 · 정보 분야에서 단위의 접두어를 잘못 써서 생긴 계산 방식 차이때문이다.
하드 디스크플래시 메모리 제조사는 자사의 제품 용량을 표기할 때 '''십진법으로 표기한다.''' 그렇지만, Microsoft Windows는 저장매체의 용량을 2진법으로 계산하기 때문에 윈도우에서 보이는 용량은 '''표기된 용량보다 작게 출력된다'''.[5] 하드 디스크를 생산하는 업체는 1 GB를 109 bytes로 따지고, 윈도우는 1 GB를 230 bytes로 따진다. 그러므로 십진법으로 표기한 1 GB(109 bytes)는 2진법으로 표기한 1 GB(230 bytes)에 73 741 824 bytes가 모자란다. 대략 70 MB이다.
예를 들어, 용량이 표기상으로 1 TB 인 하드 디스크가 있다고 하자. 제조사에서는 1 TB = 1 000 GB = 1 000 000 MB = 1 000 000 000 kB = 1 000 000 000 000 bytes를 저장할 수 있다고 표기한다. 그런데, 윈도우에서는 1024로 나누어 1 000 000 000 000 bytes = 976 562 500 KB = 953 674 MB = 931 GB = 0.909 TB가 되어서, 최종적으로 931 GB로 보이게 되는 것이다.
이게 단위가 커질수록 복리의 효과가 나타난다. 1 KB는 2.3%이지만, 1 MB는 4.6% 차이가 나고, 1 GB는 6.8%, 1 TB가 되면 9.0%가 차이가 나게 되는 것이다.
[image]
-
실제 사용 가능한 용량은 포맷과 파티션, 사용하는 운영체제에 따라 표기된 용량과 다를 수 있습니다.
제거시 품질 보증 무효화됨 '''드라이브의 구멍을 막지 마십시오'''
사실 이 차이뿐만 아니라, 포맷하면 파일 시스템이 잡아 먹는 용량도 있기 때문에, HDD 제조사는 용량이 적게 보인다는 항의를 계속 받곤 하였다. 결국 1990년대 초반 제조 업체에서 위와 같이 하드디스크에 1 MB = 1 000 000 bytes이며, '포맷', '파티션' 등 OS에 따라서 다르게 보일 수 있다고 명시하게 된다. 제조사는 'SI 표준을 따랐다'는 명분은 있으나, 이러한 표기법 덕분에 용량이 좀 더 커 보이게 된다는 점도 영향을 미쳤을 것이다.
용량을 최대한 크게 보이게 하기 위한 교묘한 꼼수라고도 볼 수 있다. 이런 꼼수가 처음 사용될 무렵이 40 ∼ 50 MB 하드디스크가 널리 쓰일 시절이기에, 그 차이는 미미했다. 그런데, 시간이 지날수록 이를 무시할 수 없을만큼 커졌다.
실제로 이 문제로 미국에서는 집단 소송에 걸려서 배상까지 했다고 한다. 해당 배상사건 이후, 업체들은 이진 표기법을 다시 채택한 것이 아니라, 위의 사진처럼 제품 표면에 "1 MB = 1,000,000 bytes / 1 GB = 1,000,000,000 bytes" 식으로 더욱더 확실하게 십진 표기법을 사용한다고 표기하는 방법을 사용했다. 이렇게 명시한 이상 더 이상 미국 소비자 보호법으로 소송 걸어도 소용이 없게 되었다. 그뿐만 아니라 실제 사용 가능 용량은 포맷, 파티션질, OS 등의 이유로 광고된 용량과 다를 수 있다고 '''영어로''' 친절하게 설명까지 해놨다! 언제나 기업들은 이런 데만 빠르고 충실하다. 오히려 바이트 대신 비트를 안 쓰는 게 대견하게 느껴질 정도다.

3. 해결 방안 : 이진 접두어



3.1. 접두어 목록


이진 접두어란 국제 전기 표준 회의(IEC)에서 정의된 표준(IEC 80000-13:2008[6])에 수록된 내용이다. 230 바이트를 말하기 위해 1 GB 대신 1 GiB[7]를 사용해야 한다.
이진 접두어
실제 값
[8]Ki
키비
kibi
210
1 024
Mi
메비
mebi
220
1 048 576
Gi
기비
gibi
230
1 073 741 824
Ti
테비
tebi
240
약 1.099 51 × 1012
Pi
페비
pebi
250
약 1.125 90 × 1015
Ei
엑스비
exbi
260
약 1.152 92 × 1018
Zi
제비
zebi
270
약 1.180 59 × 1021
Yi
요비
yobi
280
약 1.208 93 × 1024

3.2. 참고할 만한 링크


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

3.3. 소프트웨어 제작자들의 선택


[image]
리눅스 계열이나 오픈소스 프리웨어 등에서는 조금씩 채택해 가고 있으며, 일부 경우는 십진 접두어와 이진 접두어로 둘 다 표기해 주는 방법을 사용하여 혼란을 막기도 한다. 가끔 논란을 피하기 위해 무조건 바이트 단위로 풀어서 보여주는 프로그램도 있다.
문제는 이 표준이 갈수록 안 쓰이고 있다. PC OS 점유율 거의 대부분을 차지하는 마이크로소프트윈도우는 이진 접두어를 안 쓴다. 그리고 점유율 2위를 차지하는 애플macOS도 안 쓴다. 모바일로 가면 더욱 처참한데, 모바일 2대 OS인 구글안드로이드애플iOS 모두 안 쓴다. 사실상 리눅스만 사용하고 있는 셈.
참고로 영어권에서 일부 업체들은 메가, 기가 대신 밀리언, 빌리언 같은 영어 접두사를 쓰기도 한다.

4. 표기용량과 실제용량 비교


'''단위'''
'''십진 접두어 기준'''
'''이진 접두어 기준'''
'''차이'''
'''비율'''[9]
'''비고'''
kB | KiB
10001
10241
24
0.9766
1 KB당 24 B의 차이 발생
MB | MiB
10002
10242
48 576
0.9537
1 MB당 약 47.4 KiB의 차이 발생
GB | GiB
10003
10243
73 741 824
0.9313
1 GB당 약 70.3 MiB의 차이 발생
TB | TiB
10004
10244
99 511 627 776
0.9095
1 TB당 약 92.7 GiB의 차이 발생
PB | PiB
10005
10245
약 1.259 × 1014
0.8882
1 PB당 약 114.5 TiB의 차이 발생
EB | EiB
10006
10246
약 1.529 × 1017
0.8674
1 EB당 약 135.8 PiB의 차이 발생
ZB | ZiB
10007
10247
약 1.806 × 1020
0.8470
1 ZB당 약 156.6 EiB의 차이 발생
YB | YiB
10008
10248
약 2.089 × 1023
0.8272
1 YB당 약 177.0 ZiB의 차이 발생
YB 단위를 쓰게 될 때즘에는 약 20% 의 차이가 발생한다. 란다우어의 원리를 생각하면 그게 가능할 리는 없겠지만 만약 계속 단위가 커져서 100030 쯤 되면, 복리효과에 의해서 50% 이상의 차이가 발생할 수도 있다. 2018년 현재 하드디스크 드라이브에 가장 많이 쓰이는 단위인 테라바이트급 하드의 경우 1테라바이트당 9.9 %의 차이가 난다.
하드 디스크 실제 용량 계산기
#2

4.1. 1000 단위를 사용하는 매체


  • HDD
  • SSD - 사실 SSD는 NAND 플래시를 사용하기에 2n으로 제조하는 것이 유리함에도 불구하고, HDD와 같은 용량 표기 방식을 사용한다. 사실은 낸드 칩을 2의 제곱수인 GiB 용량으로 만들어놓고 GB 용량만 사용이 가능하게 하여 그 차이인 7% 정도를 오버 프로비저닝 공간으로 확보한 것이다. 이게 256GB, 512GB SSD고 이미 1000단위를 사용한 것이다. 그런데 여기에서 딱 맞아떨어지지 않게 120 GB, 250 GB, 500 GB 등의 제품의 경우, 저기서 비상용으로 더 빼 놓은 셈이다. 서버용 SSD에서는 512GiB 셀을 넣어놓고 400GB만 쓸 수 있게 해놓기도 한다. [10] 여기서 헷갈리는 게 1TB 제품인데, 어떤 제품(인텔, 삼성 PRO 모델 등)은 1024GB로 나오고 어떤 제품(삼성 EVO 모델, 크루셜 등)은 1000GB로 나온다. [11]
  • Secure Digital, USB 메모리 등 대부분의 플래시 기반 메모리
  • 이더넷 - 1G 이더넷은 1초에 정확히 1 000 000 000 비트[12]를 전송할 수 있음을 의미한다. 이진 접두어로 표기하면 약 953.67 Mibit가 나온다. 다만 전송에 필요한 오버헤드가 존재하기에 실제 최대 전송 효율은 조금 더 낮게 나온다.
  • SATA - SATA revision 3.0의 경우 6 Gbit/s의 전송속도를 가지는데 이는 초당 6 000 000 000비트를 전송한다는 의미이다. 그 와중에 8/10 인코딩 문제로 실제 전송속도는 600 MB/s이다.[13]
  • Blu-ray Disc - 블루레이 디스크는 싱글레이어에서 25 025 314 816바이트를 저장할 수 있으며, 이를 25 GB 용량으로 표기한다.

4.2. 1024 단위를 사용하는 매체


  • RAM
  • CD - 일반적으로 CD-ROM은 650 MiB를 저장할 수 있다. CD-ROM은 섹터당 2048바이트를 저장할 수 있으며, 총 333000개의 섹터[14]가 있기 때문에, 실제 저장 용량은 681 984 000 bytes이다. 이를 1024*1024로 나눠 650 MB로 표기한다.[15](그 당시에는 이진 접두어를 거의 쓰지 않았기 때문에 "650 MiB"로 표기된 제품은 없었다.)

4.3. 업체에 따라 다른 경우


  • DVD - DVD 는 2048바이트를 저장할 수 있는 섹터가 총 2 298 496개(또는 2 295 104개)[16]가 있다. 그래서 용량은 4 707 319 808바이트(또는 4 700 372 992바이트)이다. 이를 일부 제조사는 1000으로 나눠서 4.7 GB로 표기하는 경우도 있으며, 어떤 제조사는 1024로 나눠서 4.38 GB[17]로 표기하기도 한다.

4.4. 혼용


  • 플로피 디스크
    • 1.2 MB 5.25" 2HD 디스켓 - 80트랙, 트랙당 15섹터, 섹터당 512바이트, 양면으로 80 * 15 * 512 * 2 = 1 228 800바이트인데, 1024로 나누면 1200 KB가 된다. 그 다음에는 1000으로 나눠서 1.2 MB로 계산한다. 그래서 1.2 MB로 표기했다. 1 KB = 1024 bytes이지만, 1 MB = 1000 KB로 계산한 셈이다. 정확하게는 1.172 MiB 또는 1.229 MB이다.
    • 1.44 MB 3.5" 2HD 디스켓 - 트랙당 18섹터라는 점만 다르며 나머지는 5.25인치와 동일하다. 양면으로 80 * 18 * 512 * 2 = 1 474 560바이트이다. 그리고, 이를 1024로 나누면 정확히 1440 KB이다. 그런데, 한번 더 1024로 나누면 1.40625이므로 1.4 MB라고 표기해야 하지만, 이 역시 관습적으로 1000으로 나눠서 1.44 MB로 표기하였다.

5. 여담


사실상 대부분의 하드 디스크는 표시된 용량보다는 아주 조금이라도 더 크다. 예를 들어 1 TB 하드디스크의 용량이 정확히 1조 바이트인 것은 아니고, 상단의 이미지에서 볼 수 있는 것처럼, 아주 조금이나마 더 크다. 하드 디스크라는 물건 자체가 아날로그적인 물건이라서 원하는 용량을 100% 정확하게 맞추는 것은 태생적으로 불가능하기 때문이다. 그렇다고, 대충 하다가 1바이트라도 적게 나온다면 위의 미국 집단 소송 배상금 사건을 한 번 더 치를 가능성도 있기 때문에, 자신들이 법적으로 명시한 용량보다 적은 경우는 절대로 없다. 이런 건 대놓고 어기다가 미국 특유의 집단 소송에 제대로 걸리면 정말 피눈물 난다.
그외에도 실제 데이터 저장 영역이 아니라, MBR이나 GPT 같은 파티션#s-2 생성을 위한, 정말 윈도우에선 아무 파티션도 안 보이는 공장 초기화 상태에서도 무조건 있어야 되는 '정보'들을 저장하는 공간도 있어야 한다. 그뿐만 아니라 제조상에 발생할 수 있는 배드 섹터가 있을 수도 있기 때문에, 이를 대체하기 위한 여분의 섹터도 필요하다.[18] 하드 디스크의 정보를 보는 프로그램에서 Reallocated 어쩌고 하는 항목들이 이 기술의 작동에 관련된 정보들이다.
이런 저런 이유로 하드 디스크의 실제 용량은 표시된 용량보다는 '아주 조금' 더 많다. 위의 이미지에서도 확인할 수 있지만, 그래봐야 0.017%정도 더 크다.

[1] $$\displaystyle 2 \times (\frac{1000}{1024})^4 \approx 1.81$$[2] 소문자 k[3] 대문자 K[예시] km, kg 등.[4] 2017년 기준으로도 PC 메인 메모리(주기억장치, RAM)는 이 방식으로 용량을 표기한다. 즉, 1 GB RAM이라고 하면 1 073 741 824 bytes를 저장할 수 있는 RAM을 뜻한다.[5] 참고로 macOSSI 단위를 그대로 잘 쓴다. 예를 들면 1 073 741 824 bytes(= 230 bytes)짜리 파일은 윈도우에서는 1.00 GB로, macOS에서는 1.074 GB(반올림)로 표시된다. 이 때문에 "같은 파일인데 윈도우랑 macOS에서 왜 용량이 다르죠?" 같은 질문이 끊이질 않는다. 이는 윈도우가 잘못된 표기를 하는 것이지, 하드 디스크 제조사나 macOS가 잘못한 건 아니다.[6] 1999년 IEC 60027-2에서 처음 생긴 이후로 개정됨.[7] GiB는 이진 기가바이트('''Gi'''ga '''Bi'''nary '''Byte''')의 줄임말.[8] SI 접두어와는 달리 대문자 K를 쓴다.[9] 표기 ÷ 실제[10] 오류정정을 위한 ECC가 있는 경우 여분의 셀이 더 필요하다.[11] 주로 TLC SSD가 0단위를 맞춰서 만든다는 설명이 있었는데, MLC에도 960GB가 나오고 무려 QLC에도 1024GB가 나오기 때문에 낸드 종류에 따라 그렇게 획일화하기는 곤란하다.[12] 바이트(byte)가 아니라 비트(bit)이다. 바이트로 보면 125 000 000 바이트, 약 119.2MB/s 속도인 셈[13] 1바이트를 전송하기 위해서 10비트로 변환하여 전송한다. 전송 에러를 감소시키기 위한 방법이다.[14] 이 섹터를 길게 늘리는 방법을 사용하여 900 MiB까지 저장하는 CD-R도 존재한다.[15] 681 984 000 / (1024*1024) = 약 650.39[16] DVD-R과 DVD+R이냐에 따라 약간 다르다.[17] 4 707 319 808 / (1024*1024*1024) = 4.38[18] 현재는 HDD 자체 검사에서 알아서 여분의 섹터로 바꿔 버리기 때문에 OS에서 확인하기가 어렵다.