一、实践环境
1.1 硬件
BIOS设置
一般地,开机进入BISO设置界面,从Advance选项入口开启VT-D选项支持虚拟化功能。
检查VT是否在BIOS启用
sudo apt install cpu-checker
kvm-ok
## output
INFO: /dev/kvm exists
KVM acceleration can be used
1.2 系统
ubuntu版本
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
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"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
验证CPU是否支持虚拟化
grep -Eoc '(vmx|svm)' /proc/cpuinfo
## output
32 ## 大于0的数值
二、安装组件
2.1 安装libvirt
apt -y install libvirt-dev
apt -y install libvirt-daemon-system
apt -y install libvirt-clients
apt -y install virtinst ## virt-install工具
apt -y install virt-manager
2.2 安装kvm+qemu
apt -y install qemu-kvm
2.3 安装网桥工具
apt -y install bridge-utils
2.4 检查kvm模块
验证kvm,输出kvm_intel、kvm两列 表示安装成功
lsmod | grep kvm
三、网络配置
3.1 配置网桥
cat /etc/netplan/01-network-manager-all.yaml,把网桥br0绑定到网卡enp0s31f6。
# Let NetworkManager manage all devices on this system
network:
version: 2
#renderer: NetworkManager
ethernets:
enp0s31f6:
dhcp4: false
dhcp6: false
bridges:
br0:
addresses: [10.159.10.9/23]
gateway4: 10.159.11.254
nameservers:
addresses: [202.101.172.35, 8.8.8.8]
search: [msnode]
interfaces: [enp0s31f6]
3.2 重启网络
netplan apply
systemctl restart network-manager
网络变化:ip地址被绑定到br0网桥上,同时多了一个virbr0网桥(用于创建虚拟机时指定的网桥,通过DHCP动态获取虚拟机IP地址)
ip addr
## output
enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
link/ether 04:42:1a:df:d4:f9 brd ff:ff:ff:ff:ff:ff
virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 52:54:00:26:c2:de 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
virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:26:c2:de brd ff:ff:ff:ff:ff:ff
br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 04:42:1a:df:d4:f9 brd ff:ff:ff:ff:ff:ff
inet 10.159.10.9/23 brd 10.159.11.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::642:1aff:fedf:d4f9/64 scope link
valid_lft forever preferred_lft forever
3.3 重启libvirtd
systemctl restart libvirtd
四、启动虚拟机
工作目录是/data
4.1 cirros镜像
4.1.1 下载
4.1.2 安装
virt-install --connect=qemu:///system --name=cirros --ram=512 --vcpus=1 \
--disk path=cirros-0.6.2-x86_64-disk.img,format=qcow2 --import --network network:default --vnc
4.1.3 查看
virsh list
virsh vncdisplay cirros ## 查看VNC端口
## output
:0
4.1.4 登录系统
a. VNC方式
默认账号(cirros/gocubsgo
)
b. ssh方式
ssh cirros@192.168.122.202
4.2 centos7镜像
4.2.1 下载
保存到iso
目录
4.2.3 格式化硬盘
apt-get install qemu-utils
## 修改qemu的权限为root:root
cat >> /etc/libvirt/qemu.conf <<EOF
user=root
group=root
EOF
cd kvm/image
qemu-img create -f qcow2 ./centos7.qcow2 20G
4.2.2 安装
网桥参数为virbr0
而非br0
,启动过程中注意选择磁盘设置与root账号设置,其他仅为测试不重要。
virt-install \
--name=centos1 \
--memory=1024,maxmemory=8096 \
--vcpus=4,maxvcpus=8 \
--os-type=linux \
--os-variant=rhel7 \
--location=/data/iso/CentOS-7-x86_64-Minimal-2009.iso \
--disk path=/data/kvm/image/centos7.qcow2,size=50 \
--bridge=virbr0 \
--graphics=none \
--console=pty,target_type=serial \
--extra-args="console=tty0 console=ttyS0"
--vnc
4.2.3 查看
virsh list
virsh vncdisplay centos1 ## 查看VNC端口
## output
:1
xml配置
virsh dumpxml centos1
## output 与VNC有关
<graphics type='vnc' port='5901' autoport='yes' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
4.2.4 登录系统
a. VNC方式
VNC Server为 <ip>:<vncport>
格式
b. ssh方式
ssh root@192.168.122.230
c. console方式
virsh list
## output
Id Name State
-------------------------
2 cirros running
11 centos1 running
virsh console 11
## output
Connected to domain centos1
Escape character is ^]
CentOS Linux 7 (Core)
Kernel 3.10.0-1160.el7.x86_64 on an x86_64
localhost login: root
Password:
参考链接