前言

云计算中IaaS的代表云虚拟机,即云服务器、弹性计算服务、云计算引擎等,其实就是虚拟化这里技术的运用,以阿里云、AWS、GCP、腾讯云为代表的云计算使用的都是 KVM 虚拟化技术。随着个人电脑性能的提升,越来越多的朋友应该都有体验过 VirtualBox、VMware、Parallels Desktop 这样的虚拟化软件,这些虚拟化软件可以安装非常多的操作系统,会比公有云上可选的公共镜像来的多得多,那为什么公有云上的镜像那么少呢?

首先就是为了稳定性和安全性的考量,公有云都会提供自制的公共镜像安装和调试好最适合该云计算环境的软件和配置。在个人用虚拟机软件上其实我们并不太会考虑说要 7 * 24 不关机并且持续高负载工作的情况,所以大可以体验一些新的发行版。 就像最近的 Windows 1809 内核发布的第一版有各种小问题一样,如果公有云第一时间运用岂不是要上天了。 还有就是通过 ISO 安装好的初始系统并不能满足云计算镜像的一些要求。

但随着技术的成熟和能力的开放,众多公有云都已经开放了虚拟化镜像导入的能力,这样可以帮助企业快速具备上云能力,以及满足一些多样化上云的需求。

这篇教程就是教大家如何自制可以运用于公有云的操作系统镜像。这里以阿里云为例,各家做镜像的要求都是可以互通的,我个人觉得倒还是阿里云的稍微严苛一点,有难度。

准备

下面我以客户需求较为广泛但是公有云又不提供的 OracleLinux 为例,而且 OracleLinux 是 RHEL 的变体,云上支持的效果会很好,所以新手第一次尝试的成功率会高很多。

相关参考文档

阿里云

导入镜像必读 https://help.aliyun.com/document_detail/48226.html

AWS

VM Import/Export https://docs.aws.amazon.com/zh_cn/vm-import/latest/userguide/what-is-vmimport.html

谷歌GCP

构建自定义操作系统 https://cloud.google.com/compute/docs/images/building-custom-os

腾讯云

导入镜像概述 https://cloud.tencent.com/document/product/213/4945

华为云

镜像服务 https://support.huaweicloud.com/productdesc-ims/zh-cn_topic_0013901609.html

虚拟化软件选型

所有主流的虚拟化软件都可以作为选项之一,但如果只是为了图方便,或者像我这样只是为了做一个云上的特殊镜像的,那么肯定是最方便的最好了。

如果开发机器是 Linux 的话,直接安装 KVM + KVM Manager 直接安装是最好的了。 Windows 的话那么推荐使用 VirtulBox。macOS 推荐使用 VirtualBox。 因为他们都可以选择使用 VirtIO 驱动,直接就会安装好,特别方便,同时镜像格式也是普遍收到支持的 QCOW2、RAW或者VHD,不需要额外转换。

因为使用 Windows 和 macOS 的用户比较多,所以这里以 VirtualBox 为例。 像使用 VMWare 的用户则可以使用 qemu-img 工具进行格式的转制。

教程

一、 我们开始新建虚拟机,输入 OracleLinux 的名字就会自动识别模式

半小时学会虚拟化镜像直接上云实践-米饭粑

二、创建一个小内存的实例即可,我这里选择2G

半小时学会虚拟化镜像直接上云实践-米饭粑

三、我们选择创建一个新的虚拟硬盘

半小时学会虚拟化镜像直接上云实践-米饭粑

四、虚拟硬盘我们选择 VHD 格式的,因为 VHD 受支持度比较广,基本上公有云都认不用转换。

半小时学会虚拟化镜像直接上云实践-米饭粑

五、大小选择动态分配,不然我们分配个40G,虚拟硬盘文件就有40G那么大不利于传输,而动态分配则是用多少占多大空间,比较有性价比。

半小时学会虚拟化镜像直接上云实践-米饭粑

六、磁盘容量我建议40G起步,因为公有云的系统盘都是40G起步的,直接40G比较省事儿,不然起步8G,后期不够用了还得自己扩容,很麻烦的。

半小时学会虚拟化镜像直接上云实践-米饭粑

七、创建完后我们点击 设置

半小时学会虚拟化镜像直接上云实践-米饭粑

八、 我一般会把 显示 中的,Graphics Controller 修改成 VBoxSVGA 以避免安装过程中无法出现鼠标,不过这个应该是因设备而异的。

半小时学会虚拟化镜像直接上云实践-米饭粑

九、半虚拟化接口,要选择 KVM ,这样会打相关驱动,然后硬件虚拟化两个都勾选。

半小时学会虚拟化镜像直接上云实践-米饭粑

十、然后是时候启动开始安装系统了,这里会跳过一些简单的安装步骤,只将重要的来做演示。

半小时学会虚拟化镜像直接上云实践-米饭粑

十一、 软件选择 我会设置成 基础设施服务器 以便一些基础性服务器组件的缺失

半小时学会虚拟化镜像直接上云实践-米饭粑

十二、选择 我要配置分区 ,然后点击左上角的 完成

半小时学会虚拟化镜像直接上云实践-米饭粑

十三、然后我们从 LVM 切换到 标准分区,如果使用 LVM 将会无法正常启动ECS实例

半小时学会虚拟化镜像直接上云实践-米饭粑

十四、然后我们点击左下角的 + 号,把 40GiB 全部分配给 /

半小时学会虚拟化镜像直接上云实践-米饭粑

十五、然后点两下 完成

半小时学会虚拟化镜像直接上云实践-米饭粑

十六、接受更改

半小时学会虚拟化镜像直接上云实践-米饭粑

十七、在网络和主机名哪里把网络打开,要不然不联网后续配置就很麻烦。

半小时学会虚拟化镜像直接上云实践-米饭粑

十八、然后其他的按默认或者按自己的习惯来配置就行,我们进入安装。 设置一下 root 密码,密码要符合阿里云的ECS密码配置策略,不能就一个 a 了事这样的(因为我本地测试环境就经常这么干)。

半小时学会虚拟化镜像直接上云实践-米饭粑

十九、然后我们输入 ip addr 看一下这机器的内网IP是啥。 然后拿常用的 SSH 工具连接一下。 不然你还打算真不用复制粘贴光手敲呀~~~~

半小时学会虚拟化镜像直接上云实践-米饭粑

二十、然后我们拿阿里云的 镜像规范检测工具 来测一下,现在的环境能不能上云了。

wget http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/84961/cn_zh/1534906727238/image_check
chmod +x image_check
./image_check

## 如果想让日志生成在自定义路径下:
image_check –p [目标路径]

然后会输出想过结果,需要我们进行优化。 可以看到是大部分都是绿的,只有零星几个 Warning,可见用 VirtualBox 安装还是很省事儿的,至少不用打驱动。

半小时学会虚拟化镜像直接上云实践-米饭粑

二十一、针对 Check network 项目,云上能普遍都是关闭或删除Network Manager,并打开 network服务。以免服务有冲突。

systemctl stop NetworkManager
systemctl disable NetworkManager

二十二、针对 Check firewall 项目,关闭防火墙能避免因为忘开端口导致 SSH 连不上总以为导入失败了,但是不开也不行,所以我推荐自己心里有数,开启有必要的端口就行,不用真停了,下面列举开启几个常见端口。

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
sudo firewall-cmd --reload

二十三、针对 Check disk size 项目,咱们不理他。

二十四、重新检测一遍以后,我们关机。去虚拟机目录里找文件去了

半小时学会虚拟化镜像直接上云实践-米饭粑

二十五、然后我们就可以把镜像上传到想要哪里用的ECS地域所对应的 OSS 下了。 可以在浏览器上直接传,如果镜像容量很大,我们可以压缩一下,节省容量然后 开一个按量的 ECS ,上传到 ECS ,然后ECS上解压并通过内网上传到 OSS 上就很爽了!

半小时学会虚拟化镜像直接上云实践-米饭粑

二十六、上传完成后,我们在对应地域下的ECS控制台页面,找到 镜像 然后点击右上角的 导入镜像

半小时学会虚拟化镜像直接上云实践-米饭粑

二十七、然后对应的填写就对了,然后 OSS Object地址 ,记得只能用 http:// 协议,然后用内网地址,一般就是后面带 internal

半小时学会虚拟化镜像直接上云实践-米饭粑

二十八、然后我们等待导入完成

半小时学会虚拟化镜像直接上云实践-米饭粑

二十九、镜像创建完成后,我们就可以拿来创建实例了。

半小时学会虚拟化镜像直接上云实践-米饭粑

总结

至此,我们就完成了自制云上镜像的制作了。作为进阶大家可以试着将RHEL8、Ubuntu18.10 甚至 ArchLinux 进行上传。