Udostępnij za pośrednictwem


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 Debiana do wirtualnego dysku twardego (VHD). 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

  • Aby uzyskać więcej wskazówek dotyczących przygotowywania systemu Linux na platformę Azure, zobacz Ogólne informacje o instalacji systemu Linux.
  • 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 convert-vhd polecenia cmdlet.
  • Podczas instalowania systemu Linux zaleca się używanie partycji standardowych, a nie menedżera woluminów logicznych (LVM), który jest często domyślny dla wielu instalacji. Użycie partycji pozwala uniknąć konfliktów nazw LVM z sklonowanymi maszynami wirtualnymi, szczególnie jeśli do rozwiązywania problemów należy dołączyć dysk systemu operacyjnego do innej maszyny wirtualnej. LVM lub RAID można również używać na dyskach danych.
  • Nie konfiguruj 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.

Przygotowywanie obrazu debiana dla platformy Azure

Podstawowy obraz chmury Debian platformy Azure można utworzyć za pomocą konstruktora obrazów w chmurze w pełni automatycznej instalacji (FAI). Aby przygotować obraz bez faI, zapoznaj się z artykułem ogólne kroki.

Następujące polecenia klonowania git i instalacji apt zostały pobrane z repozytorium Obrazów w chmurze Debian. 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 (na przykład skrypty powłoki) do elementu ./config_space/scripts/AZURE.

Przykładowy skrypt umożliwiający dostosowanie obrazu

$ 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

Prefiksuj wszystkie polecenia, które chcesz dostosować obraz za pomocą polecenia $ROOTCMD. Jest aliasowany jako chroot $target.

Kompilowanie obrazu debiana platformy Azure

$ make image_[release]_azure_amd64

To polecenie generuje kilka plików w bieżącym katalogu, w szczególności image_[release]_azure_amd64.raw plik obrazu.

Przekonwertuj nieprzetworzonego obrazu na wirtualny dysk twardy dla platformy Azure:

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"

Ten proces tworzy wirtualny dysk twardy image_[release]_azure_amd64.vhd o zaokrąglonym rozmiarze, aby można go było pomyślnie skopiować na dysk platformy Azure.

Uwaga

Zamiast klonować repozytorium salsa i kompilować obrazy lokalnie, bieżące stabilne obrazy można skompilować i pobrać z faI.

Po utworzeniu stabilnego obrazu wirtualnego dysku twardego Debian i przed przekazaniem sprawdź, czy są zainstalowane następujące pakiety:

  • apt-get install hyperv-demony
  • apt-get install waagent # (opcjonalne, ale zalecane w przypadku resetowania haseł i korzystania z rozszerzeń)
  • apt-get install cloud-init

Następnie wykonaj pełne uaktualnienie:

  • apt-get full-upgrade

Teraz należy utworzyć zasoby platformy Azure dla tego obrazu. W tym przykładzie użyto zmiennej $rounded_size_adjusted , więc powinna pochodzić z tego samego procesu powłoki z poprzedniego kroku.

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)

Jeśli przepustowość z komputera lokalnego do dysku platformy Azure powoduje długi czas przetwarzania przekazywania azcopyza pomocą polecenia , możesz użyć serwera przesiadkowego maszyny wirtualnej platformy Azure, aby przyspieszyć proces. Oto jak można wykonać ten proces:

  1. Utwórz tarball dysku VHD na komputerze lokalnym: tar -czvf ./image_buster_azure_amd64.vhd.tar.gz ./image_[release]_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 do przechowywania wyodrębnionego dysku VHD.
  3. azcopy Pobierz narzędzie do maszyny wirtualnej z systemem Linux platformy Azure. Możesz pobrać go z narzędzia Get started with AzCopy (Rozpoczynanie pracy z narzędziem AzCopy).
  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. Ten krok zajmuje trochę czasu na podstawie rozmiaru pliku.
  6. Na koniec na maszynie wirtualnej skopiuj dysk VHD na dysk azcopy platformy Azure za pomocą polecenia (poprzednie polecenie).

Teraz możesz używać wirtualnego dysku twardego systemu Debian Linux do tworzenia 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.