작동 방식
저장 용량 단위를 세는 방법은 두 가지이고 둘 다 옳습니다. 디스크 제조사와 국제단위계가 쓰는 10진 체계는 접두어마다 1000을 곱합니다. 1 kB는 1,000바이트, 1 MB는 100만, 1 TB는 1조 바이트입니다. 컴퓨터와 함께 태어난 2진 체계는 1024를 곱합니다. 메모리와 버스가 2의 거듭제곱으로 주소를 지정하기 때문입니다.
문제는 두 체계가 수십 년 동안 같은 이름을 써 왔다는 점입니다. Windows 탐색기가 "GB"라고 적을 때 실제로 계산하는 값은 기비바이트, 즉 1024로 세 번 나눈 값입니다. 그래서 정확히 1조 바이트가 들어 있는 1 TB 디스크가 화면에는 931.32 GB로 나타납니다. 사라진 것은 없고 세는 잣대가 달라졌을 뿐입니다. 1998년부터 IEC 80000-13 표준이 2진 접두어 KiB, MiB, GiB, TiB로 이 모호함을 해결하고 있습니다.
이 도구는 용량을 10진, 2진, 비트의 세 계열로 동시에 변환하고 정확한 바이트 수, 제조사가 표기하는 값, 운영체제가 보여줄 값을 두 값의 차이 비율과 함께 알려줍니다. 모든 계산은 브라우저에서 이루어집니다.
예시
1 TB931,32 GB디스크에는 상자에 적힌 그대로 1,000,000,000,000바이트가 들어 있습니다. 시스템은 이를 1024로 세 번 나눠 931.32 GB로 표시하지만 엄밀히 말하면 931.32 GiB입니다. 화면에서는 약 69 GB가 비는 것처럼 보여도 디스크에서는 단 1바이트도 비지 않습니다.1 GiB1073741824 B1 기비바이트는 2^30바이트입니다. 10진 기가바이트는 1,000,000,000이므로 2진 쪽이 7.37 % 큽니다. "1기가"라고 말할 때 사람이 떠올리는 양과 프로그램이 이해하는 양의 차이가 바로 이것입니다.4 TB3,64 TiB접두어가 커질수록 두 체계는 더 벌어집니다. 킬로에서 2.34 %, 기가에서 6.87 %, 테라에서 9.05 %입니다. "디스크가 작다"는 느낌이 대용량일수록 심해지는 이유입니다.100 Mbit12,5 MB네트워크 회선은 비트로, 저장 장치는 바이트로 측정합니다. 1바이트가 8비트이므로 100 Mbit/s 회선은 초당 최대 12.5 MB만 내려받습니다. 이 계산 하나가 인터넷 사업자에게 접수되는 불만의 절반을 설명해 줍니다.활용 사례
- 1 TB 디스크나 64 GB USB 메모리가 포장지에 적힌 것보다 적은 용량으로 표시되는 이유를 이해하기.
- API, 로그, ls -l 명령이 돌려주는 바이트 크기를 읽기 쉬운 단위로 바꾸기.
- 서로 다른 잣대로 재는 두 도구 사이에서 백업이나 이미지 크기를 비교하기.
- 문서는 MiB로, 화면은 MB로 말할 때 할당량, 볼륨, 업로드 한도를 산정하기.
- 회선 속도 Mbit/s를 실제 다운로드 속도 MB/s로 환산하기.
- 구매한 디스크의 공간이 약속보다 적지 않다는 것을 숫자로 고객에게 설명하기.
자주 묻는 질문
1 TB 디스크를 샀는데 931 GB로 보입니다. 속은 건가요?
아닙니다. 디스크에는 1,000,000,000,000바이트가 있고, 모든 제조사가 쓰는 10진 체계에서 1 TB가 바로 그 값입니다. Windows는 같은 바이트를 1024로 세 번 나눠 931.32를 얻은 뒤, 그 결과에 "GiB" 대신 "GB"라는 이름표를 붙입니다. 용량이 아니라 표기의 문제이며 바이트는 모두 그대로 있습니다. 진짜로 줄어드는 것은 별개의 이야기로, 포맷할 때 파일 시스템이 예약하는 공간입니다.
GB와 GiB의 차이는 무엇인가요?
1 GB는 1,000,000,000바이트(10^9)이고 1 GiB는 1,073,741,824바이트(2^30)입니다. 기비바이트가 7.37 % 큽니다. 같은 관계가 단계마다 반복됩니다. kB와 KiB, MB와 MiB, TB와 TiB입니다. 2진 기호는 가운데에 "i"가 들어가며 키비, 메비, 기비, 테비로 읽습니다.
모든 운영체제가 같은 값을 보여주나요?
아닙니다. 그래서 혼란이 더 커집니다. Windows는 1024의 거듭제곱으로 계산하면서도 GB와 TB로 적기 때문에 1 TB 디스크를 931 GB로 표시합니다. macOS는 2009년부터 10진으로 계산해 같은 디스크가 1 TB로 나옵니다. Linux는 도구마다 달라서 df -h와 ls -lh는 1024를, df -H와 ls -l --si는 1000을 쓰며, 많은 유틸리티는 필요할 때 이미 GiB라고 적습니다. 디스크는 그대로이고, 바뀌는 것은 재는 쪽입니다.
RAM은 왜 상자에 적힌 값과 일치하나요?
메모리는 2의 거듭제곱으로 제조하고 주소를 지정하기 때문입니다. "16 GB" 모듈은 실제로 16 GiB, 즉 17,179,869,184바이트입니다. 운영체제도 2진으로 세기 때문에 두 숫자가 일치해 아무도 차이를 느끼지 못합니다. 디스크는 반대로 제조사는 10진, 시스템은 2진으로 세기 때문에 차이가 바로 눈에 띕니다.
접두어에 따라 차이는 얼마나 커지나요?
단계마다 2.4 %씩 누적됩니다. 시스템이 보여주는 숫자는 킬로에서 2.34 %, 메가에서 4.63 %, 기가에서 6.87 %, 테라에서 9.05 %, 페타에서 11.18 %, 엑사에서 13.26 % 작습니다. 그래서 몇 kB짜리 파일에서는 차이를 느낄 수 없지만, 수 페타바이트 규모의 어레이에서는 수백 테라바이트의 기대치 차이가 됩니다.
Mbit과 MB는 같은 건가요?
아닙니다. 여덟 배 차이가 납니다. 네트워크 회선은 초당 비트로, 저장 장치는 바이트로 재고 1바이트는 8비트입니다. 300 Mbit/s 회선은 프로토콜 헤더를 빼기 전에도 최대 37.5 MB/s만 내려받습니다. 게다가 네트워크 접두어는 언제나 10진이어서 1 Mbit은 100만 비트이지 1,048,576비트가 아닙니다.
제 SSD는 왜 공간이 더 부족한가요?
10진과 2진의 차이에 두 가지가 더해집니다. 첫째는 오버프로비저닝으로, 컨트롤러가 마모된 블록을 대체하고 쓰기 속도를 높이려고 사용자에게 보이지 않는 플래시 메모리 일부를 남겨 둡니다. 둘째는 파일 시스템으로, 포맷하는 순간부터 테이블과 저널, 메타데이터에 공간을 씁니다. 둘 다 결함이 아니라 드라이브가 오래 제대로 동작하기 위한 비용입니다.
그러면 문서를 쓸 때는 어떤 단위를 써야 하나요?
오해의 여지가 없는 단위입니다. 값을 1024의 거듭제곱으로 계산했다면 MiB나 GiB로, 1000의 거듭제곱으로 계산했다면 MB나 GB로 적으세요. API나 설정 파일에서는 바이트 수를 그대로 노출하고 표시 방법은 화면에 맡기는 것이 가장 안전합니다. 코드 한 줄이면 같은 파일인데 두 도구가 다른 숫자를 보여주는 이유를 두고 몇 시간씩 벌어지는 논쟁을 막을 수 있습니다.