买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:北京海杭通讯科技有限公司
摘要:本发明提供了一种基于android容器的device mapper隔离方法,包括以下步骤:S1、为操作系统内核中的mnt namespace结构添加一个链表头dm_list,该mnt_namespace结构用于创建device mapper,将新创建的device mapper挂到以mnt_namespace的链表头dm_list为头的链表上,每个mnt namespace都有一个device mapper链表。本发明的有益效果是:由于Device Mapper是kernel的虚拟驱动,所以不存在不同的android机器不兼容的问题,提高了兼容性。
主权项:一种基于android容器的device mapper隔离方法,其特征在于,包括以下步骤:S1、为操作系统内核中的mnt namespace结构添加一个链表头dm_list,该mnt_namespace结构用于创建device mapper,将新创建的device mapper挂到以mnt_namespace的链表头dm_list为头的链表上,每个mnt namespace都有一个device mapper链表;S2、所有需要查询device mapper的操作,都需要先确定要寻找的device mapper所在的mnt namespace,然后在该mnt namespace的链表头dm_list上查找。
全文数据:一种基于android容器的devicemapper隔离方法技术领域[0001]本发明涉及隔禹方法,尤其涉及一种基于android容器的devicema卯er隔离方法。背景技术[0002]随着android的发展,在android上基于容器的多系统方案已经被提了出来,其中头现了进程隔禹,文件系统隔尚,网络隔离等。android容器方案是基于linuxkernel操作系统内核提供的namespace命名空间)和cgroups技术,在单个kernel上隔离出来多个完整的虚拟空间。[0003]为了说明后面的机制,先说下基于单内核多系统的方案中文件系统的隔离是如何实现的。文件系统的隔离是通过chrootChangeRoot,也就是改变程序执行时所参考的根目录位置和mntnamespace实现,通过chroot切换一个新空间的rootfs根文件系统),这样我们可以在新的rootfs中就可以创建和单系统上一样的目录结构。[0004]DevicemapperDeviceMapper是Linux2.6内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构是linuxblock设备的虚拟,非常适合在块设备基础上集成多种功能。DeviceMapper可以实现软raid、软加密、逻辑卷条带、多路径、镜像、快照等多种功能。Google在android上用Devicemapper实现了system分区签名,完整性校验和userdata分区加密功能。[0005]在android上单内核多系统方案中,每个系统都用Devicemapper来实现system校验和11861^丨3加密,且目录结构一样。原生的Devicemapper使用挂载点来区分不同的Devicemapper实体,那么基于单内核多系统的方案中就会出现通过system这个挂载点创建成功DeviceMapper以后,第二个系统就无法使用同样名称的挂载点创建DeviceMapper的问题。[0006]一个可行的解决方案是将不同的系统中需要使用DeviceMapper机制的文件系统换成不同的挂载点,但该方案需要修改很多使用该文件系统的代码,且新增加的服务都需要注意该问题。发明内容[0007]为了解决现有技术中的问题,本发明提供了一种基于andr〇id容器的deViCemapper隔离方法。[0008]本发明提供了一种基于android容器的devicemapper隔离方法,包括以下步骤:51、为操作系统内核中的mntnamespace结构添加一个链表头dm_list,该mnt_namespace结构用于创建devicemapper,将新创建的devicemapper挂到以mnt_namespace的链表头dm_list为头的链表上,每个mntnamespace都有一个devicemapper链表;52、所有需要查询devicemapper的操作,都需要先确定要寻找的devicemapper所在的mntnamespace,然后在该mntnamespace的链表头dm_list上查找。[0009]作为本发明的进一步改进,devicemapper的创建步骤为:在操作系统内核中,找到当前进程对应的mntnamespace,判断在该mntnamespace上是否有同名挂载点的devicemapper,如果有,则返回错误,如果没有,则创建devicemapper,并挂载到对应mntnamespace的链表头dm_list上。[0010]本发明的有益效果是:由于DeviceMapper是kernel的虚拟驱动,所以不存在不同的android机器不兼容的问题,提高了兼容性。附图说明[0011]图1是本发明一种基于android容器的devicema卯er隔离方法的devicemapper链表示意图。[0012]图2是本发明一种基于android容器的devicemapper隔离方法的devicemapper的创建流程图。具体实施方式[0013]下面结合附图说明及具体实施方式对本发明作进一步说明。[0014]为了解决单内核多系统上的DeviceMapper同名挂载点冲突的问题本发明提出一种基于linuxnamespace的方案,在DeviceMapper的驱动中解决该问题。[0015]如图1至图2所示,一种基于android容器的devicemapper隔离方法,包括以下步骤:1、为kernel中的structmnt_namespace添加一个链表头dm_list,该结构用于后面创建devicemapper时,将新创建的devicemapper挂到以mnt_namespace的dm_list为头的链表上。[0016]2、当通过clone等系统调用创建一个新的mntnamespace时,在内核中为该mntnamespace白勺。[0017]3、当某个系统创建一个devicemapper时,通过该进程对应的mntnamespace,然后将新创建的devicemapper结构挂到对应mntnamespace的dm_list上。[0018]4、所有需要查询devicemapper的操作,都需要先确定要寻找的devicemapper所在的mntnamespace,然后在该mntnamespace的dm_list上查找。[0019]如图1所示,每个mntnamespace都有一个devicemapper链表。[0020]devicemapper的创建步骤为:在操作系统内核中,找到当前进程对应的mntnamespace,判断在该mntnamespace上是否有同名挂载点的devicemapper,如果有,贝lj返回错误,如果没有,贝丨j仓ll建devicemapper,并挂载到对应mntnamespace的链表头dm_list上。[0021]本发明提供的一种基于android容器的devicemapper隔离方法具有以下优点:1.由于DeviceMapper是kernel的虚拟驱动,所以不存在不问的android机器不兼谷的问题。[0022]2.不需要考虑修改android中使用到deviceMapper的接口。[0023]以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
权利要求:1.一种基于android容器的devicemapper隔离方法,其特征在于,包括以下步骤:51、为操作系统内核中的mntnamespace结构添加一个链表头dm_list,该mnt_namespace结构用于创建devicemapper,将新创建的devicemapper挂到以mnt_namespace的链表头dm_list为头的链表上,每个mntnamespace都有一个devicemapper链表;52、所有需要查询devicemapper的操作,都需要先确定要寻找的devicemapper所在的mntnamespace,然后在该mntnamespace的链表头dm_list上查找。2.根据权利要求1所述的基于android容器的devicemapper隔离方法,其特征在于,devicemapper的创建步骤为:在操作系统内核中,找到当前进程对应的mntnamespace,判断在该mntnamespace上是否有同名挂载点的devicemapper,如果有,则返回错误,如果没有,则创建devicemapper,并挂载到对应mntnamespace的链表头dm_list上。
百度查询: 北京海杭通讯科技有限公司 一种基于android容器的device mapper隔离方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。