KVM相关技术 ------ Kernel-Based Virutal Manager 基于内核虚拟化管理器
一、 虚拟化技术 Virtualization介绍
类型:
1、根据虚拟化技术实现不同分类
1)平台虚拟化 platform virtualization
2)操作系统虚拟化 os virtualization
2、根据hypervisor的安装方式不同分类
1)原生虚拟化
直接安装在物理硬件上
Vmware ESXI, Vsphere
Critix Xen
2)寄居虚拟化
依赖于物理机的操作系统
kvm, vmware workstation, Microsoft Hyper-v, Oralce virtualBox
3、根据hypervisor实现虚拟化管理方式不同分类
1)软件虚拟化 QEMU
半虚拟化 para-virtulization XEN
需要修改内核
RedHat在kvm虚拟化中研发驱动virtio半虚拟化驱动
Linux类型: 默认是安装的
Windows类型:手动安装virtio半虚拟化驱动
硬盘:IDE
网卡:rtl8139
2)硬件辅助虚拟化
需要物理机CPU的支持
kvm, xen, esxi, vsphere
如何确认CPU是否支持硬件辅助虚拟化?
Intel: VT-x
AMD: amd-v
二、kvm ------ Kernel-Based Virutal Manager 基于内核虚拟化管理器
1、kvm介绍
kvm — 内核模块
qemu-kvm 实现对虚拟硬件的模拟功能
kvm管理工具:
virt-manager, virt-viewer, virsh, virt-install
依赖C函数库 libvirtd 服务
2、kvm虚拟化安装
1)确保CPU启用虚拟化功能
[[email protected] ~]# lscpu
虚拟化: VT-x
2)进行安装:
方法一:软件包
[[email protected] ~]# yum install qemu-kvm qemu-img libvirt virt-install libvirt-python virt-manager python-virtinst libvirt-client
qemu-kvm:提供kvm虚拟化资源管理
libvirt: C函数库,确保kvm管理工具可正常使用
qemu-img:用于管理虚拟磁盘
virt-install: 用于创建kvm虚拟机的命令行工具
virt-manager:提供图形化工具
libvirt-python:python连接libvirt的驱动
python-virtinst:python连接libvirt的模块
libvirt-client:提供libvirt的客户端工具
方法二:安装软件包组
3、确保kvm安装成功
1) 查看kvm的内核模块
[[email protected] ~]# lsmod | grep kvm
kvm_intel 162153 0
kvm 525259 1 kvm_intel
[[email protected] ~]#
2) libvirtd服务
centos 7:libvirtd服务启动
[[email protected] ~]# systemctl is-active libvirtd
active
[[email protected] ~]# systemctl is-enabled libvirtd
enabled
centos 6:libvirtd需要动启动
[[email protected] ~]# service libvirtd start
[[email protected] ~]# chkconfig libvirtd on
4、kvm虚拟化安装后系统的变化
1、默认default网络
工作在NAT模式
自带dhcp服务 192.168.122.0/24
virbr0 ---- 192.168.122.1 作为所有default网络中的kvm虚拟机的网关
2、路由转发功能会自动打开
[[email protected] ~]# cat /proc/sys/net/ipv4/ip_forward
1
3、在iptables防火墙的NAT表中会自动SNAT转换规则
[[email protected] ~]# iptables -t nat -nL
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
RETURN all – 192.168.122.0/24 224.0.0.0/24
RETURN all – 192.168.122.0/24 255.255.255.255
MASQUERADE tcp – 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
MASQUERADE udp – 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
MASQUERADE all – 192.168.122.0/24 !192.168.122.0/24
5、kvm虚拟机安装
1)virt-manager图形化管理工具
[[email protected] ~]# virt-manager
可以使用各种安装方式
安装完成后在此处进行虚拟机设置
2)virt-install 命令行工具
示例01: 使用网络安装rhel 6.4(此处已准备好镜像文件在ftp服务器上 搭建ftp服务器详情请查看本博客文章: 搭建FTP服务器。)
[[email protected] ~]#
virt-install
–name=pc_rhel6.4
–graphics vnc,listen=0.0.0.0,port=5910,keymap=en_us
–memory 512,maxmemory=1024
–vcpus 1,maxvcpus=2
–disk path=/var/lib/libvirt/images/pc_rhel6.4.img,size=8,format=qcow2 \ #此处设置虚拟机镜像文件大小格式
–bridge=virbr0 \
–location=ftp://172.16.50.66/rhel6.4
–extra-args=“ks=ftp://172.16.8.100/rhel6.4.ks”
示例02:使用本地镜像安装centos 6.6
[[email protected] ~]# virt-install
–name=pc-centos6.6
–graphics vnc,listen=0.0.0.0,port=5920,keymap=en_us
–memory 512,maxmemory=1024
–vcpus 1,maxvcpus=2
–disk path=/var/lib/libvirt/images/pc_centos6.6.img,size=8,format=qcow2
–bridge=virbr0 \ #此处设置大小格式网桥
–cdrom=/var/ftp/linux/upload/iso/centos6u6.iso
示例03:使用网络安装centos 7
[[email protected] ~]# virt-install
–name=pc_centos7.2
–graphics vnc,listen=0.0.0.0,port=5930,keymap=en_us
–memory 512,maxmemory=1024
–vcpus 1,maxvcpus=2
–disk path=/var/lib/libvirt/images/pc_centos7.2.img,size=8,format=qcow2
–bridge=virbr0
–location=ftp://172.16.8.100/centos7u2
–extra-args=“ks=ftp://172.16.8.100/rhel6.4.ks”
–autostart
6、kvm虚拟机的连接方式
1)ssh
2)virt-viewer命令
[[email protected] ~]# virsh list
[[email protected] ~]# virsh list --all
[[email protected] ~]# virt-viewer pc_test &
3)vnc连接
[[email protected] ~]# vncviewer 127.0.0.1:5920
4)console的连接方式
virsh console <虚拟机名称>
centos 6:
编辑/boot/grub/grub.conf文件,在kernel行的末尾添加console=ttyS0,重启系统
[[email protected] ~]# virsh console pc-centos6.6
centos 7:
-
编辑文件/etc/sysconfig/grub
在GRUB_CMD_LINELINUX行末尾添加console=ttyS0 -
重新生成grub配置文件
[[email protected] ~]#grub2-mkconfig -o /boot/grub2/grub.cfg
退出console连接
ctrl + ]
7、kvm虚拟机的相关文件
一台kvm虚拟机 = 配置文件 + 磁盘镜像文件
配置文件:/etc/libvirt/qemu
[[email protected] qemu]# ls /etc/libvirt/qemu
编辑xml的配置文件
[[email protected] qemu]# virsh edit <kvm虚拟机名称>
磁盘镜像文件:
[[email protected] ~]# ls /var/lib/libvirt/images/
kvm相关的其他文件:
–1–
/etc/libvirt/qemu/autostart目录
存放开机自启动的kvm配置文件的软链接
[[email protected] ~]# virsh autostart centos7-1
[[email protected] ~]# virsh autostart win2k8
[[email protected] ~]# ls -l /etc/libvirt/qemu/autostart/
总用量 0
lrwxrwxrwx 1 root root 31 9月 19 11:51 centos7-1.xml -> /etc/libvirt/qemu/centos7-1.xml
lrwxrwxrwx 1 root root 28 9月 19 11:52 win2k8.xml -> /etc/libvirt/qemu/win2k8.xml
–2–
/etc/libvirt/qemu/networks
存放网络的配置文件
–3–
/etc/libvirt/qemu/storage
存放存储池相关的配置文件