基于KVM建立虚拟机的步骤及总结说明

您所在的位置:网站首页 架虚拟机 基于KVM建立虚拟机的步骤及总结说明

基于KVM建立虚拟机的步骤及总结说明

2024-06-20 06:29| 来源: 网络整理| 查看: 265

1、前言

        目前正在涉足云计算IaaS工作,虚拟化是IaaS的重要部分,因此这段时间对各个虚拟机化技术和工具进行研究,研究的目的不仅仅是为了会使用这个工具,而是通过研究了解技术的实现机制和原理,即知其然也要知其所以然,本文主要算是本人进入这个技术领域的入门的开始,在记录自己的进展的同时,希望对有类似追求的同仁有所帮助。为了更明晰各个步骤,安装步骤不采用图形方式。

         KVM(不是键盘、显示器、鼠标)是一个基于Linux内核的虚拟化工具,具体的原理正在研究。

         闲话少说,言归正传:

2、试验环境

硬件:Dell PowerEdge 2CPU 8G MEM

操作系统:Centos 5.5

hypervisor:kvm(Kenerl-based virtulization machine)

3、安装步骤 3.1 操作系统安装

这个步骤就不多说了,需要注意的是在安装过程中,选择定制功能,在Virtualization下选择kvm,因为在centos5.5下,虚拟化默认支持xen,安装完成后,建立虚拟化所需要的包如kvm、kvm-qemu、libvirt、python等,会自动安装。

安装完成后,可以使用virsh命令检查一下虚拟化环境是否正常,具体命令如下:

virsh -c qemu:///system list

如果显示一个空列表,说明运行正常。

注:virsh命令是libvirt库提供的一个命令行工具,可以用来管理虚拟机。libvirt是什么?呵呵,这个可是个重要的东东,我将专门用一篇文章进行说明。 3.2 网络配置

操作系统安装完成支持虚拟化相关包后,会自动建立一个名称为virbr0的虚拟网桥,在多网卡情况下,此网桥默认与eth1网卡绑定。为了向虚拟机提供联网功能,KVM使用virbr0作为默认网络设备,因此在实际应用中,需要将virbr0与连接到实际网络的网卡绑定,例如我的是eth0。

具体方法是修改/etc/sysconfig/network-scripts目录下的网卡配置文件,如绑定etho,则修改ifcfg-eth0 和ifcfg-virbr0

   修改后的配置文件内容如下:

   1)ifcfg-eth0

      DEVICE=eth0       ONBOOT=yes       BRIDGE=virbr0       BOOTPROTO=dhcp       TYPE=Ethernet

   2)ifcfg-virbr0              DEVICE=virbr0       TYPE=Bridge        ONBOOT=yes       DELAY=0       BOOTPROTO=none       IPADDR=10.100.0.3       NETMASK=255.255.255.0       GATEWAY=10.100.0.254     

    修改完成后,重新启动网络服务:service network restart    默认的virbr0设置保存在/etc/libvirt/qemu/networks目录下,里面有一个default.xml文件,里面是virbr0的默认配置。

注:虚拟网桥由bridge-utils包中的brctl工具建立,这个包在安装虚拟化相关的包后自动安装, 使用brctl addbr 网桥名称可以增加网桥,使用brctl show显示已有网桥 3.3 建立虚拟机使用的文件

服务器上建立虚拟机的机制与在PC机上使用VMware Workstation、VirtualBox建立虚拟机类似,每个虚拟机均使用一个物理文件保存其安装的系统,模拟成磁盘,用来安装guest 操作系统,此文件可以先建好并格式化为一个专门的虚拟化文件格式(如qcow2),也可以在建立虚拟机的过程中指定,由虚拟机构建程序自动生成。

虚拟机使用的文件可以先以qemu-img命令先建好,也可以在通过使用virt-manager 、 virt-install建立虚拟机时建立,下面是使用qemu-img的语法:

   qemu-img create -f qcow2 win7.img 20G     系统工具中打开

     2)使用qemu-kvm 命令也可以建立虚拟机【libvirt api中应该也提供了类似的函数,openstack、eucalyptus之类的虚拟机管理(也称为云计算管理)工具调用这个函数建立虚拟机】

        命令如下:         qemu-kvm -m 1024 -localtime -M pc -smp 1 -drive file=/opt/images/Win7.img,cache=writeback,boot=on -net nic,macaddr=52:54:00:12:34:80 -net tap -cdrom /opt/ISO/Windows7.iso -boot d -name win7,process=kvm-win7 -vnc :2 -usb -usbdevice tablet

        参数说明如下:               -m 1024  设置虚拟系统内存1024MB               -localtime  使虚拟系统与宿主系统时间一致               -M pc  虚拟系统类型为pc               -smp 1  1个CPU               -drive file=Windows7_x86.img,cache=writeback,boot=on                      硬盘选项,虚拟磁盘是Windows7_x86.img,cache方式为writeback,可引导型磁盘。               -net nic,macaddr=52:54:00:12:34:80  网卡选项,手工指定mac地址。               -net tap  tap类型网络,相当于“桥模式”               -cdrom Windows7.iso  光驱               -boot d  启动顺序。d代表光驱。               -name kvm-win7,process=kvm-win7  为虚拟机取名,便于识别               -vnc :2  这里是通过vnc连接控制窗口,这里是在5902端口。               -usb -usbdevice tablet  启用usb设备中的tablet功能。开启该功能可使虚拟机内外的鼠标同步

        参数与virt-install基本相同。           在安装了磁盘和网卡的半虚拟化驱动后,可以在-drive中加入if=virtio使用磁盘半虚拟化,在-net nic中加入model=virtio使用网卡半虚拟化驱动。virio在kenerl 2.6.24以上版本才能更好的发挥效用。

    3)其实无论用哪种方法建立的基于kvm的虚拟机,都由qemu-kvm进行启动和管理,下面是查看liunx进程显示的一个虚拟机进程:

         qemu-kvm -S -M rhel5.4.0 -m 1024 -smp 2 -name VM-win7 -uuid 71c4020b-ca54-20f2-780c-ec9fa070aa84 -no-kvm-pit-reinjection -monitor pty -pidfile /var/run/libvirt/qemu//VM-ubuntu-1104.pid -boot c -drive file=/opt/images/ubuntu-11.04-desktp.img,if=virtio,index=0,boot=on,cache=none -drive file=,if=ide,media=cdrom,index=2 -net nic,macaddr=54:52:00:0a:55:05,vlan=0,model=virtio -net tap,fd=17,script=,vlan=0,ifname=vnet0 -serial pty -parallel none -usb -vnc 0.0.0.0:11 -k en-us

         一个虚拟机占用一个进程,可以通过进程管理和控制虚拟机。

     4)虚拟机个相关配置保存在一个配置文件中,因此可以手工可以编写一个配置文件,然后通过virsh命令行构建虚拟机,已建好的虚拟机,配置文件更改后,需要用virsh define重新定义后才能生效。

     5)基于KVM建立的虚拟机相关文件默认存放位置          kvm虚拟机配置文件位置/etc/libvirt/qemu/     



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3