Поделиться через


Использование средств передачи данных в хранилище Azure Stack Hub

Azure Stack Hub предоставляет набор служб хранения данных для дисков, блобов, таблиц, очередей и функций управления учетными записями. Некоторые средства службы хранилища Azure доступны, если вы хотите управлять или перемещать данные в хранилище Azure Stack Hub или из нее. В этой статье представлен обзор доступных средств.

Ваши требования определяют, какие из следующих средств лучше всего подходят для вас:

  • AzCopy: служебная программа командной строки для хранения, которую можно скачать для копирования данных из одного объекта в другой объект в пределах или между учетными записями хранения.
  • Azure PowerShell: оболочка командной строки и язык сценариев на основе задач, предназначенный специально для системного администрирования.
  • Azure CLI: кроссплатформенное средство с открытым кодом, которое предоставляет набор команд для работы с платформами Azure и Azure Stack Hub.
  • Обозреватель службы хранилища Microsoft Azure: простое автономное приложение с пользовательским интерфейсом.
  • Blobfuse: драйвер виртуальной файловой системы для хранилища BLOB-объектов Azure, который позволяет получить доступ к существующим данным блочных BLOB-объектов в учетной записи хранения через файловую систему Linux.

Из-за различий служб хранилища между Azure и Azure Stack Hub могут быть некоторые конкретные требования для каждого средства, описанного в следующих разделах. Сравнение службы хранилища Azure Stack Hub и службы хранилища Azure см. в статье " Хранилище Azure Stack Hub: различия и рекомендации".

AzCopy

AzCopy — это программа командной строки, предназначенная для копирования данных в хранилище BLOB-объектов и таблиц Microsoft Azure и из нее с помощью простых команд с оптимальной производительностью. Данные из одного объекта можно скопировать в другую внутри или между учетными записями хранения.

Скачивание и установка AzCopy

Скачайте AzCopy V10+.

Конфигурация и ограничения AzCopy 10.1

AzCopy 10.1 теперь может быть настроен для использования более старых версий API. Это обеспечивает (ограниченную) поддержку Azure Stack Hub. Чтобы настроить версию API для AzCopy для поддержки Azure Stack Hub, задайте для переменной AZCOPY_DEFAULT_SERVICE_API_VERSION среды значение 2017-11-09.

Операционная система командование
Виндоус В командной строке используйте set AZCOPY_DEFAULT_SERVICE_API_VERSION=2017-11-09.
В PowerShell используется: $env:AZCOPY_DEFAULT_SERVICE_API_VERSION="2017-11-09"
Линукс export AZCOPY_DEFAULT_SERVICE_API_VERSION=2017-11-09
MacOS export AZCOPY_DEFAULT_SERVICE_API_VERSION=2017-11-09

В AzCopy 10.1 для Azure Stack Hub поддерживаются следующие функции:

Функция Поддерживаемые действия
Управление контейнером Создание контейнера
Перечисление содержимого контейнеров
Управление заданием Отображение заданий
Возобновление задания
Удаление блоба Удалите один блоб
Удаление всего или частичного виртуального каталога
Отправить файл Отправка файла
Отправка каталога
Отправка содержимого каталога
Загрузить файл Скачивание файла
Загрузка каталога
Загрузка содержимого каталога
Синхронизация файла Синхронизация контейнера с локальной файловой системой
Синхронизация локальной файловой системы с контейнером

Замечание

Azure Stack Hub не поддерживает предоставление учетных данных авторизации AzCopy с помощью идентификатора Microsoft Entra. Необходимо получить доступ к объектам хранилища в Azure Stack Hub с использованием маркера общей подписки (SAS). Azure Stack Hub не поддерживает синхронную передачу данных между двумя расположениями BLOB-объектов Azure Stack Hub и между хранилищем Azure и Azure Stack Hub. Вы не можете использовать azcopy cp для перемещения данных из Azure Stack Hub в службу хранилища Azure (или наоборот) непосредственно с помощью AzCopy 10.1.

Примеры команд AzCopy для передачи данных

В следующих примерах описаны типичные сценарии копирования данных в хранилище Azure Stack Hub и из него. Дополнительные сведения см. в статье "Начало работы с AzCopy".

Скачайте все блобы на локальный диск

azcopy cp "https://[account].blob.core.windows.net/[container]/[path/to/directory]?[SAS]" "/path/to/dir" --recursive=true

Отправка одного файла в виртуальный каталог

azcopy cp "/path/to/file.txt" "https://[account].blob.core.windows.net/[container]/[path/to/blob]?[SAS]"

Известные проблемы AzCopy

  • Любая операция AzCopy в хранилище файлов недоступна, так как хранилище файлов еще недоступно в Azure Stack Hub.
  • Если вы хотите передать данные между двумя расположениями BLOB-объектов Azure Stack Hub или между Azure Stack Hub и службой хранилища Azure с помощью AzCopy 10.1, сначала скачайте данные в локальное расположение, а затем снова отправьте в целевой каталог в Azure Stack Hub или службе хранилища Azure.
  • Версия Linux AzCopy поддерживает только обновления 1802 или более поздние версии; Она не поддерживает службу таблиц.
  • Если вы хотите скопировать данные в службу хранилища таблиц Azure и из нее, можно использовать PowerShell, CLI или клиентские библиотеки Azure.

Azure PowerShell

Azure PowerShell — это модуль, предоставляющий командлеты для управления службами в Azure и Azure Stack Hub. Это основанная на задачах оболочка командного интерфейса и язык сценариев, предназначенный специально для системного администрирования.

Установка и настройка PowerShell для Azure Stack Hub

Модули Azure Stack Hub, совместимые с Azure PowerShell, необходимы для работы с Azure Stack Hub. Дополнительные сведения см. в статье "Установка PowerShell для Azure Stack Hub " и настройка среды PowerShell пользователя Azure Stack Hub.

Пример сценария PowerShell для Azure Stack Hub

В этом примере предполагается, что вы успешно установили PowerShell для Azure Stack Hub. Этот скрипт поможет вам выполнить настройку и попросить учетные данные клиента Azure Stack Hub добавить свою учетную запись в локальную среду PowerShell. Затем скрипт устанавливает подписку Azure по умолчанию, создает новую учетную запись хранения в Azure, создает новый контейнер в этой новой учетной записи хранения и отправляет существующий файл образа (BLOB-объект) в этот контейнер. После того как скрипт перечислит все блобы в этом контейнере, он создаст новый целевой каталог на локальном компьютере и скачает файл образа.

  1. Установите модули Azure PowerShell, совместимые с Azure Stack Hub, .
  2. Скачайте инструменты , необходимые для работы с Azure Stack Hub.
  3. Откройте Windows PowerShell ISE и Запустить от имени администратора, затем нажмите Файл>Создать, чтобы создать новый файл скрипта.
  4. Скопируйте приведенный ниже скрипт и вставьте его в новый файл скрипта.
  5. Обновите переменные скрипта на основе параметров конфигурации.

    Замечание

    Этот скрипт должен выполняться в корневом каталоге для AzureStack_Tools.

# begin

$ARMEvnName = "AzureStackUser" # set AzureStackUser as your Azure Stack Hub environment name
$ARMEndPoint = "https://management.local.azurestack.external" 
$GraphAudience = "https://graph.windows.net/" 
$AADTenantName = "<myDirectoryTenantName>.onmicrosoft.com" 

$SubscriptionName = "basic" # Update with the name of your subscription.
$ResourceGroupName = "myTestRG" # Give a name to your new resource group.
$StorageAccountName = "azsblobcontainer" # Give a name to your new storage account. It must be lowercase.
$Location = "Local" # Choose "Local" as an example.
$ContainerName = "photo" # Give a name to your new container.
$ImageToUpload = "C:\temp\Hello.jpg" # Prepare an image file and a source directory in your local computer.
$DestinationFolder = "C:\temp\download" # A destination directory in your local computer.

# Import the Connect PowerShell module"
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
Import-Module .\Connect\AzureStack.Connect.psm1

# Configure the PowerShell environment
# Register an Az environment that targets your Azure Stack Hub instance
Add-AzEnvironment -Name $ARMEvnName -ARMEndpoint $ARMEndPoint 

# Login
$TenantID = Get-AzsDirectoryTenantId -AADTenantName $AADTenantName -EnvironmentName $ARMEvnName
Connect-AzAccount -EnvironmentName $ARMEvnName -TenantId $TenantID 

# Set a default Azure subscription.
Select-AzSubscription -SubscriptionName $SubscriptionName

# Create a new Resource Group 
New-AzResourceGroup -Name $ResourceGroupName -Location $Location

# Create a new storage account.
New-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName -Location $Location -Type Standard_LRS

# Set a default storage account.
Set-AzCurrentStorageAccount -StorageAccountName $StorageAccountName -ResourceGroupName $ResourceGroupName 

# Create a new container.
New-AzStorageContainer -Name $ContainerName -Permission Off

# Upload a blob into a container.
Set-AzStorageBlobContent -Container $ContainerName -File $ImageToUpload

# List all blobs in a container.
Get-AzStorageBlob -Container $ContainerName

# Download blobs from the container:
# Get a reference to a list of all blobs in a container.
$blobs = Get-AzStorageBlob -Container $ContainerName

# Create the destination directory.
New-Item -Path $DestinationFolder -ItemType Directory -Force  

# Download blobs into the local destination directory.
$blobs | Get-AzureStorageBlobContent -Destination $DestinationFolder

# end

Известные проблемы PowerShell

разница Get-AzStorageAccountKey

Текущая совместимая версия модуля Azure PowerShell для Azure Stack Hub — 1.2.11 для операций пользователя. Это отличается от последней версии Azure PowerShell. Это различие влияет на операции служб хранилища следующим образом:

Возвращаемый формат Get-AzStorageAccountKey значения в версии 1.2.11 имеет два свойства: Key1, Key2, в то время как текущая версия Azure возвращает массив, содержащий все ключи учетной записи.

# This command gets a specific key for a storage account, 
# and works for Azure PowerShell version 1.4, and later versions.
(Get-AzStorageAccountKey -ResourceGroupName "RG01" `
-AccountName "MyStorageAccount").Value[0]

# This command gets a specific key for a storage account, 
# and works for Azure PowerShell version 1.3.2, and previous versions.
(Get-AzStorageAccountKey -ResourceGroupName "RG01" `
-AccountName "MyStorageAccount").Key1

Дополнительные сведения см. в статье Get-AzureRMStorageAccountKey.

Копирование BLOB-объектов между кластерами Azure Stack Hub

Start-AzStorageBlobCopy можно использовать для запуска задания копирования для перемещения объекта BLOB. При задании свойства AbsoluteUri в качестве URI BLOB-объектов в другом кластере Azure Stack Hub этот командлет можно использовать для копирования BLOB-объектов между двумя кластерами Azure Stack Hub. Убедитесь, что исходные и целевые кластеры Azure Stack Hub находятся в той же версии обновления. Azure Stack Hub в настоящее время не поддерживает использование Start-AzStorageBlobCopy для копирования BLOB-объектов между двумя кластерами Azure Stack Hub, развернутыми с различными версиями обновлений.

Azure CLI (Интерфейс командной строки для Azure)

Azure CLI — это интерфейс командной строки Azure для управления ресурсами Azure. Его можно установить в macOS, Linux и Windows и запустить его из командной строки.

Azure CLI оптимизирован для управления ресурсами Azure и администрирования их из командной строки, а также для создания скриптов автоматизации, которые работают с Azure Resource Manager. Он предоставляет множество одинаковых функций, найденных на портале Azure Stack Hub, включая широкий доступ к данным.

Для Azure Stack Hub требуется Azure CLI версии 2.0 или более поздней. Дополнительные сведения об установке и настройке Azure CLI с помощью Azure Stack Hub см. в статье "Установка и настройка Azure Stack Hub CLI". Дополнительные сведения об использовании Azure CLI для выполнения нескольких задач, работающих с ресурсами в учетной записи хранения Azure Stack Hub, см. в статье "Использование Azure CLI с хранилищем Azure".

Пример сценария Azure CLI для Azure Stack Hub

После завершения установки и настройки ИНТЕРФЕЙСА командной строки можно выполнить следующие действия, чтобы работать с небольшим примером скрипта оболочки для взаимодействия с ресурсами хранилища Azure Stack Hub. Скрипт выполняет следующие действия:

  • Создает новый контейнер в вашей учетной записи хранения.
  • Загружает существующий файл (как Blob) в контейнер.
  • Перечисляет все BLOB-объекты в контейнере.
  • Загружает файл в место назначения на указанный локальный компьютер.

Перед выполнением этого скрипта убедитесь, что вы сможете успешно подключиться и войти в целевой объект Azure Stack Hub.

  1. Откройте любимый текстовый редактор, а затем скопируйте и вставьте предыдущий скрипт в редактор.
  2. Обновите переменные скрипта, чтобы отразить параметры конфигурации.
  3. После обновления необходимых переменных сохраните скрипт и закройте редактор. В следующих шагах предполагается, что вы назвали скрипт my_storage_sample.sh.
  4. При необходимости пометьте скрипт как исполняемый файл: chmod +x my_storage_sample.sh
  5. Выполните скрипт. Например, в Bash: ./my_storage_sample.sh
#!/bin/bash
# A simple Azure Stack Hub storage example script

export AZURESTACK_RESOURCE_GROUP=<resource_group_name>
export AZURESTACK_RG_LOCATION="local"
export AZURESTACK_STORAGE_ACCOUNT_NAME=<storage_account_name>
export AZURESTACK_STORAGE_CONTAINER_NAME=<container_name>
export AZURESTACK_STORAGE_BLOB_NAME=<blob_name>
export FILE_TO_UPLOAD=<file_to_upload>
export DESTINATION_FILE=<destination_file>

echo "Creating the resource group..."
az group create --name $AZURESTACK_RESOURCE_GROUP --location $AZURESTACK_RG_LOCATION

echo "Creating the storage account..."
az storage account create --name $AZURESTACK_STORAGE_ACCOUNT_NAME --resource-group $AZURESTACK_RESOURCE_GROUP --account-type Standard_LRS

echo "Creating the blob container..."
az storage container create --name $AZURESTACK_STORAGE_CONTAINER_NAME --account-name $AZURESTACK_STORAGE_ACCOUNT_NAME

echo "Uploading the file..."
az storage blob upload --container-name $AZURESTACK_STORAGE_CONTAINER_NAME --file $FILE_TO_UPLOAD --name $AZURESTACK_STORAGE_BLOB_NAME --account-name $AZURESTACK_STORAGE_ACCOUNT_NAME

echo "Listing the blobs..."
az storage blob list --container-name $AZURESTACK_STORAGE_CONTAINER_NAME --account-name $AZURESTACK_STORAGE_ACCOUNT_NAME --output table

echo "Downloading the file..."
az storage blob download --container-name $AZURESTACK_STORAGE_CONTAINER_NAME --account-name $AZURESTACK_STORAGE_ACCOUNT_NAME --name $AZURESTACK_STORAGE_BLOB_NAME --file $DESTINATION_FILE --output table

echo "Done"

Обозреватель службы хранилища Microsoft Azure

Обозреватель службы хранилища Azure — это автономное приложение от Майкрософт. Это позволяет легко работать как с данными службы хранилища Azure, так и с данными службы хранилища Azure Stack Hub на компьютерах Windows, macOS и Linux. Если вы хотите легко управлять данными службы хранилища Azure Stack Hub, рассмотрите возможность использования Обозревателя службы хранилища Microsoft Azure.

Blobfuse

Blbfuse — это драйвер виртуальной файловой системы для хранилища BLOB-объектов Azure, который позволяет получить доступ к существующим данным блочных BLOB-объектов в учетной записи хранения через файловую систему Linux. Хранилище BLOB-объектов Azure — это служба хранилища объектов, поэтому не имеет иерархического пространства имен. Blobfuse предоставляет это пространство имен, используя виртуальную схему каталога с использованием косой черты / в качестве разделителя. Blobfuse работает как в Azure, так и в Azure Stack Hub.

Дополнительные сведения о подключении хранилища BLOB-объектов в качестве файловой системы с помощью Blobfuse в Linux см. в статье " Подключение хранилища BLOB-объектов в виде файловой системы с помощью Blobfuse".

Для Azure Stack Hub необходимо указать blobEndpoint при настройке учетных данных учетной записи хранения вместе с accountName, accountKey/sasToken и containerName.

В пакете средств разработки Azure Stack (ASDK) blobEndpoint должен быть myaccount.blob.local.azurestack.external. В интегрированной системе Azure Stack Hub обратитесь к администратору облака, если вы не уверены в конечной точке.

accountKey и sasToken можно настроить только один раз. При получении ключа учетной записи хранения файл конфигурации учетных данных находится в следующем формате:

accountName myaccount 
accountKey myaccesskey== 
containerName mycontainer 
blobEndpoint myaccount.blob.local.azurestack.external

При получении маркера общего доступа файл конфигурации учетных данных находится в следующем формате:

accountName myaccount 
sasToken ?mysastoken 
containerName mycontainer 
blobEndpoint myaccount.blob.local.azurestack.external

Дальнейшие шаги