Förbereda en CentOS-baserad virtuell dator för Azure
Varning
Den här artikeln refererar till CentOS, en Linux-distribution som närmar sig EOL-status (end-of-life). Överväg att använda och planera i enlighet med detta. Mer information finns i CentOS-vägledningen för livets slut.
Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Linux-datorer ✔️
Lär dig hur du skapar och laddar upp en virtuell Azure-hårddisk (VHD) som innehåller ett CentOS-baserat Linux-operativsystem (OS). Mer information finns i:
- Förbereda en virtuell CentOS 6.x-dator (VM) för Azure
- Förbereda en virtuell CentOS 7.0+-dator för Azure
Förutsättningar
Den här artikeln förutsätter att du redan har installerat ett CentOS(eller liknande derivat) Linux-operativsystem till en virtuell hårddisk. Det finns flera verktyg för att skapa VHD-filer. Ett exempel är en virtualiseringslösning som Hyper-V. Anvisningar finns i Installera Hyper-V-rollen och konfigurera en virtuell dator.
Installationsanmärkningar för CentOS
- Fler tips om hur du förbereder Linux för Azure finns i Allmänna linux-installationsanteckningar.
- VHDX-formatet 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 standardvärdet som allokeras dynamiskt när du skapar disken. - Modulen vfat kernel måste vara aktiverad i kerneln.
- När du installerar Linux-systemet rekommenderar vi att du använder standardpartitioner i stället för Logical Volume Manager (LVM), vilket ofta är standard för många installationer. Med hjälp av partitioner undviks LVM-namnkonflikter med klonade virtuella datorer, särskilt om en OS-disk någonsin behöver anslutas till en annan identisk virtuell dator för felsökning. LVM eller RAID kan också användas på datadiskar.
- Kernelstöd för montering av användardefinierade funktionsfilsystem (UDF) är nödvändigt. Vid första starten på Azure skickas etableringskonfigurationen till den virtuella Linux-datorn med hjälp av UDF-formaterade medier som är kopplade till gästen. Azure Linux-agenten eller
cloud-init
måste montera UDF-filsystemet för att läsa dess konfiguration och etablera den virtuella datorn. - Linux-kernelversioner under 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 Centos 2.6.32-kerneln och har åtgärdats i Centos 6.6 (kernel-2.6.32-504). System som kör anpassade kernels som är äldre än 2.6.37 eller Red Hat Enterprise Linux (RHEL)-baserade kernels som är äldre än 2.6.32-504 måste ange startparametern
numa=off
på kernelkommandoraden i grub.conf. Mer information finns i Red Hat KB 436883. - Konfigurera inte en växlingspartition på OS-disken.
- Alla virtuella hårddiskar i Azure måste ha en virtuell storlek som är justerad till 1 MB. När du konverterar från en rådisk till en virtuell hårddisk måste du se till att den råa diskstorleken är en multipel på 1 MB före konverteringen. Mer information finns i Installationsanteckningar för Linux.
Kommentar
Cloud-init >= 21.2 tar bort UDF-kravet. Men utan att UDF-modulen är aktiverad monteras inte CD-ROM under etableringen, vilket förhindrar att anpassade data tillämpas. En lösning för den här situationen är att använda anpassade data med hjälp av användardata. Till skillnad från anpassade data krypteras inte användardata. Mer information finns i Användardataformat.
CentOS 6.x
Viktigt!
CentOS 6 har nått sin EOL och stöds inte längre av CentOS-communityn. Inga ytterligare uppdateringar eller säkerhetskorrigeringar släpps för den här versionen, vilket gör den sårbar för potentiella säkerhetsrisker. Vi rekommenderar starkt att du uppgraderar till en nyare version av CentOS för att säkerställa säkerheten och stabiliteten i systemet. Kontakta IT-avdelningen eller systemadministratören om du vill ha mer hjälp.
I Hyper-V Manager väljer du den virtuella datorn.
Välj Anslut för att öppna ett konsolfönster för den virtuella datorn.
I CentOS 6
NetworkManager
kan det störa Azure Linux-agenten. Avinstallera det här paketet:sudo rpm -e --nodeps NetworkManager
Skapa eller redigera filen
/etc/sysconfig/network
och lägg till följande text:NETWORKING=yes HOSTNAME=localhost.localdomain
Skapa eller redigera filen
/etc/sysconfig/network-scripts/ifcfg-eth0
och lägg till följande text:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Ändra udev-regler för att undvika att generera statiska regler för Ethernet-gränssnitten. Dessa regler kan orsaka problem när du klonar en virtuell dator i Azure eller Hyper-V:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
Kontrollera att nätverkstjänsten startar vid starttiden:
sudo chkconfig network on
Om du vill använda OpenLogic-speglarna som finns i Azure-datacenter ersätter
/etc/yum.repos.d/CentOS-Base.repo
du filen med följande lagringsplatser. Den här åtgärden lägger också till lagringsplatsen [openlogic] som innehåller extra paket, till exempel Azure Linux-agenten:[openlogic] name=CentOS-$releasever - openlogic packages for $basearch baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/ enabled=1 gpgcheck=0 [base] name=CentOS-$releasever - Base #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #released updates [updates] name=CentOS-$releasever - Updates #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #additional packages that might be useful [extras] name=CentOS-$releasever - Extras #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #contrib - packages by Centos Users [contrib] name=CentOS-$releasever - Contrib #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/contrib/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Kommentar
Resten av den här artikeln förutsätter att du använder minst lagringsplatsen
[openlogic]
, som används för att installera Azure Linux-agenten.Lägg till följande rad i
/etc/yum.conf
:http_caching=packages
Rensa aktuella yum-metadata och uppdatera systemet med de senaste paketen:
sudo yum clean all
Om du inte skapar en avbildning för en äldre version av CentOS rekommenderar vi att du uppdaterar alla paket till den senaste:
sudo yum -y update
En omstart kan krävas när du har kört det här kommandot.
Valfritt: Installera drivrutinerna för Linux Integration Services (LIS).
Viktigt!
Steget krävs för CentOS 6.3 och tidigare och är valfritt för senare versioner.
sudo rpm -e hypervkvpd ## (might return an error if not installed, that's OK) sudo yum install microsoft-hyper-v
Du kan också följa instruktionerna för manuell installation på LIS-nedladdningssidan för att installera RPM på den virtuella datorn.
Installera Azure Linux-agenten och beroenden. Starta och aktivera
waagent
tjänsten:sudo yum install python-pyasn1 WALinuxAgent sudo service waagent start sudo chkconfig waagent on
WALinuxAgent-paketet tar bort paketen
NetworkManager
ochNetworkManager-gnome
om de inte redan har tagits bort, enligt beskrivningen i steg 3.Ändra kernel-startlinjen i grub-konfigurationen så att den innehåller andra kernelparametrar för Azure. Om du vill göra det här steget öppnar
/boot/grub/menu.lst
du i en textredigerare och ser till att standardkärnan innehåller följande parametrar:console=ttyS0 earlyprintk=ttyS0 rootdelay=300
Den här ändringen säkerställer också att alla konsolmeddelanden skickas till den första serieporten, vilket kan hjälpa Azure-supporten med felsökningsproblem.
Vi rekommenderar också att du tar bort följande parametrar:
rhgb quiet crashkernel=auto
Grafisk och tyst start är inte användbart i en molnmiljö där du vill att alla loggar ska skickas till serieporten. Alternativet
crashkernel
kan lämnas konfigurerat om du vill. Men den här parametern minskar mängden tillgängligt minne på den virtuella datorn med 128 MB eller mer, vilket kan vara ett problem för mindre VM-storlekar.Viktigt!
CentOS 6.5 och tidigare måste också ange kernelparametern
numa=off
. Mer information finns i Red Hat KB 436883.Kontrollera att Secure Shell-servern är installerad och konfigurerad för att starta vid start. Den här inställningen är vanligtvis standardinställningen.
Skapa inte växlingsutrymme på OS-disken.
Azure Linux-agenten kan automatiskt konfigurera växlingsutrymme med hjälp av den lokala resursdisk som är ansluten till den virtuella datorn när den virtuella datorn har etablerats i Azure. Den lokala resursdisken är en tillfällig disk och kan tömmas när den virtuella datorn avetableras. När du har installerat Azure Linux-agenten (se föregående steg) ändrar du följande parametrar på
/etc/waagent.conf
rätt sätt:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
Avetablera den virtuella datorn och förbered den för etablering i Azure:
sudo waagent -force -deprovision+user sudo export HISTSIZE=0
Kommentar
Om du migrerar en specifik virtuell dator och inte vill skapa en generaliserad avbildning hoppar du över avetableringssteget.
Välj Åtgärden>stängs av i Hyper-V Manager. Din virtuella Linux-hårddisk är nu redo att laddas upp till Azure.
CentOS 7.0+
Följ stegen i nästa avsnitt om du använder CentOS 7.0+.
Förändringar i CentOS 7 (och liknande derivat)
Att förbereda en virtuell CentOS 7-dator för Azure liknar CentOS 6. Flera betydande skillnader är värda att notera:
Paketet
NetworkManager
står inte längre i konflikt med Azure Linux-agenten. Det här paketet installeras som standard och vi rekommenderar att du inte tar bort det.GRUB2 används nu som standardstartläsare, så proceduren för att redigera kernelparametrar har ändrats. (Se avsnittet "Konfigurationssteg".)
XFS är nu standardfilsystemet. Ext4-filsystemet kan fortfarande användas om du vill.
Eftersom CentOS 8 Stream och senare inte längre ingår
network.service
som standard måste du installera den manuellt:sudo yum install network-scripts sudo systemctl enable network.service
Konfigurationssteg
I Hyper-V Manager väljer du den virtuella datorn.
Välj Anslut för att öppna ett konsolfönster för den virtuella datorn.
Skapa eller redigera filen
/etc/sysconfig/network
och lägg till följande text:NETWORKING=yes HOSTNAME=localhost.localdomain
Skapa eller redigera filen
/etc/sysconfig/network-scripts/ifcfg-eth0
och lägg till följande text:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no NM_CONTROLLED=no
Ändra udev-regler för att undvika att generera statiska regler för Ethernet-gränssnitten. Dessa regler kan orsaka problem när du klonar en virtuell dator i Azure eller Hyper-V:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
Om du vill använda speglarna
OpenLogic
som finns i Azure-datacenter ersätter du filen /etc/yum.repos.d/CentOS-Base.repo med följande lagringsplatser. Den här åtgärden lägger också till lagringsplatsen [openlogic] som innehåller paket för Azure Linux-agenten:[openlogic] name=CentOS-$releasever - openlogic packages for $basearch baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/ enabled=1 gpgcheck=0 [base] name=CentOS-$releasever - Base #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #released updates [updates] name=CentOS-$releasever - Updates #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that might be useful [extras] name=CentOS-$releasever - Extras #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Kommentar
Resten av den här artikeln förutsätter att du använder minst lagringsplatsen
[openlogic]
, som används för att installera Azure Linux-agenten.Rensa aktuella yum-metadata och installera eventuella uppdateringar:
sudo yum clean all
Om du inte skapar en avbildning för en äldre version av CentOS rekommenderar vi att du uppdaterar alla paket till den senaste:
sudo yum -y update
En omstart kan krävas när du har kört det här kommandot.
Ändra kernel-startlinjen i grub-konfigurationen så att den innehåller andra kernelparametrar för Azure. Om du vill göra det här steget öppnar
/etc/default/grub
du i en textredigerare och redigerar parameternGRUB_CMDLINE_LINUX
. Till exempel:GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Den här ändringen säkerställer också att alla konsolmeddelanden skickas till den första serieporten, vilket kan hjälpa Azure-supporten med felsökningsproblem. Den inaktiverar också de nya CentOS 7-namngivningskonventionerna för nätverkskort. Vi rekommenderar också att du tar bort följande parametrar:
rhgb quiet crashkernel=auto
Grafisk och tyst start är inte användbart i en molnmiljö där du vill att alla loggar ska skickas till serieporten. Alternativet
crashkernel
kan lämnas konfigurerat om du vill. Men den här parametern minskar mängden tillgängligt minne på den virtuella datorn med 128 MB eller mer, vilket kan vara ett problem för mindre VM-storlekar.När du är klar med redigeringen
/etc/default/grub
återskapar du grub-konfigurationen:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Kommentar
Om du laddar upp en UEFI-aktiverad virtuell dator är
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
kommandot för att uppdatera grub . Dessutom måste modulen vfat kernel vara aktiverad i kerneln. Annars misslyckas etableringen.Kontrollera att udf-modulen är aktiverad. Om du tar bort eller inaktiverar det orsakas ett etablerings- eller startfel. (_Cloud-init >= 21.2 tar bort udf-kravet. Mer information finns överst i dokumentet.)
Om du skapar avbildningen från VMware, VirtualBox eller KVM kontrollerar du att Hyper-V-drivrutinerna ingår i initramfs:
Redigera
/etc/dracut.conf
och lägg till innehåll:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Återskapa initramferna:
sudo dracut -f -v
Installera Azure Linux-agenten och beroenden för Azure VM-tillägg:
sudo yum install python-pyasn1 WALinuxAgent sudo systemctl enable waagent
Installera
cloud-init
för att hantera etableringen:sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
- Konfigurera
waagent
förcloud-init
:
sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=auto/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
sudo echo "Adding mounts and disk_setup to init stage" sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
sudo echo "Allow only Azure datasource, disable fetching network setting via IMDS" sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF datasource_list: [ Azure ] datasource: Azure: apply_network_config: False EOF if [[ -f /mnt/swapfile ]]; then echo Removing swapfile - RHEL uses a swapfile by default swapoff /mnt/swapfile rm /mnt/swapfile -f fi 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
- Konfigurera
Växlingskonfiguration:
Skapa inte växlingsutrymme på OS-disken.
Tidigare användes Azure Linux-agenten för att automatiskt konfigurera växlingsutrymme med hjälp av den lokala resursdisken som är ansluten till den virtuella datorn efter att den virtuella datorn har etablerats i Azure.
cloud-init
Men nu hanterar det här steget. Du får inte använda Linux-agenten för att formatera resursdisken för att skapa växlingsfilen. Ändra följande parametrar på/etc/waagent.conf
lämpligt sätt:sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
Om du vill montera, formatera och skapa växlingsfilen kan du antingen:
Skicka det här kommandot som en
cloud-init
konfiguration varje gång du skapar en virtuell dator.Använd ett
cloud-init
direktiv som bakats in i avbildningen för att göra det här steget varje gång den virtuella datorn skapas:sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf sudo 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
Kör följande kommandon för att avetablera den virtuella datorn och förbereda den för etablering i Azure.
Kommentar
Om du migrerar en specifik virtuell dator och inte vill skapa en generaliserad avbildning hoppar du över avetableringssteget.
sudo rm -f /var/log/waagent.log sudo cloud-init clean sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
Välj Åtgärden>stängs av i Hyper-V Manager. Din virtuella Linux-hårddisk är nu redo att laddas upp till Azure.
Relaterat innehåll
Nu är du redo att använda din virtuella CentOS Linux-hårddisk för att skapa nya virtuella datorer i Azure. Om det är första gången du laddar upp VHD-filen till Azure läser du Skapa en virtuell Linux-dator från en anpassad disk.