基础环境信息:
客户端: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镜像路径