文章目录

  • 一.KVM虚拟化技术简介
  • 1.kvm架构
  • 2.KVM架构解析
  • 二.KVM软件安装
  • 1.环境准备(准备一台可联网的centos)
  • 2.查看CPU是否支持VT技术
  • 3.清理环境,卸载KVM
  • 4.安装软件
  • 5.启动服务
  • 6.查看模块是否加载
  • 三. GuestOS安装
  • 1.图形界面安装
  • 2. 完全文本方式安装
  • 3.命令行模式安装


一.KVM虚拟化技术简介

1.kvm架构

kvm虚拟机图形化管理软件 kvm虚拟化教程_ci

2.KVM架构解析

从rhel6开始使⽤,红帽公司直接把KVM的模块做成了内核的⼀部分。 xen⽤在rhel6之前的企业版中默认内核不⽀持,需要重新安装带xen功能的内核 KVM 针对运⾏在 x86 硬件上的、驻留在内核中的虚拟化基础结构。

KVM 是第⼀个成为原⽣ Linux 内核 (2.6.20)的⼀部分的 hypervisor,它是由 Avi Kivity 开发和维护的,现在归 Red Hat 所有。

这个 hypervisor 提供 x86 虚拟化,同时拥有到 PowerPC® 和 IA64 的通道。另外,KVM 最近还添加了 对对称多处理(SMP)主机(和来宾)的⽀持,并且⽀持企业级特性,⽐如活动迁移(允许来宾操作系 统在物理服务器之间迁移)。

KVM 是作为内核模块实现的,因此 Linux 只要加载该模块就会成为⼀个hypervisor。KVM 为⽀持 hypervisor 指令的硬件平台提供完整的虚拟化(⽐如 Intel® Virtualization Technology [Intel VT] 或 AMD Virtualization [AMD-V] 产品)。KVM 还⽀持准虚拟化来宾操作系统,包括 Linux 和 Windows®。

这种技术由两个组件实现。第⼀个是可加载的 KVM 模块,当在 Linux 内核安装该模块之后,它就可以 管理虚拟化硬件,并通过 /proc ⽂件系统公开其功能。第⼆个组件⽤于 PC 平台模拟,它是由修改版 QEMU 提供的。QEMU 作为⽤户空间进程执⾏,并且在来宾操作系统请求⽅⾯与内核协调。

当新的操作系统在 KVM 上启动时(通过⼀个称为 KVM 的实⽤程序),它就成为宿主操作系统的⼀个 进程,因此就可以像其他进程⼀样调度它。但与传统的 Linux 进程不⼀样,来宾操作系统被 hypervisor 标识为处于 “来宾” 模式(独⽴于内核和⽤户模式)。

每个来宾操作系统都是通过 /dev/KVM 设备映射的,它们拥有⾃⼰的虚拟地址空间,该空间映射到主机 内核的物理地址空间。如前所述,KVM 使⽤底层硬件的虚拟化⽀持来提供完整的(原⽣)虚拟化。I/O 请求通过主机内核映射到在主机上(hypervisor)执⾏的 QEMU 进程。 KVM 在 Linux 环境中以主机的⽅式运⾏,不过只要底层硬件虚拟化⽀持,它就能够⽀持⼤量的来宾操 作系统.

二.KVM软件安装

1.环境准备(准备一台可联网的centos)
2.查看CPU是否支持VT技术
cat /proc/cpuinfo | grep -E 'vmx|svm'
3.清理环境,卸载KVM
yum remove `rpm -qa | egrep 'qemu|virt|KVM'` -y
rm -rf /var/lib/libvirt /etc/libvirt/
4.安装软件
#Centos6
yum groupinstall "Virtualization" "Virtualization Client" "Virtualization Platform" "Virtualization Tools" -y

#Centos7
yum install *qemu* *virt* librbd1-devel -y

#qemu-KVM: 主包
#libvirt:API接⼝
#virt-manager:图形管理程序


#Centos8
#yum 组安装已经可以使⽤了
#问题:在进⾏组安装的时候会出现关于rpm版本的错误问题
#解决
yum upgrade rpm -y

#安装成功之后还是要单独安装virt-manager⼯具
5.启动服务
systemctl start libvirtd
6.查看模块是否加载
lsmod | grep KVM
#查看是否有 KVM_intel 和KVM 这两个模块

三. GuestOS安装

  • 图形⽅式(⾮常重要 ⾮常简单)
  • 完全⽂本模式(现场配置虚拟机的规格)
  • 命令⾏模式(重中之重 最常⽤ 模板镜像+配置⽂件 ⽅式配置规格)
  • 通过⻜机驾驶舱安装和管理虚拟 机
yum install *cockpit* -y
 systemctl start cockpi
 访问: 浏览器访问 ``服务器地址:9090
1.图形界面安装
virt-manager

kvm虚拟机图形化管理软件 kvm虚拟化教程_linux_02

2. 完全文本方式安装

注意:不需要讲,了解即可 极端情况-服务器没有图形 客户端也没有图形

virt-install --connect qemu:///system -n vm6 -r 512 --disk
path=/virhost/vmware/vm6.img,size=7 --os-type=linux --os-variant=rhel6 --
vcpus=1 --network bridge=br0 --location=http://127.0.0.1/rhel6u4 -x
console=ttyS0 --nographics

virt-install --connect qemu:///system -n vm9 -r 2048 --disk
path=/var/lib/libvirt/images/vm9.img,size=7 --os-type=linux --osvariant=centos7.0 --vcpus=1 --location=ftp://192.168.100.230/centos7u3 -x
console=ttyS0 --nographics

注意:

\1. ⽤这种⽅式安装的操作系统,⼤⼩写会胡乱变化,不影响远程操作

\2. 内存必须2G以上 查看KVM⽀持的OS版本

man virt-install 

osinfo-query os | grep centos

排错 :

安装过程中: 
⼿动配置IP地址 到url位置找不到路径,要返回去⼿动选择url,重新配置url为ftp://192.168.100.230/rhel6u4,这 ⾥的ip不要写127.0.0.1⽽是br0的ip 
给虚拟机指定的内存必须⼤于2048M,不然报错如下: dracut-initqueue[552]: /sbin/dmsquash-live-root: line 273: printf: write error: No space left on device
3.命令行模式安装

虚拟机的组成部分

  1. 虚拟机配置⽂件
root@noviciate ~]# ls /etc/libvirt/qemu
networks vm1.xml
  1. 储存虚拟机的介质
[root@noviciate ~]# ls /var/lib/libvirt/images/
vm1.img
  1. 根据配置⽂件创建虚拟机
1.需要有磁盘镜像⽂件:
[root@noviciate ~]# cp vm1.img vm2.img
2.需要有配置⽂件
[root@noviciate ~]# cp vm1.xml vm2.xml
3.配置⽂件需要修改必要的内容
4.创建虚拟机:
[root@noviciate ~]# virsh define /etc/libvirt/qemu/vm2.xml
  1. 实例

模板镜像+配置⽂件 ⽅式创建虚拟机

一.KVM虚拟化技术简介
1.kvm架构

2.KVM架构解析
 从rhel6开始使⽤,红帽公司直接把KVM的模块做成了内核的⼀部分。 xen⽤在rhel6之前的企业版中默认内核不⽀持,需要重新安装带xen功能的内核 KVM 针对运⾏在 x86 硬件上的、驻留在内核中的虚拟化基础结构。
KVM 是第⼀个成为原⽣ Linux 内核 (2.6.20)的⼀部分的 hypervisor,它是由 Avi Kivity 开发和维护的,现在归 Red Hat 所有。
 这个 hypervisor 提供 x86 虚拟化,同时拥有到 PowerPC® 和 IA64 的通道。另外,KVM 最近还添加了 对对称多处理(SMP)主机(和来宾)的⽀持,并且⽀持企业级特性,⽐如活动迁移(允许来宾操作系 统在物理服务器之间迁移)。
 KVM 是作为内核模块实现的,因此 Linux 只要加载该模块就会成为⼀个hypervisor。KVM 为⽀持 hypervisor 指令的硬件平台提供完整的虚拟化(⽐如 Intel® Virtualization Technology [Intel VT] 或 AMD Virtualization [AMD-V] 产品)。KVM 还⽀持准虚拟化来宾操作系统,包括 Linux 和 Windows®。 
这种技术由两个组件实现。第⼀个是可加载的 KVM 模块,当在 Linux 内核安装该模块之后,它就可以 管理虚拟化硬件,并通过 /proc ⽂件系统公开其功能。第⼆个组件⽤于 PC 平台模拟,它是由修改版 QEMU 提供的。QEMU 作为⽤户空间进程执⾏,并且在来宾操作系统请求⽅⾯与内核协调。
 当新的操作系统在 KVM 上启动时(通过⼀个称为 KVM 的实⽤程序),它就成为宿主操作系统的⼀个 进程,因此就可以像其他进程⼀样调度它。但与传统的 Linux 进程不⼀样,来宾操作系统被 hypervisor 标识为处于 "来宾" 模式(独⽴于内核和⽤户模式)。 
每个来宾操作系统都是通过 /dev/KVM 设备映射的,它们拥有⾃⼰的虚拟地址空间,该空间映射到主机 内核的物理地址空间。如前所述,KVM 使⽤底层硬件的虚拟化⽀持来提供完整的(原⽣)虚拟化。I/O 请求通过主机内核映射到在主机上(hypervisor)执⾏的 QEMU 进程。 KVM 在 Linux 环境中以主机的⽅式运⾏,不过只要底层硬件虚拟化⽀持,它就能够⽀持⼤量的来宾操 作系统.  
二.KVM软件安装
1.环境准备(准备一台可联网的centos)
2.查看CPU是否支持VT技术
cat /proc/cpuinfo | grep -E 'vmx|svm'

3.清理环境,卸载KVM
yum remove `rpm -qa | egrep 'qemu|virt|KVM'` -y
rm -rf /var/lib/libvirt /etc/libvirt/
4.安装软件
#Centos6
yum groupinstall "Virtualization" "Virtualization Client" "Virtualization Platform" "Virtualization Tools" -y

#Centos7
yum install *qemu* *virt* librbd1-devel -y

#qemu-KVM: 主包
#libvirt:API接⼝
#virt-manager:图形管理程序


#Centos8
#yum 组安装已经可以使⽤了
#问题:在进⾏组安装的时候会出现关于rpm版本的错误问题
#解决
yum upgrade rpm -y

#安装成功之后还是要单独安装virt-manager⼯具

5.启动服务
systemctl start libvirtd
6.查看模块是否加载
lsmod | grep KVM
#查看是否有 KVM_intel 和KVM 这两个模块
三. GuestOS安装
● 图形⽅式(⾮常重要 ⾮常简单) 
● 完全⽂本模式(现场配置虚拟机的规格)
● 命令⾏模式(重中之重 最常⽤ 模板镜像+配置⽂件 ⽅式配置规格)
● 通过⻜机驾驶舱安装和管理虚拟 机
yum install *cockpit* -y
 systemctl start cockpi
 访问: 浏览器访问 服务器地址:9090  
1.图形界面安装
virt-manager

2. 完全文本方式安装
 注意:不需要讲,了解即可 极端情况-服务器没有图形 客户端也没有图形    
virt-install --connect qemu:///system -n vm6 -r 512 --disk
path=/virhost/vmware/vm6.img,size=7 --os-type=linux --os-variant=rhel6 --
vcpus=1 --network bridge=br0 --location=http://127.0.0.1/rhel6u4 -x
console=ttyS0 --nographics

virt-install --connect qemu:///system -n vm9 -r 2048 --disk
path=/var/lib/libvirt/images/vm9.img,size=7 --os-type=linux --osvariant=centos7.0 --vcpus=1 --location=ftp://192.168.100.230/centos7u3 -x
console=ttyS0 --nographics 
 注意: 
1. ⽤这种⽅式安装的操作系统,⼤⼩写会胡乱变化,不影响远程操作 
2. 内存必须2G以上 查看KVM⽀持的OS版本  
man virt-install 

osinfo-query os | grep centos

 排错  :
 安装过程中: 
⼿动配置IP地址 到url位置找不到路径,要返回去⼿动选择url,重新配置url为ftp://192.168.100.230/rhel6u4,这 ⾥的ip不要写127.0.0.1⽽是br0的ip 
给虚拟机指定的内存必须⼤于2048M,不然报错如下: dracut-initqueue[552]: /sbin/dmsquash-live-root: line 273: printf: write error: No space left on device  
3.命令行模式安装
 虚拟机的组成部分  
1.  虚拟机配置⽂件  
root@noviciate ~]# ls /etc/libvirt/qemu
networks vm1.xml
2. 储存虚拟机的介质
[root@noviciate ~]# ls /var/lib/libvirt/images/
vm1.img
3. 根据配置⽂件创建虚拟机  
1.需要有磁盘镜像⽂件:
[root@noviciate ~]# cp vm1.img vm2.img
2.需要有配置⽂件
[root@noviciate ~]# cp vm1.xml vm2.xml
3.配置⽂件需要修改必要的内容
4.创建虚拟机:
[root@noviciate ~]# virsh define /etc/libvirt/qemu/vm2.xml
4.   实例  
 模板镜像+配置⽂件 ⽅式创建虚拟机  
1.拷⻉模板镜像和配置⽂件
[root@KVM ~][root@noviciate ~]# cp /var/lib/libvirt/images/vm2.img
/var/lib/libvirt/images/vm3.img
[root@KVM ~][root@noviciate ~]# cp /etc/libvirt/qemu/vm2.xml
/etc/libvirt/qemu/vm3.xml
2.修改配置⽂件
[root@noviciate ~]# vim /etc/libvirt/qemu/vm3.xml
<domain type='KVM'>
<name>vm3</name>
<uuid>a2f62549-c6b7-4b8f-a8e2-c14edda35a78</uuid>
<memory unit='KiB'>2099200</memory>
<currentMemory unit='KiB'>2099200</currentMemory>
千锋云计算学院
<vcpu placement='static'>2</vcpu>
<os>
 <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
 <boot dev='hd'/>
</os>
<features>
 <acpi/>
 <apic/>
</features>
<cpu mode='custom' match='exact' check='partial'>
 <model fallback='allow'>Haswell-noTSX</model>
</cpu>
<clock offset='utc'>
 <timer name='rtc' tickpolicy='catchup'/>
 <timer name='pit' tickpolicy='delay'/>
 <timer name='hpet' present='no'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
 <suspend-to-mem enabled='no'/>
 <suspend-to-disk enabled='no'/>
</pm>
<devices>
 <emulator>/usr/libexec/qemu-KVM</emulator>
 <disk type='file' device='disk'>
 <driver name='qemu' type='qcow2'/>
 <source file='/var/lib/libvirt/images/vm3.im'/>
 <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='/var/lib/libvirt/images/vm3-1.img'/>
 <target dev='vda' bus='virtio'/>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x16'
function='0x0'/>
 </disk>
 <controller type='usb' index='0' model='ich9-ehci1'>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
function='0x7'/>
 </controller>
 <controller type='usb' index='0' model='ich9-uhci1'>
 <master startport='0'/>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
function='0x0' multifunction='on'/>
 </controller>
 <controller type='usb' index='0' model='ich9-uhci2'>
 <master startport='2'/>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
function='0x1'/>
 </controller>
 <controller type='usb' index='0' model='ich9-uhci3'>
 <master startport='4'/>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
function='0x2'/>
 </controller>
 <controller type='pci' index='0' model='pci-root'/>
 <controller type='virtio-serial' index='0'>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x05'
function='0x0'/>
 </controller>
 <interface type='network'>
 <mac address='52:54:00:f2:28:6f'/>
 <source network='default'/>
 <model type='virtio'/>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x03'
function='0x0'/>
 </interface>
 <serial type='pty'>
 <target type='isa-serial' port='0'>
 <model name='isa-serial'/>
 </target>
 </serial>
 <console type='pty'>
 <target type='serial' port='0'/>
 </console>
 <channel type='unix'>
 <target type='virtio' name='org.qemu.guest_agent.0'/>
 <address type='virtio-serial' controller='0' bus='0' port='1'/>
 </channel>
 <input type='mouse' bus='ps2'/>
 <input type='keyboard' bus='ps2'/>
 <memballoon model='virtio'>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x07'
function='0x0'/>
 </memballoon>
</devices>
</domain>