附录 A. 部署迁移选项
本节包括 DCN 存储的相关主题验证,以及迁移或更改架构。
A.1. 验证边缘存储 复制链接链接已复制到粘贴板!
通过测试 glance 多存储和实例创建,确保中央站点和边缘站点的部署正常工作。
您可以将镜像导入到 Glance 中,在本地文件系统上可用或 web 服务器上可用。
始终在中央站点中保存镜像副本,即使中央位置上没有使用该镜像的实例。
使用 glance store-info 命令检查通过镜像服务提供的存储。在以下示例中,提供三个存储: central、dcn1 和 dcn2。它们分别对应于中央位置和边缘站点的 glance 存储:
$ glance stores-info
+----------+----------------------------------------------------------------------------------+
| Property | Value |
+----------+----------------------------------------------------------------------------------+
| stores | [{"default": "true", "id": "central", "description": "central rbd glance |
| | store"}, {"id": "dcn0", "description": "dcn0 rbd glance store"}, |
| | {"id": "dcn1", "description": "dcn1 rbd glance store"}] |
+----------+----------------------------------------------------------------------------------+
A.1.1. 从本地文件导入 复制链接链接已复制到粘贴板!
您必须首先将镜像上传到中央位置的存储中,然后将镜像复制到远程站点。
确保您的镜像文件采用 RAW 格式。如果镜像不是原始格式,则必须在将其导入到镜像服务前转换镜像:
file cirros-0.5.1-x86_64-disk.img cirros-0.5.1-x86_64-disk.img: QEMU QCOW2 Image (v3), 117440512 bytes qemu-img convert -f qcow2 -O raw cirros-0.5.1-x86_64-disk.img cirros-0.5.1-x86_64-disk.rawImport the image into the default back end at the central site:glance image-create \ --disk-format raw --container-format bare \ --name cirros --file cirros-0.5.1-x86_64-disk.raw \ --store central
A.1.2. 从 Web 服务器导入镜像 复制链接链接已复制到粘贴板!
如果镜像托管在 web 服务器上,您可以使用 GlanceImageImportPlugins 参数将镜像上传到多个存储。
此流程假设默认镜像转换插件在 glance 中已启用。此功能自动将 QCOW2 文件格式转换为 RAW 镜像,这是 Ceph RBD 的最佳选择。您可以通过运行 glance image-show ID | grep disk_format 来确认 glance 镜像采用 RAW 格式。
流程
使用
glance命令的image-create-via-import参数从 web 服务器导入镜像。使用--stores参数。或者,您可以将---,将镜像上传到所有存储。stores替换为--all-stores True# glance image-create-via-import \ --disk-format qcow2 \ --container-format bare \ --name cirros \ --uri http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img \ --import-method web-download \ --stores central,dcn1在本例中,qcow2 cirros 镜像从官方 Cirros 站点下载,由 glance 转换为 RAW,并导入到由
--stores参数指定的中央站点和边缘站点 1 中。
A.1.3. 将镜像复制到新站点 复制链接链接已复制到粘贴板!
您可以将现有镜像从中央位置复制到边缘站点,这可让您在新创建的位置访问之前创建的镜像。
将 glance 镜像的 UUID 用于复制操作:
ID=$(openstack image show cirros -c id -f value) glance image-import $ID --stores dcn0,dcn1 --import-method copy-image注意在本例中,--
stores选项指定cirros镜像将从中央站点复制到边缘站点 dcn1 和 dcn2。或者,您可以使用--all-stores True选项,它将镜像上传到当前没有镜像的所有存储中。确认镜像的副本位于每个存储中。请注意,
storage键(即属性映射中的最后一个项目)被设置为central,dcn0,dcn1。$ openstack image show $ID | grep properties | properties | direct_url=rbd://d25504ce-459f-432d-b6fa-79854d786f2b/images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076/snap, locations=[{u'url: u'rbd://d25504ce-459f-432d-b6fa-79854d786f2b/images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076/snap', u'metadata': {u'store': u'central'}}, {u'url': u'rbd://0c10d6b5-a455-4c4d-bd53-8f2b9357c3c7/images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076/snap', u'metadata': {u'store': u'dcn0'}}, {u'url': u'rbd://8649d6c3-dcb3-4aae-8c19-8c2fe5a853ac/images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076/snap', u'metadata': {u'store': u'dcn1'}}], os_glance_failed_import=', os_glance_importing_to_stores=', os_hash_algo='sha512, os_hash_value=b795f047a1b10ba0b7c95b43b2a481a59289dc4cf2e49845e60b194a911819d3ada03767bbba4143b44c93fd7f66c96c5a621e28dff51d1196dae64974ce240e, os_hidden=False, stores=central,dcn0,dcn1 |
始终将镜像副本存储在中央站点中,即使该站点上没有虚拟机使用它。
A.1.4. 确认边缘站点中的实例可以使用基于镜像的卷引导 复制链接链接已复制到粘贴板!
您可以使用边缘站点中的镜像来创建持久根卷。
流程
识别要作为卷创建的镜像的 ID,并将该 ID 传递给
openstack volume create命令:IMG_ID=$(openstack image show cirros -c id -f value) openstack volume create --size 8 --availability-zone dcn0 pet-volume-dcn0 --image $IMG_ID识别新创建的卷的卷 ID,并将其传递给
openstack server create命令:VOL_ID=$(openstack volume show -f value -c id pet-volume-dcn0) openstack server create --flavor tiny --key-name dcn0-key --network dcn0-network --security-group basic --availability-zone dcn0 --volume $VOL_ID pet-server-dcn0您可以通过在 dcn0 边缘站点的 ceph-mon 容器中运行 rbd 命令来列出卷池,来验证卷是否基于镜像。
$ sudo podman exec ceph-mon-$HOSTNAME rbd --cluster dcn0 -p volumes ls -l NAME SIZE PARENT FMT PROT LOCK volume-28c6fc32-047b-4306-ad2d-de2be02716b7 8 GiB images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076@snap 2 excl $确认您可以为实例的 root 卷创建 cinder 快照。确保服务器已停止静止数据,以创建干净的快照。使用 --force 选项,因为当实例关闭时,卷状态会一直
处于使用状态。openstack server stop pet-server-dcn0 openstack volume snapshot create pet-volume-dcn0-snap --volume $VOL_ID --force openstack server start pet-server-dcn0列出 dcn0 Ceph 集群上 volumes 池的内容,以显示新创建的快照。
$ sudo podman exec ceph-mon-$HOSTNAME rbd --cluster dcn0 -p volumes ls -l NAME SIZE PARENT FMT PROT LOCK volume-28c6fc32-047b-4306-ad2d-de2be02716b7 8 GiB images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076@snap 2 excl volume-28c6fc32-047b-4306-ad2d-de2be02716b7@snapshot-a1ca8602-6819-45b4-a228-b4cd3e5adf60 8 GiB images/8083c7e7-32d8-4f7a-b1da-0ed7884f1076@snap 2 yes
A.1.5. 确认可以在站点间创建并复制镜像快照 复制链接链接已复制到粘贴板!
重新快照,并确认您可以使用 glance image-import 将其复制到中央位置。
流程
验证您可以在 dcn0 站点创建一个新镜像。确保服务器停止静默数据以创建干净的快照:
NOVA_ID=$(openstack server show pet-server-dcn0 -f value -c id) openstack server stop $NOVA_ID openstack server image create --name cirros-snapshot $NOVA_ID openstack server start $NOVA_ID将镜像从
dcn0边缘站点复制回 hub 位置,这是 glance 的默认后端:IMAGE_ID=$(openstack image show cirros-snapshot -f value -c id) glance image-import $IMAGE_ID --stores central --import-method copy-image
有关 glance 多存储操作的更多信息,请参阅 具有多个存储的镜像服务。