Monter le Stockage Blob avec le protocole NFS (Network File system) 3.0

Attention

Cet article fait référence à CentOS, une distribution Linux proche de l’état EOL (End Of Life). Faites le point sur votre utilisation et organisez-vous en conséquence. Pour plus d’informations, consultez les conseils d’aide relatifs à la fin de vie de CentOS.

Cet article fournit des instructions sur la façon de monter un conteneur dans le Stockage Blob Azure à partir d’une machine virtuelle Azure (VM) sous Linux ou d’un système Linux qui s’exécute en local à l’aide du protocole NFS 3.0 (Network File System). Pour en savoir plus sur la prise en charge du protocole NFS 3.0 dans le Stockage Blob, consultez Prise en charge du protocole NFS (Network File System) 3.0 pour Stockage Blob Azure.

Étape 1 : Création d'un réseau virtuel Azure

Votre compte de stockage doit se trouver dans un réseau virtuel. Un réseau virtuel permet aux clients de se connecter en toute sécurité à votre compte de stockage. Pour en savoir plus sur le Réseau virtuel Azure et découvrir comment créer un réseau virtuel, consultez la documentation relative au réseau virtuel.

Notes

Les clients du même réseau virtuel peuvent monter des conteneurs dans votre compte. Vous pouvez également monter un conteneur à partir d’un client qui s’exécute sur un réseau local, mais vous devrez d’abord connecter votre réseau local à votre réseau virtuel. Consultez Connexions réseau prises en charge.

Étape 2 : Configurer la sécurité réseau

Pour l’instant, la seule façon de sécuriser les données de votre compte de stockage consiste à utiliser un réseau virtuel et d’autres paramètres de sécurité réseau. Voir Recommandations de sécurité réseau pour Stockage Blob.

Tout autre outil utilisé pour sécuriser les données, y compris l’autorisation de clé de compte, la sécurité Microsoft Entra et les listes de contrôle d’accès (ACL) ne peut pas être utilisé pour autoriser une demande NFS 3.0. En fait, si vous ajoutez une entrée pour un utilisateur ou un groupe nommé à l’ACL d’un blob ou d’un répertoire, ce fichier devient inaccessible sur le client pour les utilisateurs non root. Vous devez supprimer cette entrée pour rétablir l’accès aux utilisateurs non root sur le client.

Important

Le protocole NFS 3.0 utilise les ports 111 et 2048. Si vous vous connectez à partir d’un réseau local, assurez-vous que votre client autorise les communications sortantes via ces ports. Si vous avez accordé l’accès à des réseaux virtuels spécifiques, assurez-vous que tous les groupes de sécurité réseau associés à ces réseaux virtuels ne contiennent pas de règles de sécurité qui bloquent les communications entrantes via ces ports.

Étape 3 : Créer et configurer un compte de stockage

Pour monter un conteneur à l’aide du protocole NFS 3.0, vous devez créer un compte de stockage. Vous ne pouvez pas activer les comptes existants.

Le protocole NFS 3.0 est pris en charge pour les comptes de stockage universel v2 standard et pour les comptes de stockage d’objets blob de blocs Premium. Pour plus d’informations sur ces types de comptes de stockage, consultez Vue d’ensemble des comptes de stockage.

Pour configurer le compte, choisissez les valeurs suivantes :

Paramètre Niveau de performance Premium Niveau de performance Standard
Emplacement Toutes les régions disponibles Toutes les régions disponibles
Performances Premium standard
Type de compte BlockBlobStorage Universel v2
Réplication Stockage localement redondant (LRS), Stockage redondant interzone (ZRS) Stockage localement redondant (LRS), Stockage redondant interzone (ZRS)
Méthode de connectivité Point de terminaison public (réseaux sélectionnés) pour point de terminaison privé Point de terminaison public (réseaux sélectionnés) pour point de terminaison privé
Espace de noms hiérarchique activé activé
NFS V3 activé activé

Vous pouvez accepter les valeurs par défaut pour tous les autres paramètres.

Étape 4 : Créer un conteneur

Créez un conteneur dans votre compte de stockage à l’aide de l’un de ces outils ou kits de développement logiciel (SDK) :

Outils Kits SDK
Azure portal .NET
AZCopy Java
PowerShell Python
Azure CLI JavaScript
REST

Notes

Par défaut, l’option Squash racine d’un nouveau conteneur est Aucun Squash racine. Mais vous pouvez modifier cette option par Squash racine ouTous les Squash. Pour plus d’informations sur les options Squash, reportez-vous à la documentation de votre système d’exploitation.

L’image suivante montre les options Squash telles qu’elles apparaissent dans le portail Azure.

Capture d’écran montrant les options Squash dans le portail Azure.

Étape 5 : Installer le package AZNFS Mount Helper

Le package AZNFS Mount Helper permet aux clients Linux NFS d’accéder de manière fiable aux partages NFS d’objets blob Azure, même quand l’adresse IP du point de terminaison change. Ce package exécute un travail en arrière-plan appelé aznfswatchdog qui surveille les modifications de l’adresse IP du point de terminaison pour les partages montés. Si une modification est détectée, ce travail en arrière-plan met à jour les règles DNAT (Destination Network Address Translation). Pour plus d’informations, consultez la page AZNFS Mount Helper.

  1. Déterminez si le package AZNFS Mount Helper est installé sur votre client.

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

    Si le package est installé, le message AZNFS mounthelper is installed! s’affiche.

  2. Si le package n’est pas encore installé, utilisez la commande suivante pour l’installer.

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

    Notes

    AZNFS est pris en charge sur les distributions Linux suivantes :

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

Étape 6 : Monter le conteneur

Créez un répertoire sur votre système Linux, puis montez un conteneur dans le compte de stockage.

  1. Sur un système Linux, créez un répertoire :

    mkdir -p /nfsdata
    
  2. Montez le conteneur à l’aide de l’une des méthodes suivantes. Dans les deux méthodes, remplacez l’espace réservé <storage-account-name> par le nom de votre compte de stockage et remplacez <container-name> par le nom de votre conteneur.

    • Pour que le partage soit monté automatiquement au redémarrage :

      1. Créez une entrée dans le fichier /etc/fstab en ajoutant la ligne suivante :

        <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. Exécutez la commande suivante pour traiter immédiatement les entrées /etc/fstab et essayer de monter le chemin précédent :

        mount /nfsdata
        
    • Pour un montage temporaire qui n’est pas conservé entre les redémarrages, exécutez la commande suivante :

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

      Conseil

      En utilisant l’option de montage -t aznfs, vous vous assurez que le client NFS reste toujours correctement connecté au point de terminaison de stockage, même si l’adresse IP du point de terminaison change après le montage. Les partages NFS montés à l’aide de l’option de montage -t nfs peuvent être déconnectés du point de terminaison de stockage si l’adresse IP de ce point de terminaison change.

      D’autres paramètres facultatifs sont disponibles avec la commande mount. Ces paramètres affectent principalement le comportement côté client. sys est la seule valeur actuellement prise en charge par l’option sec.

      Important

      L’option de montage nconnect fonctionne uniquement sur les clients qui prennent en charge Azure nconnect. L’utilisation de l’option nconnect sur un client non pris en charge réduit le débit et entraîne l’expiration du délai d’exécution ou un fonctionnement incorrect des commandes. Pour en savoir plus sur la façon de s’assurer que votre client prend en charge Azure nconnect, consultez Augmenter le nombre de connexions TCP.

Résoudre les erreurs courantes

Error Cause/résolution
Access denied by server while mounting Vérifiez que votre client s’exécute sur un sous-réseau pris en charge. Consultez les Emplacements réseau pris en charge.
No such file or directory Veillez à saisir la commande de montage et ses paramètres directement dans le terminal plutôt que d’utiliser un copier/coller. Si vous copiez et collez une partie de cette commande dans le terminal à partir d’une autre application, les caractères masqués dans les informations collées peuvent provoquer l’apparition de cette erreur. Cette erreur peut également se produire si le compte n’est pas activé pour NFS 3.0.
Permission denied Le mode par défaut d’un nouveau conteneur NFS 3.0 est 0750. Les utilisateurs non racines n’ont pas accès au volume. Si un utilisateur non racine doit y accéder, il doit passer en mode 0755. Exemple de commande : sudo chmod 0755 /nfsdata
EINVAL ("Invalid argument") Cette erreur peut se produire lorsqu’un client tente d’effectuer les opérations suivantes :
  • Écrire des données dans un objet blob créé à partir d’un point de terminaison d’objet blob.
  • Supprimer un blob qui comprend un instantané ou qui se trouve dans un conteneur auquel est appliquée une stratégie WORM (Write Once, Read Many - écriture unique, lecture multiple).
  • EROFS ("Read-only file system") Cette erreur peut se produire lorsqu’un client tente d’effectuer les opérations suivantes :
  • Écrire des données dans un objet blob ou supprimer un objet blob dont le bail est actif.
  • Écrire dans un blob ou supprimer un blob dans un conteneur auquel est appliquée une stratégie WORM.
  • NFS3ERR_IO/EIO ("Input/output error") Cette erreur peut se produire lorsqu’un client tente de lire, d’écrire ou de définir des attributs dans des objets blob qui sont stockés dans le niveau d’accès de l’archive.
    OperationNotSupportedOnSymLink erreurs Cette erreur peut être retournée lors d’une opération d’écriture effectuée par le biais d’un stockage Blob ou d’une API Azure Data Lake Storage Gen2. L’utilisation de ces API pour écrire ou supprimer des liens symboliques créés à l’aide du protocole NFS 3.0 n’est pas autorisée. Veillez à utiliser le point de terminaison NFS 3.0 pour les liens symboliques.
    mount: /nfsdata: bad option; Installez le programme d’aide de NFS à l’aide de sudo apt install nfs-common.
    Connection Timed Out Veillez à ce que le client autorise les communication sortantes via les ports 111 et 2048. Le protocole NFS 3.0 utilise ces ports. Veille à monter le compte de stockage à l’aide du point de terminaison du service Blob et non du point de terminaison Data Lake Storage.

    Limitations et résolution des problèmes concernant AZNFS Mount Helper

    Consultez la page AZNFS Mount Helper.

    Voir aussi