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 <---建立一个格式为qcow2、大小为20G的文件
建立完成后,显示:Formatting 'win7.img', fmt=qcow2, size=20971520 kB
可以使用下面的命令检查文件格式: A、file win7.img Win7.img: x86 boot sector; partition 1: ID=0x7, active, starthead 32, startsector 2048, 204800 sectors; partition 2: ID=0x7, starthead 223, startsector 206848, 40751104 sectors B、qemu-img info win7.img image: VM-Win7-1.img file format: raw virtual size: 20G (20971520000 bytes) disk size: 20G
备注:虚拟文件的格式有许多种,将在独立的文章中说明和分析。
3.4 建立虚拟机
完成上述的准备后,可以建立虚拟机了,这里使用virt-install命令完成本项工作。命令如下:
virt-install --name VM-Win7-2 \ &nb