Einbinden von Azure Blob Storage als Dateisystem mit BlobFuse v1

Achtung

Dieser Artikel bezieht sich auf CentOS, eine Linux-Distribution, die sich dem End-of-Life-Status (EOL) nähert. Sie sollten Ihre Nutzung entsprechend planen. Weitere Informationen finden Sie im CentOS-Leitfaden für das Lebensende.

Wichtig

Bei BlobFuse2 handelt es sich um die neueste Version von BlobFuse.Sie verfügt über viele wichtige Verbesserungen gegenüber der in diesem Artikel beschriebenen Version, BlobFuse v1. Informationen zu den Verbesserungen bei BlobFuse2 finden Sie in der Liste der Verbesserungen bei BlobFuse2.

Bei BlobFuse handelt es sich um einen virtuellen Dateisystemtreiber für Azure Blob Storage. Sie können BlobFuse nutzen, um über das Linux-Dateisystem auf die vorhandenen Blockblobdaten in Ihrem Speicherkonto zuzugreifen. BlobFuse verwendet das Schema für virtuelle Verzeichnisse mit einem Schrägstrich (/) als Trennzeichen.

In diesem Leitfaden wird gezeigt, wie Sie BlobFuse v1 verwenden, einen Blob Storage-Container unter Linux einbinden und auf Daten zugreifen. Weitere Informationen zu BlobFuse v1 finden Sie in der Infodatei und im Wiki.

Warnung

BlobFuse garantiert keine 100-prozentige Konformität mit POSIX, da Anforderungen einfach in Blob-REST-APIs übersetzt werden. Beispielsweise sind Umbenennungsvorgänge in POSIX atomisch, in BlobFuse jedoch nicht. Eine vollständige Liste der Unterschiede zwischen einem nativen Dateisystem und BlobFuse finden Sie im BlobFuse-Quellcoderepository.

Installieren von BlobFuse v1 unter Linux

In den Microsoft-Softwarerepositorys für Linux stehen BlobFuse-Binärdateien für Ubuntu-, Debian-, SUSE-, CentOS-, Oracle Linux- und RHEL-Distributionen zur Verfügung. Um BlobFuse für diese Distributionen zu installieren, konfigurieren Sie eines der Repositorys aus der Liste. Sie können die Binärdateien auch gemäß den Azure Storage-Installationsschritten aus dem Quellcode erstellen, wenn für Ihre Distribution keine Binärdateien verfügbar sind.

BlobFuse wurde im Linux-Repository für die folgenden Ubuntu-Versionen veröffentlicht: 16.04, 18.04 und 20.04; außerdem für die RHEL-Versionen 7.5, 7.8, 7.9, 8.0, 8.1 und 8.2, die CentOS-Versionen 7.0 und 8.0, die Debian-Versionen 9.0 und 10.0, die SUSE-Version 15 sowie für Oracle Linux 8.1. Führen Sie diesen Befehl aus, um sicherzustellen, dass Sie eine dieser Versionen bereitgestellt haben:

cat /etc/*-release

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 BlobFuse v1

sudo yum install blobfuse

Vorbereiten der Einbindung

BlobFuse fordert einen temporären Pfad im Dateisystem zum Puffern und Zwischenspeichern geöffneter Dateien an, wodurch nahezu die gleiche Leistung wie bei einer nativen Lösung erreicht wird. Wählen Sie für diesen temporären Pfad den leistungsstärksten Datenträger aus, oder verwenden Sie eine RAM-Disk, um eine optimale Leistung zu erzielen.

Hinweis

BlobFuse speichert die Inhalte aller geöffneten Dateien im temporären Pfad. Stellen Sie sicher, dass ausreichend Speicher für alle geöffneten Dateien verfügbar ist.

(Optional) Verwenden einer RAM-Disk für den temporären Pfad

Das folgende Beispiel erstellt einen RAM-Datenträger mit 16 GB sowie ein Verzeichnis für BlobFuse. Wählen Sie basierend auf Ihren Anforderungen die Größe aus. Dieser RAM-Datenträger ermöglicht BlobFuse das Öffnen von Dateien mit einer Größe von bis zu 16 GB.

sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o size=16g tmpfs /mnt/ramdisk
sudo mkdir /mnt/ramdisk/blobfusetmp
sudo chown <youruser> /mnt/ramdisk/blobfusetmp

Verwenden eines SSD-Datenträgers als temporärer Pfad

In Azure können Sie die für Ihre VMs verfügbaren kurzlebigen Datenträger (SSD) verwenden, um einen Puffer mit niedriger Latenz für BlobFuse bereitzustellen. Je nach verwendetem Bereitstellungs-Agent würde der kurzlebige Datenträger in „/mnt“ für „cloud-init“ oder „/mnt/resource“ für „waagent“-VMs eingebunden.

Stellen Sie sicher, dass Benutzer auf den temporären Pfad zugreifen können:

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

Autorisieren Sie den Zugriff auf Ihr Speicherkonto

Sie können den Zugriff auf Ihr Speicherkonto autorisieren, indem Sie den Kontozugriffsschlüssel, eine freigegebene Zugriffssignatur, eine verwaltete Identität oder einen Dienstprinzipal verwenden. Autorisierungsinformationen können in einer Konfigurationsdatei oder in Umgebungsvariablen bereitgestellt werden. Ausführliche Informationen finden Sie unter Gültige Authentifizierungseinrichtung in der BlobFuse-Infodatei.

Nehmen wir beispielsweise an, Sie autorisieren mit den Kontozugriffsschlüsseln und speichern diese in einer Konfigurationsdatei. Die Konfigurationsdatei sollte im folgenden Format vorliegen:

accountName myaccount
accountKey storageaccesskey
containerName mycontainer
authType Key

accountName ist der Name Ihres Speicherkontos – nicht die vollständige URL. Sie müssen myaccount, storageaccesskey und mycontainer mit Ihren Speicherinformationen aktualisieren.

Erstellen Sie diese Datei mit:

sudo touch /path/to/fuse_connection.cfg

Nachdem Sie diese Datei erstellt und bearbeitet haben, schränken Sie unbedingt den Zugriff darauf ein, damit andere Benutzer sie nicht lesen können.

sudo chmod 600 /path/to/fuse_connection.cfg

Hinweis

Wenn Sie die Konfigurationsdatei unter Windows erstellt haben, stellen Sie sicher, dass Sie dos2unix ausführen, um die Datei zu bereinigen und in das Unix-Format zu konvertieren.

Erstellen eines leeren Verzeichnisses für die Einbindung

sudo mkdir ~/mycontainer

Einbinden

Hinweis

Eine vollständige Liste der Einbindungsoptionen finden Sie im BlobFuse-Repository.

Führen Sie zum Einbinden von BlobFuse den folgenden Befehl für Ihren Benutzer aus. Dieser Befehl bindet den unter „/path/to/fuse_connection.cfg“ angegebenen Container am Speicherort „/mycontainer“ ein.

sudo blobfuse ~/mycontainer --tmp-path=/mnt/resource/blobfusetmp  --config-file=/path/to/fuse_connection.cfg -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120

Hinweis

Wenn Sie ein ADLS-Konto verwenden, müssen Sie --use-adls=true einschließen.

Sie sollten jetzt über die regulären Dateisystem-APIs auf Ihre Blockblobs zugreifen können. Der Benutzer, der das Verzeichnis bereitstellt, ist die einzige Person, die standardmäßig darauf zugreifen kann, sodass der Zugriff gesichert ist. Um den Zugriff für alle Benutzer zuzulassen, können Sie für die Einbindung die Option -o allow_other verwenden.

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

Beibehalten der Bereitstellung

Informationen zum Beibehalten der Einbindung finden Sie unter Beibehalten im BlobFuse-Wiki.

Featureunterstützung

Die Unterstützung für dieses Features kann durch die Aktivierung von Data Lake Storage Gen2, dem Network File System (NFS) 3.0-Protokoll oder dem SSH File Transfer Protocol (SFTP) beeinträchtigt werden. Wenn Sie eine dieser Funktionen aktiviert haben, lesen Sie bitte den Abschnitt Unterstützung der Blob Storage-Funktion in Azure Storage-Konten, um die Unterstützung für dieses Features zu bewerten.

Nächste Schritte