KVM 虚拟化技术

1.1KVM部署与使用

系统环境说明(宿主机——KVM虚拟机)

cat /etc/redhat-release

kvm 日志查看 如何查看kvm版本_centos


uname -r

kvm 日志查看 如何查看kvm版本_kvm_02


systemctl stop firewalld

systemctl status firewalld

kvm 日志查看 如何查看kvm版本_centos_03


setenforce 0

getenforce

kvm 日志查看 如何查看kvm版本_kvm_04


hostname -I(大i)

kvm 日志查看 如何查看kvm版本_虚拟化_05


注意:KVM主机内存不能低于4GB

1.1.1 安装KVM虚拟化软件

安装依赖包
yum -y install libvirt* virt-* qemu-kvm
安装软件说明
libvirt 虚拟机管理
virt 虚拟机安装克隆
qemu-kvm 管理虚拟机磁盘

启动服务
systemctl start libvirtd
systemctl status libvirtd

安装VNC软件(略)http://www.tightvnc.com
默认安装即可,无需安装server端

1.1.2 配置第一台KVM虚拟机

打开vmware的虚拟化功能以及vnc连接设置

将虚拟机关机进行操作

图已经设置好了

kvm 日志查看 如何查看kvm版本_CentOS_06


kvm 日志查看 如何查看kvm版本_kvm 日志查看_07


mkdir /data

将镜像文件CentOS-7-x86_64-DVD-1810.iso上传到 /data目录下

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-1810.iso --network network=default --graphics vnc,listen=0.0.0.0,port=5900 --noautoconsole

vnc
连接192.168.11.128:5900

kvm 日志查看 如何查看kvm版本_kvm_08


然后就是只能装centos系统了!!!(略)

等待中!!!!

1.1.3 KVM虚拟机管理操作

参数

参数说明

list

查看虚拟机列表,列出域

start

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

shutdown

关闭虚拟机,关闭一个域

destroy

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

vncdisplay

查询虚拟机vnc端口号

配置管理操作

dumpxml

导出主机配置信息

undefine

删除主机

define

导入主机配置

domrename

对虚拟机进行重命名

挂起与恢复

suspend

挂起虚拟机

resume

恢复虚拟机

自启动管理

autostart

虚拟机开机启动

autostart --disable

取消虚拟机开机启动

以上参数通过 “virsh --help"得到

操作过程:
启动虚拟机:
virsh start centos7

关闭虚拟机:
virsh shutdown centos7

KVM虚拟机配置文件位置
vim /etc/libvirt/qemu/centos7.xml = virsh edit centos7

备份恢复:
备份虚拟机配置(关机时备份)
virsh shutdown centos7
virsh dumpxml centos7 > centos7.xml

删除虚拟机配置

virsh list --all

kvm 日志查看 如何查看kvm版本_kvm_09


virsh undefine centos7

kvm 日志查看 如何查看kvm版本_kvm_10


virsh list --all

kvm 日志查看 如何查看kvm版本_kvm 日志查看_11


导入虚拟机

virsh define centos7.xml

virsh list --all

kvm 日志查看 如何查看kvm版本_CentOS_12

修改虚拟机名称

virsh domrename centos7 lmj(关机)

virsh list

kvm 日志查看 如何查看kvm版本_kvm_13


虚拟机挂起与恢复

virsh start lmj

virsh suspend lmj

virsh list --all

kvm 日志查看 如何查看kvm版本_kvm 日志查看_14


恢复虚拟机

virsh resume lmj查询虚拟机vnc端口

virsh vncdisplay lmj

kvm 日志查看 如何查看kvm版本_centos_15


:0为5900端口,以此类推 :1为5901

开机自启动设置

设置libvirt服务开机自启动

systemctl is-enabled libvirtd.service

kvm 日志查看 如何查看kvm版本_CentOS_16


设置宿主机开机虚拟机在其他

virsh autostart lmj

实质为创建软链接

ll /etc/libvirt/qemu/autostart/clsn7.xml

/etc/libvirt/qemu/autostart/clsn7.xml -> /etc/libvirt/qemu/clsn7.xml

取消开机自启动
virsh autostart --disable lmj

1.2 kvm虚拟机 console 登录

1.2.1 CentOS 7.X 版本console登录

配置console登录
在lmj虚拟机内操作该操作仅限centos7):
grubby --update-kernel=ALL --args=“console=ttyS0,115200n8”
reboot

在宿主机内的操作
virsh console lmj

kvm 日志查看 如何查看kvm版本_centos_17


注:退出virsh console连接的方法,使用组合键Ctrl+]即可

1.3.2 CentOS 6.X 版本console登录

使用virsh console连接CentOS 6虚拟主机方法:
  安装一台centos6的kvm虚拟机
  
virt-install --virt-type kvm --os-type=linux --os-variant rhel6
–name clsn6 --memory 1124 --vcpus 1
–disk /data/clsn6/clsn-6.raw,format=raw,size=10
–cdrom /data/CentOS-6.9-x86_64-bin-DVD1.iso
–network network=default --graphics vnc,listen=0.0.0.0,port=5901
–noautoconsole
 新安装一台虚拟机后,是无法通过virsh console 命令连入虚拟机中的,这时我们需要开启虚拟机的console功能。
 以下操作都在虚拟机中进行
1、添加ttyS0的许可,允许root登陆
echo “ttyS0” >> /etc/securetty

2、编辑/etc/grub.conf中加入console=ttyS0
在该文件的第16行。kernel选项后添加:
sed -i ‘/\tkernel/s#.*#& console=ttyS0#g’ /etc/grub.conf
sync
cat -n /etc/grub.conf

3、编辑/etc/inittab
在最后一行加入内容 S0:12345:respawn:/sbin/agetty ttyS0 115200
echo ‘S0:12345:respawn:/sbin/agetty ttyS0 115200’ >>/etc/inittab

4、以上操作都完成后,重启虚拟机
reboot

在宿主机的操作
virsh console clsn6
注:退出virsh console连接的方法,使用组合键Ctrl+]即可

1.3 KVM虚拟机磁盘、快照与克隆

1.4.1 磁盘管理

KVM qcow2、raw、vmdk等镜像格式说明(百度这句话浏览即可)

创建一块qcow2的虚拟硬盘(仅测试使用,无实际意义)
cd /data
qemu-img create -f qcow2 clsn.qcow2 2G
ls -l
rm -rf qcow2

查看当前虚拟机硬盘信息

qemu-img info /data/clsn.raw

kvm 日志查看 如何查看kvm版本_kvm 日志查看_18


raw 转qcow2格式

qemu-img --help | grep convert

kvm 日志查看 如何查看kvm版本_centos_19


qemu-img convert -f raw -O qcow2 clsn.raw clsn.qcow2

kvm 日志查看 如何查看kvm版本_centos_20


virsh edit lmj

kvm 日志查看 如何查看kvm版本_centos_21


删除原磁盘文件

\rm clsn.raw查看状态

ls /data

kvm 日志查看 如何查看kvm版本_虚拟化_22

1.3.2 KVM虚拟机添加硬盘

进入硬盘存放目录
cd /data

创建一块新的硬盘
qemu-img create -f qcow2 clsn7-add01.qcow2 5G
Formatting ‘clsn7-add01.qcow2’, fmt=qcow2 size=5368709120 encryption=off cluster_size=65536 lazy_refcounts=off

ls

kvm 日志查看 如何查看kvm版本_虚拟化_23

查看创建的硬盘信息

qume-img info clsn7-add01.qcow2

kvm 日志查看 如何查看kvm版本_centos_24


为虚拟机添加硬盘

virsh attach-disk lmj /data/clsn7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2

kvm 日志查看 如何查看kvm版本_centos_25


参数说明:

vdb

第二块硬盘

–live

热添加

–subdriver

驱动类型

卸载硬盘

查看帮助:virsh --help | grep disk

kvm 日志查看 如何查看kvm版本_centos_26


attach-disk 附加磁盘设备

blockpull 从备份映像填充磁盘。

detache-disk 分离磁盘设备将已挂载的磁盘卸载下来

virsh detach-disk lmj vdb

kvm 日志查看 如何查看kvm版本_虚拟化_27


调整磁盘大小

查看帮助:qemu-img --help |grep resize

kvm 日志查看 如何查看kvm版本_虚拟化_28


增加 1G 容量

qemu-img resize clsn7-add01.qcow2 +1G

kvm 日志查看 如何查看kvm版本_CentOS_29


qemu-img info clsn7-add01.qcow2

kvm 日志查看 如何查看kvm版本_kvm_30


重新将磁盘添加到虚拟机

virsh attach-disk lmj /data/clsn7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2

kvm 日志查看 如何查看kvm版本_CentOS_31


在虚拟机中操作

格式化磁盘

mkfs.xfs /dev/vdb挂载磁盘

mount /dev/sdb

df -h | grep /dev/vdb

kvm 日志查看 如何查看kvm版本_CentOS_32

1.3.3 快照管理

注意:raw格式的磁盘无法创建快照(虚拟机停止挂载后操作umount /dev/vdb)

创建快照

virsh snapshot-create lmj

kvm 日志查看 如何查看kvm版本_kvm_33


查看主机快照列表

virsh snapshot-list lmj

kvm 日志查看 如何查看kvm版本_虚拟化_34


查看快照信息

virsh snapshot-info lmj --snapshotname 1557318041

kvm 日志查看 如何查看kvm版本_虚拟化_35


登陆KVM虚拟机,进行删除操作

ls -1|egrep -v ‘proc|sys|run’ |rm -rf

还原快照
virsh snapshot-revert lmj --snapshotname 1557318041

删除快照

virsh snapshot-delete lmj --snapshotname 1557318041

kvm 日志查看 如何查看kvm版本_虚拟化_36


快照配置文件位置

virsh snapshot-create lmj

cd /var/lib/libvirt/qemu/snapshot

tree(yum -y install tree)

kvm 日志查看 如何查看kvm版本_CentOS_37

1.3.4 kvm虚拟机克隆

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

虚拟机的内容并没有改变:virt-clone 不修改任何客户机系统内部的配置,它只复制磁盘和主机端的修改。所以像修改密码,修改静态 IP 地址等操作都在本工具复制范围内。如何修改此类型的配置,请参考 virt-sysprep。
  克隆常用命令(关机克隆):
  virt-clone --auto-clone -o lmj
–auto-clone 从原始客户机配置中自动生成克隆名称和存储路径
-o 原始客户机名称;必须为关闭或者暂停状态。

1.4 kvm虚拟机网络管理

1.4.1 桥接网络配置

1.设置桥接网络
virsh iface-bridge eth0 br0

查看网卡配置文件并修改

vim /etc/sysconfig/network-scripts/ifcfg-eth0

vim /etc/sysconfig/network-scripts/ifcfg-br0

kvm 日志查看 如何查看kvm版本_kvm 日志查看_38


在ifcfg-br0添加如下三行

IPADDR=“192.168.11.132” 原来宿主机的ip

NETMASK=“255.255.255.0” 原来宿主机的掩码

GATEMASK=“192.168.11.2” 原来宿主机的网关2.修改虚拟机网络配置

virsh edit lmj

kvm 日志查看 如何查看kvm版本_CentOS_39


重启eth0网卡

ifdown eth0

ifup eth0修改DNS域名解析的配置文件

vim /etc/resolve.conf

kvm 日志查看 如何查看kvm版本_kvm_40


systemctl restart network

ping www.baidu.com成功查看宿主机网桥

virsh shutdown lmj

virsh start lmj

systemctl restart libvirtd

brctl show

kvm 日志查看 如何查看kvm版本_CentOS_41

3.修改kvm虚拟机网卡配置文件(在KVM虚拟机中操作)

vi /etc/sysconfig/network-scripts/ifcfg-eth0

如图修改

kvm 日志查看 如何查看kvm版本_CentOS_42


改为与br0同一网段即可;

ping ww.baudi.com(ping通)

kvm 日志查看 如何查看kvm版本_centos_43

1.5 图形化管理虚拟机的工具

(1)图形管理工具:

kimchi:基于H5研发的web GUI;virt-king; 网上搜索kimchi kvm 有安装使用教程

OpenStack:IaaS 非常重量级,非常吃资源;至少10台以上的虚拟机才用它

oVirt:比kimchi 功能强大的多,比OpenStack轻量;但配置也较麻烦

proxmox VE

(2)kvm 官方的管理工具栈:https://www.linux-kvm.org/page/Management_Tools

1.8.1 Kvm web 管理工具使用 wok kimchi

1、Wok

  • Wok基于cherrypy的web框架,可以通过一些插件来进行扩展,例如:虚拟化管理、主机管理、系统管理。它可以在任何支持HTML5的网页浏览器中运行。

2、Kimchi

  • Kimchi是一个基于HTML5的KVM管理工具,是Wok的一个插件(使用Kimchi前一定要先安装了wok),通过Kimchi可以更方便的管理KVM。

github地址:https://github.com/kimchi-project

3、安装
yum install epel-release

wget https://github.com/kimchi-project/wok/releases/download/2.5.0/wok-2.5.0-0.el7.centos.noarch.rpm

wget https://github.com/kimchi-project/kimchi/releases/download/2.5.0/kimchi-2.5.0-0.el7.centos.noarch.rpm

yum -y install *.rpm

systemctl daemon-reload
systemctl start wokd
systemctl enable wokd

4、登录

https://192.68.11.28:8001

kvm 日志查看 如何查看kvm版本_CentOS_44


宿主机root用户

r宿主机oot用户密码5.登陆日志

对vm虚拟主机的操作都会记录在这里

kvm 日志查看 如何查看kvm版本_kvm 日志查看_45


6.kvm虚拟机管理

kvm 日志查看 如何查看kvm版本_CentOS_46


创建模板

kvm 日志查看 如何查看kvm版本_虚拟化_47

说明:

kvm虚拟机名:lmj

文件路径:/data/CentOS-7-x86_64-DVD-1810.iso

kvm 日志查看 如何查看kvm版本_虚拟化_48


还有存储信息及网络信息以及创建操作

kvm 日志查看 如何查看kvm版本_kvm 日志查看_49