文章目录
一、安装
/*
centos:
yum install qemu-kvm qemu-kvm-tools libvirt libvirt-client virt-manager virt-install
*/
root@ubuntu18:~#apt install qemu-kvm virt-manager libvirt-daemon-system
root@ubuntu18:~# kvm-ok
KVM acceleration can be used
root@ubuntu18:~# ip a //是否有虚拟桥接网络
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:ab:34:40 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.10/24 brd 192.168.10.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feab:3440/64 scope link
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:bb:b2:87 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:bb:b2:87 brd ff:ff:ff:ff:ff:ff
root@ubuntu18:~# grep "192.168.122.1" /etc/libvirt/ -R
/etc/libvirt/qemu/networks/default.xml: <ip address='192.168.122.1' netmask='255.255.255.0'>
/etc/libvirt/qemu/networks/autostart/default.xml: <ip address='192.168.122.1' netmask='255.255.255.0'>
二、安装一台centos7.8
2.1、默认NAT网络
# 提前将centos7.8镜像上传过去
root@ubuntu18:~# ll /data/iso/
total 10033164
drwxr-xr-x 2 root root 4096 Nov 9 19:34 ./
drwxr-xr-x 4 root root 4096 Nov 9 19:33 ../
-rw-r--r-- 1 root root 10273947648 Nov 9 19:37 CentOS-7-x86_64-Everything-2003.iso
root@ubuntu18:~# ll /var/lib/libvirt/images/
total 8
drwx--x--x 2 root root 4096 Feb 19 2021 ./
drwxr-xr-x 7 root root 4096 Nov 9 19:07 ../
#创建一个格式为raw大小为10G的稀疏格式磁盘
root@ubuntu18:~# qemu-img create -f qcow2 /var/lib/libvirt/images/centos.qcow2 10G
#创建一个格式为raw大小为10G的裸磁盘
root@ubuntu18:~# qemu-img create -f raw /var/lib/libvirt/images/centos.raw 10G
root@ubuntu18:~# ll -h /var/lib/libvirt/images/
total 204K
drwx--x--x 2 root root 4.0K Nov 9 19:18 ./
drwxr-xr-x 7 root root 4.0K Nov 9 19:07 ../
-rw-r--r-- 1 root root 193K Nov 9 19:17 centos.qcow2
-rw-r--r-- 1 root root 10G Nov 9 19:18 centos.raw
#创建默认网络虚拟机
virt-install \
--virt-type kvm \
--name centos7.8 \
--ram 1024 \
--vcpus 2 \
--cdrom=/data/iso/CentOS-7-x86_64-Everything-2003.iso \
--disk path=/var/lib/libvirt/images/centos.qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole
接下来开始进行安装
2.2、桥接网络
//宿主机设置桥接网卡,桥接网卡为br0
root@ubuntu18:/etc/libvirt/qemu# vim /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
dhcp6: no
bridges:
br0:
dhcp4: no
dhcp6: no
addresses: [192.168.10.10/24]
gateway4: 192.168.10.2
nameservers:
addresses: [223.5.5.5, 180.76.76.76]
interfaces:
- ens33
//centos:
# vim ifcfg-br0
TYPE=Bridge
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=172.18.200.101
NETMASK=255.255.0.0
GATEWAY=172.18.0.1
DNS1=172.18.0.1
# vim ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
//安装的策略
virt-install \
--virt-type kvm \
--name centos7-bridge \
--ram 1024 \
--vcpus 1 \
--cdrom=/data/iso/CentOS-7-x86_64-Everything-2003.iso \
--disk path=/var/lib/libvirt/images/centos3.qcow2 \
--network bridge=br0 \ //使用刚刚创建的br0
--graphics vnc,listen=0.0.0.0 \
--noautoconsole
三、使用
创建完毕,5900端口关闭,所以第一次需要手动开启虚拟机,然后就可以在使用5900去操作
3.1、virsh常用命令
virsh --help #查看命令帮忙
virsh list #显示正在运行的虚拟机
virsh list --all #显示所有的虚拟机
virsh start vm-node1 #启动vm-node1虚拟机
virsh shutdown vm-node1 #关闭vm-node1虚拟机
virsh destroy vm-node1 #虚拟机vm-node1强制断电
virsh suspend vm-node1 #挂起vm-node1虚拟机
virsh resume vm-node1 #恢复挂起的虚拟机
virsh undefine vm-node1 #删除虚拟机,慎用
virsh dominfo vm-node1 #查看虚拟机的配置信息
virsh domiflist #查看网卡配置信息
virsh domblklist vm-node1 #查看该虚拟机的磁盘位置
virsh edit vm-node1 #修改vm-node1的xml配置文件
virsh dumpxml vm-node1 #查看KVM虚拟机当前配置
virsh dumpxml vm-node1 > vm-node1.bak.xml #备份vm-node1虚拟机的xml文件,原文件默认路径/etc/libvirt/qemu/vm-node1.xml
virsh autostart vm-node1 #KVM物理机开机自启动虚拟机,配置后会在此目录生一个软连接/etc/libvirt/qemu/autostart/vm-node1.xml
virsh autostart --disable vm-node1 #取消开机自启动
root@ubuntu18:~# virsh list --all
Id Name State
----------------------------------------------------
1 centos7.8 running
root@ubuntu18:~# virsh start centos7.8
Domain centos7.8 started
四、快速创建虚拟机
使用copy的方式直接拷贝一个新的虚拟机
root@ubuntu18:~# cd /var/lib/libvirt/images/
root@ubuntu18:/var/lib/libvirt/images# ls
centos.qcow2 centos.raw //之前使用centos.qcow2创建的一个虚拟机
root@ubuntu18:/var/lib/libvirt/images# cp centos.qcow2 centos2.qcow2
/*
virt-install \
--virt-type kvm \
--name centos2 \
--ram 1024 \
--vcpus 1 \
--cdrom=/data/iso/CentOS-7-x86_64-Everything-2003.iso \
--disk path=/var/lib/libvirt/images/centos2.qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole
*/
root@ubuntu18:/var/lib/libvirt/images# virt-install \
> --virt-type kvm \
> --name centos2 \
> --ram 1024 \
> --vcpus 1 \
> --cdrom=/data/iso/CentOS-7-x86_64-Everything-2003.iso \
> --disk path=/var/lib/libvirt/images/centos2.qcow2 \
> --network network=default \
> --graphics vnc,listen=0.0.0.0 \
> --noautoconsole
Starting install...
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
//然后等待他到安装的时候,不要安装。直接宿主机关机,然后开机就直接可以用了。
root@ubuntu18:/etc/libvirt/qemu# virsh list
Id Name State
----------------------------------------------------
1 centos2 running
root@ubuntu18:/etc/libvirt/qemu# virsh shutdown centos2
Domain centos2 is being shutdown
root@ubuntu18:/etc/libvirt/qemu# virsh start centos2
Domain centos2 started
五、修改虚拟机配置
root@ubuntu18:/etc/libvirt/qemu# cd /etc/libvirt/qemu/
root@ubuntu18:/etc/libvirt/qemu# ls
centos2.xml centos7.8.xml networks
//直接修改
root@ubuntu18:/etc/libvirt/qemu# vim centos2.xml
里面找到虚拟修改的配置,然后更改
//官方建议以下更改方式
root@ubuntu18:/etc/libvirt/qemu# virsh edit centos2
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
Choose 1-4 [1]: 2
Domain centos2 XML configuration not changed.
root@ubuntu18:/etc/libvirt/qemu# virsh define centos2.xml
Domain centos2 defined from centos2.xml
六、快照的创建与恢复
6.1、创建
root@ubuntu18:~# virsh list --all
Id Name State
----------------------------------------------------
- centos2 shut off
- centos7-bridge shut off
- centos7.8 shut off
root@ubuntu18:~# virsh snapshot-create-as centos7-bridge init-centos7-bridge
Domain snapshot init-centos7-bridge created
root@ubuntu18:~# virsh snapshot-list centos7-bridge
Name Creation Time State
------------------------------------------------------------
init-centos7-bridge 2021-11-11 13:18:44 +0800 shutoff
root@ubuntu18:~# virsh snapshot-info centos7-bridge init-centos7-bridge
Name: init-centos7-bridge
Domain: centos7-bridge
Current: yes
State: shutoff
Location: internal
Parent: -
Children: 0
Descendants: 0
Metadata: yes
6.2、恢复
root@ubuntu18:~# virsh snapshot-revert centos7-bridge init-centos7-bridge
七、虚拟机迁移
需求:从一台机器迁移到另一台机器。(冷迁移,因为热迁移需要nfs共享qcow2磁盘,硬件不好严重影响性能)
//就是拷贝两个文件到另一台机器
scp /etc/libvirt/qemu/rocky8-template.xml 10.0.0.101:/etc/libvirt/qemu/
//查看对应的磁盘路径
virsh domblklist rocky8-template
scp /var/lib/libvirt/images/rocky8-template.qcow2 10.0.0.101:/var/lib/libvirt/images