Montare l'archiviazione BLOB usando il protocollo file system di rete (NFS) 3.0

Questo articolo fornisce indicazioni su come montare un contenitore in Archiviazione BLOB di Azure da una macchina virtuale (VM) di Azure basata su Linux o su un sistema Linux in esecuzione in locale usando il protocollo NFS (Network File System) 3.0. Per altre informazioni sul supporto del protocollo NFS 3.0 in Archiviazione BLOB, vedere Supporto del protocollo NFS (NFS) 3.0 per Archiviazione BLOB di Azure.

Passaggio 1: Creare una rete virtuale di Azure

L'account di archiviazione deve essere contenuto all'interno di una rete virtuale. Una rete virtuale consente ai client di connettersi in modo sicuro all'account di archiviazione. Per altre informazioni su Azure Rete virtuale e su come creare una rete virtuale, vedere la documentazione Rete virtuale.

Nota

I client nella stessa rete virtuale possono montare contenitori nell'account. È anche possibile montare un contenitore da un client in esecuzione in una rete locale, ma è necessario prima connettere la rete locale alla rete virtuale. Vedere Connessioni di rete supportate.

Passaggio 2: Configurare la sicurezza di rete

Attualmente, l'unico modo per proteggere i dati nell'account di archiviazione consiste nell'usare una rete virtuale e altre impostazioni di sicurezza di rete. Vedere Raccomandazioni sulla sicurezza di rete per l'archiviazione BLOB.

Tutti gli altri strumenti usati per proteggere i dati, tra cui l'autorizzazione della chiave dell'account, la sicurezza di Microsoft Entra e gli elenchi di controllo di accesso (ACL) non possono essere usati per autorizzare una richiesta NFS 3.0. Infatti, se si aggiunge una voce per un utente o un gruppo denominato all'elenco di controllo di accesso di un BLOB o di una directory, tale file diventa inaccessibile nel client per gli utenti non radice. È necessario rimuovere tale voce per ripristinare l'accesso agli utenti non radice nel client.

Importante

Il protocollo NFS 3.0 usa le porte 111 e 2048. Se ci si connette da una rete locale, assicurarsi che il client consenta la comunicazione in uscita tramite queste porte. Se è stato concesso l'accesso a reti virtuali specifiche, assicurarsi che tutti i gruppi di sicurezza di rete associati a tali reti virtuali non contengano regole di sicurezza che bloccano la comunicazione in ingresso tramite tali porte.

Passaggio 3: Creare e configurare un account di archiviazione

Per montare un contenitore usando NFS 3.0, è necessario creare un account di archiviazione. Non è possibile abilitare gli account esistenti.

Il protocollo NFS 3.0 è supportato per gli account di archiviazione standard per utilizzo generico v2 e per gli account di archiviazione BLOB in blocchi Premium. Per altre informazioni su questi tipi di account di archiviazione, vedere Panoramica dell'account di archiviazione.

Per configurare l'account, scegliere questi valori:

Impostazione Prestazioni Premium Prestazioni standard
Ufficio Tutte le aree disponibili Tutte le aree disponibili
Prestazioni Premium Standard
Tipo di account BlockBlobStorage Utilizzo generico v2
Replica Archiviazione con ridondanza locale (LRS), archiviazione con ridondanza della zona Archiviazione con ridondanza locale (LRS), archiviazione con ridondanza della zona
Metodo di connettività Endpoint pubblico (reti selezionate) o Endpoint privato Endpoint pubblico (reti selezionate) o Endpoint privato
Spazio dei nomi gerarchico Attivata Attivata
NFS V3 Attivata Attivata

È possibile accettare i valori predefiniti per tutte le altre impostazioni.

Passaggio 4: Creare un contenitore

Creare un contenitore nell'account di archiviazione usando uno di questi strumenti o SDK:

Strumenti SDK
Azure portal .NET
AzCopy Java
PowerShell Python
Interfaccia della riga di comando di Azure JavaScript
REST

Nota

Per impostazione predefinita, l'opzione root squash di un nuovo contenitore è No Root Squash. Ma puoi modificarlo in Root Squash o All Squash.But you can change that to Root Squash or All Squash. Per informazioni su queste opzioni di squash, vedere la documentazione del sistema operativo.

L'immagine seguente mostra le opzioni di squash visualizzate nella portale di Azure.

Screenshot che mostra le opzioni di squash nella portale di Azure.

Passaggio 5: Installare il pacchetto helper di montaggio AZNFS

Il pacchetto helper di montaggio AZNFS consente ai client Linux NFS di accedere in modo affidabile alle condivisioni NFS blob di Azure anche quando cambia l'indirizzo IP dell'endpoint. Questo pacchetto esegue un processo in background denominato aznfswatchdog che monitora le modifiche all'indirizzo IP dell'endpoint per le condivisioni montate. Se viene rilevata una modifica, questo processo in background aggiorna le regole DNAT (Destination Network Address Translation). Per altre informazioni, vedere AZNFS Mount Helper.To learn more, see AZNFS Mount Helper.

  1. Determinare se il pacchetto helper di montaggio AZNFS è installato nel client.

    systemctl is-active --quiet aznfswatchdog && echo -e "\nAZNFS mounthelper is installed! \n"
    

    Se il pacchetto è installato, viene visualizzato il messaggio AZNFS mounthelper is installed! .

  2. Se il pacchetto non è ancora installato, usare il comando seguente per installarlo.

    wget -O - -q https://github.com/Azure/AZNFS-mount/releases/latest/download/aznfs_install.sh | bash
    

    Nota

    AZNFS è supportato nelle distribuzioni Linux seguenti:

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

Passaggio 6: Montare il contenitore

Creare una directory nel sistema Linux e quindi montare il contenitore nell'account di archiviazione.

  1. Nel sistema Linux creare una directory:

    mkdir -p /nfsdata
    
  2. Montare il contenitore usando uno dei metodi seguenti. In entrambi i metodi sostituire il <storage-account-name> segnaposto con il nome dell'account di archiviazione e sostituire <container-name> con il nome del contenitore.

    • Per fare in modo che la condivisione venga montata automaticamente al riavvio:

      1. Creare una voce nel file /etc/fstab aggiungendo la riga seguente:

        <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. Eseguire il comando seguente per elaborare immediatamente le voci /etc/fstab e tentare di montare il percorso precedente:

        mount /nfsdata
        
    • Per un montaggio temporaneo che non persiste tra i riavvii, eseguire il comando seguente:

      mount -t aznfs -o sec=sys,vers=3,nolock,proto=tcp <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name>  /nfsdata
      

      Suggerimento

      Usando l'opzione -t aznfs di montaggio, assicurarsi che il client NFS rimanga sempre connesso correttamente all'endpoint di archiviazione anche se l'ip dell'endpoint cambia dopo il montaggio. Le condivisioni NFS montate tramite l'opzione -t nfs di montaggio potrebbero essere disconnesse dall'endpoint di archiviazione se l'indirizzo IP di tale endpoint cambia.

      Altri parametri facoltativi sono disponibili con il comando mount. Questi parametri influiscono principalmente sul comportamento lato client. sys è l'unico valore attualmente supportato dall'opzione sec .

      Importante

      L'opzione nconnect di montaggio funziona solo nei client che dispongono del supporto di Azure nconnect. L'uso dell'opzione nconnect in un client non supportato riduce la velocità effettiva e causa il timeout o il funzionamento non corretto dei comandi. Per altre informazioni su come assicurarsi che il client disponga del supporto di Azure nconnect, vedere Aumentare il numero di connessioni TCP.

Risolvere gli errori comuni

Error Causa/risoluzione
Access denied by server while mounting Verificare che il client sia in esecuzione all'interno di una subnet supportata. Vedere Percorsi di rete supportati.
No such file or directory Assicurarsi di digitare, anziché copiare e incollare, il comando mount e i relativi parametri direttamente nel terminale. Se si copiano e si incollano tutte le parti di questo comando nel terminale da un'altra applicazione, i caratteri nascosti nelle informazioni incollate potrebbero causare la visualizzazione di questo errore. Questo errore potrebbe essere visualizzato anche se l'account non è abilitato per NFS 3.0.
Permission denied La modalità predefinita di un contenitore NFS 3.0 appena creato è 0750. Gli utenti non radice non hanno accesso al volume. Se è necessario l'accesso da utenti non radice, gli utenti radice devono modificare la modalità su 0755. Comando di esempio: sudo chmod 0755 /nfsdata
EINVAL ("Invalid argument") Questo errore può essere visualizzato quando un client tenta di:
  • Scrivere in un BLOB creato da un endpoint BLOB.
  • Eliminare un BLOB con uno snapshot o che si trova in un contenitore con un criterio WORM attivo (scrittura una sola volta, lettura molti).
  • EROFS ("Read-only file system") Questo errore può essere visualizzato quando un client tenta di:
  • Scrivere in un BLOB o eliminare un BLOB con un lease attivo.
  • Scrivere in un BLOB o eliminare un BLOB in un contenitore con criteri WORM attivi.
  • NFS3ERR_IO/EIO ("Input/output error") Questo errore può essere visualizzato quando un client tenta di leggere, scrivere o impostare attributi nei BLOB archiviati nel livello di accesso archivio.
    OperationNotSupportedOnSymLink errori Questo errore può essere restituito durante un'operazione di scrittura tramite un archivio BLOB o un'API di Azure Data Lake Storage. L'uso di queste API per scrivere o eliminare collegamenti simbolici creati tramite NFS 3.0 non è consentito. Assicurarsi di usare l'endpoint NFS 3.0 per usare i collegamenti simbolici.
    mount: /nfsdata: bad option; Installare il programma helper NFS usando sudo apt install nfs-common.
    Connection Timed Out Assicurarsi che il client consenta la comunicazione in uscita tramite le porte 111 e 2048. Il protocollo NFS 3.0 usa queste porte. Assicurarsi di montare l'account di archiviazione usando l'endpoint del servizio BLOB e non l'endpoint di Data Lake Storage.

    Limitazioni e risoluzione dei problemi per l'helper di montaggio AZNFS

    Vedere Helper di montaggio AZNFS.

    Vedi anche