文章目录
KVM虚拟机管理
一、虚拟机的存储池
1 默认位置
kvm默认存储池的位置
/var/lib/libvirt/images/
2 定义存储池
使用 virsh pool-define-as
命令创建持久性存储池。
[root@localhost centos7]# mkdir -p /vm-pool/centos7/vm1
[root@localhost centos7]# virsh pool-define-as --name centos7-poo1 --type dir --target "/vm-pool/centos7/vm1"
使用 virsh pool-list --all
命令列出所有现有的存储池。
[root@localhost centos7]# virsh pool-list
名称 状态 自动开始
-------------------------------------------
centos7-poo1 非活动 否
iso 活动 是
virtual-img 活动 是
启动存储池
[root@localhost ~]# virsh pool-autostart centos7-poo1
池 centos7-poo1 已启动
[root@localhost centos7]# virsh pool-list --all
名称 状态 自动开始
-------------------------------------------
centos7-pool 活动 否
iso 活动 是
virtual-img 活动 是
打开自动启动(可选)
默认情况下,virsh 使用自定义的存储池未设置为每次 libvirtd 启动时自动启动。
可以使用virsh pool-autostart
命令将存储池配置为自动启动。
[root@localhost ~]# virsh pool-autostart centos7-poo1
池 centos7-pool-1 标记为自动启动
[root@localhost centos7]# virsh pool-list --all
名称 状态 自动开始
-------------------------------------------
centos7-pool 活动 是
iso 活动 是
virtual-img 活动 是
使用 virsh pool-create-as
命令创建临时性存储池。
临时性的不可以打开自动启动
[root@localhost centos7]# mkdir -p /vm-pool/centos7/vm2
[root@localhost centos7]# virsh pool-create-as --name centos7-poo2 --type dir --target "/vm-pool-1/centos7/vm2"
创建池 centos7-pool-1
[root@localhost centos7]# virsh pool-list
名称 状态 自动开始
-------------------------------------------
centos7-poo1-1 非活动 否
iso 活动 是
virtual-img 活动 是
3 删除存储池
[root@localhost ~]# virsh pool-destroy centos7-poo1
销毁池 centos7-poo1
4 更多的存储池操作
[root@localhost ~]# virsh --help | grep 池
find-storage-pool-sources-as 找到潜在存储池源
find-storage-pool-sources 发现潜在存储池源
pool-autostart 自动启动某个池
pool-build 建立池
pool-create-as 从一组变量中创建一个池
pool-create 从一个 XML 文件中创建一个池
pool-define-as 在一组变量中定义池
pool-delete 删除池
pool-destroy 销毁(删除)池
pool-dumpxml XML 中的池信息
pool-edit 为存储池编辑 XML 配置
pool-info 存储池信息
pool-list 列出池
pool-name 将池 UUID 转换为池名称
pool-refresh 刷新池
pool-start 启动一个(以前定义的)非活跃的池
pool-undefine 取消定义一个不活跃的池
pool-uuid 把一个池名称转换为池 UUID
vol-pool 为给定密钥或者路径返回存储池
二、虚拟机快照
1 查询
[root@localhost ~]# qemu-img info /home/kvm/virtual-img/vm1.qcow2
image: /home/kvm/virtual-img/vm1.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.7G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
2 给指定虚拟机创建快照
[root@localhost ~]# virsh snapshot-create-as vm1 --name vm1.snap1
已生成域快照 vm1.snap1
3 查看快照
[root@localhost ~]# virsh snapshot-list vm1
名称 生成时间 状态
------------------------------------------------------------
virsh 2020-12-10 22:10:24 -0500 running
vm1.snap1 2020-12-10 22:21:05 -0500 running
4 恢复快照
[root@localhost ~]# virsh snapshot-revert vm1 --snapshotname vm1.snap1
5 删除快照
[root@localhost ~]# virsh snapshot-delete vm1 --snapshotname virsh
已删除域快照 virsh
三、虚拟机网络
1 查询虚拟网桥
[root@localhost network-scripts]# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.525400316d51 yes virbr0-nic
vnet0
libvirt 会依赖 ip_forward 参数, 并添加响应的 iptables(防火墙)规则,允许去往和来自虚拟机的数据。有些程序可能会关闭 ip_forward 参数,因此最好的选择是将以下内容添加到 /etc/sysctl.conf。
net.ipv4.ip_forward = 1
2 查看网络接口信息
[root@localhost network-scripts]# ip addr show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:53:ba:a8 brd ff:ff:ff:ff:ff:ff
inet 192.168.116.150/24 brd 192.168.116.255 scope global noprefixroute dynamic ens33
valid_lft 1238sec preferred_lft 1238sec
inet6 fe80::928b:58c2:fb55:e071/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3 设置桥接网络
配置文件方式配置桥接:在宿主机上
1.定义虚拟网卡配置文件
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-br0 \#创建该桥接网卡,默认没有此文件需要新建
[root@localhost network-scripts]# cat ifcfg-br0
TYPE=Bridge
NAME=br0
DEVICE=br0
ONBOOT="yes"
BOOTPROTO=static
IPADDR=192.168.116.150 #要和宿主机在一个网络,这里我用的是宿主机的ip
GATEWAY=192.168.116.2 #宿主的网关,nat的是.2,桥接是.1
NETMASK=255.255.255.0
DNS1=114.114.114.114
DNS2=8.8.8.8
2.然后看清楚宿主机正在使用的网卡,修改其配置文件(将物理机网卡桥到桥接网卡)
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33.back
[root@localhost network-scripts]# vim ifcfg-ens33
NAME=ens33 #定义网卡设备名称
DEVICE=ens33 #宿主机正在使用的网卡设备
ONBOOT=yes
BRIDGE=br0 #和ifcfg-br0文件里面的设备对应,新添加
3.重启 libvirtd 服务
[root@localhost network-scripts]# systemctl restart libvirtd
4.重启 network 服务
[root@localhost network-scripts]# systemctl restart network
4 删除网桥模式
删除桥接网卡步骤:
1.删除br0的配置文件
2.修改正常网卡的配置文件
3.重启系统
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# mv ifcfg-br0 ifcfg-br0.bak
[root@localhost network-scripts]# mv ifcfg-ens33.back ifcfg-ens33
[root@localhost network-scripts]# systemctl restart libvirtd
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ping www.baidu.com
PING www.a.shifen.com (39.156.66.14) 56(84) bytes of data.
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=1 ttl=52 time=13.3 ms