首页> 中国专利> 提供对更新后的文件的访问的方法和执行该方法的计算机

提供对更新后的文件的访问的方法和执行该方法的计算机

摘要

示例性实施例提供了由具有至少一个处理器的计算机执行的提供对更新后的文件的访问的方法和执行该方法的计算机,其中响应于接收到包括旧文件的修改内容的更新的应用,创建在其中复制了所述修改内容的新文件,同时保持对旧文件的访问,其中旧文件逻辑块地址映射到旧文件物理块地址,并且新文件逻辑块地址映射到新文件物理块地址,所述方法包括步骤:将旧文件逻辑块地址的映射从旧文件物理块地址自动地交换至新文件物理块地址;剪切旧文件逻辑块地址到旧文件物理块地址的映射;以及清除新文件逻辑块地址到新文件物理块地址的映射。

著录项

  • 公开/公告号CN104636414A

    专利类型发明专利

  • 公开/公告日2015-05-20

    原文格式PDF

  • 申请/专利权人 三星电子株式会社;

    申请/专利号CN201410641830.2

  • 发明设计人 奇亮奭;李尚源;

    申请日2014-11-07

  • 分类号G06F17/30;G06F12/10;

  • 代理机构北京天昊联合知识产权代理有限公司;

  • 代理人陈源

  • 地址 韩国京畿道

  • 入库时间 2023-12-18 08:44:53

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-11-05

    授权

    授权

  • 2016-08-31

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20141107

    实质审查的生效

  • 2015-05-20

    公开

    公开

说明书

相关申请的交叉引用

本申请要求转让于本申请的受让人的于2013年11月8日提交的临时专利申请No.61/902,092的权益,并且其以引用方式并入本文。

技术领域

本申请一般地涉及计算机应用,具体地,涉及用于LBA的原子交换和剪切的SWAT命令和API。

背景技术

文档管理系统更新数据结构以跟踪文档的最新版本。在这个过程中,一些系统创建文档的另一版本而非覆盖旧版本,并且将文档的旧版本保持一段时间。这允许系统在更新新版本的同时访问文档的旧版本以进行读取。例如,如果用户更新他/她的博客页面,则在他/她更新博客页面的同时,其它用户仍然可阅读旧版本的博客页面。在一些时候,系统需要更新系统信息以访问新文档并替代旧文档。通常,这触发了系统的数据结构中的一系列级联更新,并且需要对贮存器进行多次写入。

因此,期望提供一种改进的方法和系统,用于对更新后的文件提供访问而不用在系统的数据结构中执行级联更新。

发明内容

示例性实施例提供了由具有至少一个处理器的计算机执行的对更新后的文件的访问的方法,其中响应于接收到包括旧文件的修改内容的更新的应用,创建在其中复制了所述修改内容的新文件,同时保持对旧文件的访问,其中旧文件逻辑块地址(LBA)映射到旧文件物 理块地址(PBA),并且新文件LBA映射到新文件PBA,所述方法包括步骤:将旧文件LBA的映射从旧文件PBA自动地交换至新文件PBA;剪切旧文件LBA到旧文件PBA的映射;以及清除新文件LBA到新文件PBA的映射。

根据示例性实施例的方法和系统,可在不用在系统的数据结构中执行级联更新并且不用对贮存器进行不必要的写入的情况下更新文件。

附图说明

通过以下结合附图对实施例的描述,本发明的整体构思的这些和/或其它特征和效用将变得清楚和更容易理解,图中:

图1是示出根据示例性实施例的文档管理系统的框图;

图2是更新文件的常规文档管理系统的图解说明;

图3是根据一个示例性实施例示出了文档管理系统执行的用于在更新期间对文件提供访问的过程的流程图;以及

图4是图解说明了图3所示过程的示图。

具体实施方式

现在将详细描述本发明的整体构思的实施例,在附图中示出了其示例,其中相同的附图标记始终表示相同的元件。以下在参照附图的同时描述实施例以解释本发明的整体构思。

通过参照以下实施例和附图的具体说明可更容易地理解本发明的优点和特征及其实现方法。然而,本发明的整体构思可以许多不同的形式实现,并且不应理解为限于本文阐述的实施例。此外,提供这些实施例是为了使得本公开将是彻底和完整的,并且将把本发明的整体构思的概念完全传递给本领域技术人员,并且本发明的整体构思将仅由权利要求限定。为了清楚起见,在附图中会夸大层和区的厚度。

应该理解,除非本文表明不是这样或者在上下文中作出清楚的相反的指示,否则在描述本发明的上下文中(尤其是在权利要求的上下文中),使用的术语“一”、“一个”、“该”以及相似的指示语 应解释为涵盖单数形式和复数形式二者。应该理解,除非说明不是这样,否则术语“包括”是开放性术语(即,意味着“包括(但不限于)”)。

如本文所用的那样,术语“组件”或“模块”意指(但不限于)执行特定任务的软件或诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC)之类的硬件组件。组件或模块可有利地构造为位于可寻址贮存介质中,并被构造为在一个或多个处理器上执行。因此,以举例的方式,组件或模块可包括诸如软件组件、面向对象的软件组件、类组件和任务组件的组件、处理、功能、属性、过程、子程序、程序代码片断、驱动器、固件、微代码、电路、数据、数据库、数据结构、表、阵列和变量。针对组件以及组件或模块提供的功能性可组合到更少的组件以及组件或模块中,或者进一步分为额外的组件以及组件或模块。

除非另外限定,否则本文使用的所有技术术语和科学术语具有与本发明所属领域的普通技术人员之一共同理解的含义相同的含义。应该注意,除非另外指明,否则使用本文提供的任何和所有示例术语或示例性术语仅旨在更好地示出本发明,而不限制本发明的范围。另外,除非另外限定,否则不可过度解释在通用词典中定义的所有术语。

图1是示出根据示例性实施例的文档管理系统10的框图。文档管理系统10可包括计算机12,其跟踪并存储电子文档或文件。在一个实施例中,计算机12可包括台式、笔记本或工作站,而在另一实施例中,计算机12可包括经网络(未示出)与客户计算机通信的服务器。计算机12可包括通常的计算机组件,其中包括处理器14、存储器16和诸如高速贮存器18(例如,固态驱动器(SSD))之类的贮存装置。

处理器14可包括多个处理器,或具有一个或多个核的单个处理器。处理器14执行来自存储器16的程序指令。软件的示例类型可包括应用20、操作系统22、文件系统24和用于高速贮存器18的装置驱动器应用程序接口(API)26。

如本领域熟知的,应用20可表示计算机软件,当处理器14执行该计算机软件时使得计算机12执行计算机12的运行之外的任务。 示例可包括网络浏览器、文字处理器和数据库程序。通常,应用20创建并修改或更新文件28。操作系统22是一种管理和控制计算机12的操作的系统软件。示例可包括Microsoft Windows、Mac OS X和Linux。

文件系统24是软件,其控制如何在诸如高速贮存器18的数据贮存装置上存储、检索和更新诸如文件28之类的信息。通常,文件系统24使用逻辑块寻址,以指明诸如文件28之类的数据在高速贮存器18或其它计算机贮存装置上的存储位置。更具体地说,逻辑块寻址是一种将逻辑块地址(LBA)30分配给映射到高速贮存器18上的特定贮存位置的文件28的抽象。

装置驱动器应用程序接口(API)26允许应用20、操作系统22和文件系统24与高速贮存器18透明地交互。装置驱动器API 26将命令提供至高速贮存器18和/或从高速贮存器18接收数据。

在一个实施例中,高速贮存器18使用物理块寻址,以将地址提供至存储在高速贮存器18上的数据的各个物理块。这些类型的地址可被称作物理块地址(PBA)32。在一个实施例中,高速贮存器18可包括固态驱动器(SSD)(也称作固态盘)。SSD是一种使用集成电路组件作为存储器以永久地存储诸如文件28之类的数据的数据贮存装置。在一个实施例中,SSD可使用基于NAND的闪速存储器或随机存取存储器(RAM)。

在实施例中,高速贮存器18还可包括文件转换层(file translation layer,FTL)34或等同物,其在将逻辑扇区接口提供至计算机12的同时管理高速贮存器18。这样,FTL 34控制由文件系统24保持的LBA 30与由高速贮存器18保持的PBA 32之间的映射关系。在替代实施例中,示例性实施例可与除SSD以外的其它类型的贮存装置一起使用。

图2是更新文件的常规文档管理系统的图解说明。示出的示例假设应用保持表示用户的博客页面的文件200。每当用户更新博客时,应用将文件200读到存储器中,并相应地修改内容。在更新过程中,系统创建新文件204,将修改内容复制到新文件204中。同时,在用 户持续更新博客的同时其它用户仍可访问和浏览旧文件202。当用户完成对博客的编辑并提交页面时,应用切换到新文件204并删除旧文件202。

在贮存系统(实际存储文件之处)保持物理块地址(PBA)208的同时,文件系统保持针对旧文件202和新文件204的逻辑块地址(LBA)206。在该示例中,文件系统将旧文件202映射到LBA4和LBA5,而贮存装置将LBA4-LBA5分别映射到PBA0-PBA1。相似地,新文件204映射到LBA24-LBA25,并且LBA24-LBA25继而分别映射到PBA11-PBA12。

常规系统的一个问题在于,系统有些时候需要更新系统信息以访问替代旧文件202的新文件204。通常,这会触发系统的数据结构中的一系列级联更新,并导致对贮存器进行多次写入。

系统信息可包括针对各个文件/文档的元数据。例如,元数据可包括存储文档的日期和存储文件的用户的身份。元数据通常按照数据结构进行存储。这种数据结构的一个示例是B树,这是一种分类保持数据并允许以对数时间(logarithmic time)进行搜索、顺序存取、插入和删除的树数据结构。针对各个文件200的元数据和/或一列LBA206可通过B树中的i节点保持。通常每个文件200具有一个i节点。如果文件200的i节点存储在靠近B树的叶层,则会需要更新从该节点直至根节点的路径上的所有节点,因而进行级联更新和对贮存器写入。

例如,每当用户更新如上所述的博客时,应用也需要更新包含该博客的文件信息,这导致至少一个盘写入。当用户更多时,发生更多的盘写入。

示例性实施例涉及一种用于提供对新的更新后的文件进行访问而不用更新系统数据结构的改进的方法和系统,从而最小化或消除系统中的级联更新和过多的盘写入。

示例性实施例提出了一种用于处理该问题的新的贮存器(例如,SSD)命令和API。也就是说,如果可在不用更新系统数据结构的情况下访问新版本的文档,则由于用于反映最新系统信息的级联更新的取消可避免或明显减少贮存器写入。实际上,除该简化的示例以外, 示例性实施例也可应用于诸如B+树、文档日志和其他具有这些特征的许多应用。

示例性实施例提出了一种命令以及相关的API,这里称作交换和剪切(SWap And Trim,SWAT)命令。给定一对LBA列表,SWAT命令以原子方式按顺序交换列表中的LBA的映射,并随后剪切未使用的LBA。

图3是根据一个示例性实施例示出了文档管理系统10执行的用于在更新期间对文件提供访问的过程的流程图;图4是图解说明了该过程的示图。

参照图1、图3和图4,可响应于接收到包括旧文件的修改内容的更新的应用而开始该过程,以创建在其中复制了所述修改内容的新文件,同时保持对旧文件的访问(框300)。

这示出在图4中,其示出了响应于正在更新的文件400,暂时保持对旧版本的文件(即,旧文件)402的访问,并且创建包含修改内容的新版本的文件(即,新文件)404。可通过一个应用20或者替代性通过操作系统22来更新文件400。

文件系统24使用一列旧文件LBA 406(例如,LBA4-LBA5)表示旧文件402的逻辑贮存位置,同时高速贮存器18使用一列旧文件PBA408(例如,PBA0-PBA1)表示物理贮存位置。相似地,还利用一列新文件LBA 410(例如,LBA24-LBA25)表示新文件404的逻辑贮存位置,同时利用一列新文件PBA 412(例如PBA11-PBA12)表示高速贮存器18中的物理贮存位置。

再次参照图3,响应于对正在提交的新文件404进行的更新,旧文件LBA 406的映射从旧文件PBA 408自动地交换至新文件PBA 412(框302)。如图4所示,将所述一列旧文件LBA 406的物理映射重新映射至新文件404的所述一列新文件PBA 412。更具体地说,一旦发出SWAT命令,LBA4就映射至PBA11,LBA5就映射至PBA12。结果,SWAT API消除了更新文件信息的需要。

另外,剪切旧文件LBA 406到旧文件PBA 408的映射,释放旧文件PBA 408(框304)。如图4所示,在剪切之后,旧文件PBA 408 (PBA0和PBA1)被释放,如“X”416所示。

同样,还清除新文件LBA 410到新文件PBA 412的映射(框306)。如图4所示,在SWAT操作之后,清除并可以选择性地回收针对LBA24和LBA25的映射,并且可以选择性地删除新文件404,如“X”418所示。

根据示例性实施例,SWAT命令和API提供优于现有技术的多个优点。SWAT命令不需要对OS进行任何修改,并且可在较少固件修改的情况下应用于所有类型的SSD器件。SWAT命令也可通过减少来自应用的盘写入次数来显著提高SSD器件的耐用性。SWAT命令还可通过主动地恢复未使用的空间来改进系统的性能。另外,尤其在多版本同时控制的情况下SWAT命令可提供应用的明显性能优点。

以下更详细地描述SWAT命令。一旦通过应用20提交文件,操作系统22或文件系统24就调用装置驱动器API 26。随后,装置驱动器API 26可将SWAT命令发送至高速贮存器18。

在一个实施例中,命令可指定一对LBA列表,即,一列新文件LBA 410和一列旧文件LBA 406。高速贮存器18中的文件转换层(FTL)34可接收列旧文件LBA 406和列新文件LBA 410并以原子方式按照指定的顺序交换所述一对LBA列表中的LBA的映射,并随后以最大努力方式剪切旧文件PBA 408(例如,在执行SWAT命令的过程中批量剪切以剪切开销最小化)。在一个实施例中,SWAT命令是原子的。

SWAT命令

在一个实施例中,LBA可为连续或非连续的。因此,可存在针对连续或非连续LBA的两个不同的SWAT命令。将参照以下伪代码更好地理解SWAT命令的各方面和实施例,其中在特定实施例方面描述了本发明。提供它们是为了清楚的目的,而非用于限制本发明。本发明及其各方面可应用于本文中未特别公开的各类方法、装置和代码。

针对非连续LBA的API

swat(unsigned int*dst_list,unsigned int*src_list,unsigned int lba_count,unsigned int timeout) 

该程序以原子方式交换dst_list中的LBA的映射与src_list 中的LBA的映射,并剪切针对dst_list中的LBA的PBA。一旦成功地执行该命令,dst_list中的LBA就指向由src_list中的LBA所指向的PBA,剪切由dst_list指向的PBA,并且释放src_list中的LBA。当需要以原子方式处理大量转换时该API是有用的。

参数

可通过制造商定义的命令以任何类型的贮存器协议实现SWAT命令,所述贮存器协议诸如SATA、SAS、PCIe、eMMC、UFS等。

已经根据示出的实施例描述了本发明,并且所述实施例可存在变形形式,并且任何变形形式可在本发明的精神和范围内。例如,可利用硬件、软件、含有程序指令的计算机可读介质或它们的组合实现示例性实施例。根据本发明写的软件存储在诸如存储器、硬盘或CD/DVD-ROM的一些形式的计算机可读介质中,或者通过处理器执行。因此,在不脱离权利要求的精神和范围的情况下,本领域普通技术人员可作出许多修改。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号