KVM [ 4 ] --- KVM虚拟机管理:存储池,虚拟机快照,网络网桥


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

猜你喜欢

转载自blog.csdn.net/Houaki/article/details/111064150