Behandeln von Azure Files Problemen unter Linux (SMB)
In diesem Artikel werden häufige Probleme aufgeführt, die bei der Verwendung von SMB-Azure-Dateifreigaben mit Linux-Clients auftreten können. Außerdem werden mögliche Ursachen und Lösungen für diese Probleme bereitgestellt.
Sie können AzFileDiagnostics verwenden, um die Symptomerkennung zu automatisieren und sicherzustellen, dass der Linux-Client über die richtigen Voraussetzungen verfügt. Es hilft ihnen, Ihre Umgebung einzurichten, um eine optimale Leistung zu erzielen. Diese Informationen finden Sie auch in der Problembehandlung für Azure-Dateifreigaben.
Wichtig
Dieser Artikel gilt nur für SMB-Freigaben. Ausführliche Informationen zu NFS-Freigaben finden Sie unter Problembehandlung für NFS-Azure-Dateifreigaben.
Gilt für
Dateifreigabetyp | SMB | NFS |
---|---|---|
Standarddateifreigaben (GPv2), LRS/ZRS | ||
Standarddateifreigaben (GPv2), GRS/GZRS | ||
Premium-Dateifreigaben (FileStorage), LRS/ZRS |
Zeitstempel gingen beim Kopieren von Dateien verloren
Auf Linux-/Unix-Plattformen schlägt der cp -p
Befehl fehl, wenn verschiedene Benutzer die Datei 1 und 2 besitzen.
Ursache
Das Force-Flag f
in COPYFILE führt zur Ausführung cp -p -f
unter Unix. Dieser Befehl kann auch nicht den Zeitstempel der Datei beibehalten, die Sie nicht besitzen.
Problemumgehung
Verwenden Sie den Speicherkontobenutzer, um die Dateien zu kopieren:
str_acc_name=[storage account name]
sudo useradd $str_acc_name
sudo passwd $str_acc_name
su $str_acc_name
cp -p filename.txt /share
ls: Kann nicht auf "pfad>"< zugreifen: Eingabe-/Ausgabefehler
Wenn Sie versuchen, Dateien in einer Azure-Dateifreigabe mit dem ls
Befehl aufzulisten, hängt der Befehl beim Auflisten von Dateien. Der folgende Fehler wird angezeigt:
ls: Kann nicht auf 'path>'< zugreifen: Eingabe-/Ausgabefehler
Lösung
Führen Sie ein Upgrade des Linux-Kernels auf die folgenden Versionen durch, die eine Lösung für dieses Problem haben:
- 4.4.87+
- 4.9.48+
- 4.12.11+
- Alle Versionen, die größer oder gleich 4.13 sind
Symbolische Verknüpfungen können nicht erstellt werden– ln: Fehler beim Erstellen einer symbolischen Verknüpfung "t": Vorgang nicht unterstützt
Ursache
Standardmäßig wird beim Einbinden von Azure-Dateifreigaben unter Linux mithilfe von SMB keine Unterstützung für symbolische Verknüpfungen (symlinks) aktiviert. Möglicherweise wird ein Fehler wie der folgende angezeigt:
sudo ln -s linked -n t
ln: failed to create symbolic link 't': Operation not supported
Lösung
Der Linux-SMB-Client unterstützt nicht das Erstellen symbolischer Verknüpfungen im Windows-Stil über das SMB 2- oder 3-Protokoll. Derzeit unterstützt der Linux-Client eine andere Art von symbolischen Verknüpfungen namens Minshall+French symlinks für Erstellungs- und Folgevorgänge. Kunden, die symbolische Verknüpfungen benötigen, können die Einbindungsoption "mfsymlinks" verwenden. Wir empfehlen "mfsymlinks", da es auch das Format ist, das Macs verwenden.
Um symlinks zu verwenden, fügen Sie Am Ende Ihres SMB-Einbindungsbefehls Folgendes hinzu:
,mfsymlinks
Der Befehl sieht also wie folgt aus:
sudo mount -t cifs //<storage-account-name>.file.core.windows.net/<share-name> <mount-point> -o vers=<smb-version>,username=<storage-account-name>,password=<storage-account-key>,dir_mode=0777,file_mode=0777,serverino,mfsymlinks
Sie können dann symlinks erstellen, wie im Wiki vorgeschlagen.
Zugriff auf Ordner oder Dateien mit einem Leerzeichen oder Punkt am Ende nicht möglich
Sie können nicht auf Ordner oder Dateien aus der Azure-Dateifreigabe zugreifen, während sie unter Linux eingebunden sind. Befehle wie du und ls und/oder Anwendungen von Drittanbietern können beim Zugriff auf die Freigabe mit dem Fehler "Keine datei oder verzeichnis" fehlschlagen. Sie können jedoch Dateien über die Azure-Portal in diese Ordner hochladen.
Ursache
Die Ordner oder Dateien wurden aus einem System hochgeladen, das die Zeichen am Ende des Namens in ein anderes Zeichen codiert. Dateien, die von einem Macintosh-Computer hochgeladen werden, können anstelle von 0x20 (Leerzeichen) oder 0X2E (Punkt) das Zeichen "0xF028" oder "0xF029" aufweisen.
Lösung
Verwenden Sie die Mapchars-Option auf der Freigabe, wenn Sie die Freigabe unter Linux einbinden:
Statt:
sudo mount -t cifs $smbPath $mntPath -o vers=3.0,username=$storageAccountName,password=$storageAccountKey,serverino
Verwenden Sie den folgenden:
sudo mount -t cifs $smbPath $mntPath -o vers=3.0,username=$storageAccountName,password=$storageAccountKey,serverino,mapchars
DNS-Probleme bei der Livemigration von Azure-Speicherkonten
Datei-E/A im eingebundenen Dateisystem, die Fehler "Host ist ausgefallen" oder "Berechtigung verweigert" geben. Linux dmesg-Protokolle auf dem Client zeigen wiederholte Fehler wie die folgenden an:
Status code returned 0xc000006d STATUS_LOGON_FAILURE
cifs_setup_session: 2 callbacks suppressed
CIFS VFS: \\contoso.file.core.windows.net Send error in SessSetup = -13
Sie werden auch sehen, dass der Server-FQDN jetzt in eine andere IP-Adresse aufgelöst wird als die, mit der er derzeit verbunden ist.
Ursache
Zu Kapazitätslastenausgleichszwecken werden Speicherkonten manchmal live von einem Speichercluster zu einem anderen migriert. Die Kontomigration löst Azure Files Datenverkehr aus, der vom Quellcluster an den Zielcluster umgeleitet wird, indem die DNS-Zuordnungen so aktualisiert werden, dass sie auf den Zielcluster verweisen. Dadurch wird der gesamte Datenverkehr an den Quellcluster von diesem Konto blockiert. Es wird erwartet, dass der SMB-Client die DNS-Updates übernimmt und weiteren Datenverkehr an den Zielcluster umleitet. Aufgrund eines Fehlers im Linux-SMB-Kernelclient wird diese Umleitung jedoch nicht wirksam. Daher wird der Datenverkehr weiterhin an den Quellcluster weitergestellt, der die Bereitstellung dieses Kontos nach der Migration beendet hat.
Problemumgehung
Sie können dieses Problem beheben, indem Sie das Clientbetriebssystem neu starten. Möglicherweise tritt das Problem jedoch erneut auf, wenn Sie Ihr Clientbetriebssystem nicht auf eine Linux-Distributionsversion mit Unterstützung für die Kontomigration aktualisieren. Beachten Sie, dass umount und remount der Freigabe das Problem möglicherweise vorübergehend behoben haben.
Um dieses Problem besser zu umgehen, löschen Sie den Kernel-DNS-Resolvercache:
Zeigen Sie die status des Kernelmoduls
dns_resolver
an, indem Sie den folgenden Befehl ausführen:grep '.dns_resolver' /proc/keys
Es sollte eine Befehlsausgabe wie im folgenden Beispiel angezeigt werden:
132b6bbf I------ 1 perm 1f030000 0 0 keyring .dns_resolver: 1
Löschen Sie den Kernel-DNS-Resolvercache, indem Sie den folgenden Befehl ausführen:
sudo keyctl clear $((16#$(grep '.dns_resolver' /proc/keys | cut -f1 -d\ ) ))
Zeigen Sie die status des Kernelmoduls
dns_resolver
erneut an:grep '.dns_resolver' /proc/keys
Es sollte eine Befehlsausgabe wie im folgenden Beispiel angezeigt werden, die angibt, dass der Cache jetzt leer ist:
132b6bbf I------ 1 perm 1f030000 0 0 keyring .dns_resolver: empty
Lösung
Um eine dauerhafte Korrektur zu finden, führen Sie ein Upgrade Ihres Clientbetriebssystems auf eine Linux-Distributionsversion mit Unterstützung für die Kontomigration durch. Mehrere Korrekturen für den Linux-SMB-Kernelclient wurden an den Linux-Hauptzeilen-Kernel übermittelt. Kernelversion 5.15 und höher und Keyutils-1.6.2+ verfügen über die Fixes. Einige Distributionen haben diese Korrekturen zurückportiert, und Sie können überprüfen, ob die folgenden Korrekturen in der von Ihnen verwendeten Distributionsversion vorhanden sind:
cifs: Verwenden Sie die Ablaufausgabe von dns_query, um die nächste Lösung zu planen.
cifs: Legen Sie mindestens 120s für die nächste DNS-Auflösung fest.
cifs: Beheben des Speicherverlusts von smb3_fs_context_dup::server_hostname
dns: Anwenden einer Standard-Gültigkeitsdauer auf Datensätze, die von getaddrinfo() abgerufen wurden
SMB-Dateifreigabe kann nicht eingebunden werden, wenn FIPS aktiviert ist
Wenn Federal Information Processing Standard (FIPS) auf einem virtuellen Linux-Computer aktiviert ist, kann die SMB-Dateifreigabe nicht eingebunden werden. Die Linux-DMesg-Protokolle auf dem Client zeigen Fehler an, z. B.:
kernel: CIFS: VFS: Could not allocate crypto hmac(md5)
kernel: CIFS: VFS: Error -2 during NTLMSSP authentication
kernel: CIFS: VFS: \\contoso.file.core.windows.net Send error in SessSetup = -2
kernel: CIFS: VFS: cifs_mount failed w/return code = -2
Wichtig
FIPS ist eine Reihe von Standards, die die US-Regierung verwendet, um die Sicherheit und Integrität von Computersystemen zu gewährleisten. Wenn sich ein System im FIPS-Modus befindet, erfüllt es bestimmte kryptografische Anforderungen, die in diesen Standards beschrieben werden.
Ursache
Der Client der SMB-Dateifreigabe verwendet die NTLMSSP-Authentifizierung, die den MD5-Hashalgorithmus erfordert. Im FIPS-Modus ist der MD5-Algorithmus jedoch eingeschränkt, da er nicht FIPS-kompatibel ist. MD5 ist eine weit verbreitete Hashfunktion, die einen 128-Bit-Hashwert erzeugt. MD5 gilt jedoch für kryptografische Zwecke als unsicher.
Überprüfen, ob der FIPS-Modus aktiviert ist
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der FIPS-Modus auf dem Client aktiviert ist. Wenn der Wert auf 1 festgelegt ist, ist FIPS aktiviert.
sudo cat /proc/sys/crypto/fips_enabled
Lösung
Um dieses Problem zu beheben, aktivieren Sie die Kerberos-Authentifizierung für die SMB-Dateifreigabe. Wenn FIPS unbeabsichtigt aktiviert ist, lesen Sie option2 , um es zu deaktivieren.
Option 1: Aktivieren der Kerberos-Authentifizierung für die SMB-Dateifreigabe
Verwenden Sie die Kerberos-/Azure AD-Authentifizierung, um eine SMB-Dateifreigabe auf dem virtuellen Linux-Computer einzubinden, auf dem FIPS aktiviert ist. Weitere Informationen finden Sie unter Aktivieren der Active Directory-Authentifizierung über SMB für Linux-Clients, die auf Azure Files zugreifen.
Option 2: Deaktivieren von FIPS zum Einbinden der Samba-Freigabe
Ändern Sie den sysctl-Wert von
crypto.fips_enabled
in/etc/sysctl.conf
in 0 .Ändern Sie in der
GRUB_CMDLINE_LINUX_DEFAULT
/etc/default/grub
Datei, und entfernen Sie den Parameterfips=1
.Die Grub2-Konfigurationsdatei wurde mit dem folgenden Befehl neu erstellt:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Erstellen Sie das Initramfs-Image mit dem folgenden Befehl neu:
sudo dracut -fv
Starten Sie den virtuellen Computer neu.
Weitere Informationen finden Sie in den folgenden Dokumenten von Linux-Verteilern:
- RedHat: Warum würde die Aktivierung des FIPS-Modus im Kernel CIFS-Einbindungen unterbrechen?
- SUSE: CIFS-Einbindung schlägt mit dem Fehler "Einbindungsfehler(2): Keine datei oder verzeichnis" fehl.
Benötigen Sie Hilfe?
Wenn Sie weiterhin Hilfe benötigen, wenden Sie sich an den Support , um Ihr Problem schnell zu beheben.
Siehe auch
- Problembehandlung bei Azure Files
- Problembehandlung bei Azure Files Leistung
- Problembehandlung bei Azure Files Konnektivität (SMB)
- Problembehandlung bei Azure Files Authentifizierung und Autorisierung (SMB)
- Behandeln von Azure Files allgemeinen NFS-Problemen unter Linux
- Behandeln von problemen mit Azure-Dateisynchronisierung
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für