安卓操作系统中运行Docker等Linux容器 您所在的位置:网站首页 边缘计算docker 安卓操作系统中运行Docker等Linux容器

安卓操作系统中运行Docker等Linux容器

2023-09-22 08:47| 来源: 网络整理| 查看: 265

面向边缘计算的容器迁移系统

        物联网的爆发式增长促进了边缘计算这种新的计算模式的出现,边缘计算使云服务更接近移动端。在边缘计算的众多特性中,提供较低的响应时延是最重要的特性之一。为了保持一个较低的服务响应时延,应用需要尽可能在距离移动设备最近的边缘设备上运行,甚至在移动设备中运行。在边缘计算场景下,基于Android操作系统的移动设备应用非常广泛。这些设备和边缘设备通常使用不同架构的处理器,设备的操作系统也有所不同。这阻碍了应用的迁移,导致边缘设备的应用无法迁移到移动设备中。

        已有的一些技术只关注应用在边缘设备之间的迁移,却忽略了应用向移动端的迁移。目前工业界没有适用于边缘端向移动端迁移应用的方案,因此我们提出了面向边缘计算的容器迁移系统。该系统从容器技术出发,解决了边缘端的应用无法迁移到移动端的问题。我们创新性地在安卓操作系统中运行了Docker容器,并且将CRIU(Checkpoint and Restore in User-space)工具移植到了安卓中,以支持容器的迁移功能。

        该成果在华中科技大学的服务计算技术与系统教育部重点实验室”暨“集群与网格计算湖北省重点实验室的github组织开源。链接https://github.com/CGCL-codes/Android-Container。微信公众号穿过丛林。

一、背景和动机

       自从1969年互联网的出现以来,互联网技术发展迅速。从PC互联网时代到移动互联网时代,人们的生活越来越离不开互联网技术的支持,各种互联网技术层出不穷。物联网的爆发式增长促进了边缘计算[1]的出现,越来越多的设备接入互联网,这些设备在边缘端产生了大量数据[2]。传统的数据处理模式已经无法满足大规模的数据处理需求,边缘计算技术的作用也显得越来越重要。

边缘计算是一种新兴的计算模式,它主张将通常由集中式云计算[3]服务执行的计算转移到物理上更接近终端用户或数据生产源的分布式边缘计算节点上。除了减轻数据中心的计算负载和网络的数据流量之外,边缘服务器与客户端的物理接近性还确保了最低的延迟。边缘计算的应用领域非常丰富,包含移动计算卸载、故障恢复能力、物联网隐私、实时分析、认知辅助、即时实例化、游戏等。边缘计算有提升响应速度、节约移动设备能源、节省带宽、保障数据安全性和隐私性的特点。

边缘计算的一个重要特性是保持一个较低的响应时延,因此服务程序需要尽可能得在距离终端用户近的节点中运行。这导致了对应用的迁移有着强烈的需求,软件应用可能需要在边缘节点之间迁移。原因有很多,比如跟踪移动用户以保持低延迟、卸载拥挤的设备、主动离开可能在不久的将来失败的节点等。常见的应用迁移手段有虚拟机迁移[4]和容器迁移。由于容器和宿主机共享内核,因此容器的迁移相较于虚拟机的迁移更具有吸引力。容器比较轻量,需要传输的数据量相对较少,因此容器迁移比虚拟机迁移效率高。

在边缘计算环境下,设备普遍具有异构性。这种异构性得到了主要软件厂商的认可,比如Docker。对于每一个不同的架构,Docker都拥有对应的版本。边缘端的设备和移动端的设备通常使用异构的处理器构建,因此为一个架构编译的应用无法迁移到另一个架构。

面向边缘计算的容器迁移系统能提升服务的响应速度,也能在边缘计算的场景下更好地做到负载均衡,使得不同的设备之间能更好地协同完成一些任务。比如,当边缘端的设备距离用户较远时,将该设备中部署的深度学习图片识别服务迁移到距离用户最近的设备(例如,家用路由器)或者用户自己的设备(例如,Android智能手机)中运行。这样能降低用户的等待时延,提升用户体验。系统的架构如图1所示。

 图1 系统架构

二、技术特色。

       (1)安卓容器技术。总所周知,容器是基于Linux的Cgroups和Namespaces技术实现的,而我们知道安卓底层使用的是稳定版本的Linux内核,这给在安卓中运行容器提供了可能。我们对安卓源代码进行修改,加入了容器运行需要的内核依赖,使得安卓拥有运行容器的环境。由于安卓不支持Go语言的运行时,因此我们使用Docker的静态二进制文件在安卓中安装Docker。由于静态二进制文件拥有Docker运行所需的所有依赖,因此不需要安卓提供这些所需的依赖。为了方便操作,我们使用安卓应用程序来管理安卓中的容器和镜像。我们将所有功能都集成到了一个系统安装包(ROM)中,安卓设备只需要输入该ROM就能支持容器的运行。在安卓中运行容器的效果如图2所示。

图2 安卓容器

(2)跨架构应用迁移技术。为了能够在不同架构之间迁移应用,我们使用了Popcorn Linux[5]的定制编译器。如图3所示,该编译器能将程序编译成静态二进制可执行文件,对于每一个不同的架构都有一个对应的二进制文件。编译器的输入可以是C语言代码,也可以是LLVM IR。这些二进制文件拥有统一的虚拟地址空间,使用相同的输入会产生相同的输出,只是异构处理的堆栈有所不同,需要在应用迁移时转换堆栈信息。

图3编译流程

Popcorn编译器会自动在函数边界插入迁移点,进程停止在迁移点才会避免一些问题的出现。比如进程正在等待一个锁的释放,但是这时候将进程迁移到另一台设备。迁移后的进程会继续等待这个锁的释放,但是这个等待条件可能会因为设备的不同而不存在,因此导致进程死锁。只有进程在迁移点冻结,然后再迁移进程,才能避免这类问题的出现。

制作二进制文件是第一步,迁移应用还需要CRIU的支持。但是不同架构的CRIU镜像文件是不同的,因此还需要对这些镜像文件进行转换,比如从X86架构的文件转换为ARM架构的文件。我们修改了CRIU的源代码,用于支持文件的转换。转换的内容包含在体系结构之间重新映射算术、浮点和杂项寄存器内容、调整VDSO、vvar和vsyscall区域、固定体系结构名称和二进制可执行文件名称等。此外,还需要进行与容器相关的修改,包括修改ulimit可以控制的内容、线程到cpu映射。由于Ubuntu中的容器的一些挂载点和安卓有所不同,需要对挂载点进行修改。转换模块会删除安卓中不存在的挂载点,并修改一些挂载点的位置,从而统一两个操作系统的挂载点。

为了使得应用易于部署和维护,我们将这些二进制文件和Docker容器结合,从而实现容器的跨架构迁移。由于没有适用于安卓的CRIU版本,我们将CRIU移植到了安卓,以支持容器的迁移。跨架构、跨操作系统的容器迁移需要统一不同操作系统的Cgroups和Namespaces配置,还需要转换CRIU镜像文件。

三、跨架构、跨操作系统容器迁移

       实现了安卓操作系统中运行Docker容器后,我们还实现了Docker容器的跨架构、跨操作系统迁移,能够将基于X86架构的Ubuntu操作系统中的容器迁移到基于ARM架构的安卓操作系统中。图4展示了整个迁移的流程。

图4 容器迁移

步骤1:Ubuntu中的服务模块从镜像仓库中下载支持跨架构和跨操作容器迁移的Docker容器镜像,然后使用该镜像启动容器。该镜像由Popcorn 编译器生成的二进制文件构建。

步骤2:安卓设备发送容器迁移请求到边缘服务器。

步骤3:服务模块向容器发出信号,表明它必须在最近的迁移点冻结。

步骤4:服务模块调用CRIU模块对容器进行checkpoint,然后将容器状态转储到一系列CRIU镜像文件中。

步骤5:服务模块调用CRIU转换模块,将CRIU镜像文件从X86架构转换为ARM架构。

步骤6:安卓设备连接到边缘的服务模块,然后下载CRIU镜像文件。

步骤7:安卓从镜像仓库中下载支持跨架构和跨操作系统容器迁移的Docker容器镜像,然后使用该镜像创建一个容器。

步骤8:安卓使用CRIU镜像文件来恢复创建的容器。 恢复的容器进程将从迁移点继续运行。

四、总结与展望

       基于Popcorn编译器等跨架构迁移应用的相关技术,实现了面向边缘计算的容器迁移系统,解决了容器无法跨架构、跨操作系统迁移的难题。创新性地在安卓中运行Docker容器,使得移动端市场占有率庞大的安卓设备也能支持容器技术这种轻量级的虚拟化技术。但是仍然存在着一些不足和挑战。由于Docker容器这些容器技术并不是为了安卓而生,安卓有着它自己的特点。未来可针对安卓的特点来实现专用于安卓的Docker版本,降低运行容器所需的资源占用以及功耗。我们使用的一些技术使用了root权限,而绝大部分Android操作系统不向用户开放root权限,并且用户获取root权限也比较困难。可以在不使用root权限的情况下运行容器进行研究。在安卓中运行容器是一个亮点所在,但是目前缺乏一些比较好的使用场景。

参考文献:

Armbrust M, Fox A, Griffith R, et al. A view of cloud computing. Communications of the ACM, 2010, 53(4): 50-8Shi W, Cao J, Zhang Q, et al. Edge computing: Vision and challenges. IEEE internet of things journal, 2016, 3(5): 637-46Kochovski P, Sakellariou R, Bajec M, et al. An architecture and stochastic method for database container placement in the edge-fog-cloud continuum. in: Proceedings of the 2019 IEEE International Parallel and Distributed Processing Symposium. Rio de Janeiro, Brazil: IEEE, 2019. 396-405Sapuntzakis CP, Chandra R, Pfaff B, et al. Optimizing the migration of virtual computers. ACM SIGOPS Operating Systems Review, 2002, 36(SI): 377-90Barbalace A, Lyerly R, Jelesnianski C, et al. Breaking the boundaries in heterogeneous-ISA datacenters. ACM SIGARCH Computer Architecture News, 2017, 45(1): 645-59

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有