Risolvere i problemi relativi alle condivisioni file di Azure NFS

Nota

CentOS a cui si fa riferimento in questo articolo è una distribuzione Linux e raggiungerà End Of Life (EOL). Prendere in considerazione l'uso e pianificare di conseguenza. Per altre informazioni, vedere Indicazioni sulla fine del ciclo di vita di CentOS.

Questo articolo elenca i problemi comuni relativi alle condivisioni file di Azure NFS e fornisce possibili cause e soluzioni alternative.

Importante

Il contenuto di questo articolo si applica solo alle condivisioni NFS. Per risolvere i problemi di SMB in Linux, vedere Risolvere i problemi di File di Azure in Linux (SMB). Le condivisioni file di Azure NFS non sono supportate per Windows.

Si applica a

Tipo di condivisione file SMB NFS
Condivisioni file standard (GPv2), LRS/ZRS
Condivisioni file standard (GPv2), GRS/GZRS
Condivisioni file Premium (FileStorage), LRS/ZRS

chgrp "filename" failed: argomento non valido (22)

Causa 1: idmapping non è disabilitato

Poiché File di Azure non consente l'UID/GID alfanumerico, è necessario disabilitare il mapping id.

Causa 2: idmapping è stato disabilitato, ma è stato riabilitare dopo aver rilevato un nome file/dir non valido

Anche se disabiliti correttamente il mapping degli id, in alcuni casi può essere riattivato automaticamente. Ad esempio, quando File di Azure rileva un nome di file non valido, invia un errore. Dopo aver visualizzato questo codice di errore, un client Linux NFS 4.1 decide di riabilitare il mapping degli id e invia richieste future con UID/GID alfanumerico. Per un elenco di caratteri non supportati in File di Azure, vedere questo articolo. I due punti sono uno dei caratteri non supportati.

Soluzione alternativa

Assicurarsi di aver disabilitato il mapping degli id e che non venga riabilitare nulla. Seguire quindi questa procedura:

  1. Smontare la condivisione.

  2. Disabilitare idmapping con:

    sudo echo Y > /sys/module/nfs/parameters/nfs4_disable_idmapping
    
  3. Montare nuovamente la condivisione.

  4. Se si esegue rsync, eseguire rsync con l'argomento —numeric-ids da una directory che non ha una directory o un nome file non valido.

Impossibile creare una condivisione NFS

Causa: Impostazioni dell'account di archiviazione non supportate

NFS è disponibile solo negli account di archiviazione con la configurazione seguente:

Soluzione

Seguire le istruzioni in Come creare una condivisione NFS.

Non è possibile connettersi o montare una condivisione file di Azure NFS

Causa 1: la richiesta ha origine da un client in una rete non attendibile/IP non attendibile

A differenza di SMB, NFS non ha l'autenticazione basata sull'utente. L'autenticazione per una condivisione si basa sulla configurazione della regola di sicurezza di rete. Per assicurarsi che i client stabiliscano connessioni sicure solo alla condivisione NFS, è necessario usare l'endpoint del servizio o gli endpoint privati. Per accedere alle condivisioni da locale oltre agli endpoint privati, è necessario configurare una connessione VPN o ExpressRoute. Gli indirizzi IP aggiunti all'elenco di indirizzi consentiti dell'account di archiviazione per il firewall vengono ignorati. È necessario usare uno dei metodi seguenti per configurare l'accesso a una condivisione NFS:

  • Endpoint del servizio

    • Accesso dall'endpoint pubblico.

    • Disponibile solo nella stessa area.

    • Non è possibile usare il peering reti virtuali per l'accesso alla condivisione.

    • È necessario aggiungere ogni rete virtuale o subnet singolarmente all'elenco consentiti.

    • Per l'accesso locale, è possibile usare endpoint di servizio con ExpressRoute, VPN da punto a sito e da sito a sito. È consigliabile usare un endpoint privato perché è più sicuro.

      Il diagramma seguente illustra la connettività tramite endpoint pubblici:

      Diagramma della connettività dell'endpoint pubblico.

  • Endpoint privato

    • L'accesso è più sicuro rispetto all'endpoint del servizio.

    • L'accesso alla condivisione NFS tramite collegamento privato è disponibile dall'interno e dall'esterno dell'area di Azure dell'account di archiviazione (tra aree, locale).

    • Il peering di rete virtuale con reti virtuali ospitate nell'endpoint privato consente alla condivisione NFS di accedere ai client nelle reti virtuali con peering.

    • È possibile usare endpoint privati con ExpressRoute, VPN da punto a sito e VPN da sito a sito.

      Diagramma della connettività dell'endpoint privato.

Causa 2: Il trasferimento sicuro richiesto è abilitato

Le condivisioni file di Azure NFS attualmente non supportano la doppia crittografia. Azure offre un livello di crittografia per tutti i dati in transito tra i data center di Azure tramite MACSec. È possibile accedere alle condivisioni NFS solo da reti virtuali attendibili e tunnel VPN. Nessuna crittografia del livello di trasporto aggiuntiva è disponibile nelle condivisioni NFS.

Soluzione

Disabilitare trasferimento sicuro richiesto nel pannello di configurazione dell'account di archiviazione.

Screenshot che mostra il pannello di configurazione dell'account di archiviazione, disabilitando il trasferimento sicuro richiesto.

Causa 3: nfs-utils, nfs-client o nfs-common package non è installato

Prima di eseguire il mount comando, installare il pacchetto nfs-utils, nfs-client o nfs-common.

Per verificare se il pacchetto NFS è installato, eseguire:

Gli stessi comandi in questa sezione si applicano a CentOS e Oracle Linux.

sudo rpm -qa | grep nfs-utils

Soluzione

Se il pacchetto non è installato, installare il pacchetto usando il comando specifico della distribuzione.

Gli stessi comandi in questa sezione si applicano a CentOS e Oracle Linux.

Sistema operativo versione 7.X

sudo yum install nfs-utils

Versione del sistema operativo 8.X o 9.X

sudo dnf install nfs-utils

Causa 4: Blocco del firewall della porta 2049

Il protocollo NFS comunica con il server sulla porta 2049. Assicurarsi che questa porta sia aperta all'account di archiviazione (server NFS).

Soluzione

Verificare che la porta 2049 sia aperta nel client eseguendo il comando seguente. Se la porta non è aperta, aprirla.

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

Causa 5: Account di archiviazione eliminato

Se non è possibile montare la condivisione file a causa di un errore: timeout della connessione, l'account di archiviazione contenente la condivisione file potrebbe essere eliminato accidentalmente.

Soluzione

Ripristinare l'account di archiviazione. Eliminare quindi e ricreare l'endpoint privato in modo che sia associato al nuovo ID risorsa dell'account di archiviazione.

ls si blocca per l'enumerazione di directory di grandi dimensioni in alcuni kernel

Causa: è stato introdotto un bug nel kernel Linux v5.11 ed è stato risolto nella versione 5.12.5

Alcune versioni del kernel hanno un bug che causa l'inserimento di elenchi di directory in una sequenza READDIR infinita. Le piccole directory in cui tutte le voci possono essere spedite in una sola chiamata non presentano questo problema. Il bug è stato introdotto nel kernel Linux v5.11 ed è stato risolto nella versione 5.12.5. Quindi qualsiasi cosa nel mezzo ha il bug. RHEL 8.4 ha questa versione del kernel.

Soluzione alternativa: eseguire il downgrade o l'aggiornamento del kernel

Il downgrade o l'aggiornamento del kernel a qualsiasi elemento esterno al kernel interessato dovrebbe risolvere il problema.

I comandi di sistema hanno esito negativo con l'errore "File non trovato"

Causa

Le applicazioni Linux a 32 bit che si basano su numeri di inode potrebbero non funzionare come previsto con File di Azure a causa della formattazione dei numeri inode a 64 bit generati dal servizio NFS.

Soluzione

Per risolvere il problema, utilizzare uno dei seguenti metodi:

  • Comprimere i numeri di inode a 64 bit a 32 bit usando l'opzione di avvio del nfs.enable_ino64=0 kernel.

  • Impostare il parametro module aggiungendo options nfs enable_ino64=0 al file /etc/modprobe.d/nfs.conf e riavviando la macchina virtuale.

È anche possibile rendere persistente questa opzione di avvio del kernel nel file grub.conf . Per altre informazioni, vedere la documentazione relativa alla distribuzione di Linux.

Hai bisogno di assistenza?

Se è ancora necessaria assistenza, contattare il supporto tecnico per risolvere rapidamente il problema.

Vedere anche

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.