访问文件的方法和装置的制造方法_3

文档序号:9929636阅读:来源:国知局
一主机之间的网络发生分割,该第一主机和该第二主机之间只能通过共享磁盘来传递是否已经解锁的信息。例如,在该第一主机对该第二文件解锁成功后,可以将解锁成功的信息写入到共享磁盘,然后该第二主机可以通过读该共享磁盘中的相应字段的信息的方式获取该第一主机已经对该第二文件解锁成功的信息。
[0060]举例来说,假如集群文件系统运行在主机A、主机B、主机C、主机D、主机E上,在网络发生分割前,系统预配置的文件3所属的主机为主机C,而主机A对文件3加了锁,这时候网络发生分割,主机A、主机B在网络分割后属于一个区域,主机C、主机D属于另一个区域,主机E单独属于一个区域,不同区域之间的网络是不通的,同一区域内部的网络是通的。当主机A发现网络发生分割后,依次检查主机A上所有加锁的文件,发现文件3加锁了,并且文件3所属的主机C与该主机A不在同一个区域。所以该文件3需要解锁。但是由于该文件3已经加锁成功,或者其他主机正在对该文件3执行一些操作,所以等待这些操作完成后对该文件3进行解锁,解锁成功后,将文件3解锁成功的消息写入到共享磁盘。可选地,若主机C如果需要对该文件3进行加锁,必须得等待不属于主机C和主机D的其他主机回复已经对该文件3解锁后才能对该文件3进行加锁。
[0061]应理解,为了描述简洁,在文件系统中为该文件预配置的主机标识指示的主机,也就是在网络发生分割时有该文件的访问权限的主机,有时候也描述为文件所属的主机,两者是等价的概念。
[0062]可选地,作为一个实施例,该方法200还可以包括:
[0063]在该文件系统的整个磁盘空间中,分别为该文件系统中的每个主机预先分配该每个主机对应的磁盘空间。
[0064]具体地,在整个集群文件系统被分割为一个个的本地文件系统之后,还可以分别为该每个主机分配属于每个主机的磁盘空间,这样,每个主机就可以在属于自己的磁盘空间内为文件分配空间,并对文件进行操作,相互之间互不干扰,因此,此时主机之间对集群文件系统的访问也就不需要分布式锁机制了。
[0065]因此,本发明实施例的访问文件的方法,在网络发生分割时,不是将主机踢除出集群文件系统,从而导致主机不能访问集群文件系统,而是将集群文件系统分割为多个本地文件系统,并且为每个本地文件系统预先分配相应的磁盘空间,从而,各个主机可以在为自己预先分配的磁盘空间管理文件,因此,提高了网络发生分割时访问集群文件系统的可靠性。
[0066]可选地,作为一个实施例,该第一文件的访问请求为写入请求,在该访问该第一文件之前,该方法还包括:
[0067]确定该文件系统的整个磁盘空间中该第一主机对应的磁盘空间的剩余空间不小于写入该第一文件所需的磁盘空间;
[0068]该访问该第一文件,包括:
[0069]在该第一主机的该剩余空间为写入该第一文件分配第一磁盘空间;
[0070]在该第一磁盘空间写入该第一文件。
[0071]具体地,在为该每个主机分配相应的磁盘空间后,若接收到第一文件的写入请求,根据该写入请求,获取该写入请求对应的第一主机标识,并通过对比该第一文件的预配置的第二主机标识和该第一主机标识,确定该第一主机可以写入该第一文件。可选地,首先确定第一主机对应的磁盘空间的剩余空间是否足够写入该第一文件,若足够,该第一主机在该剩余空间中为写入该第一文件分配第一磁盘空间,然后在该第一磁盘空间写入该文件,否则,返回写入错误。或者,若接收到该第一文件的读请求,该第一主机可以直接到存储该第一文件的磁盘空间读取该第一文件即可。
[0072]可选地,作为一个实施例,该在该文件系统的整个磁盘空间中,分别为该多个主机中的每个主机预先分配该每个主机对应的磁盘空间,包括:
[0073]将该整个磁盘空间平均分配给该每个主机;或
[0074]根据该每个主机上的虚拟机的磁盘空间的大小,分别为该每个主机分配相应的磁盘空间。
[0075]具体地,实际场景包括虚拟化场景和除虚拟化场景以外的普通场景,在普通场景中,主机上的应用不知道每个主机需要多少磁盘空间,此时,可选地,可以根据主机的总数将该整个磁盘空间平均分配该每个主机;但是在虚拟化场景中,由于每个虚拟机的磁盘空间是确定的,所以可以知道主机上的应用所需的最大的磁盘空间的大小,因此,可以按照每个主机上的应用所需的最大的磁盘空间的大小给该每个主机预先分配磁盘空间。
[0076]可选地,作为一个实施例,该将该整个磁盘空间平均分配给该每个主机,包括:
[0077]若该N能被M整除,为该M个主机中的每个主机分配N/M个磁盘块;或
[0078]若该N不能被M整除,为该M个主机中的a个主机分配b+Ι个磁盘块,为剩余的M_a个主机中的每个主机分配b个磁盘块;
[0079]其中,该M为该多个主机包括的主机的数量,该N为该整个磁盘空间包括的磁盘块的数量,a为N对M取余得到的整数,b*N对M取整得到的整数。
[0080]具体地,若该多个主机包括M个主机,该文件系统的整个磁盘空间包括N个磁盘块,可选地,若N可以被M整除,可以将该N个磁盘块平均分配该M个主机,否则,可以给该M个主机中的其中几个主机少分配一个磁盘块。那么,该整个磁盘空间可以按照以下方式分配:为该M个主机中的a个主机分配b+1个磁盘块,为剩余的M-a个主机中的每个主机分配b个磁盘块,a为N对M取余得到的整数,b为N对M取整得到的整数。举例来说,若该M= 12,N= 80,N/M不能整除,N对M取余得到的整数a为8,N对M取整得到的整数b为6,因此可以为该12台主机中的8台主机分别分配7个磁盘块,为剩余的4台主机分别分配6个磁盘块。这样,每个主机为待写入的文件分配空间时,都可以从为自己预留的的磁盘空间去分配,因此主机之间对文件的操作相互不存在干扰,从而,解决了网络发生分割时,主机不能访问集群文件系统的问题。[0081 ]可选地,作为一个实施例,该根据该每个主机上的虚拟机的磁盘空间的大小,分别为该每个主机分配相应的磁盘空间,包括:
[0082]若该每个主机的虚拟机的磁盘空间的大小的总和大于该整个磁盘空间的大小,按照该每个主机的虚拟机的磁盘空间的大小的比例,分别为该每个主机分配相应的磁盘空间;或
[0083]若该每个主机的虚拟机的磁盘空间的大小不大于该整个磁盘空间的大小,为该每个主机分配的磁盘空间的大小为该每个主机上的虚拟机的磁盘空间的大小。
[0084]具体地,在虚拟机场景中,该每个主机上的虚拟机的磁盘空间是确定的,如果该每个主机上的虚拟机的磁盘空间的总和超过整个磁盘空间的大小,也就是说,整个磁盘空间的大小不足够为每个主机预留足够的磁盘空间。此时,可选地,可以根据每个主机上的虚拟机的磁盘空间的大小的比例,为每个主机分配相应大小的磁盘空间,也就是说可以为虚拟机的磁盘空间大的主机预留相对较大的磁盘空间,为虚拟机的磁盘空间小的主机预留相对较小的磁盘空间。或者如果该每个主机上的虚拟机的磁盘空间的大小不大于该整个磁盘空间的大小,也就是说整个磁盘空间的大小足够为每个主机预留足够的磁盘空间,此时,可以根据该每个主机上的虚拟机的磁盘空间的大小,为每个主机预留相应大小的磁盘空间。
[0085]可选地,作为一个实施例,该方法200还可以包括:
[0086]为该文件系统中的文件预配置相应的主机标识,该主机标识指示在该文件系统处于网络分割状态时,该主机标识指示的主机能够访问该文件。
[0087]具体地,在主机上的虚拟机启动时,会打开虚拟机镜像文件,此时可以为该虚拟机镜像文件配置主机标识,若该文件长时间只被一台主机访问,该主机标识可以配置为经常访问该文件的主机的主机标识。例如,可以通过调用1CTL命令设置该主机标识,集群文件系统接收到该命令后,可以将该主机标识记录到该文件的元数据中。可选地,在网络发生分割时,该主机标识可以用于校验请求访问该文件的主机的主机标识与该元数据中记录的主机标识是否一致,若网络未发生分割,该元数据中记录的主机标识不发生作用。也就是说网络未发生分割时,整个集群文件系统是作为一个整体存在的,通过分布式锁机制,每个主机都可以访问该文件,但是在网络发生分割时,分布式锁失效,只有该主机标识指示的主机才可以访问该文件。
[0088]下面结合图3所示的流程图详细介绍根据本发明实施例的访问文件的方法300。
[0089]S301,检测网络是否发生分割;
[0090]若网络发生分割,流程进行到S302,否则,继续执行S301。
[0091]具体地,确定网络发生分割的具体步骤可以参加S200中的相关描述,为了简洁,这里不再赘述。
[0092]S302,清除主机的DLM的状态和锁资源的信息。
[0093]具体步骤可以参加S200中的相关描述,为了简洁,这里不再赘述。
[0094]S303,设置集群文件系统的状态为本地文件系统状态。
[0095
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1