4.6. 进行 Microsoft Azure 部署所需的配置更改
在将自定义基础镜像部署到 Azure 之前,您必须执行额外的配置更改,以确保虚拟机 (VM) 可以在 Azure 中正常工作。
流程
- 登录到虚拟机。
注册虚拟机,并启用 Red Hat Enterprise Linux 8 存储库。
# subscription-manager register Installed Product Current Status: Product Name: Red Hat Enterprise Linux for x86_64 Status: Subscribed确保安装了
cloud-init和hyperv-daemons软件包。# yum install cloud-init hyperv-daemons -y创建与 Azure 服务集成的所需的
cloud-init配置文件:要启用登录到 Hyper-V Data Exchange Service(KVP),请创建
/etc/cloud/cloud.cfg.d/10-azure-kvp.cfg配置文件并将以下行添加到该文件中。reporting: logging: type: log telemetry: type: hyperv要将 Azure 添加为数据源,请创建
/etc/cloud/cloud.cfg.d/91-azure_datasource.cfg配置文件,并将下面几行添加到该文件中。datasource_list: [ Azure ] datasource: Azure: apply_network_config: False要在临时磁盘上配置交换空间,请创建
/etc/cloud/cloud.cfg.d/00-azure-swap.cfg配置文件并添加以下行。重要临时磁盘是临时存储。因此,当虚拟机被取消或移动时,存储的数据(包括交换空间)将会丢失。将临时磁盘仅用于临时数据,如交换空间。
#cloud-config disk_setup: ephemeral0: table_type: gpt 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", "0", "0"]
要确保特定内核模块自动被阻止,请编辑或创建
/etc/modprobe.d/blocklist.conf文件,并将下面几行添加到该文件中。blacklist nouveau blacklist lbm-nouveau blacklist floppy blacklist amdgpu blacklist skx_edac blacklist intel_cstate修改
udev网络设备规则:如果存在,请删除以下持久性网络设备规则。
# rm -f /etc/udev/rules.d/70-persistent-net.rules # rm -f /etc/udev/rules.d/75-persistent-net-generator.rules # rm -f /etc/udev/rules.d/80-net-name-slot-rules要确保在 Azure 上的 Accelerated Networking 可以正常工作,请创建一个新的网络设备规则
/etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules,并将其添加到其中。SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION=="add", ENV{NM_UNMANAGED}="1"
将
sshd服务设置为自动启动。# systemctl enable sshd # systemctl is-enabled sshd修改内核引导参数:
打开
/etc/default/grub文件,并确保GRUB_TIMEOUT行具有以下值:GRUB_TIMEOUT=10从
GRUB_CMDLINE_LINUX行末尾删除以下选项(如果存在)。rhgb quiet确保
/etc/default/grub文件含有所有指定选项的以下行:GRUB_CMDLINE_LINUX="loglevel=3 crashkernel=auto console=tty1 console=ttyS0 earlyprintk=ttyS0 rootdelay=300" GRUB_TIMEOUT_STYLE=countdown GRUB_TERMINAL="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"注意如果您没有在 HDD 上运行工作负载,请将
elevator=none添加到GRUB_CMDLINE_LINUX行的末尾。这会将 I/O 调度程序设置为none,这可以提高基于 SSD 的系统上的 I/O 性能。重新生成
grub.cfg文件。在基于 BIOS 的机器上:
# grub2-mkconfig -o /boot/grub2/grub.cfg在基于 UEFI 的机器上:
# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg如果您的系统对
grub.cfg使用非默认位置,请相应地调整该命令。
配置 Windows Azure Linux 代理 (
WALinuxAgent):安装并启用
WALinuxAgent软件包。# yum install WALinuxAgent -y # systemctl enable waagent要在 WALinuxAgent 中禁用交换配置(在使用
cloud-init管理交换时必需),请编辑/etc/waagent.conf文件中的以下行。Provisioning.DeleteRootPassword=y ResourceDisk.Format=n ResourceDisk.EnableSwap=n ResourceDisk.SwapSizeMB=0注意通过在 WALinuxAgent 中禁用 swap,您可以启用
cloud-init来管理临时磁盘上的交换配置。
为 Azure 置备准备虚拟机:
从 Red Hat Subscription Manager 取消注册虚拟机。
# subscription-manager unregister清理现有的置备详情。
# waagent -force -deprovision注意这个命令会生成警告,因为 Azure 会自动处理虚拟机的置备。
清理 shell 历史记录并关闭虚拟机。
# export HISTSIZE=0 # poweroff