在 KVM 中使用云镜像 Cloud Images

我们想向您展示将 Cloud Images 与 KVM 结合使用的优势。使用 OpenStack 的优势之一是能够使用云镜像。这些云映像可以从 Distribution 网站下载,并且是其操作系统的预构建版本。无需安装。缺点是您通常需要注入 SSH 密钥才能登录。使用 OpenStack,这很容易,Horizo​​n 界面允许您选择要添加的密钥。如果您不想完全使用 OpenStack,但希望通过 QEMU 和 KVM 最有效地使用这些映像,那么您可以这样做,而且这并不困难。在本模块中,我们将学习如何下载云映像并创建一个 cloud-init 磁盘以在首次启动时自定义映像。您将看到如何在不需要 OpenStack 的情况下使用 KVM 中的云映像快速创建虚拟机。 

下载云镜像,第一步是定位您需要的云镜像。我建议使用您喜欢的搜索引擎并查找“<发行版> 云图像”:

下载后,我建议将图像保留在下载位置(例如主目录)上保持不变。稍后可以将其复制到正确的图像目录。复制文件而不是移动,因为它会给您留下一个未受影响的主图像,您可以在以后再次需要它时再次复制它。

下载最新的 Ubuntu 18.04 服务器镜像:

$ wget https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img

要下载最近的 CentOS 7 映像:

$ wget https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1809.qcow2

Ubuntu 上的默认用户帐户是“ ubuntu ”,CentOS 上是“ centos ”。

调整虚拟磁盘大小

虚拟磁盘大小可能非常小。在将其用于任何虚拟系统之前,我们可能会选择增加大小。我们可以查询当前的大小:

$ qemu-img info bionic-server-cloudimg-amd64.img 
image: bionic-server-cloudimg-amd64.img
file format: qcow2
virtual size: 2.2G (2361393152 bytes)
disk size: 324M
cluster_size: 65536
Format specific information:
    compat: 0.10
    refcount bits: 16

我们可以看到默认大小是 2.2 GB。我们可以将大小增加一定数量 (+5G) 或增加到目标大小 (10G)。我们将使用目标大小并制作一个 10GB 的虚拟磁盘。如果有以下情况,实际使用的大小不应有太大变化:

$ qemu-img resize bionic-server-cloudimg-amd64.img 10G
Image resized.

再次检查信息时,我们可以看到调整大小有效:

$ qemu-img info bionic-server-cloudimg-amd64.img 
image: bionic-server-cloudimg-amd64.img
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 324M
cluster_size: 65536
Format specific information:
    compat: 0.10
    refcount bits: 16

复制主盘

我们现在可以将磁盘文件复制到/var/lib/libvirt/images/ 以供虚拟机使用。我们也可以使用qemu-img命令来运行副本。

$ sudo qemu-img convert -f qcow2 bionic-server-cloudimg-amd64.img /var/lib/libvirt/images/proxy1.img

即使我们下载的图像是正确的 qcow2 格式,我们仍然可以使用此命令作为有效副本,并确保目标文件是 qcow2,与下载的格式无关。

创建云配置文件

我们需要在第一次启动时自定义映像。我们之前提到过,云系统通常仅限于通过 SSH 进行基于密钥的身份验证。这意味着我们不能使用用户名和密码。我们需要注入 SSH 密钥或为默认用户设置密码。我们还将借此机会设置主机名。我们将创建一个文本文件,该文件必须以#cloud-config开头

#cloud-config
password: Password1
chpasswd: { expire: False }
ssh_pwauth: True
hostname: proxy1

对于我的测试系统,我通常使用相同的密码,但您当然可以选择适合您的安全要求的密码。该文件是不言自明的,但我们需要将其复制到 ISO 文件上,以便在系统启动时使用。为此,我们将使用命令 cloud-localds。如果没有安装这个包,你可以添加它:

$ sudo apt install cloud-init-tools

安装后,我们可以从文本文件 cloud.txt 在图像目录中创建 ISO 文件 proxy1.iso:

$ sudo cloud-localds /var/lib/libvirt/images/proxy1.iso cloud.txt

我们现在有两个磁盘用于我们将要创建的虚拟机,proxy1.img 和 proxy1.iso。我们现在准备将这些磁盘导入 QEMU/KVM 虚拟机。我们可以使用 virt-install 或 virt-manager 来做到这一点。为了便于说明,我们将使用命令行和virt-install命令。

创建虚拟机

正如我们之前提到的,这些云镜像的一大特点是能够非常快速地运行虚拟机,无需安装。我们只需要导入磁盘映像并结合云配置 ISO 文件,即可自定义映像以允许密码验证。我们将使用 CLI 中的 virt-install 来执行此操作。如果需要,您可以使用以下命令安装软件包:

$ sudo apt install virtinstall

安装后,我们可以创建脚本来导入磁盘或直接从命令行运行。这是使用我之前创建的磁盘的示例:

sudo virt-install \
            --name proxy1\
            --memory 1024 \
            --disk /var/lib/libvirt/images/proxy1.img,device=disk,bus=virtio \
            --disk /var/lib/libvirt/images/proxy1.iso,device=cdrom \
            --os-type linux \
            --os-variant ubuntu16.04 \
            --virt-type kvm \
            --graphics none \
            --network network=default \
            --import

运行该命令时,将创建虚拟机元数据并启动映像。我们将连接到系统的控制台。我们可以使用提供给 cloud-config 的密码以 Ubuntu 用户身份登录。

如果您还记得,我们还增加了虚拟磁盘的大小,我们可以使用命令lsblk来查看结果

$ lsblk /dev/vda
NAME    MAJ:MINRM  SIZE RO TYPE MOUNTPOINT
vda     252:0    0  10G  0 disk 
├─vda1  252:1    0 9.9G  0 part /
├─vda14 252:14  0    4M  0 part 
└─vda15 252:15  0  106M  0 part /boot/efi
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值