Rozpoczynanie pracy z Magazynem plików Azure w systemie Windows

Porada

Wypróbuj program Microsoft Azure Storage Explorer

Microsoft Azure Storage Explorer jest darmową aplikacją autonomiczną oferowaną przez firmę Microsoft, która umożliwia wizualną pracę z danymi w usłudze Azure Storage w systemie Windows, OS X i Linux.

Omówienie

Azure File Storage to usługa, która umożliwia korzystanie z udziałów plików w chmurze przy użyciu standardowego protokołu bloku komunikatów serwera (SMB). Obsługiwane są wersje 2.1 i 3.0 protokołu SMB. W usłudze Magazyn plików Azure można migrować starsze aplikacje korzystające z udziałów plików na platformę Azure szybko i bez kosztownych modyfikacji oprogramowania. Aplikacje uruchomione na maszynach wirtualnych lub w ramach usług w chmurze platformy Azure, a także na klientach lokalnych mogą instalować udziały plików w chmurze tak samo jak aplikacja na komputerze instalująca typowy udział SMB. Dowolna liczba składników aplikacji może następnie równocześnie zainstalować udział Magazynu plików i uzyskiwać do niego dostęp.

Ponieważ udział Magazynu plików to standardowy udział plików SMB, aplikacje działające na platformie Azure mają dostęp do danych w udziale za pośrednictwem interfejsów API we/wy systemu plików. Dzięki temu programiści mogą wykorzystać istniejący kod i własne umiejętności, aby zmigrować istniejące aplikacje. Specjaliści IT mogą użyć poleceń cmdlet programu PowerShell do tworzenia i instalowania udziałów magazynu plików oraz do zarządzania nimi w ramach administracji aplikacjami platformy Azure.

Udziały plików platformy Azure można tworzyć przy użyciu witryny Azure Portal, poleceń cmdlet programu PowerShell usługi Azure Storage, bibliotek klienckich usługi Azure Storage lub interfejsu API REST usługi Azure Storage. Ponadto ponieważ te udziały plików są udziałami SMB, można z nich korzystać za pośrednictwem standardowych i znanych interfejsów API systemu plików.

Aby uzyskać informacje na temat używania usługi File Storage w systemie Linux, zobacz How to use Azure File Storage with Linux (Jak korzystać z usługi Azure File Storage w systemie Linux).

Aby uzyskać szczegółowe informacje o celach dotyczących skalowalności i wydajności usługi File Storage, zobacz Azure Storage Scalability and Performance Targets (Cele dotyczące skalowalności i wydajności usługi Azure Storage).

Uwaga

Zaleca się, by wykonywać instrukcje z tego samouczka przy użyciu najnowszej wersji biblioteki klienta usługi Azure Storage dla programu .NET. Najnowszą wersją biblioteki jest 7.x, dostępna do pobrania przy użyciu narzędzia Nuget. Źródło biblioteki klienta jest dostępne w portalu GitHub.

Jeśli używasz emulatora magazynu, pamiętaj, że wersja 7.x biblioteki klienta wymaga co najmniej wersji 4.3 emulatora

Co to jest usługa Azure File Storage?

Usługa File Storage oferuje współużytkowany magazyn dla aplikacji używających standardowego protokołu SMB 2.1 lub SMB 3.0. Usługa Microsoft Azure Virtual Machines i usługi w chmurze mogą udostępniać dane między składnikami aplikacji za pośrednictwem zainstalowanych udziałów i aplikacji lokalnych, które mogą uzyskiwać dostęp do danych plików w udziale za pomocą interfejsu API usługi File Storage.

Aplikacje uruchomione na maszynach wirtualnych lub w ramach usług w chmurze platformy Azure mogą zainstalować udziały usługi File Storage, aby uzyskać dostęp do danych plików tak samo jak aplikacja na komputerze instalująca typowy udział SMB. Dowolna liczba maszyn wirtualnych lub ról platformy Azure może następnie równocześnie zainstalować udział usługi File Storage i uzyskiwać do niego dostęp.

Ponieważ udział usługi File Storage to standardowy udział plików na platformie Azure przy użyciu protokołu SMB, aplikacje działające na platformie Azure mają dostęp do danych w udziale za pośrednictwem interfejsów API we/wy plików. Dzięki temu programiści mogą wykorzystać istniejący kod i własne umiejętności, aby zmigrować istniejące aplikacje. Specjaliści IT mogą użyć poleceń cmdlet programu PowerShell do tworzenia i instalowania udziałów magazynu plików oraz do zarządzania nimi w ramach administracji aplikacjami platformy Azure. W tym podręczniku przedstawiono oba przykłady.

Najczęstsze zastosowania usługi File Storage to:

  • Migracja lokalnych aplikacji korzystających z udziałów plików w celu uruchomienia na maszynach wirtualnych lub w usługach w chmurze platformy Azure, bez kosztownego ponownego zapisu
  • Przechowywanie udostępnionych ustawień aplikacji, na przykład w plikach konfiguracji
  • Przechowywanie danych diagnostycznych, takich jak dzienniki, metryki i zrzuty awaryjne we współdzielonej lokalizacji
  • Przechowywanie narzędzi i programów potrzebnych do tworzenia maszyn wirtualnych lub usług i administrowania nimi w chmurze platformy Azure

Pojęcia dotyczące usługi File Storage

Usługa File Storage zawiera następujące składniki:

files-concepts

  • Konto magazynu: cały dostęp do usługi Azure Storage odbywa się przez konto magazynu. Aby uzyskać szczegółowe informacje na temat pojemności konta magazynu, zobacz temat Cele dotyczące skalowalności i wydajności usługi Azure Storage.
  • Udział: udział usługi File Storage jest udziałem plików SMB na platformie Azure. Wszystkie pliki i katalogi muszą być tworzone w udziale nadrzędnym. Konto może zawierać nieograniczoną liczbę udziałów, a udział może obejmować nieograniczoną liczbę plików. Maksymalna całkowita objętość udziału plików to 5 TB.
  • Katalog: opcjonalna hierarchia katalogów.
  • Plik: plik w udziale. Plik może mieć maksymalnie 1 TB pojemności.
  • Format adresu URL: adresy URL plików mają następujący format:
    https://<storage account>.file.core.windows.net/<share>/<directory/directories>/<file>

    Następującego przykładowego adresu URL można użyć do udostępnienia jednego z plików na powyższym diagramie:
    http://samples.file.core.windows.net/logs/CustomLogs/Log1.txt

Szczegółowe informacje o nazewnictwie udziałów, katalogów i plików można znaleźć w temacie Naming and Referencing Shares, Directories, Files, and Metadata (Nazywanie i odwoływanie się do udziałów, katalogów, plików i metadanych).

Wideo: Korzystanie z usługi Magazyn plików Azure w systemie Windows

W tym filmie przedstawiamy, jak utworzyć udziały plików platformy Azure i korzystać z nich w systemie Windows.

Informacje o tym samouczku

W tym samouczku wprowadzającym zostały omówione podstawy korzystania z usługi Magazyn plików Microsoft Azure. W tym samouczku zostaną wykonane następujące czynności:

  • Utworzenie nowego udziału plików platformy Azure za pomocą Portalu Azure lub programu PowerShell, dodanie katalogu, przekazanie pliku lokalnego do udziału oraz wyświetlenie listy plików w katalogu.
  • Instalacja udziału plików tak samo jak instaluje się udziały SMB.
  • Uzyskanie dostępu do udziału pliku z poziomu aplikacji lokalnej za pomocą biblioteki klienta usługi Azure Storage dla programu .NET. Utworzenie aplikacji konsolowej i wykonanie następujących akcji dotyczących udziału plików:
    • Zapisanie zawartości pliku w udziale w oknie konsoli.
    • Ustawienie limitu przydziału (maksymalnego rozmiaru) udziału plików.
    • Utworzenie sygnatury dostępu współdzielonego dla pliku, która używa zasad dostępu współdzielonego zdefiniowanych w udziale.
    • Skopiowanie pliku do innego pliku w tym samym koncie magazynu.
    • Skopiowanie pliku do obiektu blob w tym samym koncie magazynu.
  • Rozwiązywanie problemów przy użyciu metryk usługi Azure Storage.

Usługa Magazyn plików jest teraz obsługiwana dla wszystkich kont magazynu, można więc użyć istniejącego konta magazynu lub utworzyć nowe konto. Aby uzyskać informacje dotyczące tworzenia nowego konta magazynu, zobacz How to create a storage account (Jak utworzyć konto magazynu).

Zarządzanie udziałem plików za pomocą Portalu Azure

Udziałami plików można zarządzać z poziomu interfejsu użytkownika w witrynie Azure Portal. Portal umożliwia wykonywanie następujących czynności:

  • Tworzenie udziału plików
  • Przekazywanie i pobieranie plików do i z udziału plików
  • Monitorowanie rzeczywistego użycia każdego udziału plików
  • Dostosowywanie limitu przydziału rozmiaru udziału
  • Instalowanie udziału plików z poziomu klienta systemu Windows za pomocą polecenia net use

Tworzenie udziału plików

  1. Zaloguj się do Portalu Azure.
  2. W menu nawigacyjnym kliknij pozycję Konta usługi Storage lub Konta usługi Storage (klasyczne).

    Zrzut ekranu pokazujący sposób tworzenia udziału plików w portalu

  3. Wybierz konto magazynu.

    Zrzut ekranu pokazujący sposób tworzenia udziału plików w portalu

  4. Wybierz usługę „Pliki”.

    Zrzut ekranu pokazujący sposób tworzenia udziału plików w portalu

  5. Kliknij pozycję „Udziały plików”, a następnie kliknij link w celu utworzenia pierwszego udziału plików.

    Zrzut ekranu pokazujący sposób tworzenia udziału plików w portalu

  6. Wypełnij pola nazwy i rozmiaru udziału plików (do 5120 GB) w celu utworzenia pierwszego udziału plików. Po utworzeniu udziału plików możesz go zainstalować z dowolnego systemu plików, który obsługuje protokół SMB 2.1 lub SMB 3.0.

    Zrzut ekranu pokazujący sposób tworzenia udziału plików w portalu

Przekazywanie i pobieranie plików

  1. Wybierz utworzony udział plików.

    Zrzut ekranu pokazujący sposób przekazywania i pobierania plików z portalu

  2. Kliknij przycisk Przekaż, aby otworzyć interfejs użytkownika funkcji przekazywania plików.

    Zrzut ekranu pokazujący sposób przekazywania plików z portalu

  3. Kliknij prawym przyciskiem myszy plik i wybierz polecenie Pobierz, aby pobrać go do udziału lokalnego.

    Zrzut ekranu pokazujący sposób pobierania plików z portalu

Zarządzanie udziałem plików

  1. Kliknij przycisk Limit przydziału, aby zmienić rozmiar udziału plików (do 5120 GB).

    Zrzut ekranu pokazujący sposób konfigurowania limitu przydziału udziału plików

  2. Kliknij przycisk Połącz, aby wyświetlić wiersz polecenia umożliwiający zainstalowanie udziału plików z systemu Windows.

    Zrzut ekranu pokazujący sposób instalacji udziału plików

    Zrzut ekranu pokazujący sposób instalacji udziału plików

    Porada

    Aby znaleźć klucz dostępu do konta magazynu na potrzeby instalacji, kliknij przycisk Ustawienia w sekcji konta magazynu, a następnie kliknij pozycję Klucze dostępu.

    Zrzut ekranu pokazujący, gdzie znaleźć klucz dostępu do konta magazynu

    Zrzut ekranu pokazujący, gdzie znaleźć klucz dostępu do konta magazynu

Zarządzanie udziałem plików za pomocą programu PowerShell

Tworzenie udziałów plików i zarządzanie nimi jest także możliwe przy użyciu programu Azure PowerShell.

Instalowanie poleceń cmdlet programu PowerShell dla usługi Azure Storage

Aby przygotować się do użycia programu Azure PowerShell, pobierz i zainstaluj polecenia cmdlet tego programu. Aby uzyskać informacje o punkcie instalacji oraz instrukcje dotyczące instalacji, zobacz How to install and configure Azure PowerShell (Jak zainstalować i skonfigurować program Azure PowerShell).

Uwaga

Zalecamy pobranie i zainstalowanie najnowszej wersji modułu Azure PowerShell (lub uaktualnienie do tej wersji).

Otwórz okno programu Azure PowerShell, klikając przycisk Start i wpisując polecenie Windows PowerShell. W oknie programu PowerShell zostanie załadowany moduł Azure PowerShell.

Tworzenie kontekstu konta magazynu i klucza

Teraz utworzymy kontekst konta magazynu. W kontekście zawarta jest nazwa konta magazynu oraz klucz konta. Aby uzyskać instrukcje dotyczące kopiowania klucza konta z witryny Azure Portal, zobacz Wyświetlanie i kopiowanie kluczy dostępu do magazynu.

W poniższym przykładzie zastąp zmienne storage-account-name i storage-account-key nazwą konta magazynu i kluczem.

# create a context for account and key
$ctx=New-AzureStorageContext storage-account-name storage-account-key

Tworzenie nowego udziału plików

Następnym krokiem jest utworzenie nowego udziału o nazwie logs.

# create a new share
$s = New-AzureStorageShare logs -Context $ctx

Masz już udział plików w usłudze Magazyn plików. Teraz dodamy katalog i plik.

Ważne

Nazwa udziału plików musi się składać z samych małych liter. Szczegółowe informacje o nazwach plików i udziałów plików można znaleźć w temacie Naming and Referencing Shares, Directories, Files, and Metadata (Nazywanie i odwoływanie się do udziałów, katalogów, plików i metadanych).

Tworzenie katalogu w udziale plików

Następnym krokiem będzie utworzenie katalogu w udziale. W poniższym przykładzie katalog nosi nazwę CustomLogs.

# create a directory in the share
New-AzureStorageDirectory -Share $s -Path CustomLogs

Przekazywanie pliku lokalnego do katalogu

Teraz przekażemy plik lokalny do katalogu. W poniższym przykładzie plik zostanie przekazany z lokalizacji C:\temp\Log1.txt. Zmień ścieżkę pliku tak, aby wskazywała prawidłowy plik na komputerze lokalnym.

# upload a local file to the new directory
Set-AzureStorageFileContent -Share $s -Source C:\temp\Log1.txt -Path CustomLogs

Wyświetlanie listy plików w katalogu

Aby zobaczyć plik w katalogu, możesz wyświetlić listę wszystkich plików w tym katalogu. To polecenie zwraca pliki i podkatalogi (jeśli istnieją) w katalogu CustomLogs.

# list files in the new directory
Get-AzureStorageFile -Share $s -Path CustomLogs | Get-AzureStorageFile

Polecenie Get-AzureStorageFile zwraca listę plików i katalogów dla dowolnego przekazanego obiektu katalogu. Polecenie „Get-AzureStorageFile -Share $s” zwraca listę plików i katalogów w katalogu głównym. Aby uzyskać listę plików w podkatalogu, trzeba przekazać nazwę podkatalogu do polecenia Get-AzureStorageFile. Tak właśnie działa powyższy zapis — pierwsza część polecenia do kreski pionowej zwraca wystąpienie katalogu dla podkatalogu CustomLogs. Następnie jest ono przekazywane do polecenia Get-AzureStorageFile, które zwraca pliki i katalogi w podkatalogu CustomLogs.

Kopiowanie plików

Począwszy od wersji 0.9.7 programu Azure PowerShell, można kopiować pliki do innych plików, pliki do obiektów blob oraz obiekty blob do plików. Poniżej przedstawiamy sposób wykonywania tych operacji kopiowania za pomocą poleceń cmdlet programu PowerShell.

# copy a file to the new directory
Start-AzureStorageFileCopy -SrcShareName srcshare -SrcFilePath srcdir/hello.txt -DestShareName destshare -DestFilePath destdir/hellocopy.txt -Context $srcCtx -DestContext $destCtx

# copy a blob to a file directory
Start-AzureStorageFileCopy -SrcContainerName srcctn -SrcBlobName hello2.txt -DestShareName hello -DestFilePath hellodir/hello2copy.txt -DestContext $ctx -Context $ctx

Instalowanie udziału plików

Po dodaniu obsługi protokołu SMB 3.0 usługa Magazyn plików obsługuje teraz szyfrowanie i dojścia stałe od klientów protokołu SMB 3.0. Obsługa szyfrowania oznacza, że klienci protokołu SMB 3.0 mogą zainstalować udział plików z dowolnego miejsca, takiego jak:

  • Maszyna wirtualna platformy Azure w tym samym regionie (również obsługiwana przez protokół SMB 2.1)
  • Maszyna wirtualna platformy Azure w innym regionie (tylko protokół SMB 3.0)
  • Lokalna aplikacja kliencka (tylko protokół SMB 3.0)

Gdy klient uzyskuje dostęp do usługi Magazyn plików, używana wersja protokołu SMB zależy od wersji protokołu SMB obsługiwanej przez system operacyjny. Poniższa tabela zawiera podsumowanie obsługi protokołu SMB dla klientów systemu Windows. Więcej szczegółów na temat wersji protokołu SMB zawiera ten blog.

Klient systemu Windows Obsługiwana wersja protokołu SMB
Windows 7 SMB 2.1
Windows Server 2008 R2 SMB 2.1
Windows 8 SMB 3.0
Windows Server 2012 SMB 3.0
Windows Server 2012 R2 SMB 3.0
Windows 10 SMB 3.0

Instalowanie udziału plików z maszyny wirtualnej platformy Azure z systemem Windows

Aby zademonstrować sposób instalacji udziału plików na platformie Azure, utworzymy teraz maszynę wirtualną platformy Azure z systemem Windows i połączymy się z nią zdalnie w celu zainstalowania udziału

  1. Najpierw utwórz nową maszynę wirtualną platformy Azure, postępując zgodnie z instrukcjami w artykule Tworzenie pierwszej maszyny wirtualnej z systemem Windows w witrynie Azure Portal.
  2. Następnie nawiąż połączenie zdalne z maszyną wirtualną, postępując zgodnie z instrukcjami w artykule Logowanie na maszynie wirtualnej z systemem Windows za pomocą witryny Azure Portal.
  3. Otwórz okno programu PowerShell na maszynie wirtualnej.

Utrwalanie poświadczeń konta magazynu dla maszyny wirtualnej

Przed zainstalowaniem w udziale plików najpierw musisz utrwalić poświadczenia konta magazynu na maszynie wirtualnej. Ten krok umożliwia systemowi Windows automatyczne ponowne połączenie z udziałem plików po ponownym rozruchu maszyny wirtualnej. Aby utrwalić poświadczenia konta, uruchom polecenie cmdkey w oknie programu PowerShell na maszynie wirtualnej. Zastąp ciąg <storage-account-name> nazwą konta magazynu, a ciąg <storage-account-key> kluczem konta magazynu.

cmdkey /add:<storage-account-name>.file.core.windows.net /user:<storage-account-name> /pass:<storage-account-key>

System Windows będzie teraz ponownie łączyć się z udziałem plików po ponownym rozruchu maszyny wirtualnej. Możesz sprawdzić, czy udział został ponownie podłączony, uruchamiając polecenie net use z okna programu PowerShell.

Pamiętaj, że poświadczenia są trwałe tylko w kontekście, w którym uruchomiono polecenie cmdkey. Jeśli tworzysz aplikację, która działa jako usługa, musisz utrwalić poświadczenia także w tym kontekście.

Instalowanie udziału plików za pomocą utrwalonych poświadczeń

Po nawiązaniu połączenia zdalnego z maszyną wirtualną można uruchomić polecenie net use, aby zainstalować udział plików, używając następującej składni. Zastąp ciąg <storage-account-name> nazwą konta magazynu, a ciąg <share-name> nazwą udziału usługi File Storage.

net use <drive-letter>: \\<storage-account-name>.file.core.windows.net\<share-name>

example :
net use z: \\samples.file.core.windows.net\logs

Ponieważ poświadczenia konta magazynu zostały utrwalone w poprzednim kroku, nie trzeba podawać ich w poleceniu net use. Jeśli poświadczenia nie zostały jeszcze utrwalone, dołącz je jako parametr przekazywany do polecenia net use, jak pokazano w poniższym przykładzie.

net use <drive-letter>: \\<storage-account-name>.file.core.windows.net\<share-name> /u:<storage-account-name> <storage-account-key>

example :
net use z: \\samples.file.core.windows.net\logs /u:samples <storage-account-key>

Teraz możesz pracować z udziałem usługi File Storage z poziomu maszyny wirtualnej tak samo jak z każdym innym dyskiem. Możesz wydawać standardowe polecenia dotyczące plików z wiersza polecenia lub wyświetlić zainstalowany udział i jego zawartość w Eksploratorze plików. Ponadto możesz uruchomić na maszynie wirtualnej kod, który będzie uzyskiwać dostęp do udziału plików przy użyciu standardowych interfejsów API we/wy systemu Windows dotyczących plików, np. udostępnianych przez przestrzenie nazw System.IO w programie .NET Framework.

Udział plików można również zainstalować z poziomu roli uruchomionej w usłudze w chmurze na platformie Azure, łącząc się z tą rolą zdalnie.

Instalowanie udziału plików z klienta lokalnego z systemem Windows

Aby zainstalować udział plików z klienta lokalnego, musisz najpierw wykonać następujące czynności:

  • Zainstaluj wersję systemu Windows, która obsługuje protokół SMB 3.0. System Windows będzie korzystać z szyfrowania w protokole SMB 3.0 do bezpiecznego transferu danych między klientem lokalnym a udziałem plików na platformie Azure w chmurze.
  • Otwórz dostęp do Internetu przez port 445 (dla ruchu wychodzącego TCP) w sieci lokalnej zgodnie z wymaganiami protokołu SMB.
Uwaga

Niektórzy usługodawcy internetowi mogą blokować port 445 — może więc być konieczny kontakt z usługodawcą.

Pisanie kodu z użyciem usługi Magazyn plików

Aby napisać kod, który wywołuje usługę Magazyn plików, można użyć bibliotek klienckich magazynu dla platform .NET i Java lub interfejsu API REST usługi Magazyn Azure. W przykładzie w tej sekcji pokazano sposób pracy z udziałem plików przy użyciu biblioteki klienta usługi Storage Azure dla programu .NET z prostej aplikacji konsolowej działającej na komputerze.

Tworzenie aplikacji konsolowej i uzyskiwanie zestawu

Aby utworzyć nową aplikację konsolową w programie Visual Studio i zainstalować pakiet NuGet zawierający bibliotekę klienta usługi Azure Storage:

  1. W programie Visual Studio wybierz pozycje Plik > Nowy projekt, a następnie wybierz pozycje Windows > Aplikacja konsolowa z listy szablonów Visual C#.
  2. Podaj nazwę aplikacji konsolowej, a następnie kliknij przycisk OK.
  3. Po utworzeniu projektu kliknij go prawym przyciskiem myszy w Eksploratorze rozwiązań i wybierz polecenie Zarządzaj pakietami NuGet. Wyszukaj w trybie online ciąg „WindowsAzure.Storage”, a następnie kliknij przycisk Zainstaluj, aby zainstalować pakiet i zależności biblioteki klienta usługi Azure Storage dla programu .NET.

W przykładach kodu w tym artykule jest także używana biblioteka programu Microsoft Azure Configuration Manager, za pomocą której z pliku app.config aplikacji konsolowej pobierane są parametry połączenia magazynu. Program Azure Configuration Manager umożliwia pobranie parametrów połączenia w środowisku uruchomieniowym niezależnie od tego, czy aplikacja działa na platformie Microsoft Azure, na komputerze, urządzeniu przenośnym czy w sieci Web.

Aby zainstalować pakiet programu Azure Configuration Manager, kliknij prawym przyciskiem myszy projekt w Eksploratorze rozwiązań i wybierz polecenie Zarządzaj pakietami NuGet. Wyszukaj w trybie online ciąg „ConfigurationManager” i kliknij przycisk Zainstaluj, aby zainstalować pakiet.

Użycie programu Azure Configuration Manager jest opcjonalne. Można także użyć interfejsu API, np. klasy ConfigurationManager programu .NET Framework.

Zapisywanie poświadczeń konta magazynu w pliku app.config

Teraz zapiszemy poświadczenia w pliku app.config projektu. Zmodyfikuj plik app.config, jak pokazano w poniższym przykładzie, zastępując ciąg myaccount nazwą konta magazynu, a ciąg mykey kluczem konta magazynu.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <appSettings>
        <add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=StorageAccountKeyEndingIn==" />
    </appSettings>
</configuration>
Uwaga

Najnowsza wersja emulatora magazynu Azure nie obsługuje usługi Magazyn plików. Aby pracować z usługą Magazyn plików, parametry połączenia muszą wskazywać konto magazynu platformy Azure w chmurze.

Dodawanie deklaracji przestrzeni nazw

Otwórz plik program.cs w Eksploratorze rozwiązań i dodaj następujące deklaracje przestrzeni nazw na początku pliku.

using Microsoft.Azure; // Namespace for Azure Configuration Manager
using Microsoft.WindowsAzure.Storage; // Namespace for Storage Client Library
using Microsoft.WindowsAzure.Storage.Blob; // Namespace for Blob storage
using Microsoft.WindowsAzure.Storage.File; // Namespace for File storage

Biblioteka programu Microsoft Azure Configuration Manager dla platformy .NET zawiera klasę do analizowania parametrów połączenia w pliku konfiguracji. Klasa CloudConfigurationManager analizuje ustawienia konfiguracji niezależnie od tego, czy aplikacja kliencka jest uruchomiona na komputerze, urządzeniu przenośnym, na maszynie wirtualnej platformy Azure, czy w usłudze w chmurze platformy Azure.

Aby zapewnić odwołanie do pakietu CloudConfigurationManager, dodaj następującą dyrektywę using:

using Microsoft.Azure;    //Namespace for CloudConfigurationManager

Oto przykład, w którym przedstawiono, jak pobrać parametry połączenia z pliku konfiguracji:

// Parse the connection string and return a reference to the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

Użycie programu Azure Configuration Manager jest opcjonalne. Możesz także użyć interfejsu API, np. klasy ConfigurationManager programu .NET Framework.

Programowy dostęp do udziału plików

Teraz dodamy poniższy kod do metody Main() (po kodzie pokazanym powyżej) w celu pobrania parametrów połączenia. Ten kod pobiera odwołanie do pliku utworzonego wcześniej i wyświetla jego zawartość w oknie konsoli.

// Create a CloudFileClient object for credentialed access to File storage.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("logs");

// Ensure that the share exists.
if (share.Exists())
{
    // Get a reference to the root directory for the share.
    CloudFileDirectory rootDir = share.GetRootDirectoryReference();

    // Get a reference to the directory we created previously.
    CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("CustomLogs");

    // Ensure that the directory exists.
    if (sampleDir.Exists())
    {
        // Get a reference to the file we created previously.
        CloudFile file = sampleDir.GetFileReference("Log1.txt");

        // Ensure that the file exists.
        if (file.Exists())
        {
            // Write the contents of the file to the console window.
            Console.WriteLine(file.DownloadTextAsync().Result);
        }
    }
}

Aby zobaczyć dane wyjściowe, uruchom aplikację konsolową.

Ustawianie maksymalnego rozmiaru udziału plików

Począwszy od wersji 5.x biblioteki klienta usługi Azure Storage, można ustawić limit przydziału (lub maksymalny rozmiar) udziału plików w gigabajtach. Można również sprawdzić, ile danych jest obecnie przechowywanych w udziale.

Ustawiając limit przydziału dla udziału, można ograniczyć całkowity rozmiar plików przechowywanych w udziale. Jeśli całkowity rozmiar plików w udziale przekroczy ustawiony limit przydziału, klienci nie będą mogli zwiększyć rozmiaru istniejących plików ani tworzyć nowych plików (chyba że pliki będą puste).

W poniższym przykładzie pokazano, jak sprawdzić bieżące użycie udziału oraz jak ustawić limit przydziału w udziale.

// Parse the connection string for the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create a CloudFileClient object for credentialed access to File storage.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("logs");

// Ensure that the share exists.
if (share.Exists())
{
    // Check current usage stats for the share.
    // Note that the ShareStats object is part of the protocol layer for the File service.
    Microsoft.WindowsAzure.Storage.File.Protocol.ShareStats stats = share.GetStats();
    Console.WriteLine("Current share usage: {0} GB", stats.Usage.ToString());

    // Specify the maximum size of the share, in GB.
    // This line sets the quota to be 10 GB greater than the current usage of the share.
    share.Properties.Quota = 10 + stats.Usage;
    share.SetProperties();

    // Now check the quota for the share. Call FetchAttributes() to populate the share's properties.
    share.FetchAttributes();
    Console.WriteLine("Current share quota: {0} GB", share.Properties.Quota);
}

Generowanie sygnatury dostępu współdzielonego dla pliku lub udziału plików

Począwszy od wersji 5.x biblioteki klienta usługi Azure Storage, można wygenerować sygnaturę dostępu współdzielonego dla udziału plików lub dla pojedynczego pliku. Można też utworzyć zasady dostępu współdzielonego w udziale plików na potrzeby zarządzania sygnaturami dostępu współdzielonego. Utworzenie zasad dostępu współdzielonego jest zalecane, ponieważ umożliwia cofnięcie sygnatur w przypadku zagrożenia bezpieczeństwa.

W poniższym przykładzie tworzone są zasady dostępu współdzielonego w udziale. Następnie za pomocą tych zasad nakładane są ograniczenia na sygnatury dostępu współdzielonego w pliku w udziale.

// Parse the connection string for the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create a CloudFileClient object for credentialed access to File storage.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("logs");

// Ensure that the share exists.
if (share.Exists())
{
    string policyName = "sampleSharePolicy" + DateTime.UtcNow.Ticks;

    // Create a new shared access policy and define its constraints.
    SharedAccessFilePolicy sharedPolicy = new SharedAccessFilePolicy()
        {
            SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),
            Permissions = SharedAccessFilePermissions.Read | SharedAccessFilePermissions.Write
        };

    // Get existing permissions for the share.
    FileSharePermissions permissions = share.GetPermissions();

    // Add the shared access policy to the share's policies. Note that each policy must have a unique name.
    permissions.SharedAccessPolicies.Add(policyName, sharedPolicy);
    share.SetPermissions(permissions);

    // Generate a SAS for a file in the share and associate this access policy with it.
    CloudFileDirectory rootDir = share.GetRootDirectoryReference();
    CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("CustomLogs");
    CloudFile file = sampleDir.GetFileReference("Log1.txt");
    string sasToken = file.GetSharedAccessSignature(null, policyName);
    Uri fileSasUri = new Uri(file.StorageUri.PrimaryUri.ToString() + sasToken);

    // Create a new CloudFile object from the SAS, and write some text to the file.
    CloudFile fileSas = new CloudFile(fileSasUri);
    fileSas.UploadText("This write operation is authenticated via SAS.");
    Console.WriteLine(fileSas.DownloadText());
}

Aby uzyskać więcej informacji na temat tworzenia i używania sygnatur dostępu współdzielonego, zobacz Using Shared Access Signatures (SAS) (Używanie sygnatur dostępu współdzielonego (SAS)) oraz Create and use a SAS with Blob storage (Tworzenie i używanie sygnatury dostępu współdzielonego w Magazynie obiektów Blob).

Kopiowanie plików

Począwszy od wersji 5.x biblioteki klienta usługi Azure Storage, można kopiować pliki do innych plików, pliki do obiektów blob oraz obiekty blob do plików. W kolejnych sekcjach pokażemy, jak programowo wykonywać te operacje kopiowania.

Do kopiowania plików do innych plików oraz obiektów blob do plików i odwrotnie można także użyć narzędzia AzCopy. Zobacz: Transfer danych za pomocą narzędzia wiersza polecenia AzCopy.

Uwaga

W przypadku kopiowania obiektu blob do pliku lub pliku do obiektu blob konieczne jest uwierzytelnienie obiektu źródłowego za pomocą sygnatury dostępu współdzielonego, nawet jeśli kopiowanie odbywa się w ramach tego samego konta magazynu.

Kopiowanie pliku do innego pliku

Poniższy przykładowy kod kopiuje plik do innego pliku w tym samym udziale. Ponieważ ta operacja kopiowania jest wykonywana w ramach tego samego konta magazynu, można użyć uwierzytelniania przy użyciu klucza wspólnego.

// Parse the connection string for the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create a CloudFileClient object for credentialed access to File storage.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("logs");

// Ensure that the share exists.
if (share.Exists())
{
    // Get a reference to the root directory for the share.
    CloudFileDirectory rootDir = share.GetRootDirectoryReference();

    // Get a reference to the directory we created previously.
    CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("CustomLogs");

    // Ensure that the directory exists.
    if (sampleDir.Exists())
    {
        // Get a reference to the file we created previously.
        CloudFile sourceFile = sampleDir.GetFileReference("Log1.txt");

        // Ensure that the source file exists.
        if (sourceFile.Exists())
        {
            // Get a reference to the destination file.
            CloudFile destFile = sampleDir.GetFileReference("Log1Copy.txt");

            // Start the copy operation.
            destFile.StartCopy(sourceFile);

            // Write the contents of the destination file to the console window.
            Console.WriteLine(destFile.DownloadText());
        }
    }
}

Kopiowanie pliku do obiektu blob

Poniższy przykładowy kod tworzy plik i kopiuje go do obiektu blob w ramach tego samego konta magazynu. Dla pliku źródłowego tworzona jest sygnatura dostępu współdzielonego, za pomocą której usługa uwierzytelnia dostęp do tego pliku podczas operacji kopiowania.

// Parse the connection string for the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create a CloudFileClient object for credentialed access to File storage.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Create a new file share, if it does not already exist.
CloudFileShare share = fileClient.GetShareReference("sample-share");
share.CreateIfNotExists();

// Create a new file in the root directory.
CloudFile sourceFile = share.GetRootDirectoryReference().GetFileReference("sample-file.txt");
sourceFile.UploadText("A sample file in the root directory.");

// Get a reference to the blob to which the file will be copied.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("sample-container");
container.CreateIfNotExists();
CloudBlockBlob destBlob = container.GetBlockBlobReference("sample-blob.txt");

// Create a SAS for the file that's valid for 24 hours.
// Note that when you are copying a file to a blob, or a blob to a file, you must use a SAS
// to authenticate access to the source object, even if you are copying within the same
// storage account.
string fileSas = sourceFile.GetSharedAccessSignature(new SharedAccessFilePolicy()
{
    // Only read permissions are required for the source file.
    Permissions = SharedAccessFilePermissions.Read,
    SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24)
});

// Construct the URI to the source file, including the SAS token.
Uri fileSasUri = new Uri(sourceFile.StorageUri.PrimaryUri.ToString() + fileSas);

// Copy the file to the blob.
destBlob.StartCopy(fileSasUri);

// Write the contents of the file to the console window.
Console.WriteLine("Source file contents: {0}", sourceFile.DownloadText());
Console.WriteLine("Destination blob contents: {0}", destBlob.DownloadText());

W ten sam sposób można skopiować obiekt blob do pliku. Jeśli obiekt źródłowy jest obiektem blob, utwórz sygnaturę dostępu współdzielonego w celu uwierzytelniania dostępu do tego obiektu blob podczas operacji kopiowania.

Rozwiązywanie problemów z usługą Magazyn plików przy użyciu metryk

Funkcja analizy usługi Azure Storage obsługuje teraz metryki na potrzeby usługi File Storage. Dane metryk umożliwiają śledzenie żądań i diagnozowanie problemów.

Metryki dla usługi File Storage można włączyć w witrynie Azure Portal. Można też włączyć je programowo przez wywołanie operacji ustawiania właściwości usługi plików za pomocą interfejsu API REST lub przy użyciu jednej z analogicznych operacji w bibliotece klienta usługi Storage.

Poniższy przykładowy kod pokazuje, jak włączyć metryki dla usługi File Storage za pomocą biblioteki klienta usługi Storage programu .NET.

Najpierw dodaj następujące instrukcje using do pliku program.cs (oprócz tych dodanych powyżej):

using Microsoft.WindowsAzure.Storage.File.Protocol;
using Microsoft.WindowsAzure.Storage.Shared.Protocol;

Zwróć uwagę, że usługi Blob Storage, Table Storage i Queue Storage używają wspólnie typu ServiceProperties w przestrzeni nazw Microsoft.WindowsAzure.Storage.Shared.Protocol, natomiast usługa File Storage ma swój własny typ FileServiceProperties w przestrzeni nazw Microsoft.WindowsAzure.Storage.File.Protocol. Jednak aby można było skompilować poniższy kod, musi on zawierać odwołania do obu tych przestrzeni nazw.

// Parse your storage connection string from your application's configuration file.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
        Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the File service client.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Set metrics properties for File service.
// Note that the File service currently uses its own service properties type,
// available in the Microsoft.WindowsAzure.Storage.File.Protocol namespace.
fileClient.SetServiceProperties(new FileServiceProperties()
{
    // Set hour metrics
    HourMetrics = new MetricsProperties()
    {
        MetricsLevel = MetricsLevel.ServiceAndApi,
        RetentionDays = 14,
        Version = "1.0"
    },
    // Set minute metrics
    MinuteMetrics = new MetricsProperties()
    {
        MetricsLevel = MetricsLevel.ServiceAndApi,
        RetentionDays = 7,
        Version = "1.0"
    }
});

// Read the metrics properties we just set.
FileServiceProperties serviceProperties = fileClient.GetServiceProperties();
Console.WriteLine("Hour metrics:");
Console.WriteLine(serviceProperties.HourMetrics.MetricsLevel);
Console.WriteLine(serviceProperties.HourMetrics.RetentionDays);
Console.WriteLine(serviceProperties.HourMetrics.Version);
Console.WriteLine();
Console.WriteLine("Minute metrics:");
Console.WriteLine(serviceProperties.MinuteMetrics.MetricsLevel);
Console.WriteLine(serviceProperties.MinuteMetrics.RetentionDays);
Console.WriteLine(serviceProperties.MinuteMetrics.Version);

Aby uzyskać kompleksowe wskazówki dotyczące rozwiązywania problemów, można zajrzeć do artykułu na temat rozwiązywania problemów z usługą Azure Files.

Często zadawane pytania dotyczące usługi Magazyn plików

  1. Czy usługa File Storage obsługuje uwierzytelnianie w usłudze Active Directory?

    Obecnie nie zapewniamy obsługi uwierzytelniania w usłudze AD dla list kontroli dostępu, ale planujemy dodanie tej funkcji w przyszłości. Tymczasem do uwierzytelniania w udziale plików używane są klucze kont usługi Azure Storage. Ponadto dostępne jest obejście w formie sygnatur dostępu współdzielonego, których można używać za pośrednictwem interfejsu API REST lub bibliotek klienckich. Za pomocą tych sygnatur można wygenerować tokeny z określonymi uprawnieniami, które będą ważne przez ustalony czas. Można na przykład wygenerować token zapewniający dostęp tylko do odczytu do danego pliku. Każda osoba z tym tokenem (w trakcie jego okresu ważności) może uzyskiwać dostęp tylko do odczytu do tego pliku.

    Sygnatury dostępu współdzielonego są obsługiwane wyłącznie za pośrednictwem interfejsu API REST lub bibliotek klienckich. W przypadku zainstalowania udziału plików przy użyciu protokołu SMB nie można delegować dostępu do jego zawartości za pomocą sygnatur dostępu współdzielonego.

  2. Czy udziały plików na platformie Azure są widoczne publicznie w Internecie czy dostępne tylko z poziomu platformy Azure?

    Jeśli otwarty jest port 445 (ruch wychodzący TCP) i klient obsługuje protokół SMB 3.0 (np. w systemie Windows 8 lub Windows Server 2012), udział plików będzie dostępny przez Internet.

  3. Czy ruch sieciowy między maszyną wirtualną na platformie Azure a udziałem plików jest liczony jako zewnętrzne użycie przepustowości i rozliczany w ten sposób w subskrypcji?

    Jeśli udział plików i maszyna wirtualna znajdują się w różnych regionach, ruch między nimi będzie rozliczany jako zewnętrzne użycie przepustowości.

  4. Czy ruch sieciowy między maszyną wirtualną a udziałem plików w tym samym regionie jest bezpłatny?

    Tak. Ruch sieciowy w tym samym regionie jest bezpłatny.

  5. Czy do nawiązania połączenia między lokalnymi maszynami wirtualnymi a usługą Azure File Storage jest wymagana usługa Azure ExpressRoute?

    Nie. Nawet jeśli nie masz usługi ExpressRoute, możesz uzyskiwać dostęp do udziału plików z zasobów lokalnych, o ile masz otwarty port 445 (ruch wychodzący TCP) dla połączeń internetowych. Jeśli chcesz, możesz używać usługi ExpressRoute z usługą Magazyn plików.

  6. Czy usługa Azure File Storage może pełnić funkcję „monitora udziału plików” dla klastra trybu failover?

    Obecnie takie rozwiązanie nie jest obsługiwane.

  7. Czy usługa File Storage jest obecnie replikowana tylko w modelu LRS lub GRS?

    Planujemy dodanie obsługi modelu RA-GRS, ale jeszcze nie wiemy, kiedy to nastąpi.

  8. Kiedy będzie można używać istniejących kont magazynu z usługą Azure File Storage?

    Usługa Azure File Storage działa obecnie ze wszystkimi kontami magazynu.

  9. Czy do interfejsu API REST zostanie także dodana operacja zmiany nazwy?

    Zmiana nazwy nie jest jeszcze obsługiwana w interfejsie API REST.

  10. Czy można zagnieżdżać udziały (czyli tworzyć udział w udziale)?

    Nie. Udział plików to sterownik wirtualny z możliwością instalacji, dlatego zagnieżdżanie nie jest obsługiwane.

  11. Czy można określić uprawnienia tylko do odczytu lub tylko do zapisu w folderach w ramach udziału?

    W przypadku udziałów plików instalowanych za pomocą protokołu SMB nie masz takiej kontroli nad uprawnieniami. Jednak możesz to zrobić, tworząc sygnaturę dostępu współdzielonego za pośrednictwem interfejsu API REST lub bibliotek klienckich.

  12. Rozpakowywanie plików w usłudze File Storage działa wolno. Co zrobić?

    Jeśli chcesz przetransferować dużą liczbę plików do usługi Magazyn plików, zalecamy skorzystanie z narzędzia AzCopy, programu Azure Powershell (Windows) lub interfejsu wiersza polecenia platformy Azure (Linux/Unix). Te narzędzia są zoptymalizowane pod kątem transferu sieciowego.

  13. **Wydano poprawkę rozwiązującą problem powolnego działania usługi Pliki Azure **

    Zespół systemu Windows wydał ostatnio poprawkę rozwiązującą problem z wydajnością, gdy klienci próbują uzyskać dostęp do usługi Azure File Storage z systemu Windows 8.1 lub Windows Server 2012 R2. Aby uzyskać więcej informacji, zapoznaj się z odpowiednim artykułem KB: Slow performance when you access Azure Files Storage from Windows 8.1 or Server 2012 R2 (Niska wydajność podczas dostępu do usługi Azure File Storage z systemu Windows 8.1 lub Windows Server 2012 R2).

  14. Korzystanie z usługi Azure File Storage z programem IBM MQ

    Firma IBM wydała dokument pomagający posiadaczom oprogramowania IBM MQ w skonfigurowaniu usługi Azure File Storage. Aby uzyskać więcej informacji, zobacz: How to setup IBM MQ Multi instance queue manager with Microsoft Azure File Service (Jak skonfigurować menedżera kolejki z wieloma wystąpieniami programu IBM MQ do działania z usługą Magazyn plików Azure).

  15. Jak usuwać błędy usługi Azure File Storage?

    Aby uzyskać kompleksowe wskazówki dotyczące rozwiązywania problemów, można zajrzeć do artykułu na temat rozwiązywania problemów z usługą Azure Files.

Następne kroki

Poniższe linki umożliwiają uzyskanie dodatkowych informacji na temat usługi Magazyn plików Azure.

Artykuły koncepcyjne i filmy

Narzędzia dostępne dla usługi Magazyn plików

Dokumentacja

Wpisy na blogach