최근 수정 시각 : 2024-11-22 16:33:34

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

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


파일:1TB_931GB_Win10.png

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

1. 개요

제조사에서 1 TB라고 표기된 하드디스크를 구매하여 컴퓨터에 장착한 뒤 윈도우에서 용량을 확인하면 931 GB로 출력된다. 이는 제조사에서 표기하는 용량 단위의 기준과, 윈도우에서 계산하는 용량 단위의 기준이 다르기 때문이다. 윈도우에서는 용량 단위를 2진법(1024의 거듭제곱) 기반으로 출력하지만 제조사 표기 기준은 이진법이 아닌 10진법(1000의 거듭제곱)이다. 같은 용량을 두고 표기를 다르게 계산하기에 발생하는 문제로 디지털 저장장치 전반에 적용되는 표기 문제다. 스마트폰 역시 마찬가지.

원래 SI 단위를 기준으로 하면 1k = 1,000이고, 1M = 1,000,000이며, 1G = 1,000,000,000이며, 단위가 바뀔 때마다 1000배씩 증가한다. 즉, 1 기가(Giga)는 10억이다. 자세한 내용은 국제단위계 문서의 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를 쓰기 때문이다.[예시]

이는 컴퓨터 초창기부터 널리 쓰인 표기법이었으며 메인 메모리나 하드디스크 등 컴퓨터의 모든 부문에 사용되었다.[5] 그런데 저장용량이 KB 단위일 때는 1000과 1024의 차이를 무시할 수 있을 정도였지만, 단위가 TB로 넘어가면서 그 차이는 결코 무시할 수 있을 정도가 아니게 되었다.

2. 원인과 현상


이런 상황이 발생한 원인을 한 줄로 요약하면, IT 분야에서 관행적으로, 단위의 접두어를 학술적 의미와 다르게 써서 생긴 계산 방식 차이때문이다.

하드 디스크플래시 메모리 제조사는 자사의 제품 용량을 표기할 때 10진법으로 표기한다. 그렇지만, Microsoft Windows는 저장매체의 용량을 2진법으로 계산하기 때문에 윈도우에서 보이는 용량은 제조사에서 표기한 용량보다 작게 출력된다.[6] 제조사는 109 bytes를 1 GB로 표기하고, 윈도우는 230 bytes를 1 GB로 표기한다. 그런데 1 GB(109 bytes)는 1 GiB(230 bytes)에 73,741,824 bytes가 모자란다. 대략 70 MiB이다.

예를 들어, 용량이 표기상으로 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 PB 용량이 출시된다면 실제 용량은 909 TB로 더 벌어질 것이다.

이게 단위가 커질수록 복리의 효과가 나타난다. KB 단위는 2.3%이지만, MB 단위는 4.6% 차이가 나고, GB 단위는 6.8%, TB 단위가 되면 9.0% 차이가 나게 되는 것이다.
파일:1MB_1000000Byte.png
실제 사용 가능한 용량은 포맷과 파티션, 사용하는 운영체제에 따라 표기된 용량과 다를 수 있습니다.
사실 이 차이뿐만 아니라 포맷하면 파일 시스템이 잡아 먹는 용량도 있기 때문에 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. 해결 방안: 이진 접두어

컴퓨터의 정보 단위 - 십진 접두어
[math(\small 2^{-3})]
비트
Bit (b)
[math(\small 1)]
바이트
Byte (B)
[math(\small 10^{3})]
킬로바이트
Kilobyte (KB)
[math(\small 10^{6})]
메가바이트
Megabyte (MB)
[math(\small 10^{9})]
기가바이트
Gigabyte (GB)
[math(\small 10^{12})]
테라바이트
Terabyte (TB)
[math(\small 10^{15})]
페타바이트
Petabyte (PB)
[math(\small 10^{18})]
엑사바이트
Exabyte (EB)
[math(\small 10^{21})]
제타바이트
Zettabyte (ZB)
[math(\small 10^{24})]
요타바이트
Yottabyte (YB)
[math(\small 10^{27})]
론나바이트
Ronnabyte (RB)
[math(\small 10^{30})]
퀘타바이트
Quettabyte (QB)
{{{#!wiki style="margin:0 -10px -5px; min-height:calc(1.5em + 5px)"
{{{#!folding [이진 접두어 펼치기 · 접기]
{{{#!wiki style="margin:-5px -1px -11px"
이진 접두어
[math(\small 2^{10})]
키비바이트
Kibibyte (KiB)
[math(\small 2^{20})]
메비바이트
Mebibyte (MiB)
[math(\small 2^{30})]
기비바이트
Gibibyte (GiB)
[math(\small 2^{40})]
테비바이트
Tebibyte (TiB)
[math(\small 2^{50})]
페비바이트
Pebibyte (PiB)
[math(\small 2^{60})]
엑스비바이트
Exbibyte (EiB)
[math(\small 2^{70})]
제비바이트
Zebibyte (ZiB)
[math(\small 2^{80})]
요비바이트
Yobibyte (YiB)
[math(\small 2^{90})]
로비바이트
Robibyte (RiB)
[math(\small 2^{100})]
퀘비바이트
Quebibyte (QiB)
취소선: 공식적으로 제정된 바 없는 가칭. }}}}}}}}}
우상단 숫자는 바이트를 기준으로 한 상대값이다.

3.1. 접두어 목록

이진 접두어란 국제 전기 표준 회의(IEC)에서 정의된 표준(IEC 80000-13:2008[7])에 수록된 내용이다. 230 바이트를 말하기 위해 1 GB 대신 1 GiB[8]를 사용해야 한다.
이진 접두어 실제 값
[9]Ki 키비 kibi210 1,024
Mi 메비 mebi220 1,048,576[10]
Gi 기비 gibi230 1,073,741,824
Ti 테비 tebi240 약 1.099,51 × 1012[11]
Pi 페비 pebi250 약 1.125,90 × 1015
Ei 엑스비 exbi260 약 1.152,92 × 1018
Zi 제비 zebi270 약 1.180,59 × 1021
Yi 요비 yobi280 약 1.208,93 × 1024

3.2. 참고할 만한 링크

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

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

파일:ubuntu_testdisk.png

리눅스 계열이나 오픈소스 프리웨어 등에서는 조금씩 채택해 가고 있으며, 일부 경우는 십진 접두어와 이진 접두어로 둘 다 표기하는 방법을 사용하여 혼란을 막기도 한다. 가끔 논란을 피하기 위해 무조건 바이트 단위로 풀어서 보여주는 프로그램도 있다. 단위가 단위인지라 다르다는걸 직접 계산해보지 않는 한 바로 알아채기가 힘들기 때문. 즉, 많은 Linux 배포판에서 "1GB" = 10억 바이트, "1GiB" = 10억 7374만 1824 바이트이다.

ApplemacOSiOS는 각각 버전 10.6과 11부터 파일과 저장공간 용량을 표시하는 데 SI 기준 십진수 단위계를 사용한다. # 즉, macOS와 iOS에서 저장공간 "1GB"는 10억 바이트이다. 단, 이것은 파일과 저장공간의 용량 표기에만 해당되며, 메모리(RAM)의 용량을 계산할 때는 해당되지 않는다. RAM 용량 "1GB"는 여전히 10억 7374만 1824 바이트를 가리키는 것이고, "1GiB"라고 쓰지 않는다.

PC OS 점유율 거의 대부분을 차지하는 Microsoft Windows는 철저하게 사용자들 주류가 기억하는 관습을 선택하고 표기의 복잡성을 배제했다. 즉, 이진 접두어를 사용하지 않고 관용적인 표기와 의미를 고수한다. 따라서 Windows에서 "1GB"는 언제나 10억 7374만 1824 바이트이다.

최신 삼성 갤럭시 시리즈는 십진 단위계와 이진 단위계의 혼용으로 발생하는 차이를 시스템 펌웨어가 점유하는 용량에 산입해서 표시한다. 갤럭시 S23 512GB 모델로 예를 들면, 십진 표기법 512GB는 이진 표기법으로는 476.84GiB가 되어 두 표기법의 차이가 35.16이나 된다. 이를 해결하기 위해 관용적인 GB 표기(1GB = 10억 7374만 1824바이트)를 쓰되, 전체 저장공간 크기는 "512GB"로 출력하고, 대신 시스템이 차지하는 공간을 실제 OS가 점유하는 용량에 35.16을 더한 값으로 표기한 것이다. 2023년에는 영미권의 유명 IT 웹진인 Ars Technica에서 이걸 모르고 "갤럭시 S23의 One UI 5.1은 최적화가 구려서 시스템 공간이 60GB나 차지한다"라는 오보를 내기도 했다. One UI 6부터는 Apple와 동일하게 파일과 저장공간 용량이 십진 단위계로 일원화되었다.

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

3.4. 십진 접두어와 이진 접두어 비교

단위 십진 접두어 기준 이진 접두어 기준 차이 비율[12] 비고
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%의 차이가 발생한다. 란다우어의 원리를 생각하면 그게 물리적으로 가능할 리는 없겠지만 만약 계속 단위가 커져서 1090을 넘어가면[13][14], 2배 이상의 차이가 발생한다. 현재 하드 디스크 드라이브에 가장 많이 쓰이는 TB 단위의 경우 약 10%의 차이가 난다.

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

4. 사용 예시

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만 쓸 수 있게 해놓기도 한다.[15] 여기서 헷갈리는 게 1TB 제품인데, 어떤 제품(인텔, 삼성 PRO 모델 등)은 1024GB로 나오고 어떤 제품(삼성 EVO 모델, 크루셜 등)은 1000GB로 나온다.[16]
  • Secure Digital, USB 메모리 등 대부분의 플래시 기반 메모리
  • 이더넷 - 1G 이더넷은 1초에 정확히 1,000,000,000 비트[17]를 전송할 수 있음을 의미한다. 이진 접두어로 표기하면 약 953.67 Mibit가 나온다. 다만 전송에 필요한 오버헤드가 존재하기에 실제 최대 전송 효율은 조금 더 낮게 나온다.
  • SATA - SATA revision 3.0의 경우 6 Gbit/s의 전송속도를 가지는데 이는 초당 6,000,000,000비트를 전송한다는 의미이다. 그 와중에 8/10 인코딩 문제로 실제 전송속도는 600 MB/s이다.[18]
  • Blu-ray Disc - 블루레이 디스크는 싱글레이어에서 25,025,314,816바이트를 저장할 수 있으며, 이를 25 GB 용량으로 표기한다.

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

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

4.3. 업체에 따라 다른 경우

  • DVD - DVD는 2048바이트를 저장할 수 있는 섹터가 총 2,298,496개(또는 2,295,104개)[21]가 있다. 그래서 용량은 4,707,319,808바이트(또는 4,700,372,992바이트)이다. 이를 거의 대부분의 제조사는 1000으로 나눠서 4.7 GB로 표기한다. 극히 일부 제조사는 10243{1024}^{3}으로 나눠서 4.38 GB[22]로 표기하기도 했다. 그런데, 어느 정도 시간이 경과한 다음에는 4.38 GB 로 표기한 제품들을 더 이상 볼 수 없게 되었다. 경쟁 제품들이 모두 4.7GB 로 표기하자, 용량이 작다고 오해한 소비자들이 외면했기 때문이다. 그래서, 4.7 GB 로 표기한 제품만 찾아 볼 수 있다.

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 같은 파티션 생성을 위한, 정말 윈도우에선 아무 파티션도 안 보이는 공장 초기화 상태에서도 무조건 있어야 되는 '정보'들을 저장하는 공간도 있어야 한다. 그뿐만 아니라 제조상에 배드 섹터가 발생할 수 있기 때문에, 이를 대체하기 위한 여분의 섹터도 필요하다.[23] 하드 디스크의 정보를 보는 프로그램에서 Reallocated 어쩌고 하는 항목들이 이 기술의 작동에 관련된 정보들이다.

이런 저런 이유로 하드 디스크의 실제 용량은 표시된 용량보다는 '아주 조금' 더 많다. 그래봐야 위의 예시에서도 나와 있지만 0.02%정도로, 정말 미미한 수준이다.


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

분류