8.3 制作 OpenStack 镜像 ======================= |image0| -------------- 这里仅以Ubuntu系统为例,其他系统也是类似,部分不同的地方会给出标注。 8.3.1 准备工作 -------------- -------------- 8.3.1.1 下载iso文件 ~~~~~~~~~~~~~~~~~~~ 下载链接 - ubuntu: https://www.ubuntu.com/download/desktop - centos:\ `archive.kernel.org/centos-vault/ `__ .. code:: shell wget http://releases.ubuntu.com/16.04.3/ubuntu-16.04.3-server-amd64.iso 8.3.1.2 安装原始系统 ~~~~~~~~~~~~~~~~~~~~ 步骤主要有两点: 1. raw系统盘 2. xml文件 **raw系统盘** 既然是安装系统,那就必须给系统一个地方放置系统,对于虚拟机来说,其系统盘在宿主机上就是一个文件。我们要先创建这个文件,然后在xml里指定,这就是它的系统盘,把系统安装在这里就行了。 .. code:: shell qemu-img create -f raw ubuntu-16.04.raw 50G 这里要说明一下,这和 ``CentOS`` 不一样, ``CentOS`` 可以直接使用 ``qcow2`` 文件,而 ``Ubuntu`` 则不行。因为qcow2文件大小是根据实际占用的大小决定的,一个空文件 只有 ``197kb`` 大小 ,\ ``Ubuntu`` 则会认为给定的磁盘空间过小,无法安装。 关于几种镜像格式 可以参考这里:\ `转换镜像格式 `__ **xml文件** 安装原始系统的 ``xml`` 文件和由镜像创建虚拟机的大不相同。亲测可用如下,只需要修改\ ``ubuntu-16.04.raw`` 和 ``ubuntu-16.04.3-server-amd64.iso`` 对应路经即可。 题外话,如果嫌弃xml太麻烦,而且看不懂。可以直接用命令启动,不过这个我试过是使用vnc的,可能要手动改下为spice。如果是使用 ``virt-install`` 的,后面查看 vnc 端口的可以使用 ``virsh vncdisplay [domain]`` :: virt-install --name ubuntu-16.04 \ --ram 4096 \ --vcpus 4 \ --cdrom=ubuntu-16.04.3-server-amd64.iso \ --disk ubuntu-16.04.qcow2,format=qcow2 \ --graphics vnc,listen=0.0.0.0 \ --noautoconsole \ --os-type=linux \ --os-variant=ubuntuquantal \ --check all=off ``ubuntu.xml`` 文件内容如下: .. code:: xml ubuntu-iso 4194304 4194304 2 hvm destroy restart destroy /usr/libexec/qemu-kvm 8.3.1.3 启动虚拟机 ~~~~~~~~~~~~~~~~~~ .. code:: shell virsh define ubuntu.xml virsh start ubuntu-iso # 查看 vnc spice 端口,比如是5909 virsh dumpxml ubuntu-iso|grep spice 8.3.1.4 安装系统 ~~~~~~~~~~~~~~~~ 安装系统需要可视化图形界面,而我们通常都是使用ssh连接到服务器端,这是没有可视化图形界面的。 这时候就要在我们在windows上安装一个 ``vnc`` 客户端 这里我使用的是 ``spice virt-viewer``\ 。 官网下载地址:\ https://virt-manager.org/download/ 下载速度十分缓慢,可能需要半个多小时,我已经下载好,上传到百度云盘,需要自取。 |image1| 安装好后,可以尝试连接虚拟机。 如果连接失败,可以自己的排查下原因 .. code:: shell 1. 宿主机的iptables,firewall 2. 端口是否开放,telnet 一下 |image2| 然后根据提示安装系统(注意要先新建一个用户,设置该用户密码,后续要登陆虚拟机使用)。安装完成后,退出spice。 最后关闭虚拟机。 .. code:: shell virsh shutdown/destroy ubuntu-iso 这样我们所安装的系统就已经存放在 ``ubuntu-16.04.raw`` 这个文件里。 8.3.2 自定义镜像内容 -------------------- 8.3.2.1 转换镜像格式 ~~~~~~~~~~~~~~~~~~~~ 还记得我们之前的镜像是 ``raw`` 格式的吧? ``raw`` 文件,有一特点是你创建多大的盘,这个文件就有多大,而不是按需分配的。我们之前创建的是 ``50G``\ ,这么大的文件,是无法上传到glance的,我需要将其转换成 ``qcow2`` 文件,转换之后,原先的 ``50G`` 就变成了 ``1G多``\ ,等到OpenStack创建的时候,它自会转成raw的格式。 .. code:: shell qemu-img convert -f raw -O qcow2 ubuntu.raw ubuntu-16.04.qcow2 .. _启动虚拟机-1: 8.3.2.2 启动虚拟机 ~~~~~~~~~~~~~~~~~~ 上面得到的qcow2文件,这时候就要用起来了。用这个镜像文件启动一个虚拟机。 ``ubuntu-16.04.xml`` 文件如下: .. code:: xml ubuntu-16.04 4194304 4194304 2 /machine hvm SandyBridge destroy restart restart /usr/libexec/qemu-kvm