Azure Stack Hub Storage에서 데이터 전송 도구 사용

Azure Stack Hub는 디스크, Blob, 테이블, 큐 및 계정 관리 기능에 대한 스토리지 서비스 집합을 제공합니다. Azure Stack Hub Storage에서 데이터를 관리하거나 이동하려는 경우 일부 Azure Storage 도구를 사용할 수 있습니다. 이 문서에서는 사용 가능한 도구에 대한 개요를 제공합니다.

요구 사항에 따라 다음 중 가장 적합한 도구가 결정됩니다.

  • AZCopy

    스토리지 계정 내 또는 간에 한 개체에서 다른 개체로 데이터를 복사하기 위해 다운로드할 수 있는 스토리지별 명령줄 유틸리티입니다.

  • Azure PowerShell

    특히 시스템 관리를 위해 설계된 작업 기반 명령줄 셸 및 스크립팅 언어입니다.

  • Azure CLI

    Azure 및 Azure Stack Hub 플랫폼 작업을 위한 명령 집합을 제공하는 오픈 소스 플랫폼 간 도구입니다.

  • Microsoft Azure Storage Explorer

    사용자 인터페이스가 있는 사용하기 쉬운 독립 실행형 앱입니다.

  • Blobfuse

    Azure Blob Storage 대한 가상 파일 시스템 드라이버로, Linux 파일 시스템을 통해 스토리지 계정의 기존 블록 Blob 데이터에 액세스할 수 있습니다.

Azure와 Azure Stack Hub 간의 스토리지 서비스 차이로 인해 다음 섹션에 설명된 각 도구에 대한 몇 가지 특정 요구 사항이 있을 수 있습니다. Azure Stack Hub Storage와 Azure Storage 간의 비교는 Azure Stack Hub Storage: 차이점 및 고려 사항을 참조하세요.

AzCopy

AzCopy는 최적의 성능으로 간단한 명령을 사용하여 Microsoft Azure Blob 및 Table Storage 간에 데이터를 복사하도록 설계된 명령줄 유틸리티입니다. 스토리지 계정 내에서 또는 스토리지 계정 간에 한 개체에서 다른 개체로 데이터를 복사할 수 있습니다.

AzCopy 다운로드 및 설치

AzCopy V10+를 다운로드합니다.

AzCopy 10.1 구성 및 제한

AzCopy 10.1은 이제 이전 API 버전을 사용하도록 구성할 수 있습니다. 이렇게 하면 Azure Stack Hub에 대한 (제한된) 지원이 가능합니다. Azure Stack Hub를 지원하도록 AzCopy에 대한 API 버전을 구성하려면 환경 변수를 AZCOPY_DEFAULT_SERVICE_API_VERSION2017-11-09설정합니다.

운영 체제 명령
Windows 명령 프롬프트에서 set AZCOPY_DEFAULT_SERVICE_API_VERSION=2017-11-09를 사용합니다.
PowerShell에서 $env:AZCOPY_DEFAULT_SERVICE_API_VERSION="2017-11-09"를 사용합니다.
Linux 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에 대해 다음과 같은 기능이 지원됩니다.

기능 지원되는 작업
컨테이너 관리 컨테이너 만들기
컨테이너의 콘텐츠 나열
작업 관리 작업 표시
작업 다시 시작
Blob 제거 단일 Blob 제거
전체 또는 부분 가상 디렉터리 제거
파일 업로드 파일 업로드
디렉터리 업로드
디렉터리의 콘텐츠 업로드
파일 다운로드 파일 다운로드
디렉터리 다운로드
디렉터리의 콘텐츠 다운로드
파일 동기화 로컬 파일 시스템에 컨테이너 동기화
로컬 파일 시스템을 컨테이너에 동기화

참고

  • Azure Stack Hub는 Microsoft Entra ID를 사용하여 AzCopy에 권한 부여 자격 증명을 제공하는 것을 지원하지 않습니다. SAS(공유 액세스 서명) 토큰을 사용하여 Azure Stack Hub의 스토리지 개체에 액세스해야 합니다.
  • Azure Stack Hub는 두 Azure Stack Hub Blob 위치 간 및 Azure Storage와 Azure Stack Hub 간의 동기 데이터 전송을 지원하지 않습니다. "azcopy cp"를 사용하여 AzCopy 10.1을 사용하여 Azure Stack Hub에서 Azure Storage로 직접 데이터를 이동할 수 없습니다.

데이터 전송에 대한 AzCopy 명령 예제

다음 예제는 Azure Stack Hub Blob 간에 데이터를 복사하는 일반적인 시나리오를 따릅니다. 자세한 내용은 AzCopy 시작을 참조하세요.

로컬 디스크에 모든 Blob 다운로드

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에서 사용할 수 없으므로 사용할 수 없습니다.
  • AzCopy 10.1을 사용하여 두 Azure Stack Hub Blob 위치 간에 또는 Azure Stack Hub와 Azure Storage 간에 데이터를 전송하려면 먼저 데이터를 로컬 위치로 다운로드한 다음 Azure Stack Hub 또는 Azure Storage의 대상 디렉터리로 다시 업로드해야 합니다. 또는 AzCopy 7.1을 사용하고 /SyncCopy 옵션을 사용하여 전송을 지정하여 데이터를 복사할 수 있습니다.
  • AzCopy의 Linux 버전은 1802 업데이트 이상 버전만 지원하며 Table Service를 지원하지 않습니다.
  • Azure Table Storage 서비스와 데이터를 복사하려면 AzCopy 버전 7.3.0을 설치합니다.

Azure PowerShell

Azure PowerShell Azure 및 Azure Stack Hub 모두에서 서비스를 관리하기 위한 cmdlet을 제공하는 모듈입니다. 특히 시스템 관리를 위해 설계된 작업 기반 명령줄 셸 및 스크립팅 언어입니다.

Azure Stack Hub용 PowerShell 설치 및 구성

Azure Stack Hub와 호환되는 Azure PowerShell 모듈은 Azure Stack Hub에서 작업해야 합니다. 자세한 내용은 Azure Stack Hub용 PowerShell 설치 및 Azure Stack Hub사용자의 PowerShell 환경 구성을 참조하세요.

Azure Stack Hub용 PowerShell 샘플 스크립트

이 샘플에서는 Azure Stack Hub용 PowerShell을 성공적으로 설치했다고 가정합니다. 이 스크립트는 구성을 완료하고 Azure Stack Hub 테넌트 자격 증명에 로컬 PowerShell 환경에 계정을 추가하도록 요청하는 데 도움이 됩니다. 그런 다음 스크립트는 기본 Azure 구독을 설정하고, Azure에서 새 스토리지 계정을 만들고, 이 새 스토리지 계정에 새 컨테이너를 만들고, 기존 이미지 파일(Blob)을 해당 컨테이너에 업로드합니다. 스크립트는 해당 컨테이너의 모든 Blob을 나열한 후 로컬 컴퓨터에 새 대상 디렉터리를 만들고 이미지 파일을 다운로드합니다.

  1. Azure Stack Hub 호환 Azure PowerShell 모듈을 설치합니다.
  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 Stack Hub에 대한 현재 호환되는 Azure PowerShell 모듈 버전은 사용자 작업에 대해 1.2.11입니다. 최신 버전의 Azure PowerShell 다릅니다. 이러한 차이는 다음과 같은 방식으로 스토리지 서비스 작업에 영향을 줍니다.

버전 1.2.11의 Get-AzStorageAccountKey 반환 값 형식에는 및 의 두 가지 속성 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를 참조하세요.

Azure Stack Hub 클러스터 간에 Blob 복사

Start-AzStorageBlobCopy 을 사용하여 Blob을 이동하는 복사 작업을 시작할 수 있습니다. 속성을 AbsoluteUri 다른 Azure Stack Hub 클러스터의 Blob URI로 설정할 때 이 cmdlet을 사용하여 두 Azure Stack Hub 클러스터 간에 Blob을 복사할 수 있습니다. 원본 및 대상 Azure Stack Hub 클러스터가 동일한 업데이트 버전에 있는지 확인합니다. Azure Stack Hub는 현재 를 사용하여 Start-AzStorageBlobCopy 서로 다른 업데이트 버전을 배포한 두 Azure Stack Hub 클러스터 간에 Blob을 복사하는 것을 지원하지 않습니다.

Azure CLI

Azure CLI는 Azure 리소스를 관리하는 Azure의 명령줄 환경입니다. macOS, Linux 및 Windows에 설치하고 명령줄에서 실행할 수 있습니다.

Azure CLI는 명령줄에서 Azure 리소스를 관리 및 관리하고 Azure Resource Manager 대해 작동하는 자동화 스크립트를 빌드하는 데 최적화되어 있습니다. 풍부한 데이터 액세스를 포함하여 Azure Stack Hub 포털에 있는 동일한 많은 기능을 제공합니다.

Azure Stack Hub에는 Azure CLI 버전 2.0 이상이 필요합니다. Azure Stack Hub를 사용하여 Azure CLI를 설치하고 구성하는 방법에 대한 자세한 내용은 Azure Stack Hub CLI 설치 및 구성을 참조하세요. Azure CLI를 사용하여 Azure Stack Hub 스토리지 계정에서 리소스로 작업하는 여러 작업을 수행하는 방법에 대한 자세한 내용은 Azure Storage에서 Azure CLI 사용을 참조하세요.

Azure Stack Hub에 대한 Azure CLI 샘플 스크립트

CLI 설치 및 구성을 완료한 후 다음 단계를 시도하여 작은 셸 샘플 스크립트를 사용하여 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 Storage Explorer

Azure Storage Explorer Microsoft의 독립 실행형 앱입니다. Windows, macOS 및 Linux 컴퓨터에서 Azure Storage 및 Azure Stack Hub Storage 데이터를 쉽게 사용할 수 있습니다. Azure Stack Hub Storage 데이터를 쉽게 관리하려면 Microsoft Azure Storage Explorer 사용하는 것이 좋습니다.

Blobfuse

Blobfuse는 Azure Blob Storage 대한 가상 파일 시스템 드라이버로, Linux 파일 시스템을 통해 스토리지 계정의 기존 블록 Blob 데이터에 액세스할 수 있습니다. Azure Blob Storage 개체 스토리지 서비스이므로 계층 구조 네임스페이스가 없습니다. Blobfuse는 슬래시를 구분 기호로 사용하여 가상 디렉터리 체계를 사용하여 / 이 네임스페이스를 제공합니다. Blobfuse는 Azure 및 Azure Stack Hub 모두에서 작동합니다.

Linux에서 Blobfuse를 사용하여 Blob Storage를 파일 시스템으로 탑재하는 방법에 대한 자세한 내용은 Blob Storage를 Blobfuse를 사용하여 파일 시스템으로 탑재하는 방법을 참조하세요.

Azure Stack Hub의 경우 accountName, accountKey/sasToken 및 containerName과 함께 스토리지 계정 자격 증명을 구성하는 동안 BlobEndpoint 를 지정해야 합니다.

ASDK(Azure Stack Development Kit)에서 BlobEndpoint 는 이어야 myaccount.blob.local.azurestack.external합니다. Azure Stack Hub 통합 시스템에서 엔드포인트에 대해 잘 모르는 경우 클라우드 관리자에게 문의하세요.

accountKeysasToken 은 한 번에 하나씩만 구성할 수 있습니다. 스토리지 계정 키가 제공되면 자격 증명 구성 파일의 형식은 다음과 같습니다.

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

공유 액세스 토큰이 제공되면 자격 증명 구성 파일의 형식은 다음과 같습니다.

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

다음 단계