Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: ✔️ Flexibele schaalsets voor Linux-VM's ✔️
Prerequisites
In deze sectie wordt ervan uitgegaan dat u al een Debian Linux-besturingssysteem hebt geïnstalleerd vanaf een .iso-bestand dat u hebt gedownload van de Debian-website naar een virtuele harde schijf (VHD). Er bestaan meerdere hulpprogramma's om VHD-bestanden te maken. Hyper-V is slechts één voorbeeld. Zie De Hyper-V-rol installeren en een virtuele machine (VM) configureren voor instructies over het gebruik van Hyper-V.
Installatieopmerkingen
Important
De externe NVMe-voorbereiding in dit artikel is optioneel. Vul dit alleen in als u een installatiekopie maakt die u wilt uitrollen voor gebruik met een externe NVMe-schijfcontroller. Als de doel-VM gebruikmaakt van SCSI, slaat u de externe NVMe-sectie over en behoudt u de standaardinstellingen. Voor externe NVMe is een Gen2-image vereist. Voordat u een NVMe-installatiekopie maakt, controleert u of de Debian-release wordt vermeld in Ondersteunde installatiekopieën van besturingssystemen voor externe NVMe en of de exacte doel-VM-grootte NVMe vermeldt in de eigenschap DiskControllerTypes.
- Zie algemene linux-installatieopmerkingen voor meer tips over het voorbereiden van Linux voor Azure.
- De nieuwere VHDX-indeling wordt niet ondersteund in Azure. U kunt de schijf converteren naar VHD-indeling met Hyper-V-beheer of de
convert-vhdcmdlet. - Wanneer u het Linux-systeem installeert, wordt u aangeraden standaardpartities te gebruiken in plaats van LVM (Logical Volume Manager). Dit is vaak de standaardinstelling voor veel installaties. Als u partities gebruikt, voorkomt u dat de LVM-naam conflicteert met gekloonde VM's, met name als een besturingssysteemschijf ooit aan een andere VIRTUELE machine moet worden gekoppeld voor probleemoplossing. LVM of RAID kan ook worden gebruikt op gegevensschijven.
- Configureer geen wisselpartitie op de besturingssysteemschijf. De Azure Linux-agent kan worden geconfigureerd voor het maken van een wisselbestand op de tijdelijke resourceschijf. Meer informatie vindt u in de volgende stappen.
- Alle VHD's in Azure moeten een virtuele grootte hebben die is afgestemd op 1 MB. Wanneer u converteert van een onbewerkte schijf naar VHD, moet u ervoor zorgen dat de grootte van de onbewerkte schijf vóór de conversie een veelvoud van 1 MB is. Zie de installatieopmerkingen voor Linux voor meer informatie.
Important
Wisselrichtlijnen die gebruikmaken van de tijdelijke resourceschijf zijn alleen van toepassing op VM-grootten die lokale tijdelijke opslag bevatten. Het type externe schijfcontroller, SCSI of NVMe, bepaalt niet of er een resourceschijf beschikbaar is.
Een Debian-image voorbereiden voor Azure
U kunt de Azure Debian-cloudbasisinstallatiekopie maken met de hulpprogramma voor cloudinstallatiekopieën van Fully Automatic Installation (FAI). Als u een afbeelding wilt voorbereiden zonder FAI, raadpleegt u het artikel algemene stappen.
De volgende git-kloon- en apt-installatieopdrachten zijn opgehaald uit de Debian-opslagplaats voor cloudinstallatiekopieën. Begin met het klonen van de opslagplaats en het installeren van afhankelijkheden:
$ 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
Optioneel: Pas de build aan door scripts (bijvoorbeeld shellscripts) toe te voegen aan ./config_space/scripts/AZURE.
Voorbeeld van een script om de afbeelding aan te passen
$ 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
Laat alle opdrachten waarmee u de afbeelding wilt aanpassen voorafgaan door $ROOTCMD. Het heeft de alias chroot $target.
De Debian-schijfconfiguratie valideren
Voeg voor zowel SCSI- als NVMe-images een FAI-aanpassingsscript toe dat /etc/fstab valideert en niet-persistente schijfnamen weigert:
$ cat > ./config_space/scripts/AZURE/15-storage-validation <<'EOF'
#!/bin/bash
set -eu
$ROOTCMD findmnt --verify --verbose
if $ROOTCMD grep -Eq '^[[:space:]]*[^#].*[[:space:]]/dev/(sd|nvme)' /etc/fstab; then
echo 'Replace /dev/sd* and /dev/nvme* entries in /etc/fstab with UUIDs or another persistent identifier.' >&2
exit 1
fi
EOF
$ sudo chmod 755 ./config_space/scripts/AZURE/15-storage-validation
Debian-image voorbereiden voor NVMe op afstand
Vul deze sectie alleen in als u een image maakt voor een externe NVMe-schijfcontroller. Ga anders verder met het bouwen van de Azure Debian-installatiekopieën zonder dit script toe te voegen.
Voeg nog een FAI-aanpassingsscript toe voordat u de NVMe-image maakt. Het script maakt de NVMe-stuurprogramma's beschikbaar tijdens het vroeg opstarten en stelt de time-out voor Azure NVMe I/O in.
$ cat > ./config_space/scripts/AZURE/20-nvme <<'EOF'
#!/bin/bash
set -eu
$ROOTCMD bash -c "printf '%s\n' nvme nvme_core >> /etc/initramfs-tools/modules"
$ROOTCMD update-initramfs -u -k all
$ROOTCMD sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT=/ s/"$/ nvme_core.io_timeout=240"/' /etc/default/grub
$ROOTCMD update-grub
$ROOTCMD modinfo nvme
$ROOTCMD modinfo nvme_core
$ROOTCMD bash -c "lsinitramfs /boot/initrd.img-\$(ls /lib/modules | sort -V | tail -1) | grep -Eq 'nvme(_core)?\\.ko'"
EOF
$ sudo chmod 755 ./config_space/scripts/AZURE/20-nvme
Important
Controleer de gegenereerde GRUB-opdrachtregel en /etc/initramfs-tools/modules voor dubbele vermeldingen als uw FAI-configuratie deze waarden al instelt. Beide nvme en nvme_core moeten aanwezig zijn in de gegenereerde initramfs.
De Azure Debian-image bouwen
$ make image_[release]_azure_amd64
Met deze opdracht worden een aantal bestanden uitgevoerd in de huidige map, met name het image_[release]_azure_amd64.raw afbeeldingsbestand.
Zet de ruwe image om naar VHD voor 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"
Met dit proces maakt u een VHD image_[release]_azure_amd64.vhd met een afgeronde grootte, zodat deze kan worden gekopieerd naar een Azure schijf.
Opmerking
In plaats van de salsa-repository te klonen en images lokaal te bouwen, kunnen de huidige stabiele images worden gebouwd en gedownload van FAI.
Nadat u een stabiele Debian VHD-image hebt gemaakt en voordat u deze uploadt, controleert u of de volgende pakketten zijn geïnstalleerd:
sudo apt update
sudo apt install hyperv-daemons
sudo apt install waagent # *(Optional but recommended for password resets and the use of extensions)*
sudo apt-get install cloud-init
Voer vervolgens een volledige upgrade uit:
sudo apt full-upgrade
Nu moeten de Azure-resources voor deze image worden aangemaakt. In dit voorbeeld wordt de $rounded_size_adjusted variabele gebruikt, dus deze moet afkomstig zijn uit hetzelfde shell-proces uit de vorige stap.
Stel de Hyper-V generatie in voordat u de beheerde schijf maakt. Het voorbeeld staat standaard op V1 voor een standaard SCSI-image. Wijzig het alleen in V2 als u het gedeelte over externe NVMe-voorbereiding hebt voltooid of anderszins een Generation 2-image voorbereidt.
HYPER_V_GENERATION=V1
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 $HYPER_V_GENERATION
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 \
--hyper-v-generation $HYPER_V_GENERATION \
--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)
Als de bandbreedte tussen uw lokale computer en de Azure-schijf ervoor zorgt dat het uploaden met azcopy lang duurt, kunt u een Azure-VM-jumpbox gebruiken om het proces te versnellen. U kunt dit proces als volgt uitvoeren:
- Maak een tarball van de VHD op uw lokale computer:
tar -czvf ./image_buster_azure_amd64.vhd.tar.gz ./image_[release]_azure_amd64.vhd. - Maak een Azure Linux-VM (distributie van uw keuze). Zorg ervoor dat u deze maakt met een groot genoeg schijf om de geëxtraheerde VHD te bewaren.
- Download het
azcopyhulpprogramma naar de Azure Linux-VM. U kunt het ophalen uit Aan de slag met AzCopy. - Kopieer de tarball naar de VM:
scp ./image_buster_azure_amd64.vhd.tar.gz <vm>:~. - Pak op de VM het VHD-bestand uit:
tar -xf ./image_buster_azure_amd64.vhd.tar.gz. Deze stap neemt enige tijd in beslag op basis van de grootte van het bestand. - Kopieer ten slotte op de virtuele machine de VHD naar de Azure schijf met
azcopy(de voorgaande opdracht).
Verwante onderwerpen
U kunt nu uw Debian Linux-VHD gebruiken om nieuwe VM's te maken in Azure. Als dit de eerste keer is dat u het .vhd-bestand uploadt naar Azure, raadpleeg Een Linux-VM maken op basis van een aangepaste schijf.
Voor een bestaande Azure-VM die u van SCSI naar NVMe moet verplaatsen, gebruikt u Linux en Windows VM's van SCSI naar NVMe converteren. Zie NVMe-overzicht voor informatie over architectuur en ondersteuning.