KVM管理工具

安装

yum install libvirt virt-install qemu-kvm -y

介绍:

libvirt服务:管理kvm虚拟机的生命周期

cirt-install工具:创建虚拟机

qemu-kvm工具:使用qemu-img为虚拟机提供硬盘

qemu 软件纯模拟全虚拟化软件,特别慢

xen  性能好,需要使用专门的修改之后的内核,兼容性差

KVM 需要cpu支持虚拟化,基于内核,不需要使用专门的内核,兼容性好,性能较好

在windows 上安装TightVNC

tightvnc官网:http://www.tifhtvnc.com

vnc是一个跨平台的远程软件,安装kvm虚拟机系统的时候使用

启动libvirtd服务

systemctl start libvirtd.service

创建虚拟机

[root@kvm01 opt]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=3 --cdrom /opt/CentOS-7-x86_64-DVD-1804.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

  

 参数总结:

参数

参数说明

--virt-type HV_TYPE

要使用的管理程序名称 (kvm, qemu, xen, ...)

--os-type

系统类型

--os-variant DISTRO_VARIANT

在客户机上安装的操作系统,例如:'fedora18'、'rhel6'、'winxp' 等。

-n NAME, --name NAME

客户机实例名称

--memory MEMORY

配置客户机虚拟内存大小

--vcpus VCPUS

配置客户机虚拟 CPU(vcpu) 数量。

--disk DISK

指定存储的各种选项。

-cdrom CDROM   

光驱安装介质

-w NETWORK, --network NETWORK

配置客户机网络接口。

--graphics GRAPHICS

配置客户机显示设置。

虚拟化平台选项:

-v, --hvm         

这个客户机应该是一个全虚拟化客户机

-p, --paravirt    

这个客户机应该是一个半虚拟化客户机

--container       

这个客户机应该是一个容器客户机

--virt-type HV_TYPE

要使用的管理程序名称 (kvm, qemu, xen, ...)

--arch ARCH       

模拟 CPU 架构

--machine MACHINE

机器类型为仿真类型

其它选项:

--noautoconsole

不要自动尝试连接到客户端控制台

--autostart

主机启动时自动启动域。

--noreboot 

安装完成后不启动客户机。

通过 " virt-install --help " 获得命令帮助。

 然后用vnc连接

 

导出配置dumpxml(备份)

[root@kvm01 ~]# virsh dumpxml centos7  > centos7.xml

删除undefine

推荐先destroy,后undefine

导入配置define

修改配置edit

重命名domrename(低版本不支持)

命令参数总结:

参数

参数说明

基础操作

list

查看虚拟机列表,列出域

start

启动虚拟机,开始一个(以前定义的)非活跃的域

shutdown

关闭虚拟机,关闭一个域

destroy(危险)

强制关闭虚拟机,销毁(停止)域

vncdisplay

查询虚拟机vnc端口号

配置管理操作

dumpxml

导出主机配置信息

undefine

删除主机

define

导入主机配置

domrename

对虚拟机进行重命名

挂起与恢复

suspend

挂起虚拟机

resume

恢复虚拟机

自启动管理

autostart

虚拟机开机启动

autostart --disable

取消虚拟机开机启动

 操作案例:

[root@kvm01 opt]# virsh list    <<--查看虚拟机
Id Name State
----------------------------------------------------

[root@kvm01 opt]# virsh list --all  <<--查看全部虚拟机
Id Name State
----------------------------------------------------
- centos7 shut off

[root@kvm01 opt]# virsh start centos7 <<--启动虚拟机

 

virsh shutdown centos7  <<--关闭虚拟机

virsh destroy centos7   <<--强制关机

配置console登录

在clsn7虚拟机内操作(该操作仅限centos7):

[root@kvm01 ~]# grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
[root@kvm01 ~]# reboot
# 115200n8:能显示虚拟机的启动过程

重启完成后,使用virsh console 连接虚拟机。

[root@kvm01 ~]# virsh console clsn7 
连接到域 clsn7
换码符为 ^]
CentOS Linux 7 (Core)
clsn7 login: root
Password: 
Last login: Mon Jan 22 12:24:48 from 192.168.122.1
[root@localhost ~]# w
 12:26:11 up 0 min,  1 user,  load average: 0.09, 0.03, 0.01
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     ttyS0                     12:26    3.00s  0.02s  0.01s w

磁盘管理

查看当前虚拟机硬盘信息

 

[root@kvm01 opt]# qemu-img info /opt/centos2.qcow2 
image: /opt/centos2.qcow2
file format: qcow2
virtual size: 3.0G (3221225472 bytes)
disk size: 1.4G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

 

raw转qcow2格式:

# 参数说明
[root@kvm data]# qemu-img  --help |grep convert 
qemu-img convert [-f fmt] [-O output_fmt] filename  output_filename

 转换原有磁盘格式

[root@kvm data]# qemu-img convert -f raw -O qcow2 test.raw test.qcow2

修改kvm虚拟机配置文件 

[root@kvm01 ~]# virsh edit web01
修改前:
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/data/test.raw'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>
修改后:
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/data/test.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>

删除原磁盘文件

[root@kvm opt]# rm -rf test.raw

KVM虚拟机添加硬盘

进入硬盘存放目录

[root@kvm ~]# cd /opt

增加硬盘空间

qemu-img info test-qcow2 
image: test-qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
[root@kvm01 ~]# qemu-img resize test-qcow2 +1G  <<---添加1G
Image resized.
[root@kvm01 ~]# qemu-img info test-qcow2 
image: test-qcow2
file format: qcow2
virtual size: 2.0G (2147483648 bytes)
disk size: 260K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

创建一块新的硬盘

[root@kvm opt]# qemu-img create -f qcow2 add.qcow2 1G 
Formatting 'add.qcow2', fmt=qcow2 size=5368709120 encryption=off cluster_si

查看创建的硬盘信息

[root@kvm data]# qemu-img info add.qcow2 
image: add.qcow2
file format: qcow2
virtual size: 5.0G (5368709120 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

 

快照管理

注意:raw格式的磁盘无法创建快照

创建快照

[root@kvm01 opt]# virsh snapshot-create web02 
Domain snapshot 1630849528 created

查看主机快照列表  

[root@kvm01 opt]# virsh snapshot-list web02 
 Name                 Creation Time             State
------------------------------------------------------------
 1630849528           2021-09-05 21:45:28 +0800 running
该名称为unix时间戳(格林威治时间)

查看快照信息

[root@kvm01 opt]# virsh snapshot-info web02 --snapshotname 1630849528 
Name:           1630849528
Domain:         web02
Current:        yes
State:          running
Location:       internal
Parent:         -
Children:       0
Descendants:    0
Metadata:       yes

删除快照

[root@kvm01 opt]# virsh snapshot-delete web04 --snapshotname 1630933049 

kvm虚拟机克隆

1.克隆虚拟磁盘文件

cp test.qcow2  test01.qcow2

2.生成新的虚拟机配置文件(关机状态下修改)

name修改

uuid删除

disk路径修改

mac地址删除

总结:

复制一个虚拟机,需修改如 MAC 地址,名称等所有主机端唯一的配置。

虚拟机的内容并没有改变:virt-clone 不修改任何客户机系统内部的配置。

克隆命令:

[root@kvm01 opt]# virt-clone -o web02 --auto-clone
WARNING  Setting the graphics device port to autoport, in order to avoid conflicting.
Allocating 'centos2-clone.qcow2'                          | 3.0 GB  00:03:13     
Clone 'web02-clone' created successfully.  

参数说明:

参数说明:

 

 

参数

参数说明

--auto-clone  

从原始客户机配置中自动生成克隆名称和存储路径。

-o ORIGINAL_GUEST,

--original ORIGINAL_GUEST

原始客户机名称;必须为关闭或者暂停状态。

  

 

kvm虚拟机网络管理

    1,首先将networkmanager关闭

systemctl stop networkmanager.server

 2,设置桥接网络 

[root@kvm01 ~]# virsh iface-bridge eth0 br0

 3.查看网络配置文件

# 查看 eth0 配置文件
[root@kvm01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE="br0"
# 查看 br0 配置文件
[root@kvm01 ~]#

DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO="none"
IPADDR="192.168.100.11"
NETMASK="255.255.255.0"
GATEWAY="192.168.100.1"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
DHCPV6C="no"
STP="on"
DELAY="0"

 4,修改虚拟机网络配置 

[root@kvm01 ~]# virsh edit web04
修改前:
    <interface type='network'>
     <mac address='52:54:00:63:88:c1'/>
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
修改后:
    <interface type='bridge'>
      <mac address='52:54:00:63:88:c1'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

KVM热添加技术

 1.热添加硬盘

创建一块硬盘

qemu-img create -f qcow2 add.qcow2 1G 

热添加硬盘

[root@kvm opt]# virsh attach-disk web01 /opt/add.qcow2 vdb --live --cache=none --subdriver=qcow2
# 成功附加磁盘

  

参数说明:

 

 

参数

参数说明

vdb

新加硬盘

--live

热添加

--subdriver

驱动类型

 

调整已添加硬盘的大小

[root@kvm01 opt]# virsh --help |grep disk 
    attach-disk                    #附加磁盘设备
    detach-disk                    #分离磁盘设备

将已挂载的磁盘卸载下来

[root@kvm01 opt]# virsh detach-disk web01  vdb 
成功分离磁盘

调整磁盘大小

# 使用参数
[root@kvm01 opt]# qemu-img --help |grep resize resize [-q] filename [+ | -]size

添加硬盘完成之后在kvm虚拟机操作

格式化磁盘

[root@localhost ~]# mkfs.xfs /dev/vdb 

挂载磁盘

[root@localhost ~]# mount /dev/vdb  /opt

[root@localhost ~]# df -h |grep /dev/vdb
/dev/vdb        6.0G   33M  1.0G   1% /opt    

 

使用 xfs_growfs 刷新磁盘的信息

[root@localhost ~]# xfs_growfs --help  
xfs_growfs: invalid option -- '-'
Usage: xfs_growfs [options] mountpoint

[root@localhost ~]# xfs_growfs /opt

 2.热添加网卡

virsh attach-interface web03 --type bridge --model virtio --source br0

 

 

 

 

 

 不加--model virtio

virsh attach-interface web03 --type network --source default

 

 

 

 添加网络配置文件(实现永久添加)

virsh  destory web03
virsh edit web03
<interface type='bridge'> <mac address='52:54:00:16:ce:5a'/> <<---删除 <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> <<--删除 </interface>

 现在启动虚拟机只多了一块网卡,其他的都“消失”了 

 

 

 

 3.热添加CPU

在创建虚拟机时需要添加maxcpus=4

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web03 --memory 1024 --vcpus 1,maxcpus=4 --disk /opt/web03.qcow2,format=qcow2,size=3 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsolez 

执行这个命令会报错   ERROR    Unknown options ['maxcpus'] (有bug)

查看命令帮助

virt-install --help|grep vcpu
                --vcpus VCPUS         Number of vcpus to configure for your guest. Ex:
                        --vcpus 5
                        --vcpus 5,maxvcpus=10,cpuset=1-4,6,8
                        --vcpus sockets=2,cores=4,threads=2

  解决bug方法在max和cpus之间加v(程序员的锅)

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web03 --memory 1024 --vcpus 1,maxvcpus=4 --disk /opt/web03.qcow2,format=qcow2,size=3 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsolet 

添加cpu命令

virsh setvcpus web03 --count=2

添加前:

 

 

添加后:

 

 热迁移备份

 准备:

 

1、安装virt-manager所需桌面及vnc-server

[root@kvm ~]# yum group install "GNOME Desktop" -y
# vnc和vnc-manager
[root@kvm ~]# yum install tigervnc-server virt-manager.noarch -y
# virt-manager需要软件
[root@kvm ~]# yum install openssh-askpass -y

 2.启动,关闭vnc

vncserver :10   << --- 开启
vncserver -kill :10   << ---关闭

 

 

 开启vncmanager

使用tightvnc连接,并下一步

打开V M manager

 

可以看到在kvm01运行的kvm虚拟机

 

 

 如图所示增加一个连接

 

 

 

 连接另一台kvm02

 

 

 

 输入密码:

 

 

 

 连接好之后

 

 

 

 热迁移步骤图解

 

 

 

 迁移

 

 

 迁移过程

 

 

 

迁移完成

 

 

迁移过程出现短暂访问延时(没有丢包)

 

posted @ 2021-04-14 00:17  弓长虎三  阅读(747)  评论(0)    收藏  举报