1.2. 管理镜像
镜像服务(glance)为磁盘和服务器镜像提供发现、注册和交付服务。它提供了复制或快照服务器镜像的功能,并立即存储它。您可以将存储的镜像用作模板,比安装服务器操作系统和单独配置服务,快速、一致地委托新的服务器。
1.2.1. 创建镜像
使用 Red Hat Enterprise Linux 7 ISO 文件、Red Hat Enterprise Linux 6 ISO 文件或 Windows ISO 文件手动创建 QCOW2 格式的 Red Hat OpenStack Platform (RHOSP)兼容镜像。
1.2.1.1. 在 Red Hat OpenStack Platform 中使用 KVM 客户机镜像
您可以使用可用的 RHEL KVM 客户机 QCOW2 镜像:
这些镜像配置有 cloud-init
,且必须利用 ec2 兼容元数据服务来置备 SSH 密钥才能正常工作。
就绪的 Windows KVM 客户机 QCOW2 镜像不可用。
对于 KVM 客户机镜像:
-
镜像中的
root
帐户被禁用,但sudo
访问权限被授予一个名为cloud-user
的特殊用户。 -
此镜像没有设置
root
密码。
通过将 !!
放置到第二个字段中,将 root
密码锁定在 /etc/shadow
中。
对于 RHOSP 实例,从 RHOSP 仪表板或命令行生成 ssh 密钥对,并使用该组合键以 root 用户身份对实例执行 SSH 公共身份验证。
实例启动后,此公钥会注入到其中。然后,您可以使用您在创建密钥对时下载的私钥进行身份验证。
如果要创建自定义 Red Hat Enterprise Linux 或 Windows 镜像,请参阅创建 Red Hat Enterprise Linux 7 镜像、创建 Red Hat Enterprise Linux 6 镜像 或 创建 Windows 镜像。
1.2.1.2. 创建自定义 Red Hat Enterprise Linux 或 Windows 镜像
先决条件
- 创建镜像的 Linux 主机机器。这可以是您可以在其上安装和运行 Linux 软件包( undercloud 或 overcloud 除外)的任何计算机。
advanced-virt 存储库已启用:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo subscription-manager repos --enable=advanced-virt-for-rhel-8-x86_64-rpms
$ sudo subscription-manager repos --enable=advanced-virt-for-rhel-8-x86_64-rpms
libvirt,virt-manager 会安装创建客户机操作系统所需的所有软件包:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo dnf module install -y virt
$ sudo dnf module install -y virt
libguestfs 工具用于安装一组访问和修改虚拟机镜像的工具:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo dnf install -y libguestfs-tools-c
$ sudo dnf install -y libguestfs-tools-c
- Red Hat Enterprise Linux 7 或 6 ISO 文件。如需更多信息,请参阅 RHEL 7.2 Binary DVD 或者 RHEL 6.8 Binary DVD 或者 Windows ISO 文件。如果您没有 Windows ISO 文件,请参阅 Microsoft TechNet 评估中心 下载评估镜像。
-
文本编辑器,如果您要更改
kickstart
文件(仅限 RHEL)。
如果在 undercloud 上安装 libguestfs-tools
软件包,请禁用 iscsid.socket
,以避免在 undercloud 上与 tripleo_iscsid
服务冲突:
sudo systemctl disable --now iscsid.socket
$ sudo systemctl disable --now iscsid.socket
1.2.1.2.1. 创建 Red Hat Enterprise Linux 7 镜像
使用 Red Hat Enterprise Linux 7 ISO 文件手动创建 QCOW2 格式的 Red Hat OpenStack Platform (RHOSP)兼容镜像。
您必须在主机机器上使用 [root@host]#
运行所有命令。
使用
virt-install
开始安装:Copy to Clipboard Copied! Toggle word wrap Toggle overflow qemu-img create -f qcow2 rhel7.qcow2 8G virt-install --virt-type kvm --name rhel7 --ram 2048 \ --cdrom /tmp/rhel-server-7.2-x86_64-dvd.iso \ --disk rhel7.qcow2,format=qcow2 \ --network=bridge:virbr0 --graphics vnc,listen=0.0.0.0 \ --noautoconsole --os-type=linux --os-variant=rhel7
[root@host]# qemu-img create -f qcow2 rhel7.qcow2 8G [root@host]# virt-install --virt-type kvm --name rhel7 --ram 2048 \ --cdrom /tmp/rhel-server-7.2-x86_64-dvd.iso \ --disk rhel7.qcow2,format=qcow2 \ --network=bridge:virbr0 --graphics vnc,listen=0.0.0.0 \ --noautoconsole --os-type=linux --os-variant=rhel7
这会启动实例并启动安装过程。
注意如果实例没有自动启动,请运行
virt-viewer
命令来查看控制台:Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-viewer rhel7
[root@host]# virt-viewer rhel7
配置实例:
- 在初始安装程序引导菜单中,选择 Install Red Hat Enterprise Linux 7。
- 选择相应的 Language 和 Keyboard 选项。
- 当系统提示安装所使用的设备类型时,请选择 Auto-detected installation media。
- 当提示安装目的地类型时,请选择 Local Standard Disks。对于其他存储选项,请选择 Automatically configure partitioning。
- 对于软件选择,请选择 Minimal Install。
- 对于网络和主机名,请选择 eth0 作为网络,然后选择您的设备的主机名。默认主机名是 localhost.localdomain。
在 Root Password 字段中输入密码,然后在 Confirm 字段中输入同一密码。
- 结果
- 安装过程完成并显示 Complete! 屏幕。
- 安装完成后,重启实例并以 root 用户身份登录。
更新
/etc/sysconfig/network-scripts/ifcfg-eth0
文件,使其只包含以下值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow TYPE=Ethernet DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=no
TYPE=Ethernet DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=no
- 重启机器。
使用 Content Delivery Network 注册机器。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo subscription-manager register sudo subscription-manager attach --pool=Valid-Pool-Number-123456 sudo subscription-manager repos --enable=rhel-7-server-rpms
# sudo subscription-manager register # sudo subscription-manager attach --pool=Valid-Pool-Number-123456 # sudo subscription-manager repos --enable=rhel-7-server-rpms
更新系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dnf -y update
# dnf -y update
安装
cloud-init
软件包:Copy to Clipboard Copied! Toggle word wrap Toggle overflow dnf install -y cloud-utils-growpart cloud-init
# dnf install -y cloud-utils-growpart cloud-init
编辑
/etc/cloud/cloud.cfg
配置文件以及cloud_init_modules
add 下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - resolv-conf
- resolv-conf
resolv-conf
选项会在实例第一次引导时自动配置resolv.conf
。此文件包含与实例相关的信息,如名称服务器
、域
和其他选项。在
/etc/sysconfig/network
中添加以下行以避免访问 EC2 元数据服务出现问题:Copy to Clipboard Copied! Toggle word wrap Toggle overflow NOZEROCONF=yes
NOZEROCONF=yes
要确保控制台信息会在仪表板的 Log 标签页和
nova console-log
输出中显示,请在/etc/default/grub
文件中添加以下引导选项:Copy to Clipboard Copied! Toggle word wrap Toggle overflow GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
运行
grub2-mkconfig
命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow grub2-mkconfig -o /boot/grub2/grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfg
输出如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-229.7.2.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.7.2.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-121.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-121.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-b82a3044fb384a3f9aeacf883474428b Found initrd image: /boot/initramfs-0-rescue-b82a3044fb384a3f9aeacf883474428b.img done
Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-229.7.2.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.7.2.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-121.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-121.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-b82a3044fb384a3f9aeacf883474428b Found initrd image: /boot/initramfs-0-rescue-b82a3044fb384a3f9aeacf883474428b.img done
取消注册实例,以便生成的镜像不包含此实例的订阅详情:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow subscription-manager repos --disable=* subscription-manager unregister dnf clean all
# subscription-manager repos --disable=* # subscription-manager unregister # dnf clean all
关闭实例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow poweroff
# poweroff
使用
virt-sysprep
命令重置并清理镜像,以便它可用于在没有问题的情况下创建实例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-sysprep -d rhel7
[root@host]# virt-sysprep -d rhel7
通过将磁盘镜像中的任何可用空间转换为主机中的可用空间来减小镜像大小:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-sparsify --compress /tmp/rhel7.qcow2 rhel7-cloud.qcow2
[root@host]# virt-sparsify --compress /tmp/rhel7.qcow2 rhel7-cloud.qcow2
这会在运行命令的位置中创建一个新的
rhel7-cloud.qcow2
文件。
rhel7-cloud.qcow2
镜像文件已准备好上传到镜像服务。有关使用仪表板将此镜像上传到 RHOSP 部署的更多信息,请参阅 上传镜像。
1.2.1.2.2. 创建 Red Hat Enterprise Linux 6 镜像
使用 Red Hat Enterprise Linux 6 ISO 文件手动创建 QCOW2 格式的 Red Hat OpenStack Platform (RHOSP)兼容镜像。
您必须在主机机器上使用 [root@host]#
运行所有命令。
使用
virt-install
开始安装:Copy to Clipboard Copied! Toggle word wrap Toggle overflow qemu-img create -f qcow2 rhel6.qcow2 4G virt-install --connect=qemu:///system --network=bridge:virbr0 \ --name=rhel6 --os-type linux --os-variant rhel6 \ --disk path=rhel6.qcow2,format=qcow2,size=10,cache=none \ --ram 4096 --vcpus=2 --check-cpu --accelerate \ --hvm --cdrom=rhel-server-6.8-x86_64-dvd.iso
[root@host]# qemu-img create -f qcow2 rhel6.qcow2 4G [root@host]# virt-install --connect=qemu:///system --network=bridge:virbr0 \ --name=rhel6 --os-type linux --os-variant rhel6 \ --disk path=rhel6.qcow2,format=qcow2,size=10,cache=none \ --ram 4096 --vcpus=2 --check-cpu --accelerate \ --hvm --cdrom=rhel-server-6.8-x86_64-dvd.iso
这会启动实例并启动安装过程。
注意如果实例没有自动启动,请运行
virt-viewer
命令来查看控制台:Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-viewer rhel6
[root@host]# virt-viewer rhel6
配置实例:
在初始安装程序引导菜单中,选择 Install or upgrade an existing system,并按照安装提示进行操作。接受默认值。
磁盘安装程序提供在安装前测试安装介质的选项。选择 OK 以运行测试或 跳过 以在没有测试的情况下继续。
- 选择相应的 Language 和 Keyboard 选项。
- 当系统提示安装所使用的设备类型时,请选择 基本存储设备。
-
为您的设备选择一个主机名。默认主机名是
localhost.localdomain
。 -
设置 时区和
root
密码。 - 根据磁盘上的空间,从哪个安装类型中选择您想要的 安装类型? 窗口。
- 选择 Basic Server 安装,它将安装 SSH 服务器。
- 安装过程完成,并会显示 Congratulations,您的 Red Hat Enterprise Linux 安装已完成 屏幕。
-
重启实例,并以
root
用户身份登录。 更新
/etc/sysconfig/network-scripts/ifcfg-eth0
文件,使其只包含以下值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow TYPE=Ethernet DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=no
TYPE=Ethernet DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=no
- 重启机器。
使用 Content Delivery Network 注册机器:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo subscription-manager register sudo subscription-manager attach --pool=Valid-Pool-Number-123456 sudo subscription-manager repos --enable=rhel-6-server-rpms
# sudo subscription-manager register # sudo subscription-manager attach --pool=Valid-Pool-Number-123456 # sudo subscription-manager repos --enable=rhel-6-server-rpms
更新系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dnf -y update
# dnf -y update
安装
cloud-init
软件包:Copy to Clipboard Copied! Toggle word wrap Toggle overflow dnf install -y cloud-utils-growpart cloud-init
# dnf install -y cloud-utils-growpart cloud-init
编辑
/etc/cloud/cloud.cfg
配置文件,并在cloud_init_modules
下添加以下内容。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - resolv-conf
- resolv-conf
resolv-conf
选项会在实例第一次引导时自动配置resolv.conf
配置文件。此文件包含与实例相关的信息,如名称服务器
、域
和其他选项。要防止网络问题,请创建
/etc/udev/rules.d/75-persistent-net-generator.rules
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo "#" > /etc/udev/rules.d/75-persistent-net-generator.rules
# echo "#" > /etc/udev/rules.d/75-persistent-net-generator.rules
这可防止创建
/etc/udev/rules.d/70-persistent-net.rules
文件。如果创建了/etc/udev/rules.d/70-persistent-net.rules
,则网络在从快照引导时可能无法正常工作,则网络接口将创建为eth1
而不是eth0
,IP 地址没有被分配。在
/etc/sysconfig/network
中添加以下行以避免访问 EC2 元数据服务出现问题:Copy to Clipboard Copied! Toggle word wrap Toggle overflow NOZEROCONF=yes
NOZEROCONF=yes
要确保控制台信息会在仪表板的 Log 标签页和
nova console-log
输出中显示,请在/etc/grub.conf
文件中添加以下引导选项:Copy to Clipboard Copied! Toggle word wrap Toggle overflow console=tty0 console=ttyS0,115200n8
console=tty0 console=ttyS0,115200n8
取消注册虚拟机,以便生成的镜像不包含此实例的相同订阅详情:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow subscription-manager repos --disable=* subscription-manager unregister dnf clean all
# subscription-manager repos --disable=* # subscription-manager unregister # dnf clean all
关闭实例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow poweroff
# poweroff
使用
virt-sysprep
命令重置并清理镜像,以便它可用于在没有问题的情况下创建实例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-sysprep -d rhel6
[root@host]# virt-sysprep -d rhel6
使用
virt-sparsify
命令减小镜像大小。这个命令将磁盘镜像中的任何可用空间转换为主机中的可用空间:Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-sparsify --compress rhel6.qcow2 rhel6-cloud.qcow2
[root@host]# virt-sparsify --compress rhel6.qcow2 rhel6-cloud.qcow2
这会在运行命令的位置中创建一个新的
rhel6-cloud.qcow2
文件。注意您必须根据应用到实例的类别中的磁盘空间手动调整实例的分区大小。
rhel6-cloud.qcow2
镜像文件已准备好上传到镜像服务。有关使用仪表板将此镜像上传到 RHOSP 部署的更多信息,请参阅 上传镜像
1.2.1.2.3. 创建 Windows 镜像
使用 Windows ISO 文件手动创建 QCOW2 格式的 Red Hat OpenStack Platform (RHOSP)兼容镜像。
您必须在主机机器上使用 [root@host]#
运行所有命令。
流程
使用
virt-install
开始安装:Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-install --name=<name> \ --disk size=<size> \ --cdrom=<path> \ --os-type=windows \ --network=bridge:virbr0 \ --graphics spice \ --ram=<ram>
[root@host]# virt-install --name=<name> \ --disk size=<size> \ --cdrom=<path> \ --os-type=windows \ --network=bridge:virbr0 \ --graphics spice \ --ram=<ram>
替换
virt-install
参数的以下值:- <name> iwl-DESTINATIONthe Windows 实例具有的名称。
- 以 GB 为单位的 <size> iwl-wagondisk 大小。
- <path> iwl-wagonthe 到 Windows 安装 ISO 文件的路径。
<RAM> iwl-wagonthe 请求的 RAM 量(以 MB 为单位)。
注意--os-type=windows
参数确保为 Windows 客户机正确配置了时钟,并启用其 Hyper-V enlightenment 功能。在将镜像上传到镜像服务前,还必须在镜像元数据中设置os_type=windows
。
virt-install
默认将客户机镜像保存为/var/lib/libvirt/images/
<name&
gt; .qcow2
。如果要在其他位置保留客户机镜像,请更改--disk
选项的参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow --disk path=<filename>,size=<size>
--disk path=<filename>,size=<size>
将 <filename> 替换为存储实例镜像的文件名称,以及其路径(可选)。例如,
path=win8.qcow2,size=8
在当前工作目录中创建一个名为win8.qcow2
的 8 GB 文件。提示如果客户机没有自动启动,请运行
virt-viewer
命令来查看控制台:Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-viewer <name>
[root@host]# virt-viewer <name>
有关如何安装 Windows 的更多信息,请参阅相关的 Microsoft 文档。
-
要允许新安装的 Windows 系统使用虚拟化硬件,您可能需要安装 virtio 驱动程序。为此,首先要安装镜像,该镜像必须作为 CD-ROM 驱动器附加到 Windows 实例。要安装
virtio-win
软件包,您必须将 virtio ISO 镜像添加到实例中,并安装 virtio 驱动程序。如需更多信息,请参阅 配置和管理虚拟化 指南中的 为 Windows 虚拟机安装 KVM 半虚拟驱动程序。 要完成配置,请在 Windows 系统上下载并执行 Cloudbase-Init。在安装 Cloudbase-Init 的末尾,选择 Run Sysprep 和 Shutdown 复选框。
Sysprep
工具通过生成操作系统 ID (供某些 Microsoft 服务使用)使客户机唯一。重要红帽不提供对 Cloudbase-Init 的技术支持。如果您遇到问题,请联系 Cloudbase Solutions。
当 Windows 系统关闭时,< ;name>.qcow2
镜像文件可以上传到镜像服务。有关使用仪表板或命令行将此镜像上传到 RHOSP 部署的更多信息,请参阅 上传镜像。
libosinfo data
Compute Service 已弃用了对使用 libosinfo 数据来设置默认设备模型的支持。反之,使用以下镜像元数据属性为实例配置最佳虚拟硬件:
-
os_distro
-
os_version
-
hw_cdrom_bus
-
hw_disk_bus
-
hw_scsi_model
-
hw_vif_model
-
hw_video_model
-
hypervisor_type
有关这些元数据属性的详情,请参考 附录 A, 镜像配置参数。
1.2.2. 上传镜像
- 在控制面板中,选择 Project > Compute > Images。
- 点 Create Image。
- 填写值,再单击 Create Image。
字段 | 备注 |
---|---|
Name | 镜像的名称。该名称在项目内必须是唯一的。 |
描述 | 用于标识镜像的简短描述。 |
镜像源 | 镜像源:镜像位置或镜像文件.根据您的选择,会显示下一个字段。 |
镜像位置或镜像文件 |
|
格式 | 镜像格式(如 qcow2)。 |
架构 | 镜像架构。例如,使用 i686 作为 32 位构架,或将 x86_64 用于 64 位架构。 |
最小磁盘(GB) | 引导镜像所需的最小磁盘大小。如果没有指定此字段,则默认值为 0 (无最小值)。 |
最小 RAM (MB) | 引导镜像所需的最小内存大小。如果没有指定此字段,则默认值为 0 (无最小值)。 |
公开 | 如果选中,将镜像变为所有有权访问项目的用户。 |
protected | 如果选中,则确保只有具有特定权限的用户才能删除此镜像。 |
成功上传镜像后,其状态为 active
,这表示该镜像可供使用。请注意,镜像服务甚至可以处理大型镜像,这些镜像需要很长时间才能上传为 uploads 时使用的身份服务令牌的生命周期。这是因为镜像服务首先创建与身份服务的信任,以便在上传完成后获取和使用新令牌,并更新镜像的状态。
您还可以使用 glance image-create
命令和 property
选项来上传镜像。命令行中提供了更多值。有关完整的列表,请参阅 镜像配置参数。
1.2.3. 更新镜像
- 在控制面板中,选择 Project > Compute > Images。
点列表中的 Edit Image。
注意只有以
admin
用户身份登录时,才可使用 Edit Image 选项。当您以demo
用户身份登录时,您可以选择 启动实例 或 创建卷。- 更新字段并点 Update Image。您可以更新以下值 - name, description, kernel ID, ramdisk ID, architecture, format, minimum disk, minimum RAM, public, protected。
- 点下拉菜单并选择 Update Metadata 选项。
- 通过在右列中添加项来指定元数据。在左列中,镜像服务元数据目录中有元数据定义。选择 Other 添加带有您选择的密钥的元数据,完成后点 Save。
您还可以使用 glance image-update
命令和 property
选项来更新镜像。命令行中提供了更多值;有关完整列表,请参阅 镜像配置参数。
1.2.4. 导入镜像
您可以使用以下两种方法之一将镜像导入到镜像服务(glance):
-
使用
web-download
从 URI 导入镜像。 -
使用
glance-direct
从本地文件系统导入镜像。
web-download
方法默认为启用。云管理员配置导入方法。您可以运行 glance import-info
命令来列出可用的导入选项。
1.2.4.1. 从远程 URI 导入镜像
您可以使用 web-download
方法从远程 URI 复制镜像。
创建镜像并指定要导入的镜像的 URI:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow glance image-create-via-import \ --container-format <CONTAINER FORMAT> \ --disk-format <DISK-FORMAT> \ --name <NAME> \ --import-method web-download \ --uri <URI>
$ glance image-create-via-import \ --container-format <CONTAINER FORMAT> \ --disk-format <DISK-FORMAT> \ --name <NAME> \ --import-method web-download \ --uri <URI>
-
将
<CONTAINER FORMAT
> 替换为您要为镜像设置的容器格式(None, ami, ari, aki, bare, ovf, ova, docker)。 -
将
<DISK-FORMAT
> 替换为您要为镜像设置的磁盘格式(None, ami, ari, aki, vhd, vhdx, vmdk, raw, qcow2, vdi, iso, ploop)。 -
将
<NAME
> 替换为您的镜像的描述性名称。 -
将
<URI
> 替换为您的镜像的 URI。
-
将
您可以使用
glance image-show <IMAGE_ID>
; 命令检查镜像的可用性。-
将
<IMAGE_ID
> 替换为您在创建镜像过程中提供的 ID。
-
将
镜像服务 Web 下载
方法使用两阶段进程来执行导入:
-
Web 下载
方法创建一个镜像记录。 -
Web 下载
方法从指定的 URI 检索镜像。
URI 受可选的 denylist 和 allowlist 过滤的影响。
Image Property Injection 插件可能会向镜像注入元数据属性。这些注入的属性决定了镜像实例在其上启动哪些计算节点。
1.2.4.2. 从本地卷导入镜像
glance-direct
方法创建一个镜像记录,它会生成一个镜像 ID。镜像从本地卷上传到镜像服务后,它会存储在暂存区域中,并在通过任何配置的检查后激活。在高可用性(HA)配置中使用时,glance-direct
方法需要一个共享暂存区域。
如果不存在通用暂存区域,使用 glance-direct
方法的镜像上传可能会在 HA 环境中失败。在 HA 主动环境中,API 调用被分发到镜像服务控制器。下载 API 调用可以发送到与 API 调用不同的控制器,以上传镜像。
glance-direct 方法使用三个不同的调用来导入镜像:
-
glance image-create
-
glance image-stage
-
glance image-import
您可以使用 glance image-create-via-import
命令在一个命令中执行所有三个调用:
glance image-create-via-import --container-format <CONTAINER FORMAT> --disk-format <DISK-FORMAT> --name <NAME> --file </PATH/TO/IMAGE>
$ glance image-create-via-import --container-format <CONTAINER FORMAT> --disk-format <DISK-FORMAT> --name <NAME> --file </PATH/TO/IMAGE>
-
将 &
lt;CONTAINER FORMAT>
;, <DISK-FORMAT
> , <NAME
> , 和 </PATH/TO/IMAGE
> 替换为您的镜像的相关值。
镜像从暂存区域移到后端位置后,会列出该镜像。但是,可能需要过些时间,镜像才会变为活动状态。
您可以使用 glance image-show <IMAGE_ID>
; 命令检查镜像的可用性。
-
将
<IMAGE_ID
替换为您在创建镜像过程中提供的 ID。
1.2.5. 删除镜像
- 在控制面板中,选择 Project > Compute > Images。
- 选择您要删除的镜像,然后点 Delete Images。
1.2.6. 隐藏或取消隐藏镜像
您可以从向用户呈现的普通列表中隐藏公共镜像。例如,您可以隐藏过时的 CentOS 7 镜像,并只显示最新版本来简化用户体验。用户可以发现和使用隐藏的镜像。
隐藏镜像:
glance image-update <image_id> --hidden 'true'
glance image-update <image_id> --hidden 'true'
要创建隐藏的镜像,请将 --hidden
参数添加到 glance image-create
命令。
解译镜像:
glance image-update <image_id> --hidden 'false'
glance image-update <image_id> --hidden 'false'
1.2.8. 启用镜像转换
启用 GlanceImageImportPlugins
参数后,您可以上传 QCOW2 镜像,镜像服务会将它转换为 RAW。
当使用 Red Hat Ceph Storage RBD 来存储镜像和引导 Nova 实例时,会自动启用镜像转换。
要启用镜像转换,请创建一个包含以下参数值的环境文件,并在 openstack overcloud deploy
命令中使用 -e
选项包括新的环境文件:
parameter_defaults: GlanceImageImportPlugins:'image_conversion'
parameter_defaults:
GlanceImageImportPlugins:'image_conversion'
1.2.9. 将镜像转换为 RAW 格式
Red Hat Ceph Storage 可以存储,但不支持使用 QCOW2 镜像来托管虚拟机(VM)磁盘。
当您上传 QCOW2 镜像并从中创建虚拟机时,计算节点会下载镜像,将镜像转换为 RAW,然后将其上传到 Ceph,然后使用它。这个过程会影响创建虚拟机所需的时间,特别是在并行虚拟机创建过程中。
例如,当您同时创建多个虚拟机时,上传转换的镜像到 Ceph 集群可能会影响已在运行的工作负载。上传过程可能会使 IOPS 的工作负载以及存储响应速度导致。
要在 Ceph 中更有效地引导虚拟机(临时后端或从卷引导),glance 镜像格式必须是 RAW。
流程
将镜像转换为 RAW 可能会产生大于原始 QCOW2 镜像文件的镜像。在转换前运行以下命令,以确定最终 RAW 镜像大小:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow qemu-img info <image>.qcow2
qemu-img info <image>.qcow2
将镜像从 QCOW2 转换为 RAW 格式:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow qemu-img convert -p -f qcow2 -O raw <original qcow2 image>.qcow2 <new raw image>.raw
qemu-img convert -p -f qcow2 -O raw <original qcow2 image>.qcow2 <new raw image>.raw
1.2.9.1. 在 Image 服务(glance)中配置磁盘格式.
您可以使用 GlanceDiskFormats
参数配置镜像服务(glance)以启用或禁用磁盘格式。
流程
-
以
stack
用户身份登录 undercloud 主机。 提供 undercloud 凭证文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow source ~/stackrc
$ source ~/stackrc
在环境文件中包含
GlanceDiskFormats
参数,如glance_disk_formats.yaml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaults: GlanceDiskFormats: - <disk_format>
parameter_defaults: GlanceDiskFormats: - <disk_format>
例如,使用以下配置只启用 RAW 和 ISO 磁盘格式:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaults: GlanceDiskFormats: - raw - iso
parameter_defaults: GlanceDiskFormats: - raw - iso
使用以下示例配置拒绝 QCOW2 磁盘镜像:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaults: GlanceDiskFormats: - raw - iso - aki - ari - ami
parameter_defaults: GlanceDiskFormats: - raw - iso - aki - ari - ami
在
openstack overcloud deploy
命令中包含新配置的环境文件以及与您环境相关的任何其他环境文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack overcloud deploy --templates \ -e <overcloud_environment_files> \ -e <new_environment_file> \ …
$ openstack overcloud deploy --templates \ -e <overcloud_environment_files> \ -e <new_environment_file> \ …
-
将
<overcloud_environment_files
> 替换为属于部署的环境文件列表。 -
将
<new_environment_file
> 替换为包含新配置的环境文件。
-
将
有关 RHOSP 中可用磁盘格式的更多信息,请参阅 镜像服务。
1.2.10. 以 RAW 格式存储镜像
启用 GlanceImageImportPlugins
参数后,运行以下命令以 RAW 格式存储之前创建的镜像:
glance image-create-via-import \ --disk-format qcow2 \ --container-format bare \ --name NAME \ --visibility public \ --import-method web-download \ --uri http://server/image.qcow2
$ glance image-create-via-import \
--disk-format qcow2 \
--container-format bare \
--name NAME \
--visibility public \
--import-method web-download \
--uri http://server/image.qcow2
-
对于
--name
,将NAME
替换为映像的名称;这是 Glanceimage-list 中将显示的名称
。 -
对于
--uri
,将http://server/image.qcow2
替换为 QCOW2 镜像的位置和文件名。
此命令示例创建镜像记录并使用 web-download
方法导入它。glance-api 在导入过程中从 --uri
位置下载镜像。如果 web-download
不可用,glanceclient
无法自动下载镜像数据。运行 glance import-info
命令来列出可用的镜像导入方法。