Alibaba Cloud Linux提供了VHD和QCOW2格式的本地镜像,并已内置cloud-init供您在本地虚拟机(目前仅支持KVM虚拟机)上使用。本文介绍如何在本地虚拟机上使用Alibaba Cloud Linux 3和Alibaba Cloud Linux 2镜像。
背景信息
本文示例中,本地环境为龙蜥操作系统(下载地址为龙蜥操作系统),使用Alibaba Cloud Linux镜像创建了KVM虚拟机,使用cloud-init初始化虚拟机系统设置,然后使用NoCloud数据源在本地建立相关配置文件,以虚拟磁盘的形式挂载到KVM虚拟机中进行设置,并启动虚拟机。本文适用于对KVM虚拟机有一定了解的用户。
步骤一:本地下载Alibaba Cloud Linux镜像
您可以在本地虚拟机中,通过以下地址下载VHD或者QCOW2格式的Alibaba Cloud Linux镜像。
Alibaba Cloud Linux 3:Alibaba Cloud Linux 3 On-premise Image
Alibaba Cloud Linux 2:Alibaba Cloud Linux 2 On-premise Image
步骤二:本地生成seed.img引导镜像
Alibaba Cloud Linux镜像本身不能直接启动虚拟机,需要配置引导镜像seed.img,并配置网络、账号、YUM源等信息。
通常情况下该镜像的名称设置为seed.img,您可以使用其他名称,但不建议您这样做。
seed.img镜像只包含cloud-init启动所需的配置文件,不包含Alibaba Cloud Linux系统文件。
您可以通过以下两种方式生成seed.img镜像。
方式一:直接下载seed.img镜像
Alibaba Cloud Linux 3和Alibaba Cloud Linux 2预先提供了seed.img镜像文件,您可以通过以下地址在页面列表选择seed.img进行下载。
Alibaba Cloud Linux 3:Alibaba Cloud Linux 3 On-premise Image
Alibaba Cloud Linux 2:Alibaba Cloud Linux 2 On-premise Image
说明该引导镜像中的配置信息是不可修改的,因此不适用于所有场景。在使用之前请确保您已了解镜像文件的内容。
方式二:使用NoCloud数据源手动生成seed.img镜像
说明NoCloud数据源是一种cloud-init数据源,可以在本地环境中提供配置文件,以供虚拟机读取和应用。
在本地同一级目录下,创建
meta-data
和user-data
两个配置文件。将这两个配置文件作为
seed.img
镜像的一部分。当虚拟机启动时,cloud-init将读取该配置文件,并根据配置内容对虚拟机进行初始化。新建名为
seed
的目录,并进入该目录。sudo mkdir seed sudo cd seed/
创建
meta-data
配置文件。文件内容示例如下,表示设置虚拟机的名称为
alinux-host
,您可以根据需要修改。#cloud-config #vim:syntax=yaml local-hostname: alinux-host
创建
user-data
配置文件。文件内容示例如下,您可以根据需要修改相关配置信息。
Alibaba Cloud Linux 3
#cloud-config #vim:syntax=yaml # 添加一个名为alinux的账号,并且可以执行sudo命令。 users: - default - name: alinux sudo: ['ALL=(ALL) ALL'] plain_text_passwd: aliyun lock_passwd: false # 添加Alibaba Cloud Linux 3的YUM源。 yum_repos: alinux3-module: name: alinux3-module baseurl: https://mirrors.aliyun.com/alinux/$releasever/module/$basearch/ enabled: 1 gpgcheck: 1 gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3 alinux3-updates: name: alinux3-updates baseurl: https://mirrors.aliyun.com/alinux/$releasever/updates/$basearch/ enabled: 1 gpgcheck: 1 gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3 alinux3-plus: name: alinux3-plus baseurl: https://mirrors.aliyun.com/alinux/$releasever/plus/$basearch/ enabled: 1 gpgcheck: 1 gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3 alinux3-powertools: name: alinux3-powertools baseurl: https://mirrors.aliyun.com/alinux/$releasever/powertools/$basearch/ gpgcheck: 1 enabled: 1 gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3 alinux3-os: name: alinux3-os baseurl: https://mirrors.aliyun.com/alinux/$releasever/os/$basearch/ gpgcheck: 1 enabled: 1 gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3
Alibaba Cloud Linux 2
#cloud-config #vim:syntax=yaml # 添加一个名为alinux的账号,并且可以执行sudo命令。 users: - default - name: alinux sudo: ['ALL=(ALL) ALL'] plain_text_passwd: aliyun lock_passwd: false # 添加Alibaba Cloud Linux 2的YUM源。 yum_repos: base: baseurl: https://mirrors.aliyun.com/alinux/$releasever/os/$basearch/ enabled: true gpgcheck: true gpgkey: https://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALIYUN name: Aliyun Linux - $releasever - Base - mirrors.aliyun.com updates: baseurl: https://mirrors.aliyun.com/alinux/$releasever/updates/$basearch/ enabled: true gpgcheck: true gpgkey: https://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALIYUN name: Aliyun Linux - $releasever - Updates - mirrors.aliyun.com extras: baseurl: https://mirrors.aliyun.com/alinux/$releasever/extras/$basearch/ enabled: true gpgcheck: true gpgkey: https://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALIYUN name: Aliyun Linux - $releasever - Extras - mirrors.aliyun.com plus: baseurl: https://mirrors.aliyun.com/alinux/$releasever/plus/$basearch/ enabled: true gpgcheck: true gpgkey: https://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALIYUN name: Aliyun Linux - $releasever - Plus - mirrors.aliyun.com
(条件必选)如果您是Alibaba Cloud Linux 3系统,需要启用epel-testing仓库。
打开文件epel-testing.repo文件。
sudo vim /etc/yum.repos.d/epel-testing.repo
按i键进入编辑模式,并将
enabled=0
修改为enabled=1
。[epel-testing] name=Extra Packages for Enterprise Linux 8 - Testing - $basearch baseurl=http://mirrors.cloud.aliyuncs.com/epel/testing/8/Everything/$basearch enabled=0 gpgcheck=1 countme=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
按
Esc
键,输入:wq保存修改。
运行以下命令,安装
cloud-utils
软件包。sudo yum install -y cloud-utils
运行以下命令,生成
seed.img
镜像。sudo cloud-localds seed.img user-data meta-data
步骤三:启动虚拟机
您可以使用以下任一方式启动KVM虚拟机。
使用libvirt工具启动
在本地创建一个xml配置文件。
示例文件的名称为
alinux3.xml
、alinux2.xml
,内容如下,您可以根据需求修改xml配置文件内容。Alibaba Cloud Linux 3
<domain type='kvm'> <name>alinux3</name> <memory>1048576</memory><!-- 1 GB内存。 --> <vcpu>1</vcpu> <cpu mode='host-passthrough'><!-- 需要在对应架构的服务器上启动实例。 --> </cpu> <os> <type arch='x86_64'>hvm</type><!-- 如果是ARM64架构的服务器,则需设置为arch='aarch64'。 --> <boot dev='hd'/> </os> <clock sync="localtime"/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/qemu-kvm</emulator><!-- 请根据不同的操作系统设置对应的kvm路径。例如:Ubuntu对应的kvm路径是/usr/bin/kvm。 --> <disk type='file' device='disk'><!-- 请根据镜像格式设置下面的type参数:qcow2对应type='qcow2'、vhd对应type='vpc'。 --> <driver name='qemu' type='qcow2' cache='none' dataplane='on' io='native'/> <!-- 如果要创建qcow2快照,需要关闭dataplane。 --> <source file='path'/> <!-- 填写Alibaba Cloud Linux 3镜像的绝对路径。 --> <target dev='vda' bus='virtio'/> </disk> <!-- 加入seed.img的信息。 --> <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/path/to/your/seed.img'/> <!-- 填写seed镜像的绝对路径。 --> <target dev='vdb' bus='virtio'/> </disk> <interface type='network'> <source network='default'/> <model type='virtio'/> </interface> <console type='pty'> <target type='virtio' port='0'/> </console> <video> <model type='cirrus' vram='9216' heads='1'/> <alias name='video0'/> </video> <input type='tablet' bus='usb'/> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes'/> </devices> </domain>
Alibaba Cloud Linux 2
<domain type='kvm'> <name>alinux2</name> <memory>1048576</memory> <!-- 1 GB内存。 --> <vcpu>1</vcpu> <os> <type arch='x86_64'>hvm</type> <boot dev='hd'/> </os> <clock sync="localtime"/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/qemu-kvm</emulator><!-- 请根据不同的操作系统设置对应的kvm路径。例如:Ubuntu对应的kvm路径是/usr/bin/kvm --> <disk type='file' device='disk'><!-- 请根据镜像格式设置下面的type参数:qcow2对应type='qcow2'、vhd对应type='vpc'。 --> <driver name='qemu' type='qcow2' cache='none' dataplane='on' io='native'/> <!-- 如果要创建qcow2快照,需要关闭dataplane。 --> <source file='path'/> <!-- 填写Alibaba Cloud Linux 2镜像的绝对路径。 --> <target dev='vda' bus='virtio'/> </disk> <!-- 加入seed.img的信息。 --> <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/path/to/your/seed.img'/> <!-- 填写seed镜像的绝对路径。 --> <target dev='vdb' bus='virtio'/> </disk> <interface type='network'> <source network='default'/> <model type='virtio'/> </interface> <console type='pty'> <target type='virtio' port='0'/> </console> <video> <model type='cirrus' vram='9216' heads='1'/> <alias name='video0'/> </video> <input type='tablet' bus='usb'/> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes'/> </devices> </domain>
使用
virsh
命令启动虚拟机,命令示例如下。说明libvirt工具默认使用普通用户启动,请确认镜像文件及所在路径对普通用户是否具有相应的操作权限。
Alibaba Cloud Linux 3
sudo virsh define alinux3.xml virsh start <KVMName> # 请修改为KVM虚拟机的名称,可以通过sudo virsh list --name命令查询。
Alibaba Cloud Linux 2
sudo virsh define alinux2.xml sudo virsh start <KVMName> # 请修改为KVM虚拟机的名称,可以通过sudo virsh list --name命令查询。
使用qemu-kvm
命令行启动
您需要在qemu-kvm命令行中追加如下参数信息:
-drive file=/path/to/your/seed.img,if=virtio,format=raw
/path/to/your/seed.img
:需要替换为seed.img镜像文件的路径。if=virtio
:表示使用virtio接口连接虚拟磁盘。format=raw
:表示磁盘镜像文件的格式为RAW。
示例命令:
sudo /usr/libexec/qemu-kvm -drive file=/home/ecs-user/seed/seed.img,if=virtio,format=raw
使用图形界面(virt-manager)启动
在启动虚拟机之前,您需要在本地找到KVM虚拟机的配置文件,在文件内添加seed.img镜像文件的绝对路径。
后续步骤
虚拟机启动成功后,使用user-data
配置文件中的用户名和密码登录虚拟机。
如果您需要使用SSH密钥登录,请确保将公钥内容添加到cloud-init配置文件中。
相关文档
cloud-init是一个用于自动初始化Linux虚拟机实例的工具。它可以在虚拟机启动时执行一系列任务,包括设置主机名、配置网络、安装软件包等。更多信息,请参见cloud-init官方文档。
libvirt、qemu-kvm、virt-manager常用于管理和运行KVM虚拟机。更多信息,请参见Red Hat官方说明。