Wat is BlobFuse? - BlobFuse2

BlobFuse is een stuurprogramma voor het virtuele bestandssysteem voor Azure Blob Storage. Gebruik BlobFuse om toegang te krijgen tot uw bestaande Azure-blok-blobgegevens via het Linux-bestandssysteem.

Over het BlobFuse2 open source-project

BlobFuse2 is een open source project dat gebruikmaakt van de bibliotheek libfuse open source (fuse3) om te communiceren met de Linux FUSE-kernelmodule. BlobFuse2 implementeert bestandssysteembewerkingen met behulp van de Azure Storage REST API's.

Het open source BlobFuse2-project bevindt zich op GitHub:

Licentieverlening

Het BlobFuse2-project is in licentie gegeven onder de MIT-licentie.

Functies

Een volledige lijst met BlobFuse2-functies vindt u in blobFuse2 README. Dit zijn enkele van de belangrijkste taken die u kunt uitvoeren met behulp van BlobFuse2:

  • Koppel een Azure Blob Storage container of Azure Data Lake Storage Gen2 bestandssysteem in Linux. (BlobFuse2 ondersteunt opslagaccounts waarvoor platte naamruimten of hiërarchische naamruimte zijn geconfigureerd.)
  • Gebruik eenvoudige bestandssysteembewerkingen zoals mkdir, opendir, readdir, rmdir, , readopen, , create, write, close, unlink, stattruncateen rename.
  • Gebruik lokale bestandscache om de volgende toegangstijden te verbeteren.
  • Krijg inzicht in koppelactiviteiten en resourcegebruik met behulp van BlobFuse2 Health Monitor.

Andere belangrijke functies in BlobFuse2 zijn:

  • Streamen ter ondersteuning van het lezen en schrijven van grote bestanden
  • Parallelle downloads en uploads om de toegangstijd voor grote bestanden te verbeteren
  • Meerdere koppelingen naar dezelfde container voor alleen-lezenwerkbelastingen

BlobFuse2-verbeteringen van BlobFuse v1

BlobFuse2 biedt meer functieondersteuning en verbeterde prestaties in meerdere gebruikersscenario's van BlobFuse v1. Zie BlobFuse2 README voor de uitgebreide lijst met verbeteringen. Hier volgt een overzicht van de verbeteringen in BlobFuse2 van BlobFuse v1:

  • Verbeterde caching
  • Meer beheerondersteuning via nieuwe Azure CLI-opdrachten
  • Meer ondersteuning voor logboekregistratie
  • De toevoeging van write-streaming voor grote bestanden (voorheen werd alleen lezenstreaming ondersteund)
  • Nieuwe BlobFuse2 Health Monitor om inzicht te krijgen in koppelactiviteiten en resourcegebruik
  • Compatibiliteits- en upgradeopties voor bestaande BlobFuse v1-gebruikers
  • Versiecontrole en upgradeprompt
  • Ondersteuning voor versleuteling van configuratiebestanden

Bekijk de lijst met prestatieverbeteringen van BlobFuse2 van BlobFuse v1.

Voor gebruikers van BlobFuse v1

De verbeteringen van BlobFuse2 zijn aantrekkelijke redenen om te upgraden en te migreren naar BlobFuse2. Als u nog niet klaar bent om te migreren, kunt u BlobFuse2 gebruiken om een blobcontainer te koppelen met behulp van dezelfde configuratieopties en Azure CLI-parameters die u gebruikt met BlobFuse v1.

De BlobFuse2-migratiehandleiding biedt alle details die u nodig hebt voor compatibiliteit en migratie van uw huidige workloads.

Ondersteuning

BlobFuse2 wordt ondersteund door Microsoft als deze wordt gebruikt binnen de opgegeven limieten. Als u een probleem ondervindt, meldt u dit op GitHub.

Beperkingen

BlobFuse2 biedt geen garantie voor 100% POSIX-naleving, omdat BlobFuse2 eenvoudig aanvragen vertaalt in Blob REST API's. Hernoembewerkingen zijn bijvoorbeeld atomisch in POSIX, maar niet in BlobFuse2.

Bekijk de volledige lijst met verschillen tussen een systeemeigen bestandssysteem en BlobFuse2.

Verschillen tussen het Linux-bestandssysteem en BlobFuse2

Op veel manieren kunt u blobFuse2-gekoppelde opslag gebruiken, net als het systeemeigen Linux-bestandssysteem. Het virtuele mapschema is hetzelfde en gebruikt een schuine streep (/) als scheidingsteken. Eenvoudige bestandssysteembewerkingen zoals mkdir, opendir, readdirrmdir, , open, read, create, write, close, unlink, , stattruncate, en rename werken op dezelfde wijze als in het Linux-bestandssysteem.

BlobFuse2 verschilt op een aantal belangrijke manieren van het Linux-bestandssysteem:

  • Aantal leesbewerkingen van vaste koppelingen:

    Om prestatieredenen rapporteert BlobFuse2 de vaste koppelingen in een map niet correct. Het aantal vaste koppelingen voor lege mappen retourneert als 2. Het getal voor niet-lege mappen retourneert altijd als 3, ongeacht het werkelijke aantal vaste koppelingen.

  • Niet-atomische naamnamen:

    Azure Blob Storage biedt geen ondersteuning voor bewerkingen voor atomische naamswijziging. Het wijzigen van één bestand is eigenlijk twee bewerkingen: een kopie en vervolgens een verwijdering van het origineel. Map hernoemt recursief alle bestanden in de map en wijzigt de naam van elk bestand.

  • Speciale bestanden:

    BlobFuse2 ondersteunt alleen mappen, reguliere bestanden en symbolische koppelingen. Speciale bestanden zoals apparaatbestanden, pipes en sockets worden niet ondersteund.

  • mkfifo:

    Het maken van Fifo wordt niet ondersteund door BlobFuse2. Als u deze actie probeert uit te voeren, treedt de fout 'functie niet geïmplementeerd' op.

  • chown en chmod:

    Data Lake Storage Gen2 opslagaccounts ondersteunen machtigingen per object en ACL's, maar blok-blobs met platte naamruimten (FNS) niet. Als gevolg hiervan biedt BlobFuse2 geen ondersteuning voor de chown bewerkingen en chmod voor gekoppelde blok-blobcontainers. De bewerkingen worden ondersteund voor Data Lake Storage Gen2.

  • Apparaatbestanden of pipes:

    BlobFuse2 biedt geen ondersteuning voor het maken van apparaatbestanden of pipes.

  • Extended-attributes (x-attrs):

    BlobFuse2 biedt geen ondersteuning voor bewerkingen met uitgebreide kenmerken (x-attrs).

  • Write-streaming:

    Gelijktijdig streamen van lees- en schrijfbewerkingen op grote bestandsgegevens kan onvoorspelbare resultaten opleveren. Het gelijktijdig schrijven naar dezelfde blob vanuit verschillende threads wordt niet ondersteund.

Gegevensintegriteit

Opslaan in de cache speelt een belangrijke rol in de integriteit van gegevens die worden gelezen en geschreven naar een Blob Storage-bestandssysteemkoppeling. We raden de streamingmodus aan voor gebruik met grote bestanden, die streaming ondersteunt voor zowel lees- als schrijfbewerkingen. BlobFuse2 slaat blokken streamingbestanden in het geheugen op. Voor kleinere bestanden die niet uit blokken bestaan, wordt het hele bestand opgeslagen in het geheugen. Bestandscache is de tweede modus. We raden u aan de bestandscache te gebruiken voor werkbelastingen die geen grote bestanden bevatten, bijvoorbeeld wanneer bestanden in hun geheel op schijf worden opgeslagen.

BlobFuse2 ondersteunt lees- en schrijfbewerkingen. Continue synchronisatie van gegevens die naar de opslag worden geschreven met behulp van andere API's of andere koppelingen van BlobFuse2 wordt niet gegarandeerd. Voor gegevensintegriteit raden we aan dat meerdere bronnen niet dezelfde blob wijzigen, met name niet tegelijkertijd. Als een of meer toepassingen tegelijkertijd naar hetzelfde bestand proberen te schrijven, zijn de resultaten mogelijk onverwacht. Afhankelijk van de timing van meerdere schrijfbewerkingen en de nieuwheid van de cache voor elke bewerking, kan het resultaat zijn dat de laatste schrijver wint en eerdere schrijfbewerkingen verloren gaan, of dat het bijgewerkte bestand niet de beoogde status heeft.

Bestanden opslaan in de cache op schijf

Wanneer een bestand het onderwerp is van een schrijfbewerking, worden de gegevens eerst opgeslagen in de cache op een lokale schijf. De gegevens worden pas naar Blob Storage geschreven nadat de bestandsingang is gesloten. Als er een probleem optreedt om de gegevens in Blob Storage te behouden, wordt er een foutbericht weergegeven.

Streaming

Voor streaming tijdens lees- en schrijfbewerkingen worden gegevensblokken in de cache opgeslagen in het geheugen wanneer ze worden gelezen of bijgewerkt. Updates worden naar Azure Storage leeggemaakt wanneer een bestand wordt gesloten of wanneer de buffer is gevuld met vuile blokken.

Het lezen van dezelfde blob vanuit meerdere gelijktijdige threads wordt ondersteund. Gelijktijdige schrijfbewerkingen kunnen echter leiden tot onverwachte resultaten van bestandsgegevens, waaronder gegevensverlies. Het gelijktijdig uitvoeren van leesbewerkingen en één schrijfbewerking wordt ondersteund, maar de gegevens die uit sommige threads worden gelezen, zijn mogelijk niet actueel.

Machtigingen

Wanneer een container is gekoppeld met de standaardopties, krijgen alle bestanden 770 machtigingen en zijn ze alleen toegankelijk voor de gebruiker die de koppeling uitvoert. Als u een gebruiker toegang wilt geven tot de koppeling BlobFuse2, koppelt u BlobFuse2 met behulp van de --allow-other optie . U kunt deze optie ook configureren in het YAML-configuratiebestand.

Zoals eerder vermeld, worden de chown bewerkingen en chmod ondersteund voor Data Lake Storage Gen2, maar niet voor FNS-blok-blobs. Het uitvoeren van een chmod bewerking op een gekoppelde FNS-blok-blobcontainer retourneert een bericht dat is geslaagd, maar de bewerking niet daadwerkelijk slaagt.

Functieondersteuning

In deze tabel ziet u hoe deze functie wordt ondersteund in uw account en wat het effect is op de ondersteuning wanneer u bepaalde mogelijkheden inschakelt.

Type opslagaccount Blob Storage (standaardondersteuning) Data Lake Storage Gen2 1 Network File System (NFS) 3.0 1 SSH File Transfer Protocol (SFTP) 1
Standard v2 voor algemeen gebruik Yes Yes Yes Yes
Premium-blok-blobs Yes Yes Yes Yes

1 Data Lake Storage Gen2, het NFS 3.0-protocol en SFTP-ondersteuning vereisen allemaal een opslagaccount waarvoor een hiërarchische naamruimte is ingeschakeld.

Zie ook

Volgende stappen