다음을 통해 공유


Python용 Azure 라이브러리(SDK)와 함께 Azure Managed Disks 사용

Azure Managed Disks는 Azure Virtual Machines 및 Azure VMware Solution과 함께 사용하도록 설계된 고성능 지속형 블록 스토리지입니다. 디스크 관리를 간소화하고, 확장성을 높이고, 보안을 강화하며, 스토리지 계정을 직접 관리할 필요가 없습니다. 자세한 내용은 Azure Managed Disks를 참조하세요.

기존 VM과 연결된 Managed Disks에 대한 작업의 경우 라이브러리를 azure-mgmt-compute 사용합니다.

이 문서의 코드 예제는 azure-mgmt-compute 라이브러리를 사용하여 Managed Disks와 관련된 일반적인 작업을 보여줍니다. 이러한 예제는 독립 실행형 스크립트로 실행되는 것이 아니라 사용자 고유의 코드에 통합됩니다. 스크립트에서 ComputeManagementClient 인스턴스를 azure.mgmt.compute 만드는 방법을 알아보려면 예제 - 가상 머신 만들기를 참조하세요.

라이브러리를 사용하는 azure-mgmt-compute 방법에 대한 자세한 예제는 GitHub의 컴퓨팅에 대한 Python용 Azure SDK 샘플을 참조하세요.

독립형 Managed Disks

다음 예제에서는 독립 실행형 Managed Disks를 프로비전하는 다양한 방법을 보여 줍니다.

빈 Managed Disk 만들기

이 예제에서는 빈 Managed Disk를 새로 만드는 방법을 보여줍니다. 빈 디스크로 사용하여 가상 머신에 연결하거나 스냅샷 또는 이미지를 만들기 위한 시작 지점으로 사용할 수 있습니다.

from azure.mgmt.compute.models import DiskCreateOption

poller = compute_client.disks.begin_create_or_update(
    'my_resource_group',
    'my_disk_name',
    {
        'location': 'eastus',
        'disk_size_gb': 20,
        'creation_data': {
            'create_option': DiskCreateOption.empty
        }
    }
)
disk_resource = poller.result()

Blob Storage에서 Managed Disk 만들기

이 예제에서는 Azure Blob Storage에 저장된 VHD 파일에서 Managed Disk를 만드는 방법을 보여 줍니다. 이는 기존 가상 하드 디스크를 다시 사용하거나 Azure로 이동하려는 경우에 유용합니다.

from azure.mgmt.compute.models import DiskCreateOption

poller = compute_client.disks.begin_create_or_update(
    'my_resource_group',
    'my_disk_name',
    {
        'location': 'eastus',
        'creation_data': {
            'create_option': DiskCreateOption.IMPORT,
            'storage_account_id': '/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>',
            'source_uri': 'https://<storage-account-name>.blob.core.windows.net/vm-images/test.vhd'
        }
    }
)
disk_resource = poller.result()

Blob Storage에서 Managed Disk 이미지 만들기

이 예제에서는 Azure Blob Storage에 저장된 VHD 파일에서 Managed Disk 이미지를 만드는 방법을 보여 줍니다. 이는 새 가상 머신을 만드는 데 사용할 수 있는 재사용 가능한 이미지를 만들려는 경우에 유용합니다.

from azure.mgmt.compute.models import OperatingSystemStateTypes, HyperVGeneration

poller = compute_client.images.begin_create_or_update(
    'my_resource_group',
    'my_image_name',
    {
        'location': 'eastus',
        'storage_profile': {
           'os_disk': {
              'os_type': 'Linux',
              'os_state': OperatingSystemStateTypes.GENERALIZED,
              'blob_uri': 'https://<storage-account-name>.blob.core.windows.net/vm-images/test.vhd',
              'caching': "ReadWrite",
           },
        },
        'hyper_v_generation': HyperVGeneration.V2,
    }
)
image_resource = poller.result()

사용자 고유의 이미지에서 관리 디스크 만들기

이 예제에서는 기존 Managed Disk를 복사하여 새 Managed Disk를 만드는 방법을 보여줍니다. 이는 백업을 만들거나 다른 가상 머신에서 동일한 디스크 설정을 사용하려는 경우에 유용합니다.

from azure.mgmt.compute.models import DiskCreateOption

# If you don't know the id, do a 'get' like this to obtain it
managed_disk = compute_client.disks.get(self.group_name, 'myImageDisk')

poller = compute_client.disks.begin_create_or_update(
    'my_resource_group',
    'my_disk_name',
    {
        'location': 'eastus',
        'creation_data': {
            'create_option': DiskCreateOption.COPY,
            'source_resource_id': managed_disk.id
        }
    }
)

disk_resource = poller.result()

Managed Disks가 있는 가상 머신

특정 디스크 이미지를 기반으로 암시적으로 생성된 Managed Disk를 사용하여 가상 머신을 만들 수 있으므로 모든 디스크 세부 정보를 수동으로 정의할 필요가 없습니다.

Managed Disk는 Azure의 OS 이미지에서 VM을 만들 때 암시적으로 만들어집니다. Azure는 스토리지 계정을 자동으로 처리하므로 스토리지 계정을 수동으로 지정 storage_profile.os_disk 하거나 만들 필요가 없습니다.

storage_profile = azure.mgmt.compute.models.StorageProfile(
    image_reference = azure.mgmt.compute.models.ImageReference(
        publisher='Canonical',
        offer='UbuntuServer',
        sku='16.04-LTS',
        version='latest'
    )
)

Python용 Azure 관리 라이브러리를 사용하여 가상 머신을 만드는 방법을 보여 주는 전체 예제는 예제 - 가상 머신 만들기를 참조하세요. 이 예제에서는 매개 변수를 사용하는 방법을 보여 줍니다 storage_profile .

사용자 고유의 storage_profile 이미지에서 만들 수도 있습니다.

# If you don't know the id, do a 'get' like this to obtain it
image = compute_client.images.get(self.group_name, 'myImageDisk')

storage_profile = azure.mgmt.compute.models.StorageProfile(
    image_reference = azure.mgmt.compute.models.ImageReference(
        id = image.id
    )
)

이전에 프로비전된 Managed Disk를 쉽게 연결할 수 있습니다.

vm = compute_client.virtual_machines.get(
    'my_resource_group',
    'my_vm'
)
managed_disk = compute_client.disks.get('my_resource_group', 'myDisk')

vm.storage_profile.data_disks.append({
    'lun': 12, # You choose the value, depending of what is available for you
    'name': managed_disk.name,
    'create_option': DiskCreateOptionTypes.attach,
    'managed_disk': {
        'id': managed_disk.id
    }
})

async_update = compute_client.virtual_machines.begin_create_or_update(
    'my_resource_group',
    vm.name,
    vm,
)
async_update.wait()

관리 디스크를 사용하는 가상 머신 확장 세트

Azure Managed Disks 이전에는 Virtual Machine Scale Set의 각 VM에 대한 스토리지 계정을 수동으로 만들고 매개 변수를 사용하여 vhd_containers 확장 집합 REST API에서 해당 스토리지 계정을 지정해야 했습니다.

Azure Managed Disks를 사용하면 스토리지 계정 관리가 더 이상 필요하지 않습니다. 따라서 storage_profile의 Virtual Machine Scale Sets 사용은 이제 개별 VM 생성에 사용되는 것과 일치할 수 있습니다.

'storage_profile': {
    'image_reference': {
        "publisher": "Canonical",
        "offer": "UbuntuServer",
        "sku": "16.04-LTS",
        "version": "latest"
    }
},

전체 샘플은 다음과 같습니다.

naming_infix = "PyTestInfix"

vmss_parameters = {
    'location': self.region,
    "overprovision": True,
    "upgrade_policy": {
        "mode": "Manual"
    },
    'sku': {
        'name': 'Standard_A1',
        'tier': 'Standard',
        'capacity': 5
    },
    'virtual_machine_profile': {
        'storage_profile': {
            'image_reference': {
                "publisher": "Canonical",
                "offer": "UbuntuServer",
                "sku": "16.04-LTS",
                "version": "latest"
            }
        },
        'os_profile': {
            'computer_name_prefix': naming_infix,
            'admin_username': 'Foo12',
            'admin_password': 'BaR@123!!!!',
        },
        'network_profile': {
            'network_interface_configurations' : [{
                'name': naming_infix + 'nic',
                "primary": True,
                'ip_configurations': [{
                    'name': naming_infix + 'ipconfig',
                    'subnet': {
                        'id': subnet.id
                    }
                }]
            }]
        }
    }
}

# Create VMSS test
result_create = compute_client.virtual_machine_scale_sets.begin_create_or_update(
    'my_resource_group',
    'my_scale_set',
    vmss_parameters,
)
vmss_result = result_create.result()

Managed Disks를 사용하는 기타 작업

Managed Disk 크기 조정

이 예제에서는 기존 Managed Disk를 더 크게 만드는 방법을 보여줍니다. 이는 데이터 또는 애플리케이션에 더 많은 공간이 필요한 경우에 유용합니다.

managed_disk = compute_client.disks.get('my_resource_group', 'myDisk')
managed_disk.disk_size_gb = 25

async_update = self.compute_client.disks.begin_create_or_update(
    'my_resource_group',
    'myDisk',
    managed_disk
)
async_update.wait()

Managed Disks의 스토리지 계정 유형 업데이트

이 예제에서는 Managed Disk의 스토리지 유형을 변경하고 더 크게 만드는 방법을 보여 줍니다. 이는 데이터 또는 애플리케이션에 더 많은 공간 또는 더 나은 성능이 필요한 경우에 유용합니다.

from azure.mgmt.compute.models import StorageAccountTypes

managed_disk = compute_client.disks.get('my_resource_group', 'myDisk')
managed_disk.account_type = StorageAccountTypes.STANDARD_LRS

async_update = self.compute_client.disks.begin_create_or_update(
    'my_resource_group',
    'myDisk',
    managed_disk
)
async_update.wait()

Blob Storage에서 이미지 만들기

이 예제에서는 Azure Blob Storage에 저장된 VHD 파일에서 Managed Disk 이미지를 만드는 방법을 보여 줍니다. 이 기능은 새 가상 머신을 만드는 데 사용할 수 있는 재사용 가능한 이미지를 만들려는 경우에 유용합니다.

async_create_image = compute_client.images.create_or_update(
    'my_resource_group',
    'myImage',
    {
        'location': 'eastus',
        'storage_profile': {
            'os_disk': {
                'os_type': 'Linux',
                'os_state': "Generalized",
                'blob_uri': 'https://<storage-account-name>.blob.core.windows.net/vm-images/test.vhd',
                'caching': "ReadWrite",
            }
        }
    }
)
image = async_create_image.result()

현재 가상 머신에 연결된 Managed Disk의 스냅샷 만들기

이 예제에서는 가상 머신에 연결된 Managed Disk의 스냅샷을 만드는 방법을 보여 줍니다. 스냅샷을 사용하여 디스크를 백업하거나 필요한 경우 나중에 복원할 수 있습니다.

managed_disk = compute_client.disks.get('my_resource_group', 'myDisk')

async_snapshot_creation = self.compute_client.snapshots.begin_create_or_update(
        'my_resource_group',
        'mySnapshot',
        {
            'location': 'eastus',
            'creation_data': {
                'create_option': 'Copy',
                'source_uri': managed_disk.id
            }
        }
    )
snapshot = async_snapshot_creation.result()

참고하십시오