다음을 통해 공유


Debian VHD를 Azure에 대해 준비

적용 대상: ✔️ Linux VM ✔️ 유연한 확장 집합

필수 조건

이 섹션에서는 Debian 웹 사이트 에서 다운로드한 .iso 파일에서 Debian Linux 운영 체제를 VHD(가상 하드 디스크)에 설치했다고 가정합니다. .vhd 파일을 만드는 도구는 여러 가지가 있습니다. Hyper-V는 한 가지 예일 뿐입니다. Hyper-V 사용에 대한 자세한 내용은 Hyper-V 역할 설치 및 VM(가상 머신) 구성을 참조하세요.

설치 참고 사항

  • Azure용 Linux를 준비하는 방법에 대한 추가 팁은 일반 Linux 설치 참고 사항을 참조하세요.
  • 새 VHDX 형식은 Azure에서 지원되지 않습니다. Hyper-V 관리자 또는 convert-vhd cmdlet을 사용하여 디스크를 VHD 형식으로 변환할 수 있습니다.
  • Linux 시스템을 설치하는 경우, 많은 설치에서 기본값인 LVM(논리 볼륨 관리자)이 아닌 표준 파티션을 사용하는 것이 좋습니다. 파티션을 사용하면 특히 문제 해결을 위해 OS 디스크를 또 다른 VM에 연결해야 하는 경우 복제된 VM과 LVM 이름이 충돌하는 것을 방지합니다. 데이터 디스크에서 LVM 또는 RAID를 사용할 수도 있습니다.
  • OS 디스크에 스왑 파티션을 구성하지 않습니다. 임시 리소스 디스크에서 스왑 파일을 만들도록 Azure Linux 에이전트를 구성할 수 있습니다. 자세한 내용은 다음 단계에서 확인할 수 있습니다.
  • Azure의 모든 VHD에는 1MB로 정렬된 가상 크기가 있어야 합니다. 원시 디스크에서 VHD로 변환할 때 변환하기 전에 원시 디스크 크기가 1MB의 배수인지 확인해야 합니다. 자세한 내용은 Linux 설치 참고 사항을 참조하세요.

Azure용 Debian 이미지 준비

FAI(완전 자동 설치) 클라우드 이미지 작성기를 사용하여 기본 Azure Debian Cloud 이미지를 만들 수 있습니다. FAI 없이 이미지를 준비하려면 일반 단계 문서를 확인하세요.

Debian 클라우드 이미지 리포지토리에서 다음 git clone 및 apt 설치 명령을 가져왔습니다. 먼저 리포지토리를 복제하고 종속성을 설치합니다.

$ git clone https://salsa.debian.org/cloud-team/debian-cloud-images.git
$ sudo apt install --no-install-recommends ca-certificates debsums dosfstools \
    fai-server fai-setup-storage make python3 python3-libcloud python3-marshmallow \
    python3-pytest python3-yaml qemu-utils udev
$ cd ./debian-cloud-images

선택 사항: 스크립트(예: 셸 스크립트)를 ./config_space/scripts/AZURE에 추가하여 빌드를 사용자 지정합니다.

이미지를 사용자 지정하는 스크립트 예

$ mkdir -p ./config_space/scripts/AZURE
$ cat > ./config_space/scripts/AZURE/10-custom <<EOF
#!/bin/bash

\$ROOTCMD bash -c "echo test > /usr/local/share/testing"
EOF
$ sudo chmod 755 ./config_space/scripts/AZURE/10-custom

$ROOTCMD로 이미지를 사용자 지정하려는 명령의 접두사를 지정합니다. 별칭은 chroot $target입니다.

Azure Debian 이미지 빌드

$ make image_[release]_azure_amd64

이 명령은 현재 디렉터리의 몇 개 파일, 특히 image_[release]_azure_amd64.raw 이미지 파일을 출력합니다.

원시 이미지를 Azure용 VHD로 변환합니다.

rawdisk="image_[release]_azure_amd64.raw"
vhddisk="image_[release]_azure_amd64.vhd"

MB=$((1024*1024))
size=$(qemu-img info -f raw --output json "$rawdisk" | \
gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')

rounded_size=$(((($size+$MB-1)/$MB)*$MB))
rounded_size_adjusted=$(($rounded_size + 512))

echo "Rounded Size Adjusted = $rounded_size_adjusted"

sudo qemu-img resize "$rawdisk" $rounded_size
qemu-img convert -f raw -o subformat=fixed,force_size -O vpc "$rawdisk" "$vhddisk"

이 프로세스는 반올림된 크기의 VHD image_[release]_azure_amd64.vhd을(를) 만들어 Azure 디스크에 성공적으로 복사할 수 있도록 합니다.

참고 항목

salsa 리포지토리를 복제하고 이미지를 로컬로 빌드하는 대신 FAI에서 현재 안정적인 이미지를 빌드하고 다운로드할 수 있습니다.

안정적인 Debian VHD 이미지를 만든 후 업로드하기 전에 다음 패키지가 설치되어 있는지 확인합니다.

  • apt-get install hyperv-daemons
  • apt-get install waagent # (선택 사항이지만 암호 재설정 및 확장 사용에 권장)
  • apt-get install cloud-init

그런 다음 전체 업그레이드를 수행합니다.

  • apt-get full-upgrade

이제 이 이미지에 대한 Azure 리소스를 만들어야 합니다. 이 예제에서는 $rounded_size_adjusted 변수를 사용하므로 이전 단계와 동일한 셸 프로세스에서 가져와야 합니다.

az group create -l $LOCATION -n $RG

az disk create \
    -n $DISK \
    -g $RG \
    -l $LOCATION \
    --for-upload --upload-size-bytes "$rounded_size_adjusted" \
    --sku standard_lrs --hyper-v-generation V1

ACCESS=$(az disk grant-access \
    -n $DISK -g $RG \
    --access-level write \
    --duration-in-seconds 86400 \
    --query accessSas -o tsv)

azcopy copy "$vhddisk" "$ACCESS" --blob-type PageBlob

az disk revoke-access -n $DISK -g $RG
az image create \
    -g $RG \
    -n $IMAGE \
    --os-type linux \
    --source $(az disk show \
        -g $RG \
        -n $DISK \
        --query id -o tsv)
az vm create \
    -g $RG \
    -n $VM \
    --ssh-key-value $SSH_KEY_VALUE \
    --public-ip-address-dns-name $VM \
    --image $(az image show \
        -g $RG \
        -n $IMAGE \
        --query id -o tsv)

로컬 컴퓨터에서 Azure 디스크로의 대역폭으로 인해 azcopy로 업로드를 처리하는 데 시간이 오래 걸리는 경우 Azure VM 점프 상자를 사용하여 프로세스 속도를 높일 수 있습니다. 이 프로세스 수행 방법은 다음과 같습니다.

  1. 로컬 컴퓨터(tar -czvf ./image_buster_azure_amd64.vhd.tar.gz ./image_[release]_azure_amd64.vhd)에서 VHD의 tarball을 만듭니다.
  2. Azure Linux VM(선택한 배포)을 만듭니다. 추출한 VHD를 보관하기에 충분한 크기의 디스크로 만들어야 합니다.
  3. Azure Linux VM에 azcopy 유틸리티를 다운로드합니다. AzCopy 시작에서 검색할 수 있습니다.
  4. tarball을 VM(scp ./image_buster_azure_amd64.vhd.tar.gz <vm>:~)에 복사합니다.
  5. VM에서 VHD tar -xf ./image_buster_azure_amd64.vhd.tar.gz을(를) 추출합니다. 이 단계는 파일 크기에 따라 약간의 시간이 걸립니다.
  6. 마지막으로 VM에서 azcopy(위 명령)를 사용하여 VHD를 Azure Disk에 복사합니다.

이제 Debian Linux VHD를 사용하여 Azure에서 새 VM을 만들 준비가 되었습니다. .vhd 파일을 Azure에 처음 업로드하는 경우 사용자 지정 디스크에서 Linux VM 만들기를 참조하세요.