一种磁盘块的分配方法及装置的制造方法_3

文档序号:9523915阅读:来源:国知局
切换一个虚拟设备,因为日志存在都是短暂的,并且从来不读取这些数据,因此在写入时以能获取到更高的1PS(Input/OutputOperat1ns Per Second,每秒进行读写操作的次数)为目标。
[0059]步骤B,选择分区。
[0060]其中,本实施例选择分区的原则可以包括:
[0061]a、从选定的目标虚拟设备中找出距离数据虚拟地址最近、且权重最高的分区(离数据虚拟地址越近,需要的寻道时间越小,速度就越快);
[0062]b、当一个虚拟设备基本为空时,始终从外圈分配空间,可以减少磁盘查找(seek)的次数来提高带宽和减少延时;
[0063]C、被选择的分区是否已经达到允许分配失败的最高次数,如果达到了,需要考虑跳过这个分区;
[0064]d、被选择的分区权重是否在此过程中被其它线程修改过,如果修改过导致不符合条件,需要重新选择;
[0065]e、如果选出的分区正在被压缩,需要重新选择。
[0066]本实施例的磁盘块的分配方法,在选择虚拟设备、选择分区、选择磁盘块每一个环节中,都有多种选择策略,保证选中的磁盘块是最优解。
[0067]步骤C,选择磁盘块。
[0068]其中,本实施例选择磁盘块的原则可以包括:在空闲磁盘块充足的情况下使用First Fit算法确定目标磁盘块,空闲磁盘块不足的情况下切换为Best Fit算法确定目标磁盘块。
[0069]其中,First Fit是指从空闲磁盘块表的第一个表目起查找该表,把最先能够满足要求的空闲磁盘块分配给作业,这种方法目的在于减少查找时间。为适应这种算法,空闲磁盘块表中的空闲磁盘块要按地址由低到高进行排序,该算法优先使用低址部分空闲磁盘块。Best Fit是指从全部空闲磁盘块中找出能满足作业要求的、且大小最小的空闲磁盘块,这种方法能够使碎片尽量小。为适应此算法,空闲磁盘块表中的空闲磁盘块要按大小从小到大进行排序,自表头开始查找到第一个满足要求的自由磁盘块分配。
[0070]在本实施例的磁盘块的分配方法中,将虚拟设备(virtual devices)的存储空间划分为不同的分区(metaslab),并为每个分区定义了自己的权重(weight),在磁盘块的分配过程中按照选择虚拟设备、选择分区、选择磁盘块的顺序进行,且这三部分相互独立且可插拔,可以根据意愿修改而无需修改磁盘上的格式,在设备选择上有很大的灵活性。
[0071]需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0072]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如R0M/RAM、磁碟、光盘)中,包括如果干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
[0073]根据本发明实施例,还提供了一种用于实施上述方法实施例的装置实施例,本申请上述实施例所提供的装置可以在计算机终端上运行。
[0074]图3是根据本申请实施例的磁盘块的分配装置的结构示意图,如图3所示,该磁盘块的分配装置可以包括接收单元301、虚拟设备分配单元302、分区分配单元303以及磁盘块分配单元304。
[0075]其中,接收单元301,用于接收磁盘块分配指令,其中,接收到的磁盘块分配指令包括待存储文件的数据虚拟地址;虚拟设备分配单元302,用于从至少一个虚拟设备中确定目标虚拟设备;分区分配单元303,用于从确定出的目标虚拟设备的至少一个分区中确定目标分区,其中,所述至少一个分区预先设置有对应的权重,确定出的目标分区为所述至少一个分区中起始地址距离所述数据虚拟地址最近、且权重最高的分区;磁盘块分配单元304,用于在确定出的目标分区中,确定用于存储所述待存储文件的目标磁盘块。
[0076]由上可知,本申请上述实施例所提供的方案,通过遵循分级策略,即选择虚拟设备、选择分区、选择磁盘块的顺序进行分配,在每一层的分配上根据设备的特点进行选择,确定出最优的磁盘块,进而增加磁盘块分配的灵活性,提高了系统性能。
[0077]此处需要说明的是,上述接收单元301、虚拟设备分配单元302、分区分配单元303以及磁盘块分配单元304对应于上述的SlOl至S104,四个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在计算机终端中,可以通过软件实现,也可以通过硬件实现。
[0078]可选地,所述虚拟设备分配单元302用于执行以下步骤从至少一个虚拟设备中确定目标虚拟设备:在所述至少一个虚拟设备中确定元数据为空的虚拟设备,并将所述元数据为空的虚拟设备作为所述目标虚拟设备;或者,采用循环调度算法从所述至少一个虚拟设备中确定所述目标虚拟设备。
[0079]可选地,所述分区分配单元303用于执行以下步骤从确定出的目标虚拟设备的至少一个分区中确定目标分区:从所述至少一个分区中查找出距离所述数据虚拟地址最近、且权重最高的第一分区;判断查找出的第一分区当前是否正在被压缩;如果否,将查找出的第一分区作为所述目标分区。
[0080]可选地,所述分区分配单元303用于执行以下步骤从确定出的目标虚拟设备的至少一个分区中确定目标分区:从所述至少一个分区中查找出距离所述数据虚拟地址最近、且权重最高的第一分区;判断查找出的第一分区的分配失败次数是否已经达到预设门限;如果否,将查找出的第一分区作为所述目标分区。
[0081]可选地,所述分区分配单元303用于执行以下步骤从确定出的目标虚拟设备的至少一个分区中确定目标分区:从所述至少一个分区中查找出距离所述数据虚拟地址最近、且权重最高的第一分区;判断查找出的第一分区的权重是否被修改;如果否,将查找出的第一分区作为所述目标分区。
[0082]可选地,如图4所示,所述磁盘块分配单元304包括:判断模块401和确定模块402。
[0083]其中,判断模块401,用于在确定出目标分区中,判断空闲的磁盘块的数量是否超过预设阈值;确定模块402,用于如果超过,采用首次适应算法确定所述目标磁盘块;如果未超过,采用最佳适配算法确定所述目标磁盘块。
[0084]在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0085]在本申请所提供的实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。<
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1