De Linux Foundation heeft de eerste release van een open platform voor softwaregestuurde Flash-opslag SEF (Software Enabled Flash) gepresenteerd, gebouwd op basis van de code die is overgedragen door KIOXIA (voorheen Toshiba Memory Corporation), waar in 1980 het Flash-geheugen is uitgevonden. De broncode van het hulpmiddel is geschreven in de programmeertaal C en wordt verspreid onder de BSD-licentie.
De toolkit bevat een reeks patches voor de Linux-kernel, een blokdriver voor SEF (Software Enabled Flash) apparaten, opdrachtregelhulpmiddelen, paravirtualiseerde SEF-drivers voor QEMU, een bibliotheek met API voor applicatieontwikkeling, patches voor nvme-cli en FIO die ondersteuning voor SEF toevoegen. De SDK bevat ook een referentie-implementatie van de softwarelaag FTL (Flash Translation Layer), die de vertaling van blockdevice-opdrachten naar verzoeken aan de daadwerkelijke Flash-geheugenchip, garbage collection en gegevensdistributie over geheugencellen verzorgt. FTL implementeert ondersteuning voor flexibele gegevensplaatsing (FDP - Flexible Data Placement), zonering (ZNS - Zoned Namespace) en de NVMe-specificatie.
Bij traditionele Flash-opslagsystemen fungeert de opslag als een zwarte doos, waarbij een deel van het geheugen wordt gereserveerd voor onderhoudsoperaties, de prestatie-indicatoren onvoorspelbaar zijn en er onvoorspelbare vertragingen optreden door interne controlleractiviteit, bijvoorbeeld tijdens garbage collection. In tegenstelling tot de traditionele Flash-opslag, waarbij de firmware van de controller verantwoordelijk is voor gegevensdistributie, isolatie van defecte blokken en garbage collection, stellen opslagapparaten met SEF-ondersteuning de lage niveau-logica voor werken met de Flash-geheugenchip in staat om door software en het besturingssysteem te worden beheerd.
SEF biedt de mogelijkheid om direct het fysieke beheer van gegevens te regelen, de algoritmes voor belastingverdeling te wijzigen, prioriteiten en QoS te beheren, een extra laag van blokvertaling te verwijderen, al het beschikbare geheugen te benutten, een voorspelbare werking met de opslag te bereiken en de opslag in te delen in virtuele apparaten die op het niveau van invoer/afvoer zijn geïsoleerd en verschillende prioriteiten in de verwerking hebben. De in SEF voorgestelde aanpak maakt het mogelijk om overhead te verlagen en de efficiëntie van de interactie met de opslag te verbeteren door zich aan te passen aan de huidige behoeften van de garbage collection-logica, geheugentoewijzing en blokverdeling om slijtage te verminderen.
Bijvoorbeeld, SEF maakt het mogelijk om de prestaties te normaliseren in situaties waar een array van op verschillende momenten aangeschafte opslagapparaten met verschillende kenmerken wordt gebruikt. Voor opslagapparaten die voornamelijk alleen voor lezen worden gebruikt, kunnen dankzij SEF eenvoudigere blokverdelingsalgoritmes worden toegepast en kan het geheugen dat voor overheaddoeleinden wordt gereserveerd, worden verminderd.
Bron: opennet.ru
