Information för community-stödda och icke-godkända distributioner
Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Linux-datorer ✔️
Serviceavtalet för Azure-plattformen gäller endast för virtuella datorer som kör Linux-operativsystemet när en av de godkända distributionerna används. För dessa godkända distributioner tillhandahålls förkonfigurerade Linux-avbildningar i Azure Marketplace.
Alla andra, icke-Azure Marketplace, distributioner som körs i Azure har ett antal krav. Den här artikeln kan inte vara omfattande eftersom varje distribution skiljer sig åt. Även om du uppfyller alla kriterier nedan kan du behöva justera Linux-systemet avsevärt för att det ska kunna köras korrekt.
Den här artikeln fokuserar på allmän vägledning för att köra Linux-distributionen i Azure.
Allmänna linux-installationsanteckningar
Formatet hyper-v virtuell hårddisk (VHDX) stöds inte i Azure, endast fast virtuell hårddisk. Du kan konvertera disken till VHD-format med Hjälp av Hyper-V Manager eller cmdleten Convert-VHD . Om du använder VirtualBox väljer du Fast storlek i stället för standardstorleken (dynamiskt allokerad) när du skapar disken.
Azure stöder Virtuella datorer med Gen1 (BIOS-start) & Gen2 (UEFI-start).
Modulen vfat-kernel måste vara aktiverad i kerneln
Den maximala storleken som tillåts för den virtuella hårddisken är 1 023 GB.
När du installerar Linux-systemet rekommenderar vi att du använder standardpartitioner i stället för Logisk volymhanterare (LVM) som är standard för många installationer. Om du använder standardpartitioner undviker du LVM-namnkonflikter med klonade virtuella datorer, särskilt om en OS-disk någonsin är ansluten till en annan identisk virtuell dator för felsökning. LVM eller RAID kan användas på datadiskar.
Kernel-stöd för montering av UDF-filsystem är nödvändigt. Vid första starten på Azure skickas etableringskonfigurationen till den virtuella Linux-datorn med UDF-formaterade media som är anslutna till gästen. Azure Linux-agenten måste montera UDF-filsystemet för att läsa dess konfiguration och etablera den virtuella datorn.
Tidigare versioner av Linux-kernel än 2.6.37 stöder inte NUMA på Hyper-V med större VM-storlekar. Det här problemet påverkar främst äldre distributioner med den överordnade Red Hat 2.6.32-kerneln och har åtgärdats i Red Hat Enterprise Linux (RHEL) 6.6 (kernel-2.6.32-504). System som kör anpassade kernels som är äldre än 2.6.37 eller RHEL-baserade kernels som är äldre än 2.6.32-504 måste ange startparametern
numa=off
på kernel-kommandoraden i grub.conf. Mer information finns i Red Hat KB 436883.Konfigurera inte en växlingspartition på OS-disken. Linux-agenten kan konfigureras för att skapa en växlingsfil på den tillfälliga resursdisken enligt beskrivningen i följande steg.
Alla virtuella hårddiskar i Azure måste ha en virtuell storlek som är justerad till 1 MB (1 024 × 1 024 byte). När du konverterar från en rådisk till en virtuell hårddisk måste du se till att storleken på den råa disken är en multipel på 1 MB före konvertering, enligt beskrivningen i följande steg.
Använd den senaste distributionsversionen, paketen och programvaran.
Ta bort användare och systemkonton, offentliga nycklar, känsliga data, onödig programvara och program.
Anteckning
(Cloud-init >= 21.2 tar bort udf-kravet.) men utan udf-modulen aktiverad monteras inte cdrom under etableringen, vilket förhindrar att anpassade data tillämpas. En lösning för detta skulle vara att tillämpa anpassade data med hjälp av användardata, men till skillnad från anpassade data krypteras inte användardata. https://cloudinit.readthedocs.io/en/latest/topics/format.html
Installera kernelmoduler utan Hyper-V
Azure körs på Hyper-V-hypervisor-programmet, så Linux kräver att vissa kernelmoduler körs i Azure. Om du har en virtuell dator som har skapats utanför Hyper-V kanske Linux-installationsprogrammet inte innehåller drivrutinerna för Hyper-V i den ursprungliga ramdisken (initrd eller initramfs), såvida inte den virtuella datorn identifierar att den körs i en Hyper-V-miljö. När du använder ett annat virtualiseringssystem (till exempel VirtualBox, KVM och så vidare) för att förbereda Din Linux-avbildning kan du behöva återskapa initrd så att åtminstone hv_vmbus- och hv_storvsc kernelmoduler är tillgängliga på den ursprungliga ramdisken. Det här kända problemet gäller system som baseras på den överordnade Red Hat-fördelningen och eventuellt andra.
Mekanismen för att återskapa initrd- eller initramfs-avbildningen kan variera beroende på fördelningen. Läs dokumentationen eller supporten för distributionen för att få rätt procedur. Här är ett exempel på hur du återskapar initrd med hjälp mkinitrd
av verktyget:
Säkerhetskopiera den befintliga initrd-avbildningen:
cd /boot sudo cp initrd-`uname -r`.img initrd-`uname -r`.img.bak
initrd
Återskapa med kernelmodulernahv_vmbus
ochhv_storvsc
:sudo mkinitrd --preload=hv_storvsc --preload=hv_vmbus -v -f initrd-`uname -r`.img `uname -r`
Ändra storlek på virtuella hårddiskar
VHD-avbildningar på Azure måste ha en virtuell storlek som är justerad till 1 MB. Vanligtvis justeras virtuella hårddiskar som skapats med Hyper-V korrekt. Om den virtuella hårddisken inte är korrekt justerad kan du få ett felmeddelande som liknar följande när du försöker skapa en avbildning från den virtuella hårddisken.
The VHD http:\//\<mystorageaccount>.blob.core.windows.net/vhds/MyLinuxVM.vhd has an unsupported virtual size of 21475270656 bytes. The size must be a whole number (in MBs).
I det här fallet ändrar du storlek på den virtuella datorn med antingen Hyper-V Manager-konsolen eller PowerShell-cmdleten Resize-VHD . Om du inte kör i en Windows-miljö rekommenderar vi att du använder qemu-img
för att konvertera (om det behövs) och ändra storlek på den virtuella hårddisken.
Anteckning
Det finns en känd bugg i qemu-img-versioner>=2.2.1 som resulterar i en felaktigt formaterad virtuell hårddisk. Problemet har åtgärdats i QEMU 2.6. Vi rekommenderar att du använder antingen qemu-img
2.2.0 eller lägre, eller 2,6 eller senare.
Ändra storlek på den virtuella hårddisken direkt med hjälp av verktyg som
qemu-img
ellervbox-manage
kan resultera i en vHD som inte kan startas. Vi rekommenderar att du först konverterar den virtuella hårddisken till en RAW-diskbild. Om vm-avbildningen skapades som en RAW-diskavbildning (standardvärdet för vissa hypervisorer, till exempel KVM), kan du hoppa över det här steget.qemu-img convert -f vpc -O raw MyLinuxVM.vhd MyLinuxVM.raw
Beräkna den nödvändiga storleken på diskbilden så att den virtuella storleken justeras till 1 MB. Följande Bash Shell-skript använder
qemu-img info
för att fastställa diskbildens virtuella storlek och beräknar sedan storleken till nästa 1 MB.rawdisk="MyLinuxVM.raw" vhddisk="MyLinuxVM.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)) echo "Rounded Size = $rounded_size"
Ändra storlek på raw-disken med enligt
$rounded_size
ovanstående.qemu-img resize MyLinuxVM.raw $rounded_size
Konvertera nu RAW-disken tillbaka till en virtuell hårddisk med fast storlek.
qemu-img convert -f raw -o subformat=fixed,force_size -O vpc MyLinuxVM.raw MyLinuxVM.vhd
Eller ta bort
force_size
alternativet med qemu-versioner före 2.6.qemu-img convert -f raw -o subformat=fixed -O vpc MyLinuxVM.raw MyLinuxVM.vhd
Krav för Linux-kernel
Lis-drivrutinerna (Linux Integration Services) för Hyper-V och Azure har bidragit direkt till den överordnade Linux-kerneln. Många distributioner som innehåller en ny Linux-kernelversion (till exempel 3.x) har redan dessa drivrutiner tillgängliga, eller på annat sätt tillhandahåller bakåtporterade versioner av dessa drivrutiner med sina kernels. Dessa drivrutiner uppdateras ständigt i den överordnade kerneln med nya korrigeringar och funktioner, så när det är möjligt rekommenderar vi att du kör en godkänd distribution som innehåller dessa korrigeringar och uppdateringar.
Om du kör en variant av Red Hat Enterprise Linux version 6.0 till 6.3 måste du installera de senaste LIS-drivrutinerna för Hyper-V. Från och med RHEL 6.4+ (och derivat) ingår LIS-drivrutinerna redan i kerneln och därför behövs inga ytterligare installationspaket.
Om en anpassad kernel krävs rekommenderar vi en ny kernelversion (till exempel 3.8+). För distributioner eller leverantörer som underhåller sin egen kernel måste du regelbundet backportera LIS-drivrutinerna från den överordnade kerneln till din anpassade kernel. Även om du redan kör en relativt ny kernelversion rekommenderar vi starkt att du håller reda på eventuella överordnade korrigeringar i LIS-drivrutinerna och backporterar dem efter behov. Platserna för LIS-drivrutinskällfilerna anges i MAINTAINERS-filen i Linux-kernelns källträd:
F: arch/x86/include/asm/mshyperv.h
F: arch/x86/include/uapi/asm/hyperv.h
F: arch/x86/kernel/cpu/mshyperv.c
F: drivers/hid/hid-hyperv.c
F: drivers/hv/
F: drivers/input/serio/hyperv-keyboard.c
F: drivers/net/hyperv/
F: drivers/scsi/storvsc_drv.c
F: drivers/video/fbdev/hyperv_fb.c
F: include/linux/hyperv.h
F: tools/hv/
Följande korrigeringar måste ingå i kerneln. Den här listan kan inte slutföras för alla distributioner.
- ata_piix: skjut upp diskar till Hyper-V-drivrutinerna som standard
- storvsc: Konto för paket under överföring i ÅTERSTÄLLNINGssökvägen
- storvsc: undvik användning av WRITE_SAME
- storvsc: Inaktivera WRITE SAME för RAID- och virtuella värdkortsdrivrutiner
- storvsc: NULL-pekarens referenskorrigering
- storvsc: ringbuffertfel kan leda till I/O-frysning
- scsi_sysfs: skydda mot dubbel körning av __scsi_remove_device
Azure Linux-agenten
Azure Linux-agentenwaagent
etablerar en virtuell Linux-dator i Azure. Du kan hämta den senaste versionen, filproblem eller skicka pull-begäranden på GitHub-lagringsplatsen för Linux-agenten.
- Linux-agenten släpps under Apache 2.0-licensen. Många distributioner tillhandahåller redan RPM- eller .deb-paket för agenten, och dessa paket kan enkelt installeras och uppdateras.
- Azure Linux-agenten kräver Python v2.6+.
- Agenten kräver också python-pyasn1-modulen. De flesta distributioner tillhandahåller den här modulen som ett separat paket som ska installeras.
- I vissa fall kanske Azure Linux-agenten inte är kompatibel med NetworkManager. Många av RPM/deb-paketen som tillhandahålls av distributioner konfigurerar NetworkManager som en konflikt med waagent-paketet. I dessa fall avinstalleras NetworkManager när du installerar Linux-agentpaketet.
- Azure Linux-agenten måste vara minst den version som stöds.
Anteckning
Kontrollera att modulerna "udf" och "vfat" är aktiverade. Om du inaktiverar UDF-modulen uppstår ett etableringsfel. Om du inaktiverar VFAT-modulen orsakas både etablerings- och startfel. Cloud-init >= 21.2 kan etablera virtuella datorer utan att kräva UDF om: 1) den virtuella datorn skapades med offentliga SSH-nycklar och inte lösenord och 2) inga anpassade data angavs.
Allmänna systemkrav för Linux
Ändra startraden för kernel i GRUB eller GRUB2 så att följande parametrar inkluderas, så att alla konsolmeddelanden skickas till den första serieporten. Dessa meddelanden kan hjälpa Azure Support med felsökning av eventuella problem.
GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Vi rekommenderar också att du tar bort följande parametrar om de finns.
rhgb quiet crashkernel=auto
Grafisk och tyst start är inte användbart i en molnmiljö, där vi vill att alla loggar ska skickas till serieporten. Alternativet
crashkernel
kan vara konfigurerat om det behövs, men observera att den här parametern minskar mängden tillgängligt minne på den virtuella datorn med minst 128 MB, vilket kan vara problematiskt för mindre VM-storlekar.När du har redigerat /etc/default/grub kör du följande kommando för att återskapa grub-konfigurationen:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Lägg till Hyper-V-moduler både initrd- och initramfs-instruktioner (Dracut).
Återskapa
initrd
ellerinitramfs
.Initramfs
cp /boot/initramfs-$(uname -r).img /boot/initramfs-[latest kernel version ].img.bak dracut -f -v /boot/initramfs-[latest kernel version ].img [depending on the version of grub] grub-mkconfig -o /boot/grub/grub.cfg grub2-mkconfig -o /boot/grub2/grub.cfg
Initrd
mv /boot/[initrd kernel] /boot/[initrd kernel]-old mkinitrd /boot/initrd.img-[initrd kernel]-generic /boot/[initrd kernel]-generic-old update-initramfs -c -k [initrd kernel] update-grub
Kontrollera att SSH-servern är installerad och konfigurerad för att starta vid start. Den här konfigurationen är vanligtvis standard.
Installera Azure Linux-agenten. Azure Linux-agenten krävs för att etablera en Linux-avbildning i Azure. Många distributioner tillhandahåller agenten som ett RPM- eller .deb-paket (paketet kallas vanligtvis WALinuxAgent eller walinuxagent). Agenten kan också installeras manuellt genom att följa stegen i Linux-agentguiden.
Anteckning
Kontrollera att modulerna "udf" och "vfat" är aktiverade. Om du blockerar eller tar bort udf-modulen uppstår ett etableringsfel. Blocklisting eller borttagning av vfat-modulen orsakar både etablerings- och startfel. (_Cloud-init >= 21.2 tar bort udf-kravet. Mer information finns överst i dokumentet)
Installera Azure Linux-agenten, cloud-init och andra nödvändiga verktyg genom att köra följande kommando:
Redhat/Centos
sudo yum install -y [waagent] cloud-init cloud-utils-growpart gdisk hyperv-daemons
Ubuntu/Debian
sudo apt install walinuxagent cloud-init cloud-utils-growpart gdisk hyperv-daemons
Suse
sudo zypper install python-azure-agent cloud-init cloud-utils-growpart gdisk hyperv-daemons
Aktivera sedan agenten och cloud-init för alla distributioner med hjälp av:
sudo systemctl enable waagent.service sudo systemctl enable cloud-init.service
Växla: Skapa inte växlingsutrymme på OS-disken.
Azure Linux-agenten eller Cloud-init kan användas för att konfigurera växlingsutrymme med hjälp av den lokala resursdisken. Den här resursdisken är ansluten till den virtuella datorn efter etablering i Azure. Den lokala resursdisken är en tillfällig disk och kan tömmas när den virtuella datorn avetableras. Följande block visar hur du konfigurerar växlingen.
Azure Linux-agent Ändra följande parametrar i /etc/waagent.conf
ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: Set this to your desired size.
Cloud-init Konfigurera cloud-init för att hantera etableringen:
sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-auto/g' /etc/waagent.conf sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
Konfigurera Cloud-init för att skapa växling.
Om du vill formatera och skapa växling har du två alternativ:
Skicka in detta som en cloud-init-konfiguration varje gång du skapar en virtuell dator via
customdata
. Detta är den rekommenderade metoden.Använd ett cloud-init-direktiv bakat i avbildningen som gör detta varje gång den virtuella datorn skapas.
Skapa cfg-fil för att konfigurera växling med Cloud-init:
echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF #cloud-config # Generated by Azure cloud image build disk_setup: ephemeral0: table_type: mbr layout: [66, [33, 82]] overwrite: True fs_setup: - device: ephemeral0.1 filesystem: ext4 - device: ephemeral0.2 filesystem: swap mounts: - ["ephemeral0.1", "/mnt"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"] EOF
Konfigurera cloud-init för att hantera etableringen:
- Konfigurera waagent för cloud-init:
Om du migrerar en specifik virtuell dator och inte vill skapa en generaliserad avbildning anger dused -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /etc/waagent.conf sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
Provisioning.Agent=disabled
i konfigurationen/etc/waagent.conf
. - Konfigurera monteringar:
echo "Adding mounts and disk_setup to init stage" sed -i '/ - mounts/d' /etc/cloud/cloud.cfg sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
- Konfigurera Azure-datakälla:
echo "Allow only Azure datasource, disable fetching network setting via IMDS" cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF datasource_list: [ Azure ] datasource: Azure: apply_network_config: False EOF
- Ta bort befintlig växlingsfil om den har konfigurerats:
if [[ -f /mnt/resource/swapfile ]]; then echo "Removing swapfile" #RHEL uses a swapfile by defaul swapoff /mnt/resource/swapfile rm /mnt/resource/swapfile -f fi
- Konfigurera waagent för cloud-init:
Konfigurera cloud-init-loggning:
echo "Add console log file" cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF # This tells cloud-init to redirect its stdout and stderr to # 'tee -a /var/log/cloud-init-output.log' so the user can see output # there without needing to look on the console. output: {all: '| tee -a /var/log/cloud-init-output.log'} EOF
Avetablera.
Varning
Om du migrerar en specifik virtuell dator och inte vill skapa en generaliserad avbildning hoppar du över avetableringssteget. Om du kör kommandot waagent -force -deprovision+user blir källdatorn oanvändbar. Det här steget är endast avsett att skapa en generaliserad avbildning.
Kör följande kommandon för att avetablera den virtuella datorn.
# sudo rm -f /var/log/waagent.log # sudo cloud-init clean # waagent -force -deprovision+user # rm -f ~/.bash_history # export HISTSIZE=0 # logout
Anteckning
I Virtualbox kan följande fel visas när du har kört
waagent -force -deprovision
som säger[Errno 5] Input/output error
. Det här felmeddelandet är inte kritiskt och kan ignoreras.Stäng av den virtuella datorn och ladda upp den virtuella hårddisken till Azure.
Nästa steg
Skapa en virtuell Linux-dator från en anpassad disk med Azure CLI.