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官方說明。