一种容量获取方法及系统的制作方法

文档序号:6522845阅读:103来源:国知局
一种容量获取方法及系统的制作方法
【专利摘要】本申请提供了一种容量获取方法及系统,以解决获取容量中IO消耗过大对系统造成负担的问题。为了解决上述问题,本申请公开了一种容量获取方法,包括:向磁盘的文件系统发送调用磁盘元数据的请求;接收返回的磁盘元数据,所述磁盘元数据包括磁盘中存储块的总量和存储块的空闲量;通过对所述磁盘中存储块的总量和存储块的空闲量的计算,获得磁盘的容量信息。本申请直接调用磁盘元数据,不会产生IO消耗,使得磁盘的利用率始终保持在正常的水平,不会对系统造成负担。
【专利说明】一种容量获取方法及系统
[0001]本发明专利申请是申请日为2011年12月27日、申请号为201110444072.1、名称为“分布式文件系统中的容量获取方法及容量获取系统”的中国发明专利申请的分案申请。
【技术领域】
[0002]本申请涉及计算机存储技术,特别是涉及一种容量获取方法及系统。
【背景技术】
[0003]HDFS (Hadoop Distributed File System)是一个分布式文件系统,有着高容错性的特点,并且提供高吞吐量来访问应用程序的数据,适合有着超大数据集的应用程序,可以解决海量数据存储的问题。
[0004]HDFS的主节点(NameNode)通过与存储节点(DataNode)进行周期性的心跳通信,来获取各个存储节点的容量信息,进而获取整个集群的容量信息。而每一个存储节点包含多个磁盘,因此存储节点采用du命令方式获取每一个磁盘的空间占用量,进而获取本地的空间占用量。
[0005]du命令方式获取每一个磁盘的空间占用量的具体做法是,循环遍历存储节点包含的每一个磁盘,并对于每一个磁盘执行如下操作:从磁盘存储数据的根目录(例如,参数dfs.data, dir配置的目录)开始,以此根目录为根节点按照深度优先的方式遍历这个目录树。若遇到中间节点,即该节点对应是子目录,则继续遍历子目录,直到遇到叶子节点,即该节点对应的是文件,则获取对应的文件元数据,从文件元数据中获取文件的大小信息。然后将某个中间节点对应的所有叶子节点文件的大小信息累加求和后作为给中间节点对应子目录的大小。然后逐层累加直到所述目录树遍历完成,获取了整个目录树中所有文件的空间占用量,即获得到了该磁盘的空间占用量,然后返回给du命令。
[0006]上述的过程中需要扫描磁盘中的所有文件,因此通常会产生大量的10(lnput/Output,输入/输出)消耗,此过程导致磁盘利用率饱和,即磁盘利用率达到了 100%,这对系统造成了很大的负担,甚至在某些情况下会影响HDFS的性能。

【发明内容】

[0007]本申请提供了一种容量获取方法及系统,以解决获取容量中10消耗过大对系统造成负担的问题。
[0008]为了解决上述问题,本申请公开了一种容量获取方法,包括:
[0009]向磁盘的文件系统发送调用磁盘元数据的请求;
[0010]接收返回的磁盘元数据,所述磁盘元数据包括磁盘中存储块的总量和存储块的空闲量;
[0011]通过对所述磁盘中存储块的总量和存储块的空闲量的计算,获得磁盘的容量信
肩、Ο
[0012]优选的,所述容量信息包括空间总量、空间剩余量和空间占用量。[0013]优选的,每个存储块的容量是固定的,所述通过对所述磁盘中存储块的总量和存储块的空闲量的计算,获得磁盘的容量信息,包括:
[0014]将所述存储块的容量与所述磁盘中存储块的总量相乘,计算结果作为磁盘的空间总量;
[0015]将所述存储块的容量与所述磁盘中存储块的空闲量相乘,计算结果作为磁盘的空间剩余量。
[0016]优选的,将磁盘的空间总量减去磁盘的空间剩余量,计算结果磁盘的空间占用量。
[0017]优选的,获得磁盘的容量信息之后,还包括:
[0018]将磁盘的容量信息返回给df命令。
[0019]优选的,存储节点调用df命令以获取每个磁盘的容量信息,并将所有磁盘的容量信息相加的和作为该存储节点的容量信息。
[0020]优选的,类DF用于实现调用df命令,所述存储节点通过执行df命令以获取每个磁盘的空间占用量,包括:
[0021]存储节点通过调用FSDataset类的getDfsUsed方法,最终调用FSVolume类的getDfsUsed 方法;
[0022]所述FSVolume类的getDfsUsed方法通过类DF实现调用df命令,以获取磁盘的
容量信息。
[0023]优选的,存储节点周期性的调用df命令以获取对应的容量信息,并将所述容量信息周期性的传输给主节点。
[0024]优选的,存储节点以各个磁盘的容量信息为基准,在对应的磁盘中分配并保存数据。
[0025]相应的,本申请还公开了一种容量获取系统,包括:
[0026]发送请求模块,用于向磁盘的文件系统发送调用磁盘元数据的请求;
[0027]接收元数据模块,用于接收返回的磁盘元数据,所述磁盘元数据包括磁盘中存储块的总量和存储块的空闲量;
[0028]计算容量模块,用于通过对所述磁盘中存储块的总量和存储块的空闲量的计算,获得磁盘的容量信息。
[0029]优选的,所述容量信息包括空间总量、空间剩余量和空间占用量。
[0030]优选的,每个存储块的容量是固定的,所述计算容量模块,包括:
[0031]计算空间总量子模块,用于将所述存储块的容量与所述磁盘中存储块的总量相乘,计算结果作为磁盘的空间总量;
[0032]计算空间剩余量子模块,用于将所述存储块的容量与所述磁盘中存储块的空闲量相乘,计算结果作为磁盘的空间剩余量。
[0033]优选的,所述计算容量模块,还包括:
[0034]计算空间占用量子模块,用于将磁盘的空间总量减去磁盘的空间剩余量,计算结果磁盘的空间占用量。
[0035]优选的,所述的系统还包括:
[0036]容量返回模块,用于将磁盘的容量信息返回给df命令。
[0037]优选的,所述的系统还包括:[0038]获取容量模块,用于存储节点调用df命令以获取每个磁盘的容量信息,并将所有磁盘的容量信息相加的和作为该存储节点的容量信息。
[0039]优选的,类DF用于实现调用df命令,所述获取容量模块包括:
[0040]调用方法子模块,用于存储节点通过调用FSDataset类的getDfsUsed方法,最终调用 FSVolume 类的 getDfsUsed 方法;
[0041]调用命令子模块,用于所述FSVolume类的getDfsUsed方法通过类DF实现调用df命令,以获取磁盘的容量信息。
[0042]优选的,所述的系统还包括:
[0043]传输模块,用于存储节点周期性的调用df命令以获取对应的容量信息,并将所述容量信息周期性的传输给主节点。
[0044]分配数据模块,用于存储节点以各个磁盘的容量信息为基准,在对应的磁盘中分配并保存数据。
[0045]与现有技术相比,本申请包括以下优点:
[0046]首先,本申请不需要根据目录树这种逻辑存储结构来遍历磁盘的每一个文件,获取每一个文件的元数据中的大小信息,再逐层累加后获得磁盘的空间占用量,而是根据磁盘的物理存储结构,向磁盘的文件系统发送调用磁盘元数据的请求,接收返回的磁盘元数据,所述磁盘元数据包括磁盘中存储块的总量和存储块的空闲量,再通过对所述磁盘中存储块的总量和存储块的空闲量的计算,获得磁盘的容量信息。此过程中直接调用磁盘元数据,不会产生10消耗,使得磁盘的利用率始终保持在正常的水平,不会对系统造成负担。
【专利附图】

【附图说明】
[0047]图1是本申请实施例所述一种容量获取方法流程图;
[0048]图2是本申请实施例所述分布式系统结构图;
[0049]图3是本申请实施例所述一种容量获取系统结构图。
【具体实施方式】
[0050]为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本申请作进一步详细的说明。
[0051]本申请提供一种容量获取方法,存储节点在获取每个磁盘的容量信息时根据数据存储的物理结构直接调用磁盘元数据,进而获取磁盘的容量信息不会产生10消耗,使得磁盘的利用率始终保持在正常的水平,不会对系统造成负担。
[0052]磁盘在存储数据时可以分为逻辑存储结构和物理存储结构。
[0053]所述逻辑存储结构以文件为存储单位,建立一个目录树,目录树中的主节点是主目录,中间节点是子目录,叶子节点就是文件。
[0054]所述物理存储结构以存储块为存储单位,将一个磁盘分为许多个存储块,存储块的容量比较小,并且存储块的容量是固定的,通常一个文件可以存储在若干个存储块中,例如存储块为1KB,而某文件的大小是5KB,那么就需要5个存储块来存储这个文件。
[0055]参照图1,给出了本申请实施例所述一种容量获取方法流程图。
[0056]步骤11,向磁盘的文件系统发送调用磁盘元数据的请求;[0057]磁盘的文件系统中存有磁盘元数据,所述磁盘元数据保存的与容量有关的数据是按照磁盘物理存储结构存储的,因此磁盘元数据可以包括磁盘中存储块的总量和存储块的空闲量等数据。
[0058]本申请按照磁盘物理存储结构来获取容量,因此在获取每个磁盘的容量信息时,可以直接调用磁盘文件系统中的磁盘元数据。因此需要向磁盘的文件系统发送调用磁盘元数据的请求。
[0059]所述文件系统,也称文件管理系统,是操作系统中负责管理和存储文件信息的软件机构。文件系统由三部分组成:与文件管理有关软件、被管理文件以及实施文件管理所需数据结构。
[0060]步骤12,接收返回的磁盘元数据,所述磁盘元数据包括磁盘中存储块的总量和存储块的空闲量;
[0061]磁盘的文件系统在接收到调用磁盘元数据的请求后,会返回磁盘元数据,此时接收所述磁盘元数据,就可以接收到磁盘中存储块的总量和存储块的空闲量等数据。
[0062]步骤13,通过计算所述磁盘中存储块的总量和存储块的空闲量,获得磁盘的容量信息。
[0063]所述容量信息包括空间总量、空间剩余量和空间占用量,每个存储块的容量是固定的,因此根据磁盘元数据中存储块的总量和存储块的空闲量,可以计算获得磁盘的容量信息。
[0064]具体计算步骤如下:
[0065]步骤131,将所述存储块的容量与所述磁盘中存储块的总量相乘,计算结果作为磁盘的空间总量;
[0066]步骤132,将所述存储块的容量与所述磁盘中存储块的空闲量相乘,计算结果作为磁盘的空间剩余量。
[0067]步骤133,将磁盘的空间总量减去磁盘的空间剩余量,计算结果磁盘的空间占用量。
[0068]例如,某个磁盘中存储块的总量为1024个,存储块的空闲量为512个,每个存储块的容量是1KB。
[0069]则该磁盘的空间总量为1KBX1024=1024KB=1M
[0070]该磁盘的空间剩余量为1KBX512=512KB
[0071]则该磁盘的空间占用量为1024KB-512KB=512KB
[0072]通过上述的计算方法可以获取该磁盘的容量信息。
[0073]现有技术是依照磁盘的逻辑存储结构从主节点开始,沿着中间节点最终可以遍历到叶子节点,即从主目录开始最终遍历到文件,并获取文件元数据,再逐层累加直到主目录,来获取该磁盘的空间占有量。此过程常会产生大量的10 (Input/Output,输入/输出)消耗,此过程导致磁盘利用率饱和,即磁盘利用率达到了 100%,这对系统造成了很大的负担,甚至在某些情况下会影响HDFS的性能。
[0074]本申请根据磁盘的物理存储结构,向磁盘的文件系统发送调用磁盘元数据的请求,接收返回的磁盘元数据,所述磁盘元数据包括磁盘中存储块的总量和存储块的空闲量,再通过对所述磁盘中存储块的总量和存储块的空闲量的计算,获得磁盘的容量信息。此过程中直接调用磁盘元数据,不会产生10消耗,使得磁盘的利用率始终保持在正常的水平,不会对系统造成负担。
[0075]优选的,获得磁盘的容量信息之后,还包括:
[0076]将磁盘的容量信息返回给df命令。
[0077]df命令会调用函数执行步骤11到步骤13的过程,该函数最终可以获取到磁盘的容量信息,然后将所述容量信息返回给df命令。
[0078]优选的,存储节点调用df命令以获取每个磁盘的容量信息,并将所有磁盘的容量信息相加的和作为该存储节点的容量信息。
[0079]本申请中通过df命令调用函数最终获取到磁盘的容量信息,因此所述存储节点可以调用df命令来获取每个磁盘的容量信息,然后将所有磁盘的容量信息相加的和作为该存储节点的容量信息。
[0080]例如,某一存储节点包含3个磁盘,通过df命令调用函数,该函数通过发送请求、接收磁盘元数据和计算,最终返回磁盘1的容量信息包括:空间总量为100M、空间剩余量40M和空间占用量60M。磁盘2的容量信息包括:空间总量为200M、空间剩余量120M和空间占用量80M。磁盘3的容量信息包括:空间总量为50M、空间剩余量40M和空间占用量10M。
[0081]则最终该存储节点的容量信息为:
[0082]空间总量100M+200M+50M=350M
[0083]空间剩余量40M+120M+40M=200M
[0084]空间占用量60M+80M+10M=150M
[0085]优选的,类DF用于实现调用df命令,所述存储节点通过执行df命令以获取每个磁盘的空间占用量,包括:
[0086]存储节点通过调用FSDataset类的getDfsUsed方法,最终调用FSVolume类的getDfsUsed 方法;
[0087]所述FSVolume类的getDfsUsed方法通过类DF实现调用df命令,以获取磁盘的
容量信息。
[0088]存储节点(DataNode)调用FSDataset类的getDfsUsed方法获取磁盘的容量信息,然后通过和主节点(NameNode)的心跳通信传递该信息。而FSDataset类的getDfsUsed方法最终调用FSVolume类的getDfsUsed方法。
[0089]由于在FSVolume中已经包含了 df的实现类,即类DF。所以需要将getDfsUsed方法的实现设置为使用DF类的版本。
[0090]设置文如下的情况:
[0091]long getDftlJsed() throws lOException {if( usage.getUsed() - reserved > 0 ) {return usage.getUsedQ - reserved;
} else {return 0;
}
}
[0092]其中,对象usage是DF类的实例,调用“usage.getUsedO ”是df命令的一个实现,最终调用函数从每一块磁盘的文件系统的管理结构中获取磁盘的空间总量与空间剩余量,在计算获得磁盘的空间占用量。
[0093]优选的,存储节点周期性的调用df命令以获取对应的容量信息,并将所述容量信息周期性的传输给主节点。
[0094]在HDFS系统中,HDFS的主节点(NameNode)通过与存储节点(DataNode)进行周期性的心跳通信,来获取各个存储节点的容量信息,进而获取整个集群的容量信息。
[0095]因此存储节点会周期性的调用df命令以获取对应的容量信息,然后再将所述容量信息周期性的传输给主节点。
[0096]本申请可以应用于HDFS(Hadoop Distributed File System)分布式文件系统中,该系统可以解决海量数据存储的问题。
[0097]后续,主节点在存储新数据时,可以根据各个存储节点传输的容量信息,确定应该存储在哪个存储节点中。
[0098]存储节点在接收到主节点传输的数据后,以各个磁盘的容量信息为基准,在对应的磁盘中分配并保存数据。
[0099]例如,某个数据的大小是200M,存储节点1的容量信息为:磁盘A空间总量为100M、空间剩余量40M和空间占用量60M,磁盘B空间总量为300M、空间剩余量120M和空间占用量180M。存储节点2的容量信息为:磁盘A空间总量为500M、空间剩余量105M和空间占用量395M,磁盘B空间总量为500M、空间剩余量320M和空间占用量180M。
[0100]因此,主节点会将数据存储在存储节点2中,存储节点2再以各个磁盘的容量信息为基准,磁盘B的空间剩余量为320M,大于数据的大小200M,因此可以将数据分配到在磁盘B中存储。
[0101]参照图2,给出了本申请实施例所述分布式系统结构图。
[0102]在所述分布式系统架构中,包含了以下几个模块:
[0103]Client是客户端,从主节点处获取某个文件的存储位置,再到对应的存储节点处
进行写/读操作。
[0104]NameNode是hadoop分布式文件系统中的主节点,维护了 hadoop分布式文件系统中的所有文件的元数据信息,包含文件的访问权限、宿主、以及文件的数据存储的位置等,而这些元数据信息最终都会被持久化到磁盘中。
[0105]DataNode是hadoop分布式文件系统中的存储节点,存储了 hadoop分布式文件系统中的文件的内容。
[0106]SecondaryNameNode是hadoop分布式文件系统的备主节点,所述备主节点定期和主节点保持的hadoop分布式文件系统元数据进行同步,同时对主节点上持久化的数据进行合并。
[0107]其中,hadoop分布式文件系统的每个存储节点中的文件,最终被分成大小固定的块(例如一个块的大小为128MB,可配置)存放。如果文件的大小不足一个块大小,则文件存储为一个块,其大小为文件的真实大小,不会多占用空间。如果文件大小不是块大小对齐,则最后一个块不会占满一个块的空间,所有块大小总和为文件真实大小的空间。
[0108]具体实施中,每个存储节点(DataNode)会定期地把存储在本地的块发送给主节点(NameNode)ο以使得NameNode能够感知hadoop文件系统中所有文件的数据存储位置。
[0109]此时,所述文件被分成大小固定的块存放,是这对hadoop分布式文件系统而言的,用于确定文件的数据存储位置。
[0110]而上文论述的文件被分成若干个存储块来存放,是针对磁盘而言的,仅可以获取到容量信息。这两处论述的技术是不同的,不能混淆视之。
[0111]本申请所述的容量获取方法可以应用于hadoop分布式文件系统,具体应用于该系统的存储节点在获取每个磁盘的容量信息。存储节点通过调用df命令获取每个磁盘的容量信息,进而获取该存储节点的容量信息,再周期性的与主节点进行心跳通信,告知自己的容量信息。
[0112]后续主节点在决策新数据的存放位置时,可以通过某个存储节点的容量信息,来决策该存储节点是否还可以继续存放新数据。
[0113]参照图3,给出了本申请实施例所述一种容量获取系统结构图。
[0114]相应的,本申请还提供了一种容量获取系统,包括发送请求模块11、接收元数据模块12和计算容量模块13,其中
[0115]发送请求模块11,用于向磁盘的文件系统发送调用磁盘元数据的请求;
[0116]接收元数据模块12,用于接收返回的磁盘元数据,所述磁盘元数据包括磁盘中存储块的总量和存储块的空闲量;
[0117]计算容量模块13,用于通过对所述磁盘中存储块的总量和存储块的空闲量的计算,获得磁盘的容量信息。
[0118]其中,所述容量信息包括空间总量、空间剩余量和空间占用量。
[0119]优选的,每个存储块的容量是固定的,所述计算容量模块13,包括:
[0120]计算空间总量子模块131,用于将所述存储块的容量与所述磁盘中存储块的总量相乘,计算结果作为磁盘的空间总量;
[0121]计算空间剩余量子模块132,用于将所述存储块的容量与所述磁盘中存储块的空闲量相乘,计算结果作为磁盘的空间剩余量;
[0122]计算空间占用量子模块133,用于将磁盘的空间总量减去磁盘的空间剩余量,计算结果磁盘的空间占用量。
[0123]优选的,所述的系统还包括:
[0124]容量返回模块14,用于将磁盘的容量信息返回给df命令。
[0125]获取容量模块15,用于存储节点调用df命令以获取每个磁盘的容量信息,并将所有磁盘的容量信息相加的和作为该存储节点的容量信息。
[0126]传输模块16,用于存储节点周期性的调用df命令以获取对应的容量信息,并将所述容量信息周期性的传输给主节点。
[0127]分配数据模块17,用于存储节点以各个磁盘的容量信息为基准,在对应的磁盘中分配并保存数据。
[0128]优选的,类DF用于实现调用df命令,所述获取容量模块15包括:
[0129]调用方法子模块151,用于存储节点通过调用FSDataset类的getDfsUsed方法,最终调用FSVolume类的getDfsUsed方法;
[0130]调用命令子模块152,用于所述FSVolume类的getDfsUsed方法通过类DF实现调用df命令,以获取磁盘的容量信息。
[0131]对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0132]本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。 [0133]本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0134]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0135]以上对本申请所提供的一种容量获取方法及系统,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
【权利要求】
1.一种容量获取方法,其特征在于,包括:向磁盘的文件系统发送调用磁盘元数据的请求;接收返回的磁盘元数据,所述磁盘元数据包括磁盘中存储块的总量和存储块的空闲量;通过对所述磁盘中存储块的总量和存储块的空闲量的计算,获得磁盘的容量信息。
2.根据权利要求1所述的方法,其特征在于,所述容量信息包括空间总量、空间剩余量和空间占用量。
3.根据权利要求2所述的方法,其特征在于,每个存储块的容量是固定的,所述通过对所述磁盘中存储块的总量和存储块的空闲量的计算,获得磁盘的容量信息,包括:将所述存储块的容量与所述磁盘中存储块的总量相乘,计算结果作为磁盘的空间总量;将所述存储块的容量与所述磁盘中存储块的空闲量相乘,计算结果作为磁盘的空间剩余量。
4.根据权利要求3所述的方法,其特征在于,还包括:将磁盘的空间总量减去磁盘的空间剩余量,计算结果磁盘的空间占用量。
5.根据其权利要求1至4任`一所述的方法,其特征在于,获得磁盘的容量信息之后,还包括:将磁盘的容量信息返回给df命令。
6.根据权利要求5所述的方法,其特征在于,还包括:存储节点调用df命令以获取每个磁盘的容量信息,并将所有磁盘的容量信息相加的和作为该存储节点的容量信息。
7.根据权利要求6所述的方法,其特征在于,类DF用于实现调用df命令,所述存储节点通过执行df命令以获取每个磁盘的空间占用量,包括:存储节点通过调用FSDataset类的getDfsUsed方法,最终调用FSVolume类的getDfsUsed 方法;所述FSVolume类的getDfsUsed方法通过类DF实现调用df命令,以获取磁盘的容量信息。
8.根据权利要求6所述的方法,其特征在于,还包括:存储节点周期性的调用df命令以获取对应的容量信息,并将所述容量信息周期性的传输给主节点。
9.根据权利要求6所述的方法,其特征在于,还包括:存储节点以各个磁盘的容量信息为基准,在对应的磁盘中分配并保存数据。
10.一种容量获取系统,其特征在于,包括:发送请求模块,用于向磁盘的文件系统发送调用磁盘元数据的请求;接收元数据模块,用于接收返回的磁盘元数据,所述磁盘元数据包括磁盘中存储块的总量和存储块的空闲量;计算容量模块,用于通过对所述磁盘中存储块的总量和存储块的空闲量的计算,获得磁盘的容量信息。
11.根据权利要求10所述的系统,其特征在于,所述容量信息包括空间总量、空间剩余量和空间占用量。
12.根据权利要求11所述的系统,其特征在于,每个存储块的容量是固定的,所述计算容量模块,包括:计算空间总量子模块,用于将所述存储块的容量与所述磁盘中存储块的总量相乘,计算结果作为磁盘的空间总量;计算空间剩余量子模块,用于将所述存储块的容量与所述磁盘中存储块的空闲量相乘,计算结果作为磁盘的空间剩余量。
13.根据权利要求12所述的系统,其特征在于,所述计算容量模块,还包括:计算空间占用量子模块,用于将磁盘的空间总量减去磁盘的空间剩余量,计算结果磁盘的空间占用量。
14.根据权利要求10至12任一所述的系统,其特征在于,还包括:容量返回模块,用于将磁盘的容量信息返回给df命令。
15.根据权利要求14所述的系统,其特征在于,还包括:获取容量模块,用于存储节点调用df命令以获取每个磁盘的容量信息,并将所有磁盘的容量信息相加的和作为该存储节点的容量信息。
16.根据权利要求15所述的系统,其特征在于,类DF用于实现调用df命令,所述获取容量模块包括:调用方法子模块,用于存储节点通过调用FSDataset类的getDfsUsed方法,最终调用FSVolume 类的 getDfsUsed 方法;调用命令子模块,用于所述FSVolume类的getDfsUsed方法通过类DF实现调用df命令,以获取磁盘的容量信息。
17.根据权利要求15所述的系统,其特征在于,还包括:传输模块,用于存储节点周期性的调用df命令以获取对应的容量信息,并将所述容量信息周期性的传输给主节点。
18.根据权利要求15所述的系统,其特征在于,还包括:分配数据模块,用于存储节点以各个磁盘的容量信息为基准,在对应的磁盘中分配并保存数据。
【文档编号】G06F3/06GK103678563SQ201310659397
【公开日】2014年3月26日 申请日期:2011年12月27日 优先权日:2011年12月27日
【发明者】赵健博, 洪亮 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1