执行导出前更新
通过更改原始源系统上的 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 地址很有意义。
注:
- 创建实例时 DHCP 获取的 IP 地址是稳定的。
- 实例可见的 IP 地址是虚拟云网络 (VCN) 上的专用 IP 地址。使用网络地址转换 (Network Address Translation,NAT) 层从私有云一体机外部访问实例。要查看专用和公共 IP 地址,请参见 Compute Enclave 的实例说明中的 "Network"(网络)选项卡。
在 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 半虚拟化 (PV) 驱动程序。
安装适用于 Private Cloud Appliance 的 Linux 内核和驱动程序功能
操作系统可能需要在引导时显式包含 VirtIO 设备驱动程序。
注:
如果源虚拟机管理程序是 KVM,那么您就已经拥有合适的 私有云一体机驱动程序。- 您可以选择在运行
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
步骤,则首次在 Private Cloud Appliance 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 ,然后单击 Search(搜索)。
- 选择
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。
- 选择补丁程序和更新程序选项卡。
- 在补丁程序搜索面板的补丁程序名或编号字段中,输入 27637937 ,然后单击搜索。请勿选择任何平台选项。
- 单击
Oracle VirtIO driver version N.N.N
左侧的补丁程序名称。例如,版本 2.0.1。 - 从补丁程序详细资料页中,单击下载。
- 通过提取 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 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 上执行以下步骤:
- 编辑
/etc/fstab
。 - 删除未在引导磁盘上的文件系统挂载的条目。
- 确保设备名称(例如
/dev/xvda
)未直接引用任何引导磁盘分区。 - 请改用 LABEL= 或 UUID=。
- 如果您参考引导磁盘,则无需修改对 LVM 设备的引用。
- 运行
pvs
命令以确保唯一的 LVM 物理卷 (Physical Volume,PV) 是引导卷。 - 如果卷组 (VG) 位于其他物理卷上,则应从 /etc/fstab 中对其进行注释。
如果逻辑卷同时包含引导磁盘和其他磁盘,则迁移更加复杂,超出此解决方案的范围。
在 Solaris 上执行以下步骤:
- 编辑
/etc/vfstab
。 - 删除不在引导磁盘上的任何挂载。
- 对非根
ZFS
池运行zpool export $POOLNAME
命令。通常,这些池是rpool
以外的ZFS
池。
禁用引导时启动并需要完全配置的任何服务或应用程序,因为在 Private Cloud Appliance X9-2 上初始启动将没有完整的操作环境。