Wat is BlobFuse? - BlobFuse2
BlobFuse is een stuurprogramma voor een virtueel bestandssysteem voor Azure Blob Storage. Gebruik BlobFuse om toegang te krijgen tot uw bestaande Azure-blok-blobgegevens via het Linux-bestandssysteem. Pagina-blobs worden niet ondersteund.
Over het opensource-project BlobFuse2
BlobFuse2 is een opensource-project dat gebruikmaakt van de libfuse open source-bibliotheek (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:
Licenties
Het BlobFuse2-project is gelicentieerd onder de MIT-licentie.
Functies
Een volledige lijst met BlobFuse2-functies bevindt zich in de LEESMIJ voor BlobFuse2. 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-bestandssysteem in Linux. (BlobFuse2 ondersteunt opslagaccounts waarvoor platte naamruimten of hiërarchische naamruimte zijn geconfigureerd.)
- Gebruik eenvoudige bestandssysteembewerkingen zoals
mkdir
, ,opendir
,rmdir
readdir
,open
, ,read
,write
unlink
close
truncate
create
,stat
en .rename
- Lokale bestandscache gebruiken om de volgende toegangstijden te verbeteren.
- Krijg inzicht in koppelingsactiviteiten en resourcegebruik met behulp van BlobFuse2 Health Monitor.
Andere belangrijke functies in BlobFuse2 zijn:
- Streaming 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-lezenworkloads
Belangrijk
Vanwege bekende problemen met gegevensconsistentie bij het gebruik van oudere versies van Blobfuse2 in streaming met block-cache
de modus, wordt het sterk aanbevolen dat alle Blobfuse2-installaties worden bijgewerkt naar versie 2.3.2 of hoger. Zie dit voor meer informatie.
Verbeteringen van BlobFuse2 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 samenvatting van 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
- Vragen om versiecontrole en upgrade
- Ondersteuning voor versleuteling van configuratiebestanden
Bekijk de lijst met verbeteringen in de prestaties van BlobFuse2 van BlobFuse v1.
Voor BlobFuse v1-gebruikers
De verbeteringen van BlobFuse2 zijn aantrekkelijke redenen om een upgrade uit te voeren 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 migratiehandleiding voor BlobFuse2 bevat alle details die u nodig hebt voor compatibiliteit en het migreren van uw huidige workloads.
Ondersteuning
BlobFuse2 wordt ondersteund door Microsoft als deze binnen de opgegeven limieten wordt gebruikt. Als u een probleem ondervindt, meldt u dit op GitHub.
Beperkingen
BlobFuse2 garandeert geen 100% POSIX-naleving, omdat BlobFuse2 eenvoudig aanvragen vertaalt in Blob REST API's. Naamswijzigingsbewerkingen 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 zoals het systeemeigen Linux-bestandssysteem. Het virtuele mapschema is hetzelfde en gebruikt een slash (/
) als scheidingsteken. Eenvoudige bestandssysteembewerkingen zoals mkdir
, opendir
, readdir
, rmdir
, open
, read
, create
, , write
, close
, unlink
, truncate
, stat
en rename
werken hetzelfde als in het Linux-bestandssysteem.
BlobFuse2 verschilt van het Linux-bestandssysteem op een aantal belangrijke manieren:
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.
Naam van niet-atomisch item:
Azure Blob Storage biedt geen ondersteuning voor atomische naamwijzigingsbewerkingen. Naamnamen van één bestand zijn eigenlijk twee bewerkingen: een kopie en vervolgens een verwijdering van het origineel. Map hernoemt recursief alle bestanden in de map en hernoemt elk bestand.
Speciale bestanden:
BlobFuse2 ondersteunt alleen mappen, gewone bestanden en symbolische koppelingen. Speciale bestanden, zoals apparaatbestanden, pijpen en sockets, worden niet ondersteund.
mkfifo:
Het maken van Fifo wordt niet ondersteund door BlobFuse2. Als u deze actie probeert uit te voeren, wordt de fout 'functie niet geïmplementeerd' weergegeven.
chown en chmod:
Data Lake Storage-opslagaccounts ondersteunen machtigingen per object en ACL's, maar platte naamruimte (FNS) blok-blobs niet. Als gevolg hiervan biedt BlobFuse2 geen ondersteuning voor de
chown
enchmod
bewerkingen voor gekoppelde blok-blobcontainers. De bewerkingen worden ondersteund voor Data Lake Storage.Apparaatbestanden of pijpen:
BlobFuse2 biedt geen ondersteuning voor het maken van apparaatbestanden of pijpen.
Uitgebreide kenmerken (x-attrs):
BlobFuse2 biedt geen ondersteuning voor bewerkingen met uitgebreide kenmerken (
x-attrs
).Schrijfstreaming:
Gelijktijdig streamen van lees- en schrijfbewerkingen op grote bestandsgegevens kan onvoorspelbare resultaten opleveren. Tegelijkertijd schrijven naar dezelfde blob vanuit verschillende threads wordt niet ondersteund.
Gegevensintegriteit
Bestandscache speelt een belangrijke rol in de integriteit van gegevens die worden gelezen en geschreven naar een blob storage-bestandssysteemkoppeling. U wordt aangeraden de streamingmodus te gebruiken voor 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. Het is raadzaam om bestandscache te gebruiken voor workloads die geen grote bestanden bevatten, bijvoorbeeld wanneer bestanden volledig op schijf worden opgeslagen.
BlobFuse2 ondersteunt lees- en schrijfbewerkingen. Continue synchronisatie van gegevens die naar opslag worden geschreven met behulp van andere API's of andere koppelingen van BlobFuse2 is niet gegarandeerd. Voor gegevensintegriteit raden we aan dat meerdere bronnen niet dezelfde blob wijzigen, met name op hetzelfde moment. Als een of meer toepassingen tegelijkertijd naar hetzelfde bestand proberen te schrijven, kunnen de resultaten onverwacht zijn. 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 over het algemeen dat het bijgewerkte bestand niet de beoogde status heeft.
Opslaan in 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 bij het persistent maken van de gegevens in Blob Storage, wordt er een foutbericht weergegeven.
Streaming
Voor streaming tijdens lees- en schrijfbewerkingen worden blokken gegevens in de cache opgeslagen terwijl ze worden gelezen of bijgewerkt. Updates worden leeggemaakt naar Azure Storage wanneer een bestand wordt gesloten of wanneer de buffer wordt 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 uitvoeren van gelijktijdige leesbewerkingen en één schrijfbewerking wordt ondersteund, maar de gegevens die uit bepaalde threads worden gelezen, zijn mogelijk niet actueel.
Machtigingen
Wanneer een container is gekoppeld aan de standaardopties, krijgen alle bestanden 770 machtigingen en zijn ze alleen toegankelijk door de gebruiker die de koppeling uitvoert. Als u elke 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
en chmod
bewerkingen ondersteund voor Data Lake Storage, maar niet voor FNS-blok-blobs. Het uitvoeren van een chmod
bewerking op een gekoppelde FNS-blok-blobcontainer retourneert een geslaagd bericht, maar de bewerking slaagt niet daadwerkelijk.
Functieondersteuning
In deze tabel ziet u hoe deze functie wordt ondersteund in uw account en het effect op ondersteuning wanneer u bepaalde mogelijkheden inschakelt.
Storage account type | Blob Storage (standaardondersteuning) | Data Lake Storage 1 | Network File System (NFS) 3.0 1 | SSH File Transfer Protocol (SFTP) 1 |
---|---|---|---|---|
Standaard algemeen gebruik v2 | ||||
Premium blok-blobs |
1 Data Lake Storage, het NFS 3.0-protocol en SFTP ondersteunen allemaal een opslagaccount waarvoor een hiërarchische naamruimte is ingeschakeld.