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