Das Symptom
Auf der Verpackung stand 1 TB. Im Rechner steht 931 GB. Beim USB-Stick mit 32 GB
sind es 29,8, bei der 4-TB-Platte 3,64 – und das Sicherungsabbild, das laut
Anzeige 3,7 TB groß ist, passt nicht darauf, obwohl die Zahlen doch stimmen
müssten.
Dasselbe Muster an anderer Stelle: Der Anschluss liefert 100 Mbit/s, der Download
läuft mit 12 MB/s, und irgendjemand ruft beim Anbieter an. Oder ein Kollege
behauptet, es fehle ein Zehntel der Kapazität, und niemand kann ihm auf die
Schnelle das Gegenteil beweisen.
Die „Layer 8“-Wahrheit
Es fehlt kein Byte. Es gibt zwei Einheiten, die beide „Gigabyte“ heißen. Die eine
ist 1 000 000 000 Bytes, die andere 1 073 741 824. NIST führt beide in einer
Tabelle nebeneinander auf und beschreibt auch, wie es dazu kam: Weil 2¹⁰ zufällig
fast 1000 ist, benutzten Fachleute jahrzehntelang das metrische Präfix für den
binären Wert. Das ging gut, solange nur Fachleute mitredeten. Heute, schreibt
NIST, weiß „everybody“ eben nicht mehr, was ein Megabyte ist – Speicherhersteller
meinen die Million, Arbeitsspeicherhersteller die Zweierpotenz, und die alte
1,44-MB-Diskette rechnete mit einer dritten Bedeutung von 1 024 000 Bytes.
Die Lösung existiert seit Dezember 1998: kibi, mebi, gibi, tebi, geschrieben Ki,
Mi, Gi, Ti. Seither ist MB die Million und MiB die Zweierpotenz, sauber getrennt.
Nur benutzt es fast niemand konsequent – und das ist der eigentliche Layer-8-Teil.
Wie tief das sitzt, zeigt ausgerechnet eine Herstellerdokumentation: Die
Microsoft-Referenz zur Funktion, die unter Windows Bytezahlen lesbar macht,
behauptet im Fließtext, seit Windows 10 werde dezimal gerechnet – und liefert
direkt darunter eine Beispieltabelle, deren vier Werte sich nur binär nachrechnen
lassen. Wenn sich eine Seite in sich selbst widerspricht, ist die Lehre nicht,
besser hinzusehen, sondern gar nicht erst zu glauben: Man besorgt sich die
Bytezahl und teilt selbst.
Die echte, verifizierte Lösung
1000 % faktenbasiert. Jeder Befehl ist real, jeder Pfad existiert. Schritt für Schritt:
1.Die Bytezahl besorgen, nicht die Beschriftung
Jede Diskussion über Speicherplatz wird kurz, sobald die nackte Zahl auf dem Tisch liegt. Unter Linux zeigt `df` mit einer Blockgröße von einem Byte den Rohwert; jedes andere System hat ein Feld dafür. Erst diese Zahl ist eine Tatsache, alles danach ist eine Umrechnung.
df --block-size=1 /tmp | tail -1
# tmpfs 4034015232 909123584 3124891648 23% /tmp
2.Dieselbe Zahl in beiden Maßen anzeigen lassen
GNU coreutils macht die Doppeldeutigkeit sichtbar: `-h` rechnet laut Handbuchseite „in powers of 1024“, `-H` beziehungsweise `--si` rechnet „in powers of 1000“. Zwei Ausgaben, ein Datenträger, kein Byte Unterschied – der Sprung von 3,8 auf 4,1 ist reine Einheitenwahl.
df -h /tmp | tail -1
# tmpfs 3,8G 868M 3,0G 23% /tmp
df -H /tmp | tail -1
# tmpfs 4,1G 910M 3,2G 23% /tmp
3.Selbst umrechnen, statt der Anzeige zu glauben
`numfmt` beherrscht beide Maße und benennt sie sogar richtig. Damit lässt sich in einem Zweizeiler klären, ob eine Angabe dezimal oder binär gemeint war – die Antwort auf die Frage aus dem Laden ist eine Sekunde Arbeit statt einer Viertelstunde Streit. Beachte, dass numfmt auf ganze Einheiten aufrundet: Aus den exakt 931,32 GiB einer 1-TB-Platte wird in der Ausgabe 932Gi.
numfmt --to=si 1000000000000 # 1,0T
numfmt --to=iec-i 1000000000000 # 932Gi
numfmt --to=iec-i 4000000000000 # 3,7Ti
numfmt --to=iec-i 32000000000 # 30Gi
4.Vor dem Kauf mit dem Faktor rechnen, den man wirklich bekommt
Faustregel aus den NIST-Werten, selbst nachgerechnet: Ein Terabyte sind 931,32 GiB, vier Terabyte sind 3,64 TiB, ein 32-GB-Stick fasst 29,8 GiB. Wer ein Abbild von 3,7 TiB sichern will, braucht deshalb keine 4-TB-Platte, sondern eine größere. Das ist der Punkt, an dem die Verwechslung Geld kostet.
python3 -c "print(round(4_000_000_000_000 / 2**40, 2), 'TiB')"
# 3.64 TiB
5.Bei Leitungen durch acht teilen
Datenraten stehen in bit pro Sekunde, Dateigrößen in Byte. Ein Byte ist nach NIST acht bit, also ist die maximal mögliche Übertragungsgeschwindigkeit ein Achtel der beworbenen Zahl – und das noch vor allen Protokollkosten. Wer sich über einen Download mit 12 MB/s an einer 100er-Leitung ärgert, ärgert sich über das Erwartete.
python3 -c "print(100_000_000 / 8 / 1_000_000, 'MB/s')"
# 12.5 MB/s
6.In eigenen Texten und Tabellen das eindeutige Kürzel benutzen
Wenn in einem Angebot, einem Ticket oder einer Konfiguration eine Größe steht, gehört das passende Kürzel dazu: MB für eine Million Bytes, MiB für 1 048 576 Bytes. Das kostet einen Buchstaben und erspart die Rückfrage. Wo das Gegenüber die Schreibweise nicht kennt, schreibt man die Bytezahl in Klammern dahinter – die ist immer eindeutig.
7.Vor der Reklamation die Bytes zählen
Bevor jemand eine Platte zurückschickt, wird die Rohgröße in Bytes gegen die Herstellerangabe gehalten. Stimmt sie, ist alles in Ordnung und nur die Anzeige rechnet anders. Weicht sie deutlich ab, ist es ein echter Fall – dann fehlt entweder eine Partition, oder es ist eine gefälschte Kapazität. Diese Unterscheidung schafft man nur mit der Bytezahl, nie mit der beschrifteten Anzeige.