Einbinden eines Azure Blob Storage-Containers unter Linux mit BlobFuse2

In diesem Artikel wird gezeigt, wie Sie BlobFuse2 installieren und konfigurieren, einen Azure-Blobcontainer einbinden und auf Daten im Container zugreifen. Die grundlegenden Schritte lauten wie folgt:

Installieren von BlobFuse2

Konfigurieren von BlobFuse2

Einbinden eines Blobcontainers

Zugreifen auf Daten

Installieren von BlobFuse2

Für das Installieren von BlobFuse2 gibt es zwei Möglichkeiten:

Option 1: Installieren von BlobFuse2 aus den Microsoft-Softwarerepositorys für Linux

Unterstützte Distributionen finden Sie unter BlobFuse2-Releases.

Informationen zur Libfuse-Unterstützung finden Sie in der BlobFuse2-Infodatei.

Um Ihre Version von Linux zu überprüfen, führen Sie den folgenden Befehl aus:

cat /etc/*-release

Wenn für Ihre Distribution keine Binärdateien verfügbar sind, können Sie Option 2: Erstellen der Binärdateien aus Quellcode verwenden.

So installieren Sie BlobFuse2 aus den Repositorys

Konfigurieren des Microsoft-Paketrepositorys

Installieren von BlobFuse2

Konfigurieren des Microsoft-Paketrepositorys

Konfigurieren Sie das Linux-Paketrepository für Microsoft-Produkte.

Beispiel einer Konfiguration für eine Redhat Enterprise Linux 8-Distribution:

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm

Analog dazu ändern Sie die URL in .../rhel/7/..., um auf eine Redhat Enterprise Linux 7-Distribution zu verweisen.

Installieren von BlobFuse2

sudo yum install blobfuse2

Option 2: Erstellen der Binärdateien aus Quellcode

So erstellen Sie die BlobFuse2-Binärdateien aus Quellcode:

  1. Installieren Sie die Abhängigkeiten:

    1. Installieren von Git:

      sudo apt-get install git
      
    2. Installieren Sie BlobFuse2-Abhängigkeiten.

      Auf Ubuntu:

      sudo apt-get install libfuse3-dev fuse3 -y
      
  2. Klonen Sie das Repository:

    sudo git clone https://github.com/Azure/azure-storage-fuse/
    sudo cd ./azure-storage-fuse
    sudo git checkout main
    
  3. Erstellen Sie BlobFuse2:

    go get
    go build -tags=fuse3
    

Tipp

Wenn Sie Go installieren müssen, lesen Sie Herunterladen und Installieren von Go.

Konfigurieren von BlobFuse2

Sie können BlobFuse2 mithilfe von verschiedenen Einstellungen konfigurieren. Einige der typischen Einstellungen sind folgende:

  • Speicherort und Optionen für die Protokollierung
  • Temporärer Dateipfad zum Zwischenspeichern
  • Informationen zum Azure-Speicherkonto und zum einzubindenden Blobcontainer

Die Einstellungen können in einer YAML-Konfigurationsdatei mithilfe von Umgebungsvariablen oder als Parameter konfiguriert werden, die an die BlobFuse2-Befehle übergeben werden. Die bevorzugte Methode ist die Verwendung der Konfigurationsdatei.

Ausführliche Informationen zu den einzelnen Konfigurationsparametern für BlobFuse2 und zum Vorgang für deren Angabe finden Sie in den folgenden Artikeln:

So konfigurieren Sie BlobFuse2 für das Einbinden:

  1. Konfigurieren Sie das Zwischenspeichern.
  2. Erstellen Sie ein leeres Verzeichnis zum Einbinden des Blobcontainers.
  3. Autorisieren Sie den Zugriff auf Ihr Speicherkonto.

Konfigurieren des Cachings

BlobFuse2 bietet systemeigene Leistung mithilfe von Methoden der lokalen Dateizwischenspeicherung. Die Zwischenspeicherkonfiguration und das Verhalten variieren abhängig davon, ob Sie große Dateien streamen oder auf kleinere Dateien zugreifen.

Konfigurieren des Zwischenspeicherns für das Streaming großer Dateien

BlobFuse2 unterstützt das Streaming für Lese- und Schreibvorgänge als Alternative zur Dateizwischenspeicherung auf Datenträgern. Im Streamingmodus speichert BlobFuse2 Blöcke von großen Dateien im Arbeitsspeicher sowohl zum Lesen als auch zum Schreiben zwischen. Die Konfigurationseinstellungen im Zusammenhang mit der Zwischenspeicherung für Streaming sind unter den stream:-Einstellungen in Ihrer Konfigurationsdatei zu finden:

stream:
    block-size-mb:
        For read only mode, the size of each block to be cached in memory while streaming (in MB)
        For read/write mode, the size of newly created blocks
    max-buffers: The total number of buffers to store blocks in
    buffer-size-mb: The size for each buffer

Informationen zum schnellen Einstieg mit einigen Einstellungen für ein einfaches Streamingszenario finden Sie in der Beispielkonfigurationsdatei für Streaming.

Konfigurieren des Zwischenspeicherns für kleinere Dateien

Kleinere Dateien werden in einem temporären Pfad zwischengespeichert, der in der Konfigurationsdatei unter file_cache: angegeben ist:

file_cache:
    path: <path to local disk cache>

Hinweis

BlobFuse2 speichert die Inhalte aller geöffneten Dateien im temporären Pfad. Stellen Sie sicher, dass der Platz zur Aufnahme aller geöffneten Dateien ausreicht.

Sie haben drei allgemeine Optionen zum Konfigurieren des temporären Pfads für die Dateizwischenspeicherung:

Verwenden eines lokalen Hochleistungsdatenträgers

Wenn Sie einen vorhandenen lokalen Datenträger zum Zwischenspeichern von Dateien verwenden, wählen Sie einen aus, der die bestmögliche Leistung bietet, z. B. einen Solid State Drive (SSD)-Datenträger.

Verwenden eines RAM-Datenträgers

Mit dem folgenden Beispiel wird ein RAM-Datenträger mit 16 GB und einem Verzeichnis für BlobFuse2 erstellt. Wählen Sie eine Größe aus, die Ihren Anforderungen entspricht. BlobFuse2 verwendet den RAM-Datenträger zum Öffnen von Dateien, die bis zu 16 GB groß sind.

sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o size=16g tmpfs /mnt/ramdisk
sudo mkdir /mnt/ramdisk/blobfuse2tmp
sudo chown <youruser> /mnt/ramdisk/blobfuse2tmp
Verwenden eines SSD-Datenträgers

In Azure können Sie mithilfe der für Ihre VMs verfügbaren kurzlebigen SSD-Datenträger einen Puffer mit niedriger Latenz für BlobFuse2 bereitstellen. Je nach dem von Ihnen verwendeten Bereitstellungs-Agent stellen Sie den kurzlebigen Datenträger auf /mnt für „cloud-init“ oder /mnt/resource für VMs für Microsoft Azure Linux Agent (waagent) bereit.

Stellen Sie sicher, dass Ihr Benutzer auf den temporären Pfad zugreifen kann:

sudo mkdir /mnt/resource/blobfuse2tmp -p
sudo chown <youruser> /mnt/resource/blobfuse2tmp

Erstellen eines leeren Verzeichnisses zum Einbinden des Blobcontainers

So erstellen Sie ein leeres Verzeichnis zum Einbinden des Blobcontainers:

mkdir ~/mycontainer

Autorisieren Sie den Zugriff auf Ihr Speicherkonto

Sie müssen für den Benutzer, der den Container einbindet, Zugriff auf das Speicherkonto gewähren. Die häufigsten Möglichkeiten zum Gewähren des Zugriffs sind unter einer der folgenden Optionen zu finden:

  • Speicherkonto-Zugriffsschlüssel
  • Shared Access Signature (SAS)
  • Verwaltete Identität
  • Dienstprinzipal

Sie können Autorisierungsinformationen in einer Konfigurationsdatei oder in Umgebungsvariablen bereitstellen. Weitere Informationen finden Sie unter Konfigurieren von Einstellungen für BlobFuse2.

Einbinden eines Blobcontainers

Wichtig

BlobFuse2 unterstützt keine sich überschneidenden Einbindungspfade. Stellen Sie bei der Ausführung mehrerer Instanzen von BlobFuse2 sicher, dass es zu jeder Instanz einen eindeutigen Bereitstellungspunkt ohne Überschneidung gibt.

BlobFuse2 unterstützt keine Koexistenz mit NFS in demselben Einbindungspfad. Die Ergebnisse der Ausführung von BlobFuse2 in demselben Einbindungspfad wie NFS sind nicht definiert und könnten zu einer Datenbeschädigung führen.

Führen Sie zum Einbinden eines Azure-Blockblobcontainers mithilfe von BlobFuse2 den folgenden Befehl aus. Der Befehl bindet den in ./config.yaml angegebenen Container im Speicherort ~/mycontainer ein:

sudo blobfuse2 mount ~/mycontainer --config-file=./config.yaml

Hinweis

Eine vollständige Liste von Einbindungsoptionen finden Sie unter BlobFuse2-Einbindungsbefehle.

Sie sollten jetzt über das Linux-Dateisystem und die entsprechenden APIs Zugriff auf Ihre Blockblobs haben. Versuchen Sie zum Testen Ihrer Bereitstellung ein neues Verzeichnis und eine neue Datei zu erstellen:

cd ~/mycontainer
mkdir test
echo "hello world" > test/blob.txt

Zugreifen auf Daten

Im Allgemeinen können Sie mit dem über BlobFuse2 bereitgestellten Speicher genauso arbeiten wie mit dem nativen Linux-Dateisystem. Er verwendet das virtuelle Verzeichnisschema mit einem Schrägstrich (/) als Trennzeichen im Dateipfad und unterstützt grundlegende Dateisystemvorgänge wie mkdir, opendir, readdir, rmdir, open, read, create, write, close, unlink, truncate, stat und rename.

Sie sollten jedoch einige wichtige Unterschiede in der Funktionalität beachten:

Featureunterstützung

Diese Tabelle zeigt, wie dieses Feature in Ihrem Konto unterstützt wird und welche Auswirkungen es auf den Support hat, wenn Sie bestimmte Funktionen aktivieren:

Speicherkontotyp Blob Storage (Standardunterstützung) Data Lake Storage Gen2 1 NFS 3.0 1 SFTP 1
Standard „Allgemein v2“ Ja Ja Ja Ja
Premium-Blockblobs Ja Ja Ja Ja

1 Azure Data Lake Storage Gen2, das Network File System (NFS) 3.0-Protokoll und die Unterstützung des SSH File Transfer Protocol (SFTP) erfordern ein Speicherkonto mit aktiviertem hierarchischem Namespace.

Weitere Informationen

Nächste Schritte