Blob Storage koppelen met behulp van het NFS-protocol (Network File System) 3.0

Let op

In dit artikel wordt verwezen naar CentOS, een Linux-distributie die de status End Of Life (EOL) nadert. Houd rekening met uw gebruik en plan dienovereenkomstig. Zie de Richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.

Dit artikel bevat richtlijnen voor het koppelen van een container in Azure Blob Storage vanaf een op Linux gebaseerde virtuele Azure-machine (VM) of een Linux-systeem dat on-premises wordt uitgevoerd met behulp van het NFS-protocol (Network File System) 3.0. Zie NFS 3.0-protocolondersteuning (Network File System) 3.0 voor meer informatie over ondersteuning voor NFS 3.0-protocollen in Blob Storage.

Stap 1: Een virtueel Azure-netwerk maken

Uw opslagaccount moet zich in een virtueel netwerk bevinden. Met een virtueel netwerk kunnen clients veilig verbinding maken met uw opslagaccount. Zie de documentatie van Virtual Network voor meer informatie over Azure Virtual Network en het maken van een virtueel netwerk.

Notitie

Clients in hetzelfde virtuele netwerk kunnen containers in uw account koppelen. U kunt ook een container koppelen vanaf een client die wordt uitgevoerd in een on-premises netwerk, maar u moet eerst uw on-premises netwerk verbinden met uw virtuele netwerk. Zie Ondersteunde netwerkverbindingen.

Stap 2: netwerkbeveiliging configureren

Momenteel is de enige manier om de gegevens in uw opslagaccount te beveiligen met behulp van een virtueel netwerk en andere netwerkbeveiligingsinstellingen. Zie aanbevelingen voor netwerkbeveiliging voor Blob Storage.

Alle andere hulpprogramma's die worden gebruikt voor het beveiligen van gegevens, waaronder autorisatie van accountsleutels, Microsoft Entra-beveiliging en toegangsbeheerlijsten (ACL's) kunnen niet worden gebruikt om een NFS 3.0-aanvraag te autoriseren. Als u een vermelding voor een benoemde gebruiker of groep toevoegt aan de ACL van een blob of map, is dat bestand niet toegankelijk op de client voor niet-hoofdgebruikers. U moet deze vermelding verwijderen om de toegang tot niet-hoofdgebruikers op de client te herstellen.

Belangrijk

Het NFS 3.0-protocol maakt gebruik van poort 111 en 2048. Als u verbinding maakt vanuit een on-premises netwerk, moet u ervoor zorgen dat uw client uitgaande communicatie via deze poorten toestaat. Als u toegang hebt verleend tot specifieke VNets, moet u ervoor zorgen dat alle netwerkbeveiligingsgroepen die zijn gekoppeld aan die VNets geen beveiligingsregels bevatten die binnenkomende communicatie via deze poorten blokkeren.

Stap 3: Een opslagaccount maken en configureren

Als u een container wilt koppelen met NFS 3.0, moet u een opslagaccount maken. U kunt bestaande accounts niet inschakelen.

Het NFS 3.0-protocol wordt ondersteund voor standaard v2-opslagaccounts voor algemeen gebruik en voor premium blok-blobopslagaccounts. Zie het overzicht van het opslagaccount voor meer informatie over deze typen opslagaccounts.

Als u het account wilt configureren, kiest u deze waarden:

Instelling Premium-prestaties Standaardprestaties
Locatie Alle beschikbare regio's Alle beschikbare regio's
Prestaties Premium Standaard
Soort account BlockBlobStorage Algemeen v2
Replicatie Lokaal redundante opslag (LRS), zone-redundante opslag (ZRS) Lokaal redundante opslag (LRS), zone-redundante opslag (ZRS)
Verbindingsmethode Openbaar eindpunt (geselecteerde netwerken) of privé-eindpunt Openbaar eindpunt (geselecteerde netwerken) of privé-eindpunt
Hiërarchische naamruimte Ingeschakeld Ingeschakeld
NFS V3 Ingeschakeld Ingeschakeld

U kunt de standaardwaarden voor alle andere instellingen accepteren.

Stap 4: Een container maken

Maak een container in uw opslagaccount met behulp van een van deze hulpprogramma's of SDK's:

Hulpprogramma's SDK's
Azure-portal .NET
AzCopy Java
Powershell Python
Azure-CLI JavaScript
REST

Notitie

Standaard is de root squash optie van een nieuwe container geen root squash. Maar je kunt dat veranderen in Root Squash of Alle Squash. Zie de documentatie van uw besturingssysteem voor informatie over deze squashopties.

In de volgende afbeelding ziet u de squashopties zoals deze worden weergegeven in Azure Portal.

Schermopname van squashopties in Azure Portal.

Stap 5: Het AZNFS Mount Helper-pakket installeren

Met het AZNFS Mount Helper-pakket kunnen Linux NFS-clients op betrouwbare wijze toegang krijgen tot Azure Blob NFS-shares, zelfs wanneer het IP-adres van het eindpunt verandert. Met dit pakket wordt een achtergrondtaak aznfswatchdog uitgevoerd waarmee wijzigingen in het IP-adres van het eindpunt voor de gekoppelde shares worden bewaakt. Als er een wijziging wordt gedetecteerd, worden met deze achtergrondtaak de DNAT-regels (Destination Network Address Translation) bijgewerkt. Zie AZNFS Mount Helper voor meer informatie.

  1. Bepaal of het AZNFS Mount Helper-pakket op uw client is geïnstalleerd.

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

    Als het pakket is geïnstalleerd, wordt het bericht AZNFS mounthelper is installed! weergegeven.

  2. Als het pakket nog niet is geïnstalleerd, gebruikt u de volgende opdracht om het te installeren.

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

    Notitie

    AZNFS wordt ondersteund voor de volgende Linux-distributies:

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

Stap 6: De container koppelen

Maak een map op uw Linux-systeem en koppel vervolgens de container in het opslagaccount.

  1. Maak op uw Linux-systeem een map:

    mkdir -p /nfsdata
    
  2. Koppel de container met behulp van een van de volgende methoden. Vervang in beide methoden de <storage-account-name> tijdelijke aanduiding door de naam van uw opslagaccount en vervang deze door <container-name> de naam van uw container.

    • De share automatisch laten koppelen bij het opnieuw opstarten:

      1. Maak een vermelding in het bestand /etc/fstab door de volgende regel toe te voegen:

        <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. Voer de volgende opdracht uit om de /etc/fstab-vermeldingen onmiddellijk te verwerken en probeer het voorgaande pad te koppelen:

        mount /nfsdata
        
    • Voer de volgende opdracht uit voor een tijdelijke koppeling die niet blijft bestaan tijdens het opnieuw opstarten:

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

      Tip

      Met behulp van de -t aznfs koppelingsoptie zorgt u ervoor dat de NFS-client altijd correct verbonden blijft met het opslageindpunt, zelfs als het IP-adres van het eindpunt na de koppeling verandert. NFS-shares die zijn gekoppeld met behulp van de -t nfs koppelingsoptie, worden mogelijk losgekoppeld van het opslageindpunt als het IP-adres van dat eindpunt wordt gewijzigd.

      Andere optionele parameters zijn beschikbaar met de koppelingsopdracht. Deze parameters zijn voornamelijk van invloed op gedrag aan de clientzijde. sys is de enige waarde die momenteel wordt ondersteund door de sec optie.

      Belangrijk

      De nconnect koppelingsoptie werkt alleen voor clients met azure nconnect-ondersteuning. Als u de optie op een niet-ondersteunde client gebruikt, vermindert u de nconnect doorvoer en zorgt u ervoor dat opdrachten een time-out krijgen of onjuist werken. Zie Het aantal TCP-verbindingen verhogen voor meer informatie over hoe u ervoor kunt zorgen dat uw client ondersteuning voor Azure nconnect heeft.

Veelvoorkomende problemen oplossen

Error Oorzaak/oplossing
Access denied by server while mounting Zorg ervoor dat de client wordt uitgevoerd in een ondersteund subnet. Zie Ondersteunde netwerklocaties.
No such file or directory Zorg ervoor dat u typt, in plaats van te kopiëren en plakken, de koppelingsopdracht en de bijbehorende parameters rechtstreeks in de terminal. Als u een deel van deze opdracht vanuit een andere toepassing in de terminal kopieert, kunnen verborgen tekens in de gekopieerde gegevens deze fout veroorzaken. Deze fout kan ook worden weergegeven als het account niet is ingeschakeld voor NFS 3.0.
Permission denied De standaardmodus van een zojuist gemaakte NFS 3.0-container is 0750. Niet-hoofdgebruikers hebben geen toegang tot het volume. Als toegang van niet-hoofdgebruikers is vereist, moeten hoofdgebruikers de modus wijzigen in 0755. Voorbeeldopdracht: sudo chmod 0755 /nfsdata
EINVAL ("Invalid argument") Deze fout kan optreden wanneer een client probeert het volgende te doen:
  • Schrijf naar een blob die is gemaakt op basis van een blob-eindpunt.
  • Verwijder een blob met een momentopname of bevindt zich in een container met een actief WORM-beleid (eenmaal schrijven, veel lezen).
  • EROFS ("Read-only file system") Deze fout kan optreden wanneer een client probeert het volgende te doen:
  • Schrijf naar een blob of verwijder een blob met een actieve lease.
  • Schrijf naar een blob of verwijder een blob in een container met een actief WORM-beleid.
  • NFS3ERR_IO/EIO ("Input/output error") Deze fout kan optreden wanneer een client probeert kenmerken te lezen, schrijven of instellen voor blobs die zijn opgeslagen in de archieftoegangslaag.
    Fout OperationNotSupportedOnSymLink Deze fout kan worden geretourneerd tijdens een schrijfbewerking via een Blob Storage- of Azure Data Lake Storage Gen2-API. Het gebruik van deze API's voor het schrijven of verwijderen van symbolische koppelingen die zijn gemaakt met NFS 3.0, is niet toegestaan. Zorg ervoor dat u het NFS 3.0-eindpunt gebruikt om te werken met symbolische koppelingen.
    mount: /nfsdata: bad option; Installeer het NFS-helperprogramma met behulp van sudo apt install nfs-common.
    Connection Timed Out Zorg ervoor dat de client uitgaande communicatie via poort 111 en 2048 toestaat. Het NFS 3.0-protocol gebruikt deze poorten. Zorg ervoor dat u het opslagaccount koppelt met behulp van het Blob-service-eindpunt en niet het Data Lake Storage-eindpunt.

    Beperkingen en probleemoplossing voor AZNFS Mount Helper

    Zie AZNFS Mount Helper.

    Zie ook