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

文档序号:9523915阅读:来源:国知局
层的操作系统预先为待存储文件分配的一个逻辑地址。作为磁盘块的分配装置而言,接收到磁盘块分配指令之后,会响应于该磁盘块分配指令,为待存储文件分配磁盘块。
[0029]步骤102,从至少一个虚拟设备中确定目标虚拟设备。
[0030]本步骤中,磁盘块的分配装置在接收到磁盘块分配指令之后,会响应于该磁盘块分配指令,为待存储文件分配磁盘块。首先,磁盘块的分配装置需要从至少一个虚拟设备中确定目标虚拟设备。其中,在本发明实施例的文件系统架构中,至少一个磁盘块构成一个分区,至少一个分区抽象出一个虚拟设备,虚拟设备作为一个接口与应用层的操作系统进行交互,用于管理属于该虚拟设备的各个分区、各个磁盘块。
[0031]可选地,从至少一个虚拟设备中确定目标虚拟设备包括:在至少一个虚拟设备中确定元数据为空的虚拟设备,并将元数据为空的虚拟设备作为目标虚拟设备;或者,采用循环调度算法从至少一个虚拟设备中确定目标虚拟设备。
[0032]步骤103,从确定出的目标虚拟设备的至少一个分区中确定目标分区,其中,至少一个分区中的每一个分区预先设置有对应的权重,确定出的目标分区为至少一个分区中起始地址距离数据虚拟地址最近、且权重最高的分区。
[0033]本步骤中,确定出的目标分区的数量为一个。由于磁盘块的分配装置预先为每个分区设置有对应的权重(例如,外圈的分区设置较高的权重,内圈的分区的权重小于外圈的分区的权重),因此,确定出的目标分区,其起始地址不仅要距离数据虚拟地址最近,而且其权重还要最高,以保证确定出的目标分区寻道时间较短且带宽较大。在从至少一个虚拟设备中确定目标虚拟设备之后,进一步地,从确定出的目标虚拟设备的至少一个分区中确定目标分区。具体地,确定出的目标分区为至少一个分区中距离数据虚拟地址最近、且权重最高的分区,磁盘块的分配装置预先为各个分区设置对应的权重,对于本实施例而言,因为磁盘具有相同的密度和角动量,外圈区域比内圈区域拥有更大的带宽,外圈与内圈比率通常为2:1,所以外圈的分区有更高的权重,因此,本实施例的磁盘块的分配方法在挑选分区时,是挑选带宽更高的分区,而不是剩余空间最多的分区。
[0034]在确定出目标分区之后,如果该目标分区是第一次使用,需要激活该目标分区,如果激活失败,重新选择目标分区。
[0035]步骤104,在确定出的目标分区中,确定用于存储待存储文件的目标磁盘块。
[0036]本步骤中,在确定出目标分区之后,进一步地,从确定出的分区中确定用于存储待存储文件的目标磁盘块。具体包括:
[0037]在确定出的目标分区中,判断空闲的磁盘块的数量是否超过预设阈值;如果超过,采用首次适应(First Fit)算法确定目标磁盘块;如果未超过,采用最佳适配(Best Fit)算法确定目标磁盘块。
[0038]具体地,从确定出的分区中确定用于存储待存储文件的目标磁盘块可以包括:在空闲磁盘块充足的情况下使用First Fit算法确定目标磁盘块,在空闲磁盘块不足的情况下使用为Best Fit算法确定目标磁盘块。
[0039]其中,First Fit是指从空闲磁盘块表的第一个表目起查找该表,把最先能够满足要求的空闲磁盘块分配给作业,这种方法目的在于减少查找时间。为适应这种算法,空闲磁盘块表中的空闲磁盘块要按地址由低到高进行排序,该算法优先使用低址部分空闲磁盘块。
[0040]Best Fit是指从全部空闲磁盘块中找出能满足作业要求的、且大小最小的空闲磁盘块,这种方法能够使碎片尽量小。为适应此算法,空闲磁盘块表中的空闲磁盘块要按大小从小到大进行排序,自表头开始查找到第一个满足要求的自由磁盘块分配。
[0041]由上述内容可知,通过遵循分级策略,即选择虚拟设备、选择分区、选择磁盘块的顺序进行分配,在选择分区的时候选择起始地址距离数据虚拟地址最近(减少寻道时间)、且权重最高(带宽较大)的分区,为待存储文件分配带宽较大且寻道时间较短的磁盘块,进而提尚了系统性能。
[0042]作为一种可选的实施方式,从确定出的目标虚拟设备的至少一个分区中确定目标分区的方法可以包括:
[0043]首先,从至少一个分区中查找出距离数据虚拟地址最近、且权重最高的第一分区;其次,判断查找出的第一分区当前是否正在被压缩;最后,如果否,将查找出的第一分区作为目标分区。
[0044]其中,磁盘块的分配装置从确定出的目标虚拟设备的至少一个分区中确定目标分区的方法可以为,从至少一个分区中先查找出距离数据虚拟地址最近、且权重最高的第一分区,进而判断查找出的第一分区当前是否被压缩,如果第一分区当前正在被压缩,跳过该第一分区,重新选择除第一分区以外的距离数据虚拟地址最近、且权重最高的分区;如果第一分区当前未被压缩,将该第一分区作为目标分区。
[0045]作为另一种可选的实施方式,从确定出的目标虚拟设备的至少一个分区中确定目标分区的方法可以包括:
[0046]首先,从至少一个分区中查找出距离数据虚拟地址最近、且权重最高的第一分区;其次,判断查找出的第一分区的分配失败次数是否已经达到预设门限;最后,如果否,将查找出的第一分区作为目标分区。
[0047]其中,磁盘块的分配装置从确定出的目标虚拟设备的至少一个分区中确定目标分区的方法可以为,从至少一个分区中先查找出距离数据虚拟地址最近、且权重最高的第一分区,进而判断查找出的第一分区的分配失败次数是否已经达到预设门限,如果第一分区的分配失败次数已经达到预设门限,跳过该第一分区,重新选择除第一分区以外的距离数据虚拟地址最近、且权重最高的分区;如果第一分区的分配失败未达到预设门限,将该第一分区作为目标分区。其中,分配失败是指磁盘块的分配装置将该分区作为目标分区后,该分区无法用于存储待存储文件,磁盘块的分配装置会对每个分区的分配失败次数进行记录。
[0048]作为又一种可选的实施方式,从确定出的目标虚拟设备的至少一个分区中确定目标分区的方法可以包括:
[0049]首先,从至少一个分区中查找出距离数据虚拟地址最近、且权重最高的第一分区;其次,判断查找出的第一分区的权重是否被修改;最后,如果否,将查找出的第一分区作为目标分区。
[0050]其中,磁盘块的分配装置从确定出的目标虚拟设备的至少一个分区中确定目标分区的方法可以为,从至少一个分区中先查找出距离数据虚拟地址最近、且权重最高的第一分区,进而判断查找出的第一分区的权重是否被其他线程修改过,如果第一分区的权重被其他线程修改过,跳过该第一分区,重新选择除第一分区以外的距离数据虚拟地址最近、且权重最高的分区;如果第一分区的权重未被其他线程修改过,将该第一分区作为目标分区。
[0051]下面,如图2所示,对本实施例的磁盘块的分配方法进行说明:
[0052]步骤A,选择虚拟设备。
[0053]其中,本实施例选择虚拟设备的原则可以包括:
[0054]a、从负载均衡的角度考虑,优先从新添加的虚拟设备,其中,新添加的虚拟设备是指元数据为空的虚拟设备;
[0055]b、在其它条件相同的情况下,使用round-robin(循环调度法)在至少一个虚拟设备之间选择目标虚拟设备;
[0056]C、如果某个虚拟设备不适合参与磁盘块分配,直接跳过;
[0057]d、对于特定的I/O (Input/Output,读/写)模式需要选择特定的切换方法;
[0058]e、对于日志文件,每写入一个日志就
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1