执行导出前更新

通过更改原始源系统上的 VM,建议且有时有必要为 Private Cloud Appliance 准备 VM。在源系统的克隆而非原始 VM 上执行以下导出前更新步骤。

注意:

对源系统上的生产映像的克隆进行操作。这可以保护生产环境,并在需要重复该过程时提供已知的回退。使用源系统提供的克隆 VM 的方法。

例如,在 Oracle VM 和 Private Cloud Appliance 2.4 中,在 Servers and VMs(服务器和 VM)选项卡中选择 VM,右键单击并选择 Clone(克隆)。在所有情况下,请停止源 VM 以确保克隆具有一致的磁盘内容。

连接到操作系统当前级别的补丁程序

将克隆 VM 更新到同一 OS 的当前修补程序级别。

指令取决于来宾操作系统。例如,yum update 到 Oracle Linux 7 或 8 的最新修补程序级别,或者 Solaris 11.4 上的 pkg update,或者 Microsoft Windows 上的 Windows Update。打补丁后重新引导以确保打补丁后正确运行。

这样可以确保最新的设备驱动程序可用,并防止最近关闭的错误和安全风险。

将虚拟网络设备更改为 DHCP

Private Cloud Appliance 上安装来宾 VM 的虚拟网络后,可能需要进行多次更改才能正常工作。

专用云设备使用 DHCP 为新实例提供网络地址。由于可以从同一映像克隆多个实例,因此在创建每个实例时分配新的 MAC 和 IP 地址很有意义。

注意:

  1. 创建实例时由 DHCP 获取的 IP 地址是稳定的。
  2. 实例可见的 IP 地址是虚拟云网络 (VCN) 上的专用 IP 地址。可以使用网络地址转换 (Network Address Translation,NAT) 层从专用云设备外部访问实例。请参阅 Compute Enclave 实例说明中的 "Network"(网络)选项卡,了解专用和公共 IP 地址。

在 Linux 上,编辑文件 /etc/sysconfig/network-scripts/ifcfg-NICNAME 并删除 HWADDRMACADDR 行并设置 BOOTPROTO="dhcp"。或者,您可以使用随分发提供的图形工具。此外,删除文件 /etc/udev/rules.d/70-persistent-ipoib.rules/etc/udev/rules.d/70-persistentnet.rules(如果存在)。这些文件包含与新实例不匹配的 MAC 地址。如果需要,将自动重新创建它们。

在 Solaris 上,使用 ipadm 命令。例如:

# ipadm delete-addr net0/v4
# ipadm create-addr -T dhcp net0/v4
    

在 Windows 上,使用控制面板或设置。

移除虚拟机工具和驱动程序

如果要从 VMware、Oracle VM 或 VirtualBox 迁移,请从克隆中删除关联的半虚拟化驱动程序和工具。该映像将使用安装的工具和驱动程序,但是在引导时或登录时可能会看到错误消息,因此这是可选的。

例如,您可以删除 Microsoft Windows 的 Oracle VM 半虚拟化 (Paravirtualization,PV) 驱动程序,方法是在控制面板中定位驱动程序,然后右键单击并选择卸载

Private Cloud Appliance 安装 Linux 内核和驱动程序功能

操作系统可能需要在引导时显式包含 VirtIO 设备驱动程序。

注意:

如果源虚拟机管理程序是 KVM,则您已经拥有适用于 Private Cloud Appliance 的驱动程序。
  1. 您可以选择在运行 dracut 之前备份内核。例如:mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
  2. 使用 dracut 命令将设备驱动程序添加到 initramfs。例如:dracut --force -Ndracut -N --regenerateall
    • -N 选项禁用仅主机模式,该模式仅为当前主机创建 initramfs。此选项将生成一个通用映像。
    • 如果您在不具有 -N 选项的非常旧版本的 Linux 上运行,请特别列出 Private Cloud Appliance X9-2 所需的内核模块。例如:dracut --add-drivers 'sg sd_mod virtio virtio_pci virtio_ring virtio_scsi'
    • --regenerate-all 选项为 /boot 中的所有内核版本重新生成 initramfs,而不仅仅是当前引导的版本。这对于 Oracle Linux 有用,可确保 UEK 和 RHCK 内核都能获得所需的驱动程序,无论当前引导的是哪个驱动程序。
    • 选项 --force 会覆盖当前已存在的 initramfs 文件。

您可以在 /boot 中看到更新的 initramfs 文件。由于添加了设备驱动程序,它们将比以前的版本大。

如果省略 dracut 步骤,则可以在首次在专用云设备 X9-2 上启动实例时执行该步骤。

  1. 登录到计算区
  2. 选择实例并连接到控制台。
  3. Grub 菜单中选择挽救行。
  4. 如果在选择挽救引导之前引导失败,请从计算区对实例运行重置操作。
  5. 实例引导后,登录并运行 dracut 命令。

为 Private Cloud Appliance 安装 Solaris 内核和驱动程序功能

操作系统可能需要在引导时显式包含 VirtIO 设备驱动程序。

注意:

如果源虚拟机管理程序是 KVM,则您已经拥有正确的 PCA 驱动程序。
  1. Oracle 强烈建议 Solaris 11 用户升级到 Solaris 11.4,这是一个简单的过程,并且高度兼容。通过在 Solaris 11.4 实例中创建 Solaris 10 品牌非全局区域来移动 Solaris 10 环境。这样,Solaris 10 环境就可以从现代内核和设备驱动程序中受益。
  2. 使用 pkg update 命令将 Solaris 11.4 更新为最新的 SRU 并引导至新的引导环境。

为 Windows 安装 VirtIO 驱动程序

您需要为 Oracle Private Cloud Appliance 安装内核和驱动程序功能。您可以从 My Oracle Support 或 Oracle Software Delivery Cloud 下载。下面介绍如何为 Windows 操作系统获取它们。

对于 Oracle Software Delivery Cloud:

  1. 登录到 Oracle Software Delivery Cloud。
  2. 在“所有类别”列表中,选择释放
  3. 键入 Oracle Linux ,然后单击搜索
  4. 选择 DLP: Oracle Linux N.N.0.0.0 ( Oracle Linux )。由于新发行版可用,N 的值将不同。
  5. 单击继续
  6. 平台/语言列中,选择列表中的 x86 64 位,然后单击继续
  7. 接受 Oracle 标准条款和限制,然后单击继续
  8. 单击说明为 Oracle VirtIO Drivers for Microsoft Windows, version N.N.N 的文件名以下载驱动程序。本文的当前版本为 V1009702-01.zip。版本号将随新发行版的交付而变化。
  9. 将 zip 文件下载到 Windows VM。
  10. 通过提取 zip 并双击设置文件来安装驱动程序。完成后,重新启动和关闭。

要从 My Oracle Support 下载:

  1. 登录到 My Oracle Support。
  2. 选择补丁程序和更新程序选项卡。
  3. Patch Search(补丁程序搜索)面板的 Patch Name or Number(补丁程序名或编号)字段中,输入 27637937 ,然后单击 Search(搜索)。请勿选择任何平台选项。
  4. 单击 Oracle VirtIO driver version N.N.N 左侧的修补程序名称。例如,版本 2.0.1。
  5. Patch Details(补丁程序详细信息)页面中,单击 Download(下载)
  6. 通过提取 zip 并双击设置文件来安装驱动程序。完成后,重新启动并关闭。

(可选)安装初始化工具包

建议您安装 cloud-init (Linux) 或 cloudbase-init (Solaris,Windows) 工具包。

这些工具包是用于跨平台实例初始化的行业标准供应商无关方法。它们有助于识别云实例在引导期间运行,从云中读取提供的任何 metadata,并相应地初始化系统。它们能够从基于密码的 ssh 转换为使用密钥对交换。有关详细信息,请参阅 Oracle Private Cloud Appliance 用户指南的第 6.4 部分。

在 Oracle Linux 上,安装适用于 Linux 发行版的 cloud-initoci-utils 软件包。对 Oracle Linux 8 使用以下命令:

# dnf install yum-utils
# yum-config-manager --enable ol8_addons
# dnf install cloud-init oci-utils

在 Solaris 上,按 Installation and Software Management Features Solaris 11.4 What's New 文档中所述发出 pkg install cloudbase-init

然后,使用引用的引用中所述的密钥对交换,使用 userid opc(不带密码)将 ssh 添加到已启动的实例中。

上述步骤禁用基于密码的验证。如果要在目标系统上继续使用基于密码的 ssh 验证,以确保其像源平台一样运行,可以在导出之前通过编辑 /etc/cloud.cfg 并添加行重新启用该验证:

ssh_pwauth: 1

或者,您可以在导出之前通过在 /etc/ssh/sshd_config 中注释掉以下行来执行此操作:

# PasswordAuthentication no

在 Windows 实例上,使用 cloudbase-init,如 Cloudbase-init 文档中所述。

准备启动和文件系统

该映像仅包含引导磁盘,因此请禁用任何引导时服务和需要其他磁盘的应用程序。

对非引导文件系统的引用必须删除,直到稍后重新创建。如果引导映像引用其他磁盘进行交换,即 /tmp/var/logs,则必须将其临时移动到引导卷。

在 Linux 上执行以下步骤:

  1. 编辑 /etc/fstab
  2. 删除不在引导磁盘上的文件系统挂载的条目。
  3. 确保任何引导磁盘分区未被设备名称(如 /dev/xvda)直接引用。
  4. 请改用 LABEL=UUID=
  5. 如果您引用引导磁盘,则无需修改对 LVM 设备的引用。
  6. 运行 pvs 命令以确保唯一的 LVM 物理卷 (physical volume,PV) 是引导卷。
  7. 如果卷组 (Volume Group,VG) 位于其他物理卷上,则应在 /etc/fstab 中对其进行注释。

如果逻辑卷由引导磁盘和其他磁盘组成,则迁移会更加复杂,并且超出此解决方案的范围。

在 Solaris 上执行以下步骤:

  1. 编辑 /etc/vfstab
  2. 删除引导磁盘上没有的任何挂载。
  3. 对非根 ZFS 池运行 zpool export $POOLNAME 命令。通常,这些池是 rpool 之外的 ZFS 池。

禁用在引导时启动并需要完全配置的任何服务或应用程序,因为在专用云设备 X9-2 上初始启动时将没有完整的运行环境。