CN105718589B - 访问文件的方法和装置 - Google Patents
访问文件的方法和装置 Download PDFInfo
- Publication number
- CN105718589B CN105718589B CN201610053459.7A CN201610053459A CN105718589B CN 105718589 B CN105718589 B CN 105718589B CN 201610053459 A CN201610053459 A CN 201610053459A CN 105718589 B CN105718589 B CN 105718589B
- Authority
- CN
- China
- Prior art keywords
- host
- file
- disk space
- file system
- disk
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/183—Provision of network file services by network file servers, e.g. by using NFS, CIFS
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种访问文件的方法和装置,该方法包括:确定文件系统处于网络分割状态,该文件系统运行在多个主机上,该网络分割状态指示该文件系统被划分为至少两个分区,该至少两个分区之间的网络是不通的;接收第一文件的访问请求;获取该访问请求对应的第一主机标识;确定该第一主机标识与该文件系统中为该第一文件预配置的第二主机标识一致;访问该第一文件。本发明实施例的访问文件的方法和装置,能够提高网络发生分割时访问集群文件系统的可靠性。
Description
技术领域
本发明涉及信息技术领域,并且更具体地,涉及一种访问文件的方法和装置。
背景技术
集群文件系统或者分布式文件系统中的多个主机通过交换机连接在一起形成一个可以互通的网络,多个主机之间对共享资源进行访问采用的是互斥访问的模式,例如多个主机同时写一个文件,这时候要用分布式锁保证互斥。只有当一个主机写完后,释放锁,其他主机才能继续写。但是如果出现主机网卡故障或者交换机端口故障网络故障或者软件故障时,有可能造成集群文件系统被分割成两个或多个子网络,在子网络内的网络是互通的,但是在各个分割的网络间是不互通的。
现有技术中,当集群文件系统发生网络分割时,为了保证集群文件系统不挂住,必须把一部分的服务器剔除集群文件系统,那么被剔除出集群文件系统的主机上的应用就不能访问集群文件系统,从而导致业务中断,业务为了保证连续性,只能关闭虚拟机,然后再在其他主机上启动虚拟机,因此,在网络发生分割时访问集群文件系统的可靠性降低。
发明内容
本发明实施例提供一种访问文件的方法和装置,能够提高网络发生分割时,访问文件系统的可靠性。
第一方面,提供了一种访问文件的方法,该方法包括:确定文件系统处于网络分割状态,所述文件系统运行在多个主机上,所述网络分割状态指示所述文件系统被划分为至少两个分区,所述至少两个分区之间的网络不通;接收第一文件的访问请求;获取所述访问请求对应的第一主机标识;确定所述第一主机标识与所述文件系统中为所述第一文件预配置的第二主机标识一致;访问所述第一文件。
结合第一方面,在第一方面的第一种实现方式中,在所述确定文件系统处于网络分割状态之前,所述方法还包括:在所述文件系统的整个磁盘空间中,分别为所述多个主机中的每个主机预先分配所述每个主机对应的磁盘空间。
结合第一方面及其上述实现方式,在第一方面的第二种实现方式中,所述第一文件的访问请求为写入请求,在所述访问所述第一文件之前,所述方法还包括:确定所述文件系统的整个磁盘空间中所述第一主机对应的磁盘空间的剩余空间不小于写入所述第一文件所需的磁盘空间;所述访问所述第一文件,包括:在所述第一主机的所述剩余空间为写入所述第一文件分配第一磁盘空间;在所述第一磁盘空间写入所述第一文件。
结合第一方面及其上述实现方式,在第一方面的第三种实现方式中,所述在所述文件系统的整个磁盘空间中,分别为所述多个主机中的每个主机预先分配所述每个主机对应的磁盘空间,包括:将所述整个磁盘空间平均分配给所述每个主机;或根据所述每个主机上的虚拟机的磁盘空间的大小,分别为所述每个主机分配相应的磁盘空间。
结合第一方面及其上述实现方式,在第一方面的第四种实现方式中,所述将所述整个磁盘空间平均分配给所述每个主机,包括:若所述N能被M整除,为所述M个主机中的每个主机分配N/M个磁盘块;或若所述N不能被M整除,为所述M个主机中的a个主机分配b+1个磁盘块,为剩余的M-a个主机中的每个主机分配b个磁盘块;其中,所述M为所述多个主机包括的主机的数量,所述N为所述整个磁盘空间包括的磁盘块的数量,a为N对M取余得到的整数,b为N对M取整得到的整数。
结合第一方面及其上述实现方式,在第一方面的第五种实现方式中,所述根据所述每个主机上的虚拟机的磁盘空间的大小,分别为所述每个主机分配相应的磁盘空间,包括:若所述每个主机的虚拟机的磁盘空间的大小的总和大于所述整个磁盘空间的大小,按照所述每个主机的虚拟机的磁盘空间的大小的比例,分别为所述每个主机分配相应的磁盘空间;或若所述每个主机的虚拟机的磁盘空间的大小不大于所述整个磁盘空间的大小,为所述每个主机分配的磁盘空间的大小为所述每个主机上的虚拟机的磁盘空间的大小。
结合第一方面及其上述实现方式,在第一方面的第六种实现方式中,所述确定所述文件系统处于网络分割状态,包括:若第三主机接收不到第四主机发送的网络心跳的时间大于第一时间阈值,确定所述文件系统处于网络分割状态,所述第三主机和所述第四主机为所述多个主机中的两个不同的主机。
结合第一方面及其上述实现方式,在第一方面的第七种实现方式中,在所述确定文件系统处于网络分割状态之后,所述方法还包括:
将所述多个主机中的每个主机的状态配置为本地文件系统状态;
在确定第一主机已加锁第二文件,且所述文件系统中为所述第二文件预配置的主机标识指示的第二主机与所述第一主机位于网络不通的两个分区时,解锁所述第二文件的文件锁。
结合第一方面及其上述实现方式,在第一方面的第八种实现方式中,所述第二主机在确定所述第一主机对所述第二文件解锁成功后,对所述第二文件进行加锁。
结合第一方面及其上述实现方式,在第一方面的第九种实现方式中,所述方法还包括:为所述文件系统中的文件预配置相应的主机标识,所述主机标识指示在所述文件系统处于网络分割状态时,所述主机标识指示的主机能够访问所述文件。
第二方面,提供了一种访问文件的装置,用于执行第一方面或第一方面的任一种实现方式中的方法。
具体地,该装置可以包括用于执行第一方面或第一方面的任一种实现方式中的各模块。
第三方面,提供了一种访问文件的装置,包括收发器、处理器、存储器和总线系统,该收发器、该处理器和该存储器通过该总线系统相连,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,并且对该存储器中存储的指令的执行使得该处理器执行第一方面或第一方面的任一种实现方式中的方法。
本发明实施例的访问文件的方法和装置,在网络发生分割时,不是将主机踢除出文件系统,从而导致主机不能访问文件系统,而是可以允许与文件系统中为该文件预配置的主机标识一致的主机访问该文件,该预配置的主机标识指示的主机为经常访问该文件的主机,因此,即使在网络发生分割时,该主机也是可以访问该文件的,因此,提高了网络发生分割时,访问文件系统的可靠性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例所适用的系统的示意性框图;
图2是本发明实施例的访问文件的方法的示意性流程图;
图3是本发明另一实施例的访问文件的方法的示意性流程图;
图4是本发明再一实施例的访问文件的方法的示意性流程图;
图5是本发明实施例的访问文件的装置的示意性框图;
图6是本发明另一实施例的访问文件的装置的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应理解,本发明实施例的技术方案可以应用于各种文件系统,例如,基于存储区域网络(英文全称:Storage Area Network,简称:SAN)的集群文件系统,或基于本地磁盘的分布式文件系统等,本发明实施例对此不作限制。
为了简洁,本发明实施例以基于SAN的集群文件系统为例进行描述,但不应对本发明实施例构成任何限制。
首先介绍一下本发明实施例的访问文件的方法所适用的系统架构的示意图。需要理解的是,图1仅为方便理解的示意性说明图,并不限定该系统架构的组成模式。如图1所示,该系统架构可以包括:
主机110和/或主机120,主机110和/或主机120可以是物理主机、终端计算机等,本发明不做限定。
FC(Fiber Channel,光纤通道)交换机130和/或IP(Internet Protocol,因特网协议)交换机140,FC交换机130和IP交换机140,用于将主机110和120输出的数据转发至对应的SAN侧。
FCSAN(Fiber Channel Storage Area Network,光纤通道存储区域网络)150,和/或IPSAN(Internet Protocol Storage Area Network,因特网协议存储区域网络)160。FCSAN150,通过光纤网络连接HBA卡/网卡、交换机和/或存储阵列。IPSAN 160,通过IP网络连接HBA卡/网卡、交换机和/或存储阵列。
主机110中可以包括:本地磁盘(local disk)111、HBA(Host Bus Adapter,主机总线适配器)卡112或网卡113,HBA卡112和网卡113功能类似,主机110通过HBA卡112或网卡113连接交换机或存储设备。
主机110上可以运行数据库、虚拟机等应用程序。应用程序通过文件接口访问集群文件系统,文件接口有open、read、write、close等接口。在文件接口调用的过程中,可能需要加锁,防止该文件被多个主机同时写。
同时主机110上也运行着集群文件系统,集群文件系统的数据信息保持在SAN上。每个主机都有一个IP网络,通过该IP网络传输各个主机之间的集群文件系统的控制信息。
该主机110上还可以包括网络分割检测模块114,用于每隔一段时间向文件系统中的各个主机发送网络心跳,当一段时间内接收不到其他主机发送的网络心跳后,确定文件系统进入网络分割状态。
分布式锁机制(英文全称:Distributed Lock Mechanism,简称:DLM)模块115,用于实现集群文件系统对共享资源的互斥访问,若多个主机同时写一个文件,这时候要用分布式锁保持互斥,只有当一个主机写完后,释放锁,其他主机才能对该文件进行写操作。
分布式锁有两种实现方式,一种是全对等分布式锁,即每个主机都可以作为某个锁资源的管理员master,也可以作为另一个锁资源的客户Client,锁资源master是动态选举出来的,一旦锁资源master选举成功,后续每个主机想操作该锁资源,都需要向锁资源master请求加锁或解锁。另一种是非对等分布式锁,即在集群文件系统开始运行时,已预先指定哪些主机是锁资源master,哪些主机是锁资源Client。
如图1所示的主机120与主机110类似,主机120中的各个模块分别与主机110中的各个模块相对应,在此不再赘述。
需要理解的是,图1为本发明实施例所适用的系统的一个示例性说明,以图示中的主机110和主机120为例说明系统中的主机的基本构成,以图示中的FC交换机130和IP交换机140表示该系统可能支持的交换机类型,且该系统中可能支持的交换机类型不限于此,实际系统中,可能包括一台或更多台主机,以及可能包括一台或多台类型相同或不同的交换机,本发明实施例不做限定。
图2示出了根据本发明实施例的访问文件的方法200的示意性流程图,该方法200可以由主机执行,更具体地,可以由主机上的应用程序执行,如图2所示,该方法200包括:
S210,确定文件系统处于网络分割状态,该文件系统运行在多个主机上,该网络分割状态指示该文件系统被划分为至少两个分区,该至少两个分区之间的网络不通;
S220,接收第一文件的访问请求;
S230,获取该访问请求对应的第一主机标识;
S240,确定该第一主机标识与该文件系统中为该第一文件预配置的第二主机标识一致;
S250,访问该第一文件。
具体地,本发明实施例的访问文件的方法适用于在文件系统发生网络分割时,在文件系统未发生网络分割时,每个主机都可以访问文件系统中的文件(只要对该文件加锁成功),但是当文件系统发生网络分割时,例如,主机网卡故障或交换机端口故障,导致该主机被隔离,或者软件故障(例如,网卡驱动,软件栈或交换机软件故障等)导致某主机被隔离等,现有技术在网络发生分割时为了保证集群文件系统不挂住(例如,若发生网络分割的两个分区中存在这样的两个主机,一个为锁资源master,另一个为锁资源Client,因为两个分区发生网络分割,所以锁资源master和锁资源client不能进行正常通信,因此,锁资源mster接收不到锁资源client向锁资源mster发送的加锁请求,所以锁资源client不能对文件加锁成功,从而导致主机不能正常访问集群文件系统中的文件),会将一部分主机剔除集群,以保证对其他主机对集群文件系统的正常访问。例如,采用重启主机或置主机上的集群文件系统状态为无效的方式将主机踢出集群,但是无论采用哪种方式,都会造成原来运行在该主机上的应用不能继续访问集群文件系统,导致业务的中断,从而造成访问集群文件系统的可靠性降低。
本发明实施例在确定文件系统处于网络分割状态时,可以允许主机继续访问集群文件系统,因此,不会造成主机上的业务的中断。具体地,网络发生分割时,若该集群文件系统接收到第一文件的访问请求,可选地,该访问请求可以是主机上的应用程序发送的。主机上的集群文件系统可以根据该访问请求,获取该访问请求对应的第一主机标识,该访问请求对应的第一主机标识指示发起该访问请求的主机的主机标识。然后对比该第一主机标识和文件系统中为该第一文件预配置的第二主机标识是否一致,在确定该第一主机标识和该第二主机标识一致时,该第一主机访问该第一文件。之所以可以在确定第一主机标识与该第二主机标识一致时,该第一主机访问该第一文件,是因为在实际的应用场景中,集群文件系统中的某个文件往往只会被一台主机访问,具体地,虚拟机内的虚拟磁盘对应的虚拟机镜像文件在比较长时间内往往只会被一台主机访问。因此,可以将该文件预配置的第二主机标识设置为经常访问该文件的主机的主机标识,那么即使文件系统处于网络分割状态,也可以允许该主机继续访问该文件,从而提高了在网络发生分割的情况下访问集群文件系统的可靠性。
可选地,作为一个实施例,该确定该文件系统处于网络分割状态,包括:
若第三主机接收不到第四主机发送的网络心跳的时间大于第一时间阈值,确定该文件系统处于网络分割状态,该第三主机和该第四主机为该多个主机中的两个不同的主机。
具体地,在集群文件系统挂载(mount)到主机时,主机中的网络分割检测模块会启动一个网络心跳检测线程,在该线程里,每隔一段时间向集群中的其他主机发送网络心跳。可选地,可以在几个网络心跳发送失败时,确定该文件系统处于网络分割状态,或者在该主机接收不到其他主机的网络心跳的时间超过某个时间阈值时,确定该文件系统处于网络分割状态。例如,在第三主机接收不到第四主机发送的心跳的时间大于第一时间阈值,或第三主机连续三次向第四主机发送心跳失败时,确定该文件系统处于网络分割状态。
可选地,作为一个实施例,在确定文件系统处于网络分割状态之后,该方法200还可以包括:
在确定第一主机已加锁第二文件,且该文件系统中为该第二文件预配置的主机标识指示的第二主机与该第一主机位于网络不通的两个分区时,解锁该第二文件的文件锁。
具体地,在确定文件系统处于网络分割状态之后,现有技术中会通知主机上的DLM模块启动恢复操作,例如,关闭虚拟机,在其他主机上重启虚拟机,或置主机上的文件系统状态为无效,这些操作都会造成主机不能继续访问集群文件系统,导致业务的中断。在本发明实施例中,可以在确定网络发生分割之后,将每个主机上的文件系统的状态置为本地文件系统状态,例如,可以设置一个状态指示信息,用于指示主机上的文件系统的状态,在网络发生分割时,可以将该状态指示信息配置为本地文件系统状态,在网络恢复时,将该状态指示信息重新配置为集群文件系统状态,例如,可以设置该状态指示信息为0时表示文件系统的状态为集群文件系统状态,为1时表示文件系统的状态为本地文件系统状态,那么,在网络发生分割时,可以将该状态指示信息设置为1。在每个主机上的文件系统的状态都置为本地文件系统之后,整个集群文件系统就被分割为多个本地文件系统。可选地,在将每个主机上的文件系统的状态置为本地文件系统状态的同时,还可以清除每个主机上的DLM的状态。具体地,当网络发生分割时,可以依次查看每个主机上的文件锁,如果第一主机对第二文件加了文件锁,而且第二文件预配置的主机标识指示的第二主机与该第一主机属于发生网络分割的两个区域,那么必须要解锁该第二文件,否则,该第二主机也是不能访问该第二文件的。可选地,在第一主机对第二文件解锁以后,由于该第二文件的预配置的主机标识指示第二主机,也就是允许该第二主机在网络发生分割时访问该第二文件,那么该第二主机可以对该第二主机加锁,那么和第二主机在网络分割时处于同一分区的主机也可以通过文件锁请求访问该第二文件。
可选地,作为另一个实施例,该方法200还包括:
该第二主机在确定该第一主机对该第二文件解锁成功后,对该第二文件进行加锁。
可选地,在该第二主机对该第二文件进行加锁前,若其他主机已对该第二文件进行加锁,需要等待其他主机对该第二文件解锁完成后才能对该第二文件进行加锁。因为该第二主机和第一主机之间的网络发生分割,该第一主机和该第二主机之间只能通过共享磁盘来传递是否已经解锁的信息。例如,在该第一主机对该第二文件解锁成功后,可以将解锁成功的信息写入到共享磁盘,然后该第二主机可以通过读该共享磁盘中的相应字段的信息的方式获取该第一主机已经对该第二文件解锁成功的信息。
举例来说,假如集群文件系统运行在主机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进行加锁。
应理解,为了描述简洁,在文件系统中为该文件预配置的主机标识指示的主机,也就是在网络发生分割时有该文件的访问权限的主机,有时候也描述为文件所属的主机,两者是等价的概念。
可选地,作为一个实施例,该方法200还可以包括:
在该文件系统的整个磁盘空间中,分别为该文件系统中的每个主机预先分配该每个主机对应的磁盘空间。
具体地,在整个集群文件系统被分割为一个个的本地文件系统之后,还可以分别为该每个主机分配属于每个主机的磁盘空间,这样,每个主机就可以在属于自己的磁盘空间内为文件分配空间,并对文件进行操作,相互之间互不干扰,因此,此时主机之间对集群文件系统的访问也就不需要分布式锁机制了。
因此,本发明实施例的访问文件的方法,在网络发生分割时,不是将主机踢除出集群文件系统,从而导致主机不能访问集群文件系统,而是将集群文件系统分割为多个本地文件系统,并且为每个本地文件系统预先分配相应的磁盘空间,从而,各个主机可以在为自己预先分配的磁盘空间管理文件,因此,提高了网络发生分割时访问集群文件系统的可靠性。
可选地,作为一个实施例,该第一文件的访问请求为写入请求,在该访问该第一文件之前,该方法还包括:
确定该文件系统的整个磁盘空间中该第一主机对应的磁盘空间的剩余空间不小于写入该第一文件所需的磁盘空间;
该访问该第一文件,包括:
在该第一主机的该剩余空间为写入该第一文件分配第一磁盘空间;
在该第一磁盘空间写入该第一文件。
具体地,在为该每个主机分配相应的磁盘空间后,若接收到第一文件的写入请求,根据该写入请求,获取该写入请求对应的第一主机标识,并通过对比该第一文件的预配置的第二主机标识和该第一主机标识,确定该第一主机可以写入该第一文件。可选地,首先确定第一主机对应的磁盘空间的剩余空间是否足够写入该第一文件,若足够,该第一主机在该剩余空间中为写入该第一文件分配第一磁盘空间,然后在该第一磁盘空间写入该文件,否则,返回写入错误。或者,若接收到该第一文件的读请求,该第一主机可以直接到存储该第一文件的磁盘空间读取该第一文件即可。
可选地,作为一个实施例,该在该文件系统的整个磁盘空间中,分别为该多个主机中的每个主机预先分配该每个主机对应的磁盘空间,包括:
将该整个磁盘空间平均分配给该每个主机;或
根据该每个主机上的虚拟机的磁盘空间的大小,分别为该每个主机分配相应的磁盘空间。
具体地,实际场景包括虚拟化场景和除虚拟化场景以外的普通场景,在普通场景中,主机上的应用不知道每个主机需要多少磁盘空间,此时,可选地,可以根据主机的总数将该整个磁盘空间平均分配该每个主机;但是在虚拟化场景中,由于每个虚拟机的磁盘空间是确定的,所以可以知道主机上的应用所需的最大的磁盘空间的大小,因此,可以按照每个主机上的应用所需的最大的磁盘空间的大小给该每个主机预先分配磁盘空间。
可选地,作为一个实施例,该将该整个磁盘空间平均分配给该每个主机,包括:
若该N能被M整除,为该M个主机中的每个主机分配N/M个磁盘块;或
若该N不能被M整除,为该M个主机中的a个主机分配b+1个磁盘块,为剩余的M-a个主机中的每个主机分配b个磁盘块;
其中,该M为该多个主机包括的主机的数量,该N为该整个磁盘空间包括的磁盘块的数量,a为N对M取余得到的整数,b为N对M取整得到的整数。
具体地,若该多个主机包括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个磁盘块。这样,每个主机为待写入的文件分配空间时,都可以从为自己预留的的磁盘空间去分配,因此主机之间对文件的操作相互不存在干扰,从而,解决了网络发生分割时,主机不能访问集群文件系统的问题。
可选地,作为一个实施例,该根据该每个主机上的虚拟机的磁盘空间的大小,分别为该每个主机分配相应的磁盘空间,包括:
若该每个主机的虚拟机的磁盘空间的大小的总和大于该整个磁盘空间的大小,按照该每个主机的虚拟机的磁盘空间的大小的比例,分别为该每个主机分配相应的磁盘空间;或
若该每个主机的虚拟机的磁盘空间的大小不大于该整个磁盘空间的大小,为该每个主机分配的磁盘空间的大小为该每个主机上的虚拟机的磁盘空间的大小。
具体地,在虚拟机场景中,该每个主机上的虚拟机的磁盘空间是确定的,如果该每个主机上的虚拟机的磁盘空间的总和超过整个磁盘空间的大小,也就是说,整个磁盘空间的大小不足够为每个主机预留足够的磁盘空间。此时,可选地,可以根据每个主机上的虚拟机的磁盘空间的大小的比例,为每个主机分配相应大小的磁盘空间,也就是说可以为虚拟机的磁盘空间大的主机预留相对较大的磁盘空间,为虚拟机的磁盘空间小的主机预留相对较小的磁盘空间。或者如果该每个主机上的虚拟机的磁盘空间的大小不大于该整个磁盘空间的大小,也就是说整个磁盘空间的大小足够为每个主机预留足够的磁盘空间,此时,可以根据该每个主机上的虚拟机的磁盘空间的大小,为每个主机预留相应大小的磁盘空间。
可选地,作为一个实施例,该方法200还可以包括:
为该文件系统中的文件预配置相应的主机标识,该主机标识指示在该文件系统处于网络分割状态时,该主机标识指示的主机能够访问该文件。
具体地,在主机上的虚拟机启动时,会打开虚拟机镜像文件,此时可以为该虚拟机镜像文件配置主机标识,若该文件长时间只被一台主机访问,该主机标识可以配置为经常访问该文件的主机的主机标识。例如,可以通过调用IOCTL命令设置该主机标识,集群文件系统接收到该命令后,可以将该主机标识记录到该文件的元数据中。可选地,在网络发生分割时,该主机标识可以用于校验请求访问该文件的主机的主机标识与该元数据中记录的主机标识是否一致,若网络未发生分割,该元数据中记录的主机标识不发生作用。也就是说网络未发生分割时,整个集群文件系统是作为一个整体存在的,通过分布式锁机制,每个主机都可以访问该文件,但是在网络发生分割时,分布式锁失效,只有该主机标识指示的主机才可以访问该文件。
下面结合图3所示的流程图详细介绍根据本发明实施例的访问文件的方法300。
S301,检测网络是否发生分割;
若网络发生分割,流程进行到S302,否则,继续执行S301。
具体地,确定网络发生分割的具体步骤可以参加S200中的相关描述,为了简洁,这里不再赘述。
S302,清除主机的DLM的状态和锁资源的信息。
具体步骤可以参加S200中的相关描述,为了简洁,这里不再赘述。
S303,设置集群文件系统的状态为本地文件系统状态。
具体地,可以将每个主机的文件系统的状态指示信息配置为本地文件系统状态,例如,该状态指示信息为0时表示文件系统的状态为集群文件系统状态,为1时表示文件系统为本地文件系统状态,因此,可以在网络发生分割时,将该指示信息设置为1。
此时,每个主机的文件系统的状态都设置为本地文件系统状态,那么整个集群文件系统被分割为多个本地文件系统。
下面结合图4所示的流程图详细介绍在文件系统被设置为本地文件系统状态时,根据本发明实施例的访问文件的方法400。
S401,获取文件的读写请求;
该文件的读写请求可以为主机上的应用程序发送的,该读写请求用于请求访问集群文件系统中的文件。
S402,判断是读请求还是写请求;
如果是写请求,流程进行到S403,如果是读请求,流程进行到S409;
S403,确定该文件预配置的主机标识与该写请求对应的主机标识是否一致;
如果一致,流程进行到S404,否则流程进行到S408,返回写文件错误,流程结束。
S404,判断集群文件系统的整个磁盘空间是否进行块分配;
如果已经进行块分配,也就是每个主机都有自己的磁盘空间,主机之间不能相互访问对方的磁盘空间,此时流程进行到S405,否则流程进行到S407,直接在集群文件系统的磁盘空间写入该文件。
S405,判断文件系统的整个磁盘空间中该主机对应的磁盘空间的剩余空间是否足够写入该文件;
如果足够,流程进行到S406,否则,流程进行到S408,返回写文件错误,流程结束,也就是说,如果磁盘空间不足的话,也是不允许写入该文件的。
S406,在该主机对应的磁盘空间的剩余空间中为写入该文件分配相应的磁盘空间。
S407,在相应的磁盘空间写入该文件。
应理解,该S403~S408为网络发生分割时,集群文件系统中对文件进行写操作的流程,下面介绍网络发生分割时,集群文件系统中对文件进行读操作的流程。
S409,确定该文件预配置的主机标识与该读请求对应的主机标识是否一致;
若一致,流程进行到S410,否则,流程进行到S411,返回读文件错误,流程结束。
S410,到该主机对应的磁盘空间读取该文件。
因此,本发明实施例的访问文件的方法,在网络发生分割时,不是将主机被踢除出集群文件系统,从而导致主机不能访问集群文件系统,而是将集群文件系统分割为多个本地文件系统,并且为每个本地文件系统预先分配相应的磁盘空间,从而,各个主机可以在为自己预先分配的磁盘空间管理文件,因此,提高了网络发生分割时访问集群文件系统的可靠性。
图5示出了根据本发明实施例的访问文件的装置500的示意性框图,该装置500包括:
确定模块510,用于确定文件系统处于网络分割状态,该文件系统运行在多个主机上,该网络分割状态指示该文件系统被划分为至少两个分区,该至少两个分区之间的网络不通;
收发模块520,用于接收第一文件的访问请求;
获取模块530,用于获取该访问请求对应的第一主机标识;
该确定模块510还用于确定该第一主机标识与该文件系统中为该第一文件预配置的第二主机标识一致;
访问模块540,用于在该确定模块510确定该第一主机标识和该第二主机标识一致时,访问该第一文件。
因此,本发明实施例的访问文件的装置,在网络发生分割时,不是将主机踢除出集群文件系统,从而导致主机不能访问集群文件系统,而是将集群文件系统分割为多个本地文件系统,并且为每个本地文件系统预先分配相应的磁盘空间,从而,各个主机可以在为自己预先分配的磁盘空间管理文件,因此,提高了网络发生分割时访问集群文件系统的可靠性。
根据本发明实施例的装置500可对应于根据本发明实施例的访问文件的方法200、300和400中的执行主体,并且装置500中的各个模块的上述和其它操作和/或功能分别为了实现前述各个方法的相应流程,为了简洁,在此不再赘述。
如图6所示,本发明实施例还提供了一种访问文件的装置600,该装置600包括处理器610、存储器620、总线系统630和收发器640。其中,处理器610、存储器620和收发器640通过总线系统630相连,该存储器620用于存储指令,该处理器610用于执行该存储器620存储的指令,以控制收发器640接收信号或发送信号。该处理器610用于确定文件系统处于网络分割状态,该文件系统运行在多个主机上,该网络分割状态指示该文件系统被划分为至少两个分区,该至少两个分区之间的网络不通;该收发器640用于接收第一文件的访问请求;该处理器610还用于获取该访问请求对应的第一主机标识,并在确定该第一主机标识与该文件系统中为该第一文件预配置的第二主机标识一致时,访问该第一文件。
应理解,在本发明实施例中,该处理器610可以是中央处理单元(CentralProcessing Unit,简称为“CPU”),该处理器610还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器620可以包括只读存储器和随机存取存储器,并向处理器610提供指令和数据。存储器620的一部分还可以包括非易失性随机存取存储器。例如,存储器620还可以存储设备类型的信息。
该总线系统630除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统630。
在实现过程中,上述方法的各步骤可以通过处理器610中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器620,处理器610读取存储器620中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
因此,本发明实施例的访问文件的装置,在网络发生分割时,不是将主机踢除出集群文件系统,从而导致主机不能访问集群文件系统,而是将集群文件系统分割为多个本地文件系统,并且为每个本地文件系统预先分配相应的磁盘空间,从而,各个主机可以在为自己预先分配的磁盘空间管理文件,因此,提高了网络发生分割时访问集群文件系统的可靠性。
根据本发明实施例的装置600可对应于根据本发明实施例的访问文件的方法200、300和400中的执行主体,并且装置600中的各个模块的上述和其它操作和/或功能分别为了实现前述各个方法的相应流程,为了简洁,在此不再赘述。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (16)
1.一种访问文件的方法,其特征在于,包括:
确定文件系统处于网络分割状态,所述文件系统运行在多个主机上,所述网络分割状态指示所述文件系统被划分为至少两个分区,所述至少两个分区之间的网络不通;
接收第一文件的访问请求;
获取所述访问请求对应的第一主机标识;
确定所述第一主机标识与所述文件系统中为所述第一文件预配置的第二主机标识一致;
访问所述第一文件;
将所述多个主机中的每个主机的状态配置为本地文件系统状态;
在确定第一主机已加锁第二文件,且所述文件系统中为所述第二文件预配置的主机标识指示的第二主机与所述第一主机位于网络不通的两个分区时,解锁所述第二文件的文件锁。
2.根据权利要求1所述的方法,其特征在于,在所述确定文件系统处于网络分割状态之前,所述方法还包括:
在所述文件系统的整个磁盘空间中,分别为所述多个主机中的每个主机预先分配所述每个主机对应的磁盘空间。
3.根据权利要求2所述的方法,其特征在于,所述第一文件的访问请求为写入请求,在所述访问所述第一文件之前,所述方法还包括:
确定所述文件系统的整个磁盘空间中所述第一主机对应的磁盘空间的剩余空间不小于写入所述第一文件所需的磁盘空间;
所述访问所述第一文件,包括:
在所述第一主机的所述剩余空间为写入所述第一文件分配第一磁盘空间;
在所述第一磁盘空间写入所述第一文件。
4.根据权利要求2或3所述的方法,其特征在于,所述在所述文件系统的整个磁盘空间中,分别为所述多个主机中的每个主机预先分配所述每个主机对应的磁盘空间,包括:
将所述整个磁盘空间平均分配给所述每个主机;或
根据所述每个主机上的虚拟机的磁盘空间的大小,分别为所述每个主机分配相应的磁盘空间。
5.根据权利要求4所述的方法,其特征在于,所述将所述整个磁盘空间平均分配给所述每个主机,包括:
若N能被M整除,为M个主机中的每个主机分配N/M个磁盘块;或
若所述N不能被M整除,为所述M个主机中的a个主机中的每个主机分配b+1个磁盘块,为剩余的M-a个主机中的每个主机分配b个磁盘块;
其中,所述M为所述多个主机包括的主机的数量,所述N为所述整个磁盘空间包括的磁盘块的数量,a为N对M取余得到的整数,b为N对M取整得到的整数。
6.根据权利要求4所述的方法,其特征在于,所述根据所述每个主机上的虚拟机的磁盘空间的大小,分别为所述每个主机分配相应的磁盘空间,包括:
若所述每个主机的虚拟机的磁盘空间的大小的总和大于所述整个磁盘空间的大小,按照所述每个主机的虚拟机的磁盘空间的大小的比例,分别为所述每个主机分配相应的磁盘空间;或
若所述每个主机的虚拟机的磁盘空间的大小不大于所述整个磁盘空间的大小,为所述每个主机分配的磁盘空间的大小为所述每个主机上的虚拟机的磁盘空间的大小。
7.根据权利要求1-3、5-6中任一项所述的方法,其特征在于,所述方法还包括:
所述第二主机在确定所述第一主机对所述第二文件解锁成功后,对所述第二文件进行加锁。
8.根据权利要求1-3、5-6中任一项所述的方法,其特征在于,所述方法还包括:
为所述文件系统中的文件预配置相应的主机标识,所述主机标识指示在所述文件系统处于网络分割状态时,所述主机标识指示的主机能够访问所述文件。
9.一种访问文件的装置,其特征在于,包括:
确定模块,用于确定文件系统处于网络分割状态,所述文件系统运行在多个主机上,所述网络分割状态指示所述文件系统被划分为至少两个分区,所述至少两个分区之间的网络不通;
收发模块,用于接收第一文件的访问请求;
获取模块,用于获取所述访问请求对应的第一主机标识;
所述确定模块还用于确定所述第一主机标识与所述文件系统中为所述第一文件预配置的第二主机标识一致;
访问模块,用于在所述确定模块确定所述第一主机标识和所述第二主机标识一致时,访问所述第一文件;
管理模块,用于将所述多个主机中的每个主机的状态配置为本地文件系统状态;
所述确定模块还用于确定第一主机已加锁第二文件,且集群文件系统中为所述第二文件预配置的主机标识指示的第二主机与所述第一主机位于网络不通的两个分区;
所述管理模块还用于解锁所述第二文件的文件锁。
10.根据权利要求9所述的装置,其特征在于,
管理模块,还用于在所述文件系统的整个磁盘空间中,分别为所述多个主机中的每个主机预先分配所述每个主机对应的磁盘空间。
11.根据权利要求10所述的装置,其特征在于,所述第一文件的访问请求为写入请求,所述确定模块还用于:
确定所述文件系统的整个磁盘空间中所述第一主机对应的磁盘空间的剩余空间不小于写入所述第一文件所需的磁盘空间;
所述管理模块还用于:
在所述第一主机的所述剩余空间为写入所述第一文件分配第一磁盘空间;
所述访问模块还用于在所述第一磁盘空间写入所述第一文件。
12.根据权利要求10或11所述的装置,其特征在于,所述管理模块还用于:
将所述整个磁盘空间平均分配给所述每个主机;或
根据所述每个主机上的虚拟机的磁盘空间的大小,分别为所述每个主机分配相应的磁盘空间。
13.根据权利要求12所述的装置,其特征在于,所述管理模块还用于:
若N能被M整除,为M个主机中的每个主机分配N/M个磁盘块;或
若所述N不能被M整除,为所述M个主机中的a个主机中的每个主机分配b+1个磁盘块,为剩余的M-a个主机中的每个主机分配b个磁盘块;
其中,所述M为所述多个主机包括的主机的数量,所述N为所述整个磁盘空间包括的磁盘块的数量,a为N对M取余得到的整数,b为N对M取整得到的整数。
14.根据权利要求12所述的装置,其特征在于,所述管理模块还用于:
若所述每个主机的虚拟机的磁盘空间的大小的总和大于所述整个磁盘空间的大小,按照所述每个主机的虚拟机的磁盘空间的大小的比例,分别为所述每个主机分配相应的磁盘空间;或
若所述每个主机的虚拟机的磁盘空间的大小不大于所述整个磁盘空间的大小,为所述每个主机分配的磁盘空间的大小为所述每个主机上的虚拟机的磁盘空间的大小。
15.根据权利要求9-11、13-14中任一项所述的装置,其特征在于,所述确定模块还用于确定所述第一主机对所述第二文件解锁成功;
所述管理模块还用于在确定所述第一主机对所述第二文件解锁成功时,管理所述第二主机对所述第二文件进行加锁。
16.根据权利要求9-11、13-14中任一项所述的装置,所述管理模块还用于:
为所述文件系统中的文件预配置相应的主机标识,所述主机标识指示在所述文件系统处于网络分割状态时,所述主机标识指示的主机能够访问所述文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610053459.7A CN105718589B (zh) | 2016-01-26 | 2016-01-26 | 访问文件的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610053459.7A CN105718589B (zh) | 2016-01-26 | 2016-01-26 | 访问文件的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105718589A CN105718589A (zh) | 2016-06-29 |
CN105718589B true CN105718589B (zh) | 2020-01-17 |
Family
ID=56153880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610053459.7A Active CN105718589B (zh) | 2016-01-26 | 2016-01-26 | 访问文件的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105718589B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107544751B (zh) * | 2017-05-17 | 2021-11-23 | 新华三云计算技术有限公司 | 一种远程访问磁盘的方法和装置 |
CN107580066A (zh) * | 2017-09-20 | 2018-01-12 | 郑州云海信息技术有限公司 | 一种分布式nas存储系统中文件访问的方法、装置及系统 |
CN108133034B (zh) * | 2018-01-08 | 2021-07-06 | 新华三云计算技术有限公司 | 共享存储访问方法及相关装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101459694A (zh) * | 2008-12-31 | 2009-06-17 | 中国科学院计算技术研究所 | 针对分布式文件系统的高可用消息传输框架和方法 |
CN103365982A (zh) * | 2013-07-03 | 2013-10-23 | 杭州华三通信技术有限公司 | 访问集群文件系统的方法及主机 |
CN103546574A (zh) * | 2013-10-30 | 2014-01-29 | 中国航空工业集团公司第六三一研究所 | 一种基于静态配置表的机载嵌入式网络文件访问控制方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7499905B2 (en) * | 2005-10-17 | 2009-03-03 | Cisco Technology, Inc. | Method and apparatus for accessing information based on distributed file system (DFS) paths |
-
2016
- 2016-01-26 CN CN201610053459.7A patent/CN105718589B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101459694A (zh) * | 2008-12-31 | 2009-06-17 | 中国科学院计算技术研究所 | 针对分布式文件系统的高可用消息传输框架和方法 |
CN103365982A (zh) * | 2013-07-03 | 2013-10-23 | 杭州华三通信技术有限公司 | 访问集群文件系统的方法及主机 |
CN103546574A (zh) * | 2013-10-30 | 2014-01-29 | 中国航空工业集团公司第六三一研究所 | 一种基于静态配置表的机载嵌入式网络文件访问控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105718589A (zh) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10412066B1 (en) | Hierarchical input/output fencing in clustered environments | |
CN112153085B (zh) | 一种数据处理方法、节点及区块链系统 | |
TWI453597B (zh) | 經由在一輸入輸出虛擬管理分割中之虛擬仲介以管理輸入輸出虛擬配接器的系統及方法 | |
WO2018036103A1 (zh) | 虚拟机创建方法、系统以及主机 | |
EP2851807B1 (en) | Method and system for supporting resource isolation under multi-core architecture | |
US8850156B2 (en) | Method and system for managing virtual machine storage space and physical host | |
US10372384B2 (en) | Method and system for managing storage system using first and second communication areas | |
US10169178B2 (en) | Implementing shared adapter configuration updates concurrent with maintenance actions in a virtualized system | |
EP3470984B1 (en) | Method, device, and system for managing disk lock | |
CN104346317B (zh) | 共享资源访问方法和装置 | |
CN110096220B (zh) | 一种分布式存储系统、数据处理方法和存储节点 | |
US20180225204A1 (en) | Buffer manager | |
CN104063331A (zh) | 处理器、共享存储区域访问方法和锁管理器 | |
CN105718589B (zh) | 访问文件的方法和装置 | |
US20140136502A1 (en) | File Lock Preservation | |
EP3958122A1 (en) | Memory management method, apparatus, and system | |
CN111897666A (zh) | 用于多进程之间通信的方法、设备及系统 | |
CN114710263B (zh) | 密钥管理方法、密钥管理装置、密钥管理设备及存储介质 | |
US20200272526A1 (en) | Methods and systems for automated scaling of computing clusters | |
CN114356215A (zh) | 一种分布式集群及分布式集群锁的控制方法 | |
CN107533475B (zh) | 用于在共享存储设备中协调读取和写入过程的方法和系统 | |
CN106708865B (zh) | 流处理系统中访问窗口数据的方法和装置 | |
CN110612510B (zh) | 无需专用仲裁器的输入/输出(i/o)隔离 | |
CN116055664B (zh) | 一种用于视频处理进程的共享内存方法、装置及存储介质 | |
CN110659303A (zh) | 一种数据库节点的读写控制方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |