今天我们介绍使用virsh虚拟机管理工具组件来创建虚拟机模板
首先准备基础环境:
在vmware上安装一台Centos7.0的虚拟机
打开CPU的虚拟化功能
安装完操作系统之后验证虚拟化功能是否打开
使用 egrep --color=auto "(svm|vmx)" /proc/cpuinfo进行查看
安装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的配置文件
此文件中定义的是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
在执行完命令后如果出现could not open disk image /root/CentOS-7-x86_64-DVD-1810.iso: Could not open '/root/CentOS-7-x86_64-DVD-1810.iso': Permission denied字段
说明用户执行权限有问题,需要修改/etc/libvirt/qemu.conf文件,将user字段对应的用户修改成root,然后重启libvirt服务。
虚拟机安装完成后,进入虚拟机查看驱动信息
在宿主机机上使用brctl查看网桥信息可以看到虚拟机的网卡挂载到virbr下面
我们使用virsh工具组件创建的虚拟机关机之后可以在virt-manager图像化管理工具中看到此虚拟机实例。
此时将/image/rhel7.0.img镜像文件拷出来上传到云平台即可
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的镜像文件将其调整到第一引导顺序,关闭虚拟机然后启动。
在安装操作系统选择安装磁盘目录的时候会提示没有驱动程序
这时候需要我们去virtis的镜像文件中去加载驱动,选择对应的版本
加载完成后会显示如下信息
安装完成后查看windows2008的驱动加载信息
右键点击更新驱动
选择virtio文件让系统自动检索
将所有需要更新的驱动更新完,然后关闭虚拟机,将/image文件下的win08.img磁盘文件上传到云平台即可。