CN104461925B - 一种存储设备地址对齐的自动纠正方法和装置 - Google Patents
一种存储设备地址对齐的自动纠正方法和装置 Download PDFInfo
- Publication number
- CN104461925B CN104461925B CN201410648027.1A CN201410648027A CN104461925B CN 104461925 B CN104461925 B CN 104461925B CN 201410648027 A CN201410648027 A CN 201410648027A CN 104461925 B CN104461925 B CN 104461925B
- Authority
- CN
- China
- Prior art keywords
- address
- logical address
- access request
- alignment
- logical
- 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
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000013507 mapping Methods 0.000 claims abstract description 98
- 230000005012 migration Effects 0.000 claims abstract description 46
- 238000013508 migration Methods 0.000 claims abstract description 46
- 238000012937 correction Methods 0.000 claims abstract description 31
- 230000008569 process Effects 0.000 claims description 26
- 238000012545 processing Methods 0.000 claims description 18
- 238000001514 detection method Methods 0.000 claims description 14
- 230000007704 transition Effects 0.000 claims description 7
- 230000007246 mechanism Effects 0.000 claims description 6
- 238000011010 flushing procedure Methods 0.000 description 4
- 230000000149 penetrating effect Effects 0.000 description 2
- 230000032683 aging Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种存储设备地址对齐的自动纠正方法和装置,包括:通过映射表检测出访问请求的逻辑地址为非对齐访问地址,根据映射表中记录的偏移量对非对齐访问地址进行纠正对齐操作,如果未检测出其为非对齐访问地址,则保存在逻辑地址统计缓存内。当该缓存中的条目数量达到上限时,执行迁移流程;判断出通过映射表未检测出的非对齐访问地址段,建立逻辑地址与物理地址之间的映射关系,添加到映射表的条目中,并对非对齐访问地址段进行对齐操作;并读取对齐后的访问请求的逻辑地址所对应的物理地址中的数据。通过本发明的方案,能够解决现有对齐纠正方案中存在的需要对上层应用进行重新配置、手动执行、易用性差的缺点。
Description
技术领域
本发明涉及计算机数据存储领域,具体涉及一种存储设备地址对齐的自动纠正方法和装置。
背景技术
随着计算机数据存储系统容量的不断增大,底层存储设备对容量的管理方式也在不断的发生着变化。
传统机械硬盘的物理块大小为512字节,而较新型的存储设备如使用高级格式化技术的机械硬盘物理块大小为4096字节、固态硬盘的物理块则一般为4096字节—16384字节。当计算机系统是为传统机械硬盘设计时,计算机系统无法正确识别物理块大小,每次对存储设备的访问请求的地址可能无法与存储设备物理块的起始地址对齐。在发生非对齐写入时,硬盘首先需要读取出要写入的物理块上原有的数据,使用要写入的数据覆盖原有数据中对应的部分,再将修改后的数据写入到存储设备上。而在对齐写入时,存储设备只需要将要写入的数据覆盖写入到目标物理块上即可。因此,对存储设备的非对齐写入会降低硬件性能,并加速硬件设备的老化。但是在非对齐访问的情况下,存储设备的功能还是完整的,导致用户难以察觉到发生了问题。
目前的解决方案一般是使用特定的软件检查存储设备物理块对齐情况,并对上层应用(如文件系统等)进行重新配置。这个操作需要用户手动执行,并且不能在设备使用时执行,易用性较差。
发明内容
为了解决上述问题,本发明提出了一种存储设备地址对齐的自动纠正方法和装置,可以解决现有存储设备对齐纠正方案中存在的需要对上层应用进行重新配置、需要手动执行、易用性差的缺点。
为了达到上述目的,本发明提出了一种存储设备地址对齐的自动纠正方法,该方法包括:
通过映射表对存储设备收到的访问请求进行检测,如果检测出访问请求的逻辑地址为非对齐访问地址,则根据映射表中记录的偏移量对非对齐访问地址进行纠正对齐操作,如果未检测出访问请求的逻辑地址为非对齐访问地址,则将访问请求的逻辑地址保存在逻辑地址统计缓存内。
当逻辑地址统计缓存中的条目数量达到上限时,异步地执行迁移流程;判断出逻辑地址统计缓存内通过映射表未检测出的非对齐访问地址段,建立非对齐访问地址段的访问请求的逻辑地址与物理地址之间的映射关系,添加到映射表的条目中,并根据迁移过程中判断出的地址段起始逻辑地址和地址段偏移量将非对齐访问地址段以地址段偏移量统一向前移动;在通过移动完成对非对齐访问地址段的自动纠正对齐操作后,读取对齐后的访问请求的逻辑地址所对应的物理地址中的数据。
优选地,对存储设备收到的访问请求进行检测是指:在存储设备收到读取或写入请求时,根据访问请求中的逻辑地址在映射表中查找是否存在访问请求的逻辑地址的记录;如果映射表中存在该访问请求的逻辑地址的记录,则该访问请求的逻辑地址为非对齐地址;如果映射表中不存在该访问请求的逻辑地址的记录,则该访问请求的逻辑地址为对齐地址或该访问请求的逻辑地址为非对齐地址但尚未记录在映射表中。
优选地,该方法还包括:通过映射表管理访问请求的逻辑地址到实际物理地址的映射关系,存储访问请求的逻辑地址和实际物理地址之间的偏移量。
其中,在存储设备处于初始状态时,访问请求的逻辑地址和物理地址之间不存在偏移量。
优选地,迁移流程包括非对齐访问地址段的判断流程,包括以下步骤:
41、从逻辑地址统计缓存中读取存储的一个访问请求的逻辑地址。
42、判断所读取的访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量是否为0。
如果偏移量为0,则进行43;如果偏移量不为0,则进行44。
43、继续判断该逻辑地址是否为逻辑地址统计缓存中的最后一个逻辑地址,如果是最后一个逻辑地址则退出流程;如果不是最后一个逻辑地址,则继续从逻辑地址统计缓存中读取下一个访问请求的逻辑地址,返回步骤41。
44、记录当前处理的访问请求的逻辑地址为地址段起始逻辑地址,并记录当前处理的访问请求的逻辑地址与其所在的物理块的起始地址之间的偏移量为地址段偏移量。
45、继续判断当前处理的访问请求的逻辑地址是否为逻辑地址统计缓存中的最后一个逻辑地址,如果是最后一个逻辑地址,则退出迁移流程;如果不是最后一个逻辑地址,则从逻辑地址统计缓存中读取下一个访问请求的逻辑地址。
46、判断该访问请求的逻辑地址是否等同于上一个处理的访问请求的逻辑地址或上一个处理的访问请求的逻辑地址加上一个物理块的长度;如果是,则记录当前处理的所述访问请求的逻辑地址为地址段结束逻辑地址;如果否,则判断上一个处理的访问请求的逻辑地址为一个完整的非对齐访问地址段,其同时为地址段起始逻辑地址与地址段结束逻辑地址。
优选地,迁移流程还包括非对齐访问地址段判断后的数据迁移流程,包括以下步骤:
51、如果在所述非对齐访问地址段的判断流程中没有通过判断访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量不为0判断出任何访问请求的逻辑地址为非对齐访问地址段,则清空逻辑地址统计缓存,退出迁移流程。
52、如果在判断过程中判断出一组访问请求的逻辑地址为非对齐访问地址段,利用存储设备的冗余块机制,为非对齐访问地址段分配一个新物理块;将所述非对齐访问地址段的所述地址段起始逻辑地址对应的物理地址之前的物理块中的数据迁移到新物理块中,并在映射表中建立新物理块的物理地址与访问请求逻辑地址之间的映射关系,并将映射关系添加到映射表的条目中。
53、根据非对齐访问地址段的地址段起始逻辑地址、地址段偏移量和所述地址段结束逻辑地址,更新映射表,对非对齐访问地址进行纠正对齐操作,并在地址段起始逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入非对齐访问地址进行纠正对齐之后所对应的物理地址中。
或者,将地址段起始逻辑地址增加一个物理块的长度,从所得到的逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入非对齐访问地址进行纠正对齐之后所对应的物理地址中。
本发明还提出一种存储设备地址对齐的自动纠正装置,该装置包括:检测模块、迁移流程模块。
检测模块,用于通过映射表对存储设备收到的访问请求进行检测,如果检测出访问请求的逻辑地址为非对齐访问地址,则根据映射表中记录的偏移量对非对齐访问地址进行纠正对齐操作,如果未检测出访问请求的逻辑地址为非对齐访问地址,则将访问请求的逻辑地址保存在逻辑地址统计缓存内。
迁移流程模块,用于当逻辑地址统计缓存中的条目数量达到上限时,异步地执行迁移流程;判断出逻辑地址统计缓存内通过映射表未检测出的非对齐访问地址段,建立非对齐访问地址段的访问请求的逻辑地址与物理地址之间的映射关系,添加到映射表的条目中,并根据迁移过程中判断出的地址段起始逻辑地址和地址段偏移量将非对齐访问地址段以地址段偏移量统一向前移动;在通过移动完成对非对齐访问地址段的自动纠正对齐操作后,读取对齐后的访问请求的逻辑地址所对应的物理地址中的数据。
优选地,检测模块还用于:在存储设备收到读取或写入请求时,根据访问请求中的逻辑地址在映射表中查找是否存在访问请求的逻辑地址的记录;如果映射表中存在访问请求的逻辑地址的记录,则访问请求的逻辑地址为非对齐地址;如果映射表中不存在访问请求的逻辑地址的记录,则访问请求的逻辑地址为对齐地址或访问请求的逻辑地址为非对齐地址但尚未记录在映射表中。
优选地,迁移流程模块还用于对非对齐访问地址段的判断,包括:
41、从逻辑地址统计缓存中读取存储的一个访问请求的逻辑地址段。
42、判断所读取的访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量是否为0。
如果偏移量为0,则进行43;如果偏移量不为0,则进行44。
43、继续判断该逻辑地址是否为逻辑地址统计缓存中的最后一个逻辑地址,如果是最后一个逻辑地址则退出流程;如果不是所最后一个逻辑地址,则继续从逻辑地址统计缓存中读取下一个访问请求的逻辑地址,返回步骤41。
44、记录当前处理的访问请求的逻辑地址为地址段起始逻辑地址,并记录当前处理的访问请求的逻辑地址与其所在的物理块的起始地址之间的偏移量为地址段偏移量。
45、继续判断当前处理的访问请求的逻辑地址是否为逻辑地址统计缓存中的最后一个逻辑地址,如果是最后一个逻辑地址,则退出迁移流程;如果不是最后一个逻辑地址,则从逻辑地址统计缓存中读取下一个访问请求的逻辑地址。
46、判断该访问请求的逻辑地址是否等同于上一个处理的访问请求的逻辑地址或上一个处理的访问请求的逻辑地址加上一个物理块的长度;如果是,则记录当前处理的访问请求的逻辑地址为地址段结束逻辑地址;如果否,则判断上一个处理的访问请求的逻辑地址为一个完整的非对齐访问地址段,其同时为地址段起始逻辑地址与地址段结束逻辑地址。
优选地,所述迁移流程模块还用于对非对齐访问地址段判断后的数据迁移,包括:
51、如果在非对齐访问地址段的判断流程中没有通过判断访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量不为0判断出任何访问请求的逻辑地址为非对齐访问地址段,则清空逻辑地址统计缓存,退出迁移流程。
52、如果在判断过程中判断出一组访问请求的逻辑地址为非对齐访问地址段,利用存储设备的冗余块机制,为该非对齐访问地址段分配一个新物理块;将非对齐访问地址段的地址段起始逻辑地址对应的物理地址之前的物理块中的数据迁移到新物理块中,并在映射表中建立新物理块的物理地址与访问请求逻辑地址之间的映射关系,并将该映射关系添加到映射表的条目中。
53、根据非对齐访问地址段的地址段起始逻辑地址、地址段偏移量和所述地址段结束逻辑地址,更新映射表,对非对齐访问地址进行纠正对齐操作,并在地址段起始逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入非对齐访问地址进行纠正对齐之后所对应的物理地址中。
或者,将地址段起始逻辑地址增加一个物理块的长度,从所得到的逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入非对齐访问地址进行纠正对齐之后所对应的物理地址中。
与现有技术相比,本发明包括:通过映射表对存储设备收到的访问请求进行检测,如果检测出访问请求的逻辑地址为非对齐访问地址,则根据映射表中记录的偏移量对非对齐访问地址进行纠正对齐操作,如果未检测出访问请求的逻辑地址为非对齐访问地址,则将访问请求的逻辑地址保存在逻辑地址统计缓存内;当逻辑地址统计缓存中的条目数量达到上限时,异步地执行迁移流程;判断出逻辑地址统计缓存内通过所述映射表未检测出的非对齐访问地址段,建立非对齐访问地址段的访问请求的逻辑地址与物理地址之间的映射关系,添加到映射表的条目中,并根据迁移过程中判断出的地址段起始逻辑地址和地址段偏移量将非对齐访问地址段以地址段偏移量统一向前移动;在通过移动完成对非对齐访问地址段的自动纠正对齐操作后,读取对齐后的访问请求的逻辑地址所对应的物理地址中的数据。通过本发明的方案,能够解决现有存储设备对齐纠正方案中存在的需要对上层应用进行重新配置、需要手动执行、易用性差的缺点。
附图说明
下面对本发明实施例中的附图进行说明,实施例中的附图是用于对本发明的进一步理解,与说明书一起用于解释本发明,并不构成对本发明保护范围的限制。
附图1为本发明中存储设备地址对齐的自动纠正方法简易流程图;
附图2为本发明中非对齐访问地址段的判断流程图;
附图3为本发明中对非对齐访问地址段判断后的数据迁移流程图;
附图4为本发明中对非对齐访问地址段判断后的数据迁移示意图。
具体实施方式
为了便于本领域技术人员的理解,下面结合附图对本发明作进一步的描述,并不能用来限制本发明的保护范围。
本发明提出了一种存储设备地址对齐的自动纠正方法,如图1所示,该方法包括:
通过映射表对存储设备收到的访问请求进行检测,如果检测出访问请求的逻辑地址为非对齐访问地址,则根据映射表中记录的偏移量对非对齐访问地址进行纠正对齐操作,如果未检测出访问请求的逻辑地址为非对齐访问地址,则将访问请求的逻辑地址保存在逻辑地址统计缓存内。
当逻辑地址统计缓存中的条目数量达到上限时,异步地执行迁移流程;判断出逻辑地址统计缓存内通过映射表未检测出的非对齐访问地址段,建立非对齐访问地址段的访问请求的逻辑地址与物理地址之间的映射关系,添加到映射表的条目中,并根据迁移过程中判断出的地址段起始逻辑地址和地址段偏移量将非对齐访问地址段以地址段偏移量统一向前移动;在通过移动完成对非对齐访问地址段的自动纠正对齐操作后,读取对齐后的访问请求的逻辑地址所对应的物理地址中的数据。
优选地,对存储设备收到的访问请求进行检测是指:在存储设备收到读取或写入请求时,根据访问请求中的逻辑地址在映射表中查找是否存在访问请求的逻辑地址的记录;如果映射表中存在该访问请求的逻辑地址的记录,则该访问请求的逻辑地址为非对齐地址;如果映射表中不存在该访问请求的逻辑地址的记录,则该访问请求的逻辑地址为对齐地址或该访问请求的逻辑地址为非对齐地址但尚未记录在映射表中。
优选地,该方法还包括:通过映射表管理访问请求的逻辑地址到实际物理地址的映射关系,存储访问请求的逻辑地址和实际物理地址之间的偏移量。
其中,在存储设备处于初始状态时,访问请求的逻辑地址和物理地址之间不存在偏移量。
优选地,迁移流程包括非对齐访问地址段的判断流程,如图2所示,包括以下步骤:
41、从逻辑地址统计缓存中读取存储的一个访问请求的逻辑地址。
42、判断所读取的访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量是否为0。
如果偏移量为0,则进行43;如果偏移量不为0,则进行44。
43、继续判断该逻辑地址是否为逻辑地址统计缓存中的最后一个逻辑地址,如果是最后一个逻辑地址则退出流程;如果不是最后一个逻辑地址,则继续从逻辑地址统计缓存中读取下一个访问请求的逻辑地址,返回步骤41。
44、记录当前处理的访问请求的逻辑地址为地址段起始逻辑地址,并记录当前处理的访问请求的逻辑地址与其所在的物理块的起始地址之间的偏移量为地址段偏移量。
45、继续判断当前处理的访问请求的逻辑地址是否为逻辑地址统计缓存中的最后一个逻辑地址,如果是最后一个逻辑地址,则退出迁移流程;如果不是最后一个逻辑地址,则从逻辑地址统计缓存中读取下一个访问请求的逻辑地址。
46、判断该访问请求的逻辑地址是否等同于上一个处理的访问请求的逻辑地址或上一个处理的访问请求的逻辑地址加上一个物理块的长度;如果是,则记录当前处理的所述访问请求的逻辑地址为地址段结束逻辑地址;如果否,则判断上一个处理的访问请求的逻辑地址为一个完整的非对齐访问地址段,其同时为地址段起始逻辑地址与地址段结束逻辑地址。
优选地,迁移流程还包括非对齐访问地址段判断后的数据迁移流程,如图3、图4所示,包括以下步骤:
51、如果在所述非对齐访问地址段的判断流程中没有通过判断访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量不为0判断出任何访问请求的逻辑地址为非对齐访问地址段,则清空逻辑地址统计缓存,退出迁移流程。
52、如果在判断过程中判断出一组访问请求的逻辑地址为非对齐访问地址段,利用存储设备的冗余块机制,为非对齐访问地址段分配一个新物理块;将所述非对齐访问地址段的所述地址段起始逻辑地址对应的物理地址之前的物理块中的数据迁移到新物理块中,并在映射表中建立新物理块的物理地址与访问请求逻辑地址之间的映射关系,并将映射关系添加到映射表的条目中。
53、根据非对齐访问地址段的地址段起始逻辑地址、地址段偏移量和所述地址段结束逻辑地址,更新映射表,对非对齐访问地址进行纠正对齐操作,并在地址段起始逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入非对齐访问地址进行纠正对齐之后所对应的物理地址中。
或者,将地址段起始逻辑地址增加一个物理块的长度,从所得到的逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入非对齐访问地址进行纠正对齐之后所对应的物理地址中。
本发明还提出一种存储设备地址对齐的自动纠正装置01,该装置包括:检测模块02、迁移流程模块03。
检测模块02,用于通过映射表对存储设备收到的访问请求进行检测,如果检测出访问请求的逻辑地址为非对齐访问地址,则根据映射表中记录的偏移量对非对齐访问地址进行纠正对齐操作,如果未检测出访问请求的逻辑地址为非对齐访问地址,则将访问请求的逻辑地址保存在逻辑地址统计缓存内。
迁移流程模块03,用于当逻辑地址统计缓存中的条目数量达到上限时,异步地执行迁移流程;判断出逻辑地址统计缓存内通过映射表未检测出的非对齐访问地址段,建立非对齐访问地址段的访问请求的逻辑地址与物理地址之间的映射关系,添加到映射表的条目中,并根据迁移过程中判断出的地址段起始逻辑地址和地址段偏移量将非对齐访问地址段以地址段偏移量统一向前移动;在通过移动完成对非对齐访问地址段的自动纠正对齐操作后,读取对齐后的访问请求的逻辑地址所对应的物理地址中的数据。
优选地,检测模块02还用于:在存储设备收到读取或写入请求时,根据访问请求中的逻辑地址在映射表中查找是否存在访问请求的逻辑地址的记录;如果映射表中存在访问请求的逻辑地址的记录,则访问请求的逻辑地址为非对齐地址;如果映射表中不存在访问请求的逻辑地址的记录,则访问请求的逻辑地址为对齐地址或访问请求的逻辑地址为非对齐地址但尚未记录在映射表中。
优选地,迁移流程模块03还用于对非对齐访问地址段的判断,包括:
41、从逻辑地址统计缓存中读取存储的一个访问请求的逻辑地址段。
42、判断所读取的访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量是否为0。
如果偏移量为0,则进行43;如果偏移量不为0,则进行44。
43、继续判断该逻辑地址是否为逻辑地址统计缓存中的最后一个逻辑地址,如果是最后一个逻辑地址则退出流程;如果不是所最后一个逻辑地址,则继续从逻辑地址统计缓存中读取下一个访问请求的逻辑地址,返回步骤41。
44、记录当前处理的访问请求的逻辑地址为地址段起始逻辑地址,并记录当前处理的访问请求的逻辑地址与其所在的物理块的起始地址之间的偏移量为地址段偏移量。
45、继续判断当前处理的访问请求的逻辑地址是否为逻辑地址统计缓存中的最后一个逻辑地址,如果是最后一个逻辑地址,则退出迁移流程;如果不是最后一个逻辑地址,则从逻辑地址统计缓存中读取下一个访问请求的逻辑地址。
46、判断该访问请求的逻辑地址是否等同于上一个处理的访问请求的逻辑地址或上一个处理的访问请求的逻辑地址加上一个物理块的长度;如果是,则记录当前处理的访问请求的逻辑地址为地址段结束逻辑地址;如果否,则判断上一个处理的访问请求的逻辑地址为一个完整的非对齐访问地址段,其同时为地址段起始逻辑地址与地址段结束逻辑地址。
优选地,所述迁移流程模块03还用于对非对齐访问地址段判断后的数据迁移,包括:
51、如果在非对齐访问地址段的判断流程中没有通过判断访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量不为0判断出任何访问请求的逻辑地址为非对齐访问地址段,则清空逻辑地址统计缓存,退出迁移流程。
52、如果在判断过程中判断出一组访问请求的逻辑地址为非对齐访问地址段,利用存储设备的冗余块机制,为该非对齐访问地址段分配一个新物理块;将非对齐访问地址段的地址段起始逻辑地址对应的物理地址之前的物理块中的数据迁移到新物理块中,并在映射表中建立新物理块的物理地址与访问请求逻辑地址之间的映射关系,并将该映射关系添加到映射表的条目中。
53、根据非对齐访问地址段的地址段起始逻辑地址、地址段偏移量和所述地址段结束逻辑地址,更新映射表,对非对齐访问地址进行纠正对齐操作,并在地址段起始逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入非对齐访问地址进行纠正对齐之后所对应的物理地址中。
或者,将地址段起始逻辑地址增加一个物理块的长度,从所得到的逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入非对齐访问地址进行纠正对齐之后所对应的物理地址中。
需要说明的是,以上所述的实施例仅是为了便于本领域的技术人员理解而已,并不用于限制本发明的保护范围,在不脱离本发明的发明构思的前提下,本领域技术人员对本发明所做出的任何显而易见的替换和改进等均在本发明的保护范围之内。
Claims (5)
1.一种存储设备地址对齐的自动纠正方法,其特征在于,所述方法包括:
通过映射表对所述存储设备收到的访问请求进行检测,如果检测出所述访问请求的逻辑地址为非对齐访问地址,则根据所述映射表中记录的偏移量对所述非对齐访问地址进行纠正对齐操作,如果未检测出所述访问请求的逻辑地址为非对齐访问地址,则将所述访问请求的逻辑地址保存在逻辑地址统计缓存内;
当所述逻辑地址统计缓存中的条目数量达到上限时,异步地执行迁移流程;判断出所述逻辑地址统计缓存内通过所述映射表未检测出的非对齐访问地址段,建立所述非对齐访问地址段的访问请求的逻辑地址与物理地址之间的映射关系,添加到所述映射表的条目中,并根据迁移过程中判断出的地址段起始逻辑地址和地址段偏移量将所述非对齐访问地址段以所述地址段偏移量统一向前移动;在通过所述移动完成对所述非对齐访问地址段的自动纠正对齐操作后,读取对齐后的所述访问请求的逻辑地址所对应的物理地址中的数据;
所述迁移流程包括所述非对齐访问地址段的判断流程,包括以下步骤:
41、从所述逻辑地址统计缓存中读取存储的一个所述访问请求的逻辑地址;
42、判断所读取的所述访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量是否为0;
如果所述偏移量为0,则进行43;如果所述偏移量不为0,则进行44;
43、继续判断该逻辑地址是否为所述逻辑地址统计缓存中的最后一个逻辑地址,如果是所述最后一个逻辑地址则退出流程;如果不是所述最后一个逻辑地址,则继续从所述逻辑地址统计缓存中读取下一个所述访问请求的逻辑地址,返回步骤41;
44、记录当前处理的所述访问请求的逻辑地址为地址段起始逻辑地址,并记录当前处理的所述访问请求的逻辑地址与其所在的物理块的起始地址之间的偏移量为地址段偏移量;
45、继续判断当前处理的所述访问请求的逻辑地址是否为所述逻辑地址统计缓存中的最后一个逻辑地址,如果是所述最后一个逻辑地址,则退出所述迁移流程;如果不是所述最后一个逻辑地址,则从所述逻辑地址统计缓存中读取下一个所述访问请求的逻辑地址;
46、判断该访问请求的逻辑地址是否等同于上一个处理的所述访问请求的逻辑地址或上一个处理的所述访问请求的逻辑地址加上一个物理块的长度;如果是,则记录当前处理的所述访问请求的逻辑地址为地址段结束逻辑地址;如果否,则判断上一个处理的所述访问请求的逻辑地址为一个完整的非对齐访问地址段,其同时为地址段起始逻辑地址与地址段结束逻辑地址;
所述迁移流程还包括所述非对齐访问地址段判断后的数据迁移流程,包括以下步骤:
51、如果在所述非对齐访问地址段的判断流程中没有通过判断所述访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量不为0判断出任何所述访问请求的逻辑地址为非对齐访问地址段,则清空所述逻辑地址统计缓存,退出所述迁移流程;
52、如果在判断过程中判断出一组所述访问请求的逻辑地址为非对齐访问地址段,利用所述存储设备的冗余块机制,为所述非对齐访问地址段分配一个新物理块;将所述非对齐访问地址段的所述地址段起始逻辑地址对应的物理地址之前的物理块中的数据迁移到所述新物理块中,并在所述映射表中建立所述新物理块的物理地址与访问请求逻辑地址之间的映射关系,并将所述映射关系添加到所述映射表的条目中;
53、根据所述非对齐访问地址段的所述地址段起始逻辑地址、所述地址段偏移量和所述地址段结束逻辑地址,更新所述映射表,对所述非对齐访问地址进行纠正对齐操作,并在所述地址段起始逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入所述非对齐访问地址进行纠正对齐之后所对应的物理地址中;
或者,将所述地址段起始逻辑地址增加一个物理块的长度,从所得到的逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入所述非对齐访问地址进行纠正对齐之后所对应的物理地址中。
2.如权利要求1所述的方法,其特征在于,所述对存储设备收到的访问请求进行检测是指:在所述存储设备收到读取或写入请求时,根据所述访问请求中的逻辑地址在映射表中查找是否存在所述访问请求的逻辑地址的记录;如果所述映射表中存在所述访问请求的逻辑地址的记录,则所述访问请求的逻辑地址为非对齐地址;如果所述映射表中不存在所述访问请求的逻辑地址的记录,则所述访问请求的逻辑地址为对齐地址或所述访问请求的逻辑地址为非对齐地址但尚未记录在所述映射表中。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:通过所述映射表管理所述访问请求的逻辑地址到实际物理地址的映射关系,存储所述访问请求的逻辑地址和所述实际物理地址之间的偏移量;
其中,在所述存储设备处于初始状态时,所述访问请求的逻辑地址和物理地址之间不存在偏移量。
4.一种存储设备地址对齐的自动纠正装置,其特征在于,所述装置包括:检测模块、迁移流程模块;
所述检测模块,用于通过映射表对所述存储设备收到的访问请求进行检测,如果检测出所述访问请求的逻辑地址为非对齐访问地址,则根据所述映射表中记录的偏移量对所述非对齐访问地址进行纠正对齐操作,如果未检测出所述访问请求的逻辑地址为非对齐访问地址,则将所述访问请求的逻辑地址保存在逻辑地址统计缓存内;
所述迁移流程模块,用于当所述逻辑地址统计缓存中的条目数量达到上限时,异步地执行迁移流程;判断出所述逻辑地址统计缓存内通过所述映射表未检测出的非对齐访问地址段,建立所述非对齐访问地址段的访问请求的逻辑地址与物理地址之间的映射关系,添加到所述映射表的条目中,并根据迁移过程中判断出的地址段起始逻辑地址和地址段偏移量将所述非对齐访问地址段以所述地址段偏移量统一向前移动;在通过所述移动完成对所述非对齐访问地址段的自动纠正对齐操作后,读取对齐后的所述访问请求的逻辑地址所对应的物理地址中的数据;
所述迁移流程模块还用于对非对齐访问地址段的判断,包括:
41、从所述逻辑地址统计缓存中读取存储的一个所述访问请求的逻辑地址段;
42、判断所读取的所述访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量是否为0;
如果所述偏移量为0,则进行43;如果所述偏移量不为0,则进行44;
43、继续判断该逻辑地址是否为所述逻辑地址统计缓存中的最后一个逻辑地址,如果是所述最后一个逻辑地址则退出流程;如果不是所述最后一个逻辑地址,则继续从所述逻辑地址统计缓存中读取下一个所述访问请求的逻辑地址,返回步骤41;
44、记录当前处理的所述访问请求的逻辑地址为地址段起始逻辑地址,并记录当前处理的所述访问请求的逻辑地址与其所在的物理块的起始地址之间的偏移量为地址段偏移量;
45、继续判断当前处理的所述访问请求的逻辑地址是否为所述逻辑地址统计缓存中的最后一个逻辑地址,如果是所述最后一个逻辑地址,则退出所述迁移流程;如果不是所述最后一个逻辑地址,则从所述逻辑地址统计缓存中读取下一个所述访问请求的逻辑地址;
46、判断所述访问请求的逻辑地址是否等同于上一个处理的所述访问请求的逻辑地址或上一个处理的所述访问请求的逻辑地址加上一个物理块的长度;如果是,则记录当前处理的所述访问请求的逻辑地址为地址段结束逻辑地址;如果否,则判断上一个处理的所述访问请求的逻辑地址为一个完整的非对齐访问地址段,其同时为地址段起始逻辑地址与地址段结束逻辑地址;
所述迁移流程模块还用于对所述非对齐访问地址段判断后的数据迁移,包括:
51、如果在所述非对齐访问地址段的判断流程中没有通过判断所述访问请求的逻辑地址和其所在的物理块的起始地址之间的偏移量不为0判断出任何所述访问请求的逻辑地址为非对齐访问地址段,则清空所述逻辑地址统计缓存,退出所述迁移流程;
52、如果在判断过程中判断出一组所述访问请求的逻辑地址为非对齐访问地址段,利用所述存储设备的冗余块机制,为所述非对齐访问地址段分配一个新物理块;将所述非对齐访问地址段的所述地址段起始逻辑地址对应的物理地址之前的物理块中的数据迁移到所述新物理块中,并在所述映射表中建立所述新物理块的物理地址与访问请求逻辑地址之间的映射关系,并将所述映射关系添加到所述映射表的条目中;
53、根据所述非对齐访问地址段的所述地址段起始逻辑地址、所述地址段偏移量和所述地址段结束逻辑地址,更新所述映射表,对所述非对齐访问地址进行纠正对齐操作,并在所述地址段起始逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入所述非对齐访问地址进行纠正对齐之后所对应的物理地址中;
或者,将所述地址段起始逻辑地址增加一个物理块的长度,从所得到的逻辑地址所对应的物理地址中读取一个物理块长度的数据,写入所述非对齐访问地址进行纠正对齐之后所对应的物理地址中。
5.如权利要求4所述的装置,其特征在于,所述检测模块还用于:在所述存储设备收到读取或写入请求时,根据所述访问请求中的逻辑地址在映射表中查找是否存在所述访问请求的逻辑地址的记录;如果所述映射表中存在所述访问请求的逻辑地址的记录,则所述访问请求的逻辑地址为非对齐地址;如果所述映射表中不存在所述访问请求的逻辑地址的记录,则所述访问请求的逻辑地址为对齐地址或所述访问请求的逻辑地址为非对齐地址但尚未记录在所述映射表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410648027.1A CN104461925B (zh) | 2014-11-14 | 2014-11-14 | 一种存储设备地址对齐的自动纠正方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410648027.1A CN104461925B (zh) | 2014-11-14 | 2014-11-14 | 一种存储设备地址对齐的自动纠正方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104461925A CN104461925A (zh) | 2015-03-25 |
CN104461925B true CN104461925B (zh) | 2017-10-13 |
Family
ID=52908012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410648027.1A Active CN104461925B (zh) | 2014-11-14 | 2014-11-14 | 一种存储设备地址对齐的自动纠正方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104461925B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10565101B2 (en) * | 2016-01-29 | 2020-02-18 | Hewlett Packard Enterprise Development Lp | Storing data in a storage device |
CN106649133B (zh) * | 2016-12-29 | 2019-12-06 | 杭州迪普科技股份有限公司 | Pci内存空间的优化方法和设备 |
CN108509289B (zh) * | 2017-02-28 | 2021-06-29 | 龙芯中科技术股份有限公司 | 一种基于MIPS处理器vxWorks系统的验证方法和装置 |
US10732903B2 (en) * | 2018-04-27 | 2020-08-04 | Hewlett Packard Enterprise Development Lp | Storage controller sub-LUN ownership mapping and alignment |
CN109271174A (zh) * | 2018-08-01 | 2019-01-25 | 广州市星翼电子科技有限公司 | 一种单片机多个固件分散烧录方法 |
CN111209220B (zh) * | 2018-11-21 | 2023-06-09 | 华夏芯(北京)通用处理器技术有限公司 | 一种非对齐地址访存的融合编码状态机实现方法 |
CN110308933B (zh) * | 2019-04-25 | 2021-06-01 | 龙芯中科(合肥)技术有限公司 | 访问指令确定方法、装置及存储介质 |
CN113835639B (zh) * | 2021-09-26 | 2024-03-19 | 深圳大普微电子科技有限公司 | 一种i/o请求处理方法、装置、设备及可读存储介质 |
CN117472797A (zh) * | 2023-12-28 | 2024-01-30 | 北京微核芯科技有限公司 | 非对齐地址访存指令的处理方法、装置及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101299192A (zh) * | 2008-06-18 | 2008-11-05 | 中国科学院计算技术研究所 | 一种非对齐访存的处理方法 |
CN103425602A (zh) * | 2013-08-15 | 2013-12-04 | 深圳市江波龙电子有限公司 | 一种闪存存储设备数据读写的方法、装置及主机系统 |
CN104035729A (zh) * | 2014-05-22 | 2014-09-10 | 中国科学院计算技术研究所 | 一种日志映射的块设备精简配置方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130185491A1 (en) * | 2012-01-17 | 2013-07-18 | Skymedi Corporation | Memory controller and a method thereof |
-
2014
- 2014-11-14 CN CN201410648027.1A patent/CN104461925B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101299192A (zh) * | 2008-06-18 | 2008-11-05 | 中国科学院计算技术研究所 | 一种非对齐访存的处理方法 |
CN103425602A (zh) * | 2013-08-15 | 2013-12-04 | 深圳市江波龙电子有限公司 | 一种闪存存储设备数据读写的方法、装置及主机系统 |
CN104035729A (zh) * | 2014-05-22 | 2014-09-10 | 中国科学院计算技术研究所 | 一种日志映射的块设备精简配置方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104461925A (zh) | 2015-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104461925B (zh) | 一种存储设备地址对齐的自动纠正方法和装置 | |
US20200249849A1 (en) | Method and apparatus for managing storage system | |
CN102156738B (zh) | 数据块处理方法、数据块存储设备及系统 | |
US9477428B2 (en) | Using access information to determine a storage tier for storing data | |
US10564880B2 (en) | Data deduplication method and apparatus | |
CN104583930B (zh) | 数据迁移的方法、控制器和数据迁移装置 | |
US20160188227A1 (en) | Method and apparatus for writing data into solid state disk | |
EP3223132A1 (en) | Method and apparatus for tiered storage processing of data, and storage device | |
US9727244B2 (en) | Expanding effective storage capacity of a data storage system while providing support for address mapping recovery | |
CN102981944B (zh) | 一种基于文件系统的日志存储方法 | |
AU2012204481A1 (en) | Selecting storage locations for storing data based on storage location attributes and data usage statistics | |
CN105677511B (zh) | 一种降低同步开销的数据写入方法和装置 | |
US8527470B2 (en) | Recovery point data view formation with generation of a recovery view and a coalesce policy | |
CN106682193A (zh) | 基于缓存的数据持久化存储方法及装置 | |
KR20180086120A (ko) | 테일 레이턴시를 인식하는 포어그라운드 가비지 컬렉션 알고리즘 | |
US20200159458A1 (en) | Accessing solid state disk | |
CN107665219A (zh) | 一种日志管理方法及装置 | |
CN107273046A (zh) | 一种基于固态盘阵列的数据处理方法及系统 | |
CN103986779A (zh) | 一种应用数据传输方法、装置及终端设备 | |
US20170277451A1 (en) | Method to limit impact of partial media failure of disk drive and detect/report the loss of data for objects due to partial failure of media | |
CN105915595B (zh) | 一种集群存储系统存取数据的方法以及集群存储系统 | |
CN107274923A (zh) | 一种提高固态硬盘中顺序读取流性能的方法及固态硬盘 | |
US20170269868A1 (en) | Information processing apparatus, storage system, computer-readable recording medium, and information processing method | |
US20210103520A1 (en) | System and method for inline tiering of write data | |
CN111880735B (zh) | 一种存储系统中数据迁移方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |