背景

  在自己的nas上安装了纯debian系统,向拥有媲美pve的虚拟机管理流程但同时又不想重装一遍系统,故而经过一番搜索,发现目前主流的linux系虚拟机管理基本都是kvm+qemu。但这同时带来一个新的问题,我目前使用的是非gui版本的系统,同时由于mobaxterm的卡顿只能忍痛割爱其X-server功能转为termius,因此我并不能使用传统的vir-manager对虚拟机进行创建、管理等等。在搜索后发现同样由redhat出品的cockpitwebui管理端,借助websocket等技术,完美实现了对物理机的闭环管理以及虚拟机的管理。

软件介绍

  • kvm
  • qemu
  • cockpit

操作步骤

得益于kvm等等一干软件的开发团队以及巨大用户量,上述三个软件的安装非常简单,yum/apt/...等主流发行版的包管理器均内置了其完整的安装包;这里以debian为例

安装kvm+qemu

Step-1:检查设备是都支持虚拟化技术

  • 执行
    • 当输出大于0则支持
      egrep -c '(vmx|svm)' /proc/cpuinfo
    
  • 执行kvm-ok
    • 当输出如下则支持内核级虚拟化,若找不到命令则安装apt install cpu-checker
      INFO: /dev/kvm exists
      KVM acceleration can be used
    

Step-2:安装KVM+qemu

  • 执行下列命令
apt install qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager
  • 软件概述
    • **qemu:**允许进行硬件级虚拟化
    • qemu-kvm:kvm主程序,现已经更名为qemu-system-x86
    • **libvritd-daemon:**虚拟化守护程序
    • **bridge-utils:**虚拟网桥支持
    • **virt-manager:**基于x-server的虚拟机gui管理(本过程中非必须,但是最好装)

Step-3:修改qemu运行权限,避免后期的虚拟机权限问题

  • 使用你喜欢的编辑器编辑/etc/libvirt/qemu.conf
  • 取消下列字段的注释
# Some examples of valid values are:
#
#       user = "qemu"   # A user named "qemu"
#       user = "+0"     # Super user (uid=0)
#       user = "100"    # A user named "100" or a user with uid=100
#
user = "root"

# The group for QEMU processes run by the system instance. It can be
# specified in a similar way to user.
group = "root"
  • 重启虚拟化服务systemctl restart libvirtd

Step-4:创建虚拟网桥,方便后面创建的虚拟机直通路由,而非走宿主机的NAT

  • 查看系统内网络ip a
  • 确保没有br0,以及记录当前的物理网卡(拿到真的路由分配地址的那个)是哪个,这里假定enp2s0
  • 使用你喜欢的编辑器编辑/etc/network/interfaces
  • 添加下列字段
# The kvm bridge
auto br0
iface br0 inet dhcp
bridge_ports enp2s0
bridge_stp off
bridge_fd 0
  • 重启网络服务,这里会导致ssh断链、ip地址重新获取等意外事件,不要惊慌

Step-5:安装cockpit

  • 执行apt install cockpit
  • 为了让cockpit支持虚拟机管理,需要安装插件apt install cockpit-machines
  • 启动cockpit并开启开机自启systemctl start cockpit && systemctl enable cockpit

Step-6:访问cockpit

  • cockpit默认监听https://<host-ip>:9090
  • 使用系统内任意账户登录

Step-7:享受现代科技

  • cockpit提供了非常多可视化的linux设备管理,并且易于使用
  • 后面如果有机会或者有难踩的坑的话或许会新开一篇单独对cockpit的虚拟机管理进行介绍