1. Ubuntu 安裝 KVM 虛擬化
KVM 是 Linux 內(nèi)核中一個(gè)基于 hypervisor 的虛擬化模塊,它允許用戶在 Linux 操作系統(tǒng)上創(chuàng)建和管理虛擬機(jī)。
如果機(jī)器的CPU不支持硬件虛擬化擴(kuò)展,是無法使用KVM(基于內(nèi)核的虛擬機(jī))直接創(chuàng)建和運(yùn)行虛擬機(jī)的。此時(shí)最多只能使用QEMU的完全軟件仿真模式來運(yùn)行虛擬機(jī),但是性能會(huì)極度低下。
檢查您的 CPU 是否支持虛擬化:
運(yùn)行以下命令,輸出大于0,說明KVM與系統(tǒng)兼容,可以安裝。
egrep -c 'vmx|svm' /proc/cpuinfo
或者安裝cpu-checker工具。
apt install -y cpu-checker
它應(yīng)該輸出:
root@ubuntu:~# kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
Vmware workstation可以通過編輯虛擬機(jī)處理器選項(xiàng),開啟嵌套虛擬化。
環(huán)境信息:
- 安裝環(huán)境:vmware workstation
- 操作系統(tǒng):ubuntu 22.04 LTS
安裝kvm軟件包
配置主機(jī)名
root@ubuntu:~# hostnamectl set-hostname kvm-host
更新系統(tǒng)
apt update -y
安裝必要的包:
## qemu+kvm
apt install -y qemu-kvm
## libvirt
apt install -y virt-manager libvirt-daemon-system virtinst libvirt-clients
## bridge tool
apt install -y bridge-utils
安裝包說明:
-
qemu-kvm
- 為 KVM 管理程序提供硬件模擬的軟件程序 -
libvirt-daemon-system
- 將 libvirt 守護(hù)程序作為系統(tǒng)服務(wù)運(yùn)行的配置文件 -
libvirt-clients
- 用來管理虛擬化平臺(tái)的軟件 -
bridge-utils
- 用來配置網(wǎng)絡(luò)橋接的命令行工具 -
virtinst
- 用來創(chuàng)建虛擬機(jī)的命令行工具
一旦軟件包被安裝好,libvirt 守護(hù)程序?qū)?huì)自動(dòng)啟動(dòng)。你可以通過運(yùn)行下面的命令驗(yàn)證:
root@kvm-host:~# systemctl is-active libvirtd
active
用戶添加到 KVM 和 Libvirt 組
想要?jiǎng)?chuàng)建和管理虛擬機(jī),你需要添加你的用戶到libvirt
和kvm
用戶組。
sudo usermod -aG kvm $USER
sudo usermod -aG libvirt $USER
網(wǎng)絡(luò)設(shè)置
在libvirt 安裝過程中,一個(gè)被稱為 virbr0
的橋接設(shè)備默認(rèn)被創(chuàng)建。這個(gè)設(shè)備使用 NAT 來連接客戶機(jī)到外面的世界。
查看網(wǎng)卡變化,新增了一個(gè)virtbr0
的網(wǎng)橋接口。
root@kvm-host:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:15:cb:54 brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 192.168.93.9/24 brd 192.168.93.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe15:cb54/64 scope link
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:93:99:53 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
運(yùn)行 brctl
工具來列出當(dāng)前的網(wǎng)橋和它們連接的接口:
root@kvm-host:~# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.525400939953 yes
默認(rèn)網(wǎng)絡(luò)設(shè)置適合大部分 Ubuntu 用戶,但是有限制,由于虛擬機(jī)地址段為私有IP地址,你只能從虛擬機(jī)所在宿主機(jī)訪問虛擬機(jī)地址,無法從外部網(wǎng)絡(luò)訪問虛擬機(jī)地址。
Libvirt默認(rèn)NAT網(wǎng)絡(luò)模式原理圖:
如果需要從外部連接虛擬機(jī),需要?jiǎng)?chuàng)建一個(gè)新的網(wǎng)橋,將該網(wǎng)橋橋接到物理網(wǎng)卡,以便虛擬機(jī)配置物理網(wǎng)段的IP地址,進(jìn)而實(shí)現(xiàn)通過外部網(wǎng)絡(luò)直連虛擬機(jī)。
下載 cloud image 鏡像
下面以默認(rèn)NAT網(wǎng)絡(luò)模式為例,介紹使用 ubuntu cloud image 快速啟動(dòng)虛擬機(jī)。
以 jammy(Ubuntu Server 22.04 LTS)
為例
# 官方源
wget https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img
# 國內(nèi)源
wget https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cloud-images/jammy/current/jammy-server-cloudimg-amd64.img
安裝guestfs-tools 鏡像定制工具
apt install -y guestfs-tools
創(chuàng)建鏡像模板目錄
mkdir -p /var/lib/libvirt/images/templates
復(fù)制鏡像到模板目錄
cp jammy-server-cloudimg-amd64.img /var/lib/libvirt/images/templates/
定制鏡像參數(shù)
export image=/var/lib/libvirt/images/templates/jammy-server-cloudimg-amd64.img
virt-customize -a $image --run-command 'adduser ubuntu'
virt-customize -a $image --run-command 'echo "ubuntu:ubuntu123" | chpasswd'
virt-customize -a $image --run-command 'adduser ubuntu sudo'
virt-customize -a $image --run-command 'apt update -y'
virt-customize -a $image --run-command 'apt install -y qemu-guest-agent'
參數(shù)說明:
- 創(chuàng)建
ubuntu
用戶,密碼為ubuntu123
,并賦予sudo權(quán)限 - 更新系統(tǒng)軟件索引(可選)
- 安裝必要的軟件包(可選)
創(chuàng)建虛擬機(jī)
創(chuàng)建虛擬機(jī)存儲(chǔ)路徑并復(fù)制鏡像模板
mkdir -p /var/lib/libvirt/images/ubuntu01
cp /var/lib/libvirt/images/templates/jammy-server-cloudimg-amd64.img /var/lib/libvirt/images/ubuntu01/
使用virt-install命令創(chuàng)建虛擬機(jī)
virt-install \
--name ubuntu01 \
--vcpus 1 \
--memory 2048 \
--disk path=/var/lib/libvirt/images/ubuntu01/jammy-server-cloudimg-amd64.img \
--os-variant ubuntu22.04 \
--import \
--autostart \
--noautoconsole
參數(shù)說明:
-
--name
:可選,指定虛擬機(jī)名稱 -
--vcps
:可選,指定虛擬機(jī)cpu大小 -
--memory
:可選,指定虛擬機(jī)內(nèi)存大小 -
--disk path
:必選,指定虛擬機(jī)鏡像位置 -
--os-variant
:必選,指定虛擬機(jī)操作系統(tǒng)類型 -
--import
:必選,指定虛擬機(jī)安裝方式,安裝方式不同該參數(shù)不同 -
--autostart
:可選,默認(rèn)虛擬機(jī)不會(huì)隨主機(jī)重啟后一起啟動(dòng),可通過添加該參數(shù)配置 -
--noautoconsole
:可選,不指定該參數(shù)virt-install命令將始終處于掛起狀態(tài),需要另開窗口登錄虛擬機(jī)
說明:使用osinfo-query
命令可以列出--os-variant
選項(xiàng)支持的所有參數(shù)。
$ apt install -y libosinfo-bin
$ osinfo-query os
命令示例輸出如下
root@kvm-host:~# virt-install \
--name ubuntu01 \
--vcpus 1 \
--memory 2048 \
--disk path=/var/lib/libvirt/images/ubuntu01/jammy-server-cloudimg-amd64.img \
--os-variant ubuntu22.04 \
--import \
--autostart \
--noautoconsole
Starting install...
Creating domain... | 0 B 00:00:00
Domain creation completed.
root@kvm-host:~#
創(chuàng)建虛擬機(jī)后,查看網(wǎng)口及網(wǎng)橋變化,主機(jī)新增vnet0
網(wǎng)卡,網(wǎng)橋新增vnet0
接口,說明虛擬機(jī)連接到了網(wǎng)橋上。
root@kvm-host:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:15:cb:54 brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 192.168.93.9/24 brd 192.168.93.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe15:cb54/64 scope link
valid_lft forever preferred_lft forever
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 52:54:00:93:99:53 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master virbr0 state UNKNOWN group default qlen 1000
link/ether fe:54:00:fc:fe:df brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fefc:fedf/64 scope link
valid_lft forever preferred_lft forever
root@kvm-host:~# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.525400939953 yes vnet0
查看虛擬機(jī)運(yùn)行狀態(tài)
root@kvm-host:~# virsh list
Id Name State
--------------------------
1 ubuntu01 running
root@kvm-host:~#
使用virsh console
命令連接到虛擬機(jī),使用上面定義的用戶密碼ubuntu/ubuntu123
登錄到虛擬機(jī)
virsh console ubuntu01
示例命令輸出如下:
root@kvm-host:~# virsh console ubuntu01
Connected to domain 'ubuntu01'
Escape character is ^] (Ctrl + ])
ubuntu login: ubuntu
Password:
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-100-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
System information as of Fri Mar 15 11:31:43 UTC 2024
System load: 0.0458984375 Memory usage: 8% Processes: 114
Usage of /: 81.3% of 1.96GB Swap usage: 0% Users logged in: 0
Expanded Security Maintenance for Applications is not enabled.
1 update can be applied immediately.
1 of these updates is a standard security update.
To see these additional updates run: apt list --upgradable
Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
ubuntu@ubuntu:~$
ubuntu@ubuntu:~$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
ubuntu@ubuntu:~$
切換到root用戶,輸入ubuntu
用戶的密碼ubuntu123
ubuntu@ubuntu:~$ sudo -i
[sudo] password for ubuntu:
root@ubuntu:~#
root@ubuntu:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 52:54:00:fc:fe:df brd ff:ff:ff:ff:ff:ff
root@ubuntu:~#
可以看到網(wǎng)卡未獲取任何IP地址,通過主機(jī)上的網(wǎng)橋接口virbr0
可以確認(rèn)網(wǎng)橋地址段默認(rèn)為192.168.122.0/24
,網(wǎng)關(guān)地址為192.168.122.1/24
,該地址段和網(wǎng)關(guān)就是虛擬機(jī)可用的地址段和網(wǎng)關(guān)。
確認(rèn)虛擬機(jī)網(wǎng)卡名稱為enp1s0
,虛擬機(jī)中創(chuàng)建網(wǎng)卡配置文件
cat >/etc/netplan/00-installer-config.yaml<<EOF
network:
version: 2
ethernets:
enp1s0:
dhcp4: false
addresses:
- 192.168.122.10/24
nameservers:
addresses:
- 223.5.5.5
- 223.6.6.6
routes:
- to: default
via: 192.168.122.1
EOF
啟用網(wǎng)卡配置
root@ubuntu:~# chmod 600 /etc/netplan/00-installer-config.yaml
root@ubuntu:~# netplan apply
查看虛擬機(jī)網(wǎng)口狀態(tài)為UP,并且配置了IP地址:
root@ubuntu:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:fc:fe:df brd ff:ff:ff:ff:ff:ff
inet 192.168.122.10/24 brd 192.168.122.255 scope global enp1s0
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fefc:fedf/64 scope link
valid_lft forever preferred_lft forever
測(cè)試虛擬機(jī)訪問外部網(wǎng)絡(luò)
root@ubuntu:~# ping www.baidu.com -c 4
PING www.a.shifen.com (183.2.172.42) 56(84) bytes of data.
64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=1 ttl=127 time=7.56 ms
64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=2 ttl=127 time=8.46 ms
64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=3 ttl=127 time=8.63 ms
64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=4 ttl=127 time=8.40 ms
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3007ms
rtt min/avg/max/mdev = 7.556/8.262/8.627/0.416 ms
root@ubuntu:~#
退出虛擬機(jī)執(zhí)行exit命令,然后按鍵盤快捷鍵ctrl + ]
。
在kvm主機(jī)上查看虛擬機(jī)網(wǎng)卡IP地址(依賴虛擬機(jī)中的qemu-guest-agent
)
root@kvm-host:~# virsh domifaddr ubuntu01 --source agent
Name MAC address Protocol Address
-------------------------------------------------------------------------------
lo 00:00:00:00:00:00 ipv4 127.0.0.1/8
- - ipv6 ::1/128
enp1s0 52:54:00:fc:fe:df ipv4 192.168.122.10/24
- - ipv6 fe80::5054:ff:fefc:fedf/64
默認(rèn)虛擬機(jī)不會(huì)隨主機(jī)開機(jī)自動(dòng)啟動(dòng),可以使用以下命令配置隨宿主機(jī)自動(dòng)啟動(dòng),或在創(chuàng)建虛擬機(jī)時(shí)指定--autostart
參數(shù)。
root@kvm-host:~# virsh autostart ubuntu01
如果需要?jiǎng)h除虛擬機(jī),需要先將虛擬機(jī)關(guān)機(jī)
root@kvm-host:~# virsh shutdown ubuntu01
確認(rèn)虛擬機(jī)已關(guān)機(jī)
root@kvm-host:~# virsh list --all
Id Name State
---------------------------
- ubuntu01 shut off
然后執(zhí)行以下命令刪除虛擬機(jī)
root@kvm-host:~# virsh undefine ubuntu01
如果需要徹底刪除虛擬機(jī),則進(jìn)一步刪除虛擬機(jī)磁盤文件
root@kvm-host:~# rm -rf /var/lib/libvirt/images/ubuntu01/
2. 配置網(wǎng)橋共享物理網(wǎng)卡
橋接網(wǎng)絡(luò)與其他虛擬機(jī)共享主機(jī)的真實(shí)網(wǎng)絡(luò)接口,以連接到外部網(wǎng)絡(luò)。因此,每個(gè) VM 都可以直接綁定到任何可用的 IPv4 或 IPv6 地址,就像一臺(tái)物理計(jì)算機(jī)一樣。
默認(rèn)情況下,KVM 設(shè)置了一個(gè)專用虛擬網(wǎng)橋,以便所有 VM 都可以在主機(jī)內(nèi)相互通信。它提供自己的子網(wǎng)和 DHCP 來配置虛擬機(jī)的網(wǎng)絡(luò),并使用 NAT 訪問主機(jī)網(wǎng)絡(luò)。
查看 KVM 默認(rèn)虛擬接口的 IP 地址:
root@kvm-host:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:15:cb:54 brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 192.168.93.9/24 brd 192.168.93.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe15:cb54/64 scope link
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:93:99:53 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
可以看到,KVM默認(rèn)網(wǎng)絡(luò)virbr0使用192.168.122.1/24 IP地址。所有虛擬機(jī)都將使用192.168.122.0/24 IP 范圍內(nèi)的 IP 地址,主機(jī)操作系統(tǒng)可通過192.168.122.1訪問。應(yīng)該能夠從虛擬機(jī)操作系統(tǒng)內(nèi)部通過 ssh 進(jìn)入主機(jī)操作系統(tǒng)(位于 192.168.122.1)并使用 scp 來回復(fù)制文件。
如果您只從主機(jī)本身訪問內(nèi)部的 VM 就可以了。但是,無法從網(wǎng)絡(luò)中的其他遠(yuǎn)程系統(tǒng)訪問虛擬機(jī)。
為了從其他遠(yuǎn)程主機(jī)訪問虛擬機(jī),必須設(shè)置一個(gè)在主機(jī)網(wǎng)絡(luò)上運(yùn)行的公共網(wǎng)橋,并使用主機(jī)網(wǎng)絡(luò)上的任何外部 DHCP 服務(wù)器。通俗地說,我們將使所有虛擬機(jī)使用主機(jī)系統(tǒng)使用的相同 IP 系列。
如果你打算從本機(jī)(Ubuntu 22.04)之外訪問 KVM 虛擬機(jī),你必須將虛擬機(jī)的網(wǎng)卡映射至網(wǎng)橋。virbr0 網(wǎng)橋是 KVM 安裝完成后自動(dòng)創(chuàng)建的,僅做測(cè)試用途。
物理橋接網(wǎng)絡(luò)示意圖:
禁用 KVM默認(rèn)網(wǎng)絡(luò)
接下來,我們應(yīng)該禁用 KVM 為自己安裝的默認(rèn)網(wǎng)絡(luò)。查看默認(rèn)網(wǎng)絡(luò)
root@kvm-host:~# virsh net-list
Name State Autostart Persistent
--------------------------------------------
default active yes yes
使用命令刪除默認(rèn)的 KVM 網(wǎng)絡(luò):
virsh net-destroy default
virsh net-undefine default
查看網(wǎng)橋及網(wǎng)橋接口都已經(jīng)被刪除
root@kvm-host:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:15:cb:54 brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 192.168.93.9/24 brd 192.168.93.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe15:cb54/64 scope link
valid_lft forever preferred_lft forever
root@kvm-host:~# brctl show
root@kvm-host:~#
設(shè)置 KVM 公共網(wǎng)橋
現(xiàn)在,讓我們?cè)O(shè)置 KVM 公共網(wǎng)橋以在創(chuàng)建新 VM 時(shí)使用。查找網(wǎng)絡(luò)接口ens33的MAC地址:
root@kvm-host:~# ip a show
或者你可以運(yùn)行命令,它將在 serial:
條目中輸出 MAC 地址。
lshw -C network
為 VM(虛擬機(jī))創(chuàng)建橋接網(wǎng)絡(luò)。首先查看主機(jī)網(wǎng)卡默認(rèn)配置
root@kvm-host:~# cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens33:
addresses:
- 192.168.93.9/24
gateway4: 192.168.93.2
nameservers:
addresses:
- 114.114.114.114
- 8.8.8.8
search: []
version: 2
修改后如下,清除主機(jī)網(wǎng)卡ens33上的IP信息,轉(zhuǎn)移到br0網(wǎng)橋上
$ sudo nano /etc/netplan/00-installer-config.yaml
network:
ethernets:
ens33:
dhcp4: false
dhcp6: false
bridges:
br0:
interfaces: [ ens33 ]
dhcp4: false
dhcp6: false
addresses: [192.168.93.9/24]
macaddress: 00:0c:29:15:cb:54
routes:
- to: default
via: 192.168.93.2
nameservers:
addresses: ["223.5.5.5","223.6.6.6"]
parameters:
stp: false
forward-delay: 4
version: 2
請(qǐng)注意:需要將 br0
的 macaddress
設(shè)置為在上面找到的 ens33
的 MAC 地址。
測(cè)試網(wǎng)卡配置是否正確
netplan generate
確認(rèn)檢查無報(bào)錯(cuò),使用 Netplan 應(yīng)用更改
netplan apply
使用 ip addr 命令查看更改,如下所示:
root@kvm-host:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
link/ether 00:0c:29:15:cb:54 brd ff:ff:ff:ff:ff:ff
altname enp2s1
6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:15:cb:54 brd ff:ff:ff:ff:ff:ff
inet 192.168.93.9/24 brd 192.168.93.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe15:cb54/64 scope link
valid_lft forever preferred_lft forever
root@kvm-host:~#
查看netplan創(chuàng)建的網(wǎng)橋及網(wǎng)橋上的接口
root@kvm-host:~# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c2915cb54 no ens33
添加網(wǎng)橋到KVM
使用以下內(nèi)容創(chuàng)建文件 br0.xml
:
mkdir -p /etc/kvm/
cat >/etc/kvm/host-bridge.xml<<EOF
<network>
<name>host-bridge</name>
<forward mode="bridge"/>
<bridge name="br0"/>
</network>
EOF
例如,該文件可能位于Linux 用戶主目錄中。如果在 root 下,它可能是/root/br0.xml
-
name
– 虛擬網(wǎng)絡(luò)的簡稱。它可以是任何字母數(shù)字字符串 -
forward
– 表示虛擬網(wǎng)絡(luò)必須連接到物理網(wǎng)絡(luò)。 mode=“bridge” 在我們的例子中意味著正在連接到在 libvirt 之外創(chuàng)建的網(wǎng)橋。 -
bridge
– 確定要連接的網(wǎng)橋的名稱。
virsh net-define /etc/kvm/host-bridge.xml
virsh net-start host-bridge
virsh net-autostart host-bridge
查看新增的網(wǎng)絡(luò)
root@kvm-host:~# virsh net-list
Name State Autostart Persistent
------------------------------------------------
host-bridge active yes yes
現(xiàn)在,安裝 KVM 后,您可以繼續(xù)在 KVM 上創(chuàng)建 Ubuntu 22.04 虛擬機(jī)。
測(cè)試創(chuàng)建虛擬機(jī)
新建虛擬機(jī)ubuntu02,創(chuàng)建存儲(chǔ)路徑并復(fù)制鏡像模板
mkdir -p /var/lib/libvirt/images/ubuntu02
cp /var/lib/libvirt/images/templates/jammy-server-cloudimg-amd64.img /var/lib/libvirt/images/ubuntu02/
運(yùn)行同樣命令創(chuàng)建虛擬機(jī)
virt-install \
--name ubuntu02 \
--vcpus 1 \
--memory 2048 \
--disk path=/var/lib/libvirt/images/ubuntu02/jammy-server-cloudimg-amd64.img \
--os-variant ubuntu22.04 \
--import \
--autostart \
--noautoconsole
連接到ubuntu02虛擬機(jī)
root@kvm-host:~# virsh console ubuntu02
確認(rèn)虛擬機(jī)網(wǎng)卡名稱為enp1s0
,虛擬機(jī)中創(chuàng)建網(wǎng)卡配置文件,注意這次配置的虛擬機(jī)IP與主機(jī)同一個(gè)網(wǎng)段。
cat >/etc/netplan/00-installer-config.yaml<<EOF
network:
version: 2
ethernets:
enp1s0:
dhcp4: false
addresses:
- 192.168.93.100/24
nameservers:
addresses:
- 223.5.5.5
- 223.6.6.6
routes:
- to: default
via: 192.168.93.2
EOF
啟用網(wǎng)卡配置
root@ubuntu:~# chmod 600 /etc/netplan/00-installer-config.yaml
root@ubuntu:~# netplan apply
查看虛擬機(jī)網(wǎng)口狀態(tài)為UP,并且配置了IP地址:
root@ubuntu:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:d0:fd:76 brd ff:ff:ff:ff:ff:ff
inet 192.168.93.100/24 brd 192.168.93.255 scope global enp1s0
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fed0:fd76/64 scope link
valid_lft forever preferred_lft forever
測(cè)試虛擬機(jī)訪問外部網(wǎng)絡(luò)
root@ubuntu:~# ping www.baidu.com -c 4
PING www.a.shifen.com (183.2.172.185) 56(84) bytes of data.
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=1 ttl=128 time=7.60 ms
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=2 ttl=128 time=7.66 ms
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=3 ttl=128 time=7.32 ms
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=4 ttl=128 time=7.35 ms
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 7.321/7.484/7.662/0.148 ms
root@ubuntu:~#
測(cè)試外網(wǎng)訪問虛擬機(jī)
C:\Users\pc>ping 192.168.93.100
正在 Ping 192.168.93.100 具有 32 字節(jié)的數(shù)據(jù):
來自 192.168.93.100 的回復(fù): 字節(jié)=32 時(shí)間=1ms TTL=64
來自 192.168.93.100 的回復(fù): 字節(jié)=32 時(shí)間<1ms TTL=64
來自 192.168.93.100 的回復(fù): 字節(jié)=32 時(shí)間<1ms TTL=64
來自 192.168.93.100 的回復(fù): 字節(jié)=32 時(shí)間<1ms TTL=64
192.168.93.100 的 Ping 統(tǒng)計(jì)信息:
數(shù)據(jù)包: 已發(fā)送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計(jì)時(shí)間(以毫秒為單位):
最短 = 0ms,最長 = 1ms,平均 = 0ms
C:\Users\pc>
配置SSH遠(yuǎn)程登錄,修改以下兩項(xiàng)
# vim /etc/ssh/sshd_config
PermitRootLogin yes
PasswordAuthentication yes
刪除其他ssh配置,為root用戶設(shè)置密碼。
# rm -rf /etc/ssh/sshd_config.d/60-cloudimg-settings.conf
# ssh-keygen -A
# passwd root
重啟sshd服務(wù)
systemctl restart sshd
測(cè)試通過SSH連接到虛擬機(jī)文章來源:http://www.zghlxwxcb.cn/news/detail-861707.html
C:\Users\pc>ssh root@192.168.93.100
root@192.168.93.100's password:
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-100-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
System information as of Fri Mar 15 12:28:35 UTC 2024
System load: 0.0048828125 Processes: 116
Usage of /: 81.7% of 1.96GB Users logged in: 1
Memory usage: 9% IPv4 address for enp1s0: 192.168.93.100
Swap usage: 0%
Expanded Security Maintenance for Applications is not enabled.
1 update can be applied immediately.
1 of these updates is a standard security update.
To see these additional updates run: apt list --upgradable
Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
Last login: Fri Mar 15 12:28:35 2024 from 192.168.93.1
root@ubuntu:~#
參考:https://docs.nvidia.com/dgx/bp-dgx/dgx2-kvm-networking.html文章來源地址http://www.zghlxwxcb.cn/news/detail-861707.html
到了這里,關(guān)于Ubuntu 安裝 KVM 虛擬化的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!