虚拟化技术之 kvm (一)- virsh

  • kvm的命令行工具virsh;

1.概述

  virsh工具功能非常丰富,它可以全生命周期的管理kvm;比如创建虚拟机,查看虚拟机,动态热插拔硬盘,给虚拟机做快照,迁移、启动、停止、挂起、暂停、删除虚拟机等等操作。
虚拟化技术之 kvm (一)- virsh

  上图主要描述了kvm的主要工具栈,从大的类别可以分为libvirt和qemu这两大类,其中libvirt中分virtual machine manager和virsh。

  • virtual machine manager中的virt-manager是基于图形界面的管理,其他都是可以在命令行直接使用命令来管理虚拟机;
  • virsh是基于终端命令行管理;两者都是通过libvirt连接至libvirtd进行管理;而对于qemu来说,它管理虚拟机上直接调用kvm内核中模块的API进行管理;

2.virsh

  virsh 是​用​来​管​理​客​户​端​及​其​管​理​程​序​的​命​令​行​界​面​工​具​。​

  virsh 工​具​是​构​建​在​ libvirt 管​理​ API 上​,可​作​为​ xm 命​令​和​图​形​客​户​端​管​理​程​序​(virt-manager)的​替​代​工​具​使​用​。​非​特​权​用​户​只​能​以​只​读​模​式​使​用​ virsh。​您​可​使​用​ virsh 为​客​户​端​机​器​执​行​脚​本​。​

3.安装和配置 kvm 环境

3.1.检查宿主机处理器是否支持虚拟化

[root@kvm ~]# egrep -o 'vmx | svm' /proc/cpuinfo | wc -l

  如果有数据,说明 CPU 支持虚拟化(现在的大部分 CPU 都支持虚拟化,除非你的 CPU 真的太老了),如果没有,则需要开启,如果是物理机则在 BIOS 界面开启这个功能,如果是在虚拟机上,则在虚拟机上开启 CPU 的嵌套虚拟化功能。

3.2.工具安装

sudo apt install qemu-kvm libvirt virt-install virt-manager bridge-utils qemu-img

#qemu-kvm:核心软件包,实现虚拟化
#libvirt:核心软件包,管理KVM的工具,类似VMware也是管理虚拟机的工具
#virt-install:KVM虚拟机命令行管理工具
#virt-manager:KVM虚拟机图形化管理工具,可不装
#bridge-utils:实现网卡桥接的工具

3.3.设置相关网络

  • 创建/etc/systemd/network/br0.netdev
[NetDev]
Name=br0
Kind=bridge
  • 创建/etc/systemd/network/br0.network
[Match]
Name=br0
[Network]
Address=10.0.0.3/16
Gateway=10.0.0.1
DNS=10.0.0.1
  • 创建/etc/systemd/network/uplink.network
[Match]
Name=eno1

[Network]
Bridge=br0

查看systemctl status systemd-networkd状态,然后执行systemctl restart systemd-networkd。

$ brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.429f5774d8b6       no              eno1

3.3.安装虚拟机

  • 创建虚拟机镜像
//关于虚拟机镜像,有很多种类型:raw、qcow2、vmdk等,推荐使用 qcow2 格式的镜像,因为 qcow2 格式的镜像支持快照,使用的比较广泛。
sudo mkdir /data/kvm
sudo qemu-img create -f qcow2 -o preallocation=metadata /data/kvm/liwei01.qcow2 50G
  • 执行虚拟机的安装

  通过 iso 镜像实现本地安装,支持 vnc ,无文本控制台。

sudo virt-install --connect qemu:///system  --virt-type kvm  --vcpus=1 --name ubuntu16  --ram 512  --cdrom ubuntu-16.04.6-desktop-amd64.iso  --disk path=/var/lib/libvirt/images/ubuntu16.img,size=50,format=qcow2,bus=virtio  --network bridge=br0  --os-type=linux 

refer to

  • https://libvirt.org/
  • https://wiki.archlinux.org/index.php/Systemd-networkd_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
  • https://huataihuang.gitbooks.io/cloud-atlas/content/virtual/
  • https://unix.stackexchange.com/questions/411936/configuring-a-bridge-interface-with-systemd-networkd
上一篇:「libvirt」- 离线迁移 @20210301


下一篇:图形化方式和命令行方式创建KVM虚拟机