In principe gedraagt de ssd zich net als een harde schijf: ze ontvangt de data van het hostsysteem, slaat ze op in blokken of zones en roept ze weer op als erom wordt gevraagd en wordt geholpen door SMR. De traditionele ssd verzorgt de distributie van de data naar opslagcellen zelf. Door een deel van de taken naar de hostcontroller te verplaatsen, neemt de capaciteit van de ssd toe en verbeteren de prestaties. Hoe en waar de data worden opgeslagen, is voor de host of het besturingssysteem verder niet van belang.
ssd – data beheer, hostsysteem, flexibiliteit en zones
Zones, hulp en SMR methode
Hulp bij vullen zones harde schijf met SMR
Die taakverdeling is in het geval van harde schijven de laatste jaren iets minder strikt gescheiden geworden door de ontwikkeling van de Shingled Magnetic Recording (SMR)-methode: terwijl SMR-schijven voor consumenten zich naar buiten toe gedragen als klassieke harde schijven (Drive-Managed SMR) en hun speciale kenmerken in hun firmware verwerken, hebben zogenaamde Host-Managed SMR-schijven hulp nodig van het hostsysteem. Dat moet zorgen dat de zones van de harde schijf op de juiste wijze worden gevuld (meer over de SMR-technologie lees je in ARCHIEF: verhogen capaciteit harde schijf met technieken als SMR).
SMR vindt weg naar ssd
Dat principe vindt zijn weg nu ook naar ssd’s. Net als de host-managed SMR-schijven zullen dergelijke speciale ‘zoned namespace’ ssd’s voorlopig waarschijnlijk alleen in datacenters gebruikt worden – voor desktop-pc’s en laptops zal er in de nabije toekomst niets veranderen.
Geheugen verdelen in zones
De standaardisatie-organisatie NVM Express heeft de NVMe Zoned Namespaces (ZNS) en de bijbehorende ZNS Command Set voor NVMe-ssd’s gedefinieerd. Dergelijke ZNS-ssd’s zijn geen traditionele blokapparaten, maar zogeheten ‘zoned block devices’. Zij verdelen hun flashgeheugen in regio’s met een vaste grootte in – zones genaamd.
Schrijven in reeksen met eindpunt
Terwijl bij traditionele blokapparaten een sector naar elke willekeurige positie kan worden geschreven, kunnen ZNS-ssd’s binnen zo’n zone alleen sequentieel van voor naar achter worden geschreven. Het einde van de reeds geschreven data wordt aangegeven door een write-pointer. Bij die methode mogen er dan geen data meer voor de write-pointer worden geschreven.
Data bewerken binnen zone
Om de data binnen een zone te wissen, moet de hele zone worden teruggezet en wordt de write-pointer weer naar het begin teruggezet. Het schrijven naar willekeurige adressen moet door de driver van het bestandssysteem worden omgezet in opeenvolgende adressen. De data kunnen in willekeurige volgorde worden gelezen.
fysieke blokken en erase blokken
Hoewel afzonderlijke fysieke geheugenblokken in flashgeheugen afzonderlijk kunnen worden benaderd om te lezen, worden zij voor het wissen samengevoegd tot zogenaamde erase-blokken. Wanneer een enkel blok binnen een erase-blok wordt gewijzigd, wordt het niet overschreven maar gemarkeerd als ongeldig, en wordt de gewijzigde inhoud naar een ander vrij blok binnen hetzelfde erase-blok geschreven.
Logische blokken en gebruik geheugen bij beheer
De zogeheten Flash Translation Layer (FTL) van conventionele ssd’s zorgt ervoor dat wanneer een logisch blok wordt benaderd, het op dat moment bijbehorende fysieke blok teruggeleverd wordt. Om dat te realiseren, heeft de FTL van de ssd zelf ook een deel van de ssd-bronnen nodig, zowel van het DRAM als van het flashgeheugen. Daar slaat de FTL de toewijzingstabellen op.
Erase-blok opruimen en wissen
Als het aandeel ongeldige data in een erase-blok boven een bepaalde drempelwaarde komt, moet de FTL beginnen met opruimen (garbage-collection). Dan worden de nog geldige gebruiksdata naar een nieuw erase-blok gekopieerd en de toewijzingstabellen bijgewerkt. Zodra dat proces voltooid is, kan de FTL het erase-blok dat niet langer nodig is wissen.
Reserveren en gebruik van opslagcellen
Conventionele ssd’s reserveren delen van hun opslag om versleten of defecte flashcellen te kunnen vervangen en voor administratieve taken zoals garbage-collection en voor de FTL-tabellen. Bij consumer-ssd’s omvat dat reservegebied meestal 7 procent van de hele ssd, bij bijzonder schrijfbestendige enterprise-ssd’s kan dat oplopen tot 28 procent.
Ingedeeld in zones (ZNS)
Bij een ZNS-ssd zijn er geen reserves, de ssd heeft aanzienlijk minder geheugen nodig voor de FTL-tabellen en defecte cellen leiden gewoon tot kleinere zones. Het voordeel is dat bijna de volledige bruto capaciteit van een ssd beschikbaar is om data op te slaan, maar het nadeel is dat het hostbesturingssysteem of de toepassing de taken van de FTL moet overnemen.
Herschikken defecten doet ssd zelf
Het herschikken van defecte sectoren blijft de ssd doen. Hij verplaatst ze naar het einde van de bijbehorende zone. De host of het besturingssysteem ontvangt alleen logische sectoren van de ssd. De defecte sectoren reduceren daarbij de capaciteit van de zone.
Host controleert garbage-collection
De hostsoftware heeft de controle over wanneer de garbage-collection begint. Daardoor kan de host de latenties die optreden bij het schrijven naar het medium beter beheersen. De garbage-collection wordt dan gestart op het moment dat er geen applicaties data naar de ssd schrijven.
Voordelen bij zware belasting
Een ZNS-ssd heeft daarmee vooral voordelen bij zware belasting, dus wanneer de schijf continu boven zijn capaciteit moet (over)schrijven, lezen en wissen. Uit een vergelijking van drie 1TB-ssd’s – ZNS, enterprise en consumer – bij Western Digital bleek dat de doorvoer van de conventionele ssd’s daalde bij het bereiken van de nominale capaciteit, terwijl de ZNS-ssd de data met gelijke snelheid bleef verwerken.
Verschil conventionele ssd en ZNS-ssd
Die daling van de schrijfsnelheid kan worden verklaard door het feit dat de twee conventionele ssd’s de garbage-collection starten op het moment dat de nominale capaciteit van de ssd wordt bereikt, wat betekent dat de ssd op dat moment druk aan de slag gaat met het herschikken en daardoor minder nieuwe data kan verwerken. Dat proces vindt bij de ZNS-ssd niet plaats, omdat die voor het overschrijven een volledige zone uit meerdere erase-blokken kan resetten.
Firmware voor begrip van indeling en gebruik zones
De nieuwe kenmerken van de ZNS-standaard moeten ook door de firmware van de ZNS-ssd’s worden ondersteunt. Die moeten de nieuwe commando’s begrijpen en implementeren, en zones met logische adressen aan de host kunnen leveren. Zones zijn tussen 256 MB en 2 GB groot, het aantal wordt bepaald door de bruto capaciteit van de schijf en de grootte van de zone.
Openen en sluiten zones voor schrijven
De ZNS-norm maakt onderscheid tussen inactieve, actieve en open resources. Om in een zone te kunnen schrijven, moet hij open zijn. Dat kan worden gedaan door de zone expliciet te openen door het juiste commando naar de ssd te sturen of impliciet door naar die zone te schrijven. Aangezien elke open zone opslag op de ssd gebruikt, sluit de host zones die niet gebruikt worden. Een host kan echter meerdere zones parallel gebruiken.
Blijf op de hoogte van de nieuwste informatie en tips!
Schrijf je in voor de nieuwsbrief:
Toepassingen in krachtige parallelle mogelijkheden
Zoned storage is met name geschikt voor virtualisatie- en cloudservers. De virtuele opslag van de afzonderlijke virtuele machines kun je dan verdelen over een of meer zones van de ssd. Bij traditionele ssd’s kunnen de garbage-collection en applicaties die in de virtuele machines draaien elkaar in de weg zitten, maar bij ZNS-ssd’s is dat uitgesloten.
Die krachtigere parallelle mogelijkheden komen ook andere toepassingen ten goede die sequentieel schrijven, zoals back-up- en archiefsoftware, video-opname- en editingsoftware, en key-value-databases zoals RocksDB en bestandssystemen zoals Ceph.
Programmeren voor zoned storage
Om zoned storage te kunnen gebruiken, moeten besturingssystemen en toepassingen daarop worden aangepast. Bij traditionele ssd’s schrijft de host data naar het opslagapparaat door het adres aan het opslagapparaat door te geven waar de data naar geschreven moeten worden.
Schrijven in zones via in- en outpointers
Met ZNS-ssd’s gebruikt de host voor het schrijven het zone-append-commando. Hij geeft dan niet het absolute adres door, maar alleen het startadres van de betreffende zone. De firmware van de ssd schrijft de data dan naar het einde van de Zone Write Pointers en levert het absolute adres van de geschreven data terug aan de host. Dat reduceert de complexiteit van de block-allocation aanzienlijk. De ssd onthoudt de positie van de write-pointers.
SMR, ZNS en Linux
Aangezien dat mechanisme ook grote voordelen kan opleveren voor SMR-harddisks, implementeert de Linux-kernel een emulatie van het zone-append-commando voor die schijven. Daarmee kunnen onder Linux bestandssystemen die met zoned-block-devices kunnen werken hetzelfde I/O-pad gebruiken voor zowel ZNS-ssd’s als SMR-schijven.
Op dit moment zijn dat het Flash-Friendly-Filesystem (F2FS) en Zonefs. Die laatste schotelt een eenvoudige abstractie van het apparaat voor en presenteert de afzonderlijke zones als bestanden aan toepassingen. Het copy-on-write-bestandssysteem BTRFS is ook aangepast om te werken met zoned-block-devices. De ontwikkelaars van de Linux-kernel controleren de implementatie momenteel om die in de hoofdkernel op te nemen.
Ext4 en XFS gebruiken omweg voor zones
Bestandssystemen zoals Ext4 en XFS die niet zijn voorbereid om met zoned-devices te werken, kunnen desondanks gebruikt worden door middel van dm-zoned device mapper target. Daarbij voegt dm-zoned een extra abstractielaag in tussen het bestandssysteem en de ssd door de geschreven data te serialiseren en op een tweede opslagmedium een vertaaltabel op te slaan, zodat het bestandssysteem zijn data terug kan vinden. Applicatieontwikkelaars kunnen via de opensource library libsbc toegang krijgen tot zoned-devices (zie de links hieronder).
Informatie over Zoned Storage
Open bibliotheek libzbc
Wat profiteert van ZNS-ssd
Met name prestatiekritische toepassingen zoals key-value-databases, object-stores en virtualizers profiteren nog het meest van de verminderde latentie van een ZNS-ssd, maar ook audio- en videotoepassingen doen er hun voordeel mee. Bovendien kunnen toepassingen hun data er beter mee van elkaar scheiden.
Beter gebruik beschikbare resources
De Linux-kernel vanaf versie 5.9 bevat de nodige driveraanpassingen om met ZNS-ssd’s overweg te kunnen. Radian Memory, Samsung en Western Digital hebben de eerste ssd-exemplaren al. De prijs per GB opslagruimte zal in de toekomst ook lager zijn met ZNS-ssd: zoned-storage maakt simpelweg beter gebruik van de beschikbare resources.
Afkortingen:
SMR = Shingled Magnetic Recording
ZNS = zoned namespace
FTL + Flash Translation Layer
Dit artikel verscheen in c’t magazine 6; 2021, p44 – door Johannes Thumshirn en Daniel Dupré
c’t 11/2024
Lees ook
Sonnet PCIe-adapter voor vier ssd’s
De PCIe-adapter van Sonnet is geschikt voor vier snelle PCIe-ssd’s. Als je ze samen in een RAID-array stopt, lopen de prestaties nog verder op.
Ssd koeling: nuttig of alleen voor de show?
Steeds meer M.2-ssd’s worden geleverd met koellichamen en ook bij moederborden wordt de ssd koeling vaak meegeleverd. We hebben getest of koeling voor...