每当我设置 devstack 或 OpenStack 部署时,我都想添加最新的 LTS Ubuntu 服务器映像。我过去成功过几次,我相信可以通过以下方式实现:
wget http://uec-images.ubuntu.com/releases/12.04.2/release/ubuntu-12.04.2-server-cloudimg-amd64-disk1.img
glance image-create --is-public true --disk-format qcow2 --container-format bare --name "precise" < ubuntu-12.04.2-server-cloudimg-amd64-disk1.img
不过,我想知道在哪里可以找到有关如何执行此操作的官方支持文档?我如何做出贡献?我有时会遇到问题,如果没有官方说明,我永远不确定是上述命令还是我的部署。我曾两次尝试将这些说明添加到 OpenStack 官方文档和/或随附的 Disqus 评论中,但这些说明会被删除,而且我找不到一致的、受支持的手册来执行此操作,我希望这是一个非常基本的程序。
另外,客户镜像中难以捉摸的 cloud-init 选项怎么样?我在哪里可以找到如何使用这些选项的说明?从终端还是从 Web UI?我曾经不得不在源代码中寻找这些信息。
到目前为止我发现列出可用图像的网站,但没有说明图片的格式是什么- 我总是需要通过谷歌搜索这些信息。UEC 维基百科列出了许多关于如何创建自己的镜像的秘诀,但没有介绍如何使用现有镜像(或预制的 ubuntu 云镜像)。然后是最容易找到的ubuntu.com 上的“云”类别该链接仅指向一些宣传手册和不具信息量的云图像列表。
我知道这是一个半错误报告(我希望看到它被修复或者帮助修复:)),但我也想知道我提出的问题的答案。
答案1
我遇到了同样的问题,所以我最终下载了所有带有“trusty-server-cloudimg-amd64”前缀的图像。有一个 tar,解压后包含一个 README.files,其中提供了一些信息:
此压缩的 tar 存档包含与此机器映像相关的文件。每个文件名都以表示版本和架构信息的常量字符串作为前缀。例如,前缀可能是“maverick-server-cloudimg-amd64”,在这种情况下,文件将命名为 maverick-server-cloudimg-amd64.img maverick-server-cloudimg-amd64-vmlinuz-virtual
档案中可能存在以下全部或部分文件:
.img 此文件是分区映像。它可以作为 Amazon 机器映像 (ami/emi) 捆绑、上传和注册到 EC2、Eucalyptus 或 OpenStack。
-disk1.img 这是一个 qcow2 压缩磁盘映像。它可以上传到 OpenStack 或直接通过 kvm 启动。在非测试环境中使用之前,您可能应该先解压缩该映像(qemu-img convert)。
-uefi1.img 这是一个 qcow2 压缩磁盘映像,具有 GPT 分区和 UEFI 引导加载程序。它可通过 UEFI、BIOS/GPT 和 PVGRUB 引导(支持 GPT 分区表)。它可在 OpenStack 中引导或直接通过 kvm 引导。在非测试环境中使用映像之前,您可能应该先解压缩映像(qemu-img convert)。
-root.tar.gz 这是一个压缩的 tar 文件,包含根文件系统的内容。本质上是“tar cpzf - /”。
-vmlinuz-virtual 这是一个 Linux 内核。它可以捆绑、上传和注册 UEC 作为 Amazon 内核映像 (aki/eki)。'-virtual' 字符串表示此内核来自的 Ubuntu Linux 包。它可能是 '-server' 或其他字符串。
-initrd-virtual 这是一个 Linux initrd。它可以捆绑、上传和注册 UEC 作为 Amazon Ramdisk 映像 (ari/eri)。并非所有映像都需要 initrd,因此此文件可能不存在。如果不存在,则应在没有 ramdisk 的情况下注册映像。
-loader 此文件是兼容多重引导的映像,能够加载客户机映像。在主机操作系统为 10.10 或更高版本 (LP: #611144) 的 UEC 安装中,此文件可以注册为内核 (eki)。它提供的功能类似于 Amazon 发布的“启用用户提供的内核”功能。当使用加载程序引导实例时,在实例内部执行的内核升级将在后续引导中生效。
-floppy 此文件是软盘映像。它对于在 EC2 或 UEC 内部运行没有用处或相关性。此文件的目的是允许在云之外启动 .img。要在云环境之外启动(其中不存在元数据服务),可以使用以下 kvm 命令行:kvm -boot a -fda -floppy -drive file=.img,if=virtio 如果 -disk1.img 可用,则这不是必需的,并且通常已过时。
答案2
您可以使用以下方法查找图像的格式:
# qemu-img info image_filename
。
这将告诉您它是原始的还是 qcow2 以及它的大小。
答案3
如果你来这里是为了寻找如何使用 virsh 命令使云映像在 virt-manager 或 KVM 中运行的线索,请参阅我关于现代文件格式的回答:Ubuntu 云镜像有哪些不同版本可用?