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:
Odinstalowywanie udziału.
Wyłącz mapowanie identyfikatorów za pomocą polecenia:
sudo echo Y > /sys/module/nfs/parameters/nfs4_disable_idmapping
Zainstaluj udział z powrotem.
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ą:
- Warstwa — Premium
- Rodzaj konta — FileStorage
- Regiony — lista obsługiwanych regionów
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:
-
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:
-
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.
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.
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ż
- Rozwiązywanie problemów z plikami platformy Azure
- Rozwiązywanie problemów z wydajnością usługi Azure Files
- Rozwiązywanie problemów z łącznością usługi Azure Files (SMB)
- Rozwiązywanie problemów z uwierzytelnianiem i autoryzacją usługi Azure Files (SMB)
- Rozwiązywanie ogólnych problemów z protokołem SMB Azure Files w systemie Linux
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.