适应性的块转换表(BTT)制造技术

技术编号:19878264 阅读:28 留言:0更新日期:2018-12-22 17:56
描述了用于执行存储器操作的技术,其中实现了直接存储器访问和逻辑地址转换。接收针对I/O操作的请求,该请求包括指示物理存储器地址是否可以被改变以及是否需要扇区原子性的信息。基于该信息,使用未修改的块转换表(BTT)来执行所请求的I/O操作,其中与所请求的I/O操作相关联的物理位置被改变并且扇区原子性被提供,或者使用经修改的BTT来执行所请求的I/O操作,其中与所请求的I/O操作相关联的物理位置未被改变,或者使用经修改的BTT来执行所请求的I/O操作,其中与所请求的I/O操作相关联的物理位置未被改变并且扇区原子性被提供。

【技术实现步骤摘要】
【国外来华专利技术】适应性的块转换表(BTT)
技术介绍
存储级存储器(SCM)是一种持久性存储器,其结合了固态存储器的特性和传统硬盘磁存储器的特性。SCM可以以字节粒度执行输入/输出(I/O)。块设备驱动器可以用于将这样的存储公开为传统块设备。然而,也可能需要扇区原子性保证来提供针对撕裂扇区的保护以及当写入操作正在进行时可能由电源故障导致的其他问题。块转换表(BTT)为SCM提供原子扇区更新语义。BTT是用于重新映射给定存储设备上的块的间接表。
技术实现思路
本文公开了用于促进多个计算设备的操作的方法和系统。实施例可以包括接收针对I/O操作的请求。该请求可以包括指示物理块地址是否可以被改变以及扇区原子性是否被需要的信息。基于该信息,可以使用以下各项来执行所请求的I/O操作:(1)未修改的块转换表(BTT),其中与所请求的I/O操作相关联的物理位置被改变并且扇区原子性被提供;(2)经修改的BTT,其中与所请求的I/O操作相关联的物理位置未被改变;或者(3)经修改的BTT,其中与所请求的I/O操作相关联的物理位置未被改变并且原子性被提供。应当理解,上述主题可以实现为计算机控制的装置、计算机进程、计算系统、或者诸如一个或多个计算机可读存储介质之类的制品。通过阅读以下“具体实施方式”和对相关附图的评论,这些和各种其他特征将是显而易见的。提供本“
技术实现思路
”是为了以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中进一步描述。本“
技术实现思路
”不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任何部分中提到的任何或所有缺点的实现。附图说明以下将参考附图更全面地描述本公开的实施例,在附图中:图1描绘了BTT方案的示例。图2描绘了对持久性存储器的块访问的示例,以及对持久性存储器的示例直接访问。图3描绘了用于选择BTT操作的示例操作过程。图4描绘了用于执行存储器操作的示例操作过程。图5描绘了其中可以实施本文所描述的技术的示例通用计算环境。具体实施方式当在系统中实现诸如SCM之类的持久性存储器存储时,期望在提供原子性保证的同时提供块级I/O。BTT(块转换表)是一种这样的方法。BTT建立系统的其余部分看到的逻辑块地址(LBA)与指定块实际上存储在物理介质上的位置的物理块地址(PBA)之间的映射。在持久性存储器存储的情况下,PBA被用于指示块的内容的物理存储器地址。当未修改的BTT被启用时,首先对未使用的空闲块执行对给定LBA的写入操作。然后在BTT映射中原子交换与LBA相对应的PBA。也就是说,与LBA相关联的映射条目被原子地改变为指向被写入的空闲块的PBA。因为映射更新是原子的,所以系统要么看到块的旧内容(即,旧的PBA),要么看到块的新内容(即,新的PBA),并且永远不会看到部分写入的块。当在给定环境中实现诸如BTT之类的方法时,为了提供更安全和更有效的操作,可以考虑以下内容:(1)支持对持久性存储器的直接访问(DAX)(也称为零复制访问);(2)允许现有的用户模式应用无需修改即可运行;以及(3)允许扇区粒度故障模式以实现应用兼容性。本公开描述了用于修改或扩充诸如BTT之类的方法以提供与各种操作环境的更大兼容性和功能的技术。在一个实施例中,可以实现“每次写入BTT”方案。在一些环境中,期望在每次写入操作上标识关于是否允许正在写入的LBA的PBA被改变。例如,在直接访问环境中,可能不期望始终执行PBA更新,因为物理存储器地址正在由系统的其他组件使用,而对于某些文件系统元数据,可能期望执行PBA更新以保证扇区原子性。因此,在每次写入的基础上控制BTT的实现的能力可以提供这种灵活性。在一些实施例中,可以提供“就地BTT”能力。在写入操作期间,可以遍历BTT转换表以便找到PBA但是不执行原子写入。相反,数据被直接复制到与现有PBA相对应的物理存储器地址。例如,当不需要BTTPBA更新时,系统可以在给定的写入操作上提供就地BTT支持,因为与正在写入的LBA相对应的物理地址正在由不同的组件使用。在一些实施例中,可以提供“复制BTT支持”能力,其中实现现有BTT结构和过程并且提供原子性保证但是不改变块的PBA。当提供复制BTT支持时,在写入操作期间标识空闲块并且将数据复制到其中如对未修改的BTT所做的那样。不是将空闲块作为新PBA,而是将数据再次写入与当前PBA相关联的物理存储器地址。因此,数据被写入两次,一次写入空闲页面,并且然后写入当前PBA。如果在现有PBA复制期间断电,则可以重新尝试将数据复制到现有PBA以提供原子性保证。这是可能的,因为创建指示到现有PBA的复制被中断并且写入新PBA的数据被保留的日志。在一些实施例中,可以实现每文件BTT方案,其中可以在打开时间或稍后时间标记文件,指示I/O操作应当使用上面讨论的BTT模式之一。尽管在SCM和BTT实现的修改的上下文中提供以下示例,但是所描述的技术可以被应用于涉及在I/O操作期间重新映射逻辑和物理地址的任何技术。如本文中使用的,“未修改的BTT”被用于指代未经如本文所述进行调节或修改的BTT技术。此外,本文中描述的技术可以在OS在虚拟化硬件上运行的场景中实现。例如,虚拟化技术可以通过向每个用户提供由物理计算设备托管的一个或多个虚拟机实例来允许物理计算设备在多个用户之间被共享。虚拟机实例可以是用作不同逻辑计算系统的特定物理计算系统的软件仿真。如本文中使用的,“存储堆栈”是指可以包括可以用于处理数据/信息从主存储器到其他存储的传输/转换的各种驱动器、过滤器、加密逻辑、反病毒逻辑等的分层的实体。例如,对于I/O请求(例如,“读/写”请求),可以“封装”数据块(例如,使用诸如IRP(I/O请求分组)之类的构造)并且将其沿着堆栈向下传递;因此,堆栈中的实体处理这些数据从主存储器到存储的传输。通常,这样的“I/O”操作(例如,“读/写”操作)涉及比可能在CPU与主存储器之间直接发生的传统“加载/存储”操作(例如,没有“存储堆栈”参与这样的操作)更多的处理时间(以及因此更多的延迟时间)。术语“文件系统”通过示例的方式被使用,并且本文中示例技术的讨论也可以应用于其他类型的文件系统。在此上下文中,“文件系统”可以包括组织持久化数据的一个或多个硬件和/或软件组件。例如,持久化数据可以被组织在可以被称为“文件”的单元,并且因此,“文件系统”可以被用于组织和以其他方式管理和/或控制这样的持久化数据。例如,“文件”可以与相应的文件名、文件长度和文件属性相关联。文件句柄可以包括由文件系统用来唯一地引用特定活动文件的指示符(例如,数字)。“高速缓存”可以是指被用于存储用于有效获取的项目的实体。更一般地,在计算中,高速缓存是透明地存储数据以便可以更快地服务针对该数据的未来请求的组件。例如,存储在高速缓存中的数据可以是先前已经被计算的值或者存储在别处的原始值的副本。如果请求的数据存储在高速缓存中,则可以通过简单地访问(例如,读取)高速缓存来服务请求,这可以相对更快。否则,可能需要从其原始存储位置重新计算或提取数据,这可能相对较慢。因此,可以从高速缓存被服务的请求数目越多,整体系统性能通常就越快。例如,高速缓存可以物理地位于RAM中本文档来自技高网...

【技术保护点】
1.一种用于执行存储器操作的方法,其中直接存储器访问和逻辑地址转换被实现,所述方法包括:接收针对I/O操作的请求,所述请求包括指示物理存储器地址是否可以被改变以及扇区原子性是否被需要的信息;当所述信息指示物理存储器地址可以被改变并且扇区原子性是否被需要时,使用未修改的块转换表(BTT)执行所请求的I/O操作,其中与所请求的I/O操作相关联的物理位置被改变并且扇区原子性被提供;并且否则:执行经修改的BTT,其中与所请求的I/O操作相关联的物理位置未被改变,并且如果扇区原子性被需要则原子性被提供;或者执行经修改的BTT,其中与所请求的I/O操作相关联的物理位置未被改变。

【技术特征摘要】
【国外来华专利技术】2016.04.22 US 62/326,547;2016.10.11 US 15/290,8961.一种用于执行存储器操作的方法,其中直接存储器访问和逻辑地址转换被实现,所述方法包括:接收针对I/O操作的请求,所述请求包括指示物理存储器地址是否可以被改变以及扇区原子性是否被需要的信息;当所述信息指示物理存储器地址可以被改变并且扇区原子性是否被需要时,使用未修改的块转换表(BTT)执行所请求的I/O操作,其中与所请求的I/O操作相关联的物理位置被改变并且扇区原子性被提供;并且否则:执行经修改的BTT,其中与所请求的I/O操作相关联的物理位置未被改变,并且如果扇区原子性被需要则原子性被提供;或者执行经修改的BTT,其中与所请求的I/O操作相关联的物理位置未被改变。2.根据权利要求1所述的方法,进一步包括:标识空闲块并且将数据复制到所述空闲块;以及将所述数据写入与当前物理块地址相关联的物理存储器地址。3.根据权利要求1所述的方法,其中所述请求作为I/O请求分组(IRP)被接收。4.根据权利要求1所述的方法,进一步包括:当映射改变被允许时,利用未修改的BTT执行所请求的I/O操作。5.根据权利要求1所述的方法,进一步包括:当映射改变不被允许时,确定扇区原子性是否被需要。6.根据权利要求1所述的方法,进一步包括:当原子性被需要时,使用复制BTT(CBTT)执行所请求的I/O操作。7.根据权利要求1所述的方法,进一步包括:当原子性不被需要时,利用就地BTT执行所请求的I/O操作。8.根据权利要求3所述的方法,其中所述IRP中的标志被用于指示未修改的BTT是否被允许。9.根据权利要求8所述的方法,其中使用未修改的BTT执行所请求的I/O操作,除非所述IRP标志指示未修改的BTT不应当被执行。10.根据权利要求8所述的方法,其中所述IRP中的堆栈标志指示给定的LBA地址是否可以被重新映射。11.根据权利要求3所述的方法,其中所述IRP中的标志被用于指示三个状态中的一个状态,所述三个状态包括:第一状...

【专利技术属性】
技术研发人员:N·R·克里斯蒂安森C·K·K·维加亚穆尼斯瓦拉鲁S·CC·李A·P·塔勒萨拉P·d·F·F·巴布达
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1