Freigeben über


Einbinden von Azure Blob Storage mithilfe des NFS 3.0-Protokolls (Network File System)

Dieser Artikel enthält Anleitungen zum Einbinden eines Containers in Azure Blob Storage von einer Linux-basierten Azure-VM oder einem Linux-System, das lokal unter Verwendung des NFS 3.0-Protokolls (Network File System) ausgeführt wird. Weitere Informationen zur Unterstützung des NFS 3.0-Protokolls in Blob Storage finden Sie unter Unterstützung für Network File System 3.0 (NFS) für Azure Blob Storage.

Schritt 1: Erstellen eines virtuellen Azure-Netzwerks

Ihr Speicherkonto muss in einem virtuellen Netzwerk enthalten sein. Ein virtuelles Netzwerk ermöglicht es Clients, eine sichere Verbindung mit Ihrem Speicherkonto herzustellen. Weitere Informationen zu Azure Virtual Network und zum Erstellen eines virtuellen Netzwerks finden Sie in der Dokumentation zu Virtual Network.

Clients im selben virtuellen Netzwerk können Container in Ihr Konto einbinden. Sie können auch einen Container von einem Client bereitstellen, der in einem lokalen Netzwerk ausgeführt wird, aber Sie müssen zuerst Ihr lokales Netzwerk mit Ihrem virtuellen Netzwerk verbinden. Weitere Informationen finden Sie unter Unterstützte Netzwerkverbindungen.

Schritt 2: Konfigurieren der Netzwerksicherheit

Derzeit besteht die einzige Möglichkeit zum Sichern der Daten in Ihrem Speicherkonto in der Verwendung eines virtuellen Netzwerks und anderer Netzwerksicherheitseinstellungen. Weitere Informationen finden Sie unter Netzwerksicherheitsempfehlungen für Blob Storage.

Alle anderen Tools, die zum Sichern von Daten verwendet werden, können nicht verwendet werden, um eine NFS 3.0-Anforderung zu autorisieren. Tools umfassen Kontoschlüsselautorisierung, Microsoft Entra-Sicherheit und Zugriffssteuerungslisten (Access Control Lists, ACLs). Wenn Sie der ACL eines Blobs oder Verzeichnisses einen Eintrag für einen benannten Benutzer oder eine benannte Gruppe hinzufügen, wird diese Datei für Nicht-Root-Benutzer auf dem Client unzugänglich. Sie müssen diesen Eintrag entfernen, um den Zugriff auf Nichtrootbenutzer auf dem Client wiederherzustellen.

Wichtig

Das NFS 3.0-Protokoll verwendet die Ports 111 und 2048. Wenn Sie eine Verbindung aus einem lokalen Netzwerk heraus herstellen, stellen Sie sicher, dass Ihr Client die ausgehende Kommunikation über diese Ports zulässt. Wenn Sie Zugriff auf bestimmte virtuelle Netzwerke gewährt haben, stellen Sie sicher, dass alle netzwerksicherheitsgruppen, die diesen virtuellen Netzwerken zugeordnet sind, keine Sicherheitsregeln enthalten, die eingehende Kommunikation über diese Ports blockieren.

Schritt 3: Erstellen und Konfigurieren eines Speicherkontos

Um einen Container mithilfe von NFS 3.0 einzubinden, müssen Sie ein Speicherkonto erstellen. Sie können vorhandene Konten nicht aktivieren.

Das NFS 3.0-Protokoll wird für Standardspeicherkonten vom Typ „Universell V2“ und für Blockblob-Speicherkonten vom Typ „Premium“ unterstützt. Weitere Informationen zu diesen Speicherkontotypen finden Sie unter Speicherkontoübersicht.

Um das Konto zu konfigurieren, wählen Sie die folgenden Werte aus.

Einstellung Premium-Leistung Standardleistung
Standort Alle verfügbaren Regionen Alle verfügbaren Regionen
Leistung Prämie Norm
Kontoart BlockBlobStorage Allgemeiner Zweck V2
Replikation Lokal redundanter Speicher (LRS), Zonenredundanter Speicher (ZRS) Lokal redundanter Speicher (LRS), Zonenredundanter Speicher (ZRS), Geo redundanter Speicher (GRS)
Konnektivitätsmethode Öffentlicher Endpunkt (ausgewählte Netzwerke) oder privater Endpunkt Öffentlicher Endpunkt (ausgewählte Netzwerke) oder privater Endpunkt
Hierarchischer Namespace Aktiviert Aktiviert
NFS V3 Aktiviert Aktiviert

Sie können die Standardwerte für alle anderen Einstellungen übernehmen.

Schritt 4: Erstellen eines Containers

Erstellen Sie einen Container in Ihrem Speicherkonto mithilfe eines der folgenden Tools oder SDKs.

Werkzeuge SDKs
Azure-Portal .NETTO
AzCopy Java
PowerShell Python
Azure-Befehlszeilenschnittstelle JavaScript
PAUSE

Standardmäßig ist die Root Squash-Option eines neuen Containers No Root Squash. Sie können diese Option in Root Squash oder All Squash ändern. Weitere Informationen zu diesen Squashoptionen finden Sie in der Dokumentation Ihres Betriebssystems.

Die folgende Abbildung zeigt die Squashoptionen, wie sie im Azure-Portal angezeigt werden.

Screenshot der Squashoptionen im Azure-Portal.

Schritt 5: Installieren des Pakets für das AZNFS-Einbindungshilfsprogramm

Das Paket für das AZNFS-Einbindungshilfsprogramm unterstützt Linux-NFS-Clients beim zuverlässigen Zugriff auf Azure Blob-NFS-Freigaben, selbst wenn sich die IP-Adresse des Endpunkts ändert. Dieses Paket führt einen Job namens aznfswatchdog im Hintergrund aus, der Änderungen an der IP-Adresse des Endpunkts für die gemounteten Freigaben überwacht.

Wenn eine Änderung erkannt wird, aktualisiert dieser Hintergrundauftrag die Regeln für die Zielnetzwerkadressenübersetzung (Destination Network Address Translation, DNAT). Weitere Informationen finden Sie unter AZNFS-Einbindungshilfsprogramm.

  1. Stellen Sie fest, ob das Paket für das AZNFS-Einbindungshilfsprogramm auf Ihrem Client installiert ist.

    systemctl is-active --quiet aznfswatchdog && echo -e "\nAZNFS mounthelper is installed! \n"
    

    Wenn das Paket installiert ist, wird die Meldung AZNFS mounthelper is installed! angezeigt.

  2. Wenn das Paket nicht installiert ist, verwenden Sie den folgenden Befehl, um es zu installieren:

    wget -O - -q https://github.com/Azure/AZNFS-mount/releases/latest/download/aznfs_install.sh | bash
    

AZNFS wird für die folgenden Linux-Distributionen unterstützt:

  • Ubuntu (18.04 LTS, 20.04 LTS, 22.04 LTS, 24.04 LTS)

  • RedHat7, RedHat8, RedHat9, RedHat10

  • Rocky8, Rocky9

  • CentOS7, CentOS8

  • SUSE (SLES 15)

Tipp

AZNFS 3.0 befindet sich jetzt in der öffentlichen Vorschau. Diese Version bietet einen höheren Durchsatz, unterstützt größere Dateien, verbessert die Metadatenleistung und beseitigt Benutzergruppeneinschränkungen. Informationen zu Verbesserungen und Anleitungen zum Testen von AZNFS 3.0 finden Sie im AZNFS-Wiki.

Schritt 6: Einbinden des Containers

Erstellen Sie ein Verzeichnis auf Ihrem Linux-System, und binden Sie dann den Container in das Speicherkonto ein.

  1. Erstellen Sie in Ihrem Linux-System ein Verzeichnis:

    mkdir -p /nfsdata
    
  2. Binden Sie den Container mithilfe einer der folgenden Methoden ein. Ersetzen Sie in beiden Methoden den <storage-account-name> Platzhalter durch den Namen Ihres Speicherkontos. Ersetzen Sie <container-name> durch den Namen Ihres Containers.

    • So legen Sie fest, dass die Freigabe beim Neustart automatisch eingebunden wird:

      1. Erstellen Sie einen Eintrag in der /etc/fstab Datei, indem Sie die folgende Zeile hinzufügen:

        <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name>  /nfsdata    aznfs defaults,sec=sys,vers=3,nolock,proto=tcp,nofail,_netdev    0 0
        
      2. Führen Sie den folgenden Befehl aus, um die /etc/fstab Einträge sofort zu verarbeiten, und versuchen Sie anschließend, den vorherigen Pfad zu mounten.

        mount /nfsdata
        
    • Führen Sie für ein temporäres Einbinden, das bei Neustarts nicht beibehalten wird, den folgenden Befehl aus:

      mount -t aznfs -o sec=sys,vers=3,nolock,proto=tcp <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name>  /nfsdata
      

      Mithilfe der Einbindungsoption -t aznfs stellen Sie sicher, dass der NFS-Client immer ordnungsgemäß mit dem Speicherendpunkt verbunden bleibt, selbst wenn sich die Endpunkt-IP-Adresse nach der Einbindung ändert. NFS-Freigaben, die mithilfe der Einbindungsoption -t nfs eingebunden werden, werden möglicherweise vom Speicherendpunkt getrennt, wenn sich die IP-Adresse dieses Endpunkts ändert.

      Weitere optionale Parameter sind mit dem Mount-Befehl verfügbar. Diese Parameter wirken sich in erster Linie auf das clientseitige Verhalten aus. Der sys Wert ist der einzige Wert, den die sec Option unterstützt.

      Die nconnect Mount-Option funktioniert nur für Clients mit nconnect Azure-Unterstützung. Die Verwendung der nconnect Option auf einem nicht unterstützten Client verringert den Durchsatz und führt dazu, dass Befehle Zeitüberschreitungen haben oder falsch funktionieren.

      Weitere Informationen dazu, wie Sie sicherstellen können, dass Ihr Client Über Azure-Unterstützung nconnect verfügt, finden Sie unter "Erhöhen der Anzahl von TCP-Verbindungen".

Beheben allgemeiner Fehler

Fehler Ursache/Lösung
Access denied by server while mounting Stellen Sie sicher, dass der Client in einem unterstützten Subnetz ausgeführt wird. Weitere Informationen finden Sie unter "Unterstützte Netzwerkspeicherorte".
No such file or directory Sie müssen den Befehl zum Einbinden und die zugehörigen Parameter direkt im Terminal eingeben und können nicht „Kopieren und einfügen“ verwenden. Wenn Sie diesen Befehl oder einen Teil davon aus einer anderen Anwendung kopieren und in das Terminal einfügen, kann dies dazu führen, dass ausgeblendete Zeichen in den eingefügten Informationen diesen Fehler verursachen. Dieser Fehler kann auch auftreten, wenn das Konto nicht für NFS 3.0 aktiviert ist.
Permission denied Der Standardmodus eines neu erstellten NFS 3.0-Containers ist 0750. Nichtrootbenutzer haben keinen Zugriff auf das Volume. Wenn der Zugriff von nichtroot-Benutzern erforderlich ist, müssen Stammbenutzer den Modus in 0755 ändern. Hier ist ein Beispielbefehl: sudo chmod 0755 /nfsdata
EINVAL ("Invalid argument") Dieser Fehler kann angezeigt werden, wenn ein Client versucht, folgendes zu erreichen:
  • Schreiben in ein Blob, das von einem Blobendpunkt erstellt wurde.
  • Löschen Sie einen Blob, der über einen Snapshot verfügt oder sich in einem Container befindet, für den die Richtlinie Write Once, Read Many (WORM) aktiv ist.
EROFS ("Read-only file system") Dieser Fehler kann angezeigt werden, wenn ein Client versucht, folgendes zu erreichen:
  • Schreiben in ein Blob oder Löschen ein Blobs, das über eine aktive Lease verfügt.
  • Schreiben in ein Blob oder Löschen eines Blobs in einem Container, der eine aktive WORM-Richtlinie aufweist.
NFS3ERR_IO/EIO ("Input/output error") Dieser Fehler kann auftreten, wenn ein Client versucht, Attribute für Blobs zu lesen, zu schreiben oder zu festlegen, die in der Archivzugriffsebene gespeichert sind.
OperationNotSupportedOnSymLink Fehler Dieser Fehler kann bei einem Schreibvorgang über eine Blob Storage- oder Azure Data Lake Storage-API zurückgegeben werden. Die Verwendung dieser APIs zum Schreiben oder Löschen symbolischer Verknüpfungen, die mit NFS 3.0 erstellt werden, ist nicht zulässig. Sie müssen den NFS 3.0-Endpunkt verwenden, um mit symbolischen Verknüpfungen zu arbeiten.
mount: /nfsdata: bad option; Installieren Sie das NFS-Hilfsprogramm mithilfe von sudo apt install nfs-common.
Connection Timed Out Stellen Sie sicher, dass der Client ausgehende Kommunikation über die Ports 111 und 2048 zulässt. Das NFS 3.0-Protokoll verwendet diese Ports. Stellen Sie sicher, dass Sie das Speicherkonto mithilfe des Blob Storage-Endpunkts und nicht mit dem Data Lake Storage-Endpunkt bereitstellen.

Einschränkungen und Problembehandlung für das AZNFS-Einbindungshilfsprogramm

Weitere Informationen finden Sie unter AZNFS Mount Helper.