Chuyển đến nội dung chính

在 Ubuntu 上安裝 KVM:透過 Cockpit Web UI 管理虛擬機

Duy Tran27 分鐘
在 Ubuntu 上安裝 KVM:透過 Cockpit Web UI 管理虛擬機

如果您正在尋找功能強大、免費且直接整合的虛擬化解決方案 Linux 內核,那麼 KVM(基於核心的虛擬機器) 就是答案。 鍵盤虛擬機 將 Linux 變成 Type-1 管理程式,讓你跑很多 虛擬機器 (VM) 具有幾乎本機的性能。

在這篇文章中,我將引導您完成安裝 鍵盤虛擬機 從上面的 A-Z 2台實體伺服器 具體配置:

主機名稱 IP位址 角色
kvm節點01 192.168.1.10 KVM 主機 #1
kvm節點02 192.168.1.11 KVM 主機 #2

此配置適合建置家庭實驗室、運行 Kubernetes 叢集或開發/測試環境。

為什麼選擇KVM?

在開始安裝之前,讓我們先了解一下原因 鍵盤虛擬機 是一個流行的選擇:

比較虛擬化解決方案:

┌─────────────────┬──────────────┬─────────────┬──────────────┐
│     Tiêu chí    │     KVM      │   VMware    │  VirtualBox  │
├─────────────────┼──────────────┼─────────────┼──────────────┤
│ Chi phí         │ Miễn phí     │ Có phí      │ Miễn phí     │
│ Hiệu năng       │ Xuất sắc     │ Xuất sắc    │ Tốt          │
│ Tích hợp Linux  │ Native       │ Cần driver  │ Cần driver   │
│ Production-ready│ Có           │ Có          │ Không        │
│ Cloud providers │ AWS, GCP...  │ VMware Cloud│ Không        │
│ Nested Virt     │ Tốt          │ Tốt         │ Hạn chế      │
└─────────────────┴──────────────┴─────────────┴──────────────┘

鍵盤虛擬機 被 AWS、Google Cloud、DigitalOcean 等主要雲端供應商使用,並且是 OpenStack、Proxmox VE 的基礎。

系統需求

配置我們的 2 台伺服器:

系統需求

每個節點的最低要求:

第 1 步:檢查硬體虛擬化支援

📚 執行以上操作 兩個節點:kvm-node01 和 kvm-node02

首先,需要確認CPU支援硬體虛擬化。這是最重要的一步──如果CPU不支持,就不能使用 鍵盤虛擬機。

檢查CPU標誌:

# Kiểm tra số lượng CPU cores hỗ trợ virtualization
egrep -c '(vmx|svm)' /proc/cpuinfo

傳回大於 0 的數字表示 CPU 支援:

  • 虛擬機 - 英特爾VT-x
  • 支援向量機 -AMD-V

查看更多詳細資訊:

# Xem loại virtualization
lscpu | grep Virtualization

Output mẫu:

Virtualization: VT-x (Intel)

Virtualization: AMD-V (AMD)

使用 kvm-ok 工具:

# Cài đặt cpu-checker
sudo apt update
sudo apt install -y cpu-checker

Chạy kiểm tra

sudo kvm-ok

期望的結果:

INFO: /dev/kvm exists
KVM acceleration can be used
⚠️ 注意: 如果結果顯示“KVM 加速無法使用”,請檢查 BIOS/UEFI 並啟用 Intel VT-x 或 AMD-V 選項。

步驟2:安裝KVM和軟體包

📚 執行以上操作 兩個節點

繼續安裝 鍵盤虛擬機 以及必要的包裝:

# Update hệ thống
sudo apt update && sudo apt upgrade -y

Cài đặt KVM và toàn bộ dependencies

sudo apt install -y
qemu-kvm
libvirt-daemon-system
libvirt-clients
bridge-utils
virtinst
virt-manager
libguestfs-tools
libosinfo-bin
cloud-image-utils

各包說明:

套餐 功能
qemu-kvm QEMU 模擬器與 鍵盤虛擬機 加速度.加速度
libvirt 守護程式系統 利布維爾特 守護程式管理虛擬機
libvirt 用戶端 CLI 工具,如 virsh
橋接工具 創建和管理 網路 橋樑。橋樑
維廷斯特 用於建立虛擬機器的虛擬安裝工具
虛擬管理器 用於管理虛擬機器的 GUI(對於 伺服器。伺服器)
libguestfs 工具 用於操作磁碟映像的工具
libosinfo-bin 作業系統資訊資料庫
雲圖像實用程式 工具可用於雲影像

驗證安裝:

# Kiểm tra KVM modules đã load
lsmod | grep kvm

Output mẫu (Intel):

kvm_intel 368640 0

kvm 1028096 1 kvm_intel

Output mẫu (AMD):

kvm_amd 139264 0

kvm 1028096 1 kvm_amd

步驟 3:設定使用者和服務

📚 執行以上操作 兩個節點

使用 鍵盤虛擬機 不需要每個命令都使用 sudo,將用戶添加到必要的群組中:

# Thêm user hiện tại vào group libvirt và kvm
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER

Verify groups

groups $USER

啟用並啟動 libvirtd 服務:

# Enable service khởi động cùng hệ thống
sudo systemctl enable libvirtd

Start service

sudo systemctl start libvirtd

Kiểm tra status

sudo systemctl status libvirtd

期望的輸出:

● libvirtd.service - Virtualization daemon
Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled; ...)
Active: active (running) since ...
💡 提示: 將使用者新增至群組後,需要登出並重新登錄,或執行 新grp libvirt 立即申請。

檢查 libvirt 連線:

# Test virsh command
virsh list --all

Nếu thành công, output sẽ là:

Id Name State

----------------------

(empty - chưa có VM nào)

步驟 4:設定網橋

這是虛擬機器能夠與外部網路通訊的最重要的一步。我們將為兩台伺服器配置靜態 IP 的橋接網路。

確定網路介面名稱(在兩個節點上完成):

# Liệt kê các network interfaces
ip link show

Tìm interface chính (thường là enp0s3, eth0, eno1, ens18...)

Ghi nhớ tên này để dùng ở bước sau

備份目前配置:

sudo mkdir -p /etc/netplan/backup
sudo cp /etc/netplan/*.yaml /etc/netplan/backup/

kvm-node01 (192.168.1.10) 的配置

sudo nano /etc/netplan/01-bridge-config.yaml
# /etc/netplan/01-bridge-config.yaml - kvm-node01
network:
version: 2
renderer: networkd

ethernets: enp0s3: # ⚠️ Thay bằng tên interface thực tế dhcp4: false dhcp6: false

bridges: br0: interfaces: - enp0s3 # ⚠️ Thay bằng tên interface thực tế addresses: - 192.168.1.10/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: - 8.8.8.8 - 8.8.4.4 mtu: 1500 parameters: stp: true forward-delay: 4

kvm-node02 (192.168.1.11) 的配置

sudo nano /etc/netplan/01-bridge-config.yaml
# /etc/netplan/01-bridge-config.yaml - kvm-node02
network:
version: 2
renderer: networkd

ethernets: enp0s3: # ⚠️ Thay bằng tên interface thực tế dhcp4: false dhcp6: false

bridges: br0: interfaces: - enp0s3 # ⚠️ Thay bằng tên interface thực tế addresses: - 192.168.1.11/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: - 8.8.8.8 - 8.8.4.4 mtu: 1500 parameters: stp: true forward-delay: 4

應用配置(在兩個節點上完成):

# Kiểm tra syntax
sudo netplan try

Nếu OK, áp dụng

sudo netplan apply

Verify bridge đã tạo

ip addr show br0 brctl show

期望的輸出:

bridge name     bridge id               STP enabled     interfaces
br0             8000.xxxxxxxxxxxx       yes             enp0s3
⚠️ 警告: 透過 SSH 設定網橋時,您可能會失去連線。使用 網路計劃嘗試 如果您不確認,120秒後將自動回滾。

虛擬機器IP規劃

範圍 目的
192.168.1.10 - 192.168.1.11 KVM主機
192.168.1.20 - 192.168.1.49 基礎設施虛擬機器(DNS、DHCP 等)
192.168.1.50 - 192.168.1.99 Kubernetes集群
192.168.1.100 - 192.168.1.149 kvm-node01 上的虛擬機
192.168.1.150 - 192.168.1.199 kvm-node02 上的虛擬機
192.168.1.200 - 192.168.1.250 保留/DHCP 池
192.168.1.1 閘道

為虛擬機器配置虛擬網路(NAT 網路)

除了橋接網路之外,我們還將創建一個 私人虛擬網絡 對於虛擬機器。此網路使用NAT,使得虛擬機器可以透過主機存取Internet,但與實體網路隔離。

建立虛擬網路定義檔:

# Tạo file XML cho mạng ảo
sudo tee /tmp/vm-private-network.xml << EOF
<network>
  <name>vm-private</name>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr1' stp='on' delay='0'/>
  <ip address='10.10.10.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='10.10.10.100' end='10.10.10.200'/>
    </dhcp>
  </ip>
</network>
EOF

建立並啟動虛擬網路(在兩個節點上執行):

# Define network từ XML
sudo virsh net-define /tmp/vm-private-network.xml

Start network

sudo virsh net-start vm-private

Enable autostart

sudo virsh net-autostart vm-private

Verify

sudo virsh net-list --all

期望的輸出:

 Name          State    Autostart   Persistent

default active yes yes vm-private active yes yes

查看虛擬網路詳細資訊:

# Xem cấu hình
sudo virsh net-dumpxml vm-private

Xem DHCP leases

sudo virsh net-dhcp-leases vm-private

Xem bridge interface

ip addr show virbr1

兩個節點的虛擬網路規劃:

節點 虛擬網路 子網 DHCP 範圍
kvm節點01 虛擬機器專用 10.10.10.0/24 10.10.10.100-149
kvm節點02 虛擬機器專用 10.10.10.0/24 10.10.10.150-200
💡 注意: 兩個節點共享相同的子網路 10.10.10.0/24,但共享不同的 DHCP 範圍以避免 IP 衝突。 2 個節點上的虛擬機器可以透過虛擬網路直接相互通訊。

kvm-node02 的虛擬網路設定(相同子網,不同 DHCP 範圍):

# Trên kvm-node02, tạo file XML với DHCP range khác
sudo tee /tmp/vm-private-network.xml << EOF
<network>
  <n>vm-private</n>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr1' stp='on' delay='0'/>
  <ip address='10.10.10.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='10.10.10.150' end='10.10.10.200'/>
    </dhcp>
  </ip>
</network>
EOF

Define và start

sudo virsh net-define /tmp/vm-private-network.xml sudo virsh net-start vm-private sudo virsh net-autostart vm-private

安装 Cockpit 以通过 Web UI 管理 KVM

駕駛艙 是一个有助于管理的 Web UI 鍵盤虛擬機 直观且简单。安装上面 兩個節點:

# Cài đặt Cockpit và module KVM
sudo apt install -y cockpit cockpit-machines

Enable và start Cockpit

sudo systemctl enable --now cockpit.socket

Kiểm tra status

sudo systemctl status cockpit.socket

Mở firewall (nếu có)

sudo ufw allow 9090/tcp

访问驾驶舱:

節點 網址
kvm節點01 https://192.168.1.10:9090
kvm節點02 https://192.168.1.11:9090

使用用户登录 Linux 你的(需要 sudo 许可)。

KVM 的驾驶舱接口:

KVM 的驾驶舱功能:

特點 描述
虛擬機 直观地创建、删除、启动、停止VM
主機 浏览器中的 VNC/串行控制台
存储池 管理磁盘镜像、上传ISO
網路 建立/編輯虛擬網路(NAT、橋接器)
快照 创建和恢复快照
資源監控器 实时监控CPU、RAM、磁盘、网络

設定VXLAN Overlay網路(2節點公共虛擬網路)

為了使 2 個節點上的虛擬機器可以透過公共虛擬網路直接相互通信,我們使用 VXLAN(虚拟可扩展局域网)。 VXLAN 在實體網路上建立第 2 層隧道,讓不同主機上的虛擬機器充當同一個虛擬交換器。

設定VXLAN Overlay網路(2節點公共虛擬網路)

步骤1:在kvm-node01上创建VXLAN接口:

# Tạo VXLAN interface với VNI 100
sudo ip link add vxlan100 type vxlan id 100 \
    local 192.168.1.10 \
    remote 192.168.1.11 \
    dstport 4789 \
    dev br0

Bật interface

sudo ip link set vxlan100 up

步驟2:在kvm-node02上建立VXLAN介面:

# Tạo VXLAN interface với VNI 100
sudo ip link add vxlan100 type vxlan id 100 
local 192.168.1.11
remote 192.168.1.10
dstport 4789
dev br0

Bật interface

sudo ip link set vxlan100 up

步驟 3:為 VXLAN 建立網橋(在兩個節點上執行):

# Tạo bridge mới cho VXLAN
sudo ip link add vxlan-br0 type bridge
sudo ip link set vxlan-br0 up

Gắn VXLAN interface vào bridge

sudo ip link set vxlan100 master vxlan-br0

Verify

bridge link show

步驟 4:使用 Netplan 設定持久性:

建立文件 /etc/netplan/02-vxlan.yaml 上面 kvm節點01:

network:
version: 2
tunnels:
vxlan100:
mode: vxlan
id: 100
local: 192.168.1.10
remote: 192.168.1.11
port: 4789

bridges: vxlan-br0: interfaces: - vxlan100 mtu: 1450 parameters: stp: false forward-delay: 0

建立文件 /etc/netplan/02-vxlan.yaml 上面 kvm節點02:

network:
version: 2
tunnels:
vxlan100:
mode: vxlan
id: 100
local: 192.168.1.11
remote: 192.168.1.10
port: 4789

bridges: vxlan-br0: interfaces: - vxlan100 mtu: 1450 parameters: stp: false forward-delay: 0

應用程式配置:

sudo netplan apply

Verify VXLAN

ip -d link show vxlan100 bridge link show

步驟 5:為 libvirt 定義 VXLAN 網路(兩個節點):

sudo tee /tmp/vxlan-network.xml << EOF
<network>
<name>vxlan-net</name>
<forward mode="bridge"/>
<bridge name="vxlan-br0"/>
</network>
EOF

Define và start network

sudo virsh net-define /tmp/vxlan-network.xml sudo virsh net-start vxlan-net sudo virsh net-autostart vxlan-net

Verify

sudo virsh net-list --all

步骤6:使用VXLAN网络创建虚拟机:

# Tạo VM với VXLAN network
sudo virt-install 
--name vm-vxlan-01
--memory 2048
--vcpus 2
--disk path=/var/lib/libvirt/images/vm-vxlan-01.qcow2,size=20
--os-variant ubuntu22.04
--network network=vxlan-net
--graphics vnc
--cdrom /var/lib/libvirt/images/ubuntu-22.04.3-live-server-amd64.iso
--noautoconsole
⚠️ 注意MTU: 使用 VXLAN 的虛擬機器需要設定 MTU = 1450(由於 VXLAN 標頭約為 50 位元組)。虛擬機器中的配置:

测试VXLAN连接:

# Trên VM1 (kvm-node01) - IP: 10.10.10.101
ping 10.10.10.103  # Ping đến VM3 trên kvm-node02

Kiểm tra VXLAN statistics

ip -s link show vxlan100

比較虛擬網路類型:

類型 使用案例 虛擬機器跨節點通信 隔離
NAT(虛擬機器專用) 简单的开发/测试 ❌ 沒有 ✅ 是的
桥 (br0) 生产、局域网接入 ✅ 透過區域網 ❌ 沒有
VXLAN 覆蓋 多節點叢集 ✅ 直达L2 ✅ 是的

步骤5:配置存储池

📚 執行以上操作 兩個節點

儲存池是儲存虛擬機器磁碟鏡像的地方。

建立儲存資料夾:

# Sử dụng thư mục mặc định
sudo mkdir -p /var/lib/libvirt/images

Set permissions

sudo chown -R libvirt-qemu:kvm /var/lib/libvirt/images sudo chmod -R 775 /var/lib/libvirt/images

儲存池定義:

# Tạo pool mới
sudo virsh pool-define-as 
--name default
--type dir
--target /var/lib/libvirt/images

Build và start pool

sudo virsh pool-build default sudo virsh pool-start default sudo virsh pool-autostart default

Verify

sudo virsh pool-list --all sudo virsh pool-info default

期望的輸出:

 Name      State    Autostart

default active yes

步驟 6:設定主機名稱和 /etc/hosts

為了使兩個節點能夠透過主機名稱相互通信,需要進行配置 SSH 和主機名稱:

在 kvm-node01 上:

# Set hostname
sudo hostnamectl set-hostname kvm-node01

Cập nhật /etc/hosts

sudo nano /etc/hosts

127.0.0.1       localhost
192.168.1.10       kvm-node01
192.168.1.11       kvm-node02

在 kvm-node02 上:

# Set hostname
sudo hostnamectl set-hostname kvm-node02

Cập nhật /etc/hosts

sudo nano /etc/hosts

127.0.0.1       localhost
192.168.1.10       kvm-node01
192.168.1.11       kvm-node02

測試2個節點之間的連接:

# Từ kvm-node01
ping -c 3 kvm-node02

Từ kvm-node02

ping -c 3 kvm-node01

第 7 步:建立第一個虛擬機

安裝後 鍵盤虛擬機 完成後,我們將建立第一個要使用的虛擬機 vm-私有虛擬網絡。

方法一:使用雲鏡像(快速)

雲端鏡像是預先安裝作業系統的磁碟鏡像,只需配置並啟動即可:

在 kvm-node01 上:

# Download Ubuntu Cloud Image
cd /var/lib/libvirt/images
sudo wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img

Tạo disk image cho VM

sudo qemu-img create -f qcow2
-F qcow2
-b jammy-server-cloudimg-amd64.img
vm-test-01.qcow2 20G

建立 cloud-init 配置:

# Tạo thư mục cho cloud-init
sudo mkdir -p /var/lib/libvirt/cloud-init

Tạo file meta-data

sudo tee /var/lib/libvirt/cloud-init/meta-data << EOF instance-id: vm-test-01 local-hostname: vm-test-01 EOF

Tạo file user-data

sudo tee /var/lib/libvirt/cloud-init/user-data << EOF #cloud-config hostname: vm-test-01 users:

  • name: ubuntu sudo: ALL=(ALL) NOPASSWD:ALL groups: users, admin home: /home/ubuntu shell: /bin/bash lock_passwd: false

chpasswd: list: | ubuntu:ubuntu123 expire: false

package_update: true packages:

  • qemu-guest-agent
  • curl
  • wget
  • vim

runcmd:

  • systemctl enable qemu-guest-agent
  • systemctl start qemu-guest-agent EOF

Tạo cloud-init ISO

sudo cloud-localds /var/lib/libvirt/images/vm-test-01-cidata.iso
/var/lib/libvirt/cloud-init/user-data
/var/lib/libvirt/cloud-init/meta-data

使用 vm-private 虛擬網路建立 VM:

sudo virt-install 
--name vm-test-01
--memory 2048
--vcpus 2
--disk path=/var/lib/libvirt/images/vm-test-01.qcow2,format=qcow2
--disk path=/var/lib/libvirt/images/vm-test-01-cidata.iso,device=cdrom
--os-variant ubuntu22.04
--network network=vm-private
--graphics none
--import
--noautoconsole
💡 注意: 使用 --network 網路=vm-private 相反 --網橋=br0 供虛擬機器連接到虛擬網路。

檢查虛擬機器:

# List VMs
virsh list --all

Xem IP của VM (VM sẽ nhận IP từ DHCP 10.10.10.x)

virsh domifaddr vm-test-01

Hoặc xem từ DHCP leases

sudo virsh net-dhcp-leases vm-private

Console vào VM

virsh console vm-test-01

Login: ubuntu / ubuntu123

Thoát console: Ctrl + ]

檢查虛擬機器中的網路:

# Sau khi login vào VM
ip addr show

Output mẫu:

eth0: 10.10.10.101/24 (mạng ảo)

Test internet (qua NAT)

ping -c 3 google.com

Test ping đến host

ping -c 3 10.10.10.1

建立具有 2 個網路介面的 VM

如果您需要 VM 同時連接到虛擬網路(內部)和橋接連接(外部):

sudo virt-install 
--name vm-dual-nic
--memory 2048
--vcpus 2
--disk path=/var/lib/libvirt/images/vm-dual-nic.qcow2,size=20,format=qcow2
--os-variant ubuntu22.04
--network network=vm-private
--network bridge=br0
--graphics vnc,listen=0.0.0.0
--cdrom /var/lib/libvirt/images/ubuntu-22.04.3-live-server-amd64.iso
--boot cdrom,hd
--noautoconsole
建立具有 2 個網路介面的 VM

方法 2:從 ISO 安裝

# Download Ubuntu Server ISO (nếu chưa có)
cd /var/lib/libvirt/images
sudo wget https://releases.ubuntu.com/22.04/ubuntu-22.04.3-live-server-amd64.iso

Tạo VM với mạng ảo

sudo virt-install
--name vm-ubuntu-01
--memory 2048
--vcpus 2
--disk path=/var/lib/libvirt/images/vm-ubuntu-01.qcow2,size=20,format=qcow2
--os-variant ubuntu22.04
--network network=vm-private
--graphics vnc,listen=0.0.0.0,port=5901
--cdrom /var/lib/libvirt/images/ubuntu-22.04.3-live-server-amd64.iso
--boot cdrom,hd
--noautoconsole

連接VNC進行安裝:

# Xem VNC port
sudo virsh vncdisplay vm-ubuntu-01

Output: :1 (nghĩa là port 5901)

Kết nối từ máy khác bằng VNC client

Address: 192.168.1.10:5901

比較網路類型

網路類型 使用案例 虛擬機器IP 外部訪問
虛擬機器專用 (NAT) 開發、測試 10.10.10.x 需要連接埠轉送
br0(橋) 生產、服務 192.168.1.x 直接
雙網卡 DMZ、多層應用程式 兩者都 選項

步驟 8:使用 virsh 管理虛擬機

創建完上述虛擬機器後 鍵盤虛擬機,你將管理它們 維爾什 命令。

管理虛擬網絡

# Liệt kê tất cả networks
virsh net-list --all

Xem thông tin network

virsh net-info vm-private

Xem DHCP leases (IP đã cấp cho VMs)

virsh net-dhcp-leases vm-private

Xem cấu hình XML của network

virsh net-dumpxml vm-private

Start/Stop network

virsh net-start vm-private virsh net-destroy vm-private

Enable/Disable autostart

virsh net-autostart vm-private virsh net-autostart --disable vm-private

Xóa network

virsh net-undefine vm-private

基本指令

生命週期管理:

# Liệt kê tất cả VMs
virsh list --all

Start VM

virsh start vm-test-01

Shutdown graceful

virsh shutdown vm-test-01

Force stop (như rút điện)

virsh destroy vm-test-01

Reboot

virsh reboot vm-test-01

Suspend/Resume

virsh suspend vm-test-01 virsh resume vm-test-01

Autostart khi host boot

virsh autostart vm-test-01 virsh autostart --disable vm-test-01

虛擬機器資訊:

# Thông tin tổng quan
virsh dominfo vm-test-01

CPU và memory stats

virsh domstats vm-test-01

Network interfaces

virsh domiflist vm-test-01

Disk information

virsh domblklist vm-test-01

IP address

virsh domifaddr vm-test-01

快照

# Tạo snapshot
virsh snapshot-create-as vm-test-01 
--name "before-upgrade"
--description "Snapshot before system upgrade"

Liệt kê snapshots

virsh snapshot-list vm-test-01

Revert về snapshot

virsh snapshot-revert vm-test-01 before-upgrade

Xóa snapshot

virsh snapshot-delete vm-test-01 before-upgrade

克隆虛擬機

# Shutdown VM trước khi clone
virsh shutdown vm-test-01

Clone VM

virt-clone
--original vm-test-01
--name vm-test-02
--auto-clone

刪除虛擬機

# Shutdown VM
virsh shutdown vm-test-01

Xóa VM definition và storage

virsh undefine vm-test-01 --remove-all-storage

步驟 9:配置嵌套虛擬化(可選)

嵌套 虛擬化 允許在虛擬機器內運行虛擬機器 - 當您想要測試時很有用 庫伯內斯 或 碼頭工人 在虛擬機器中。

對於英特爾 CPU:

# Tạo file config
echo "options kvm_intel nested=1" | sudo tee /etc/modprobe.d/kvm-intel.conf

Reload module

sudo modprobe -r kvm_intel sudo modprobe kvm_intel

Verify

cat /sys/module/kvm_intel/parameters/nested

Output: Y hoặc 1

對於 AMD CPU:

# Tạo file config
echo "options kvm_amd nested=1" | sudo tee /etc/modprobe.d/kvm-amd.conf

Reload module

sudo modprobe -r kvm_amd sudo modprobe kvm_amd

Verify

cat /sys/module/kvm_amd/parameters/nested

第 10 步:故障排除

常見錯誤

錯誤:“無法存取儲存檔案”

# Kiểm tra permissions
ls -la /var/lib/libvirt/images/

Fix permissions

sudo chown libvirt-qemu:kvm /var/lib/libvirt/images/.qcow2 sudo chmod 660 /var/lib/libvirt/images/.qcow2

錯誤:虛擬機器沒有 IP 位址

# Kiểm tra bridge
brctl show
ip addr show br0

Trong VM, request DHCP

sudo dhclient -v

執行 virsh 時發生錯誤:“權限被拒絕”

# Thêm vào groups
sudo usermod -aG libvirt,kvm $USER

Logout và login lại

查看日誌:

# Libvirt logs
sudo journalctl -u libvirtd -f

QEMU logs cho specific VM

sudo tail -f /var/log/libvirt/qemu/vm-test-01.log

參考文獻


如果您在安裝過程中遇到問題,請在下方留言!