Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы
Узнайте, как создать и отправить виртуальный жесткий диск Azure (VHD), содержащий операционную систему Linux на основе CentOS. Дополнительные сведения см. в разделе:
- Подготовка виртуальной машины CentOS 6.x для Azure
- Подготовка виртуальной машины CentOS 7.0+ для Azure
Внимание
Эта статья ссылается на CentOS, дистрибутив Linux, который приближается к состоянию окончания срока действия (EOL). Думайте об использовании и планировании соответствующим образом. Дополнительные сведения см. в руководстве по окончании жизни CentOS.
Необходимые компоненты
В этой статье предполагается, что вы уже установили ОС Linux CentOS (или аналогичную производную) на VHD. Существует несколько средств для создания VHD-файлов. Примером является решение виртуализации, например Hyper-V. Инструкции см. в разделе "Установка роли Hyper-V" и настройка виртуальной машины.
Замечания по установке CentOS
- Дополнительные советы по подготовке Linux для Azure см . в общих заметках о установке Linux.
- Формат VHDX не поддерживается в Azure, только фиксированный виртуальный жесткий диск. Диск можно преобразовать в формат VHD с помощью диспетчера Hyper-V или командлета
convert-vhd. Если вы используете VirtualBox, выберите фиксированный размер , а не значение по умолчанию, которое динамически выделяется при создании диска. - Модуль ядра vfat должен быть включен в ядро.
- При установке системы Linux рекомендуется использовать стандартные секции, а не диспетчер логических томов (LVM), который часто используется по умолчанию для многих установок. Использование секций позволяет избежать конфликтов имен LVM с клонируемыми виртуальными машинами, особенно если диск ОС когда-либо должен быть подключен к другой идентичной виртуальной машине для устранения неполадок. LVM или RAID также можно использовать на дисках данных.
- Необходима поддержка ядра для подключения определяемых пользователем файловых систем (UDF). При первой загрузке в Azure конфигурация подготовки передается виртуальной машине Linux с помощью отформатированного UDF-носителя, подключенного к гостевой машине. Агент Linux Azure или
cloud-initдолжен подключить файловую систему UDF для чтения конфигурации и подготовки виртуальной машины. - Версии ядра Linux ниже 2.6.37 не поддерживают NUMA в Hyper-V с большими размерами виртуальных машин. Эта проблема в основном влияет на старые дистрибутивы с помощью вышестоящего ядра Centos 2.6.32 и исправлена в Centos 6.6 (ядро-2.6.32-504). Системы, работающие с пользовательскими ядрами старше 2.6.37 или Red Hat Enterprise Linux (RHEL), старше 2.6.32-504, должны задать параметр
numa=offзагрузки в командной строке ядра в grub.conf. Дополнительные сведения см. в статье базы знаний Red Hat 436883. - Не настраивайте раздел подкачки на диске с ОС.
- Размер виртуальной памяти всех виртуальных жестких дисков в Azure должен быть округлен до 1 МБ. При преобразовании из необработанного диска в VHD необходимо убедиться, что размер необработанного диска составляет 1 МБ перед преобразованием. Дополнительные сведения см . в заметках о установке Linux.
Примечание.
Cloud-init >= 21.2 удаляет требование UDF. Но без модуля UDF компакт-диск не будет подключаться во время подготовки, что предотвращает применение пользовательских данных. Решение этой ситуации заключается в применении пользовательских данных с помощью пользовательских данных. В отличие от пользовательских данных, пользовательские данные не шифруются. Дополнительные сведения см. в разделе "Форматы данных пользователей".
CentOS 6.x
Внимание
CentOS 6 достигла своего EOL и больше не поддерживается сообществом CentOS. Для этой версии не будут выпущены дополнительные обновления или исправления для системы безопасности, что позволяет оставить его уязвимым для потенциальных рисков безопасности. Настоятельно рекомендуем выполнить обновление до более последней версии CentOS, чтобы обеспечить безопасность и стабильность системы. Для получения дополнительной помощи обратитесь к ИТ-отделу или системным администраторам.
В диспетчере Hyper-V выберите виртуальную машину.
Выберите Подключение, чтобы открыть окно консоли для виртуальной машины.
В CentOS 6
NetworkManagerможет повлиять на агент Azure Linux. Удалите этот пакет:sudo rpm -e --nodeps NetworkManagerСоздайте или измените файл
/etc/sysconfig/network, добавив следующий текст:NETWORKING=yes HOSTNAME=localhost.localdomainСоздайте или измените файл
/etc/sysconfig/network-scripts/ifcfg-eth0, добавив следующий текст:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=noИзмените правила udev, чтобы избежать создания статических правил для интерфейсов Ethernet. Эти правила могут вызвать проблемы при клонировании виртуальной машины в Azure или 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Убедитесь, что сетевая служба начинается во время загрузки:
sudo chkconfig network onЕсли вы хотите использовать зеркала OpenLogic, размещенные в центрах обработки данных Azure, замените
/etc/yum.repos.d/CentOS-Base.repoфайл следующими репозиториями. Это действие также добавляет репозиторий [openlogic], который включает дополнительные пакеты, такие как агент Azure Linux:[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Примечание.
В остальной части этой статьи предполагается, что вы используете по крайней мере
[openlogic]репозиторий, который используется для установки агента Linux Azure.Добавьте следующую строку после
/etc/yum.conf:http_caching=packagesСнимите текущие метаданные yum и обновите систему с помощью последних пакетов:
sudo yum clean allЕсли вы не создаете образ для более старой версии CentOS, рекомендуется обновить все пакеты до последней версии:
sudo yum -y updateПосле выполнения этой команды может потребоваться перезагрузка.
Необязательно. Установите драйверы для служб Linux Integration Services (LIS).
Внимание
Этот шаг необходим для CentOS 6.3 и более ранних версий и является необязательным для последующих выпусков.
sudo rpm -e hypervkvpd ## (might return an error if not installed, that's OK) sudo yum install microsoft-hyper-vИли же следуйте инструкциям по установке на странице скачивания служб интеграции Linux, чтобы установить RPM в образе.
Установите агент Azure Linux и зависимости. Запустите и включите
waagentслужбу:sudo yum install python-pyasn1 WALinuxAgent sudo service waagent start sudo chkconfig waagent onПакет WALinuxAgent удаляет
NetworkManagerиNetworkManager-gnomeпакеты, если они еще не удалены, как описано на шаге 3.Измените загрузочную строку ядра в конфигурации grub, чтобы включить другие параметры ядра для Azure. Для этого откройте
/boot/grub/menu.lstв текстовом редакторе и убедитесь, что ядро по умолчанию включает следующие параметры:console=ttyS0 earlyprintk=ttyS0 rootdelay=300Это изменение также гарантирует, что все сообщения консоли отправляются в первый последовательный порт, который может помочь поддержка Azure с проблемами отладки.
Мы также рекомендуем удалить следующие параметры:
rhgb quiet crashkernel=autoГрафическая и тихая загрузка не полезна в облачной среде, в которой требуется отправить все журналы в последовательный порт. Если
crashkernelвы хотите, можно оставить этот параметр. Но этот параметр уменьшает объем доступной памяти на виртуальной машине на 128 МБ или более, что может быть проблемой для небольших размеров виртуальных машин.Внимание
Для CentOS 6.5 и более ранних версий необходимо также указать параметр ядра
numa=off. Дополнительные сведения см. в статье базы знаний Red Hat 436883.Убедитесь, что сервер Secure Shell установлен и настроен для запуска во время загрузки. Обычно этот параметр задан по умолчанию.
Не создавайте пространство подкачки на диске с ОС.
Агент Linux Azure может автоматически настроить пространство подкачки с помощью локального диска ресурсов, подключенного к виртуальной машине после подготовки виртуальной машины в Azure. Локальный диск ресурсов является временным диском и может быть очищен при отмене подготовки виртуальной машины. После установки агента Linux Azure (см. предыдущий шаг), измените следующие параметры соответствующим
/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.Отмените подготовку виртуальной машины и подготовьте ее к подготовке в Azure:
sudo waagent -force -deprovision+user sudo export HISTSIZE=0Примечание.
Если вы переносите определенную виртуальную машину и не хотите создавать обобщенный образ, пропустите этап отмены подготовки.
В диспетчере Hyper-V выберите Действие>Завершение работы. Виртуальный жесткий диск Linux готов к передаче в Azure.
CentOS 7.0+
Выполните действия, описанные в следующих разделах, если вы используете CentOS 7.0+.
Изменения в CentOS 7 (и аналогичных производных версиях)
Подготовка виртуальной машины CentOS 7 для Azure аналогична CentOS 6. Стоит отметить несколько существенных различий:
Пакет
NetworkManagerбольше не конфликтует с агентом Linux Azure. Этот пакет устанавливается по умолчанию и рекомендуется не удалять его.GRUB2 теперь используется в качестве загрузчика по умолчанию, поэтому процедура редактирования параметров ядра изменилась. (См. раздел "Действия по настройке".
XFS теперь является файловой системой по умолчанию. Файловая система ext4 по-прежнему может использоваться, если вы хотите.
Так как CentOS 8 Stream и более поздней версии больше не включаются
network.serviceпо умолчанию, необходимо установить его вручную:sudo yum install network-scripts sudo systemctl enable network.service
Шаги настройки
В диспетчере Hyper-V выберите виртуальную машину.
Выберите Подключение, чтобы открыть окно консоли для виртуальной машины.
Создайте или измените файл
/etc/sysconfig/network, добавив следующий текст:NETWORKING=yes HOSTNAME=localhost.localdomainСоздайте или измените файл
/etc/sysconfig/network-scripts/ifcfg-eth0, добавив следующий текст:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no NM_CONTROLLED=noИзмените правила udev, чтобы избежать создания статических правил для интерфейсов Ethernet. Эти правила могут вызвать проблемы при клонировании виртуальной машины в Azure или Hyper-V:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rulesЕсли вы хотите использовать
OpenLogicзеркала, размещенные в центрах обработки данных Azure, замените файл /etc/yum.repos.d/CentOS-Base.repo следующими репозиториями. Это действие также добавляет репозиторий [openlogic], содержащий пакеты для агента Linux 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-7Примечание.
В остальной части этой статьи предполагается, что вы используете по крайней мере
[openlogic]репозиторий, который используется для установки агента Linux Azure.Снимите текущие метаданные yum и установите все обновления:
sudo yum clean allЕсли вы не создаете образ для более старой версии CentOS, рекомендуется обновить все пакеты до последней версии:
sudo yum -y updateПосле выполнения этой команды может потребоваться перезагрузка.
Измените загрузочную строку ядра в конфигурации grub, чтобы включить другие параметры ядра для Azure. Для этого откройте
/etc/default/grubтекстовый редактор и изменитеGRUB_CMDLINE_LINUXпараметр. Например:GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"Это изменение также гарантирует, что все сообщения консоли отправляются в первый последовательный порт, который может помочь поддержка Azure с проблемами отладки. Он также отключает новые соглашения об именовании CentOS 7 для сетевых карт. Мы также рекомендуем удалить следующие параметры:
rhgb quiet crashkernel=autoГрафическая и тихая загрузка не полезна в облачной среде, в которой требуется отправить все журналы в последовательный порт. Если
crashkernelвы хотите, можно оставить этот параметр. Но этот параметр уменьшает объем доступной памяти на виртуальной машине на 128 МБ или более, что может быть проблемой для небольших размеров виртуальных машин.После завершения редактирования
/etc/default/grubперестройте конфигурацию grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfgПримечание.
Если вы отправляете виртуальную машину с поддержкой UEFI, выполните команду для обновления grub
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg. Кроме того, модуль ядра vfat должен быть включен в ядре. В противном случае подготовка завершается ошибкой.Убедитесь, что модуль udf включен. Удаление или отключение приведет к сбою подготовки или загрузки. (_Cloud-init >= 21.2 удаляет требование udf. Дополнительные сведения см. в верхней части документа.)
Если вы создаете образ из VMware, VirtualBox или KVM, убедитесь, что драйверы Hyper-V включены в initramfs:
Измените файл
/etc/dracut.conf, добавив в него следующее содержимое:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "Выполните сборку initramfs заново:
sudo dracut -f -v
Установите агент Azure Linux и зависимости для расширений виртуальных машин Azure:
sudo yum install python-pyasn1 WALinuxAgent sudo systemctl enable waagentУстановите
cloud-initдля обработки подготовки:sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons- Настройка
waagentдляcloud-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- Настройка
Конфигурация переключения:
Не создавайте пространство подкачки на диске с ОС.
Ранее агент Linux Azure использовался для автоматической настройки пространства буфера с помощью локального диска ресурсов, подключенного к виртуальной машине после подготовки виртуальной машины в Azure.
cloud-initОднако теперь обрабатывает этот шаг. Не следует использовать агент Linux для форматирования диска ресурсов для создания файла буфера. Измените следующие параметры соответствующим/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Если вы хотите подключить, отформатировать и создать файл подкачки, можно:
Передайте эту команду в качестве конфигурации при каждом создании виртуальной
cloud-initмашины.Используйте директиву, созданную
cloud-initв образе, чтобы каждый раз при создании виртуальной машины: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
Выполните следующие команды, чтобы отменить подготовку виртуальной машины и подготовить ее к подготовке в Azure.
Примечание.
Если вы переносите определенную виртуальную машину и не хотите создавать обобщенный образ, пропустите этап отмены подготовки.
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В диспетчере Hyper-V выберите Действие>Завершение работы. Виртуальный жесткий диск Linux готов к передаче в Azure.
Связанный контент
Теперь вы готовы использовать виртуальный жесткий диск CentOS Linux для создания новых виртуальных машин в Azure. Если вы отправляете VHD-файл в Azure впервые, см. раздел Вариант 1. Передача VHD.