使用virsh工具创建虚拟机模板

今天我们介绍使用virsh虚拟机管理工具组件来创建虚拟机模板

首先准备基础环境:

在vmware上安装一台Centos7.0的虚拟机
使用virsh工具创建虚拟机模板
打开CPU的虚拟化功能
安装完操作系统之后验证虚拟化功能是否打开
使用 egrep --color=auto "(svm|vmx)" /proc/cpuinfo进行查看

使用virsh工具创建虚拟机模板
安装libvirt的工具组件
yum install libvirt libvirt-client virt-manager virt-install
因为我们要使用libvirt组件去管理kvm,所以在物理机上需要安装qemu-kvm
systemctl start libvirtd 启动服务
libvirt和libvirtd的配置文件:
守护进程配置文件:/etc/libvirt/libvirt.conf
/etc/libvirt/qemu/networks/目录下面有一个default.xml的配置文件

使用virsh工具创建虚拟机模板
此文件中定义的是qemu系的虚拟机的基本配置信息,例如安装完libvirt之后会生成一个名为bridge的网桥,并生成一个IP地址,还可以实现dhcp服务的自动分配。
下面我们使用virt-install进行虚拟机模板镜像的制作

Centso7.0镜像模板制作

下面这个示例创建一个名为rhel7.0的虚拟机,其hypervisor为kvm,内存大小为512MB,存储磁盘为20G的映像文件/images/rhel7.0.img,通过iso光盘镜像来引导启动安装过程,虚拟机网卡连接物理主机上的名为brnet0的桥接网络;虚拟机显卡类型为cirrus。
virt-install --connect qemu:///system --virt-type kvm --name rhel7.0 --vcpus 1,maxvcpus=4 --ram 512 --disk path=/image/rhel7.0.img,size=20,format=qcow2,bus=virtio,sparse --network bridge=brnet0,model=virtio --graphics vnc --cdrom /tmp/CentOS-7.0-1406-x86_64-DVD.iso --os-variant rhel7 --force --video=cirrus

使用virsh工具创建虚拟机模板
使用virsh工具创建虚拟机模板
虚拟机安装完成后,进入虚拟机查看驱动信息
使用virsh工具创建虚拟机模板
在宿主机机上使用brctl查看网桥信息可以看到虚拟机的网卡挂载到virbr下面
使用virsh工具创建虚拟机模板
我们使用virsh工具组件创建的虚拟机关机之后可以在virt-manager图像化管理工具中看到此虚拟机实例。
使用virsh工具创建虚拟机模板
此时将/image/rhel7.0.img镜像文件拷出来上传到云平台即可
使用virsh工具创建虚拟机模板

virt-install命令有许多选项,这些选项大体可以分为下面几大类,同时对每类中的常用选选项也做出简单说明;
          一般选项:指定虚拟机的名称、内存大小、VCPU个数及特性等;
                -n NAME  -name=NAME    //虚拟机名称,需全局唯一;
                -r MEMORY  --ram=MEMORY  ,虚拟机内存大小,单位为MB
                --vcpus=VCPUS[,maxvcpus=MAX][,sockets=#][,cires=#][,threads=#] //VCPU个数及县官配置;
                ---cpu=CPU    //CPU模式及特性,如coreduo等,可以使用qemu-kvm -cpu?来获取支持的CPU模式;
        安装方式:指定光盘安装方式、GuestOS类型等;
              -c CDROM,--cdrom=CDROM  //光盘安装介质;
              -l  LOCATION,--location=LOCATION  //安装源URL,支持FTP\HTTP及NFS等,如ftp://172.16.0.1/pub:
            --pxe  //基于PXE完成安装;
            --livecd  //把光盘当作LiveCD;
            --os-type=DISTRO_VARIANT  //操作系统类型,如Linux、unix或windows等;
            --os-variant=DISTRO_VARIANT  //某类型操作系统的变体,如rhel5,fedora8等;
            -x EXTRA,--extra-args=EXTRA  //根据--location指定的方式安装GuestOS时,用于传递给内核的额外选项,例如指定kickstart文件位置,--extra=args "ks=http://172.16.0.1/class.cfs"
           --boot=BOOTOPTS  //指定安装过程完成过后的配置选项,如引导设备次序,使用指定的而非按照kernel/initrd来引导系统启动等:
                    例如:
                        --boot cdrom,hd,network:制定引导次序;
                        --boot kernel=KERNEL,initrd=INITRD,kernel_args="console=/dev/ttyS0  //指定启动系统的内核及initrd文件;

        存储配置:指定存储类型、位置及属性等;
                        --disk=DISKOPTS   //指定存储设备及其属性;格式为--disk   /some/storage/path,opt1=val1,opt2=val2等;
                         常用的选项有:
                                device:设备类型,如cdrom、disk或floppy等,默认为disk;
                                bus:磁盘总线类型,其值可以为ide,scsi,usb、virtio或xen;
                                perms:访问权限,如rw、ro或sh(共享的可读写),默认为rw;
                                size:新建磁盘映像的大小,单位为GB;
                                cache:缓存模型,其值有none,writethrouth(缓存读)及writeback(缓存读写);
                                format:磁盘映像格式,如raw,qcow2,vmdk等;
                                sparse:磁盘映像使用稀疏格式,即不立即分配指定大小的空间;
                            --nodisk:不使用本地磁盘,在LiveCD模式中常用;
         网络配置:指定网路接口的网络类型及接口属性如MAC地址、驱动模式等;
                              -w NETWORK,--network=NETWORK,opt1=val1,opt2=val2 //将虚拟机连入宿主主机的网络中,其中NETWORK可以为:
                                bridge=BRIDGE:连接至名为“BRIDEFG"的桥设备;
                                network=NAME:连接至名为“NAME"的网络;
                         常用的其它选项还有:
                                 model:GuestOS中看到的网络设备号,如e1000,rtl8139或virtio等;
                                 mac:固定的MAC地址;省略此选项时将使用随机地址,但无论何种方式,对于KVM来说,其前三段必须为52:54:00
                                --nonetworks:虚拟机不适用网络功能
          图形配置:定义虚拟机显示功能相关的配置,如VNC相关配置;
                                   --graphics TYPE,opt1=val1,opt2=val2 //指定图形显示相关的配置,此选项不会配置任何显示硬件(如显卡),而是仅指定虚拟机启动后对其进行访问的接口;
                                                TYPE:指定显示类型,可以为vnc,sdl,soice或none,默认问vnc;
                                                port:TYPE为vnc或spice时其监听的端口;
                                                listen:TYPE为vnc或spice时所监听的IP地址,默认为127.0.0.1,可以通过修改/etc/libvirt/qemu
                                    conf定义新的默认值:
                                                 password:TYPE为vnc或spice时,为远程访问监听的服务指定认证密码;

windows2008镜像制作

virt-install --connect=qemu:///system -n "windows2008" -r 1024 --vcpus 1 --network bridge=virbr0,model=virtio --disk path=/image/win08.img,format=qcow2,device=disk,bus=virtio,size=15,sparse --cdrom /tmp/cn_windows_server_2008_r2_hpc_edition_with_service_pack_1_x64_dvd_700632.iso --disk path=/tmp/virtio-win-1.7.4.iso,device=cdrom --graphics vnc --os-type windows --boot cdrom,hd
运行创建虚拟机命令之后,如果控制台显示如下,说明系统没有将windows2008的镜像文件作为第一启动顺序了,需要设置一下引导的启动。
注意哪一个cdrom是windows2008的镜像文件将其调整到第一引导顺序,关闭虚拟机然后启动。

使用virsh工具创建虚拟机模板
使用virsh工具创建虚拟机模板
在安装操作系统选择安装磁盘目录的时候会提示没有驱动程序
使用virsh工具创建虚拟机模板
这时候需要我们去virtis的镜像文件中去加载驱动,选择对应的版本
使用virsh工具创建虚拟机模板
使用virsh工具创建虚拟机模板
加载完成后会显示如下信息
使用virsh工具创建虚拟机模板
使用virsh工具创建虚拟机模板
安装完成后查看windows2008的驱动加载信息
使用virsh工具创建虚拟机模板
使用virsh工具创建虚拟机模板
右键点击更新驱动
使用virsh工具创建虚拟机模板
选择virtio文件让系统自动检索
使用virsh工具创建虚拟机模板
将所有需要更新的驱动更新完,然后关闭虚拟机,将/image文件下的win08.img磁盘文件上传到云平台即可。

上一篇:KVM虚拟化专题(2)KVM及Libvirt架构


下一篇:linux-动态删除重复的日志消息