Skip to main content

基于 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

Reference