server端
安装qemu, kvm
yum install qemu,qemu-kvm
安装libvirt
yum install libvirt
systemctl enable libvirtd.service
systemctl start libvirtd.service
安装virt-install
yum install virt-install
下载centos的mirror镜像
wget http://mirror.pregi.net/centos/7.3.1611/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso
创建qcow2镜像
qemu-img create -f qcow2 /home/images/centos.qcow2 10G
启动虚拟机
virt-install --virt-type kvm --name centos --ram 1024
--disk /home/images/centos.qcow2,format=qcow2
--network network=default
--graphics vnc,listen=0.0.0.0 --noautoconsole
--os-type=linux --os-variant=rhel7
--location=/home/images/CentOS-7-x86_64-Minimal-1611.iso
查看vnc端口
[root@controller01 images]# virsh list
Id Name State
1 centos running
[root@controller01 images]# virsh vncdisplay centos
:0
0代表是5900,大于0的从5900之后递增。例如,显示:1,则代表5901
Client 端
windows安装vnc-veriewer
连接到创建的虚拟机
如出现连上后闪退问题,解决方案如下图
http://blog.licess.com/vnc-viewer-shantui/
连接成功后,选择语言,选择Continue
选择网络和主机名配置,打开自动获取id地址,配置完成后选择Done
选择installation source,设置镜像源,done
磁盘分区,按实际需求分区,这里我选择默认。
点击安装。
设置密码,设置完后选择Done。
安装完之后重启。
如果没有启动成功,可以在server端 执行virsh reboot centos 命令。
再连接,安装acpi。acpid服务是用于可以让hypervisior可以重启或关闭虚拟机
yum install acpid
systemctl enable acpid
安装cloud-init。用于启动虚拟机时候nova-meatdata服务进行密钥注入到虚拟机。
yum install epel-release.noarch
yum install cloud-init
修改cloud-init启动模块加载resolv-conf。
/etc/cloud/cloud.cfg
cloud_init_modules属性下添加
- resolv-conf
安装 cloud-utils-growpart。该然间是支持虚拟机磁盘扩容。
yum install cloud-utils-growpart
如果上面步骤不能安装cloud-init,则可以在/etc/rc.d/rc.local文件中,在touch /var/lock/subsys/local这行前加入以下脚本
if [ ! -d /root/.ssh ]; then
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Fetch public key using HTTP
ATTEMPTS=30
FAILED=0
while [ ! -f /root/.ssh/authorized_keys ]; do
curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key \
> /tmp/metadata-key 2>/dev/null
if [ \$? -eq 0 ]; then
cat /tmp/metadata-key >> /root/.ssh/authorized_keys
chmod 0600 /root/.ssh/authorized_keys
restorecon /root/.ssh/authorized_keys
rm -f /tmp/metadata-key
echo "Successfully retrieved public key from instance metadata"
echo "*****************"
echo "AUTHORIZED KEYS"
echo "*****************"
cat /root/.ssh/authorized_keys
echo "*****************"
fi
done
关闭zeroconf route
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
配置console,为了确保控制台的信息出现在 dashboard 的日志标签页中,以及 nova console-log 输出中。
修改/etc/default/grub的配置GRUB_CMDLINE_LINUX选项. 删除 rhgb quiet 添加 console=tty0 console=ttyS0,115200n8。
例子:
GRUB_CMDLINE_LINUX="crashkernel=auto console=tty0 console=ttyS0,115200n8
更新grub配置
grub2-mkconfig -o /boot/grub2/grub.cfg
关闭虚拟机
shutdown -h now
Server端
安装 libguestfs-tools
yum install libguestfs-tools
清理镜像MAC地址
virt-sysprep -d centos
清除虚拟机
virsh undefine centos
镜像制作完成,可以上传到openstack,镜像为 /home/images/centos.qcow2文件。