Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: ✔️ macchine virtuali di Linux ✔️ set di scalabilità flessibili
Informazioni su come creare e caricare un disco rigido virtuale di Azure contenente un sistema operativo Linux basato su CentOS. Per altre informazioni, vedere:
- Preparare una macchina virtuale CentOS 6.x per Azure
- Preparare una macchina virtuale CentOS 7.0+ per Azure
Attenzione
Questo articolo fa riferimento a CentOS, una distribuzione Linux prossima allo stato end-of-life (EOL). Valutare le proprie esigenze e pianificare di conseguenza. Per altre informazioni, vedere le linee guida per la fine della vita di CentOS.
Prerequisiti
Questo articolo presuppone che sia già stato installato un sistema operativo Linux CentOS (o derivato simile) in un disco rigido virtuale. Sono disponibili vari strumenti per la creazione di file VHD. Un esempio è una soluzione di virtualizzazione come Hyper-V. Per istruzioni, vedere Installare il ruolo Hyper-V e configurare una macchina virtuale.
Note sull'installazione di CentOS
- Per altri suggerimenti sulla preparazione di Linux per Azure, vedere Note generali sull'installazione di Linux.
- Il formato VHDX non è supportato in Azure, solo nei dischi rigidi virtuali fissi (VHD). È possibile convertire il disco in formato VHD usando Hyper-V Manager o il cmdlet
convert-vhd. Se si usa VirtualBox, si seleziona Dimensioni fisse anziché l'impostazione predefinita allocata dinamicamente quando si crea il disco. - Il modulo kernel vfat deve essere abilitato nel kernel.
- Quando si installa il sistema Linux, è consigliabile usare partizioni standard anziché LVM (Logical Volume Manager), spesso l'impostazione predefinita per numerose installazioni. L'uso delle partizioni evita conflitti di nome LVM con macchine virtuali clonate, in particolare se è necessario collegare un disco del sistema operativo a un'altra macchina virtuale identica per la risoluzione dei problemi. È anche possibile usareLVM o RAID sui dischi dati.
- È necessario il supporto del kernel per il montaggio di file system UDF (User Defined Functions). Al primo avvio in Azure la configurazione del provisioning viene passata alla macchina virtuale Linux tramite supporti di memorizzazione formattati con UDF, collegati al guest. L'agente Linux di Azure o
cloud-initdeve montare il file system UDF per leggerne la configurazione ed effettuare il provisioning della macchina virtuale. - Le versioni del kernel Linux precedenti alla 2.6.37 non supportano NUMA in Hyper-V con dimensioni di vm maggiori. Questo problema riguarda principalmente le distribuzioni precedenti che usano il kernel upstream Centos 2.6.32 ed è stato risolto in Centos 6.6 (kernel-2.6.32-504). I sistemi che eseguono kernel personalizzati precedenti a 2.6.37 o Red Hat Enterprise Linux (RHEL) basati su kernel precedenti alla 2.6.32-504 devono impostare il parametro
numa=offdi avvio nella riga di comando del kernel in grub.conf. Per ulteriori informazioni, vedere KB 436883 di Red Hat. - Non configurare una partizione di scambio sul disco del sistema operativo.
- Le dimensioni di tutti i dischi rigidi virtuali in Azure devono essere allineate a 1 MB. Quando si converte un disco non formattato in un disco rigido virtuale, prima della conversione è necessario assicurarsi che le dimensioni del disco non formattato siano un multiplo di 1 MB. Per altre informazioni, vedere Note sull'installazione di Linux.
Annotazioni
Cloud-init 21.2 rimuove il requisito del formato disco universale (UDF). Ma senza il modulo UDF abilitato, il CD-ROM non verrà montato durante il provisioning, impedendo l'applicazione di dati personalizzati. Una soluzione alternativa per questa situazione consiste nell'applicare dati personalizzati usando i dati utente. A differenza dei dati personalizzati, i dati utente non vengono crittografati. Per altre informazioni, vedere Formati dati utente.
CentOS 6.x
Importante
CentOS 6 ha raggiunto l'EOL e non è più supportato dalla community centOS. Non verranno rilasciati altri aggiornamenti o patch di sicurezza per questa versione, lasciandolo vulnerabile ai potenziali rischi per la sicurezza. È consigliabile eseguire l'aggiornamento a una versione più recente di CentOS per garantire la sicurezza e la stabilità del sistema. Per ulteriore assistenza, rivolgersi al reparto IT o all'amministratore di sistema.
In Hyper-V Manager selezionare la macchina virtuale.
Selezionare Connetti per aprire una finestra della console per la macchina virtuale.
In CentOS 6 può
NetworkManagerinterferire con l'agente Linux di Azure. Disinstallare questo pacchetto:sudo rpm -e --nodeps NetworkManagerCreare o modificare il file
/etc/sysconfig/networke aggiungere il testo seguente:NETWORKING=yes HOSTNAME=localhost.localdomainCreare o modificare il file
/etc/sysconfig/network-scripts/ifcfg-eth0e aggiungere il testo seguente:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=noModificare le regole udev per evitare di generare regole statiche per le interfacce Ethernet. Queste regole possono causare problemi quando si clona una macchina virtuale in Azure o 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.rulesSi assicuri che il servizio di rete venga avviato all'avvio del sistema:
sudo chkconfig network onPer usare i mirror OpenLogic ospitati nei data center di Azure, sostituire il
/etc/yum.repos.d/CentOS-Base.repofile con i repository seguenti. Questa azione aggiunge anche il repository [openlogic] che include pacchetti aggiuntivi, ad esempio l'agente Linux di Azure:[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-6Annotazioni
Il resto di questo articolo presuppone che si stia usando almeno il
[openlogic]repository, usato per installare l'agente Linux di Azure.Aggiungere la riga seguente a
/etc/yum.conf:http_caching=packagesCancellare i metadati yum correnti e aggiornare il sistema con i pacchetti più recenti:
sudo yum clean allA meno che non si stia creando un'immagine per una versione precedente di CentOS, è consigliabile aggiornare tutti i pacchetti alla versione più recente:
sudo yum -y updateUn riavvio potrebbe essere necessario dopo l'esecuzione di questo comando.
Facoltativo: installare i driver per Linux Integration Services (LIS).
Importante
Il passaggio è obbligatorio per CentOS 6.3 e versioni precedenti ed è facoltativo per le versioni successive.
sudo rpm -e hypervkvpd ## (might return an error if not installed, that's OK) sudo yum install microsoft-hyper-vIn alternativa, è possibile seguire le istruzioni di installazione manuale nella pagina di download di LIS per installare rpm nella macchina virtuale.
Installare l'agente Linux di Azure e le dipendenze. Avviare e abilitare il
waagentservizio:sudo yum install python-pyasn1 WALinuxAgent sudo service waagent start sudo chkconfig waagent onIl pacchetto WALinuxAgent rimuove i
NetworkManagerpacchetti eNetworkManager-gnomese non sono già stati rimossi, come descritto nel passaggio 3.Modificare la riga di avvio del kernel nella configurazione grub per includere altri parametri del kernel per Azure. A tale scopo, aprire
/boot/grub/menu.lstin un editor di testo e assicurarsi che il kernel predefinito includa i parametri seguenti:console=ttyS0 earlyprintk=ttyS0 rootdelay=300Questa modifica garantisce anche che tutti i messaggi della console vengano inviati alla prima porta seriale, che può aiutare il supporto di Azure con problemi di debug.
È anche consigliabile rimuovere i parametri seguenti:
rhgb quiet crashkernel=autoL'avvio grafico e non silenzioso non è utile in un ambiente cloud in cui si vogliono inviare tutti i log alla porta seriale. L'opzione
crashkernelpuò essere lasciata configurata se si vuole. Tuttavia, questo parametro riduce la quantità di memoria disponibile nella macchina virtuale di 128 MB o più, che potrebbe essere un problema per le dimensioni di vm più piccole.Importante
CentOS 6.5 e versioni precedenti devono anche impostare il parametro
numa=offdel kernel . Per ulteriori informazioni, vedere KB 436883 di Red Hat.Verificare che il server Secure Shell sia installato e configurato per l'esecuzione all'avvio. Questa è in genere l'impostazione predefinita.
Non creare spazio di scambio sul disco del sistema operativo.
L'agente Linux di Azure può configurare automaticamente lo spazio di scambio usando il disco delle risorse locale collegato alla macchina virtuale dopo il provisioning della macchina virtuale in Azure. Il disco della risorsa locale è un disco temporaneo e potrebbe essere svuotato quando viene eseguito il deprovisioning della macchina virtuale. Dopo aver installato l'agente Linux di Azure (vedere il passaggio precedente), modificare i parametri seguenti in
/etc/waagent.confmodo appropriato: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.Effettuare il deprovisioning della macchina virtuale e prepararlo per il provisioning in Azure:
sudo waagent -force -deprovision+user sudo export HISTSIZE=0Annotazioni
Se si esegue la migrazione di una macchina virtuale specifica e non si vuole creare un'immagine generalizzata, ignorare il passaggio di deprovisioning.
Selezionare Azione>Arresta in Hyper-V Manager. Il disco rigido virtuale Linux è ora pronto per essere caricato in Azure.
CentOS 7.0+
Seguire i passaggi nelle sezioni successive se si usa CentOS 7.0+.
Modifiche apportate a CentOS 7 (e derivati simili)
La preparazione di una macchina virtuale CentOS 7 per Azure è simile a CentOS 6. Diverse differenze significative vale la pena notare:
Il
NetworkManagerpacchetto non è più in conflitto con l'agente Linux di Azure. Questo pacchetto viene installato per impostazione predefinita e si consiglia di non rimuoverlo.GRUB2 viene ora usato come bootloader predefinito, quindi la procedura per la modifica dei parametri del kernel è stata modificata. Vedere la sezione "Passaggi di configurazione".
XFS è ora il file system predefinito. Il file system ext4 può comunque essere usato se si desidera.
Poiché CentOS 8 Stream e versioni successive non includono
network.servicepiù per impostazione predefinita, è necessario installarlo manualmente:sudo yum install network-scripts sudo systemctl enable network.service
Passaggi di configurazione
In Hyper-V Manager selezionare la macchina virtuale.
Selezionare Connetti per aprire una finestra della console per la macchina virtuale.
Creare o modificare il file
/etc/sysconfig/networke aggiungere il testo seguente:NETWORKING=yes HOSTNAME=localhost.localdomainCreare o modificare il file
/etc/sysconfig/network-scripts/ifcfg-eth0e aggiungere il testo seguente:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no NM_CONTROLLED=noModificare le regole udev per evitare di generare regole statiche per le interfacce Ethernet. Queste regole possono causare problemi quando si clona una macchina virtuale in Azure o Hyper-V:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rulesPer usare i
OpenLogicmirror ospitati nei data center di Azure, sostituire il file /etc/yum.repos.d/CentOS-Base.repo con i repository seguenti. Questa azione aggiunge anche il repository [openlogic] che include pacchetti per l'agente Linux di Azure:[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-7Annotazioni
Il resto di questo articolo presuppone che si stia usando almeno il
[openlogic]repository, usato per installare l'agente Linux di Azure.Cancellare i metadati yum correnti e installare eventuali aggiornamenti:
sudo yum clean allA meno che non si stia creando un'immagine per una versione precedente di CentOS, è consigliabile aggiornare tutti i pacchetti alla versione più recente:
sudo yum -y updateUn riavvio potrebbe essere necessario dopo l'esecuzione di questo comando.
Modificare la riga di avvio del kernel nella configurazione grub per includere altri parametri del kernel per Azure. A tale scopo, aprire
/etc/default/grubin un editor di testo e modificare ilGRUB_CMDLINE_LINUXparametro . Per esempio:GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"Questa modifica garantisce anche che tutti i messaggi della console vengano inviati alla prima porta seriale, che può aiutare il supporto di Azure con problemi di debug. Disattiva anche le nuove convenzioni di denominazione di CentOS 7 per le schede di interfaccia di rete. È anche consigliabile rimuovere i parametri seguenti:
rhgb quiet crashkernel=autoL'avvio grafico e non silenzioso non è utile in un ambiente cloud in cui si vogliono inviare tutti i log alla porta seriale. L'opzione
crashkernelpuò essere lasciata configurata se si vuole. Tuttavia, questo parametro riduce la quantità di memoria disponibile nella macchina virtuale di 128 MB o più, che potrebbe essere un problema per le dimensioni di vm più piccole.Al termine della modifica di
/etc/default/grub, ricostruire la configurazione di Grub.sudo grub2-mkconfig -o /boot/grub2/grub.cfgAnnotazioni
Se si carica una macchina virtuale abilitata per UEFI, il comando per aggiornare grub è
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg. Inoltre, il modulo kernel vfat deve essere abilitato nel kernel. In caso contrario, il provisioning non riesce.Assicurarsi che il modulo udf sia abilitato. La rimozione o la disabilitazione causerà un errore di provisioning o di avvio. (_Cloud-init >= 21.2 rimuove il requisito di udf. Per ulteriori informazioni, leggere l'inizio del documento.
Se si compila l'immagine da VMware, VirtualBox o KVM, assicurarsi che i driver Hyper-V siano inclusi in initramfs:
Modificare
/etc/dracut.confe aggiungere contenuto:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "Ricompilare l’initramfs:
sudo dracut -f -v
Installare l'agente Linux di Azure e le dipendenze per le estensioni di macchine virtuali di Azure:
sudo yum install python-pyasn1 WALinuxAgent sudo systemctl enable waagentInstalla
cloud-initper gestire il provisioning:sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons- Configurare
waagentpercloud-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.confsudo 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.cfgsudo 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- Configurare
Configurazione dello scambio:
Non creare spazio di scambio sul disco del sistema operativo.
In precedenza, l'agente Linux di Azure veniva usato per configurare automaticamente lo spazio di scambio usando il disco delle risorse locale collegato alla macchina virtuale dopo il provisioning della macchina virtuale in Azure. Tuttavia,
cloud-initora gestisce questo passaggio. Non è necessario usare l'agente Linux per formattare il disco delle risorse per creare il file di scambio. Modificare i parametri seguenti in/etc/waagent.confmodo appropriato: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.confSe si desidera montare, formattare e creare il file di scambio, è possibile:
Fornire questo comando come configurazione
cloud-initogni volta che si crea una macchina virtuale.Usare una
cloud-initdirettiva inserita nell'immagine per eseguire questo passaggio ogni volta che viene creata la macchina virtuale: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
Eseguire i comandi seguenti per eseguire il deprovisioning della macchina virtuale e prepararlo per il provisioning in Azure.
Annotazioni
Se si esegue la migrazione di una macchina virtuale specifica e non si vuole creare un'immagine generalizzata, ignorare il passaggio di deprovisioning.
sudo rm -f /var/log/waagent.log sudo cloud-init clean sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0Selezionare Azione>Arresta in Hyper-V Manager. Il disco rigido virtuale Linux è ora pronto per essere caricato in Azure.
Contenuti correlati
È ora possibile usare il disco rigido virtuale CentOS Linux per creare nuove macchine virtuali in Azure. Se è la prima volta che si carica il file VHD in Azure, vedere Creare una macchina virtuale Linux da un disco personalizzato.