1 TB → 931 GB
2 TB → 1.81 TB[1]
1. 개요
제조사에서 1 TB라고 표기된 하드디스크를 구매하여 컴퓨터에 장착한 뒤 윈도우에서 용량을 확인하면 931 GB로 출력된다. 이는 제조사에서 표기하는 용량 단위의 기준과, 윈도우에서 계산하는 용량 단위의 기준이 다르기 때문이다. 윈도우에서는 용량 단위를 이진법(1024의 거듭제곱) 기반으로 출력하지만 제조사 표기 기준은 이진법이 아닌 십진법(1000의 거듭제곱)이다. 같은 용량을 두고 표기를 다르게 계산하기에 발생하는 문제로 디지털 저장장치 전반에 적용되는 표기 문제다. 스마트폰 역시 마찬가지.원래 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를 쓰기 때문이다.[예시]
이는 컴퓨터 초창기부터 널리 쓰인 표기법이었으며 메인 메모리나 하드디스크 등 컴퓨터의 모든 부문에 사용되었다.[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로 보이게 되는 것이다.
이게 단위가 커질수록 복리의 효과가 나타난다. KB 단위는 2.3%이지만, MB 단위는 4.6% 차이가 나고, GB 단위는 6.8%, TB 단위가 되면 9.0% 차이가 나게 되는 것이다.
실제 사용 가능한 용량은 포맷과 파티션, 사용하는 운영체제에 따라 표기된 용량과 다를 수 있습니다.
|
실제로 이 문제로 미국에서는 집단 소송에 걸려서 배상까지 했다고 한다. 해당 배상 사건 이후, 제조사들은 이진 표기법을 채택한 것이 아니라, 위의 사진처럼 제품 표면에 "1 MB = 1,000,000 bytes / 1 GB = 1,000,000,000 bytes" 식으로 더욱 더 확실하게 십진 표기법을 사용한다고 표기하는 방법을 사용했다. 이렇게 명시한 이상 더 이상 미국 소비자 보호법으로 소송 걸어도 소용이 없게 되었다. 그것뿐만 아니라 실제 사용 가능 용량은 포맷, 파티션질, OS 등의 이유로 광고된 용량과 다를 수 있다고 영어로 친절하게 설명까지 해놨다! 기업들은 언제나 이런 데만 빠르고 충실하다. 오히려 바이트 대신 비트를 안 쓰는 게 대견하게 느껴질 정도다.
3. 해결 방안: 이진 접두어
3.1. 접두어 목록
이진 접두어란 국제 전기 표준 회의(IEC)에서 정의된 표준(IEC 80000-13:2008[7])에 수록된 내용이다. 230 바이트를 말하기 위해 1 GB 대신 1 GiB[8]를 사용해야 한다.이진 접두어 | 실제 값 | |||
[9]Ki | 키비 | kibi | 210 | 1 024 |
Mi | 메비 | mebi | 220 | 1 048 576[10] |
Gi | 기비 | gibi | 230 | 1 073 741 824 |
Ti | 테비 | tebi | 240 | 약 1.099 51 × 1012[11] |
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. 참고할 만한 링크
이진 접두사에 대한 자세한 것은 다음 링크를 참조.- IEC - http://www.iec.ch/si/binary.htm
- NIST - https://physics.nist.gov/cuu/Units/binary.html
- 영문 위키백과 - https://en.wikipedia.org/wiki/Binary_prefix
3.3. 소프트웨어 제작자들의 선택
리눅스 계열이나 오픈소스 프리웨어 등에서는 조금씩 채택해 가고 있으며, 일부 경우는 십진 접두어와 이진 접두어로 둘 다 표기하는 방법을 사용하여 혼란을 막기도 한다. 가끔 논란을 피하기 위해 무조건 바이트 단위로 풀어서 보여주는 프로그램도 있다. 단위가 단위인지라 다르다는걸 직접 계산해보지 않는 한 바로 알아채기가 힘들기 때문. 즉, 많은 Linux 배포판에서 "1GB" = 10억 바이트, "1GiB" = 10억 7374만 1824 바이트이다.
Apple의 macOS와 iOS는 각각 버전 10.6과 11부터 파일과 저장공간 용량을 표시하는 데 SI 기준 십진수 단위계를 사용한다. # 즉, macOS와 iOS에서 저장공간 "1GB"는 10억 바이트이다. 단, 이것은 파일과 저장공간의 용량 표기에만 해당되며, 메모리(RAM)의 용량을 계산할 때는 해당되지 않는다. RAM 용량 "1GB"는 여전히 10억 7374만 1824 바이트를 가리키는 것이고, "1GiB"라고 쓰지 않는다.
PC OS 점유율 거의 대부분을 차지하는 Microsoft Windows는 철저하게 사용자들 주류가 기억하는 관습을 선택하고 표기의 복잡성을 배제했다. 즉, 이진 접두어를 사용하지 않고 관용적인 표기와 의미를 고수한다. 따라서 Windows에서 "1GB"는 언제나 10억 7374만 1824 바이트이다.
참고로 영어권에서 일부 업체들은 메가, 기가 대신 밀리언, 빌리언 같은 영어 접두사를 쓰기도 한다.
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%의 차이가 발생한다. 란다우어의 원리를 생각하면 그게 가능할 리는 없겠지만 만약 계속 단위가 커져서 100030을 넘어가면, 2배 이상의 차이가 발생한다. 2022년 현재 하드 디스크 드라이브에 가장 많이 쓰이는 TB 단위의 경우 약 10%의 차이가 난다.
하드 디스크 실제 용량 계산기
#2
4. 1000 단위를 사용하는 매체
- HDD
- SSD - 사실 SSD는 NAND 플래시를 사용하기에 2n으로 제조하는 것이 유리함에도 불구하고, HDD와 같은 용량 표기 방식을 사용한다. 사실은 낸드 칩을 2의 제곱수인 GiB 용량으로 만들어놓고 GB 용량만 사용이 가능하게 하여 그 차이인 7% 정도를 오버 프로비저닝 공간으로 확보한 것이다. 이게 256GB, 512GB SSD고 이미 1000단위를 사용한 것이다. 그런데 여기에서 딱 맞아떨어지지 않게 120 GB, 250 GB, 500 GB 등의 제품의 경우, 저기서 비상용으로 더 빼 놓은 셈이다. 서버용 SSD에서는 512GiB 셀을 넣어놓고 400GB만 쓸 수 있게 해놓기도 한다.[13] 여기서 헷갈리는 게 1TB 제품인데, 어떤 제품(인텔, 삼성 PRO 모델 등)은 1024GB로 나오고 어떤 제품(삼성 EVO 모델, 크루셜 등)은 1000GB로 나온다.[14]
- Secure Digital, USB 메모리 등 대부분의 플래시 기반 메모리
- 이더넷 - 1G 이더넷은 1초에 정확히 1 000 000 000 비트[15]를 전송할 수 있음을 의미한다. 이진 접두어로 표기하면 약 953.67 Mibit가 나온다. 다만 전송에 필요한 오버헤드가 존재하기에 실제 최대 전송 효율은 조금 더 낮게 나온다.
- SATA - SATA revision 3.0의 경우 6 Gbit/s의 전송속도를 가지는데 이는 초당 6 000 000 000비트를 전송한다는 의미이다. 그 와중에 8/10 인코딩 문제로 실제 전송속도는 600 MB/s이다.[16]
- Blu-ray Disc - 블루레이 디스크는 싱글레이어에서 25 025 314 816바이트를 저장할 수 있으며, 이를 25 GB 용량으로 표기한다.
5. 1024 단위를 사용하는 매체
- RAM
- CD - 일반적으로 CD-ROM은 650 MiB를 저장할 수 있다. CD-ROM은 섹터당 2048바이트를 저장할 수 있으며, 총 333000개의 섹터[17]가 있기 때문에, 실제 저장 용량은 681 984 000 bytes이다. 이를 1024*1024로 나눠 650 MB로 표기한다.[18](그 당시에는 이진 접두어를 거의 쓰지 않았기 때문에 "650 MiB"로 표기된 제품은 없었다.)
6. 업체에 따라 다른 경우
- DVD - DVD는 2048바이트를 저장할 수 있는 섹터가 총 2 298 496개(또는 2 295 104개)[19]가 있다. 그래서 용량은 4 707 319 808바이트(또는 4 700 372 992바이트)이다. 이를 일부 제조사는 1000으로 나눠서 4.7 GB로 표기하는 경우도 있으며, 어떤 제조사는 1024로 나눠서 4.38 GB[20]로 표기하기도 한다.
7. 혼용
- 플로피 디스크
- 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로 표기하였다.
8. 여담
사실 대부분의 하드 디스크는 표시된 용량보다는 아주 조금이라도 더 크다. 예를 들어 1 TB 하드디스크의 용량이 정확히 1조 바이트인 것은 아니고, 상단의 이미지에서 보이는 것처럼, 아주 조금이나마 더 크다. 하드 디스크 자체가 아날로그적인 물건이라서 원하는 용량을 100% 정확하게 맞추는 것은 태생적으로 불가능하기 때문이다. 그렇다고, 대충 하다가 1바이트라도 적게 나온다면 위의 미국 집단 소송 배상금 사건을 한 번 더 치를 가능성도 있기 때문에, 자신들이 법적으로 명시한 용량보다 적은 경우는 절대로 없다. 이런 건 대놓고 어기다가 미국 특유의 집단 소송에 제대로 걸리면 정말 피눈물 난다.그 외에도 실제 데이터 저장 영역이 아닌, MBR이나 GPT 같은 파티션 생성을 위한, 정말 윈도우에선 아무 파티션도 안 보이는 공장 초기화 상태에서도 무조건 있어야 되는 '정보'들을 저장하는 공간도 있어야 한다. 그뿐만 아니라 제조상에 배드 섹터가 발생할 수 있기 때문에, 이를 대체하기 위한 여분의 섹터도 필요하다.[21] 하드 디스크의 정보를 보는 프로그램에서 Reallocated 어쩌고 하는 항목들이 이 기술의 작동에 관련된 정보들이다.
이런 저런 이유로 하드 디스크의 실제 용량은 표시된 용량보다는 '아주 조금' 더 많다.[22]
[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]
참고로
macOS는
SI 단위를 그대로 잘 쓴다. 예를 들면 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]
오류정정을 위한
ECC가 있는 경우 여분의 셀이 더 필요하다.
[14]
주로 TLC SSD가 0단위를 맞춰서 만든다는 설명이 있었는데, MLC에도 960GB가 나오고 무려 QLC에도 1024GB가 나오기 때문에 낸드 종류에 따라 그렇게 획일화하기는 곤란하다.
[15]
바이트(byte)가 아니라 비트(bit)이다. 바이트로 보면 125 000 000 바이트, 약 119.2MB/s 속도인 셈
[16]
1바이트를 전송하기 위해서 10비트로 변환하여 전송한다. 전송 에러를 감소시키기 위한 방법이다.
[17]
이 섹터를 길게 늘리는 방법을 사용하여 900 MiB까지 저장하는 CD-R도 존재한다.
[18]
681 984 000 / (1024*1024) = 약 650.39
[19]
DVD-R과 DVD+R이냐에 따라 약간 다르다.
[20]
4 707 319 808 / (1024*1024*1024) = 4.38
[21]
현재는 HDD 자체 검사에서 알아서 여분의 섹터로 바꿔 버리기 때문에 OS에서 확인하기 어렵다.
[22]
그래봐야 0.017%정도 더 크다.