이 문서는 계층 구조 네임스페이스를 활성화하고 파일 및 디렉터리 수준 보안 및 더 빠른 작업과 같은 기능을 잠금 해제하는 데 도움이 됩니다. 이러한 기능은 빅 데이터 분석 워크로드에서 널리 사용되며, 총괄하여 Azure Data Lake Storage라고 합니다.
이러한 기능에 대해 자세히 알아보고 이 업그레이드가 워크로드, 애플리케이션, 비용, 서비스 통합, 도구, 기능 및 설명서에 미치는 영향을 평가하려면 Azure Data Lake Storage 기능을 통해 Azure Blob Storage 업그레이드를 참조하세요.
중요합니다
업그레이드는 단방향입니다. 업그레이드가 수행되면 계정을 되돌릴 수 없습니다. 비 프로덕션 환경에서 업그레이드의 유효성을 검사하는 것이 좋습니다.
업그레이드 준비
스토리지 계정을 Data Lake Storage로 업그레이드할 준비를 하려면 다음을 수행합니다.
기능 지원 검토
스토리지 계정이 Data Lake Storage 사용 계정에서 아직 지원되지 않는 기능을 사용하도록 구성되었을 수 있습니다. 계정에서 그러한 기능을 사용하는 경우 업그레이드가 유효성 검사 단계를 통과하지 못합니다.
Azure Storage 계정의 Blob Storage 기능 지원 문서를 검토하여 지원되지 않는 기능을 식별합니다. 계정에서 그러한 기능을 사용하는 경우 업그레이드를 시작하기 전에 해당 기능을 사용하지 않도록 설정합니다.
다음 기능은 Data Lake Storage 계정에 지원되지만 업그레이드 프로세스에서는 지원되지 않습니다.
- Blob 스냅샷
- 암호화 범위
- 변경이 불가능한 스토리지
- Blob에 대한 일시 삭제
- 컨테이너에 대한 일시 삭제
스토리지 계정에 그러한 기능을 사용하도록 설정된 경우 업그레이드를 수행하기 전에 사용하지 않도록 설정해야 합니다. 업그레이드가 완료된 후 기능을 다시 사용하려면 해당 기능을 다시 사용하도록 설정합니다.
경우에 따라 업그레이드하기 전에 기능을 사용하지 않도록 설정한 후 정리 작업 시간을 제공해야 합니다. 한 가지 예는 Blob 일시 삭제 기능입니다. 계정을 업그레이드하려면 Blob 일시 삭제를 사용하지 않도록 설정한 다음, 모든 일시 삭제 Blob이 만료되도록 해야 합니다.
스토리지 계정에서 페이지 Blob 제거
페이지 Blob이 포함된 스토리지 계정은 업그레이드할 수 없습니다. 업그레이드를 수행하기 전에 스토리지 계정에서 페이지 Blob을 제거해야 합니다.
각 Blob 경로의 세그먼트에 이름이 지정되었는지 확인
마이그레이션 프로세스는 Blob의 각 경로 세그먼트에 대한 디렉터리를 만듭니다. Data Lake Storage 디렉터리에는 이름이 있어야 하므로 마이그레이션이 성공하려면 가상 디렉터리의 각 경로 세그먼트에 이름이 있어야 합니다. 공백 문자로만 명명된 세그먼트의 경우에도 동일한 요구 사항이 적용됩니다. 경로 세그먼트가 명명되지 않았거나(//
) 공백 문자(_
)로만 명명된 경우 마이그레이션을 진행하기 전에 이러한 명명 요구 사항과 호환되는 새 경로에 해당 Blob을 복사해야 합니다.
스토리지 계정에 대한 쓰기 작업 방지
업그레이드하는 동안 애플리케이션이 스토리지 계정에 쓰는 경우 업그레이드가 실패할 수 있습니다. 그러한 쓰기 작업을 방지하려면 다음을 수행합니다.
쓰기 작업을 수행할 수 있는 모든 애플리케이션 또는 서비스를 정지합니다.
스토리지 계정의 컨테이너 및 Blob에서 기존 임대를 해제하거나 중단합니다.
업그레이드가 완료되면 만든 임대를 중단하여 컨테이너 및 Blob에 대한 쓰기 권한을 다시 허용합니다.
경고
현재 그러한 리소스에 액세스하는 애플리케이션 또는 가상 머신을 정상적으로 사용하지 않도록 설정하지 않고 활성 임대를 중단하면 예기치 않은 결과가 발생할 수 있습니다. 현재 임대를 중단하기 전에 현재 쓰기 작업을 중지해야 합니다.
Azure Portal에 로그인하여 시작합니다.
스토리지 계정을 찾아 계정 개요를 표시합니다.
Data Lake Gen2 마이그레이션을 선택합니다.
Azure Data Lake Gen2 기능을 사용하여 Storage 계정으로 업그레이드 구성 페이지가 표시됩니다.
1단계: 업그레이드하기 전에 계정 변경 내용 검토 섹션을 확장하고 변경 내용 검토 및 동의를 클릭합니다.
계정 변경 내용 검토 페이지에서 확인란을 선택한 다음, 변경 내용에 동의를 클릭합니다.
2단계: 업그레이드 전 계정 유효성 검사 섹션을 펼친 다음, 유효성 검사 시작을 클릭합니다.
유효성 검사에 실패하면 페이지에 오류가 표시됩니다. 경우에 따라 오류 보기 링크가 표시됩니다. 링크가 표시되면 해당 링크를 선택합니다.
그런 다음, error.json 파일의 상황에 맞는 메뉴에서 다운로드를 선택합니다.
다운로드한 파일을 열어 계정에서 유효성 검사 단계를 통과하지 못한 이유를 확인합니다. 다음 JSON에서는 호환되지 않는 기능이 계정에서 사용하도록 설정되어 있음을 나타냅니다. 이 경우 기능을 사용하지 않도록 설정한 다음, 유효성 검사 프로세스를 다시 시작합니다.
{
"startTime": "2021-08-04T18:40:31.8465320Z",
"id": "45c84a6d-6746-4142-8130-5ae9cfe013a0",
"incompatibleFeatures": [
"Blob Delete Retention Enabled"
],
"blobValidationErrors": [],
"scannedBlobCount": 0,
"invalidBlobCount": 0,
"endTime": "2021-08-04T18:40:34.9371480Z"
}
계정의 유효성이 성공적으로 검사되면 3단계: 계정 업그레이드 섹션을 펼친 다음, 업그레이드 시작을 클릭합니다.
중요합니다
계정이 업그레이드되는 동안 쓰기 작업이 사용하지 않도록 설정됩니다. 읽기 작업은 사용하지 않도록 설정되지 않지만, 읽기 작업으로 인해 업그레이드 프로세스가 불안정해질 수 있으므로 이러한 작업을 일시 중단하는 것이 좋습니다.
마이그레이션이 성공적으로 완료되면 다음과 비슷한 메시지가 표시됩니다.
Windows PowerShell 명령 창을 엽니다.
최신 Azure PowerShell 모듈이 있는지 확인합니다.
Azure PowerShell 모듈 설치를 참조하세요.
Connect-AzAccount
명령을 사용하여 Azure 구독에 로그인하고 화면의 지시를 따릅니다.
Connect-AzAccount
ID가 둘 이상의 구독과 연결되어 있으면 활성 구독을 설정합니다.
$context = Get-AzSubscription -SubscriptionId <subscription-id>
Set-AzContext $context
<subscription-id>
자리 표시자 값을 구독의 ID로 바꿉니다.
다음 명령을 사용하여 스토리지 계정의 유효성을 검사합니다.
$result = Invoke-AzStorageAccountHierarchicalNamespaceUpgrade -ResourceGroupName "<resource-group-name>" -Name "<storage-account-name>" -RequestType Validation -AsJob
계정 크기에 따라 이 프로세스에는 약간의 시간이 걸릴 수 있습니다. 클라이언트가 차단되지 않도록 명령을 백그라운드 작업에서 실행하려면 asJob
스위치를 사용할 수 있습니다. 명령이 원격으로 실행되지만 작업은 명령을 실행하는 로컬 컴퓨터 또는 VM에 있습니다. 결과는 로컬 시스템 또는 VM으로 전송됩니다.
작업 상태를 확인하고 작업의 모든 속성을 목록에 표시하려면 반환 변수를 Format-List
cmdlet에 파이프합니다.
$result | Format-List -Property *
유효성 검사가 성공하면 상태 속성이 완료됨으로 설정됩니다.
유효성 검사가 실패하면 상태 속성이 실패로 설정되고 오류 속성에 유효성 검사 오류가 표시됩니다.
다음 출력에서는 호환되지 않는 기능이 계정에서 사용하도록 설정되어 있음을 나타냅니다. 이 경우 기능을 사용하지 않도록 설정한 다음, 유효성 검사 프로세스를 다시 시작합니다.
경우에 따라 오류 속성에서 error.json이라는 파일의 경로를 제공합니다. 해당 파일을 열어 계정에서 유효성 검사 단계를 통과하지 못한 이유를 확인할 수 있습니다.
다음 JSON에서는 호환되지 않는 기능이 계정에서 사용하도록 설정되어 있음을 나타냅니다. 이 경우 기능을 사용하지 않도록 설정한 다음, 유효성 검사 프로세스를 다시 시작합니다.
{
"startTime": "2021-08-04T18:40:31.8465320Z",
"id": "45c84a6d-6746-4142-8130-5ae9cfe013a0",
"incompatibleFeatures": [
"Blob Delete Retention Enabled"
],
"blobValidationErrors": [],
"scannedBlobCount": 0,
"invalidBlobCount": 0,
"endTime": "2021-08-04T18:40:34.9371480Z"
}
계정의 유효성이 성공적으로 검사되면 다음 명령을 실행하여 업그레이드를 시작합니다.
$result = Invoke-AzStorageAccountHierarchicalNamespaceUpgrade -ResourceGroupName "<resource-group-name>" -Name "<storage-account-name>" -RequestType Upgrade -AsJob -Force
위의 유효성 검사 예제와 마찬가지로 이 예제에서는 asJob
스위치를 사용하여 명령을 백그라운드 작업에서 실행합니다.
Force
스위치는 업그레이드를 확인하라는 메시지를 재정의합니다.
AsJob
스위치를 사용하지 않으면 프롬프트에 응답하기만 하면 되므로 Force
스위치를 사용할 필요가 없습니다.
중요합니다
계정이 업그레이드되는 동안 쓰기 작업이 사용하지 않도록 설정됩니다. 읽기 작업은 사용하지 않도록 설정되지 않지만, 읽기 작업으로 인해 업그레이드 프로세스가 불안정해질 수 있으므로 이러한 작업을 일시 중단하는 것이 좋습니다.
작업 상태를 확인하려면 이전 단계에서 설명한 것과 동일한 기술을 사용합니다. 프로세스가 실행되면 상태 속성이 실행 중으로 설정됩니다.
마이그레이션이 성공적으로 완료되면 상태 속성이 완료됨으로 설정되고 오류 속성에 오류가 표시되지 않습니다.
중요합니다
대략적인 업그레이드 시간은 2백만 BLOB당 약 5~10분입니다. 예를 들어 계정에 천만 개의 Blob이 있는 경우 업그레이드에는 약 25~50분이 소요됩니다. 2백만 개 미만의 Blob이 포함된 계정은 일반적으로 10분 이내에 업그레이드됩니다.
먼저 Azure Cloud Shell을 열거나 Azure CLI를 로컬로 설치한 경우 Windows PowerShell과 같은 명령 콘솔 애플리케이션을 엽니다.
다음 명령을 사용하여 설치된 Azure CLI 버전이 2.29.0
이상인지 확인합니다.
az --version
Azure CLI 버전이 2.29.0
보다 낮으면 최신 버전을 설치합니다. 자세한 내용은 Azure CLI 설치를 참조하세요.
ID가 둘 이상의 구독과 연결되어 있으면 활성 구독을 설정합니다.
az account set --subscription <subscription-id>
<subscription-id>
자리 표시자 값을 구독의 ID로 바꿉니다.
다음 명령을 사용하여 스토리지 계정의 유효성을 검사합니다.
az storage account hns-migration start --type validation -n <storage-account-name> -g <resource-group-name>
유효성 검사가 성공하면 프로세스가 완료되고 오류가 표시되지 않습니다.
유효성 검사가 실패하면 콘솔에 유효성 검사 오류가 표시됩니다. 예를 들어 (IncompatibleValuesForAccountProperties) Values for account properties are incompatible: Versioning Enabled
오류는 호환되지 않는 기능(버전 관리)이 계정에서 사용하도록 설정되어 있음을 나타냅니다. 이 경우 기능을 사용하지 않도록 설정한 다음, 유효성 검사 프로세스를 다시 시작합니다.
경우에 따라 error.json이라는 파일의 경로가 콘솔에 표시됩니다. 해당 파일을 열어 계정에서 유효성 검사 단계를 통과하지 못한 이유를 확인할 수 있습니다.
다음 JSON에서는 호환되지 않는 기능이 계정에서 사용하도록 설정되어 있음을 나타냅니다. 이 경우 기능을 사용하지 않도록 설정한 다음, 유효성 검사 프로세스를 다시 시작합니다.
{
"startTime": "2021-08-04T18:40:31.8465320Z",
"id": "45c84a6d-6746-4142-8130-5ae9cfe013a0",
"incompatibleFeatures": [
"Blob Delete Retention Enabled"
],
"blobValidationErrors": [],
"scannedBlobCount": 0,
"invalidBlobCount": 0,
"endTime": "2021-08-04T18:40:34.9371480Z"
}
계정의 유효성이 성공적으로 검사되면 다음 명령을 실행하여 업그레이드를 시작합니다.
az storage account hns-migration start --type upgrade -n storage-account-name -g <resource-group-name>
중요합니다
계정이 업그레이드되는 동안 쓰기 작업이 사용하지 않도록 설정됩니다. 읽기 작업은 사용하지 않도록 설정되지 않지만, 읽기 작업으로 인해 업그레이드 프로세스가 불안정해질 수 있으므로 이러한 작업을 일시 중단하는 것이 좋습니다.
마이그레이션이 성공하면 프로세스가 완료되고 오류가 표시되지 않습니다.
업그레이드 중지
마이그레이션은 완료되기 전에 중지할 수 있습니다.
업그레이드가 완료되기 전에 중지하려면 업그레이드 진행 중에 업그레이드 취소를 선택합니다.
업그레이드가 완료되기 전에 중지하려면 Stop-AzStorageAccountHierarchicalNamespaceUpgrade
명령을 사용합니다.
Stop-AzStorageAccountHierarchicalNamespaceUpgrade -ResourceGroupName <resource-group-name> -Name <storage-account-name>
업그레이드가 완료되기 전에 중지하려면 az storage account hns-migration stop
명령을 사용합니다.
az storage account hns-migration stop -n <storage-account-name> -g <resource-group-name>
데이터, 워크로드 및 애플리케이션 마이그레이션
Blob service 엔드포인트 또는 Data Lake 스토리지 엔드포인트를 가리키도록 워크로드에서 서비스를 구성합니다.
Windows Azure Storage Blob 드라이버 또는 WASB 드라이버를 사용하는 Hadoop 워크로드의 경우 ABFS(Azure Blob File System) 드라이버를 사용하도록 수정해야 합니다.
Blob service 엔드포인트에 요청하는 WASB 드라이버와 달리 ABFS 드라이버는 계정의 Data Lake Storage 엔드포인트에 요청합니다.
사용자 지정 애플리케이션을 테스트하여 업그레이드된 계정에서 예상대로 작동하는지 확인합니다.
Data Lake Storage의 다중 프로토콜 액세스를 사용하면 대부분의 애플리케이션에서 수정 없이 Blob API를 계속 사용할 수 있습니다. 문제가 발생하거나 API를 사용하여 디렉터리 작업 및 ACL을 사용하려는 경우 일부 코드를 이동하여 Data Lake Storage API를 사용하는 것이 좋습니다.
.NET, Java, Python, Node.js 및 REST에 대한 가이드를 참조하세요.
사용자 지정 스크립트를 테스트하여 업그레이드된 계정에서 예상대로 작동하는지 확인합니다.
Blob API의 경우와 마찬가지로 대부분의 스크립트는 수정하지 않고도 작동할 수 있습니다. 그러나 필요한 경우 Data Lake Storage PowerShell cmdlet 및 Azure CLI 명령을 사용하도록 스크립트 파일을 업그레이드할 수 있습니다.
참고 항목
Azure Data Lake Storage 소개