云服务技术已经形成多年。现在行业中一个最大的概念就是物联网,又称为 IoT。我们作为电子工程师,脑海中出现的第一个印象是将许多设备连接到云,上传数据用于可视化、存储和分析。当然,也可以有许多其他的应用:云服务还可以存储和处理资源,特别是SaaS和个人应用;IT专家和运维也可以发挥云虚拟机和数据库的优势。

有一件事我们经常会忽略,云不仅仅是 IoT 工具,或者只是大公司才能使用的东西。我们还可以用其处理日常事物。事实上这就是本文背后的动机,处理耗费的时间的任务,并用云进行简化。

因为对微软的云平台 Azure 较为熟悉,我讲向你介绍在 Azure 上部署 Ubuntu Server 16.04 LTS 虚拟机(是的,在微软云上的 Linux虚拟机),使用 Yocto/OpenEmbedded 生成嵌入式 Linux 镜像,如 Toradex Colibri iMX6 计算机模块的标准镜像。

登录 Azure

首先访问 portal.azure.com ,使用你的微软账号登录 Azure。

创建虚拟机

然后根据 该页面 上的 Azure 文档提示快速部署一个虚拟机。

提示1:在你电脑的终端上,使用下面命令生成认证秘钥:

ssh-keygen -t rsa -b 2048

你需要复制公钥。只要复制 “id_rsa.pub” 文件。使用下面命令复制:

cat ~/.ssh/id_rsa.pub

提示2:在完成 “连接到虚拟机”步骤后,就可以结束。你不需要安装 Azure 文档中提到的 NGINX。

编译 Yocto

通过 SSH 访问虚拟机,准备编译环境。按照这篇技术文章和 Toradex 网页的说明进行。

提示1: :尽管文章内容比较多,你可以只参考这些章节: “Prerequisites” - Ubuntu 16.04, “Installation – Setup/Configure”, “Installation – local.conf” - 然后选择 Colibri iMX6,并 “Building”.

提示2:当虚拟机初始化完成后,将会有 30GB的 SSD 磁盘空间,用于安装操作系统。在 /mnt 目录下还有临时磁盘空间,根据你选择的虚拟机配置相应的空间大小也有所不同。

注意:你可以增加安装操作系统 30GB SSD 磁盘的大小。

这样会很快吗?

为了测试,我们进行 'angstrom-lxde-image' 的首次编译,包括下载和编译所有软件包,包括从云服务器上下载镜像到本地开发电脑。

我使用工作台式机做对比测试。电脑配有 Intel® Core i7-3740QM CPU @ 2.70GH 8虚拟核(4核处理器)、8GB 内存和 SSD,运行 Ubuntu 16.04 LTS。从零开始,首次编译总共耗时4个小时。

接下来,使用 Azure 的两个虚拟机,配置如下:一个使用最基础的配置((Standard DS1 v2),1 Intel® Xeon®core, CPU E5-2673 v3 @ 2.40GHz, 3.5 GB RAM 和 SSD 磁盘;另一个使用我账户中的最高配置(最多10核),8 Intel® Xeon® cores, CPU E5-2673 v3 @ 2.40GHz, 28 GB RAM 和 SSD。最基础配置的虚拟机首次编译的总时间为12小时,最高配置的则耗费1小时30分钟。

我的同事使用 Amazon AWS (c4.2xlarge, c4.4xlarge and m4.2xlarge – 点击这里了解详情)进行了同样的编译做对比,以及采用其他配置的电脑(4 core i7-6700K CPU @ 4.00GHz, 32 GB DDR4, NVMe SSD 和 8 core Xeon®CPU E5-2667 v4 @ 3.20GHz, 64GB DDR4, RAM 磁盘)。结果如下表所示。

注意1:其他的账户可以使用更高配置的虚拟机。

注意2:从云端下载编译好的镜像到本地电脑的速度很快(小于3分钟),平均速度为 1MB/S。

注意3:有些云平台,例如Azure,按分钟计算虚拟机费用,其他的则根据小时计算费用。

注意4:使用 RAM 磁盘也可以提高性能

机器编译完成时间每小时费用*总费用
个人笔记本电脑
Intel® Core i7-3740QM CPU @ 2.70GHz, 8GB RAM and SSD disk
4.00 小时

-

-

Azure 1-vcore
1 core Intel® Xeon® CPU E5-2673 v3, 3,5GB RAM and SSD disk
12.00 小时

US$0.073/小时

US$0.876

Azure 8-vcore
8 cores Intel® Xeon® CPU E5-2673 v3, 28GB RAM and SSD disk
1.50 小时

US$0.585/小时

US$0.878

AWS 8-vcore c
8 cores Intel® Xeon® CPU E5-2666 v3, 15GB RAM and EBS storage
1.88 小时

US$0.398/小时

US$0.796

AWS 16-vcore c
8 cores Intel® Xeon® CPU E5-2666 v3, 30GB RAM and EBS storage
1.18 小时

US$0.796/小时

US$0.796

AWS 8-vcore m
8 cores Intel® Xeon® CPU E5-2686 v4 or E5-2676 v3, 32GB RAM and SSD disk
2.10 小时

US$0.400/小时

US$0.800

Local Server 1
Intel® Core i7-6700K CPU @ 4GHz, 32GB RAM DDR4 and NVMe SSD disk
1.23 小时

-

-

Local Server 2
Intel® Xeon® ES-2667 v4 CPU @ 3.20GHz, 64GB DDR4 RAM and RAM disk
1.15 小时

-

-

* 该表格中的每小时费用不包括国际区域转移费用。该费用是部署在美国东部 Azure 服务器上的虚拟机,在其他区域虚拟机的价格可能会有波动。其他的服务,例如数据存储,也伴随虚拟机一同使用。 这些也关系到编译的总费用。价格可能随时会出现变动,根据微软的政策,请浏览Azure网页或者联系微软获取更多关于价格的信息。

这样经济吗?

最低配置的虚拟机费用为每小时US$0.073,最高配置则为每小时US$0.585。因此,两个虚拟机编译的总费用都约为 US$0.878。所有配置虚拟机价格可以在 Azure 的页面中看到。

提示1:编译完成后,关闭虚拟机避免不必要的费用。我们采用按需付费,所以请记住不要在周末的时候还开着虚拟机。

提示2:你可以配置虚拟机自动关机,万一你忘记将其关闭。

总结

本实验揭示了基于云编译的优缺点。考虑到“这样会很快吗?”章节中编译时间,基于云编译的方法可以显著缩短编译时间。但是,你也应该考虑到下载速度:使用好的网络连接,低成本的编译服务器可能和有些配置的云差不多快,甚至更快。另一方面,如果你的网络连接很慢或者不稳定,那么云方案可能更加合适。

另外,长期使用虚拟机的成本可能会高于使用本地编译服务器。如果你公司没有专门的服务器用于编译,使用云方案可以为员工节约时间。这能够节约成本,因为虚拟机每小时的费用低于员工的公时薪资。还可以避免在个人电脑上编译带来的潜在损耗。

云也可以作为临时的方案,用于多个编译任务并行执行。结合已经在运行一个或者多个任务的本地服务器,该方案可以很容易和便宜地实施。

最后,你需要了解何种云方案可以使用,并知悉这些方案可能适合或者不适合你的需求。希望本文的提示和案例能够有所帮助。下次见!

AuthorLeonardo Veiga, Field Application Engineer, Toradex Brasil