3.6. 为 Azure 部署准备虚拟机
为确保虚拟机兼容且可以在 Azure 环境中运行,请在部署自定义基础镜像之前执行配置更改。
先决条件
- 您已安装了 Hyper-V 设备驱动程序。
流程
登录并注册虚拟机,以启用 Red Hat Enterprise Linux (RHEL)存储库:
subscription-manager register --auto-attach
# subscription-manager register --auto-attach Installed Product Current Status: Product Name: Red Hat Enterprise Linux for x86_64 Status: Subscribed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
cloud-init
和hyperv-daemons
软件包:dnf install cloud-init hyperv-daemons -y
# dnf install cloud-init hyperv-daemons -y
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
cloud-init
配置文件,并编辑它们以提供与 Azure 服务的集成:要能够登录到 Hyper-V Data Exchange Service (KVP),请编辑
/etc/cloud/cloud.cfg.d/10-azure-kvp.cfg
文件并附加以下行:reporting: logging: type: log telemetry: type: hyperv
reporting: logging: type: log telemetry: type: hyperv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要添加 Azure 数据源,请编辑
/etc/cloud/cloud.cfg.d/91-azure_datasource.cfg
文件并附加以下行:datasource_list: [ Azure ] datasource: Azure: apply_network_config: False
datasource_list: [ Azure ] datasource: Azure: apply_network_config: False
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要阻止自动加载特定内核模块,请编辑
/etc/modprobe.d/blocklist.conf
文件并附加以下行:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修改
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
# 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要确保加速网络在 Azure 上正常工作,请编辑
/etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules
新网络设备规则,并附加以下行:SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION=="add", ENV{NM_UNMANAGED}="1"
SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION=="add", ENV{NM_UNMANAGED}="1"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
将
sshd
服务设置为自动启动:systemctl enable sshd systemctl is-enabled sshd
# systemctl enable sshd # systemctl is-enabled sshd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修改内核引导参数:
更新
/etc/default/grub
文件中的GRUB_TIMEOUT
参数值:GRUB_TIMEOUT=10
GRUB_TIMEOUT=10
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从
GRUB_CMDLINE_LINUX
行的末尾删除以下选项(如果存在的话):rhgb quiet
rhgb quiet
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下配置详情更新
/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"
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"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意通过在
GRUB_CMDLINE_LINUX
行的末尾添加elevator=none
选项来完全禁用 I/O 调度程序。这个选项根据执行的顺序处理 I/O 请求,而无需优化磁盘性能。对以下磁盘使用elevator=none
:- HDD :性能和吞吐量会降低,因此不适合运行工作负载。
- SSD:高性能和低延迟,因此适合运行工作负载。
重新生成
grub.cfg
文件:在基于 BIOS 的机器上:
grub2-mkconfig -o /boot/grub2/grub.cfg --update-bls-cmdline
# grub2-mkconfig -o /boot/grub2/grub.cfg --update-bls-cmdline
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在基于 UEFI 的机器上:
grub2-mkconfig -o /boot/grub2/grub.cfg --update-bls-cmdline
# grub2-mkconfig -o /boot/grub2/grub.cfg --update-bls-cmdline
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告对于基于 BIOS 和 UEFI 的机器,重建
grub.cfg
的路径是一样的。原始grub.cfg
只在 BIOS 路径上存在。UEFI 路径有一个 stub 文件,不能使用grub2-mkconfig
命令进行修改或重新创建。如果您的系统对
grub.cfg
使用非默认位置,请相应地调整命令。
配置 Windows Azure Linux 代理(
WALinuxAgent
):安装并启用
WALinuxAgent
软件包:dnf install WALinuxAgent -y systemctl enable waagent
# dnf install WALinuxAgent -y # systemctl enable waagent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要防止在置备的虚拟机中使用 swap 分区,请在
/etc/waagent.conf
文件中编辑以下行:Provisioning.DeleteRootPassword=y ResourceDisk.Format=n ResourceDisk.EnableSwap=n
Provisioning.DeleteRootPassword=y ResourceDisk.Format=n ResourceDisk.EnableSwap=n
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
为 Azure 置备准备虚拟机:
从 Red Hat Subscription Manager 中取消虚拟机的注册:
subscription-manager unregister
# subscription-manager unregister
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 清理现有的置备详情:
waagent -force -deprovision
# waagent -force -deprovision
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意此命令生成警告,因为 Azure 会自动处理虚拟机置备。
清除 shell 历史记录并关闭虚拟机:
export HISTSIZE=0 poweroff
# export HISTSIZE=0 # poweroff
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 要将 RHEL 镜像上传到 Azure 云,请 将其转换为 Azure 磁盘镜像格式。