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
Für das Installieren von BlobFuse2 gibt es zwei Möglichkeiten:
- Installieren von BlobFuse2 aus den Microsoft-Softwarerepositorys für Linux: Dies ist die bevorzugte Installationsmethode. BlobFuse2 ist in den Repositorys für mehrere gängige Linux-Distributionen verfügbar.
- Erstellen der BlobFuse2-Binärdateien aus Quellcode: Sie können die BlobFuse2-Binärdateien aus Quellcode erstellen, wenn sie nicht in den Repositorys für Ihre Distribution verfügbar sind.
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
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
Option 2: Erstellen der Binärdateien aus Quellcode
So erstellen Sie die BlobFuse2-Binärdateien aus Quellcode:
Installieren Sie die Abhängigkeiten:
Installieren von Git:
sudo apt-get install git
Installieren Sie BlobFuse2-Abhängigkeiten.
Auf Ubuntu:
sudo apt-get install libfuse3-dev fuse3 -y
Klonen Sie das Repository:
sudo git clone https://github.com/Azure/azure-storage-fuse/ sudo cd ./azure-storage-fuse sudo git checkout main
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:
- Konfigurieren von Einstellungen für BlobFuse2
- BlobFuse2-Konfigurationsdatei
- BlobFuse2-Umgebungsvariablen
- BlobFuse2-Einbindungsbefehle
So konfigurieren Sie BlobFuse2 für das Einbinden:
- Konfigurieren Sie das Zwischenspeichern.
- Erstellen Sie ein leeres Verzeichnis zum Einbinden des Blobcontainers.
- 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
- Verwenden eines RAM-Datenträgers
- Verwenden eines SSD-Datenträgers
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 Storage1 | NFS 3.0 1 | SFTP 1 |
---|---|---|---|---|
Standard „Allgemein v2“ | ||||
Premium-Blockblobs |
1 Azure Data Lake Storage, das Network File System 3.0-Protokoll (NFS) und die Unterstützung des SSH File Transfer Protocol (SFTP) erfordern ein Speicherkonto mit aktiviertem hierarchischem Namespace.