执行导出前更新

通过更改原始源系统上的 VM,为专用云设备准备 VM 是明智的,有时是必要的。对源系统的克隆(而非原始 VM)执行以下导出前更新步骤。

注意:

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

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

对操作系统当前级别的补丁程序

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

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

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

将虚拟网络设备更改为 DHCP

来宾 VM 的虚拟网络在私有云一体机上安装后可能需要多次更改才能工作。

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

注:

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

在 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 半虚拟化 (PV) 驱动程序。

安装适用于 Private Cloud Appliance 的 Linux 内核和驱动程序功能

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

注:

如果源虚拟机管理程序是 KVM,那么您就已经拥有合适的 私有云一体机驱动程序。
  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 步骤,则首次在 Private Cloud Appliance 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 ,然后单击 Search(搜索)
  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. 补丁程序搜索面板的补丁程序名或编号字段中,输入 27637937 ,然后单击搜索。请勿选择任何平台选项。
  4. 单击 Oracle VirtIO driver version N.N.N 左侧的补丁程序名称。例如,版本 2.0.1。
  5. 补丁程序详细资料页中,单击下载
  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 document 中所述发出 pkg install cloudbase-init

然后,使用引用的引用中所述的密钥对交换,将 ssh 与不带口令的 userid opc 一起进入启动的实例。

上述步骤将禁用基于口令的验证。如果要在目标系统上继续使用基于口令的 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. 如果卷组 (VG) 位于其他物理卷上,则应从 /etc/fstab 中对其进行注释。

如果逻辑卷同时包含引导磁盘和其他磁盘,则迁移更加复杂,超出此解决方案的范围。

在 Solaris 上执行以下步骤:

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

禁用引导时启动并需要完全配置的任何服务或应用程序,因为在 Private Cloud Appliance X9-2 上初始启动将没有完整的操作环境。