Cookies voor statistiek en advertenties
We gebruiken cookies voor statistiek en voor advertenties, allebei naar Google. Weigeren verandert niets aan wat je te zien krijgt.Lees de privacypagina
1 GiB = 1048576 KiB
Tik een waarde in en de omrekening van gibibyte naar kibibyte loopt mee terwijl je typt. De factor is precies 1048576: zoveel KiB komt er op 1 GiB. De berekening gebeurt op je eigen apparaat; na het laden vraagt deze pagina geen server meer iets.
16 GiB is 16780000 KiB
— het geheugen van een middenklasse laptop.
931 GiB is 976200000 KiB
— wat Windows toont bij een schijf van een terabyte.
0,0004883 GiB is 512 KiB
— een halve mebibyte.
0,000003815 GiB is 4 KiB
— een geheugenpagina op vrijwel elk systeem.
| GiB | KiB |
|---|---|
| 1 | 1048576 |
| 2 | 2097152 |
| 5 | 5242880 |
| 10 | 10485760 |
| 50 | 52428800 |
| 100 | 104857600 |
| 500 | 524288000 |
| 1000 | 1048576000 |
GiB naar KiB omrekenen
Een gibibyte is 1.073.741.824 bytes, ongeveer 7 % meer dan een gigabyte. Windows meet in gibibytes maar noemt ze «GB», en daarin zit het hele raadsel van de verdwenen ruimte.
Een kibibyte is precies 1.024 bytes. De naam is in 1998 ingevoerd zodat «kilobyte» weer 1.000 kon betekenen, al is de gewoonte nooit helemaal aangeslagen.
Deze kant op is het een vermenigvuldiging, en wel met een heel getal: één gibibyte is 1.048.576 kibibytes, precies, en 1.048.576 is de definitie en geen meting die er dichtbij kwam.
Daarmee is het een van de weinige omrekeningen die je uit je hoofd kunt doen, en de uitkomst is controleerbaar: deel terug en je moet precies op je begingetal uitkomen, zonder rest die je moet wegpraten.
Eén GiB is 1.024 van de eenheid eronder; één GB is 1.000. Op deze pagina is dat het verschil tussen 1048576 KiB en 976562,5 KiB — 7,4 % — en het gat groeit bij elke stap omhoog: op een foto een verwaarloosbare afronding, op een harde schijf een zichtbaar stuk.
Hierin zit het raadsel van de verdwenen opslag volledig. Een schijf die als terabyte verkocht wordt bevat in decimale eenheden precies wat erop staat; Windows telt hem daarna in binaire eenheden maar houdt de decimale naam aan, en daar krimpt het getal zonder dat er iets weg is. macOS telt deze eenheden sinds 10.6 decimaal, en daarom kan dezelfde schijf op twee computers twee maten lijken.
Een partitietabel slaat start en lengte op in sectoren. LVM slaat fysieke extents op. mdadm slaat een chunkgrootte op in kibibytes. mkfs neemt een blokaantal. Geen daarvan is de eenheid waarin iemand beslist hoe groot een volume moet zijn, dus vereist elke schijfindeling minstens één keer een gibibyte-cijfer naar beneden omzetten, meestal zelfs naar twee verschillende kleinere eenheden binnen dezelfde sessie.
De getallen om paraat te hebben zijn 1.048.576 KiB, 2.097.152 sectoren van 512 bytes, en 262.144 blokken van 4 KiB per gibibyte. Alle drie zijn exacte machten van twee, wat handig is en ook de reden dat een verkeerd antwoord plausibel oogt: een fout met een factor twee levert nog steeds een net getal op, en alleen het tegen de totale capaciteit controleren toont hem aan.
Lange tijd begon de eerste partitie op een pc-schijf bij sector 63, omdat de geometrie die het BIOS rapporteerde drieënzestig sectoren per spoor aangaf en het eerste spoor de bootrecord droeg. Drieënzestig is oneven, dus was elke grens ervan afgeleid ook oneven, en toen schijven overgingen naar fysieke sectoren van 4 KiB terwijl ze nog logische sectoren van 512 bytes presenteerden, kwam elk filesystemblok over twee fysieke sectoren te liggen.
Beginnen bij sector 2048 — één mebibyte erin — loste het op door een offset te kiezen deelbaar door elke granulariteit in het spel: fysieke sectoren van 4 KiB, flashpagina’s van 8 KiB en groter, RAID-chunks van 512 KiB, LVM-extents van 4 MiB. De prijs is één mebibyte schijf, wat op gibibyteschaal een afrondingsfout is, en elk partitioneringsgereedschap heeft ruim een decennium standaard hiervoor gekozen. Een geërfde indeling die ergens anders begint, is de moeite waard te controleren voor hij wordt uitgebreid.
De prijs is een read-modify-write-cyclus, en die geldt voor schrijven eerder dan voor lezen. Een schijf met fysieke sectoren van 4 KiB kan niet minder dan een schrijven, dus dwingt een filesystemblok van 4 KiB dat over twee ligt de schijf beide te lezen, samen te voegen en beide terug te schrijven. Op flash is de equivalente eenheid het wisblok en is de versterking groter, want de controller moet veel meer relokeren en uiteindelijk wissen dan er geschreven werd.
Niets hiervan verschijnt in een capaciteitscijfer, een SMART-attribuut of een df-uitvoer — het volume werkt en rapporteert precies de juiste grootte. Het toont zich als willekeurige schrijfdoorvoer die een fractie is van wat de hardware belooft, en als schrijfversterking die de levensduur van een ssd verkort. Controleren is goedkoop: parted /dev/sda align-check optimal 1 beantwoordt het rechtstreeks, en cat /sys/block/sda/queue/optimal_io_size geeft de granulariteit die de schijf verkiest.
LVM wijst standaard extents van 4 MiB toe, dus is een logisch volume van 100 GiB 25.600 extents en rondt elke grootte die geen veelvoud van 4.096 KiB is naar boven af naar een. Daarom kunnen lvcreate -L 10G en lvcreate -L 10GiB volumes van dezelfde grootte opleveren terwijl lvcreate -l 100%FREE iets willekeurig ogends produceert — het is exact in extents en onnet in gibibytes.
RAID voegt nog een laag toe. mdadm gebruikt standaard een chunk van 512 KiB, en een stripe over n datadisks is n chunks breed, dus heeft een vijf-schijven RAID 5 een stripe van 2 MiB. Bestandssysteemaanmaak zou dat moeten weten: mkfs.ext4 neemt stride en stripe-width in filesystemblokken, en die goed instellen laat volledige stripe-writes de pariteitslezing vermijden. Dit zijn allemaal kibibyte-niveau beslissingen genomen onder een volumegrootte gekozen in gibibytes.
De veiligste gewoonte is het achtervoegsel te geven en het gereedschap te laten omzetten. parted accepteert KiB, MiB, GiB en TiB expliciet, en parted -a optimal plaatst de grens op de juiste granulariteit zonder dat je het hoeft te zeggen. sfdisk neemt groottes met achtervoegsels K, M en G die binair zijn. mkfs.ext4 neemt een blokaantal, dus moet een grootte in gibibytes 262.144 blokken per GiB worden, en dat verkeerd doen produceert een filesystem dat past en de partitie niet vult.
Is een kaal getal onvermijdelijk, schrijf dan het gibibyte-cijfer in een opmerking of commitbericht ernaast. Een indelingsscript vol getallen als 2097152 en 209715200 klopt en is volledig ondoorzichtig, en de volgende die het verandert zet er een om en de ander niet. De rekenkunde is exact in beide richtingen; de documentatie is wat ontbreekt.
parted print rondt in zijn standaardeenheid af op drie significante cijfers, en fdisk -l drukt een leesbare tekenreeks af. Beide zijn voor het lezen. Gaat de grootte daadwerkelijk gebruikt worden — controleren of twee partities in een mirror overeenkomen, uitzoeken of een vervangende schijf groot genoeg is, een dd-kopie op maat maken — zet het gereedschap dan op sectoren en neem het exacte gehele getal. parted unit s print en blockdev --getsz geven het beide.
Dit doet er het meest toe bij het vervangen van een defecte schijf in een array. Twee schijven verkocht als dezelfde capaciteit kunnen enkele mebibytes verschillen, en een mirror accepteert geen lid kleiner dan het bestaande. De conventie die het probleem vermijdt, is een bewust gat te laten — partitioneren tot een rond gibibyte-cijfer iets onder de echte grootte van de schijf — zodat het exacte sectoraantal van de volgende schijf nooit hoeft te matchen.
Een partitie van 100 GiB is 104.857.600 KiB, en een verse ext4 erop rapporteert merkbaar minder. Het journaal neemt een vast bedrag, gewoonlijk 128 MiB op een volume van deze omvang. Inode-tabellen worden vooraf toegewezen op één inode per 16 KiB standaard, elk 256 bytes — zo’n 1,6 GiB op een volume van 100 GiB. Vijf procent wordt standaard voor root gereserveerd, wat tune2fs -m kan verkleinen op een datavolume waar niets de reserve nodig heeft.
Dat is bijna zeven gibibyte verklaard voor er een byte geschreven is, en niets ervan is verlies — het zijn de structuren die het filesystem laten werken, plus een reserve zodat een volle schijf geen onherstelbare wordt. Zal het volume weinig grote bestanden bevatten, dan snijdt mkfs.ext4 -T largefile het aantal inodes flink terug en geeft het meeste van de inode-tabel terug.
1 GiB is 1048576 KiB. De waarde is exact en niet afgerond: de verhouding tussen gibibyte en kibibyte ligt per definitie vast.
Nee. De berekening gebeurt in je browser. Je kunt de verbinding verbreken en gewoon doorrekenen, en dat is meteen de eenvoudigste manier om het na te gaan.
Omdat twee verschillende eenheden dezelfde naam dragen. Fabrikanten rekenen 1 GB = 1.000.000.000 bytes; Windows toont gibibytes, dus 1.073.741.824 bytes, maar noemt ze «GB». Dezelfde schijf lijkt daardoor zeven procent kleiner. Er is niets verdwenen.
Eén KiB is 9,53674e-7 GiB. Het is dezelfde verhouding achterstevoren gelezen, dus een uitkomst van de ene pagina die je door de andere haalt, moet weer uitkomen waar hij begon.
Wat deze pagina over informatie-eenheden beweert, is na te gaan, en dit zijn de documenten die de zaak beslechten.
De factor is een constante op de pagina en de som is vier bewerkingen, dus er gaat niets ergens heen en er hoeft ook niets heen. Het getal dat je intikt verlaat de browser niet — er is geen verzoek waarin het zou kunnen meereizen.