Przygotowywanie wirtualnego dysku twardego systemu Debian dla platformy Azure

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️

Wymagania wstępne

W tej sekcji założono, że system operacyjny Debian Linux został już zainstalowany z pliku ISO pobranego z witryny internetowej Debian na wirtualny dysk twardy. Istnieje wiele narzędzi do tworzenia plików vhd; Funkcja Hyper-V jest tylko jednym przykładem. Aby uzyskać instrukcje dotyczące korzystania z funkcji Hyper-V, zobacz Instalowanie roli funkcji Hyper-V i Konfigurowanie maszyny wirtualnej.

Uwagi dotyczące instalacji

  • Zobacz również Ogólne uwagi dotyczące instalacji systemu Linux, aby uzyskać więcej wskazówek dotyczących przygotowywania systemu Linux na platformę Azure.
  • Nowszy format VHDX nie jest obsługiwany na platformie Azure. Dysk można przekonwertować na format VHD przy użyciu Menedżera funkcji Hyper-V lub polecenia cmdlet convert-vhd .
  • Podczas instalowania systemu Linux zaleca się używanie partycji standardowych, a nie LVM (często jest to ustawienie domyślne dla wielu instalacji). Pozwoli to uniknąć konfliktów nazw LVM z sklonowanymi maszynami wirtualnymi, szczególnie jeśli dysk systemu operacyjnego kiedykolwiek musi być dołączony do innej maszyny wirtualnej w celu rozwiązywania problemów. LvM lub RAID może być używany na dyskach danych, jeśli jest to preferowane.
  • Nie należy konfigurować partycji wymiany na dysku systemu operacyjnego. Agenta systemu Linux platformy Azure można skonfigurować do utworzenia pliku wymiany na dysku tymczasowego zasobu. Więcej informacji można znaleźć w poniższych krokach.
  • Wszystkie wirtualne dyski twarde na platformie Azure muszą mieć rozmiar wirtualny wyrównany do 1 MB. Podczas konwertowania z dysku nieprzetworzonego na dysk VHD należy upewnić się, że rozmiar nieprzetworzonego dysku to wielokrotność 1 MB przed konwersją. Aby uzyskać więcej informacji, zobacz Informacje o instalacji systemu Linux.

Tworzenie wirtualnych dysków twardych Debian przy użyciu funkcji Zarządzania platformą Azure

Dostępne są narzędzia do generowania dysków VHD Debian dla platformy Azure, takich jak skrypty zarządzania platformą Azure z instaclustr. Jest to zalecane podejście w porównaniu z tworzeniem obrazu od podstaw. Aby na przykład utworzyć dysk VHD Debian 8, uruchom następujące polecenia, aby pobrać azure-manage narzędzie (i zależności) i uruchomić azure_build_image skrypt:

# sudo apt-get update
# sudo apt-get install git qemu-utils mbr kpartx debootstrap

# sudo apt-get install python3-pip python3-dateutil python3-cryptography
# sudo pip3 install azure-storage azure-servicemanagement-legacy azure-common pytest pyyaml
# git clone https://github.com/credativ/azure-manage.git
# cd azure-manage
# sudo pip3 install .

# sudo azure_build_image --option release=jessie --option image_size_gb=30 --option image_prefix=debian-jessie-azure section

Przygotowywanie obrazu debiana dla platformy Azure

Podstawowy obraz usługi Azure Debian Cloud można utworzyć za pomocą konstruktora obrazów w chmurze FAI.

(Następujące polecenia klonowania git i instalacji apt zostały pobrane z repozytorium Debian Cloud Images) Zacznij od sklonowania repozytorium i zainstalowania zależności:

$ 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

(Opcjonalnie) Dostosuj kompilację, dodając skrypty (np. skrypty powłoki) do elementu ./config_space/scripts/AZURE.

Przykładem skryptu do dostosowania obrazu jest:

$ 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

Należy pamiętać, że ważne jest, aby prefiksować wszystkie polecenia, które chcesz dostosować obraz, $ROOTCMD ponieważ jest to alias jako chroot $target.

Skompiluj obraz debiana 10 platformy Azure:

$ make image_buster_azure_amd64

Spowoduje to utworzenie kilku plików w bieżącym katalogu, w szczególności image_buster_azure_amd64.raw pliku obrazu.

Aby przekonwertować nieprzetworzonego obrazu na wirtualny dysk twardy dla platformy Azure, możesz wykonać następujące czynności:

rawdisk="image_buster_azure_amd64.raw"
vhddisk="image_buster_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"

Spowoduje to utworzenie wirtualnego dysku twardego image_buster_azure_amd64.vhd o zaokrąglonym rozmiarze w celu pomyślnego skopiowania go na dysk platformy Azure.

Teraz musimy utworzyć zasoby platformy Azure dla tego obrazu (używa to zmiennej $rounded_size_adjusted , więc powinno to pochodzić z tego samego procesu powłoki z góry).

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)

Uwaga

Jeśli przepustowość z komputera lokalnego do dysku platformy Azure powoduje długi czas przetwarzania przekazywania za pomocą narzędzia azcopy, możesz użyć serwera przesiadkowego maszyny wirtualnej platformy Azure, aby przyspieszyć proces. Oto jak można to zrobić:

  1. Utwórz tarball dysku VHD na komputerze lokalnym: tar -czvf ./image_buster_azure_amd64.vhd.tar.gz ./image_buster_azure_amd64.vhd.
  2. Utwórz maszynę wirtualną z systemem Linux platformy Azure (wybraną dystrybucję). Upewnij się, że został utworzony z wystarczająco dużym dyskiem, aby przechowywać wyodrębniony dysk VHD!
  3. Pobierz narzędzie azcopy do maszyny wirtualnej z systemem Linux platformy Azure. Można go pobrać z tego miejsca.
  4. Skopiuj tarball do maszyny wirtualnej: scp ./image_buster_azure_amd64.vhd.tar.gz <vm>:~.
  5. Na maszynie wirtualnej wyodrębnij dysk VHD: tar -xf ./image_buster_azure_amd64.vhd.tar.gz (zajmie to trochę czasu, biorąc pod uwagę rozmiar pliku).
  6. Na koniec na maszynie wirtualnej skopiuj wirtualny dysk twardy na dysk azcopy platformy Azure za pomocą polecenia (polecenie z powyższego).

Następne kroki: Teraz możesz użyć wirtualnego dysku twardego systemu Debian Linux do utworzenia nowych maszyn wirtualnych na platformie Azure. Jeśli po raz pierwszy przekazujesz plik vhd na platformę Azure, zobacz Tworzenie maszyny wirtualnej z systemem Linux na podstawie dysku niestandardowego.