Freigeben über


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

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.

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.

Hinweis

Clients im selben virtuellen Netzwerk können Container in Ihr Konto einbinden. Sie können auch einen Container von einem Client aus einbinden, der in einem lokalen Netzwerk ausgeführt wird, doch Sie müssen zunächst Ihr lokales Netzwerk mit Ihrem virtuellen Netzwerk verbinden. Siehe 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. Informationen finden Sie unter Netzwerksicherheitsempfehlungen für Blob Storage.

Andere Tools zum Schützen von Daten, einschließlich Kontoschlüsselautorisierung, Microsoft Entra-Sicherheit und Zugriffssteuerungslisten (Access Control Lists, ACLs), können nicht zum Autorisieren einer NFS 3.0-Anforderung verwendet werden. Wenn Sie der ACL eines Blobs oder Verzeichnisses Einträge für benannte Benutzer*innen oder Gruppen hinzufügen, können Nicht-Stammbenutzer*innen auf dem Client nicht mehr auf diese Datei zugreifen. Sie müssten diese Einträge entfernen, um den Zugriff für Nicht-Stammbenutzer*innen 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 den Zugriff auf bestimmte VNets gewährt haben, stellen Sie sicher, dass Netzwerksicherheitsgruppen, die diesen VNets 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.

Wenn Sie das Konto konfigurieren, wählen Sie die folgenden Werte aus:

Einstellung Premium-Leistung Standardleistung
Ort Alle verfügbaren Regionen Alle verfügbaren Regionen
Leistung Premium Standard
Kontoart BlockBlobStorage Allgemein v2
Replikation Lokal redundanter Speicher (LRS), zonenredundanter Speicher (ZRS) Lokal redundanter Speicher (LRS), zonenredundanter Speicher (ZRS)
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, indem Sie eins dieser Tools oder SDKs verwenden:

Tools SDKs
Azure portal .NET
AzCopy Java
PowerShell Python
Azure-Befehlszeilenschnittstelle JavaScript
REST

Hinweis

Standardmäßig ist die Root Squash-Option eines neuen Containers No Root Squash. Sie können diese Angabe jedoch 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 Hintergrundauftrag namens aznfswatchdog aus, der Änderungen an der Endpunkt-IP-Adresse für die eingebundenen 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 noch 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
    

    Hinweis

    AZNFS wird von folgenden Linux-Distributionen unterstützt:

    • Ubuntu (18.04 LTS, 20.04 LTS, 22.04 LTS)
    • Centos7, Centos8
    • RedHat7, RedHat8, RedHat9
    • Rocky8, Rocky9
    • SUSE (SLES 15)

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 bei beiden Methoden den Platzhalter <storage-account-name> durch den Namen Ihres Speicherkontos und <container-name> durch den Namen Ihres Containers.

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

      1. Fügen Sie die folgende Zeile hinzu, um einen Eintrag in der Datei „/etc/fstab“ zu erstellen:

        <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 zu versuchen, den vorherigen Pfad einzubinden:

        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
      

      Tipp

      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. sys ist der einzige Wert, der derzeit von der sec Option unterstützt wird.

      Wichtig

      Die Bereitstellungsoption nconnect funktioniert nur bei Clients mit „Azure nconnect“-Unterstützung. Wenn Sie die Option nconnect bei einem nicht unterstützten Client verwenden, verringert sich der Durchsatz. Dies führt zu einem Timeout oder einer fehlerhaften Ausführung von Befehlen. Weitere Informationen dazu, wie Sie sicherstellen können, dass Ihr Client „Azure nconnect“-Unterstützung hat, 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. Siehe Unterstützte Netzwerkadressen.
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. Nicht-Root-Benutzer besitzen keinen Zugriff auf das Volume. Wenn Zugriff von Nicht-Root-Benutzern erforderlich ist, muss der Root-Benutzer den Modus in 0755 ändern. Beispiel für einen Befehl: sudo chmod 0755 /nfsdata
EINVAL ("Invalid argument") Dieser Fehler kann auftreten, wenn ein Client versucht, folgende Aktionen durchzuführen:
  • Schreiben in ein Blob, das von einem Blobendpunkt erstellt wurde.
  • Löschen eines Blobs, das über eine Momentaufnahme verfügt oder sich in einem Container befindet, der eine aktive WORM-Richtlinie (Write Once, Read Many) aufweist.
  • EROFS ("Read-only file system") Dieser Fehler kann auftreten, wenn ein Client versucht, folgende Aktionen durchzuführen:
  • 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 Gen2-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. Stellt sicher, dass das Speicherkonto über den Blob-Dienst-Endpunkt und nicht den Data Lake Storage-Endpunkt bereitgestellt wird.

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

    Weitere Informationen finden Sie unter AZNFS-Einbindungshilfsprogramm.

    Weitere Informationen