注意:

使用 Oracle Linux 上的 KVM 建立 VM

簡介

核心虛擬機器 (KVM) 是開放原始碼的 type-1 (裸機) 虛擬機器管理程式。此功能允許主機系統 (例如 Oracle Linux 8) 在支援硬體上執行時,代管多個虛擬機器 (VM) 或來賓。

本教學課程將會部署 Oracle Linux Kernel Virtualization Manager (KVM),以建立虛擬機器。

目標

必要條件

具備下列配置的任何 Oracle Linux 8 或更新版本系統:

驗證環境支援虛擬化

注意:使用免費實驗室環境時,請參閱 Oracle Linux Lab Basics,瞭解連線和其他使用指示。

  1. 如果尚未連線,請開啟終端機並透過 ssh 連線至您的執行處理。

    ssh oracle@<ip_address_of_instance>
    
  2. 執行下列命令以判斷您的 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 的輸出顯示。

  3. 若為 Intel 系統,請鍵入以下指令。

    grep -e 'vmx' /proc/cpuinfo
    

    命令輸出中的 vmx 旗標存在,表示此系統支援虛擬化。

  4. 檢查載入的 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

  1. 安裝與 Oracle Linux 虛擬化模組相關的軟體套裝程式。

    sudo dnf module install virt -y
    

    此命令會安裝虛擬化套裝程式的集合,包括 libvirt、qemu-kvm 以及其他相依性。

  2. 安裝 virt-installvirt-viewer

    sudo dnf install virt-install virt-viewer -y
    

    如此即可完成安裝必要的一組套裝軟體。

  3. 驗證主機機器已就緒,並設定為執行 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 值,請考量下列指示以改善虛擬化功能。

  4. 啟動 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

  1. 安裝可根據 Libvirt 管理 VM 的 cockpit-machines 擴充功能。

    sudo dnf install cockpit cockpit-machines –y
    
  2. 啟動 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)
    ...
    

    輸出表示服務已啟用且監聽。

  3. 若要從遠端存取此網站,請啟用 cockpit 服務的防火牆連接埠,然後重新載入防火牆組態以套用新變更。

    sudo firewall-cmd --add-service=cockpit --permanent
    sudo firewall-cmd --reload
    

    注意:從 lunabox Desktop 上的第二個終端機執行此下一個命令。

  4. 開啟 lunabox Desktop 上的第二個終端機,然後輸入下列指令以使用 ssh 建立 Cockpit 的本機連接埠轉送。

    ssh -L 9090:localhost:9090 oracle@<instance_ip_address>
    
  5. 開啟桌面上的 Web 瀏覽器,瀏覽 https://localhost:9090。

    Cockpit Web 主控台使用自行簽署的憑證來啟用 HTTPS。

    accept_cert

    按一下「進階」,然後在從瀏覽器收到警告時接受連線。

  6. oracle 使用者身分登入,密碼為 oracle

    登入

    此時會顯示 Cockpit 儀表板。

  7. 按一下「限制存取權」按鈕即可取得「管理」權限。

    l 存取

  8. 關閉「管理」存取視窗。

    複製存取

使用 ISO 建立虛擬機器

  1. 按一下左邊導覽面板中的「虛擬機器」選項。

  2. 按一下「建立 VM」按鈕。

    VM

  3. 請輸入下列資訊:

    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
    

    VM

  4. 按一下「建立」以開始。

  5. 從虛擬機器清單中,按一下 OL-demo 連結。

    vmlist

  6. 向下捲動以檢視「VNC 主控台」。

    如果您快速足夠,將會看到含有「安裝 Oracle Linux」或「測試此媒體並安裝」選項功能表。在幾秒後預設會選取「測試」選項。安裝程式會驗證媒體上的內容是否良好,然後啟動安裝程式。

    靴子

  7. 安裝程式啟動之後,會顯示 [ 歡迎使用 Oracle Linux] 畫面。若要開始安裝,請選取安裝程序的語言。

    lang

    此實驗室不會繼續進行安裝程序。

    注意:您可以在本影片連結中觀看示範 Oracle Linux 安裝程序的免費視訊:安裝 Oracle Linux 8

  8. 按一下視窗右上角的 'X' 以關閉 Web 瀏覽器。

使用 Oracle Cloud 映像檔建立虛擬機器

注意:請確定從雲端執行處理 (ol-node01) 終端機視窗輸入下列命令。

  1. 變更至 KVM 映像檔儲存位置。

    cd /var/lib/libvirt/images
    
  2. 下載 Oracle Linux VM 樣板。

    sudo curl -O https://yum.oracle.com/templates/OracleLinux/OL8/u6/x86_64/OL8U6_x86_64-kvm-b126.qcow
    
  3. 建立描述資料檔案。

    cat << 'EOF' | sudo tee ~/meta-data > /dev/null
    instance-id: iid-local01
    local-hostname: vm-01
    EOF
    
  4. 建立使用者資料檔。

    cat << 'EOF' | sudo tee ~/user-data > /dev/null
    #cloud-config
    
    system_info:
      default_user:
        name: opc
    
    ssh_authorized_keys:
      - <paste_public_key_here>
    EOF
    
  5. 產生 SSH 金鑰組

    ssh-keygen -t rsa -b 4096
    

    按下 Enter 以接受每一個預設值。金鑰組會寫入使用者本位目錄中的 .ssh 目錄。

  6. 將公開金鑰複製到使用者資料檔。

    SSHKEY=$(cat ~/.ssh/id_rsa.pub)
    sed -i "s|<paste_public_key_here>|${SSHKEY}|g" ~/user-data
    
  7. 產生 ISO 影像 。

    sudo genisoimage -output /var/lib/libvirt/images/vm-01.iso -volid cidata -joliet -rock ~/user-data ~/meta-data
    
  8. 建立執行處理。

    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
    
  9. 列出 VM。

    sudo virsh list
    
  10. 擷取 vm-01 虛擬機器的 IP 位址。

    sudo virsh net-dhcp-leases --network default
    

    注意:視虛擬機器啟動的速度而定,您可能需要再次執行命令以顯示 IP 位址。

  11. 或者,您可以根據 MAC 位址進行篩選。

    sudo virsh domiflist vm-01
    
  12. 從先前的輸出複製 MAC 位址,並在下列指令中提供。

    sudo virsh net-dhcp-leases --network default --mac <MAC_address>
    
  13. 連線 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 上的終端機執行此下一個命令。

  1. 從您的 lunabox Desktop 終端機視窗輸入下列指令,以使用 ssh 建立 Cockpit 的本機連接埠轉送。

    ssh -L 9090:localhost:9090 oracle@<instance_ip_address>
    
  2. 開啟桌面上的 Web 瀏覽器,瀏覽 https://localhost:9090。

  3. oracle 使用者身分登入,密碼為 oracle

    登入

    此時會顯示 Cockpit 儀表板。

  4. 如有需要,請按一下「有限存取權」按鈕來取得管理權限。

  5. 按一下左邊導覽面板中的「虛擬機器」選項。

  6. 從虛擬機器清單中,按一下 vm-01 連結。

  7. 依需要瀏覽「簡介」區段、「磁碟」區段、網路介面等項目。

    注意:主控台在 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