Rozwiązywanie problemów z łącznością i dostępem Azure Files (SMB)

W tym artykule wymieniono typowe problemy, które mogą wystąpić podczas próby nawiązania połączenia z udziałami plików platformy Azure bloku komunikatów serwera (SMB) platformy Azure i uzyskiwania do nich dostępu z klientów z systemem Windows lub Linux. Zapewnia również możliwe przyczyny i rozwiązania tych problemów.

Uwaga

Czy ten artykuł był pomocny? Twoje dane wejściowe są dla nas ważne. Użyj przycisku Opinie na tej stronie, aby poinformować nas, jak dobrze działa ten artykuł dla Ciebie lub jak możemy go ulepszyć.

Ważna

Ten artykuł dotyczy tylko udziałów SMB. Aby uzyskać szczegółowe informacje na temat udziałów systemu plików sieciowych (NFS), zobacz Rozwiązywanie problemów z udziałami plików NFS platformy Azure.

Informacje zawarte w tym artykule dotyczą

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

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

Wybierz kartę Windows lub Linux w zależności od systemu operacyjnego klienta używanego do uzyskiwania dostępu do udziałów plików platformy Azure.

Podczas próby nawiązania połączenia z udziałem plików platformy Azure w systemie Windows mogą zostać wyświetlone następujące komunikaty o błędach.

Błąd 5 podczas instalowania udziału plików platformy Azure

  • Wystąpił błąd systemu 5. Odmowa dostępu.

Przyczyna 1: Niezaszyfrowany kanał komunikacyjny

W celu zabezpieczenia połączenia z udziałami plików platformy Azure są blokowane, jeśli kanał komunikacyjny nie jest szyfrowany, a próba połączenia nie jest podejmowana z tego samego centrum danych, w którym znajdują się udziały plików platformy Azure. Jeśli wymagane ustawienie Bezpieczny transfer jest włączone na koncie magazynu, niezaszyfrowane połączenia w tym samym centrum danych również zostaną zablokowane. Szyfrowany kanał komunikacyjny jest dostarczany tylko wtedy, gdy system operacyjny klienta użytkownika końcowego obsługuje szyfrowanie SMB.

Windows 8, Windows Server 2012 i nowsze wersje każdego systemu negocjują żądania obejmujące protokół SMB 3.x, który obsługuje szyfrowanie.

Rozwiązanie przyczyny 1

  1. Nawiązywanie połączenia z klienta, który obsługuje szyfrowanie SMB (Windows 8/Windows Server 2012 lub nowszym).
  2. Nawiązywanie połączenia z maszyny wirtualnej w tym samym centrum danych co konto usługi Azure Storage używane dla udziału plików platformy Azure.
  3. Sprawdź, czy ustawienie Wymagany bezpieczny transfer jest wyłączone na koncie magazynu, jeśli klient nie obsługuje szyfrowania SMB.

Przyczyna 2. Reguły sieci wirtualnej lub zapory są włączone na koncie magazynu

Ruch sieciowy jest blokowany, jeśli na koncie magazynu skonfigurowano reguły sieci wirtualnej i zapory, chyba że adres IP klienta lub sieć wirtualna są dozwolone.

Rozwiązanie przyczyny 2

Sprawdź, czy reguły sieci wirtualnej i zapory są prawidłowo skonfigurowane na koncie magazynu. Aby sprawdzić, czy przyczyną problemu jest sieć wirtualna lub reguły zapory, tymczasowo zmień ustawienie na koncie magazynu na Zezwalaj na dostęp ze wszystkich sieci. Aby dowiedzieć się więcej, zobacz Konfigurowanie zapór i sieci wirtualnych usługi Azure Storage.

Przyczyna 3. Uprawnienia na poziomie udziału są nieprawidłowe podczas korzystania z uwierzytelniania opartego na tożsamościach

Jeśli użytkownicy uzyskują dostęp do udziału plików platformy Azure przy użyciu usługi Active Directory (AD) lub uwierzytelniania Microsoft Entra Domain Services, dostęp do udziału plików kończy się niepowodzeniem z powodu błędu "Odmowa dostępu", jeśli uprawnienia na poziomie udziału są nieprawidłowe.

Rozwiązanie przyczyny 3

Sprawdź, czy uprawnienia są poprawnie skonfigurowane:

  • Active Directory Domain Services (AD DS) zobacz Przypisywanie uprawnień na poziomie udziału.

    Przypisania uprawnień na poziomie udziału są obsługiwane dla grup i użytkowników, którzy zostali zsynchronizowani z usług AD DS do Tożsamość Microsoft Entra przy użyciu Microsoft Entra Connect Sync lub Microsoft Entra Connect cloud sync. Upewnij się, że grupy i użytkownicy, którym przypisano uprawnienia na poziomie udziału, nie są nieobsługiwanymi grupami "tylko w chmurze".

  • Microsoft Entra Domain Services zobacz Przypisywanie uprawnień na poziomie udziału.

Błąd 53, błąd 67 lub błąd 87 podczas instalowania lub odinstalowywanie udziału plików platformy Azure

Podczas próby zainstalowania udziału plików ze środowiska lokalnego lub innego centrum danych mogą wystąpić następujące błędy:

  • Wystąpił błąd systemowy nr 53. Nie odnaleziono ścieżki sieciowej.
  • Wystąpił błąd systemu 67. Nie można odnaleźć nazwy sieci.
  • Wystąpił błąd systemu 87. Parametr jest niepoprawny.

Przyczyna 1: Port 445 jest zablokowany

Błąd systemu 53 lub Błąd systemu 67 może wystąpić, jeśli komunikacja wychodząca portu 445 z centrum danych Azure Files jest zablokowana. Aby wyświetlić podsumowanie dostawców usług internetowych, którzy zezwalają na dostęp z portu 445 lub nie mogą go zezwalać, przejdź do witryny TechNet.

Aby sprawdzić, czy zapora lub usługodawca internetowy blokuje port 445, użyj narzędzia AzFileDiagnostics lub Test-NetConnection polecenia cmdlet.

Aby użyć Test-NetConnection polecenia cmdlet, należy zainstalować moduł Azure PowerShell. Aby uzyskać więcej informacji, zobacz Instalowanie modułu Azure PowerShell. Pamiętaj, aby zastąpić <your-storage-account-name> i <your-resource-group-name> odpowiednimi nazwami konta magazynu.

$resourceGroupName = "<your-resource-group-name>"
$storageAccountName = "<your-storage-account-name>"

# This command requires you to be logged into your Azure account and set the subscription your storage account is under, run:
# Connect-AzAccount -SubscriptionId 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
# if you haven't already logged in.
$storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName

# The ComputerName, or host, is <storage-account>.file.core.windows.net for Azure Public Regions.
# $storageAccount.Context.FileEndpoint is used because non-Public Azure regions, such as sovereign clouds
# or Azure Stack deployments, will have different hosts for Azure file shares (and other storage resources).
Test-NetConnection -ComputerName ([System.Uri]::new($storageAccount.Context.FileEndPoint).Host) -Port 445

Jeśli połączenie zakończyło się pomyślnie, powinny zostać wyświetlone następujące dane wyjściowe:

ComputerName     : <your-storage-account-name>
RemoteAddress    : <storage-account-ip-address>
RemotePort       : 445
InterfaceAlias   : <your-network-interface>
SourceAddress    : <your-ip-address>
TcpTestSucceeded : True

Uwaga

To polecenie zwraca bieżący adres IP konta magazynu. Ten adres IP nie ma gwarancji, że pozostanie taki sam i może ulec zmianie w dowolnym momencie. Nie koduj tego adresu IP na stałe do żadnych skryptów ani do konfiguracji zapory.

Rozwiązania przyczyny 1

Rozwiązanie 1 — użyj Azure File Sync jako punktu końcowego QUIC Możesz użyć Azure File Sync jako obejścia w celu uzyskania dostępu do Azure Files od klientów z zablokowanym portem 445. Mimo że Azure Files nie obsługuje bezpośrednio protokołu SMB za pośrednictwem quic, system Windows Server 2022 Azure Edition obsługuje protokół QUIC. Możesz utworzyć uproszczoną pamięć podręczną udziałów plików platformy Azure na maszynie wirtualnej z systemem Windows Server 2022 Azure Edition przy użyciu Azure File Sync. Ta konfiguracja używa portu 443, który jest szeroko otwarty dla ruchu wychodzącego w celu obsługi protokołu HTTPS, zamiast portu 445. Aby dowiedzieć się więcej na temat tej opcji, zobacz SMB over QUIC with Azure File Sync (Protokół SMB na quic z Azure File Sync).

Rozwiązanie 2 — korzystanie z sieci VPN lub usługi ExpressRoute Konfigurując wirtualną sieć prywatną (VPN) lub usługę ExpressRoute ze środowiska lokalnego na konto usługi Azure Storage, z Azure Files uwidocznioną w sieci wewnętrznej przy użyciu prywatnych punktów końcowych, ruch będzie przechodził przez bezpieczny tunel, a nie przez Internet. Postępuj zgodnie z instrukcjami, aby skonfigurować sieć VPN, aby uzyskać dostęp do Azure Files z systemu Windows.

Rozwiązanie 3 — odblokuj port 445 z pomocą usługodawcy isp/administratora IT Skontaktuj się z działem IT lub usługodawcą isp, aby otworzyć port 445 wychodzący do zakresów adresów IP platformy Azure.

Rozwiązanie 4 — oprócz protokołu SMB można również korzystać z narzędzi opartych na interfejsie API REST, takich jak Eksplorator usługi Storage lub program PowerShell Azure Files. Dostęp REST działa przez port 443 (standardowy tcp). Istnieją różne narzędzia napisane przy użyciu interfejsu API REST, które umożliwiają rozbudowane środowisko interfejsu użytkownika. Eksplorator usługi Storage jest jednym z nich. Pobierz i zainstaluj Eksplorator usługi Storage i połącz się z udziałem plików wspieranym przez Azure Files. Można również użyć programu PowerShell , który również używa interfejsu API REST.

Przyczyna 2. Włączono protokół NTLMv1

Błąd systemu 53 lub błąd systemu 87 może wystąpić, jeśli komunikacja NTLMv1 jest włączona na kliencie. Azure Files obsługuje tylko uwierzytelnianie NTLMv2. Włączenie protokołu NTLMv1 powoduje utworzenie mniej bezpiecznego klienta. W związku z tym komunikacja jest zablokowana dla Azure Files.

Aby ustalić, czy jest to przyczyna błędu, sprawdź, czy następujący podklucz rejestru nie jest ustawiony na wartość mniejszą niż 3:

HKLM\SYSTEM\CurrentControlSet\Control\Lsa > LmCompatibilityLevel

Aby uzyskać więcej informacji, zobacz temat LmCompatibilityLevel w witrynie TechNet.

Rozwiązanie przyczyny 2

Przywróć wartość domyślną 3 w następującym podkluczu LmCompatibilityLevel rejestru:

HKLM\SYSTEM\CurrentControlSet\Control\Lsa

Niepowodzenie z kodem błędu 0x800704b3

Podczas próby zainstalowania udziału plików platformy Azure występuje następujący błąd:

Kod błędu: 0x800704b3
Nazwa symboliczna: ERROR_NO_NET_OR_BAD_PATH
Opis błędu: Ścieżka sieciowa została wpisana niepoprawnie, nie istnieje lub dostawca sieci nie jest obecnie dostępny. Spróbuj ponownie wpisać ścieżkę lub skontaktuj się z administratorem sieci.

Przyczyna

Ten błąd może wystąpić, jeśli wszystkie podstawowe usługi związane z siecią systemu Windows zostaną wyłączone, ponieważ nie można uruchomić dowolnej usługi, która jawnie zależy od tych usług sieciowych.

Rozwiązanie

Sprawdź, czy któraś z następujących usług jest w stanie Zatrzymano na maszynie wirtualnej z systemem Windows:

  • Połączenia sieciowe
  • Usługa listy sieci
  • Świadomość lokalizacji sieciowej
  • Usługa interfejsu magazynu sieciowego
  • Klient DHCP
  • Pomocnik netBIOS protokołu TCP/IP
  • Stacji roboczej

Jeśli je znajdziesz, uruchom usługi i spróbuj ponownie przeprowadzić instalowanie udziału plików platformy Azure.

Aplikacja lub usługa nie może uzyskać dostępu do zainstalowanego dysku Azure Files

Przyczyna

Dyski są instalowane na użytkownikach. Jeśli aplikacja lub usługa jest uruchomiona na innym koncie użytkownika niż to, na które zainstalowano dysk, aplikacja nie zobaczy dysku.

Rozwiązanie

Użyj jednego z następujących rozwiązań:

  • Zainstaluj dysk z tego samego konta użytkownika, które zawiera aplikację. Możesz użyć narzędzia takiego jak PsExec.

  • Przekaż nazwę i klucz konta magazynu w parametrach net use nazwy użytkownika i hasła polecenia.

  • Użyj polecenia , cmdkey aby dodać poświadczenia do Menedżera poświadczeń. Wykonaj tę akcję z poziomu wiersza polecenia w kontekście konta usługi za pomocą interaktywnego logowania lub przy użyciu polecenia runas.

    cmdkey /add:<storage-account-name>.file.core.windows.net /user:AZURE\<storage-account-name> /pass:<storage-account-key>
    
  • Mapuj udział bezpośrednio bez użycia zamapowanego litery dysku. Niektóre aplikacje mogą nie łączyć się ponownie z literą dysku prawidłowo, więc użycie pełnej ścieżki UNC może być bardziej niezawodne:

    net use * \\storage-account-name.file.core.windows.net\share

Po wykonaniu tych instrukcji może zostać wyświetlony następujący komunikat o błędzie podczas uruchamiania narzędzia net use dla konta usługi systemowej/sieciowej: "Wystąpił błąd systemu 1312. Określona sesja logowania nie istnieje. Być może zostało ono już zakończone". Jeśli ten błąd zostanie wyświetlony, upewnij się, że nazwa użytkownika, która została przekazana, net use zawiera informacje o domenie (na przykład: [storage account name].file.core.windows.net).

Brak folderu z literą dysku w "Mój komputer" lub "Ten komputer"

Jeśli zamapujesz udział plików platformy Azure jako administrator za pomocą net use polecenia, udział wydaje się brakować.

Przyczyna

Domyślnie Eksplorator plików systemu Windows nie jest uruchamiany jako administrator. Jeśli uruchamiasz polecenie net use z administracyjnego wiersza polecenia, mapujesz dysk sieciowy jako administrator. Ponieważ zamapowane dyski są zorientowane na użytkownika, zalogowane konto użytkownika nie wyświetla dysków, jeśli są zainstalowane na innym koncie użytkownika.

Rozwiązanie

Zainstaluj udział z poziomu wiersza polecenia nieadministratora. Alternatywnie możesz skorzystać z tego tematuEnableLinkedConnections TechNet, aby skonfigurować wartość rejestru.

Polecenie net use kończy się niepowodzeniem, jeśli konto magazynu zawiera ukośnik do przodu

Przyczyna

Polecenie net use interpretuje ukośnik (/) do przodu jako opcję wiersza polecenia. Jeśli nazwa konta użytkownika zaczyna się od ukośnika, mapowanie dysku kończy się niepowodzeniem.

Rozwiązanie

Aby obejść problem, możesz wykonać jedną z następujących czynności:

  • Uruchom następujące polecenie programu PowerShell:

    New-SmbMapping -LocalPath y: -RemotePath \\server\share -UserName accountName -Password "password can contain / and \ etc"
    

    Z pliku wsadowego można uruchomić polecenie w następujący sposób:

    Echo new-smbMapping ... | powershell -command –

  • Umieść znaki podwójnego cudzysłowu wokół klucza, aby obejść ten problem — chyba że ukośnik jest pierwszym znakiem. Jeśli tak jest, użyj trybu interaktywnego i wprowadź hasło oddzielnie lub ponownie wygeneruj klucze, aby uzyskać klucz, który nie zaczyna się od ukośnika.

New-PSDrive polecenie kończy się niepowodzeniem z powodu błędu "typ zasobu sieciowego jest nieprawidłowy"

Przyczyna

Ten komunikat o błędzie może zostać wyświetlony, jeśli udział plików nie jest dostępny. Na przykład port 445 jest zablokowany lub występuje problem z rozpoznawaniem nazw DNS.

Rozwiązanie

Upewnij się, że port 445 jest otwarty i sprawdź rozpoznawanie nazw DNS i łączność z udziałem plików.

Nie można uzyskać dostępu, zmodyfikować lub usunąć udziału plików platformy Azure (lub migawki udziału)

Błąd "Nazwa użytkownika lub hasło jest niepoprawne" po zainicjowanym przez klienta trybie failover

W scenariuszu trybu failover zainicjowanym przez klienta z geograficznie nadmiarowymi kontami magazynu dojścia do plików i dzierżawy nie są zachowywane w trybie failover. Klienci muszą odinstalować i ponownie instalować udziały plików.

Błąd "Brak dostępu" podczas próby uzyskania dostępu do udziału plików platformy Azure lub usunięcia go

Podczas próby uzyskania dostępu do udziału plików platformy Azure lub usunięcia go przy użyciu Azure Portal może wystąpić następujący błąd:

Brak kodu błędu dostępu: 403

Przyczyna 1. Reguły sieci wirtualnej lub zapory są włączone na koncie magazynu

Rozwiązanie przyczyny 1

Sprawdź, czy reguły sieci wirtualnej i zapory są prawidłowo skonfigurowane na koncie magazynu. Aby sprawdzić, czy przyczyną problemu jest sieć wirtualna lub reguły zapory, tymczasowo zmień ustawienie na koncie magazynu na Zezwalaj na dostęp ze wszystkich sieci. Aby dowiedzieć się więcej, zobacz Konfigurowanie zapór i sieci wirtualnych usługi Azure Storage.

Przyczyna 2. Konto użytkownika nie ma dostępu do konta magazynu

Rozwiązanie przyczyny 2

Przejdź do konta magazynu, na którym znajduje się udział plików platformy Azure, wybierz pozycję Kontrola dostępu (IAM) i sprawdź, czy konto użytkownika ma dostęp do konta magazynu. Aby dowiedzieć się więcej, zobacz Jak zabezpieczyć konto magazynu przy użyciu kontroli dostępu opartej na rolach (RBAC) platformy Azure.

Blokady plików i dzierżawy

Jeśli nie możesz zmodyfikować ani usunąć udziału plików platformy Azure lub migawki, może to być spowodowane blokadami plików lub dzierżawami. Azure Files oferuje dwa sposoby zapobiegania przypadkowej modyfikacji lub usunięciu udziałów plików platformy Azure i migawek udziałów:

  • Blokady zasobów konta magazynu: wszystkie zasoby platformy Azure, w tym konto magazynu, obsługują blokady zasobów. Blokady mogą być umieszczane na koncie magazynu przez administratora lub przez usługi, takie jak Azure Backup. Istnieją dwie odmiany blokad zasobów: modyfikuj, co zapobiega wszelkim modyfikacjom konta magazynu i jego zasobów oraz usuwa je, co uniemożliwia tylko usunięcie konta magazynu i jego zasobów. Podczas modyfikowania lub usuwania udziałów za pośrednictwem Microsoft.Storage dostawcy zasobów blokady zasobów są wymuszane w udziałach plików platformy Azure i migawkach udziałów. Większość operacji w portalu, Azure PowerShell poleceń cmdlet dla Azure Files z Rm nazwą (na przykład Get-AzRmStorageShare), i polecenia interfejsu wiersza polecenia platformy Azure w share-rm grupie poleceń (na przykład az storage share-rm list) używają Microsoft.Storage dostawcy zasobów. Niektóre narzędzia i narzędzia, takie jak Eksplorator usługi Storage, starsze Azure Files polecenia cmdlet zarządzania programu PowerShell bez Rm nazwy (na przykład Get-AzStorageShare), oraz starsze polecenia interfejsu wiersza polecenia Azure Files w share grupie poleceń (na przykład az storage share list) używają starszych interfejsów API w interfejsie API FileREST, które pomijają Microsoft.Storage blokady dostawcy zasobów i zasobów. Aby uzyskać więcej informacji na temat starszych interfejsów API zarządzania uwidocznionych w interfejsie API FileREST, zobacz płaszczyznę sterowania w Azure Files.

  • Dzierżawy migawek udziałów/udziałów: dzierżawy udziałów są rodzajem zastrzeżonej blokady udziałów plików platformy Azure i migawek udziałów plików platformy Azure. Dzierżawy mogą być umieszczane w pojedynczych udziałach plików platformy Azure lub migawkach udziałów plików przez administratorów, wywołując interfejs API za pomocą skryptu lub usług o wartości dodanej, takich jak Azure Backup. Po umieszczeniu dzierżawy w udziale plików platformy Azure lub migawce udziału plików można zmodyfikować lub usunąć migawkę udziału plików/udziału za pomocą identyfikatora dzierżawy. Administratorzy mogą również zwolnić dzierżawę przed operacjami modyfikacji, co wymaga identyfikatora dzierżawy, lub przerwać dzierżawę, co nie wymaga identyfikatora dzierżawy. Aby uzyskać więcej informacji na temat dzierżaw udziałów, zobacz udział dzierżawy.

Ponieważ blokady zasobów i dzierżawy mogą zakłócać zamierzone operacje administratora na koncie magazynu/udziałach plików platformy Azure, możesz usunąć wszystkie blokady/dzierżawy zasobów, które zostały umieszczone na zasobach ręcznie lub automatycznie przez usługi o wartości dodanej, takie jak Azure Backup. Poniższy skrypt usuwa wszystkie blokady zasobów i dzierżawy. Pamiętaj, aby zastąpić <resource-group> elementy i <storage-account> odpowiednimi wartościami dla środowiska.

Przed uruchomieniem następującego skryptu należy zainstalować najnowszą wersję modułu programu PowerShell usługi Azure Storage.

Ważna

Usługi o wartości dodanej, które przyjmują blokady zasobów i dzierżawy migawek udostępniania/udostępniania w zasobach Azure Files, mogą okresowo ponownie stosować blokady i dzierżawy. Modyfikowanie lub usuwanie zablokowanych zasobów przez usługi o wartości dodanej może mieć wpływ na regularne działanie tych usług, takie jak usuwanie migawek udziałów zarządzanych przez Azure Backup.

# Parameters for storage account resource
$resourceGroupName = "<resource-group>"
$storageAccountName = "<storage-account>"

# Get reference to storage account
$storageAccount = Get-AzStorageAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $storageAccountName

# Remove resource locks
Get-AzResourceLock `
        -ResourceType "Microsoft.Storage/storageAccounts" `
        -ResourceGroupName $storageAccount.ResourceGroupName `
        -ResourceName $storageAccount.StorageAccountName | `
    Remove-AzResourceLock -Force | `
    Out-Null

# Remove share and share snapshot leases
Get-AzStorageShare -Context $storageAccount.Context | `
    Where-Object { $_.Name -eq $fileShareName } | `
    ForEach-Object {
        try {
            $leaseClient = [Azure.Storage.Files.Shares.Specialized.ShareLeaseClient]::new($_.ShareClient)
            $leaseClient.Break() | Out-Null
        } catch { }
    }

Nie można zmodyfikować, przenieść/zmienić nazwy lub usunąć pliku lub katalogu

Wybierz kartę Windows lub Linux w zależności od systemu operacyjnego klienta używanego do uzyskiwania dostępu do udziałów plików platformy Azure.

W systemie Windows mogą wystąpić następujące błędy.

Oddzielone dojścia do plików lub dzierżawy

Jednym z kluczowych celów udziału plików jest to, że wielu użytkowników i aplikacji może jednocześnie wchodzić w interakcje z plikami i katalogami w udziale. Aby ułatwić tę interakcję, udziały plików zapewniają kilka sposobów mediaowania dostępu do plików i katalogów.

Po otwarciu pliku z zainstalowanego udziału plików platformy Azure za pośrednictwem protokołu SMB aplikacja/system operacyjny żąda dojścia do pliku, który jest odwołaniem do pliku. Między innymi aplikacja określa tryb udostępniania plików, gdy żąda dojścia do pliku, co określa poziom wyłączności dostępu do pliku wymuszanego przez Azure Files:

  • None: masz wyłączny dostęp.
  • Read: inne osoby mogą odczytywać plik podczas jego otwierania.
  • Write: inne osoby mogą zapisywać w pliku podczas jego otwierania.
  • ReadWrite: kombinacja trybów udostępniania Read i Write .
  • Delete: inne osoby mogą usunąć plik podczas jego otwierania.

Protokół FileREST jako protokół bezstanowy nie ma pojęcia o dojściach do plików, ale zapewnia podobny mechanizm mediaowania dostępu do plików i folderów, których może używać skrypt, aplikacja lub usługa: dzierżawy plików. Gdy plik jest dzierżawiony, jest traktowany jako odpowiednik dojścia do pliku z trybem udostępniania plików .None

Mimo że dojścia do plików i dzierżawy służą do ważnego celu, czasami dojścia do plików i dzierżawy mogą być oddzielone. W takim przypadku może to spowodować problemy z modyfikowaniem lub usuwaniem plików. Mogą zostać wyświetlone komunikaty o błędach, takie jak:

  • Proces nie może uzyskać dostępu do pliku, ponieważ plik jest używany przez inny proces.
  • Nie można ukończyć akcji, ponieważ plik jest otwarty w innym programie.
  • Dokument jest zablokowany do edycji przez innego użytkownika.
  • Określony zasób jest oznaczony do usunięcia przez klienta SMB.

Rozwiązanie tego problemu zależy od tego, czy jest to spowodowane przez oddzielony dojście do pliku, czy dzierżawę.

Uwaga

Dzierżawy REST są używane przez aplikacje, aby zapobiec usuwaniu lub modyfikowaniu plików. Przed zerwaniem jakichkolwiek dzierżaw należy określić, która aplikacja je uzyskuje. W przeciwnym razie można przerwać działanie aplikacji.

Przyczyna 1

Dojście do pliku uniemożliwia modyfikowanie lub usuwanie pliku/katalogu. Aby wyświetlić otwarte dojścia, możesz użyć polecenia cmdlet Get-AzStorageFileHandle programu PowerShell.

Jeśli wszyscy klienci SMB zamknęli otwarte dojścia w pliku/katalogu, a problem nadal występuje, możesz wymusić zamknięcie dojścia pliku.

Rozwiązanie 1

Aby wymusić zamknięcie dojścia do pliku, użyj polecenia cmdlet Close-AzStorageFileHandle programu PowerShell.

Uwaga

Polecenia Get-AzStorageFileHandle cmdlet i Close-AzStorageFileHandle są zawarte w module Az PowerShell w wersji 2.4 lub nowszej. Aby zainstalować najnowszy moduł Az PowerShell, zobacz Instalowanie modułu Azure PowerShell.

Przyczyna 2

Dzierżawa pliku uniemożliwia modyfikowanie lub usuwanie pliku. Możesz sprawdzić, czy plik ma dzierżawę pliku za pomocą następujących poleceń programu PowerShell. Zastąp <resource-group>wartości , <storage-account>, <file-share>i <path-to-file> odpowiednimi wartościami dla środowiska.

# Set variables 
$resourceGroupName = "<resource-group>"
$storageAccountName = "<storage-account>"
$fileShareName = "<file-share>"
$fileForLease = "<path-to-file>"

# Get reference to storage account
$storageAccount = Get-AzStorageAccount `
        -ResourceGroupName $resourceGroupName `
        -Name $storageAccountName

# Get reference to file
$file = Get-AzStorageFile `
        -Context $storageAccount.Context `
        -ShareName $fileShareName `
        -Path $fileForLease

$fileClient = $file.ShareFileClient

# Check if the file has a file lease
$fileClient.GetProperties().Value

Jeśli plik ma dzierżawę, zwrócony obiekt powinien zawierać następujące właściwości:

LeaseDuration         : Infinite
LeaseState            : Leased
LeaseStatus           : Locked

Rozwiązanie 2

Aby usunąć dzierżawę z pliku, możesz zwolnić dzierżawę lub przerwać dzierżawę. Aby zwolnić dzierżawę, potrzebujesz identyfikatora dzierżawy, który jest ustawiany podczas tworzenia dzierżawy. Nie potrzebujesz identyfikatora LeaseId, aby przerwać dzierżawę.

W poniższym przykładzie pokazano, jak przerwać dzierżawę pliku wskazanego w przyczynie 2 (w tym przykładzie nadal są wykonywane zmienne programu PowerShell z przyczyny 2):

$leaseClient = [Azure.Storage.Files.Shares.Specialized.ShareLeaseClient]::new($fileClient)
$leaseClient.Break() | Out-Null

Nie można zainstalować migawki udziału plików platformy Azure w systemie Linux

"Błąd instalacji(22): nieprawidłowy argument" podczas próby zainstalowania migawki udziału plików platformy Azure w systemie Linux

Przyczyna

snapshot Jeśli opcja mount polecenia nie zostanie przekazana w rozpoznanym formacie, mount polecenie może zakończyć się niepowodzeniem z powodu tego błędu. Aby to potwierdzić, sprawdź komunikaty dziennika jądra (dmesg), a polecenie dmesg wyświetli wpis dziennika, taki jak cifs: Bad value for 'snapshot'.

Rozwiązanie

Upewnij się, że przekazujesz opcję snapshot dla mount polecenia w poprawnym formacie. Zapoznaj się ze stroną ręczną mount.cifs (np. man mount.cifs). Typowym błędem jest przekazywanie znacznika czasu GMT w niewłaściwym formacie, na przykład przy użyciu łączników lub dwukropków zamiast kropki. Aby uzyskać więcej informacji, zobacz Instalowanie migawki udziału plików.

"Zły token migawki" podczas próby zainstalowania migawki udziału plików platformy Azure w systemie Linux

Przyczyna

Jeśli opcja migawki mount jest przekazywana począwszy od @GMT, ale format jest nadal nieprawidłowy (na przykład przy użyciu łączników i dwukropków zamiast kropek), mount polecenie może zakończyć się niepowodzeniem z powodu tego błędu.

Rozwiązanie

Upewnij się, że przekazujesz znacznik czasu GMT w prawidłowym formacie, czyli @GMT-year.month.day-hour.minutes.seconds. Aby uzyskać więcej informacji, zobacz Instalowanie migawki udziału plików.

"Błąd instalacji(2): Brak takiego pliku lub katalogu" podczas próby zainstalowania migawki udziału plików platformy Azure

Przyczyna

Jeśli migawka, którą próbujesz zainstalować, nie istnieje, mount polecenie może zakończyć się niepowodzeniem z powodu tego błędu. Aby to potwierdzić, sprawdź komunikaty dziennika jądra (dmesg), a polecenie dmesg wyświetli wpis dziennika, taki jak:

[Mon Dec 12 10:34:09 2022] CIFS: Attempting to mount \\snapshottestlinux.file.core.windows.net\snapshot-test-share1
[Mon Dec 12 10:34:09 2022] CIFS: VFS: cifs_mount failed w/return code = -2

Rozwiązanie

Upewnij się, że migawka, którą próbujesz zainstalować, istnieje. Aby uzyskać więcej informacji na temat wyświetlania listy dostępnych migawek dla danego udziału plików platformy Azure, zobacz Instalowanie migawki udziału plików.

Błędy przydziału dysku lub sieci ze zbyt wielu otwartych dojść

Wybierz kartę Windows lub Linux w zależności od systemu operacyjnego klienta używanego do uzyskiwania dostępu do udziałów plików platformy Azure.

Błąd 1816 — Za mało limitu przydziału jest dostępny do przetworzenia tego polecenia

Przyczyna

Błąd 1816 występuje po osiągnięciu górnego limitu współbieżnych otwartych dojść dozwolonych dla pliku lub katalogu w udziale plików platformy Azure. Aby uzyskać więcej informacji, zobacz Azure Files skalowanie obiektów docelowych.

Rozwiązanie

Zmniejsz liczbę współbieżnych otwartych dojść, zamykając niektóre uchwyty, a następnie ponów próbę. Aby uzyskać więcej informacji, zobacz Microsoft Azure Storage listę kontrolną dotyczącą wydajności i skalowalności.

Aby wyświetlić otwarte dojścia dla udziału plików, katalogu lub pliku, użyj polecenia cmdlet Get-AzStorageFileHandle programu PowerShell.

Aby zamknąć otwarte dojścia dla udziału plików, katalogu lub pliku, użyj polecenia cmdlet Close-AzStorageFileHandle programu PowerShell.

Uwaga

Polecenia Get-AzStorageFileHandle cmdlet i Close-AzStorageFileHandle są zawarte w module Az PowerShell w wersji 2.4 lub nowszej. Aby zainstalować najnowszy moduł Az PowerShell, zobacz Instalowanie modułu Azure PowerShell.

ERROR_UNEXP_NET_ERR (59) podczas wykonywania jakichkolwiek operacji na dojściu

Przyczyna

Jeśli buforujesz/przechowujesz dużą liczbę otwartych dojść przez długi czas, może wystąpić błąd po stronie serwera z powodu ograniczania przepustowości. Gdy klient buforuje dużą liczbę dojść, wiele z tych dojść może jednocześnie przejść do fazy ponownego połączenia, tworząc kolejkę na serwerze, która musi zostać ograniczona. Logika ponawiania prób i ograniczanie przepustowości zaplecza w celu ponownego połączenia trwa dłużej niż limit czasu klienta. Ta sytuacja objawia się, że klient nie może używać istniejącego dojścia do żadnej operacji, a wszystkie operacje kończą się niepowodzeniem z ERROR_UNEXP_NET_ERR (59).

Istnieją również przypadki brzegowe, w których dojście klienta zostaje odłączone od serwera (na przykład awaria sieci trwająca kilka minut), co może spowodować ten błąd.

Rozwiązanie

Nie przechowuj dużej liczby uchwytów w pamięci podręcznej. Zamknij uchwyty, a następnie ponów próbę. Polecenia cmdlet programu PowerShell i Get-AzStorageFileHandleClose-AzStorageFileHandle umożliwiają wyświetlanie/zamykanie otwartych dojść.

Jeśli używasz udziałów plików platformy Azure do przechowywania kontenerów profilów lub obrazów dysków na potrzeby wdrożenia pulpitu wirtualnego na dużą skalę lub innych obciążeń, które otwierają dojścia do plików, katalogów i/lub katalogu głównego, możesz osiągnąć górne limity skalowania dla współbieżnych otwartych dojść. W takim przypadku użyj dodatkowego udziału plików platformy Azure i rozłóż kontenery lub obrazy między udziałami.

Błąd "Kopiujesz plik do miejsca docelowego, które nie obsługuje szyfrowania"

Gdy plik jest kopiowany przez sieć, plik jest odszyfrowywany na komputerze źródłowym, przesyłany w postaci zwykłego tekstu i ponownie szyfrowany w miejscu docelowym. Podczas próby skopiowania zaszyfrowanego pliku może jednak wystąpić następujący błąd: "Kopiujesz plik do miejsca docelowego, które nie obsługuje szyfrowania".

Przyczyna

Ten problem może wystąpić, jeśli używasz szyfrowania systemu plików (EFS). Pliki zaszyfrowane za pomocą funkcji BitLocker można skopiować do Azure Files. Jednak Azure Files nie obsługuje systemu plików NTFS EFS.

Obejście problemu

Aby skopiować plik za pośrednictwem sieci, należy go najpierw odszyfrować. Aby to zrobić, należy skorzystać z jednej z następujących metod:

  • Użyj polecenia copy /d . Umożliwia to zapisanie zaszyfrowanych plików jako odszyfrowanych plików w miejscu docelowym.
  • Ustaw następujący klucz rejestru:
    • Ścieżka = HKLM\Software\Policies\Microsoft\Windows\System
    • Typ wartości = DWORD
    • Name = CopyFileAllowDecryptedRemoteDestination
    • Wartość = 1

Należy pamiętać, że ustawienie klucza rejestru ma wpływ na wszystkie operacje kopiowania wykonywane w udziałach sieciowych.

Błąd ConditionHeadersNotSupported z aplikacji internetowej przy użyciu Azure Files z przeglądarki

Błąd ConditionHeadersNotSupported występuje, gdy dostęp do zawartości hostowanej w Azure Files za pośrednictwem aplikacji korzystającej z nagłówków warunkowych, takich jak przeglądarka internetowa, kończy się niepowodzeniem. Błąd wskazuje, że nagłówki warunków nie są obsługiwane.

Zrzut ekranu przedstawiający komunikat o błędzie ConditionHeadersNotSupported.

Przyczyna

Nagłówki warunkowe nie są jeszcze obsługiwane. Aplikacje implementujące je będą musiały zażądać pełnego pliku za każdym razem, gdy będzie uzyskiwany dostęp do pliku.

Obejście problemu

Po przekazaniu nowego pliku właściwość CacheControl domyślnie nie jest pamięcią podręczną. Aby wymusić na aplikacji żądanie pliku za każdym razem, właściwość CacheControl pliku musi zostać zaktualizowana z braku pamięci podręcznej do właściwości no-cache, no-store i must-revalidate.To force the application to request the file every time, the file's CacheControl property must be updated from no-cache to no-cache, no-store, must-revalidate. Można to osiągnąć przy użyciu Eksplorator usługi Azure Storage.

Screeshot, który pokazuje właściwość pliku CacheControl.

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 platformy Azure.