基于 Debian 10.10 创建 KVM 虚拟机
前言
基于内核的虚拟机(英语:Kernel-based Virtual Machine,缩写为KVM)是一种用于Linux内核中的虚拟化基础设施。
这已经是我第 4 次在 Linux 发行版上面安装虚拟化环境了,随手写点笔记记录一下步骤。本文基于 Debian Wiki 进行操作。
在 Debian 安装 KVM
根据 Debian KVM Wiki 执行安装命令
# apt install --no-install-recommends qemu-system libvirt-clients libvirt-daemon-system
一些问题与解决方案
buster-backports
E: The value 'buster-backports' is invalid for APT::Default-Release as such a release is not available in the sources
根据 Debian SourceList Wiki 编辑/etc/apt/sources.list
加入non-free
关键字。
deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free
# buster-updates, previously known as 'volatile'
deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
deb http://deb.debian.org/debian buster-backports main contrib non-free
deb-src http://deb.debian.org/debian buster-backports main contrib non-free
dnsmasq
Cannot check dnsmasq binary /usr/sbin/dnsmasq: No such file or directory
手动执行安装命令
apt install dnsmasq-base
设置桥接网络
安装bridge-utils
apt install bridge-utils
添加 br0 桥接网络
brctl addbr br0
使用brctl
工具把桥接网络跟本地网络建立起连接,这里我的本地网卡名称为eno1
brctl addif br0 eno1
执行到完这一步你应该发现网络断了,这时候把你的服务器接上显示器和键盘继续后面的操作。
编辑/etc/network/interfaces
文件配置,这里我使用的是静态IP方式
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eno1
iface eno1 inet manual
auto br0
iface br0 inet static
bridge_ports eno1
address 192.168.31.18
broadcast 192.168.31.255
netmask 255.255.255.0
gateway 192.168.31.1
编辑完毕后执行命令启动 br0
网络。
ifup br0
接下来配置 libvirt
使用的网桥,首先删除默认的网络配置
virsh net-undefine default
然后创建 host-bridge.xml
文件
<network>
<name>host-bridge</name>
<forward mode="bridge"/>
<bridge name="br0"/>
</network>
将网桥配置应用于 libvirt
中
virsh net-define host-bridge.xml
virsh net-start host-bridge
virsh net-autostart host-bridge
存储设置
配置自定义路径存储池,首先删除默认的存储池配置
virsh pool-destroy default // 删除存储池
virsh pool-undefine default
mkdir -p /data/vmfs // 创建存储池文件夹
virsh pool-define-as vmfspool --type dir --target /data/vmfs // 定义存储池
virsh pool-build vmfspool // 创建存储池
virsh pool-autostart vmfspool // 设置自动启动
virsh pool-start vmfspool // 启动存储池
创建 VM
使用 virt-install
创建 VM
virt-install --name Debian --ram=8192 --disk path=/data/vmfs/debian.qcow2,format=qcow2 --vcpus 4 --cdrom /workspace/kvm/ISO/debian-10.10.0-amd64-netinst.iso --os-type linux --os-variant debian10 --graphics vnc,listen=0.0.0.0,password=1234 --accelerate --network bridge=br0,model=virtio