【笔记】linux-kvm虚拟化

安装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个东西,qemukvm
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 128 17:32 autostart
drwx------. 3 root root   42 1110 2021 networks
-rw-------. 1 root root 5904 118 23:53 vm1.xml
-rw-------. 1 root root 5866 128 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 116 07:55 networks
-rw-------  1 root root 5904 116 19:46 vm1.xml
-rw-------  1 root root 5904 116 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 118 03:15 vm1.qcow2
-rw------- 1 root root 7517569024 117 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 116 07:55 networks
-rw-------  1 root root 5904 116 19:46 vm1.xml
-rw-------  1 root root 5904 116 20:59 vm2.xml
-rw-------  1 root root 5904 118 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 118 05:19 test.qcow2
-rw-r--r-- 1 root root 2.0G 118 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 118 22:45 hgfs
dr-xr-xr-x. 7 root root 2048 44 2019 iso
drwxr-xr-x. 2 root root    6 122 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 812 2018 bin -> usr/bin
drwxr-xr-x.  2 root root    6 118 23:58 boot
drwxr-xr-x.  2 root root    6 118 23:58 dev
drwxr-xr-x. 79 root root 8192 119 00:13 etc
drwxr-xr-x.  3 root root   19 119 00:11 home
lrwxrwxrwx.  1 root root    7 812 2018 lib -> usr/lib
lrwxrwxrwx.  1 root root    9 812 2018 lib64 -> usr/lib64
drwxr-xr-x.  2 root root    6 812 2018 media
drwxr-xr-x.  2 root root    6 812 2018 mnt
drwxr-xr-x.  2 root root    6 812 2018 opt
drwxr-xr-x.  2 root root    6 118 23:58 proc
dr-xr-x---.  2 root root  114 119 00:12 root
drwxr-xr-x.  2 root root    6 118 23:58 run
lrwxrwxrwx.  1 root root    8 812 2018 sbin -> usr/sbin
drwxr-xr-x.  2 root root    6 812 2018 srv
drwxr-xr-x.  2 root root    6 118 23:58 sys
drwxrwxrwt.  8 root root  198 119 00:13 tmp
drwxr-xr-x. 12 root root  144 119 00:00 usr
drwxr-xr-x. 20 root root  278 119 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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值