企业虚拟化Kvm实战(在Linux系统里安装Linux系统)

目录

什么是虚拟化

常用的虚拟化产品有哪些

虚拟化技术的分类:

平台虚拟化类型

全虚拟化(Full Virtualization):

半虚拟化(Para Virtualization):

硬件辅助虚拟化

部分虚拟化

企业级虚拟化与桌面级虚拟化的区别

KVM虚拟化技术简介

KVM安装

1.KVM虚拟化技术简介

2.KVM安装

1.KVM gustos图形方式部署安装虚拟机

2.完全文本方式安装虚拟机

3.模板镜像+配置文件 方式安装虚拟机

 


什么是虚拟化

虚拟化(Virtualization)技术最早出现在 20 世纪 60 年代的 IBM 大型机系统,在70年代的 System 370 系列中逐渐流行起来,这些机器通过一种叫虚拟机监控器(Virtual Machine Monitor,VMM)的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机(Virtual Machine)实例。随着近年多核系统、集群、网格甚至云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,不仅降低了 IT 成本,而且还增强了系统安全性和可靠性

常用的虚拟化产品有哪些

1.Kvm(redhat)企业级
2.Vmware:
Vmware-workstation(windows和linux)桌面级
Vmware-fusion(mac)
Vmware-esxi(企业级别)本身就是一个操作系统。
3.hyper-v(微软)
4.Ovm(oracle公司--Windows linux) virtulbox
5.Xen(rhel6之前所有版本默认用的虚拟化产品)

虚拟化技术的分类:

平台虚拟化(Platform Virtualization),针对计算机和操作系统的虚拟化//针对计算机操作系统。
资源虚拟化(Resource Virtualization),针对特定的系统资源的虚拟化,比如内存、存储、网络资源等。
应用程序虚拟化(Application Virtualization),包括仿真、模拟、解释技术等。把硬件的东西变成了一个应用。

我们通常所说的虚拟化主要是指平台虚拟化技术,通过使用控制程序(Control Program,也被称为 Virtual Machine Monitor(虚拟监控器VMM) 或Hypervisor,隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(称为虚拟机)。

平台虚拟化类型

操作系统虚拟化:有一个非常常见的操作系统叫openvz。特点是所有的虚拟机共享宿主机的内核。

全虚拟化(Full Virtualization):

全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其它系统软件完全不做任何修改就可以在虚拟机中运行。

现在的kvm与vmware都支持全虚拟化

全虚拟化的运行速度要快于硬件模拟,但是性能方面不如裸机,因为Hypervisor需要占用一些资源

半虚拟化(Para Virtualization):

半虚拟化(也叫超虚拟化)是另一种类似于全虚拟化的技术,它使用Hypervisor分享存取底层的硬件,但是它的guest操作系统集成了虚拟化方面的代码。因为操作系统自身能够与虚拟进程进行很好的协作。

半虚拟化需要guest操作系统做一些修改,使guest操作系统意识到自己是处于虚拟化环境的,但是半虚拟化提供了与原操作系统相近的性能。

硬件辅助虚拟化

硬件辅助虚拟化是指借助硬件(主要是主机处理器)的支持来实现高效的全虚拟化。

部分虚拟化

企业级虚拟化与桌面级虚拟化的区别

桌面级虚拟化:
App  ---在安装APP,通过App实现各种功能
guestos  ---客户机也叫客户操作系统
vmware-workstation(hypervisor(虚拟机管理程序)+图形管理工具)
os
硬件

企业级虚拟化
App(图形管理工具)
guestos
os+hypervisor:在操作系统级别加上了虚拟机管理程序
硬件

KVM虚拟化技术简介

KVM 针对运行在 x86 硬件上的、驻留在内核中的虚拟化基础结构。KVM 是第一个成为原生 Linux 内核(2.6.20)的一部分的 hypervisor,它是由 Avi Kivity 开发和维护的,现在归 Red Hat 所有。
KVM 是作为内核模块实现的

KVM安装

1.KVM虚拟化技术简介

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 环境中以主机的方式运行,不过只要底层硬件虚拟化支持,它就能够支持大量的来宾操作系统.

2.KVM安装

kvm虚拟化平台软件一般装在操作系统为Centos上面(图形界面UGI)

大家不想把电脑装为Centos的操作系统,可以用VMware workstations装一台配置较高的虚拟机(cpu、内存、磁盘)给的尽可能最大,然后需要在开启之前做如下操作

然后打开虚拟机,安装kvm即可

一般企业如果使用kvm虚拟机平台,都会把物理服务器装成Centos的操作系统,然后装上kvm,创建虚拟机

需求内核(rhel6以上):   
[root@youngfit ~]# uname  -r
    2.6.32-358.el6.x86_64 
   
升级系统:(在安装虚拟机出错的情况下,一般是操作系统的版本问题)
[root@youngfit ~]# yum upgrade

安装软件:
[root@youngfit ~]# yum install *qemu*  *virt*  librbd1-devel -y #记不住软件包名的情况下这样输入

其实下载的是下面几款软件
[root@youngfit ~]# yum install qemu-kvm libvirt virt-manager  librbd1-devel -y   
qemu-kvm libvirt virt-manager 
在所谓的kvm技术中,应用到的其实有2个东西:qemu+kvm
kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备;
qemu是模拟IO设备(网卡,磁盘),kvm加上qemu之后就能实现真正意义上服务器虚拟化。
因为用到了上面两个东西,所以一般都称之为qemu-kvm。
libvirt则是调用kvm虚拟化技术的接口用于管理的,用libvirt管理方便,直接用qemu-kvm的接口太繁琐。

启动服务:    
centos7:
[root@youngfit ~]# systemctl start libvirtd
[root@youngfit ~]# systemctl enable libvirtd

查看kvm模块加载:
[root@youngfit ~]# lsmod | grep kvm
        kvm_intel              53484  3 
        kvm                   316506  1 kvm_intel
如果看到有这两行,说明支持kvm模块

1.KVM gustos图形方式部署安装虚拟机

图形模式安装虚拟机(guest os)
[root@youngfit ~]#  virt-manager
====================
下面就是点点点

安装完成一台虚拟机之后,网络模式也是有桥接和NAT的
想让kvm的NAT模式的虚拟机连通外网
需要在宿主机打开路由转发功能,然后重启libvirtd即可

2.完全文本方式安装虚拟机

  • 按照顺序操作,否则报错,系统安装报错

  • 宿主机网卡先设置为NAT模式

  • [root@youngfit ~]# yum -y install vsftpd
    上传镜像到虚拟机
    [root@youngfit ~]# mkdir /var/ftp/centos7u4
    [root@youngfit ~]# mount 镜像 /var/ftp/centos7u4
    [root@youngfit ~]# systemctl start vsftpd
    [root@youngfit ~]# systemctl stop firewalld && setenforce 0 #否则无法读取ftp服务的介质
    [root@youngfit ~]# virt-install --connect qemu:///system -n vm10 -r 2050 --disk path=/var/lib/libvirt/images/vm10.qcow2,size=5  --os-type=linux --os-variant=centos7.0 --vcpus=1  --location=ftp://192.168.14.60/centos7u4 -x console=ttyS0 --nographics

    [root@youngfit ~]# virt-install --connect qemu:///system -n test1 -r 2050 --disk path=/var/lib/libvirt/images/test1.qcow2,size=3  --os-type=linux --os-variant=centos7.0 --vcpus=1  --location=ftp://192.168.153.13/centos7u4 -x console=ttyS0 --nographics

    qemu:///system  系统如果在裸露的金属内核上运行为根(需要KVM安装)
    -n name
    -r  以M为单位指定分配给虚拟机的内存大小
    --disk 指定作为客户机存储的媒介 size以G为单位的存储
    --os-type   针对一类操作系统优化虚拟机配置
    --os-variant 针对特定操作系统变体进一步优化虚拟机配置
    --vcpus 指定核数
    --location  客户虚拟机kernel+initrd 安装源,必须为镜像挂载在ftp目录下
    -x console=ttyS0 执行终端
    --nographics 无图形,文本模式

    缺点:纯文本安装的输入时大小写莫名的变换,远程ssh没问题
         内存必须大于2048

    排错:
        安装过程中:
            手动配置IP地址
            到url位置找不到路径,要返回去手动选择url,重新配置url为ftp://192.168.14.60/rhel6u4,这里的ip不要写127.0.0.1

注意:命令敲下去,不要误操作退出安装

输入2,回车,进入文本模式安装

 

c继续、q退出、b安装 、(数字)选项

显示!的选项,都未设置,不要漏设置

下面的按照提示安装即可

如果安装出来的kvm虚拟机不能ping通百度,需要把宿主机的防火墙开启,因为需要nat地址转换才行,nat转发规则在宿主机的firewalld防火墙配置规则中。

3.模板镜像+配置文件 方式安装虚拟机

复制两个配置文件(修改细节)

参数:define方式创建好,不会启动
           create方式创建好,会启动

记住两个目录:
/etc/libvirt/qemu          虚拟机配置文件存放目录
/var/lib/libvirt/images/   虚拟机磁盘镜像(磁盘文件)存放目录

# virsh define /etc/libvirt/qemu/vm2.xml

1.拷贝模板镜像和配置文件
# cp /var/lib/libvirt/images/vm2.img /var/lib/libvirt/images/vm3.img
# cp /etc/libvirt/qemu/vm2.xml /etc/libvirt/qemu/vm3.xml

2.修改配置文件
# vim /etc/libvirt/qemu/vm3.xml
<domain type='kvm'>
  <name>vm3</name>     #此处应修改,名字不能相同
  <uuid>a2f62549-c6b7-4b8f-a8e2-c14edda35a78</uuid>   #uuit不能相同
  <memory unit='KiB'>2099200</memory>     #内存,可选
  <currentMemory unit='KiB'>2099200</currentMemory>  #内存,可选
  <vcpu placement='static'>2</vcpu>       #cpu核数可选
  <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.img'/>  #磁盘名称
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' 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'/>   #mac地址不能相同
      <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>
必须修改name,uuid,mac地址,其余可选

用vim修改完之后需要define一下配置文件
# virsh define /etc/libvirt/qemu/vm3.xml

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值