基础环境信息:

客户端:ubuntu 16.04.01 LTS

服务器:openstack L版

第一步,确认硬件

KVM需要CPU硬件支持虚拟化,所以首先要确认你的CPU支持:$ egrep -o '(vmx|svm)' /proc/cpuinfo

如果有输出回显,则代表CPU支持虚拟化

第二步,更新并安装ubuntu的kvm支持:$ sudo apt-get update && sudo apt-get dist-upgrade -y

$ sudo apt-get install qemu-kvm qemu-system libvirt-bin bridge-utils virt-manager virtinst virt-viewer

第三步,检查 libvirt 默认网络是否运行

运行virsh net-list

查看是否有active的记录,如果不存在,则使用# virsh net-start default

添加默认记录后,再次查看是否有active的记录

第四步,创建空白镜像:# qemu-img create -f qcow2 /tmp/centos-6.5.qcow2 10G

这里需要解释一下,最后两个参数:

/tmp/centos-6.5.qcow2:表示生成的空白镜像所在的路径

10G:是指空白镜像文件的大小,也就是以后我们虚拟机默认的初始化磁盘空间

第五步,创建kvm虚拟机,并且挂载镜像:

# virt-install --virt-type kvm --name centos-6.5-64bit --ram 1024 \
--disk /tmp/centos-6.5.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel6 \
--extra-args="console=tty0 console=ttyS0,115200n8 serial" \
--location=/data/isos/CentOS-6.5-x86_64-netinstall.iso

可变参数解释:

--name:虚拟机的名称,这里要记住,下面还会用到

--ram:虚拟机的内存大小,这只是安装时使用,和之后的打包成镜像后的运行时参数无关

--disk:第四步中创建的空白虚拟机磁盘文件路径

--os-type:操作系统类型

--os-variant:操作系统标识,可以根据实际情况修改

--location:安装镜像,即需要挂载的安装光盘

第六步,虚拟机操作系统安装,过程略

第七步,安装虚拟机内部必要组件,并关机

使用virsh dumpxml 虚拟机名称 (在本例中,为centos-6.5-64bit)

命令查看挂载的CD-ROM,并使用# virsh attach-disk --type cdrom --mode readonly 虚拟机名称 "" 设备名(比如hdc,根据virsh dumpxml命令实际返回结果来修改)

# virsh destroy 虚拟机名称
# virsh start 虚拟机名称
卸载# yum install acpid
# chkconfig acpid on
# yum install http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
安装必要的第三方软件,比如htop等
# echo "NOZEROCONF=yes" >> /etc/sysconfig/network (非必要,配合cloud-init使用)
# /sbin/shutdown -h now
第八步, 清理(删除 MAC 地址相关信息):# virt-sysprep -d 虚拟机名称
第九步,qcow2减肥,并上传至openstack控制节点:# qemu-img convert -c -O qcow2 centos6.5-64bit.qcow2 /home/tan9le/centos65-64bit.qcow2
centos6.5-64bit.qcow2 为原始镜像
/home/tan9le/centos65-64bit.qcow2 为压缩后的镜像
第十步,导入glance镜像(openstack控制节点操作)source admin-opensrc #导入openstack的admin权限变量
glance image-create --name "centos65-64bit" --file /images/centos65-64bit.qcow2  --disk-format qcow2 --container-format bare --visibility public --progress

--name 镜像名称,在openstack平台上可以显示

--file 第九步中上传的qcow2镜像路径