
Wanneer u werkt met USB-flashstations, SD-kaarten, microSD-kaarten, SSD’s en andere apparaten voor blokopslag, zijn twee getallen bijzonder nuttig: de sectorgrootte en het aantal LBA’s. Samen beschrijven deze waarden de adresseerbare capaciteit van een opslagapparaat op blokniveau.
LBA staat voor Logical Block Addressing, oftewel logische blokadressering. In plaats van een opslagapparaat te beschrijven aan de hand van oudere fysieke begrippen zoals cilinders, koppen en sectoren, worden moderne opslagapparaten geadresseerd als een opeenvolgende verzameling logische blokken. Elk blok krijgt een nummer toegewezen, beginnend bij LBA 0 en doorlopend tot het laatste beschikbare logische blok op het apparaat.
Eenvoudig gezegd vertelt het aantal LBA’s ons hoeveel adresseerbare sectoren beschikbaar zijn, terwijl de sectorgrootte aangeeft hoeveel bytes elk van die sectoren bevat.
Waarom het exacte aantal LBA’s belangrijk is
Bij normale bestandsopslag blijft een klein verschil in de ruwe capaciteit van een apparaat meestal onopgemerkt. Een gebruiker die documenten of foto’s naar een flashstation kopieert, maakt zich er doorgaans niet druk om dat twee nominaal identieke stations een iets verschillend aantal sectoren bevatten.
Bij disk imaging en duplicatie ligt dat anders.
Een bronapparaat kan een partitie of schijfstructuur bevatten die zeer dicht bij de laatst beschikbare LBA doorloopt. Als het doelapparaat minder LBA’s bevat dan het bronapparaat, zelfs wanneer het verschil relatief klein is, past een sector-voor-sector-image mogelijk niet.
Dit kan zelfs gebeuren wanneer beide apparaten met exact dezelfde capaciteit worden verkocht. Twee apparaten met het label 32 GB, 64 GB of 128 GB bevatten niet noodzakelijkerwijs exact hetzelfde aantal adresseerbare logische sectoren.
Het probleem wordt vooral belangrijk bij structuren die zich dicht bij het einde van een schijf bevinden. Media die met GPT zijn geformatteerd, bewaren bijvoorbeeld een back-up van de GPT-header dicht bij het einde van het apparaat. Het wijzigen van het beschikbare LBA-bereik kan daarom meer beïnvloeden dan alleen de hoeveelheid ongebruikte ruimte aan het einde van een schijf.
LBA is nauwkeuriger dan de capaciteit die op het apparaat staat
Commerciële capaciteitsaanduidingen zoals 32 GB, 64 GB en 128 GB zijn handig voor consumenten, maar vormen geen nauwkeurige beschrijving van de opslaggeometrie.
Wanneer exacte compatibiliteit belangrijk is, geven drie waarden een veel duidelijker beeld:
1. Apparaatgrootte in bytes
2. Grootte van de logische sector
3. Totaal aantal LBA’s
Met deze waarden kunt u exact bepalen hoeveel adresseerbare opslagruimte beschikbaar is en of het ene opslagapparaat daadwerkelijk groot genoeg is om de volledige blokstructuur van een ander apparaat te bevatten.
De relatie tussen LBA en sectorgrootte
De basisberekening voor capaciteit is:
Voor een apparaat dat logische sectoren van 512 bytes gebruikt:
De berekening kan ook worden omgekeerd. Als de totale capaciteit van het apparaat in bytes en de grootte van de logische sector bekend zijn, kan het aantal LBA’s als volgt worden berekend:
Neem bijvoorbeeld een apparaat met 60.125.184 LBA’s en een logische sectorgrootte van 512 bytes:
Aantal LBA’s: 60.125.184
Sectorgrootte: 512 bytes
60.125.184 × 512
= 30.784.094.208 bytes
Deze relatie wordt vooral belangrijk wanneer opslagapparaten worden vergeleken voor disk imaging, duplicatie, klonen, forensisch onderzoek of andere toepassingen waarbij het exacte aantal beschikbare sectoren van belang is.
Waarom sectoren van 512 bytes zo gebruikelijk zijn
Een logische sectorgrootte van 512 bytes is al tientallen jaren de traditionele standaard voor opslagapparaten. Deze grootte komt nog steeds zeer vaak voor bij USB-flashstations, geheugenkaarten en veel andere opslagapparaten vanwege de compatibiliteit met besturingssystemen, bestandssystemen, opstartstructuren, controllers en bestaande software.
Daarom is het bij het onderzoeken van een typisch USB-flashstation over het algemeen redelijk om een logische sectorgrootte van 512 bytes te verwachten. Wanneer de exacte capaciteit belangrijk is, mag dit echter niet zomaar worden aangenomen. Windows kan de logische sectorgrootte rechtstreeks rapporteren en door de werkelijke waarde te controleren wordt elke onzekerheid weggenomen.
Sommige moderne opslagapparaten gebruiken fysieke sectoren van 4.096 bytes, terwijl ze aan het besturingssysteem nog steeds logische sectoren van 512 bytes presenteren. Deze configuratie wordt doorgaans 512e genoemd, oftewel 512-byte-emulatie. Andere apparaten kunnen logische sectoren van 4.096 bytes rechtstreeks beschikbaar stellen; deze worden doorgaans 4Kn genoemd.
Waarom zou een apparaat een andere sectorgrootte gebruiken?
Grotere sectoren kunnen de opslagefficiëntie verbeteren omdat er minder sectoren nodig zijn om dezelfde hoeveelheid capaciteit te beschrijven. Een sector van 4.096 bytes bevat acht keer zoveel gegevens als een sector van 512 bytes. Grotere sectoren kunnen daarnaast een deel van de overhead voor adressering en foutcorrectie verminderen en beter aansluiten bij de interne architectuur van moderne opslagapparaten met hoge capaciteit.
Het wijzigen van de logische sectorgrootte heeft echter gevolgen voor de compatibiliteit. Besturingssystemen, bootloaders, bestandssystemen, duplicatieapparatuur, embedded systemen en gespecialiseerde software kunnen logische sectoren van 512 bytes verwachten. Dit is een van de redenen waarom een opslagapparaat intern fysieke 4K-sectoren kan gebruiken en tegelijkertijd logische sectoren van 512 bytes aan de host presenteert.
Hoe de sectorgrootte het aantal LBA’s verandert
Dezelfde capaciteit in bytes kan zeer verschillende aantallen LBA’s hebben, afhankelijk van de grootte van de logische sector.
Neem een hypothetisch opslaggebied met 4.096.000 bytes.
Logische sectoren van 512 bytes
4.096.000 ÷ 512
= 8.000 LBA’s
Logische sectoren van 4.096 bytes
4.096.000 ÷ 4.096
= 1.000 LBA’s
De hoeveelheid opslagruimte is niet veranderd. Alleen de grootte van elk adresseerbaar logisch blok is veranderd. Het apparaat met 4K-sectoren heeft daarom slechts een achtste van het aantal LBA’s nodig om dezelfde capaciteit in bytes te beschrijven.
Daarom beschrijft alleen het aantal LBA’s de opslagcapaciteit niet volledig. Ook de grootte van de logische sector moet bekend zijn.
LBA omrekenen naar MB en MiB
Wanneer een aantal LBA’s wordt omgerekend naar een meer herkenbare capaciteitswaarde, is het belangrijk onderscheid te maken tussen decimale megabytes (MB) en binaire mebibytes (MiB). Hoewel de termen in alledaagse gesprekken vaak door elkaar worden gebruikt, vertegenwoordigen ze verschillende aantallen bytes.
1 MB = 1.000.000 bytes
MB = (Aantal LBA’s × Grootte logische sector) ÷ 1.000.000
Binaire mebibytes (MiB)
1 MiB = 1.048.576 bytes
MiB = (Aantal LBA’s × Grootte logische sector) ÷ 1.048.576
Dit onderscheid verklaart waarom opslagcapaciteiten verschillend kunnen lijken, afhankelijk van de manier waarop een hulpprogramma of besturingssysteem de waarde rapporteert. Fabrikanten van opslagapparaten adverteren capaciteit doorgaans met decimale eenheden, terwijl veel besturingssystemen en technische berekeningen traditioneel binaire eenheden gebruiken.
Voor een apparaat met logische sectoren van 512 bytes is het bijzonder eenvoudig om het aantal LBA’s naar MiB om te rekenen:
Omdat 1.048.576 ÷ 512 = 2.048:
Dit is een handige snelle formule bij het werken met USB-flashstations die logische sectoren van 512 bytes rapporteren.
De omgekeerde berekening is:
Om bijvoorbeeld 7 MiB adresseerbare capaciteit toe te voegen aan een apparaat met sectoren van 512 bytes, is het volgende nodig:
7 × 2.048
= 14.336 extra LBA’s
Huidige LBA: 60.110.848
Extra LBA’s: 14.336
Doel-LBA: 60.125.184
Dit betekent dat een apparaat met 60.110.848 LBA’s 14.336 extra logische sectoren nodig heeft om 60.125.184 LBA’s te bereiken. Bij logische sectoren van 512 bytes vertegenwoordigt dat verschil exact 7 MiB adresseerbare capaciteit.
Als in plaats daarvan decimale MB nodig zijn, gebruikt de berekening 1.000.000 bytes per MB in plaats van 1.048.576 bytes per MiB:
Zo controleert u de sectorgrootte in Windows PowerShell
Met Windows PowerShell kunt u eenvoudig de logische en fysieke sectorgroottes bekijken die door aangesloten opslagapparaten worden gerapporteerd.
Open PowerShell en voer het volgende in: (kopiëren en plakken)
Get-Disk | Select-Object Number, FriendlyName, BusType, LogicalSectorSize, PhysicalSectorSize
Deze opdracht geeft een overzicht van de schijven die door Windows worden herkend en toont het schijfnummer, de apparaatnaam, het bustype, de logische sectorgrootte en de fysieke sectorgrootte. Voor meer achtergrond over hoe USB-opslagapparaten met het hostsysteem communiceren, kunt u ook de uitleg over het USB Mass Storage Device-protocol bekijken.
De uitvoer kan bijvoorbeeld een USB-apparaat tonen dat hierop lijkt:
Number FriendlyName BusType LogicalSectorSize PhysicalSectorSize
2 USB Flash Drive USB 512 512
De belangrijke waarde voor het berekenen van het aantal LBA’s is LogicalSectorSize. In dit voorbeeld bevat elk logisch blok dat aan Windows wordt gepresenteerd 512 bytes.
Het is belangrijk om onderscheid te maken tussen de logische sectorgrootte en de fysieke sectorgrootte. LBA adresseert de logische blokken die aan het besturingssysteem worden gepresenteerd. Daarom is bij het berekenen van het aantal LBA’s de waarde LogicalSectorSize het relevante getal.
Een 512e-station kan bijvoorbeeld een logische sectorgrootte van 512 bytes en een fysieke sectorgrootte van 4.096 bytes rapporteren. Windows adresseert dat apparaat nog steeds met de logische blokken van 512 bytes, zodat de LBA-berekening is gebaseerd op 512 bytes en niet op de onderliggende fysieke sectoren van 4.096 bytes.
Zo krijgt u het aantal LBA’s met PowerShell
Zodra het juiste schijfnummer is vastgesteld, kan PowerShell het totale aantal LBA’s rechtstreeks berekenen.
Als het USB-apparaat bijvoorbeeld Schijf 2 is: (kopiëren en plakken)
Get-Disk -Number 2 | Select Number, FriendlyName, LogicalSectorSize, @{Name="LBA_Count";Expression={$_.Size / $_.LogicalSectorSize}}
De berekening die PowerShell uitvoert is simpelweg:
De PowerShell-opdracht gaat er niet van uit dat elk opslagapparaat logische sectoren van 512 bytes gebruikt. In plaats daarvan leest de opdracht de door het geselecteerde apparaat gerapporteerde LogicalSectorSize en gebruikt die waarde voor de berekening.
Dit betekent dat dezelfde opdracht werkt met traditionele apparaten met logische sectoren van 512 bytes, 512e-stations en native 4Kn-stations. Voor een apparaat van 512 bytes of een 512e-apparaat dat logische sectoren van 512 bytes rapporteert, wordt de apparaatgrootte gedeeld door 512. Voor een native 4Kn-apparaat dat logische sectoren van 4.096 bytes rapporteert, wordt de apparaatgrootte gedeeld door 4.096.
Dit onderscheid is belangrijk omdat een 512e-station gegevens fysiek kan opslaan in sectoren van 4.096 bytes, terwijl het aan Windows nog steeds logische sectoren van 512 bytes presenteert. De LBA-nummering volgt de grootte van het logische blok dat aan het besturingssysteem wordt aangeboden, en niet noodzakelijk de fysieke sectorgrootte die intern door het opslagapparaat wordt gebruikt.
De eenvoudige LBA-formules
Ter referentie zijn dit de belangrijkste berekeningen die worden gebruikt bij het werken met LBA-waarden:
AANTAL LBA’S BEREKENEN
Aantal LBA’s = Capaciteit in bytes ÷ Grootte logische sector
CAPACITEIT IN BYTES BEREKENEN
Capaciteit in bytes = Aantal LBA’s × Grootte logische sector
LBA OMREKENEN NAAR DECIMALE MB
MB = (Aantal LBA’s × Grootte logische sector) ÷ 1.000.000
LBA OMREKENEN NAAR MiB
MiB = (Aantal LBA’s × Grootte logische sector) ÷ 1.048.576
SECTOREN VAN 512 BYTES: LBA NAAR MiB
Capaciteit in MiB = Aantal LBA’s ÷ 2.048
SECTOREN VAN 512 BYTES: MiB NAAR LBA
Aantal LBA’s = Capaciteit in MiB × 2.048
TWEE APPARATEN MET SECTOREN VAN 512 BYTES VERGELIJKEN
Capaciteitsverschil in MiB = LBA-verschil ÷ 2.048
Die laatste vergelijking is bijzonder nuttig wanneer u exact wilt bepalen hoeveel kleiner het ene USB-flashstation is dan het andere. Het belangrijke detail is dat het delen van het LBA-verschil door 2.048 een resultaat in MiB oplevert, en niet in decimale MB, wanneer de apparaten logische sectoren van 512 bytes gebruiken.