用于主机辅助的后台媒体扫描(bms)的系统和方法
【专利说明】用于主机辅助的后台媒体扫描(BMS)的系统和方法
[0001]相关申请
[0002 ]本申请是2013年09月30日提交的美国申请14/042,313的连续申请。上述申请的全部教导在这里都被引入以作为参考。
【背景技术】
[0003]存储设备可以包含用于运行内部维护处理的机制。这些内部维护处理在驱动器空闲了某个时段的时候运行。这些处理可以确定驱动器的问题,如果可能的话,其可以在数据受损之前修复这些问题。
【发明内容】
[0004]在一个实施例中,一种方法包括从主机设备向存储设备发送一个命令。作为响应,该存储设备可以运行存储设备的内部维护处理。
[0005]在一个实施例中,该内部维护处理可以是一个内部维护处理。内部维护处理可以是后台媒体扫描。该内部维护处理可以是垃圾回收、磨损均衡和擦除管理中的至少一个。该内部维护处理还可以是非破坏性的内部维护处理。所述非破坏性的内部维护处理可以排除破坏性的内部维护处理,例如格式化以及擦除/删除。此外,内部维护处理还可以是长期运行的内部维护处理。该内部维护处理还有可能侵害性能。
[0006]在另一个实施例中,该方法可以包括在主机设备上调度命令。调度命令还可以包括基于主机处于空闲来确定特定时间。调度命令可以包括调度一个用于该命令的时段以及用于输入/输出命令的时段。此外,调度命令还可以包括确定内部维护处理的进度,并且以取决于该进度的频率来发送命令。调度命令还可以包括基于存储设备的先前使用情况的统计模型来调度该命令。
[0007]该命令可以是启动内部维护处理的命令,停止内部维护处理的命令,在存储设备接收到用户输入/输出之前启动内部维护处理的命令,以及启动内部维护处理并持续指定持续时间的命令中的至少。
[0008]在另一个实施例中,系统可以包括存储设备以及被配置成向存储设备发送命令的主机设备。该存储设备可以以做出响应的方式来运行存储设备的内部维护处理。
【附图说明】
[0009]从以下关于附图所示的本发明的例示实施例的更具体的描述中可以清楚了解上述内容,其中相同的参考数字在不同的图中始终指的是相同的部分。这些附图没有必要按比例绘制,取而代之的是,其重点是对本发明的实施例进行例证。
[0010]图1是示出了可操作地耦合至存储设备阵列的主机的例示实施例的框图。
[00?1 ]图2不出了存储设备的例不实施例的框图。
[0012]图3是示出了使用本发明的处理的主机设备和存储设备的例示实施例的流程图。
[0013]图4A是示出了在未使用本发明的情况下的用户输入/输出以及驱动器空闲时间的例示实施例的图示。
[0014]图4B是示出了在使用本发明的系统的情况下执行的相同用户I/O的例示实施例的图示。
[0015]图5是示出了主机调度时间片以运行内部维护处理以及停止所尝试的用户输入输出的图示。
【具体实施方式】
[0016]以下是关于本发明例示实施例的描述。
[0017]很多存储设备(或驱动器)都包括一种用于运行一个或多个用以保持数据完整性以及长期驱动器健康的内部维护处理的机制,例如处理器。关于此类内部维护处理的一个示例是后台媒体扫描(BMS或BGMS)。作为正常操作的一部分,可以存储多个太字节数据的大容量存储设备的高磁录密度需要积极维护驱动器的媒体。然而,此类积极维护可能会与诸如针对驱动器输入/输出之类的用户活动产生竞争。在一些实施方式中,BMS重复地检查存储设备的媒体以寻找问题。在驱动器空闲了某个持续时段、例如250毫秒之后,所述BMS将会开始执行,并且会在新的输入或输出请求到达存储设备的时候立即停止。然而,此类方法存在两个潜在的问题。第一,在繁忙的系统中,BMS可能永远都没有机会运行,或者其只能在短于维护存储设备健康状态所需要的时段中运行,所有这些可能会导致产生数据完整性问题。其次,在繁忙的系统中,BMS运行时间不足可能会导致存储设备在驱动器未处于空闲的时候强制运行BMS。这种强制执行的BMS会与用户的输入/输出发生竞争,并且会降低性能。随着驱动器容量的增大,以及BMS在维护驱动器健康方面的重要性的提升,这些潜在的问题有可能会更加普遍。
[0018]BMS通过确定驱动器是否存在物理问题或者保存在驱动器上的信号是否降级来维护驱动器健康。通过定期运行BMS,可以通过阻止在发现物理问题的扇区上进行的输入/输出以及将数据从该扇区上移走来避免驱动器上的物理问题。对于数字问题来说,其可以通过重新写入数字数据以便在驱动器上产生更强的信号来解决。数据可能会会因为附近数据的写入改变或降低了磁(或其他)信号的强度而具有微弱的信号。
[0019]针对这些问题的一个解决方案是使得与驱动器相连的主机(host)能够决定BMS何时应该运行。由于主机知道其何时空闲,因此,通过集成主机,驱动器不用猜测主机何时空闲。举例来说,当主机知道其处于空闲的时候,主机可以向驱动器发送一个命令,由此驱动器可以立即开始执行BMS。这样做将会防止驱动器浪费计数至任意空闲阈值的空闲时间,并且会通过更好地使用空闲时间来避免与用户因为用户的输入/输出而产生竞争。主机还可以通过其他方案来调度BMS时间,例如时间切片。由于BMS是按顺序扫描驱动器的,因此,时间切片将会提升BMS的效率。由于驱动器磁头会在BMS命令之间从一个区域跳转到另一个区域,因此,在穿插用户输入/输出的情况下运行BMS将会消除顺序扫描驱动器的优点。
[0020]为了完成这个解决方案,有必要向主机提供不同的命令,以供其发布给驱动器。首先,主机应该能够依照命令而在驱动器上启动和停止BMS。例如,驱动器应该具有可供主机用于立即启动BMS的命令,并且应该具有可供主机用于立即停止BMS的别的命令。
[0021 ]主机应该能够依照命令来立即启动BMS,以使BMS在驱动器接收到用户输入/输出的时候继续进行。一旦接收到用户输入或输出请求,则驱动器停止BMS并且执行该用户输入输出。
[0022]主机应该能在驱动器上启动BMS,以使即时执行的BMS运行指定的持续时间或者指定的容量/数据长度。
[0023]更进一步,为了实施该解决方案,BMS应该具有很短的准备时间,由此,如果主机提供了很小的时间窗口以供BMS运行,那么BMS将会使用大多数的时间来进行扫描,而不是运行开销处理(overhead processes)。此外,主机还应该告知驱动器何时运行BMS。该主机应该负责检测或预测可供BMS运行的空闲时段,并且在其检测到这些状况的时候向驱动器发送命令,以便运行BMS。主机应该调度足够的BMS运行时间来保护数据驱动器的完整性。此外,由BMS检测且能被纠正的问题可被报告给主机,或者被修复。然而,无法被BMS检测的不可纠正的问题必须被报告给主机。
[0024]主机可以通过将时间切片(time-slicing)或者将BMS与用户输入/输出交错来为其驱动器创建空闲时间。与RAID重建相类似,BMS是一个单流连续处理,因此,在执行时间切片的情况下,与BMS的单流连续工作负荷交错的沉重的用户工作负荷可以在几乎没有性能损失的情况下执行。另一方面,由于与输入/输出的竞争会导致BMS实际上是非连续的,因此,相比于对BMS和用户输入输出执行时间切片,与用户输入/输出产生竞争的BMS的效率相对较低。这种时间切片方法在用户工作负荷仅仅降级10%的情况下在单流连续工作负荷方面实现了1000%的提升。在转让给Dell Products,LP的美国专利5313626中描述了一种类似的方法,其中该专利在这里全部引入以作为参考。
[0025]时间切片的益处在于BMS只会对用户输入/输出产生很小的影响或者完全没有影响。由此,BMS将会更加快速的完成,以较低的频率运行,并且其对用户输入/输出性能的妨碍相对较低。
[0026]对于该解决方案的所有调度方法来说,BMS会在受主机控制的驱动器上同时运行和结束,而这将会导致主机性能的可预测性更强。相比之下,如果一些驱动器因为BMS干扰而以较低速度运行,而其他驱动器却并未如此,那么该阵列会作为一个整体而以速度较低的驱动器的速度运行。
[0027]由于BMS现在处于主机的监控之下,因此,BMS还会进一步替换主机可以自己执行的媒体扫描。BMS会将其发现的问题报告给主机,由此排除主机执行其自身的扫描的理由。此外,驱动器的内部BMS在检测和预测问题方面要优于任何基于主机的扫描。
[0028]此外,通过本发明,驱动器不用猜测主机何时空闲。驱动器通常无法假设主机会在一或二毫秒之后进入空闲状态,由此预先会用一个无活动阈值(例如250毫秒)来指示主机处于空闲状态。然而,等待到达该阈值所耗费的时间是可以用于扫描的。如果由主机发起BMS,那么驱动器将不需要等待达到该阈值,并且可以使用通过运行BMS来以富有成效的方式使用该时间。这样做将允许以富有成效的方式来使用短于阈值时段的空闲间隔。
[0029]—些基于主机的系统会使用试探法来估计底层媒体问题。例如,美