1.一种云计算中容器的文件管理系统,其特征在于,所述系统包括以下模块:
容器初始联合文件系统生成模块,用于在接收到容器镜像创建指令后,对于镜像层的每个文件进行分块,建立文件与数据块的对应表,生成包含所述对应表的容器镜像;在接收到容器运行指令后,利用所述容器镜像创建容器,并生成容器的初始联合文件系统;所述初始联合文件系统从下到上依次为;镜像层、容器层、元数据层、统一视图层;其中,所述初始联合文件系统的元数据层根据所述对应表生成;
容器文件管理模块,用于在容器运行过程中,接收到文件操作指令后,判断文件操作类型,根据所述文件操作类型和所述元数据层对镜像层和\或容器层的数据块进行操作;
所述对于镜像层的每个文件进行分块,建立文件与数据块的对应表,具体为:将镜像层分为两层,分别为第一子镜像层和第二子镜像层,所述第一子镜像层为基础镜像层,所述基础镜像层为操作系统镜像层,其他的镜像层为第二子镜像层;将第一子镜像层对应的每个文件作为一个数据块,将第二镜像层对应的每个文件按照预设数据块大小划分为至少一个数据块,并在文件表中记录文件与数据块的对应关系;
所述对于镜像层的每个文件进行分块,建立文件与数据块的对应表,具体为:将镜像层分为N个子镜像层,从低往上对子镜像层依次编号为1、...、N;第1子镜像层为基础镜像层,在所述第1子镜像层的基础上,每次执行一次commit操作,生成一个子镜像层;其中,所述基础镜像层为操作系统镜像层;N为大于等于1的正整数;将第1子镜像层对应的每个文件作为一个数据块,将第k个子镜像层对应的每个文件按照与镜像层对应的数据块大小划分为至少一个数据块,所述与镜像层对应的数据块大小为 Block,其中k为子镜像层的编号,Block为用户设置的数据块大小。
2.如权利要求1所述的系统,其特征在于,所述根据所述文件操作类型和所述元数据层对镜像层和\或容器层的数据块进行操作,具体为:若为新增文件,则在容器层创建新增文件对应的数据块,并在元数据层记录新增文件的元数据,在所述数据块中存储文件内容;
若为删除文件,如果要删除文件的部分或全部数据块存在于容器层,则将位于容器层的部分或者全部数据块从容器层删除,并将要删除文件对应的元数据从元数据层删除,如果要删除文件的数据块全部位于镜像层,则将要删除文件对应的元数据从元数据层删除;
若为修改文件,则判断要修改的数据块的位置,若在容器层,则对数据块进行修改,若在镜像层,则复制数据块到容器层并修改数据块;在元数据层更新要修改文件的元数据;
若为读取文件,则判断元数据层中是否存在要读取的文件,如果存在,根据元数据层存储的要读取的文件的元数据信息从镜像层和\或容器层读取文件。
3.一种云计算中容器的文件管理方法,其特征在于,所述方法包括以下步骤:
在接收到容器镜像创建指令后,对于镜像层的每个文件进行分块,建立文件与数据块的对应表,生成包含所述对应表的容器镜像;在接收到容器运行指令后,利用所述容器镜像创建容器,并生成容器的初始联合文件系统;所述初始联合文件系统从下到上依次为:镜像层、容器层、元数据层、统一视图层;其中,所述初始联合文件系统的元数据层根据所述对应表生成;
在容器运行过程中,接收到文件操作指令后,判断文件操作类型,根据所述文件操作类型和所述元数据层对镜像层和\或容器层的数据块进行操作;
所述对于镜像层的每个文件进行分块,建立文件与数据块的对应表,具体为;将镜像层分为两层,分别为第一子镜像层和第二子镜像层,所述第一子镜像层为基础镜像层,所述基础镜像层为操作系统镜像层,其他的镜像层为第二子镜像层;将第一子镜像层对应的每个文件作为一个数据块,将第二镜像层对应的每个文件按照预设数据块大小划分为至少一个数据块,并在文件表中记录文件与数据块的对应关系;
所述对于镜像层的每个文件进行分块,建立文件与数据块的对应表,具体为:将镜像层分为N个子镜像层,从低往上对子镜像层依次编号为1、...、N;第1子镜像层为基础镜像层,在所述第1子镜像层的基础上,每次执行一次commit操作,生成一个子镜像层;其中,所述基础镜像层为操作系统镜像层;N为大于等于1的正整数;将第1子镜像层对应的每个文件作为一个数据块,将第k个子镜像层对应的每个文件按照与镜像层对应的数据块大小划分为至少一个数据块,所述与镜像层对应的数据块大小为 Block,其中k为子镜像层的编号,Block为用户设置的数据块大小。
4.如权利要求3所述的方法,其特征在于,所述根据所述文件操作类型和所述元数据层对镜像层和\或容器层的数据块进行操作,具体为:若为新增文件,则在容器层创建新增文件对应的数据块,并在元数据层记录新增文件的元数据,在所述数据块中存储文件内容;
若为删除文件,如果要删除文件的部分或全部数据块存在于容器层,则将位于容器层的部分或者全部数据块从容器层删除,并将要删除文件对应的元数据从元数据层删除,如果要删除文件的数据块全部位于镜像层,则将要删除文件对应的元数据从元数据层删除;
若为修改文件,则判断要修改的数据块的位置,若在容器层,则对数据块进行修改,若在镜像层,则复制数据块到容器层并修改数据块;在元数据层更新要修改文件的元数据;
若为读取文件,则判断元数据层中是否存在要读取的文件,如果存在,根据元数据层存储的要读取的文件的元数据信息从镜像层和\或容器层读取文件。
5.如权利要求3所述的方法,其特征在于,所述元数据层有多个链表构成,每个链表对应一个容器镜像中的文件,链表的第一个数据元素为文件名称,链表的第二个数据元素为文件的权限信息,链表的后续每个数据元素为文件的对应的数据块地址及读取次数、修改次数。
6.如权利要求5所述的方法,其特征在于,定时遍历每个链表,根据链表中所述修改次数对链表排序,将修改次数最多的链表作为第一个链表。