Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Cuidado
Este artigo faz referência ao CentOS, uma distribuição do Linux que está se aproximando do status de EOL (fim da vida útil). Considere seu uso e planeje adequadamente. Para obter mais informações, veja as Diretrizes de fim de vida útil do CentOS.
Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis
Saiba como criar e carregar um VHD (disco rígido virtual) do Azure que contenha um SO (sistema operacional) Linux baseado em CentOS. Para saber mais, veja:
Pré-requisitos
Este artigo pressupõe que você já instalou um sistema operacional Linux CentOS (ou derivado similar) em um disco rígido virtual. Existem várias ferramentas para criar arquivos .vhd. Um exemplo é uma solução de virtualização, como o Hyper-V. Para obter instruções, consulte Instalar a função Hyper-V e configurar uma VM.
Notas de instalação do CentOS
- Para obter mais dicas sobre como preparar o Linux para o Azure, veja Notas gerais de instalação do Linux.
- Não há suporte para o formato VHDX no Azure, somente para o VHD fixo. Você pode converter o disco em formato VHD usando o Gerenciador do Hyper-V ou o cmdlet
convert-vhd. Se você está usando o VirtualBox, selecione Tamanho fixo em vez da opção padrão alocada dinamicamente quando você cria o disco. - O módulo de kernel vfat precisa ser habilitado no kernel.
- Ao instalar o sistema Linux, recomendamos utilizar partições-padrão em vez do gerenciador de volume lógico (LVM), que geralmente é o padrão para muitas instalações. O uso de partições evita conflitos de nome LVM com VMs clonadas, especialmente se um disco do sistema operacional precisar ser anexado a outra VM idêntica para solução de problemas. LVM ou RAID também podem ser usados em discos de dados.
- É necessário o suporte do kernel à montagem de sistemas de arquivos com UDFs (funções definidas pelo usuário). Na primeira inicialização no Azure, a configuração de provisionamento é passada para a VM do Linux usando a mídia em formato UDF anexada ao convidado. O agente Linux do Azure ou
cloud-initprecisa montar o sistema de arquivos UDF para ler a configuração e provisionar a VM. - Versões de kernel do Linux abaixo de 2.6.37 não dão suporte ao NUMA no Hyper-V com tamanhos maiores de VM. Esse problema afeta principalmente as distribuições mais antigas que usam o kernel Centos 2.6.32 upstream e foi corrigido no Centos 6.6 (kernel-2.6.32-504). Sistemas que executam kernels personalizados anteriores a 2.6.37 ou com base em RHEL (Red Hat Enterprise Linux) anteriores a 2.6.32-504 devem definir o parâmetro de inicialização
numa=offna linha de comando do kernel em grub.conf. Para obter mais informações, consulte o KB 436883 do Red Hat. - Não configure uma partição de permuta no disco do sistema operacional.
- Todos os VHDs no Azure devem ter um tamanho virtual alinhado a 1 MB. Ao converter de um disco não processado para VHD, certifique-se de que o tamanho do disco não processado seja um múltiplo de 1 MB antes da conversão. Para obter mais informações, consulte Notas de Instalação do Linux.
Observação
Cloud-init >= 21.2 remove o requisito UDF. Porém, sem o módulo UDF habilitado, o CD-ROM não será montado durante o provisionamento, o que impede que os dados personalizados sejam aplicados. Uma solução alternativa para essa situação é aplicar dados personalizados usando dados do usuário. No entanto, ao contrário dos dados personalizados, os dados do usuário não são criptografados. Para obter mais informações, confira a seção Formatos de dados de usuário.
CentOS 6.x
Importante
O CentOS 6 atingiu o Fim da EOL e não tem mais suporte da comunidade CentOS. Nenhuma atualização adicional ou patches de segurança serão lançados para esta versão, deixando-a vulnerável a possíveis riscos de segurança. É altamente recomendável que você atualize para uma versão mais recente do CentOS para garantir a segurança e a estabilidade do seu sistema. Para obter mais assistência, consulte o departamento de TI ou o administrador do sistema.
No Gerenciador do Hyper-V, selecione a VM.
Selecione Conectar para abrir uma janela do console para a VM.
No CentOS 6,
NetworkManagerpode interferir com o agente Linux do Azure. Desinstale este pacote:sudo rpm -e --nodeps NetworkManagerCrie ou edite o arquivo
/etc/sysconfig/networke adicione o texto a seguir:NETWORKING=yes HOSTNAME=localhost.localdomainCrie ou edite o arquivo
/etc/sysconfig/network-scripts/ifcfg-eth0e adicione o texto a seguir:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=noModifique as regras de udev para evitar a geração de regras estáticas das interfaces Ethernet. Essas regras podem causar problemas ao clonar uma máquina virtual no Azure ou no 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.rulesVerifique se o serviço de rede é iniciado na hora de inicialização:
sudo chkconfig network onSe você quiser usar os espelhos OpenLogic hospedados em datacenters do Azure, substitua o arquivo
/etc/yum.repos.d/CentOS-Base.repopelos repositórios a seguir. Essa ação também adiciona o repositório [openlogic], que inclui pacotes adicionais como o agente Linux do 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-6Observação
O restante deste artigo pressupõe que você esteja usando pelo menos o repositório
[openlogic], que é usado para instalar o agente Linux do Azure.Adicione a seguinte linha ao
/etc/yum.conf:http_caching=packagesLimpe os metadados atuais do yum e atualizar o sistema com os pacotes mais recentes:
sudo yum clean allA menos que você esteja criando uma imagem para uma versão mais antiga do CentOS, recomendamos atualizar todos os pacotes para a versão mais recente:
sudo yum -y updateUma reinicialização poderá ser necessária depois que você executar esse comando.
Opcional: instale os drivers dos LIS (Serviços de Integração do Linux).
Importante
A etapa é necessária para CentOS 6.3 e anteriores e é opcional para versões posteriores.
sudo rpm -e hypervkvpd ## (might return an error if not installed, that's OK) sudo yum install microsoft-hyper-vComo alternativa, você pode seguir as instruções de instalação manual página de download do LIS para instalar o RPM para sua VM.
Instale o Agente Linux do Azure e as dependências. Inicie e habilite o serviço
waagent:sudo yum install python-pyasn1 WALinuxAgent sudo service waagent start sudo chkconfig waagent onO pacote WALinuxAgent remove os pacotes
NetworkManagereNetworkManager-gnomese eles ainda não foram removidos, conforme descrito na etapa 3.Modifique a linha de inicialização do kernel em sua configuração de GRUB para incluir mais parâmetros do kernel para o Azure. Para realizar esta etapa, abra
/boot/grub/menu.lstem um editor de texto e verifique se o kernel padrão inclui os seguintes parâmetros:console=ttyS0 earlyprintk=ttyS0 rootdelay=300Essa modificação também garantirá que todas as mensagens do console sejam enviadas para a primeira porta serial, o que pode auxiliar o suporte do Azure com problemas de depuração.
Também recomendamos que você remova os seguintes parâmetros:
rhgb quiet crashkernel=autoAs inicializações gráfica e silenciosa não são úteis em um ambiente de rede, quando você deseja que todos os logs sejam enviados para a porta serial. A opção
crashkernelpoderá ser deixada configurada se você desejar. Mas esse parâmetro reduz a quantidade de memória disponível na VM em 128 MB ou mais, o que pode ser um problema para tamanhos de VM menores.Importante
CentOS 6.5 e anteriores também devem definir o parâmetro de kernel
numa=off. Para obter mais informações, consulte o KB 436883 do Red Hat.Certifique-se de que o servidor Secure Shell está instalado e configurado para iniciar no tempo de inicialização. Essa configuração geralmente é o padrão.
Não crie espaço de troca no disco do sistema operacional.
O Agente Linux do Azure pode configurar automaticamente o espaço de troca usando o disco de recurso local que é anexado à VM após o provisionamento da mesma no Azure. O disco de recurso local é um disco temporário e pode ser esvaziado quando a VM é desprovisionada. Depois de instalar o Agente Linux do Azure (consulte a etapa anterior), modifique adequadamente os seguintes parâmetros em
/etc/waagent.conf: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.Desprovisione a VM e prepare-a para provisionamento no Azure:
sudo waagent -force -deprovision+user sudo export HISTSIZE=0Observação
Se você está migrando uma máquina virtual específica e não quer criar uma imagem generalizada, ignore a etapa de desprovisionamento.
Selecione Ação>Desligar no Gerenciador do Hyper-V. Agora, seu VHD Linux está pronto para ser carregado no Azure.
CentOS 7.0+
Siga as etapas nas próximas seções se você estiver usando o CentOS 7.0+.
Alterações no CentOS 7 (e em derivativos similares)
Preparar uma VM centOS 7 para o Azure é semelhante ao CentOS 6. Vale a pena observar várias diferenças significativas:
O pacote
NetworkManagernão entra mais em conflito com o agente Linux do Azure. Esse pacote é instalado por padrão e recomendamos que você não o remova.O GRUB2 agora é usado como carregador de inicialização padrão. Com isso, o procedimento de edição de parâmetros do kernel mudou. (Consulte a seção "Etapas de configuração".)
O XFS agora é o sistema de arquivos padrão. O sistema de arquivos ext4 ainda poderá ser usado, se você desejar.
Como o CentOS 8 Stream e versões mais recentes não incluem mais o
network.servicepor padrão, você precisa instalá-lo manualmente:sudo yum install network-scripts sudo systemctl enable network.service
Etapas de configuração
No Gerenciador do Hyper-V, selecione a VM.
Selecione Conectar para abrir uma janela do console para a VM.
Crie ou edite o arquivo
/etc/sysconfig/networke adicione o texto a seguir:NETWORKING=yes HOSTNAME=localhost.localdomainCrie ou edite o arquivo
/etc/sysconfig/network-scripts/ifcfg-eth0e adicione o texto a seguir:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no NM_CONTROLLED=noModifique as regras de udev para evitar a geração de regras estáticas das interfaces Ethernet. Essas regras podem causar problemas ao clonar uma máquina virtual no Azure ou no Hyper-V:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rulesSe você quiser usar os espelhos
OpenLogichospedados nos datacenters do Azure, substitua o arquivo /etc/yum.repos.d/CentOS-Base.repo pelos repositórios a seguir. Essa ação adiciona o repositório [openlogic], que inclui pacotes para o agente Linux do 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-7Observação
O restante deste artigo pressupõe que você esteja usando pelo menos o repositório
[openlogic], que é usado para instalar o agente Linux do Azure.Desmarque os metadados yum atuais e instale todas as atualizações:
sudo yum clean allA menos que você esteja criando uma imagem para uma versão mais antiga do CentOS, recomendamos atualizar todos os pacotes para a versão mais recente:
sudo yum -y updateUma reinicialização poderá ser necessária depois que você executar esse comando.
Modifique a linha de inicialização do kernel em sua configuração de GRUB para incluir mais parâmetros do kernel para o Azure. Para realizar essa etapa, abra
/etc/default/grubem um editor de texto e edite o parâmetroGRUB_CMDLINE_LINUX. Por exemplo:GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"Essa modificação também garantirá que todas as mensagens do console sejam enviadas para a primeira porta serial, o que pode auxiliar o suporte do Azure com problemas de depuração. Ela também desativa novas convenções de nomenclatura do CentOS 7 para placas de interface de rede. Também recomendamos que você remova os seguintes parâmetros:
rhgb quiet crashkernel=autoAs inicializações gráfica e silenciosa não são úteis em um ambiente de rede, quando você deseja que todos os logs sejam enviados para a porta serial. A opção
crashkernelpoderá ser deixada configurada se você desejar. Mas esse parâmetro reduz a quantidade de memória disponível na VM em 128 MB ou mais, o que pode ser um problema para tamanhos de VM menores.Após concluir a edição de
/etc/default/grub, recompile a configuração do grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfgObservação
Se você estiver carregando uma VM habilitada para UEFI, o comando para atualizar o grub será
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg. Além disso, o módulo de kernel vfat precisa ser habilitado no kernel. Caso contrário, o provisionamento falhará.Verifique se o módulo udf está habilitado. Remover ou desabilitar causará uma falha de provisionamento ou inicialização. (_Cloud-init >= 21,2 remove o requisito udf. Para obter mais informações, leia a parte superior do documento.)
Se você estiver compilando a imagem de VMware, VirtualBox ou KVM: assegure-se de que os drivers do Hyper-V estejam incluídos no initramfs:
Edite
/etc/dracut.confe adicione o conteúdo:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "Recompile o initramfs:
sudo dracut -f -v
Instale o Agente Linux do Azure e as dependências para extensões de VM do Azure:
sudo yum install python-pyasn1 WALinuxAgent sudo systemctl enable waagentInstale
cloud-initpara lidar com o provisionamento:sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons- Configure
waagentparacloud-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- Configure
Configuração de troca:
Não crie espaço de troca no disco do sistema operacional.
Anteriormente, o Agente Linux do Azure era usado para configurar automaticamente o espaço de troca usando o disco de recurso local que é anexado à VM após o provisionamento da mesma no Azure. No entanto,
cloud-initagora lida com essa etapa. Você não pode usar o agente do Linux para formatar o disco de recurso para criar o arquivo de troca. Modifique os seguintes parâmetros adequadamente no/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.confSe deseja montar, formatar e criar o arquivo de troca, você pode:
Passar esse comando como uma configuração
cloud-initsempre que você criar uma VM.Usar uma diretiva
cloud-initinclusa na imagem para executar essa etapa sempre que a VM for criada: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
Execute os comandos a seguir para desprovisionar a VM e prepará-la para provisionamento no Azure.
Observação
Se você está migrando uma máquina virtual específica e não quer criar uma imagem generalizada, ignore a etapa de desprovisionamento.
sudo rm -f /var/log/waagent.log sudo cloud-init clean sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0Selecione Ação>Desligar no Gerenciador do Hyper-V. Agora, o VHD do Linux está pronto para ser carregado no Azure.
Conteúdo relacionado
Agora você está pronto para usar o VHD do CentOS Linux para criar VMs no Azure. Se esta é a primeira vez que você está carregando o arquivo .vhd para o Azure, consulte Criar uma VM do Linux a partir de um disco personalizado.