Problemen met NFS Azure-bestandsshares oplossen

Opmerking

CentOS waarnaar in dit artikel wordt verwezen, is een Linux-distributie en bereikt end of life (EOL). Overweeg uw gebruik en plan dienovereenkomstig. Zie Richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.

Dit artikel bevat veelvoorkomende problemen met betrekking tot NFS Azure-bestandsshares en biedt mogelijke oorzaken en tijdelijke oplossingen.

Belangrijk

De inhoud van dit artikel is alleen van toepassing op NFS-shares. Zie Problemen met Azure Files in Linux (SMB) oplossen om problemen met SMB in Linux op te lossen. NFS Azure-bestandsshares worden niet ondersteund voor Windows.

Van toepassing op

Type bestandsshare SMB NFS
Standaardbestandsshares (GPv2), LRS/ZRS
Standaard bestandsshares (GPv2), GRS/GZRS
Premium-bestandsshares (FileStorage), LRS/ZRS

chgrp "bestandsnaam" mislukt: ongeldig argument (22)

Oorzaak 1: idmapping is niet uitgeschakeld

Omdat Azure Files alfanumerieke UID/GID niet toestaan, moet u idmapping uitschakelen.

Oorzaak 2: idmapping is uitgeschakeld, maar is opnieuw ingeschakeld na het aantreffen van een ongeldige bestandsnaam/dir-naam

Zelfs als u idmapping correct uitschakelt, kan dit in sommige gevallen automatisch opnieuw worden ingeschakeld. Wanneer Azure Files bijvoorbeeld een ongeldige bestandsnaam tegenkomt, wordt er een fout geretourneerd. Wanneer deze foutcode wordt weergegeven, besluit een NFS 4.1 Linux-client idmapping opnieuw in te schakelen en verzendt toekomstige aanvragen met alfanumerieke UID/GID. Zie dit artikel voor een lijst met niet-ondersteunde tekens op Azure Files. Dubbele punt is een van de niet-ondersteunde tekens.

Tijdelijke oplossing

Zorg ervoor dat u idmapping hebt uitgeschakeld en dat niets het opnieuw inschakelt. Voer vervolgens de volgende stappen uit:

  1. Ontkoppel de share.

  2. Idmapping uitschakelen met:

    sudo echo Y > /sys/module/nfs/parameters/nfs4_disable_idmapping
    
  3. Koppel de share terug.

  4. Als u rsync uitvoert, voert u rsync uit met het —numeric-ids argument vanuit een map die geen slechte map of bestandsnaam heeft.

Kan geen NFS-share maken

Oorzaak: Niet-ondersteunde opslagaccountinstellingen

NFS is alleen beschikbaar voor opslagaccounts met de volgende configuratie:

Oplossing

Volg de instructies in Een NFS-share maken.

Kan geen verbinding maken met of koppelen aan een NFS Azure-bestandsshare

Oorzaak 1: De aanvraag is afkomstig van een client in een niet-vertrouwd netwerk/niet-vertrouwd IP-adres

In tegenstelling tot SMB heeft NFS geen verificatie op basis van gebruikers. De verificatie voor een share is gebaseerd op de configuratie van uw netwerkbeveiligingsregel. Om ervoor te zorgen dat clients alleen beveiligde verbindingen met uw NFS-share tot stand brengen, moet u het service-eindpunt of privé-eindpunten gebruiken. Als u naast privé-eindpunten toegang wilt krijgen tot shares vanuit on-premises, moet u een VPN- of ExpressRoute-verbinding instellen. IP-adressen die zijn toegevoegd aan de acceptatielijst van het opslagaccount voor de firewall, worden genegeerd. U moet een van de volgende methoden gebruiken om toegang tot een NFS-share in te stellen:

  • Service-eindpunt

    • Toegankelijk via het openbare eindpunt.

    • Alleen beschikbaar in dezelfde regio.

    • U kunt VNet-peering niet gebruiken voor toegang tot delen.

    • U moet elk virtueel netwerk of subnet afzonderlijk toevoegen aan de acceptatielijst.

    • Voor on-premises toegang kunt u service-eindpunten gebruiken met ExpressRoute, punt-naar-site en site-naar-site-VPN's. We raden u aan een privé-eindpunt te gebruiken omdat dit veiliger is.

      In het volgende diagram ziet u connectiviteit met behulp van openbare eindpunten:

      Diagram van de connectiviteit van openbare eindpunten.

  • Privé-eindpunt

    • Toegang is veiliger dan het service-eindpunt.

    • Toegang tot NFS-share via een privékoppeling is beschikbaar van binnen en buiten de Azure-regio van het opslagaccount (regiooverschrijdend, on-premises).

    • Peering van virtuele netwerken met virtuele netwerken die worden gehost in het privé-eindpunt, geeft de NFS-share toegang tot de clients in gekoppelde virtuele netwerken.

    • U kunt privé-eindpunten gebruiken met ExpressRoute, punt-naar-site-VPN's en site-naar-site-VPN's.

      Diagram van de connectiviteit van privé-eindpunten.

Oorzaak 2: Veilige overdracht vereist is ingeschakeld

NFS Azure-bestandsshares bieden momenteel geen ondersteuning voor dubbele versleuteling. Azure biedt een versleutelingslaag voor alle gegevens die worden overgedragen tussen Azure-datacenters met behulp van MACSec. U hebt alleen toegang tot NFS-shares vanuit vertrouwde virtuele netwerken en via VPN-tunnels. Er is geen extra transportlaagversleuteling beschikbaar op NFS-shares.

Oplossing

Schakel Beveiligde overdracht vereist uit op de configuratieblade van uw opslagaccount.

Schermopname van de configuratieblade van het opslagaccount, waarbij beveiligde overdracht is uitgeschakeld.

Oorzaak 3: nfs-utils, nfs-client of nfs-common-pakket is niet geïnstalleerd

Voordat u de mount opdracht uitvoert, installeert u het pakket nfs-utils, nfs-client of nfs-common.

Voer het volgende uit om te controleren of het NFS-pakket is geïnstalleerd:

Dezelfde opdrachten in deze sectie zijn van toepassing op CentOS en Oracle Linux.

sudo rpm -qa | grep nfs-utils

Oplossing

Als het pakket niet is geïnstalleerd, installeert u het pakket met behulp van de specifieke opdracht voor distributie.

Dezelfde opdrachten in deze sectie zijn van toepassing op CentOS en Oracle Linux.

OS-versie 7.X

sudo yum install nfs-utils

OS-versie 8.X of 9.X

sudo dnf install nfs-utils

Oorzaak 4: Firewall blokkeert poort 2049

Het NFS-protocol communiceert met de server via poort 2049. Zorg ervoor dat deze poort is geopend voor het opslagaccount (de NFS-server).

Oplossing

Controleer of poort 2049 is geopend op uw client door de volgende opdracht uit te voeren. Als de poort niet is geopend, opent u deze.

sudo nc -zv <storageaccountnamehere>.file.core.windows.net 2049

Oorzaak 5: Opslagaccount verwijderd

Als u de bestandsshare niet kunt koppelen vanwege een fout: er is een time-out opgetreden voor de verbinding, kan het opslagaccount met de bestandsshare per ongeluk worden verwijderd.

Oplossing

Herstel het opslagaccount. Verwijder vervolgens het privé-eindpunt en maak het opnieuw, zodat het wordt gekoppeld aan de resource-id van het nieuwe opslagaccount.

ls loopt vast voor grote directory-inventarisatie op sommige kernels

Oorzaak: Er is een fout geïntroduceerd in Linux-kernel v5.11 en is opgelost in v5.12.5

Sommige kernelversies hebben een fout waardoor directory-vermeldingen resulteren in een eindeloze READDIR-reeks. Kleine mappen waar alle vermeldingen in één aanroep kunnen worden verzonden, hebben dit probleem niet. De fout is geïntroduceerd in Linux-kernel v5.11 en is opgelost in v5.12.5. Dus alles daartussen heeft de bug. RHEL 8.4 heeft deze kernelversie.

Tijdelijke oplossing: de kernel downgraden of upgraden

Als u de kernel downgradet of upgradet naar iets buiten de betreffende kernel, moet het probleem worden opgelost.

Systeemopdrachten mislukken met de fout 'Bestand niet gevonden'

Oorzaak

Linux 32-bits toepassingen die afhankelijk zijn van inodenummers werken mogelijk niet zoals verwacht met Azure Files vanwege de opmaak van de 64-bits inodenummers die door de NFS-service worden gegenereerd.

Oplossing

U kunt dit probleem op een van de volgende manieren oplossen:

  • Comprimeer de 64-bits inode-getallen tot 32 bits met behulp van de nfs.enable_ino64=0 kernelopstartoptie.

  • Stel de moduleparameter in door toe te voegen options nfs enable_ino64=0 aan het bestand /etc/modprobe.d/nfs.conf en de VM opnieuw op te starten.

U kunt deze optie voor het opstarten van de kernel ook behouden in het bestand grub.conf . Zie de documentatie voor uw Linux-distributie voor meer informatie.

Hulp nodig?

Als u nog steeds hulp nodig hebt, neemt u contact op met de ondersteuning om uw probleem snel op te lossen.

Zie ook

Contacteer ons voor hulp

Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Feedback-community van Azure.