安装kvm
防止安装过程出现问题:
- 关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
- 关闭selinux
[root@localhost ~]# vim /etc/sysconfig/selinux
把SELINUX变量值改为disabled 如下
SELINUX=disabled
改完后重启虚拟机
[root@localhost ~]# systemctl status firewalld
Active: inactive (dead) 表示不活跃,关闭状态
[root@localhost ~]# getenforce
Enforcing 表示强制/开启|Permissive 表示警告| Disabled表示关闭
- 重启虚拟机
[root@localhost ~]# reboot
第一步,查看cpu是否支持TV虚拟化
- 如果是使用虚拟机,开启cpu虚拟化,真机则在bios里开启
[root@localhost ~]# cat /proc/cpuinfo | grep -E 'vmx|svm'
vmx表示英特尔的虚拟化,svm表示amd的虚拟化
第二步,通过yum组安装kvm(前提是已经配好yum源)
[root@localhost ~]# uname -r
4.18.0-80.el8.x86_64
内核版本在2.6以上,基本就内置了kvm
[root@localhost ~]# yum install qemu-kvm* virt-* libvirt* -y
[root@localhost ~]# yum -y groupinstall "Virtualization Client" "Virtualization Hypervisor" "Virtualization Tools"
(尝试在命令行中添加'——allowerasing'来替换冲突的包,或者'——skip-broken'来跳过不可安装的包,或者'——nobest'来不仅使用最佳候选包)
qemu-kvm:主程序包
libvirt:apl接口,用于管理
virt-manager:图行管理程序
所谓的kvm技术中,应用到的其实有2个东西,qemu和kvm
kvm负责cpu虚拟化和内存虚拟化,不能模拟其他设备
qemu负责模拟IO设备(网卡,磁盘)
kvm加上qemu才能实现真正意义上的服务虚拟化,一般称为qemu-kvm
libvirt则是调用kvm虚拟化技术的接口用于管理
qemu-kvm -- 该软件包主要包含KVM内核模块和基于KVM重构后的QEMU模拟器。KVM模块作为整个虚拟化环境的核心工作在系统空间,负责CPU和内存的调度。QEMU作为模拟器工作在用户空间,负责虚拟机I/O模拟。
qemu-img -- 主要用来QEMU磁盘镜像的管理,如新建一块磁盘镜像给虚拟机。
libvirt-- 提供Hypervisor和虚拟机管理的API。
libvirt-client --KVM客户端命令行管理工具virsh,负责虚拟机的启动、停止和管理等。
libvirt-daemon --libvirtd守护进程,作为客户端管理工具跟hypervisor和虚拟机之间的桥梁。
libvirt-daemon-driver-xxx --从名字来看属于libvirtd服务的驱动文件,作为libvirtd服务跟hypervisor不同对象(如,qemu模拟器,网络,存储等)间的接口
bridge-ntils --网桥管理工具包,负责桥接网络的创建、配置和管理等工作。
virt-install -- 创建和克隆虚拟机的命令行工具包。
virt-manager -- 图形界面的KVM管理工具。有诸多功能:生命周期管理,高级功能;实时性能监控,图形化统计显示;图形化支持导航;内置VNC;支持远程管理。官网https://virt-manager.org/
————————————————
版权声明:本文为CSDN博主「鬼刺」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_35550345/article/details/87095147
管理kvm
- 启动虚拟机
[root@localhost ~]# virsh start vm1 #vm1是虚拟机的名称
域 vm1 已开始
- 查看所有虚拟机状态
[root@localhost ~]# virsh list --all #virsh list 只会列出正在运行的虚拟机
Id 名称 状态
----------------------------------------------------
1 vm1 running
- vm2 关闭
- 挂起/暂停虚拟机
[root@localhost ~]# virsh suspend vm1
域 vm1 被挂起
- 恢复挂起
[root@localhost ~]# virsh resume vm1
域 vm1 被重新恢复
- 重新启动
[root@localhost ~]# virsh reboot vm1
域 vm1 正在被重新启动
- 重置虚拟机(断电重启,速度比reboot快些)
[root@localhost qemu]# virsh reset vm1
重新设定域 vm1
- 关闭虚拟机
[root@localhost ~]# virsh shutdown vm1
域 vm1 被关闭
- 强制关闭虚拟机
[root@localhost ~]# virsh destroy vm1 #vm1是虚拟机的名称
域 vm1 被删除
- 删除客户机/虚拟机 只是删除虚拟机,并无删除虚拟磁盘,需手动删除
[root@localhost ~]# virsh undefine vm1
- 查看虚拟机的配置文件
[root@localhost ~]# virsh dumpxml vm1 #vm1是虚拟机的昵称/名字
- 修改虚拟机配置文件-直接生效
[root@localhost ~]# virsh edit vm1 #vm1是虚拟机的昵称/名字
ps:修改虚拟机配置文件,有2种方法,通过virsh edit 修改后,配置文件直接生效
如果是通过vim修改配置文件/etc/libvirt/qemu/,则需要重启libvirtd服务以及重新定义域 virsh define /etc/libvirt/qemu/配置文件名字.xml
- 设置开机自启-取消自启-查看开机自启 虚拟机
[root@localhost qemu]# virsh autostart vm1
域 vm1标记为自动开始
[root@localhost qemu]# virsh list --all --autostart
Id 名称 状态
----------------------
1 vm1 running
[root@localhost qemu]# virsh autostart --disable vm1
域 vm1取消标记为自动开始
[root@localhost qemu]# virsh list --all --autostart
Id 名称 状态
----------------------
[root@localhost qemu]# ls /etc/libvirt/qemu/autostart/
vm1.xml
PS:默认情况下是没有的,当设置开机自启后,会自动创建一个文件夹,路径:/etc/libvirt/qemu/autostart
- 显示虚拟机的域信息
[root@localhost ~]# virsh dominfo vm1
Id: -
名称: vm1
UUID: 04ab69c1-d780-4a70-964a-e9b5b6a52132
OS 类型: hvm
状态: 关闭
CPU: 1
最大内存: 1048576 KiB
使用的内存: 1048576 KiB
持久: 是
自动启动: 禁用
管理的保存: 否
安全性模式: none
安全性 DOI: 0
- 显示虚拟机cpu内存情况等信息
[root@localhost ~]# virsh nodeinfo
CPU 型号: x86_64
CPU: 4
CPU 频率: 2494 MHz
CPU socket: 2
每个 socket 的内核数: 2
每个内核的线程数: 1
NUMA 单元: 1
内存大小: 4880984 KiB
克隆虚拟机
第一种方法 复制粘贴配置文件和磁盘文件
第二种方法 通过图形化界面克隆
第三种方法 通过命令行克隆(clone)
[root@localhost ~]# virt-clone -o vm1 -n vm2 --auto-clone #-o 克隆是源虚拟机,-n表示定义虚拟机名称 -f表示定义磁盘镜像文件的名字
正在分配 'vm2.qcow2'
成功克隆 'vm2'
[root@localhost ~]# cd /etc/libvirt/qemu/
[root@localhost qemu]# ll
总用量 16
drwxr-xr-x. 2 root root 6 1月 28 17:32 autostart
drwx------. 3 root root 42 11月 10 2021 networks
-rw-------. 1 root root 5904 1月 18 23:53 vm1.xml
-rw-------. 1 root root 5866 1月 28 19:03 vm2.xml
[root@localhost qemu]# diff vm1.xml vm2.xml
##diff可以判断两个文件的区别
复制虚拟机
- 虚拟机的配置文件
[root@localhost ~]# ls /etc/libvirt/qemu
networks vm1.xml vm2.xml
#可以看到后缀是xml,这个就是配置文件
- 存储虚拟机的介质/磁盘镜像文件
[root@localhost ~]# ls /var/lib/libvirt/images/
vm1.qcow2 vm2.qcow2
#可以看到vm1.qcow2就是镜像文件
根据配置文件和磁盘镜像文件创建虚拟机
1.复制配置文件
[root@localhost ~]# cd /etc/libvirt/qemu
[root@localhost qemu]# ll
总用量 16
drwx------. 3 root root 42 1月 16 07:55 networks
-rw------- 1 root root 5904 1月 16 19:46 vm1.xml
-rw------- 1 root root 5904 1月 16 20:59 vm2.xml
[root@localhost qemu]# cp vm1.xml vm3.xml
2.复制镜像文件
[root@localhost qemu]# cd /var/lib/libvirt/images/
[root@localhost images]# ll
总用量 14682756
-rw------- 1 root root 7517569024 1月 18 03:15 vm1.qcow2
-rw------- 1 root root 7517569024 1月 17 02:35 vm2.qcow2
[root@localhost images]# cp vm1.qcow2 vm3.qcow2
3.修改配置文件内容,必须修改
[root@localhost images]# cd /etc/libvirt/qemu/
[root@localhost qemu]# ll
总用量 24
drwx------. 3 root root 42 1月 16 07:55 networks
-rw------- 1 root root 5904 1月 16 19:46 vm1.xml
-rw------- 1 root root 5904 1月 16 20:59 vm2.xml
-rw------- 1 root root 5904 1月 18 03:30 vm3.xml
[root@localhost qemu]# vim vm3.xml
按 i 或 o 或 a 进入编辑模式
<name>vm3</name> #修改虚拟机名称
<uuid>04ab69c1-d780-4a70-464a-e9b5b6a52132</uuid> #修改uuid,修改任意一个数字即可
<source file='/var/lib/libvirt/images/vm3.qcow2'/> #修改磁盘镜像的路径
<mac address='52:54:00:ae:1d:9e'/> #修改网卡的mac地址,修改后6位的其中一位即可
按esc,退出编辑模式,按:wq 保存并退出
4.创建虚拟机
[root@localhost qemu]# virsh define /etc/libvirt/qemu/vm3.xml #因为是通过vim进行直接修改虚拟机配置文件,所以需要定义以及重启libvirtd服务 使用virsh edit 配置文件名,就不用使用virsh define 重新定义域以及重启libvirtd服务
定义域 vm3(从 /etc/libvirt/qemu/vm3.xml)
5.重启libvirtd服务
[root@localhost qemu]# systemctl restart libvirtd
6.宿主机设置路由转发
[root@localhost qemu]# vim /etc/sysctl.conf
按 i 或 o 或 a 进入编辑模式
net.ipv4.ip_forward=1
按esc,退出编辑模式,按:wq 保存并退出
[root@localhost qemu]# sysctl -p
net.ipv4.ip_forward = 1
7.查看是否复制成功
[root@localhost qemu]# virsh list --all
Id 名称 状态
----------------------------------------------------
- vm1 关闭
- vm2 关闭
- vm3 关闭
虚拟机管理,添加、删除磁盘
1.创建新的空磁盘卷:
[root@localhost ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/vm1-1.qcow2 10G #create新创建 -f是指定磁盘文件类型 磁盘文件所在的位置 10G是磁盘的大小
2.修改虚拟机配置文件(这里是给vm1添加磁盘)
找到disk(磁盘),进行复制并粘贴进行修改里面内容,开头结尾都是<disk><disk>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/vm1-1.qcow2'/> #这要修改,磁盘的位置,
<target dev='vdd' bus='virtio'/> #这里修改磁盘的名称,修改dev=
<address type='pci' domain='0x0000' bus='0x14' slot='0x00' function='0x0'/> #centos8修改bus里任意一个数字即可,而centos7则修改slot里任意一个数即可
</disk>
3.重新定义域,让刚刚修改的配置生效
[root@localhost ~]# virsh define /etc/libvirt/qemu/vm1.xml #因为是通过vim进行直接修改虚拟机配置文件,所以需要定义以及重启libvirtd服务
定义域 vm1(从 /etc/libvirt/qemu/vm1.xml)
4.开启虚拟机,检查是否创建成功
[root@localhost ~]# virsh start vm1
域 vm1 已开始
这里前提是你已经知道虚拟机里的linux的ip才可以进行ssh连接
[root@localhost ~]# ssh 192.168.124.140
root@192.168.124.140's password:
Last login: Wed Jan 18 04:22:55 2023
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 7G 0 disk
|-vda1 252:1 0 1G 0 part /boot
`-vda2 252:2 0 6G 0 part
|-rhel-root 253:0 0 5.3G 0 lvm /
`-rhel-swap 253:1 0 720M 0 lvm [SWAP]
vdb 252:16 0 10G 0 disk
存储池
- 定义:kvm存储池一种管理方式,可以通过挂载存储到目录,主要是用来虚拟机的迁移任务
默认存储池
/var/lib/libvirt/images/
1.创建一个文件夹,作为存储池
[root@localhost ~]# mkdir -p /data/vmfs
2.定义池
[root@localhost ~]# virsh pool-define-as vmdisk --type dir --target /data/vmfs # pool-define-as定义池,vmdisk是池的名字,--type是定义类型,这里类型是dir(目录), --target定义的目录在哪儿
定义池 vmdisk
3.创建池
[root@localhost ~]# virsh pool-build vmdisk # vmdisk的池的名字
构建池 vmdisk
3-1
[root@localhost ~]# virsh pool-list --all
名称 状态 自动开始
-------------------------------------------
default 活动 是
Downloads 活动 是
vmdisk 不活跃 否
4.激活池,并设置开机自启
[root@localhost ~]# virsh pool-start vmdisk # vmdisk的池的名字
池 vmdisk 已启动
[root@localhost ~]# virsh pool-autostart vmdisk # vmdisk的池的名字
池 vmdisk 标记为自动启动
4-1 查看定义的存储池,是否开启成功和开机自启
[root@localhost ~]# virsh pool-list --all
名称 状态 自动开始
-------------------------------------------
default 活动 是
Downloads 活动 是
vmdisk 活动 是
5.在存储池里面创建虚拟机存储卷
[root@localhost ~]# virsh vol-create-as vmdisk ikun.qcow2 2G --format qcow2 #vmdisk的池的名字,ikun.qcow2是在池里面创建卷的名字,2G是大小,--format是卷的格式,格式是qcow2
创建卷 ikun.qcow2
6.存储池相关的命令
(1)在存储池中删除虚拟机存储卷
[root@localhost ~]# virsh vol-delete --pool vmdisk ikun.qcow2 #vmdisk池的名字,ikun.qcow2存储卷的名字
卷 ikun.qcow2 被删除
(2)取消已激活的存储池
[root@localhost ~]# virsh pool-destroy vmdisk
销毁池 vmdisk
(3)删除存储池定义的目录 /data/vmfs
[root@localhost ~]# virsh pool-delete vmdisk
池 vmdisk 被删除
(4)取消定义存储池
[root@localhost ~]# virsh pool-undefine vmdisk
池 vmdisk 已经被取消定义
7.查看是否删除成功
[root@localhost ~]# virsh pool-list --all
名称 状态 自动开始
-------------------------------------------
default 活动 是
Downloads 活动 是
kvm的磁盘格式(3种)
raw 原始格式,性能最好
qcow性能远比raw差
qcow2是qcow的升级版,性能还是不如raw,但是他可以快照,而raw不行
qed现在基本不用了
创建磁盘文件
创建qcow2格式的磁盘文件
[root@localhost ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/test.qcow2 2G
Formatting '/var/lib/libvirt/images/test.qcow2', fmt=qcow2 size=2147483648 cluster_size=65536 lazy_refcounts=off refcount_bits=16
创建raw格式的磁盘文件
[root@localhost ~]# qemu-img create -f raw /var/lib/libvirt/images/test.raw 2G
Formatting '/var/lib/libvirt/images/test.raw', fmt=raw size=2147483648
查看qcow2格式和raw格式存储的区别
[root@localhost ~]# ll -h /var/lib/libvirt/images/
总用量 2.01G
-rw-r--r-- 1 root root 193K 1月 18 05:19 test.qcow2
-rw-r--r-- 1 root root 2.0G 1月 18 05:20 test.raw
可以清楚的看到,raw你创建多少容量直接占了多少
而qcow2是你需要使用多少给你分配多少
qcow2可以快照 性能比不过raw
raw不可以快照 性能好
挂载磁盘(虚拟机)
当虚拟机遇到无法启动(文件系统并无问题),进行排查是哪儿导致出错时,就需要用到libguestgs linux 工具,对出现无法启动的虚拟机整个系统文件挂载到宿主机上,进行排查,或者是拷贝重要资料。
ps:该工具也可以对windown系统进行打开,前提是在linux环境下
1.查看虚拟机里面的磁盘分区信息
[root@localhost ~]# virt-df -h -d vm1 #df显示磁盘信息,-h是显示大小,以单位为m显示大小,-d表示指定虚拟机
文件系统 大小 已用空间 可用空间 使用百分比%
vm1:/dev/sda1 1014M 123M 891M 13%
vm1:/dev/rhel/root 6.2G 1.1G 5.1G 19%
如果无法使用virt-df命令是因为没有安装libguestfs-Tools包导致无法使用,
yum -y install libguestfs-tools #该包官网https://libguestfs.org/
2.检查文件路径
[root@localhost ~]# virt-filesystems -d vm1 #virt-filesysems检查虚拟机里面的文件路劲,-d表示哪台虚拟机
/dev/sda1
/dev/rhel/root
3.挂载虚拟机里的磁盘镜像到宿主机
[root@localhost ~]# mkdir /mnt/vm1 #在宿主机新建一个目录,用来挂载虚拟机路径
[root@localhost ~]# ll /mnt
总用量 2
drwxr-xr-x. 2 root root 6 1月 18 22:45 hgfs
dr-xr-xr-x. 7 root root 2048 4月 4 2019 iso
drwxr-xr-x. 2 root root 6 1月 22 12:09 vm1
[root@localhost ~]# guestmount -d vm1 -m /dev/rhel/root --rw /mnt/vm1 #guestmount挂载虚拟机磁盘,-d指定虚拟机 , -m 要挂载虚拟机的路径 , --rw 挂载到宿主机那个路径下 (--rw表示读写的以上)
[root@localhost ~]# ll /mnt/vm1 #查看是否挂载成功
总用量 12
lrwxrwxrwx. 1 root root 7 8月 12 2018 bin -> usr/bin
drwxr-xr-x. 2 root root 6 1月 18 23:58 boot
drwxr-xr-x. 2 root root 6 1月 18 23:58 dev
drwxr-xr-x. 79 root root 8192 1月 19 00:13 etc
drwxr-xr-x. 3 root root 19 1月 19 00:11 home
lrwxrwxrwx. 1 root root 7 8月 12 2018 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 8月 12 2018 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 8月 12 2018 media
drwxr-xr-x. 2 root root 6 8月 12 2018 mnt
drwxr-xr-x. 2 root root 6 8月 12 2018 opt
drwxr-xr-x. 2 root root 6 1月 18 23:58 proc
dr-xr-x---. 2 root root 114 1月 19 00:12 root
drwxr-xr-x. 2 root root 6 1月 18 23:58 run
lrwxrwxrwx. 1 root root 8 8月 12 2018 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 8月 12 2018 srv
drwxr-xr-x. 2 root root 6 1月 18 23:58 sys
drwxrwxrwt. 8 root root 198 1月 19 00:13 tmp
drwxr-xr-x. 12 root root 144 1月 19 00:00 usr
drwxr-xr-x. 20 root root 278 1月 19 00:13 var
######可以看到挂载出来了#####
4.取消挂载
[root@localhost mnt]# guestunmount /mnt/vm1
[root@localhost ~]# ll /mnt/vm1 #查看是否成功取消挂载
总用量 0
###############################################
如果在挂载的目录下,是无法进行取消挂载的(出现以下情况)
[root@localhost vm1]# guestunmount /mnt/vm1
guestunmount: failed to unmount /mnt/vm1: fusermount: failed to unmount /mnt/vm1: Device or resource busy
用户 进程号 权限 命令
/mnt/vm1: root kernel mount /mnt/vm1
root 15214 ..c.. bash
root 15833 ..c.. guestunmount
增量镜像(链式克隆)
优点:节省磁盘存储空间
概述:以一个基础镜像进行增量镜像,可以理解就是在基础进行里创建一个链式连接到增量镜像里面,基础镜像和增量镜像环境内容一模一样,而对增量镜像创建一个虚拟机,对增量镜像的虚拟机任何操作,都不会影响到基础镜像,只是对增量镜像修改而已。
要求: 以基础镜像文件vm1.qcow2为基础,创建一个增量镜像文件vm1-1.qcow2 ,再创建一个虚拟机vm1-1 ,虚拟机vm1-1改变存储于vm1-1.qcow2中
ps:基础镜像虚拟机在运行时,增量镜像的虚拟机无法运行
[root@localhost ~]# qemu-img create -b /var/lib/libvirt/images/vm1.qcow2 -f qcow2 /var/lib/libvirt/images/vm1-1.qcow2 #-b表示源基础镜像文件 -f磁盘格式 vm1-1.qcow2是增量镜像
Formatting '/var/lib/libvirt/images/vm1-1.qcow2', fmt=qcow2 size=8589934592 backing_file=/var/lib/libvirt/images/vm1.qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16
[root@localhost ~]# qemu-img info /var/lib/libvirt/images/vm1-1.qcow2 #查看增量镜像详细
image: /var/lib/libvirt/images/vm1-1.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 196K
cluster_size: 65536
backing file: /var/lib/libvirt/images/vm1.qcow2
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
[root@localhost ~]# cp /etc/libvirt/qemu/vm1.xml /etc/libvirt/qemu/vm1-1.xml
[root@localhost ~]# vim /etc/libvirt/qemu/vm1-1.xml
按i,o,a 进入编辑模式
<name>vm1-1</name> #虚拟机昵称/名字
<uuid>a0071333-ddfa-394c-8fc1-998a20b78fad</uuid> #uuid类似身份证,唯一标识,修改任意一个数字
<source file='/var/lib/libvirt/images/vm1-1.qcow2'/> # 镜像文件位置
<mac address='52:54:00:75:da:e1'/> #网卡的mac地址,修改后3段 (75:da:e1)任意数字或字母
按esc ,再按:wq 保存退出
[root@localhost ~]# virsh define /etc/libvirt/qemu/vm1-1.xml #重新定义域才会让该虚拟机生效
定义域 vm1-1(从 /etc/libvirt/qemu/vm1-1.xml)
[root@localhost ~]# virsh start vm1-1
域 vm1-1 已开始
查看基础镜像大小和增量镜像大小
[root@localhost ~]# du -h /var/lib/libvirt/images/vm1.qcow2
8.1G /var/lib/libvirt/images/vm1.qcow2
[root@localhost ~]# du -h /var/lib/libvirt/images/vm1-1.qcow2
15M /var/lib/libvirt/images/vm1-1.qcow2
进入vm1-1虚拟机里面,添加一个200m的文件,测试一下
[root@localhost ~]# dd if=/dev/zero of=test bs=1M count=200
200+0 records in
200+0 records out
209715200 bytes (210 MB, 200 MiB) copied, 0.672774 s, 312 MB/s
到真机里面看看基础镜像和增量镜像的大小
[root@localhost ~]# du -h /var/lib/libvirt/images/vm1.qcow2
8.1G /var/lib/libvirt/images/vm1.qcow2
[root@localhost ~]# du -h /var/lib/libvirt/images/vm1-1.qcow2
254M /var/lib/libvirt/images/vm1-1.qcow2
可以看到增量镜像的变大了,而基础镜像没有任何变化
快照
第一种:通过图形化界面,点点点进行快照
第二种:通过命令行
[root@localhost ~]# virsh snapshot-create-as vm1 vm1.snap #vm1 是要创建的快照的虚拟机名字 vm1.snap是快照文件的名字
已生成域快照 vm1.snap
ps:raw格式是不支持快照,而qcow2支持
#查看快照
[root@localhost ~]# virsh snapshot-list vm1
名称 生成时间 状态
-------------------------------------------------
vm1.snap 2023-01-28 20:30:36 +0800 shutoff
#还原/恢复至快照
[root@localhost ~]# virsh snapshot-revert vm1 vm1.snap #vm1 要恢复快照的虚拟机名字 vm1.snap是恢复快照文件的名字
#删除快照
[root@localhost ~]# virsh snapshot-delete --snapshotname vm1.snap vm1 # vm1.snap要删除的快照名 vm1是要删除快照的虚拟机名字
#查看磁盘信息
[root@localhost ~]# qemu-img info /var/lib/libvirt/images/vm1.qcow2
image: /var/lib/libvirt/images/vm1.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 8.0G
cluster_size: 65536
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 vm1.snap 0 2023-01-28 20:30:36 00:00:00.000
Format specific information:
compat: 1.1
lazy refcounts: true
refcount bits: 16
corrupt: false
查看kvm虚拟机ip,用于ssh连接
第一种,通过图形化界面,登录进去虚拟机,ip a查看ip地址
第二种,直接通过命令获取
[root@localhost ~]# virsh list --all
Id 名称 状态
-----------------------
3 vm1 running
- vm1-1 关闭
- vm2 关闭
[root@localhost ~]# virsh domifaddr vm1 #vm1是要获取ip的虚拟机,vm1也可以换成虚拟机的id号3
名称 MAC 地址 Protocol Address
-------------------------------------------------------------------------------
vnet2 52:54:00:76:da:e1 ipv4 192.168.122.22/24
第三种,通过虚拟机的mac地址,再通过arp命令查看mac地址对应的ip地址
[root@localhost ~]# virsh start vm1
域 vm1 已开始
[root@localhost ~]# virsh dumpxml vm1 | grep mac
或者这样,一样的效果,可以看到mac地址:[root@localhost ~]# cat /etc/libvirt/qemu/vm1.xml | grep mac
<partition>/machine</partition>
<type arch='x86_64' machine='pc-q35-rhel7.6.0'>hvm</type>
<mac address='52:54:00:76:da:e1'/>
[root@localhost ~]# arp | grep 52:54:00:76:da:e1
192.168.122.22 ether 52:54:00:76:da:e1 C virbr0
[root@localhost ~]# ssh 192.168.122.22
The authenticity of host '192.168.122.22 (192.168.122.22)' can't be established.
ECDSA key fingerprint is SHA256:2cE9ABl3/MzxQdEqkzmDt6tv5yticjkEYJMVGql/3oI.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.122.22' (ECDSA) to the list of known hosts.
root@192.168.122.22's password:
Last login: Thu Jan 19 00:
[root@vm1 ~]#
网络管理及脚本管理
分类:
网络:
nat : 默认的网络格式,支持主机与虚拟机互访,虚拟机可以访问外网,但外网访问不到虚拟机
isolated : 隔离网络模式,外网访问不了虚拟机,虚拟机也访问不了外网,但是并不影响宿主机访问虚拟机
接口:
bridge (桥接口)
虚拟交换机
linux-bridge (linux自带)
ovs (open-Vswitch)
[root@localhost ~]# 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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:f8:fe:1b brd ff:ff:ff:ff:ff:ff
inet 192.168.91.133/24 brd 192.168.91.255 scope global dynamic noprefixroute ens160
valid_lft 1289sec preferred_lft 1289sec
inet6 fe80::fd06:7451:524e:8731/64 scope link noprefixroute
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:1e:d9:a1 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:1e:d9:a1 brd ff:ff:ff:ff:ff:ff