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.
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.
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.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.
Erstellen Sie in Ihrem Linux-System ein Verzeichnis:
mkdir -p /nfsdata
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:
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
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 dersec
Option unterstützt wird.Wichtig
Die Bereitstellungsoption
nconnect
funktioniert nur bei Clients mit „Azure nconnect“-Unterstützung. Wenn Sie die Optionnconnect
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: |
EROFS ("Read-only file system" ) |
Dieser Fehler kann auftreten, wenn ein Client versucht, folgende Aktionen durchzuführen: |
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.