【云计算篇】虚拟化kvm相关

第一部分:kvm简介
是 Kernel-based Virtual Machine 的简称,KVM 要求 CPU 支持硬件虚拟化技术(如 intel VT 或 AMD-V),是 Linux 下的全虚拟化解决方案。
KVM 由处于内核态的 KVM 模块和用户态的 QEMU 两部分构成。
KVM 虚拟化技术是当前云计算中计算虚拟化的主流技术,是云计算的核心底层能力,使用 KVM 把多台物理机虚拟化后,组成一个大的虚拟资源池,方便用户从资源池中按需分配计算能力,提升资源的使用效率,同时保证多用户资源之间的隔离性、安全性

第二部分:kvm的使用
备:操作节点node03

  • 一、CPU检查
    提前设置虚拟机的支持虚拟化。如下图所示:
    【云计算篇】虚拟化kvm相关_第1张图片

  • 二、kvm的组成部分

【云计算篇】虚拟化kvm相关_第2张图片
kvm有Qemu用户模块和内核模块组成,内核模块主要处理模拟CPU,而Qemu则是模拟除了CPU以外的部分,比如I/O。
由于内核模块在linux内核中已经包含,所以只需要安装用户空间的QemuKvm即可。

egrep -c ‘(vmx|svm)’ /proc/cpuinfo
大于0就说明CPU支持虚拟化 。

  • 三、kvm的安装。

    • 安装命令kvm:

      yum install qemu-kvm (用户模块的安装)
      安装虚拟化管理工具:
      yum install -y virt_manager libvirt libvirt-python python-virtinst bridge-utils
      检查内核模块是否备激活:
      lsmod | grep kvm
      若有返回如:
      kvm_intel 54285 0
      kvm 333172 1 kvm_intel
      说明被激活。
      若未被激活可使用:modprode kvm以及modprode kvm-intel 激活。

    • libvirt 操作

      service iptables stop
      chkconfig iptables off
      然后,service libvirtd restart
      chkconfig libvirtd on

以上的准备工作完成后,下面是主要的操作。

  • 四、创建虚拟机硬盘

qemu-img create -f qcow2 /kvmtest/centos-6.5.qcow2 10G

  • 五、默认网络配置文件

/etc/libvirt/qemu/networks

  • 六、创建虚拟机

virt-install –virt-type kvm –name centos-6.5 –ram 1024 \
–vcpus 1 \
–cdrom=/kvmtest/CentOS-6.5-x86_64-minimal.iso \
–disk /kvmtest/centos-6.5.qcow2,format=qcow2 \
–network network=default \
–graphics vnc,listen=0.0.0.0 –noautoconsole \
–os-type=linux –os-variant=rhel6

查看安装后的情况,使用libvirt的shell即可。

virsh
通过help查看命令。
比如可使用:
1.list 查看当前虚拟机使用情况,
2.查看全部的虚拟机,使用list –all 查看。
3.开启某台虚拟机,start domainName/domainID (使用list显示的虚拟机的id或名称均可)
4.关闭虚拟机,shoutdown domainName/domainI
5.查看端口可通过:dumpxml domainID

  • 七、使用vnc远程桌面工具的方式安装虚拟机镜像并连接访问虚拟机:
    备:vnc连接的端口是宿主机的端口,而非虚拟机的端口
    操作如下图所示:
    a.vmware的vnc连接如图:
    【云计算篇】虚拟化kvm相关_第3张图片
    b.【云计算篇】虚拟化kvm相关_第4张图片
    。。。。。。
    安装过程参见此

安装完成下次启动vnc就可以访问虚拟机了 。
注意通过dumxml命令查看需要安装的虚拟机的port。然后连接。
完成所有的操作后,创建虚拟机的时候新建的centos-6.5.qcow2的文件会变成真实的数据文件。然后进入 /etc/libvirt/qemu下寻找centos-6.5.xml的文件,备份其修改其配置。
需要删除的项有:、中的(网卡中mac地址,删后会自动创建 )
需要修改的项有:、(磁盘位置)、
最后在virsh下define centos-6.5-new.xml 加载配置到libvirt .然后在list –all 便可显示新增的虚拟机。

八、网络连接
一台linux宿主机上有不同的虚拟机时候,需要把系统内核下的/proc/sys/net/ipv4/ip _forward的0改成1。既echo 1>/proc/sys/net/ipv4/ip _forward,把ip_forward包转发的机制,操作系统默认是0:关闭的。现在打开即可。因为这个宿主机了有不同虚拟机了,有不同的ip地址,需要要开启包转发的机制。让新安装的虚拟机可以上网。
【proc是内核的映射,能和内核交互的只有2种途径,一个是发起API系统调用,一个改系统下的文件。】

安装完成后,查看接口情况,ipconfig,可发现会多出来virbr0,以及vnet0,如果开启2个则还有vnet1。如果关闭其中一个虚拟机,则会少一个vnet,它是动态根据虚拟机的启动情况创建的。他是宿主机的eth0网卡关联的。一个映射关系。
在virsh下可通过domiflist 主机号查看此虚拟机在宿主机使用的是那个接口。
其中显示的source下的default是对应着/etc/libvirt/qemu/networks下的default.xml。

  1 <network>
  2   <name>defaultname>
  3   <uuid>6edb41a6-8099-48dc-8915-44b1dee8336buuid>
      4   <bridge name="virbr0" /> // 桥接器(类似交换机,把凡是选择此中类型的虚拟机插在这一个接口上,在ifconfig里所见,验证通过命令:brctl show )
  5   <mac address='52:54:00:12:E9:AB'/>
  6   <forward/>
  7   <ip address="192.168.122.1" netmask="255.255.255.0">
  8     <dhcp>
  9       <range start="192.168.122.2" end="192.168.122.254" />
 10     dhcp>
 11   ip>
 12 network>

桥接器部分分析,yum install tcpdump -y (抓包的小工具)
tcpdump -n -i vnet0 icmp // 只抓取ping命令的信息 ,前提是在vnc上ping一个地址,比如ping百度。
brctl控制桥接设备用的。

总结来说创建虚拟机的过程主要:

1.创建虚拟机
a.创建磁盘(见:四)qemu-img create -f qcow2 /kvmtest/centos-6.5.qcow2 10G
b.定义虚拟机的配置(见:六)
2.新的虚拟机(备份虚拟机)
a.通过拷贝磁盘镜像:包括了安装过的操作系统的数据,
b.应用新的配置。(复制的过程其实就是复制了配置,关联数据后最后才是一台完整的机器)
3.配置文件
a.物理磁盘路径:/etc/libvirt/qemu/damain.xml
b.通过运行时候查看,virsh 然后 dumpxml -domainID
修改配置的方式:edit domainID
4.virsh下define /etc/libvirt/qemu/domain.xml

你可能感兴趣的:(云计算)