Na een jaar van stilstand in de ontwikkeling werk aan een nieuwe tak van het fouttolerante gedistribueerde bestandssysteem en de tweede kandidaat voor releases. Recentelijk een wijziging van eigenaarschap plaatsgevonden in het bedrijf dat LizardFS ontwikkelt, er is een nieuw management aangesteld en de ontwikkelaars zijn veranderd. De afgelopen twee jaar heeft het project zich teruggetrokken uit de gemeenschap en kreeg het niet de aandacht die het verdiende, maar het nieuwe team is vastbesloten om de vroegere relaties met de gemeenschap nieuw leven in te blazen en nauw contact te herstellen. De code van het project is geschreven in C en C++ en valt onder de GPLv3-licentie.
LizardFS is een gedistribueerd clusterbestandssysteem dat het mogelijk maakt om gegevens over verschillende servers te verspreiden, maar toegang te bieden tot deze gegevens in de vorm van een enkele grote partitie, waarop gewerkt wordt op een manier die vergelijkbaar is met traditionele schijfpartities. In de gemonteerde partitie met LizardFS worden POSIX-bestandseigenschappen, ACL's, vergrendelingen, sockets, kanalen, apparaatsbestanden, symbolische en harde links ondersteund. Het systeem heeft geen enkelvoudig punt van falen; alle componenten zijn redundantly opgebouwd. Er wordt gelijktijdige toegang tot gegevens ondersteund (meerdere clients kunnen tegelijkertijd bestanden benaderen).
Om fouttolerantie te waarborgen, worden gegevens opgesplitst in replicaties die over verschillende knooppunten worden verspreid met redundantie (meerdere kopieƫn worden op verschillende knooppunten opgeslagen) - in het geval van uitval van knooppunten of opslag, blijft het systeem operatief zonder gegevensverlies en herverdeelt het automatisch de gegevens rekening houdend met de overgebleven knooppunten. Voor het uitbreiden van de opslag is het voldoende om nieuwe knooppunten aan te sluiten zonder de werking te onderbreken (het systeem repliceert zelf een deel van de gegevens naar nieuwe servers en balanceert de opslag rekening houdend met de nieuwe servers). Op een vergelijkbare manier kan het cluster ook verkleind worden - verouderde apparatuur kan simpelweg worden losgekoppeld.
Gegevens en metadata worden apart opgeslagen. Voor de werking wordt aanbevolen om twee metadata-servers te installeren die in master-slave-modus werken, evenals minimaal twee dataverzamelservers (chunkservers). Bovendien kunnen log-servers worden gebruikt voor de back-up van metadata, die informatie over het wijzigen van metadata opslaan en het herstel in geval van schade aan alle aanwezige metadata-servers mogelijk maken. Elk bestand wordt opgesplitst in blokken (chunks) van maximaal 64 MB. De blokken worden verdeeld over de opslagservers volgens de gekozen replicatiemodus: standaard (expliciete determinatie van het aantal kopieƫn die op verschillende knooppunten worden geplaatst, eventueel gekoppeld aan specifieke mappen - voor belangrijke gegevens kan het aantal kopieƫn worden verhoogd, en voor onbelangrijke gegevens kan dit worden verlaagd), XOR (RAID5) en EC (RAID6).
De opslag kan opschalen tot petabyte-groottes. Toepassingsgebieden zijn onder andere archivering, opslag van virtuele machine-afbeeldingen, multimedia-gegevens, back-ups, gebruik als DRC (Disaster Recovery Center) en als opslag in clusters van high-performance computing. LizardFS biedt een zeer hoge leessnelheid voor bestanden van elke grootte, en voor schrijven vertoont het een goede prestatie bij het volledig schrijven van grote en gemiddelde bestanden, wanneer er geen constante wijzigingen, intensief werken met open bestanden en eenmalige bewerkingen met een hoop kleine bestanden zijn.
Onder de kenmerken van het bestandssysteem kan ook de ondersteuning van snapshots worden opgemerkt, die de status van bestanden op een bepaald tijdstip weergeven, en de ingebouwde implementatie van een 'prullenbak' (bestanden worden niet onmiddellijk verwijderd en zijn een tijdlang beschikbaar voor herstel). Toegang tot de sectie kan worden beperkt op basis van IP-adres of wachtwoord (vergelijkbaar met NFS). Er zijn quota- en kwaliteitsbeheersingsmechanismen beschikbaar die de grootte en bandbreedte voor bepaalde gebruikerscategorieƫn kunnen beperken. Het is mogelijk om geografisch verspreide opslag aan te maken, waarvan de segmenten zich in verschillende datacenters bevinden.
Het LizardFS-project werd opgericht in 2013 als een fork , en verschilt voornamelijk door de aanwezigheid van een replicatiemodus op basis van Reed-Solomon foutcorrectiecodes (analoge raidzN), uitgebreide ondersteuning voor ACL, de aanwezigheid van een client voor het Windows-platform, extra optimalisaties (bijvoorbeeld wanneer client en opslagserver worden gecombineerd, worden de blokken indien mogelijk van de huidige node afgeleverd en worden metadata in het geheugen gecached), een flexibeler configuratiesysteem, ondersteuning voor voorspellend lezen van gegevens, quota voor mappen en interne herstructureringen.
De release van LizardFS 3.13.0 is gepland voor eind december. De belangrijkste vernieuwing van LizardFS 3.13 is de inzet van een consensus algoritme voor het waarborgen van de fouttolerantie (overgang van masterservers in geval van uitval). (er wordt een eigen implementatie van uRaft gebruikt, die eerder werd toegepast in commerciƫle producten). Het gebruik van uRaft vereenvoudigt de configuratie en verkort de vertragingen bij herstel na een storing, maar vereist minimaal drie werkende nodes, waarvan er ƩƩn wordt gebruikt voor quorum.
Andere wijzigingen: een nieuwe client gebaseerd op het FUSE3-subsyteem, oplossing van problemen met foutcorrectie, de nfs-ganesha plugin is herschreven in de programmeertaal C. In de update 3.13.0-rc2 zijn verschillende kritieke fouten opgelost die eerdere testversies van de 3.13-tak ongeschikt maakten voor gebruik (oplossingen voor de 3.12-tak zijn nog niet gepubliceerd, en de update van 3.12 naar 3.13 leidt nog steeds tot volledige gegevensverlies).
In 2020 zal de focus liggen op de ontwikkeling van
, een volledig herschreven kern van LizardFS, die, volgens de ontwikkelaars, drie keer meer prestaties zal bieden in vergelijking met de 3.12-tak. In Agama zal de overstap naar een gebeurtenisgestuurde architectuur (event driven) worden doorgevoerd, met asynchrone invoer/uitvoer op basis van , met voornamelijk werk in de gebruikersruimte (om de afhankelijkheid van de cachemechanismen van de kernel te verminderen). Bovendien zullen er een nieuw debug-subsysteem en een netwerkanalyse-tool met ondersteuning voor prestatie-autotuning worden aangeboden.
De LizardFS-client zal volledige ondersteuning bieden voor versiebeheer van schrijfoperaties, wat de betrouwbaarheid van herstel na storingen zal verhogen, problemen zal oplossen die ontstaan bij gedeelde toegang van verschillende clients tot dezelfde gegevens, en een significante toename van de prestaties zal mogelijk maken. De client zal worden overgezet naar een eigen netwerkondersteuningsysteem dat in de gebruikersruimte werkt. De eerste werkprotoype van LizardFS op basis van Agama is gepland voor het tweede kwartaal van 2020. Tegelijkertijd beloven ze hulpmiddelen te realiseren voor de integratie van LizardFS met het Kubernetes-platform.
Bron: opennet.ru
