注意:
- 本教學課程包含在 Oracle 提供的免費實驗室環境中。
- 它會使用 Oracle Cloud Infrastructure 證明資料、租用戶以及區間的範例值。完成實驗室之後,請將這些值取代為您雲端環境特有的值。
使用 Oracle Linux 上的 KVM 建立 VM
簡介
核心虛擬機器 (KVM) 是開放原始碼的 type-1 (裸機) 虛擬機器管理程式。此功能允許主機系統 (例如 Oracle Linux 8) 在支援硬體上執行時,代管多個虛擬機器 (VM) 或來賓。
本教學課程將會部署 Oracle Linux Kernel Virtualization Manager (KVM),以建立虛擬機器。
目標
- 部署 KVM
- 部署虛擬機器的 Cockpit
- 使用 ISO 建立虛擬機器
- 使用 Oracle Cloud 映像檔建立虛擬機器
必要條件
具備下列配置的任何 Oracle Linux 8 或更新版本系統:
- 具有 sudo 權限的非 root 使用者
驗證環境支援虛擬化
注意:使用免費實驗室環境時,請參閱 Oracle Linux Lab Basics,瞭解連線和其他使用指示。
-
如果尚未連線,請開啟終端機並透過 ssh 連線至您的執行處理。
ssh oracle@<ip_address_of_instance>
-
執行下列命令以判斷您的 CPU 類型。
grep -e 'vendor_id' /proc/cpuinfo
範例輸出:
[oracle@ol-node01 ~]$ grep -e 'vendor_id' /proc/cpuinfo vendor_id : GenuineIntel vendor_id : GenuineIntel vendor_id : GenuineIntel vendor_id : GenuineIntel vendor_id : GenuineIntel vendor_id : GenuineIntel
此系統是以 Intel 為基礎,由 GenuineIntel 的輸出顯示。
-
若為 Intel 系統,請鍵入以下指令。
grep -e 'vmx' /proc/cpuinfo
命令輸出中的 vmx 旗標存在,表示此系統支援虛擬化。
-
檢查載入的 KVM 模組。
lsmod | grep kvm
範例輸出:
[oracle@ol-node01 ~]$ lsmod |grep kvm kvm_intel 262144 0 kvm 696320 1 kvm_intel irqbypass 16384 1 kvm
輸出會根據此系統的硬體,顯示 KVM 核心模組和 kvm_intel 處理器模組。這些模組應預設載入現代化 Linux 系統。
安裝並啟動 KVM
-
安裝與 Oracle Linux 虛擬化模組相關的軟體套裝程式。
sudo dnf module install virt -y
此命令會安裝虛擬化套裝程式的集合,包括 libvirt、qemu-kvm 以及其他相依性。
-
安裝
virt-install
和virt-viewer
。sudo dnf install virt-install virt-viewer -y
如此即可完成安裝必要的一組套裝軟體。
-
驗證主機機器已就緒,並設定為執行 libvirt VM。
virt-host-validate
範例輸出:
[oracle@ol-node01 ~]$ virt-host-validate QEMU: Checking for hardware virtualization : PASS QEMU: Checking if device /dev/kvm exists : PASS QEMU: Checking if device /dev/kvm is accessible : PASS QEMU: Checking if device /dev/vhost-net exists : PASS QEMU: Checking if device /dev/net/tun exists : PASS QEMU: Checking for cgroup 'cpu' controller support : PASS QEMU: Checking for cgroup 'cpuacct' controller support : PASS QEMU: Checking for cgroup 'cpuset' controller support : PASS QEMU: Checking for cgroup 'memory' controller support : PASS QEMU: Checking for cgroup 'devices' controller support : PASS QEMU: Checking for cgroup 'blkio' controller support : PASS QEMU: Checking for device assignment IOMMU support : WARN (No ACPI DMAR table found, IOMMU either disabled in BIOS or not supported by this hardware platform) QEMU: Checking for secure guest support : WARN (Unknown if this platform has Secure Guest support)
如果所有檢查 PASS,則系統會準備用於建立的 VM。如果有任何檢查失敗,請依照指示更正問題。如果有任何檢查傳回 WARN 值,請考量下列指示以改善虛擬化功能。
-
啟動
libvirtd
常駐程式,並啟用該常駐程式在每次啟動時自動啟動。然後檢查其狀態以確認其已啟動並在執行中。sudo systemctl enable --now libvirtd.service sudo systemctl status libvirtd.service
範例輸出:
[oracle@ol-node01 ~]$ sudo systemctl enable --now libvirtd.service [oracle@ol-node01 ~]$ sudo systemctl status libvirtd.service * libvirtd.service - Virtualization daemon Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor pr> Active: active (running) since Mon 2022-06-13 21:28:19 GMT; 8s ago Docs: man:libvirtd(8) https://libvirt.org ...
輸出表示服務已啟用且正在執行中。
設定 Cockpit Web 主控台來管理 Oracle Linux 上的 KVM
-
安裝可根據 Libvirt 管理 VM 的 cockpit-machines 擴充功能。
sudo dnf install cockpit cockpit-machines –y
-
啟動 cockpit socket,並在系統啟動時自動啟動。
sudo systemctl enable --now cockpit.socket sudo systemctl status cockpit.socket
範例輸出:
[oracle@ol-node01 ~]$ sudo systemctl enable --now cockpit.socket Created symlink /etc/systemd/system/sockets.target.wants/cockpit.socket -> /usr/lib/systemd/system/cockpit.socket. [oracle@ol-node01 ~]$ sudo systemctl status cockpit.socket * cockpit.socket - Cockpit Web Service Socket Loaded: loaded (/usr/lib/systemd/system/cockpit.socket; enabled; vendor pres> Active: active (listening) since Mon 2022-06-13 21:39:24 GMT; 10s ago Docs: man:cockpit-ws(8) Listen: [::]:9090 (Stream) ...
輸出表示服務已啟用且監聽。
-
若要從遠端存取此網站,請啟用 cockpit 服務的防火牆連接埠,然後重新載入防火牆組態以套用新變更。
sudo firewall-cmd --add-service=cockpit --permanent sudo firewall-cmd --reload
注意:從 lunabox Desktop 上的第二個終端機執行此下一個命令。
-
開啟 lunabox Desktop 上的第二個終端機,然後輸入下列指令以使用 ssh 建立 Cockpit 的本機連接埠轉送。
ssh -L 9090:localhost:9090 oracle@<instance_ip_address>
-
開啟桌面上的 Web 瀏覽器,瀏覽 https://localhost:9090。
Cockpit Web 主控台使用自行簽署的憑證來啟用 HTTPS。
按一下「進階」,然後在從瀏覽器收到警告時接受連線。
-
以
oracle
使用者身分登入,密碼為oracle
。此時會顯示 Cockpit 儀表板。
-
按一下「限制存取權」按鈕即可取得「管理」權限。
-
關閉「管理」存取視窗。
使用 ISO 建立虛擬機器
-
按一下左邊導覽面板中的「虛擬機器」選項。
-
按一下「建立 VM」按鈕。
-
請輸入下列資訊:
Name: OL-demo Connection: System Installation type: URL (ISO image or distro install tree) Installation source: https://yum.oracle.com/ISOS/OracleLinux/OL8/u6/x86_64/OracleLinux-R8-U6-x86_64-dvd.iso Operating system: Oracle Linux 8.6 Storage: Create new volume Size: 20 GiB Memory: 16 GiB Immediately start VM: check
-
按一下「建立」以開始。
-
從虛擬機器清單中,按一下 OL-demo 連結。
-
向下捲動以檢視「VNC 主控台」。
如果您快速足夠,將會看到含有「安裝 Oracle Linux」或「測試此媒體並安裝」選項功能表。在幾秒後預設會選取「測試」選項。安裝程式會驗證媒體上的內容是否良好,然後啟動安裝程式。
-
安裝程式啟動之後,會顯示 [ 歡迎使用 Oracle Linux] 畫面。若要開始安裝,請選取安裝程序的語言。
此實驗室不會繼續進行安裝程序。
注意:您可以在本影片連結中觀看示範 Oracle Linux 安裝程序的免費視訊:安裝 Oracle Linux 8
-
按一下視窗右上角的 'X' 以關閉 Web 瀏覽器。
使用 Oracle Cloud 映像檔建立虛擬機器
注意:請確定從雲端執行處理 (ol-node01) 終端機視窗輸入下列命令。
-
變更至 KVM 映像檔儲存位置。
cd /var/lib/libvirt/images
-
下載 Oracle Linux VM 樣板。
sudo curl -O https://yum.oracle.com/templates/OracleLinux/OL8/u6/x86_64/OL8U6_x86_64-kvm-b126.qcow
-
建立描述資料檔案。
cat << 'EOF' | sudo tee ~/meta-data > /dev/null instance-id: iid-local01 local-hostname: vm-01 EOF
-
建立使用者資料檔。
cat << 'EOF' | sudo tee ~/user-data > /dev/null #cloud-config system_info: default_user: name: opc ssh_authorized_keys: - <paste_public_key_here> EOF
-
產生 SSH 金鑰組
ssh-keygen -t rsa -b 4096
按下
Enter
以接受每一個預設值。金鑰組會寫入使用者本位目錄中的.ssh
目錄。 -
將公開金鑰複製到使用者資料檔。
SSHKEY=$(cat ~/.ssh/id_rsa.pub) sed -i "s|<paste_public_key_here>|${SSHKEY}|g" ~/user-data
-
產生 ISO 影像 。
sudo genisoimage -output /var/lib/libvirt/images/vm-01.iso -volid cidata -joliet -rock ~/user-data ~/meta-data
-
建立執行處理。
sudo cp /var/lib/libvirt/images/OL8U6_x86_64-kvm-b126.qcow /var/lib/libvirt/images/vm-01.qcow sudo virt-install --name vm-01 \ --memory 2048 \ --vcpus 2 \ --disk /var/lib/libvirt/images/vm-01.qcow,device=disk,bus=virtio \ --disk /var/lib/libvirt/images/vm-01.iso,device=cdrom \ --os-type linux --os-variant ol8.6 \ --virt-type kvm --graphics none \ --network network=default,model=virtio \ --noautoconsole \ --import
-
列出 VM。
sudo virsh list
-
擷取
vm-01
虛擬機器的 IP 位址。sudo virsh net-dhcp-leases --network default
注意:視虛擬機器啟動的速度而定,您可能需要再次執行命令以顯示 IP 位址。
-
或者,您可以根據 MAC 位址進行篩選。
sudo virsh domiflist vm-01
-
從先前的輸出複製 MAC 位址,並在下列指令中提供。
sudo virsh net-dhcp-leases --network default --mac <MAC_address>
-
連線
ssh
以驗證虛擬機器是否可正常運作。ssh opc@<vm-01-ip_address>
範例輸出:
[oracle@ol-node01 images]$ ssh opc@192.168.122.46 The authenticity of host '192.168.122.46 (192.168.122.46)' can't be established. ECDSA key fingerprint is SHA256:xcuVfQdoFDCC72i7plD0OfqDTSBG6QWhOm5ti4HIKEs. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.122.46' (ECDSA) to the list of known hosts. [opc@vm-01 ~]$ uname -a Linux vm-01 5.4.17-2136.307.3.1.el8uek.x86_64 #2 SMP Mon May 9 17:29:47 PDT 2022 x86_64 x86_64 x86_64 GNU/Linux
[ 選擇性 ] 從 Cockpit 儀表板檢視 VM
注意:從 lunabox Desktop 上的終端機執行此下一個命令。
-
從您的 lunabox Desktop 終端機視窗輸入下列指令,以使用 ssh 建立 Cockpit 的本機連接埠轉送。
ssh -L 9090:localhost:9090 oracle@<instance_ip_address>
-
開啟桌面上的 Web 瀏覽器,瀏覽 https://localhost:9090。
-
以
oracle
使用者身分登入,密碼為oracle
。此時會顯示 Cockpit 儀表板。
-
如有需要,請按一下「有限存取權」按鈕來取得管理權限。
-
按一下左邊導覽面板中的「虛擬機器」選項。
-
從虛擬機器清單中,按一下 vm-01 連結。
-
依需要瀏覽「簡介」區段、「磁碟」區段、網路介面等項目。
注意:主控台在 Cockpit 中不是作用中狀態,因為
vm-01
虛擬機器是使用--graphical none
選項與virt-install
建立。
這包含此實驗室。
其他相關資訊:
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或前往 Oracle Learning YouTube 通道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請瀏覽 Oracle Help Center。
Create VMs with KVM on Oracle Linux
F58825-01
June 2022
Copyright © 2022, Oracle and/or its affiliates.