Udostępnij za pośrednictwem


Rozwiązywanie problemów z udziałami plików platformy Azure w systemie plików NFS

Uwaga 16.

CentOS, do których odwołuje się ten artykuł, jest dystrybucją systemu Linux i osiągnie koniec życia (EOL). Rozważ odpowiednie użycie i zaplanuj. Aby uzyskać więcej informacji, zobacz CentOS End Of Life guidance (Wskazówki dotyczące zakończenia życia systemu CentOS).

W tym artykule wymieniono typowe problemy związane z udziałami plików platformy Azure NFS oraz potencjalne przyczyny i obejścia.

Ważne

Zawartość tego artykułu dotyczy tylko udziałów NFS. Aby rozwiązać problemy z protokołem SMB w systemie Linux, zobacz Rozwiązywanie problemów z usługą Azure Files w systemie Linux (SMB). Udziały plików platformy Azure NFS nie są obsługiwane w systemie Windows.

Dotyczy

Typ udziału plików SMB NFS
Udziały plików w warstwie Standardowa (GPv2), LRS/ZRS
Udziały plików w warstwie Standardowa (GPv2), GRS/GZRS
Udziały plików w warstwie Premium (FileStorage), LRS/ZRS

Błąd chgrp "nazwa pliku": nieprawidłowy argument (22)

Przyczyna 1. Nie wyłączono mapowania identyfikatorów

Ponieważ usługa Azure Files nie zezwala na alfanumeryczne identyfikatorY UID/GID, należy wyłączyć funkcję idmapping.

Przyczyna 2: idmapping został wyłączony, ale został ponownie włączony po napotkaniu nieprawidłowej nazwy pliku/dir

Nawet jeśli poprawnie wyłączysz funkcję idmapping, w niektórych przypadkach można ją automatycznie ponownie włączyć. Na przykład gdy usługa Azure Files napotka nieprawidłową nazwę pliku, wysyła błąd. Po obejrzeniu tego kodu błędu klient systemu plików NFS 4.1 z systemem Linux decyduje się ponownie włączyć mapowanie identyfikatorów i wysyła przyszłe żądania z alfanumerycznym identyfikatorem UID/GID. Aby uzyskać listę nieobsługiwanych znaków w usłudze Azure Files, zobacz ten artykuł. Colon jest jednym z nieobsługiwanych znaków.

Rozwiązanie

Upewnij się, że wyłączono mapowanie bezczynności i że nic nie włącza się ponownie. Następnie wykonaj następujące kroki:

  1. Odinstalowywanie udziału.

  2. Wyłącz mapowanie identyfikatorów za pomocą polecenia:

    sudo echo Y > /sys/module/nfs/parameters/nfs4_disable_idmapping
    
  3. Zainstaluj udział z powrotem.

  4. W przypadku uruchamiania narzędzia rsync uruchom narzędzie rsync z —numeric-ids argumentem z katalogu, który nie ma nieprawidłowej nazwy katalogu ani pliku.

Nie można utworzyć udziału NFS

Przyczyna: Nieobsługiwane ustawienia konta magazynu

System plików NFS jest dostępny tylko na kontach magazynu z następującą konfiguracją:

Rozwiązanie

Postępuj zgodnie z instrukcjami w temacie How to create an NFS share (Jak utworzyć udział NFS).

Nie można nawiązać połączenia z udziałem plików platformy Azure NFS lub zainstalować go

Przyczyna 1. Żądanie pochodzi z klienta w niezaufanej sieci/niezaufanym adresie IP

W przeciwieństwie do protokołu SMB system plików NFS nie ma uwierzytelniania opartego na użytkownikach. Uwierzytelnianie udziału jest oparte na konfiguracji reguły zabezpieczeń sieci. Aby upewnić się, że klienci nawiązują tylko bezpieczne połączenia z udziałem NFS, należy użyć punktu końcowego usługi lub prywatnych punktów końcowych. Aby uzyskać dostęp do udziałów ze środowiska lokalnego oprócz prywatnych punktów końcowych, należy skonfigurować połączenie sieci VPN lub usługi ExpressRoute. Adresy IP dodane do listy dozwolonych konta magazynu dla zapory są ignorowane. Aby skonfigurować dostęp do udziału NFS, należy użyć jednej z następujących metod:

  • Punkt końcowy usługi

    • Dostęp do publicznego punktu końcowego.

    • Dostępne tylko w tym samym regionie.

    • Nie można używać komunikacji równorzędnej sieci wirtualnych na potrzeby dostępu do udziału.

    • Do listy dozwolonych należy dodać każdą sieć wirtualną lub podsieć pojedynczo.

    • W przypadku dostępu lokalnego można używać punktów końcowych usługi z usługą ExpressRoute, punkt-lokacja i sieci VPN typu lokacja-lokacja. Zalecamy użycie prywatnego punktu końcowego, ponieważ jest on bezpieczniejszy.

      Na poniższym diagramie przedstawiono łączność przy użyciu publicznych punktów końcowych:

      Diagram łączności z publicznym punktem końcowym.

  • Prywatny punkt końcowy

    • Dostęp jest bardziej bezpieczny niż punkt końcowy usługi.

    • Dostęp do udziału NFS za pośrednictwem łącza prywatnego jest dostępny z regionu platformy Azure konta magazynu i spoza go (między regionami, lokalnie).

    • Komunikacja równorzędna sieci wirtualnych z sieciami wirtualnymi hostowanymi w prywatnym punkcie końcowym zapewnia dostęp do udziału NFS klientom w równorzędnych sieciach wirtualnych.

    • Prywatne punkty końcowe można używać z usługą ExpressRoute, sieciami VPN typu punkt-lokacja i sieciami VPN typu lokacja-lokacja.

      Diagram łączności prywatnego punktu końcowego.

Przyczyna 2. Wymagany jest bezpieczny transfer

Udziały plików platformy Azure NFS nie obsługują obecnie podwójnego szyfrowania. Platforma Azure udostępnia warstwę szyfrowania dla wszystkich danych przesyłanych między centrami danych platformy Azure przy użyciu protokołu MACSec. Dostęp do udziałów NFS można uzyskać tylko z zaufanych sieci wirtualnych i tuneli VPN. W udziałach NFS nie jest dostępne żadne dodatkowe szyfrowanie warstwy transportu.

Rozwiązanie

Wyłącz wymagany bezpieczny transfer w bloku konfiguracji konta magazynu.

Zrzut ekranu przedstawiający blok konfiguracji konta magazynu, wyłączający wymagany bezpieczny transfer.

Przyczyna 3: pakiet nfs-utils, nfs-client lub nfs-common nie jest zainstalowany

Przed uruchomieniem mount polecenia zainstaluj pakiet nfs-utils, nfs-client lub nfs-common.

Aby sprawdzić, czy pakiet NFS został zainstalowany, uruchom polecenie:

Te same polecenia w tej sekcji dotyczą systemów CentOS i Oracle Linux.

sudo rpm -qa | grep nfs-utils

Rozwiązanie

Jeśli pakiet nie jest zainstalowany, zainstaluj pakiet przy użyciu polecenia specyficznego dla dystrybucji.

Te same polecenia w tej sekcji dotyczą systemów CentOS i Oracle Linux.

System operacyjny w wersji 7.X

sudo yum install nfs-utils

System operacyjny w wersji 8.X lub 9.X

sudo dnf install nfs-utils

Przyczyna 4: Zapora blokująca port 2049

Protokół NFS komunikuje się z serwerem przez port 2049. Upewnij się, że ten port jest otwarty dla konta magazynu (serwera NFS).

Rozwiązanie

Sprawdź, czy port 2049 jest otwarty po stronie klienta, uruchamiając następujące polecenie. Jeśli port nie jest otwarty, otwórz go.

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

Przyczyna 5. Usunięto konto magazynu

Jeśli nie możesz zainstalować udziału plików z powodu błędu: przekroczono limit czasu połączenia, konto magazynu zawierające udział plików może zostać przypadkowo usunięte.

Rozwiązanie

Odzyskaj konto magazynu. Następnie usuń i ponownie utwórz prywatny punkt końcowy, aby był skojarzony z nowym identyfikatorem zasobu konta magazynu.

ls zawiesza się w przypadku wyliczenia dużych katalogów w niektórych jądrach

Przyczyna: Wprowadzono usterkę w jądrze systemu Linux w wersji 5.11 i usunięto jądro w wersji 5.12.5

Niektóre wersje jądra mają usterkę, która powoduje, że listy katalogów powodują niekończącą się sekwencję READDIR. Małe katalogi, w których wszystkie wpisy mogą być wysyłane w jednym wywołaniu, nie mają tego problemu. Usterka została wprowadzona w jądrze systemu Linux w wersji 5.11 i została usunięta w wersji 5.12.5. Więc wszystko między ma usterkę. System RHEL 8.4 ma tę wersję jądra.

Obejście: obniżanie lub uaktualnianie jądra

Obniżenie lub uaktualnienie jądra do niczego spoza objętego jądra powinno rozwiązać ten problem.

Polecenia systemowe kończą się niepowodzeniem z powodu błędu "Nie znaleziono pliku"

Przyczyna

Aplikacje 32-bitowe systemu Linux, które opierają się na liczbach inode, mogą nie działać zgodnie z oczekiwaniami w usłudze Azure Files ze względu na formatowanie 64-bitowych liczb inode generowanych przez usługę NFS.

Rozwiązanie

Aby rozwiązać ten problem, skorzystaj z jednej z poniższych metod:

  • Kompresuj 64-bitowe liczby inode do 32 bitów przy użyciu opcji rozruchu nfs.enable_ino64=0 jądra.

  • Ustaw parametr modułu, dodając options nfs enable_ino64=0 do pliku /etc/modprobe.d/nfs.conf i ponownie uruchamiając maszynę wirtualną.

Możesz również zachować tę opcję rozruchu jądra w pliku grub.conf . Aby uzyskać więcej informacji, zobacz dokumentację dystrybucji systemu Linux.

Nie można zmienić własności plików i katalogów

Przyczyna

Uprawnienia do udziałów plików NFS są wymuszane przez system operacyjny klienta, a nie usługę Azure Files. Jeśli ustawienie Root Squash jest włączone w udziale plików NFS, użytkownik główny w systemie klienckim jest traktowany jako anonimowy (nieuprzywilejowany) użytkownik na potrzeby kontroli dostępu. Oznacza to, że nawet jeśli użytkownik jest zalogowany jako użytkownik główny w systemie klienckim, nie można użyć chown polecenia , aby zmienić własność plików i katalogów, których nie jesteś właścicielem.

Rozwiązanie

W witrynie Azure Portal przejdź do udziału plików i wybierz pozycję Właściwości. Zmień ustawienie Root Squash na Brak głównego squasha. Aby uzyskać więcej informacji, zobacz Konfigurowanie głównego squasha dla usługi Azure Files.

Bez włączonego root squasha użytkownik główny w systemie klienckim ma takie same uprawnienia jak użytkownik główny w systemie serwera. Teraz możesz zmienić chown własność dowolnego pliku lub katalogu w udziale, niezależnie od bieżącego właściciela. Po wprowadzeniu zmian możesz ponownie włączyć opcję Root Squash , jeśli to konieczne.

Potrzebujesz pomocy?

Jeśli nadal potrzebujesz pomocy, skontaktuj się z pomocą techniczną, aby szybko rozwiązać problem.

Zobacz też

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.