执行导出前更新
通过更改原始源系统上的 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 地址很有意义。
注意:
- 创建实例时由 DHCP 获取的 IP 地址是稳定的。
- 实例可见的 IP 地址是虚拟云网络 (VCN) 上的专用 IP 地址。可以使用网络地址转换 (Network Address Translation,NAT) 层从专用云设备外部访问实例。请参阅 Compute Enclave 实例说明中的 "Network"(网络)选项卡,了解专用和公共 IP 地址。
在 Linux 上,编辑文件 /etc/sysconfig/network-scripts/ifcfg-NICNAME
并删除 HWADDR
或 MACADDR
行并设置 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 的驱动程序。- 您可以选择在运行
dracut
之前备份内核。例如:mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
- 使用
dracut
命令将设备驱动程序添加到initramfs
。例如:dracut --force -N
或dracut -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 上启动实例时执行该步骤。
- 登录到计算区。
- 选择实例并连接到控制台。
- 在 Grub 菜单中选择挽救行。
- 如果在选择挽救引导之前引导失败,请从计算区对实例运行重置操作。
- 实例引导后,登录并运行
dracut
命令。
为 Private Cloud Appliance 安装 Solaris 内核和驱动程序功能
操作系统可能需要在引导时显式包含 VirtIO 设备驱动程序。
注意:
如果源虚拟机管理程序是 KVM,则您已经拥有正确的 PCA 驱动程序。- Oracle 强烈建议 Solaris 11 用户升级到 Solaris 11.4,这是一个简单的过程,并且高度兼容。通过在 Solaris 11.4 实例中创建 Solaris 10 品牌非全局区域来移动 Solaris 10 环境。这样,Solaris 10 环境就可以从现代内核和设备驱动程序中受益。
- 使用
pkg update
命令将 Solaris 11.4 更新为最新的 SRU 并引导至新的引导环境。
为 Windows 安装 VirtIO 驱动程序
您需要为 Oracle Private Cloud Appliance 安装内核和驱动程序功能。您可以从 My Oracle Support 或 Oracle Software Delivery Cloud 下载。下面介绍如何为 Windows 操作系统获取它们。
对于 Oracle Software Delivery Cloud:
- 登录到 Oracle Software Delivery Cloud。
- 在“所有类别”列表中,选择释放。
- 键入 Oracle Linux ,然后单击搜索。
- 选择
DLP: Oracle Linux N.N.0.0.0 ( Oracle Linux )
。由于新发行版可用,N 的值将不同。 - 单击继续。
- 在平台/语言列中,选择列表中的 x86 64 位,然后单击继续。
- 接受 Oracle 标准条款和限制,然后单击继续。
- 单击说明为
Oracle VirtIO Drivers for Microsoft Windows, version N.N.N
的文件名以下载驱动程序。本文的当前版本为 V1009702-01.zip。版本号将随新发行版的交付而变化。 - 将 zip 文件下载到 Windows VM。
- 通过提取 zip 并双击设置文件来安装驱动程序。完成后,重新启动和关闭。
要从 My Oracle Support 下载:
- 登录到 My Oracle Support。
- 选择补丁程序和更新程序选项卡。
- 在 Patch Search(补丁程序搜索)面板的 Patch Name or Number(补丁程序名或编号)字段中,输入 27637937 ,然后单击 Search(搜索)。请勿选择任何平台选项。
- 单击
Oracle VirtIO driver version N.N.N
左侧的修补程序名称。例如,版本 2.0.1。 - 从 Patch Details(补丁程序详细信息)页面中,单击 Download(下载)。
- 通过提取 zip 并双击设置文件来安装驱动程序。完成后,重新启动并关闭。
(可选)安装初始化工具包
建议您安装 cloud-init
(Linux) 或 cloudbase-init
(Solaris,Windows) 工具包。
这些工具包是用于跨平台实例初始化的行业标准供应商无关方法。它们有助于识别云实例在引导期间运行,从云中读取提供的任何 metadata
,并相应地初始化系统。它们能够从基于密码的 ssh
转换为使用密钥对交换。有关详细信息,请参阅 Oracle Private Cloud Appliance 用户指南的第 6.4 部分。
在 Oracle Linux 上,安装适用于 Linux 发行版的 cloud-init
和 oci-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 上执行以下步骤:
- 编辑
/etc/fstab
。 - 删除不在引导磁盘上的文件系统挂载的条目。
- 确保任何引导磁盘分区未被设备名称(如
/dev/xvda
)直接引用。 - 请改用 LABEL= 或 UUID=。
- 如果您引用引导磁盘,则无需修改对 LVM 设备的引用。
- 运行
pvs
命令以确保唯一的 LVM 物理卷 (physical volume,PV) 是引导卷。 - 如果卷组 (Volume Group,VG) 位于其他物理卷上,则应在 /etc/fstab 中对其进行注释。
如果逻辑卷由引导磁盘和其他磁盘组成,则迁移会更加复杂,并且超出此解决方案的范围。
在 Solaris 上执行以下步骤:
- 编辑
/etc/vfstab
。 - 删除引导磁盘上没有的任何挂载。
- 对非根
ZFS
池运行zpool export $POOLNAME
命令。通常,这些池是rpool
之外的ZFS
池。
禁用在引导时启动并需要完全配置的任何服务或应用程序,因为在专用云设备 X9-2 上初始启动时将没有完整的运行环境。