本篇博客为个人KVM虚拟化精简笔记


KVM:基于内核的虚拟机(英语:Kernel-based Virtual Machine,缩写为 KVM),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor,其功能类似于window中软件vmware。


实验:在centos7上虚拟出centos7虚拟主机(KVM虚拟主机内存建议不低于4G)


安装KVM虚拟化软件


安装依赖包:yum install -y libvirt* virt-* qemm-kvm*

(libvirt 虚拟机管理  virt 虚拟机安装克隆 qemm-kvm 管理虚拟机磁盘)


启动服务:systemctl start libvirtd

设置开启自启动:virsh is-enable libvirtd


配置第一台kvm虚拟机:

[root@kvm ~]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /data/clsn.raw,format=raw,size=10 --cdrom /data/CentOS-7-x86_64-DVD-1511.iso --network network=default --graphics vnc,listen=0.0.0.0,port=5900 --noautoconsole


参数(说明)

--virt-type     要使用的管理程序名称(kvm)

--os-type       系统类型

--os-variant    在客户机上安装的操作系统

--name          客户机实例名称

--memory        配置客户机虚拟内存大小

--vcpus         配置客户机虚拟cpu数量

--disk          指定存储的各种选项

--cdrom         光驱安装介质

--network       配置客户机的网络接口

--graphics      配置客户机显示设置


KVM虚拟主机基本操作


例:创建一台KVM虚拟机:centos7

KVM配置文件位置:ls /etc/libvirt/qemu/centos7.xml

修改KVM虚拟机配置文件 :virsh edit centos7


备份虚拟机(关机):virsh dumpxml centos7.xml

查看创建的虚拟机:virsh list --all

删除创建的虚拟机:virsh undefine centos7

导入虚拟机:virsh define centos7.xml

修改虚拟机名称:virsh domrename centos7 clsn7

虚拟机挂起:virsh suspend clsn7

挂起后恢复:virsh resume clsn7

设置虚拟机开机自启:virsh autostart clsn7

取消开机自启:virsh autostart --disable clsn7


-----配置虚拟机console口登陆-----


在创建的KVM虚拟机内操作(仅限centos7系统)

[root@xuni ~]# grubby --update-kernel=ALL --args="console=ttyS0,115200n8"

[root@xuni ~]# reboot

重启后,物理机连接虚拟机

[root@kvm~ ]# virsh console clsn7


-----KVM虚拟机磁盘管理-----


[root@kvm ~]#  mkdir /data/ && cd /data
创建一块qcow2的虚拟硬盘
[root@kvm ~]# qemu-img create -f qcow2 clsn.qcow2 2G
查看当前虚拟机硬盘信息
[root@kvm ~]# qemu-img info /data/clsn.raw
raw转qcow2格式
[root@kvm ~]# qemu-img convert -f raw -O qcow2 clsn.raw clsn.qcow2


[root@kvm data]# virsh edit clsn7 
修改前:
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/data/clsn.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/clsn.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>


删除原磁盘文件

[root@kvm data]# \rm clsn.raw


KVM虚拟机添加硬盘


进入硬盘存放目录

创建一块新的硬盘

[root@kvm data]# qemu-img create -f qcow2 clsn7-add01.qcow2 5G

为虚拟机添加硬盘

[root@kvm data]# virsh attach-disk clsn7 /data/clsn7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2

分离硬盘

[root@kvm data]# virsh detach-disk clsn7  vdb


KVM虚拟机快照管理


生成快照:virsh snapshot-create clsn7

查看主机快照列表:virsh snapshot-list clsn7

查看快照信息:virsh snapshot-info  clsn7 --snapshotname 1516607756

还原快照:virsh snapshot-revert clsn7 --snapshotname 1516607756

删除快照:virsh snapshot-delete  clsn7 --snapshotname 1516607756

快照配置文件位置:/var/lib/libvirt/qemu/snapshot


kvm虚拟机克隆:virt-clone --auto-clone -o clsn7


KVM虚拟机网络管理


编辑文件/etc/sysconfig/network-script/eth0 br0配置文件
# 查看 eth0 配置文件
[root@kvm ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE="br0"
# 查看 br0 配置文件
[root@kvm ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0 
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO="none"
IPADDR="10.0.0.240"
NETMASK="255.255.255.0"
GATEWAY="10.0.0.254"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
DHCPV6C="no"
STP="on"
DELAY="0"
#查看宿主机网桥
[root@kvm ~]# brctl show 
bridge name    bridge id        STP enabled    interfaces
br0        8000.000c294d551b    yes        eth0
virbr0     8000.5254006aaa40    yes        virbr0-nic
==修改虚拟机==
[root@kvm ~]# virsh edit clsn7 
修改前:
    <interface type='network'>
      <mac address='52:54:00:42:bf:bc'/>
      <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:42:bf:bc'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
#虚拟主机内操作
[root@clsn7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.110
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
DNS1=223.5.5.5

========================


KVM虚拟机冷迁移

#在第二台主机上安装KVM组件
[root@kvm02 ~]# yum install libvirt* virt-* qemm-kvm* -y
#配置桥接网络
[root@kvm02 ~]# virsh iface-bridge eth0 br0
mkdir -p /data/
#在第一台主机将虚拟机关机,导出配置文件
[root@kvm ~]#virsh dumpxml clsn7 > clsn7.xml
#将虚拟机导出的文件和磁盘传输到kvm02上
[root@kvm ~]#scp -rp clsn7.xml clsn.qcow2 10.0.0.201:/data
#导出配置文件
[root@kvm02 ~]# virsh define clsn7.xml
[root@kvm02 ~]# virsh start clsn7.xml