KVM 全称 "Kernel-based Virtual Machine", 即基于内核的虚拟机, 在 Linux 内启用 kvm 需要硬件, 内核和软件 (qemu) 支持, 这篇文章教你如何配置并安装 KVM 虚拟机.
检查硬件和系统的兼容性
检查硬件虚拟化: LC_ALL=C lscpu | grep Virtualization
这行代码其中 LC_ALL=C 为设置输出语言用, lscpu 输出 CPU 信息, 在输出的 CPU 信息里面查找 "Virtualization"(虚拟化), 输出结果如果有 "AMD-V"(AMD CPU) 或者 "VT-X"(Intel CPU), 则说明你的电脑硬件支持并且已开启虚拟化, 可以下一步
那如果没有显示以上两种呢, 就进入 BIOS(或者 UEFI)找到虚拟化 / virtualization/VT-X/AMD-V 一般来说是这四个名字里面任意一个, 当然, 如果你的班子 BIOS 里面是 virtualization 里面有 vt-x 和 vt-d 两个的话, 就两个都开. 然后, 理论上你就能继续了, 除非, 你的硬件 根本不支持虚拟化(除非厂家手动阉割, 现在一般不会有这问题, 博主的本本一开始买来 BIOS 里面就是没有 AMD-V 的, 后来就是靠 BIOS 更新加上的).
举个例子: 博主 Linux 上的显示是: Virtualization: AMD-V 则证明该电脑支持 AMD 的虚拟化技术
检查系统是否支持 lsmod | grep kvm
这行代码告诉你系统是否加载了 KVM 有关模块, 如果有输出相关模块, 请看 kvm 配置, 否则接着看 kvm 的安装(kvm 基于内核, 需要内核模块才能正常工作)
KVM 安装过程
KVM 的依赖项除了内核和内核模块主要有这些: firewalld(防火墙),dnsmasq,ebtables(网络方面),libvirt(虚拟化接口),qemu(虚拟机本体). 另外, 使用 bridge-utils 可以设置网卡桥接.
知道了需要的包, 安装就好了.
如果你的系统是 CentOS(RHEL/Fedora 同理)你完全可以在安装的时候就选择虚拟化服务器的, 如果要手动安装, 那么需要跑这样一条命令(CENTOS8/fedora 可能需要把 yum 替换为 dnf):
sudo yum install -y virt-* libvirt bridge-utils qemu qemu-img qemu-kvm, 需不需要操作 selinux 就看着办, 如果因为 selinux 的原因导致无法开机, 那就改, 没问题就不需要动了(博主不是专业的运维. 平时主玩 ARCH, 对这块不是特别了解)
玩 Ubuntu 系列 (Ubuntu/deepin/mate/kali......) 的同学安装 kvm 的话也类似, 不过这包名可能和上面有所不同, 代码如下:
sudo apt install qemu qemu-kvm libvirt-bin bridge-utils
Arch 用户
sudo pacman -S qemu libvirt ebtables dnsmasq firewalld bridge-utils
安装完软件包, 接下来开启防火墙和 libvirt 守护进程
sudo systemctl start firewalld && sudo systemctl start libvirtd 需不需要 enable 看你们自己的需要, 如果是虚拟化母机或者经常用到虚拟机的话, 那么建议 enable, 开机自动把虚拟化服务启动.
讲完了基础安装工作, 剩下的就是你如何控制 kvm 的事情了. 图形化 / 命令行
图形化控制 KVM 一般使用 virt-manager(中文名: 虚拟系统管理器), 剩下的就是图形化设置的工作了.
嗯, 没错, 就是这个东西, 创建虚拟机的话, 只需要点创建虚拟机按钮就好了(就是图上那个亮着的按钮).
然后, 连接这里选择 QEMU/KVM, 就是使用 KVM 虚拟机创建.
番外内容:[有的同学可能先装了 libvirt 和 virt-manager 后装 qemu 的, 就会出现没有连接或者连接里面没有 KVM 的, 那么, 在确保 kvm 服务开启的状态下, 点击文件, 添加连接.
![](https://img2020.cnblogs.com/blog/2045563/202006/2045563-20200625211926555-1690702968.png)
出来这个页面, 这里不用动, 直接确定, 不出意外, 你就能导入 KVM 的连接了, 需要知道的是, 如果你之前使用 virsh 或者 qemu 命令行管理的话, 你能够在这里导入 kvm 连接, 但是, 并不能接管原来创建的虚拟机.]
至于以何种方式创建虚拟机, 就看你需要, 不过一般使用第一项使用 ISO 安装系统, 如果你之前有 kvm/qemu 的磁盘镜像(qcow2), 你也可以用第四个(导入现有磁盘镜像).
这里选择需要使用的 ISO 镜像文件.
点击浏览弹出这个窗口
然后本地浏览选择镜像
选择 CPU / 运行内存资源
然后创建虚拟硬盘, 这里如果你有现成的 qcow2/row 镜像, 你也可以直接拿来用.
番外内容:[需要注意这点: 通过 libvirt 创建 qemu 镜像的大小是固定的, 就是分多少它马上就吃多少的, 不像 vmware 这样会动态扩展, 当然, 也可以实现, 需要参考下面使用代码创建虚拟机]
然后没有什么问题了, 就直接点完成, 开始安装系统, 安装系统过程, 这里就不赘述了, 至于基础的管理工作, 进去虚拟机的窗口, 点击那个管理按钮, 会进入类似于 vmware 虚拟机设置的页面, 在里面可以进行操作(部分操作需要关机).
下面是代码创建虚拟机的介绍(高级玩法可能需要手动修改 xml 文件, 这里就暂时不介绍了)
首先, 你需要使用 virsh 这个命令来管理虚拟机, 先创建存储卷(磁盘镜像)
virsh vol-create-as poolname volumename 10GiB --format aw|bochs|raw|qcow|qcow2|vmdk
一般 QEMU/KVM 支持的镜像为 qcow/qcow2/row
或者使用 qemu-img 来创建镜像
敲黑板: qemu-img 除了可以创建镜像以外, 也和 virsh 一样支持镜像修改, 另外, qemu-img 创建镜像可以选择预分配模式, 从而解决上面使用图形化镜像过大的问题.
qemu-img create -f 'qcow2' -o preallocation=off /home/udream/test.qcow2 10G
这样就可以创建一个 10G 大小的, 关闭预分配的 qcow2 镜像, 这个镜像文件没安装系统之前的大小是 192.2Kb, 默认直接创建的大小为 10G
然后, 有了磁盘镜像, 就可以创建虚拟机了
举例代码如下:
- virt-install \
- - --name test \
- --memory 4096 \
- --vcpus=2,maxvcpus=4 \
- --CPU host \
- --cdrom $HOME/test.iso \
- --disk /home/udream/test.qcow2,size=10GiB \
- --network user \
- --virt-type kvm
这段代码指定了虚拟机名字 test, 内存 1g,CPU 最少 2 核最大 4 核, 安装盘位置:$HOME/test.iso, 盘的大小, 网络类型, 虚拟化接口 KVM, 使用之前创建的虚拟盘 /home/udream/test.qcow2 大小 10G
创建完成虚拟机以后使用 ```virsh start 虚拟机名字 ``` 启动虚拟机
关闭虚拟机把 start 改为 shutdown, 强制关机为 destory, 重启是 reboot
管理虚拟网络, 使用 virsh.NET - 后面跟操作(start/destory/create......)
当然, 还有 pool 设置存储池, vol 设置存储卷, snapshot 设置快照, 具体的, 因为字数原因(怕某些同学太长不看), 就不一个个码了, 你可以敲 virsh --help 查看具体帮助信息, 不过. 这几个最常用的也就是 create/start/stop/destory/list 了,
这里举个例子, 启动虚拟网络:```virsh net-start 虚拟网络名 ``` 创建存储池 ```virsh pool-create XML 描述文件名 ```, 其他的命令可以按照这样的方式操作, 下一篇是 virsh 命令的具体玩 (配) 法(制)介绍.
这次就讲到这里了, 本次内容原创纯手码, 部分命令为了确认正确性, 参考了 arch wiki, 测试环境为 Arch Linux 5.7.4-arch1-1 桌面环境 kde plasma.
来源: https://www.cnblogs.com/udream/p/13193187.html