CN109690523A - 用于执行数据对象重命名操作的系统和方法 - Google Patents
用于执行数据对象重命名操作的系统和方法 Download PDFInfo
- Publication number
- CN109690523A CN109690523A CN201780054792.2A CN201780054792A CN109690523A CN 109690523 A CN109690523 A CN 109690523A CN 201780054792 A CN201780054792 A CN 201780054792A CN 109690523 A CN109690523 A CN 109690523A
- Authority
- CN
- China
- Prior art keywords
- renaming operation
- file system
- renaming
- file
- atomic
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开内容描述了执行数据对象重命名操作的技术。本公开内容描述了用于以可减少文件系统损坏和数据丢失的方式执行数据对象重命名操作的技术。本文中所描述的技术可以包括选择性地登记特定类型的重命名操作。选择性地登记特定类型的重命名操作可以减轻潜在的数据丢失和文件系统损坏。
Description
相关申请
本申请要求享有于2016年7月7日提交的美国临时申请No.62/359,562的权益,所述美国临时申请以引用的方式整体纳入本文。
技术领域
本公开内容涉及用于与文件系统一起使用的系统和方法,且更具体地,涉及用于执行数据对象重命名操作的技术。
背景技术
包括膝上型计算机或台式计算机、平板计算机、电视机、数字视频录像机、机顶盒、数字媒体播放器、视频游戏设备以及蜂窝电话的设备可以利用文件系统来控制如何将数据存储在计算机可读介质上和如何从计算机可读介质检索数据。例如,设备可以根据定义的文件系统将数据读和/或写到存储设备,诸如,存储卡(例如,安全数字(SD)存储卡,包括安全数字标准容量(SDSC)格式、安全数字高容量(SDHC)格式和安全数字扩展容量(SDXC)格式)、硬盘驱动器,和/或固态驱动器(包括通用串行总线(USB)固态驱动器(所谓的“闪存(flash)”驱动器、“拇指(thumb)”驱动器或“跳跃(jump)”驱动器)。文件系统的类型包括例如基于扩展文件系统(ext)的文件系统、基于分层文件系统(HFS)的文件系统、基于XFS文件系统的文件系统、基于Z文件系统(ZFS)的文件系统、基于新技术文件系统(NTFS)的文件系统和基于文件分配表(FAT)文件系统的文件系统,所述文件分配表文件系统包括FAT12、FAT16、FAT32、exFAT和事务exFAT文件系统。相应的数据对象(例如,文件)可以在一个卷(volume)内存储到存储设备。
设备的使用者并不总是在使计算设备掉电或移除存储设备之前卸载卷。另外,存储设备可能意外地被从计算设备移除或计算设备可能在操作期间耗尽电池功率。
发明内容
总体而言,本公开内容描述了用于执行数据对象重命名操作的技术。具体地,本公开内容描述了用于以可减少文件系统损坏和/或数据丢失的方式执行数据对象重命名操作的技术。应注意,文档通过引用纳入本文是出于描述的目的,且不应被解释为对于本文所使用的术语的限制和/或造成歧义。例如,在一个所纳入的参考文献提供的一个术语的定义不同于另一所纳入的参考文献提供的该术语的定义和/或不同于如该术语在本文中使用的定义的情况下,应以广泛地包括每个相应的定义的方式和/或以替代地包括每个特定定义的方式解释该术语。
根据本公开内容的一个实施例,一种用于重命名数据对象的方法包括:确定是否能够以原子方式执行重命名操作;仅当将以非原子方式执行该重命名操作时才为该重命名操作创建一个日志条目;以及,在完成该重命名操作时更新该日志条目。
根据本公开内容的另一实施例,一种用于重命名数据对象的设备包括一个或多个处理器,所述一个或多个处理器被配置成:确定是否能够以原子方式执行重命名操作;仅当将以非原子方式执行该重命名操作时才为该重命名操作创建一个日志条目;以及,在完成该重命名操作时更新该日志条目。
根据本公开内容的另一实施例,一种非暂时性计算机可读存储介质包括存储在该非暂时性计算机可读存储介质上的指令,在执行所述指令时,所述指令导致设备的一个或多个处理器确定:是否能够以原子方式执行重命名操作;仅当将以非原子方式执行该重命名操作时才为该重命名操作创建日志条目;以及,在完成该重命名操作时更新该日志条目。
根据本公开内容的另一实施例,一种设备包括用于确定是否能够以原子方式执行重命名操作的装置、用于仅当将以非原子方式执行该重命名操作时才为该重命名操作创建一个日志条目的装置、以及用于在完成该重命名操作时更新该日志条目的装置。
下文在附图中和说明书中阐明了一个或多个实施例的细节。从说明书、附图和权利要求中将明了其他特征、目的及优点。
附图说明
图1是例示可以实施本公开内容的一个或多个技术的计算设备的一个实施例的方框图。
图2是例示可以实施本公开内容的一个或多个技术的计算设备的操作系统的一个实施例的方框图。
图3是例示根据本公开内容的一个或多个技术、根据一个示例文件系统定义的卷的一个实施例的概念图。
图4A-图4B是例示根据本发明的一个或多个技术、包括与一个数据对象相关联的记录的目录条目的实施例的概念图。
图5是例示根据本公开内容的一个或多个技术、重命名数据对象的实施例的概念图。
图6是例示根据本公开内容的一个或多个技术、重命名数据对象如何会导致与数据对象相关联的记录发生改变的一个实施例的概念图。
图7A-图7B是例示根据本公开内容的一个或多个技术来重命名数据对象的实施例的概念图。
图8是例示根据本公开内容的一个或多个技术、重命名数据对象如何会导致与数据对象相关联的记录发生改变的一个实施例的概念图。
图9是例示根据本公开内容的一个或多个技术来重命名数据对象的一个实施例的概念图。
图10A-图10B是例示根据本公开内容的一个或多个技术所生成的重命名日志的实施例的概念图。
图11是例示根据本公开内容的一个或多个技术的重命名数据对象的一个实施例的流程图。
具体实施方式
总体而言,本公开内容描述了用于执行数据对象重命名操作的技术。具体地,本公开内容描述了用于以可减少文件系统损坏和/或数据丢失的方式执行数据对象重命名操作的技术。故障(例如,自发功率损耗和/或意外存储设备断开)可能在重命名操作期间发生。在一些情况下,重命名操作期间的故障可导致正被重命名的数据对象的丢失(或潜在地导致该数据对象的重复),这可导致文件系统损坏和/或数据丢失。本文中所描述的技术可以包括选择性地登记(journal)特定类型的重命名操作,使得随后在故障之后安装一个卷时,可以减轻潜在的损坏和/或数据丢失。在一个实施例中,在一些情况下,可以根据一个卷状态来重放或撤销与重命名操作相关联的未提交的事务。如下文进一步详细描述的,选择性地登记特定类型的重命名操作可以在维持可接受的系统性能的同时减轻潜在的数据丢失和/或文件系统损耗。
可以在存储设备上根据定义的系统文件来安排、组织和/或管理用户数据。例如,Microsoft Extensible Firmware Initiative FAT32 File System Specification(版本1.03,2000年12月6日)(其以引用的方式整体纳入)定义了FAT32文件系统的多个方面,并且Microsoft exFAT Revision 1.00 File System Basic Specification(第四版,2009年1月1日))(被描述于美国专利No.8,321,439的附录A中并且以引用的方式整体纳入)定义了exFAT文件系统的多个方面。另外,文件系统可以包括其他专有文件系统。文件系统可以指定卷的结构和要求,其中卷是为存储和检索用户数据所必需的数据空间定义的一组逻辑结构。如下文参考图3所详细描述的,卷可以包括引导记录、文件分配表、分配位映射以及用户数据。用户数据可以包括目录和文件和/或类似的数据结构。目录、文件和/或类似的数据结构中的每个通常可以被称为数据对象或数据项。在基于Unix的文件系统中,术语索引节点可以被用来指文件或目录数据对象。如在本文中使用的,术语索引节点可以更通常指与用户数据相关联的数据对象。
用户数据可以被物理地存储到存储设备的一个或多个扇区。文件系统可以根据多个扇区定义一个簇(或分配单元),其中簇是存储器的可以分配到数据对象的最小逻辑单元。因此,一个或多个簇被分配到存储设备上所存储的每个数据对象。文件系统内的文件分配表、分配位映射和/或类似逻辑结构提供数据对象到一个或多个分配的簇的映射,且这样可以被称为分配映射结构。如下文进一步详细描述的,文件系统驱动器可以允许应用和/或与应用相关联的进程使得数据对象在存储设备上被修改。例如,修改数据对象可以包括创建文件、添加附加数据到文件、从文件移除数据、移动文件到另一目录、重命名文件或删除文件。修改数据对象可以包括将附加簇分配到数据对象或将簇从数据对象解除分配。当簇到数据对象的分配改变时,文件系统内的文件分配表、分配位映射和类似的逻辑结构可以被更新。另外,修改数据对象可以包括修改一个或多个扇区。也就是说,修改数据对象可以包括将数据的值写到与分配给数据对象的簇对应的扇区(例如,重写扇区)。仅要求修改单个扇区的数据对象的修改被称为原子的(例如,写单个扇区被认为是原子的),且要求修改不止一个扇区的数据对象的修改被称为非原子的。
如下文进一步详细描述的,目录表(也可以被称为目录或文件夹)是一种类型的数据对象,该数据对象包括与其他数据对象(例如,文件和/或子目录)对应的条目记录。在一些情况下,当目录中的文件被重命名时,目录表的条目记录被修改。例如,如果用户增加文件名称中的字符数目(例如,从10增加到20),则可以将一个或多个附加条目记录添加到目录表。在一些情况下,将附加条目记录添加到目录表可以包括将数据重写在单个扇区中。在一些情况下,将附加条目记录添加到目录表可以包括将数据写到附加扇区。另外,在一些情况下,从目录表移除条目记录(例如,响应于缩短文件名称)可以包括将数据写到一个或多个扇区。因此,在一些情况下,数据对象重命名操作可以是原子的,且在其他情况下,数据对象重命名操作可以是非原子的。另外,应注意,对于一些文件系统,将文件从一个目录移动到另一目录(这可以被认为是重命名操作)可以是固有地非原子的。也就是说,将文件从一个目录移动到另一目录(每个目录可以是相应地具有所分配的簇的不同数据对象)可能要求删除与对应于起始(origin)(或主)目录的盘位置处的文件对应的条目并且写与对应于目标目录的盘位置处的文件对应的条目。
如下文进一步详细描述的,根据本文中所描述的技术,在一个实施例中,可以基于是否能够以原子方式执行重命名操作来选择性地登记所述重命名操作。应注意,在其他实施例中,基于完成重命名操作所要求修改的扇区的数目,本文中所描述的技术可以更通常地选择性地登记重命名操作和/或其他数据对象修改。例如,在一个实施例中,对于要求修改最小数目的扇区的操作可以发生登记(例如,要求修改至少三个扇区的操作可以被登记)。如上文描述的,日志可以允许根据卷状态来重放或撤销与重命名操作相关联的未提交的事务,这可以减少数据丢失和/或数据损坏。
应注意,一些文件系统包括定义的日志(例如,扩展文件系统和XFS文件系统),且其他文件系统不包括定义的日志(例如,FAT16、FAT32和exFAT)。在一些情况下,本文中所描述的技术对于不包括定义的日志的文件系统可以是特别有用的。另外,应注意,定义的日志通常登记所有操作,即,无论特定操作是原子的还是非原子的,登记都会发生。应注意,过多的登记可能降低设备的性能(例如,其他操作可能需要等待执行登记操作),且在一些情况下可能降低存储器设备的寿命(例如,基于闪存的存储器设备可能在故障之前具有有限的写循环计数)。因此,根据本文中所描述的技术来选择性地登记重命名操作可以减轻潜在的数据丢失和/或文件系统损坏,同时实现良好的性能并且不会显著降低存储器设备的寿命。也就是说,与定义的文件系统登记技术相比,本文中所描述的技术可以减少写放大。
图1是例示可以实施本公开内容的一个或多个技术的计算设备的一个实施例的方框图。计算设备100可以包括一个或多个处理器和多个内部和/或外部存储设备。存储设备的实施例包括文件服务器、文件转移协议(FTP)服务器、网络附接存储(NAS)设备、本地磁盘驱动器、可移除存储设备(诸如,存储卡和USB存储设备)或能够存储数据的任何其他类型的设备或存储介质。存储介质可以包括光学存储介质(例如,DVD、CD-ROM等)、磁性存储介质、闪存或任何其他合适的数字存储介质。当部分地以软件实施本文中所描述的技术时,设备可以将用于软件的指令存储在合适的、非暂时性计算机可读介质中,且使用一个或多个处理器在硬件中执行所述指令。
计算设备100是被配置成将数据存储在计算机可读介质上或从计算机可读介质检索数据的计算设备的一个实施例。数据可以包括例如应用文件、文档文件、媒体文件(音频文件和/或视频文件)等。计算设备100可以被装配以用于有线通信和/或无线通信,且可以包括如下设备:诸如,台式计算机或膝上型计算机、移动设备、智能手机、蜂窝电话、平板设备、机顶盒、DVR、监视系统、个人游戏设备以及汽车信息娱乐系统。如图1中所例示的,计算设备100包括中央处理器单元102、系统存储器104、系统接口110、存储设备112、输入/输出(I/O)设备114和网络接口116。如图1中例示的,系统存储器104包括应用(app)106和操作系统108。应注意,尽管示例的计算设备100被例示为具有不同的功能块,但是这样的例示是出于描述目的,且不将计算设备100限制于特定的硬件或软件架构。可以使用硬件、固件和/或软件实施方式的任何组合来实现计算设备100的功能。
中央处理单元102可以被配置成实施用于在计算设备100中执行的功能和/或进程指令。中央处理单元102可以能够检索和处理指令、代码和/或数据结构,以用于实施本文中所描述的技术中的一个或多个。指令可以被存储在计算机可读介质(诸如,系统存储器104或存储设备112)上。中央处理单元102可以包括数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其他等同的集成或分立逻辑电路系统。中央处理单元102可以包括一个或多个多核中央处理单元。中央处理单元102可以根据页面大小来操作,其中一个页面包括虚拟存储器的一个固定长度的连续块。对于中央处理单元架构,常见的页面大小是4096字节(即,4千字节(kiB))。其他示例的页面大小可以包括8kiB、16kiB、32kiB、64kiB等。
系统存储器104可以被配置成存储在操作期间可以由计算设备100使用的信息。系统存储器104可以被描述为非暂时性或有形计算机可读存储介质。在一些实施例中,系统存储器104可以提供临时存储器和/或长期存储。在一些实施例中,系统存储器104或其部分可以被描述为非易失性存储器,并且在其他实施例中,系统存储器的多个部分可以被描述为易失性存储器。易失性存储器的实施例包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)。非易失性存储器的实施例包括磁性硬盘、光盘、软盘、闪存或电可编程存储器(EPROM)或电可擦除可编程存储器(EEPROM)的形式。在一个实施例中,系统存储器104可以包括内部硬盘驱动器和/或内部闪存。
系统接口110可以被配置成实现计算设备100的多个部件之间的通信。在一个实施例中,系统接口110包括实现数据从一个对等设备转移到另一对等设备或存储介质的结构。例如,系统接口110可以包括支持外围部件互联(Peripheral Component Interconnect,PCI)总线、外围部件互联表达(Peripheral Component Interconnect Express,PCIe)总线协议、专有总线协议或可以用来使对等设备互连的任何其他形式的结构的芯片组。
存储设备112表示计算设备100中可以被配置成与系统存储器104相比,针对不同的时间段存储不同的信息量的存储器。类似于系统存储器104,存储设备112也可以包括一个或多个非暂时性或有形计算机可读存储介质。存储设备112可以是内部存储器或外部存储器,并且在一些实施例中,可以包括非易失性存储元件。存储设备可以包括存储卡(例如,安全数字(SD)存储卡,包括安全数字标准容量(SDSC)格式、安全数字高容量(SDHC)格式和安全数字扩展容量(SDXC)格式)、外部硬盘驱动器和/或外部固态驱动器。存储在存储设备112上的数据可以是根据定义的文件系统(诸如,FAT12、FAT16、FAT32、exFAT、事务型exFAT文件系统、NTFS和/或专有文件系统)存储的。
I/O设备114可以被配置成为计算设备100接收输入且提供输出。输入可以从输入设备生成,所述输入设备诸如为触敏屏、跟踪板(track pad)、跟踪点(track point)、鼠标、键盘、麦克风、一个或多个视频摄像机或被配置成接收输入的任何其他类型的设备。输出可以被提供到输出设备,诸如扬声器或显示设备。在一些实施例中,I/O设备114可以在计算设备100外部,且可以使用标准化通信协议(诸如,通用串行总线协议(USB))将该I/O设备114操作性地耦合到计算设备100。
网络接口116可以被配置成实现计算设备100经由一个或多个网络与外部计算设备通信。网络接口116可以是网络接口卡,诸如以太网卡、光学收发器、射频收发器或可以发送和接收信息的任何其他类型的设备。网络接口116可以被配置成根据一个或多个通信协议(诸如,全球移动通信系统(GSM)标准、码分多址(CDMA)标准、第三代合作伙伴项目(3GPP)标准、互联网协议(IP)标准、无线应用协议(WAP)标准和/或IEEE标准(诸如,802.11标准中的一个或多个)及其多种组合操作。
如图1中例示的,系统存储器104包括应用106和操作系统108。应用106可以包括在计算设备100内实施的或通过计算设备100执行的任何应用,并且可以在计算设备100的部件内被实施或被包含在计算设备100的部件内、可以通过计算设备100的部件操作、可以通过计算设备100的部件执行,和/或可以被操作性地/通信地耦合到计算设备100的部件。应用106可以包括会导致计算设备100的中央处理单元102执行特定功能的指令。应用106可以导致中央处理单元102将数据写入计算机可读介质或将数据从计算机可读介质读出,所述计算机可读介质是诸如系统存储器104和/或存储设备112。应用106可以包括以计算机编程语句(诸如,for循环、while循环、if语句、do循环等)表达的算法。
如图1中进一步例示的,应用106可以在操作系统108的顶部上执行。操作系统108可以被配置成便于应用106与中央处理单元102以及计算设备100的其他硬件部件相互作用。操作系统108可以是被设计成安装在膝上型计算机和台式计算机上的操作系统。例如,操作系统108可以是操作系统、Linux或Mac OS。操作系统108可以是被设计成安装在智能手机、平板设备、机顶盒和/或游戏设备上的操作系统。例如,操作系统108可以是Linux、Mac OS、Android、iOS、Windows或Windows操作系统。应注意,尽管可以根据特定的示例操作系统来描述这些技术,但是本文中所描述的技术不限于特定的操作系统。
图2是例示可以实施本公开内容的一个或多个技术的计算设备的操作系统的一个实施例的方框图。如图2中所例示的,操作系统108包括内核202。在一个实施例中,内核202可以是基于Linux内核的内核。在其他实施例中,内核202可以是操作系统的指令的组成部分或子集。如图2中例示的,内核包括设备驱动器204和文件系统驱动器206。设备驱动器204可以被配置成作为操作系统108和硬件设备之间的接口(诸如,系统接口110)操作。文件系统驱动器206可以被配置成提供应用106和/或操作系统108和存储设备(诸如,系统存储器104和/或存储设备112)之间的抽象层。例如,文件系统驱动器206可以允许应用修改存储设备112上的数据对象(例如,响应于用户输入),而不需要该应用执行文件管理的多个方面。修改数据对象可以包括卷内的任何类型的数据改变,从创建、修改、重命名、移动或删除文件到创建、修改、重命名、移动或删除目录。如下文详细描述的,修改数据对象可以包括修改引导记录、修改目录条目、修改文件分配表、修改分配位映射、分配簇和/或使簇解除分配。在一个实施例中,文件系统驱动器206可以被配置成允许根据基于文件分配表(FAT)文件系统的文件系统而将数据存储到系统存储器104和/或存储设备112,所述文件分配表(FAT)文件系统包括FAT12、FAT16、FAT32、exFAT、事务型exFAT文件系统、NTFS文件系统和/或专有文件系统。应注意,在一些实施例中,文件系统驱动器206可以被实施为一个实施多个文件系统(例如,FAT文件系统和exFAT文件系统)的二进制驱动器。在其他实施例中,文件系统驱动器206可以包括用于相应的文件系统的单独的二进制驱动器。
图3是例示根据一个示例的文件系统定义的卷的一个实施例的概念图。在一个实施例中,卷300可以是根据FAT文件系统(例如,FAT12、FAT16、FAT32和exFAT)定义的。应注意,尽管在一些实施例中参考FAT文件系统描述了卷300,但是本文中所描述的技术不限于FAT文件系统,且可以与其他文件系统一起使用,所述其他文件系统包括例如专有文件系统。另外,应注意,示例卷300表示卷的一个示例性实施例,且为了简洁起见,不意在作为根据一个文件系统定义的卷的穷尽描述。卷的附加细节可以在对应的文件系统规范中找到。例如,在根据基于exFAT文件系统的文件系统定义的卷300的情况下,卷300的附加细节可以在Microsoft exFAT Revision 1.00 File System Basic Specification(第四版,2009年1月1日)中找到。在根据基于FAT12、FAT16和FAT32文件系统的一个或多个的文件系统定义的卷300的情况下,卷的附加细节可以在Microsoft Extensible Firmware InitiativeFAT32 File System Specification(版本1.03,2016年12月6日)中找到。
在图3所例示的实施例中,卷300包括引导记录302、文件分配表304和数据区域306。引导记录302、文件分配表304和数据区域306中的每个可以是根据扇区值而在存储设备(诸如,存储设备112)上可寻址的。引导记录302包括描述文件系统参数的数据条目。在一个实施例中,引导记录302包括用于引导卷的数据、用于卷的基本文件系统参数和多种错误检测信息。引导记录302可以包括一个或多个引导记录。在一个实施例中,引导记录302包括一个主引导记录和一个备份引导记录,其中备份引导记录是主引导记录的副本。如图3中所例示的,引导记录302中所包括的信息的实施例包括卷长度、文件分配表长度、簇计数、根目录的第一簇、每扇区的字节以及每簇的扇区。在一个实施例中,卷长度以扇区指定卷300的大小。在一个实施例中,文件分配表长度以扇区指定文件分配表304的大小。在一个实施例中,簇计数指定数据区域306中所包括的簇的数目。应注意,尽管未在图3中例示,但是引导记录302还可以包括指示被分配的簇的百分比的信息和允许卷300被引导的信息。如下文详细描述的,引导记录302可以随着文件和目录被修改而被更新。在一个实施例中,根目录的第一簇指定根目录在数据区域306中的扇区位置。
在一个实施例中,每个扇区的字节指定一个扇区中所包括的字节的数目。在一个实施例中,每个扇区的字节的数目可以以2的幂记数法表达,且可能的范围是从每个扇区512字节的最小值到每个扇区4096字节的最大值。在一个实施例中,每簇的扇区指定每个簇的扇区的数目。在一个实施例中,每簇的扇区的最小数目可以是1,且每簇的扇区的最大数目可以提供32kiB的最大簇大小。应注意,在一些实施例中,簇的大小可以取决于卷大小。例如,对于最大卷的符合标准的FAT卷,定义为大于32千兆字节(GiB)(其中1GiB为1,0243字节)的卷,簇大小将是FAT的最大簇大小,其是32kiB(例如,64个512字节的扇区或8个4096字节的扇区)。符合标准的32GiB FAT卷将使用大小为16kiB的簇。符合标准的16GiB FAT卷将使用8kiB簇。符合标准的8GiB FAT卷将使用4kiB簇。
文件分配表304可以包括一个或多个文件分配表。在一个实施例中,文件分配表304包括单个文件分配表304。在另一实施例中,文件分配表304包括两个或更多个文件分配表。文件分配表304可以被用来描述分配到数据区域306中的数据对象(诸如,文件)的簇的序列(也称为簇的链)。如图3中例示的,一个文件分配表可以包括一个条目和一个与该条目对应的值。在图3所例示的实施例中,条目00包括指示媒体类型的值,并且条目01包括占位符值。条目02到簇计数+1可以提供描述分配到数据对象的簇的序列的信息。在一个实施例中,条目可以包括指示簇的序列中的一个后续簇条目的值,指示“坏”簇的值,指示簇未被使用的值,或指示簇的序列结束(EOF)的值。
在图3所例示的实施例中,根文件目录在簇02处开始。如图3中所例示的,条目02包括指示根目录未被分配任何附加簇的EOF标记。如图3中所例示的,条目03包括04的地址,指示数据对象的序列中的下一簇是簇04。条目04包括指示数据对象未被分配任何附加簇的EOF标记。以此方式,文件分配表可以被用来识别分配到数据对象的簇的序列。应注意,尽管在图3所例示的实施例中,分配到数据对象的簇是连贯的,但是在其他实施例中,分配到数据对象的簇可以包括不连贯的簇(例如,指向条目07的条目03等)。
数据区域306可以是卷300中存储构成数据对象的数据的区域。在一些实施例中,数据区域306可以被称为簇堆。数据区域306可以包括表示一种或多种类型的文件的数据对象。例如,数据区域306可以包括文字处理文档(诸如,Microsoft Word文档)、媒体文件(诸如,JPEG文件、视频文件)和/或其他类型的文件。另外,如下文进一步所描述的,数据区域306可以包括根据本文中所描述的技术中的一个或多个而生成的日志(例如,可以对用户隐藏的日志文件)。如上文所描述的,关于数据区域306的配置的信息可以被包括在引导记录302(例如,簇计数和分配的簇的百分比)中。应注意,在大多数情况下,通常在安装事件时,更新引导记录302。如上文进一步所描述的,对存储在数据区域306中的数据对象的修改可能要求更新文件分配表304。如图3中所例示的,数据区域包括目录表、分配位映射和文件数据。如上文所描述的,目录表可以包括描述指示文件和目录之间的关系的树结构的条目。例如,目录表可以指示特定文件存储在父目录的子目录中。
在图3所例示的实施例中,目录表包括根目录、“PICTURES”目录以及子目录“VACATIONS”和“HOLIDAYS”。如图3进一步所例示的,图片文件(“PIC_A.JPG”)被包括在“VACATIONS”目录内,且图片文件(“PIC_B.JPG”)被包括在“HOLIDAYS”目录内。在图3所例示的实施例中,当卷包括分配位映射时,根目录可以包括关于卷和数据区域的一般信息,例如,分配位映射的位置。应注意,目录条目可以包括根据文件系统所定义的一个或多个不同类型的记录(例如,目录条目记录、流扩展记录、文件名称扩展记录等)。一个或多个记录可以将一个数据对象映射到一个数据区域。例如,一个记录中的第一个簇字段可以提供一个文件到一个或多个数据簇的最初映射。当修改存储到一个卷的数据对象时,可以更新记录。
再次参考图3,分配位映射可以维持数据区域304中的簇的分配状态,且可以被用来确定卷中哪些簇当前可用于写,即当前未被分配。如图3的实施例中所例示的,分配位映射包括对应于数据区域306的每个簇的条目,其中二进制值“1”指示一个特定的簇被分配,且二进制值“0”指示一个簇被解除分配。应注意,尽管一些文件系统(诸如,FAT12、FAT16和FAT32)可以不包括分配位映射,但是本文中所描述的技术可以与包括或不包括分配位映射的文件系统一起使用。应注意,在exFAT的实施例中,数据区域306可以包括大写字母表,该大写字母表包含用于将小写字符转换为大写字符的数据。例如,大写字母表可以包含统一码(Unicode)字符阵列。在exFAT的实施例中,文件名称可以以不区分大小写的方式存储,并且文件名称可以在搜索操作期间被转换为大写。应注意,在FAT12、FAT16和FAT32的实施例中,数据区域306不包括大写字母表。文件数据可以包括表示文件(诸如,图3的实施例中的PIC_A.JPG和PIC_B.JPG)的数据。
如上文描述的,目录表中所包括的目录条目可以包括一个或多个不同类型的记录。图4A和图4B是概念图,例示了包括与数据对象相关联的记录的目录条目的实施例。图4A中所例示的示例目录条目400通常对应于根据exFAT所定义的目录记录。图4B中所例示的示例目录条目450通常对应于根据FAT12、FAT16和FAT32所定义的目录记录。如图4A中所例示的,目录条目400包括目录条目记录402、流扩展记录404和文件名称扩展记录406。可以根据一个文件系统规范(诸如,exFAT)定义目录条目记录402、流扩展记录404和文件名称扩展记录406。在exFAT的实施例中,每个记录可以是32字节,且通常可以被格式化成如图4A中所例示的。在exFAT的实施例中,一个或多个扇区中的目录条目记录402、流扩展记录404和文件名称扩展记录406的顺序可以是如下:目录条目记录402、流扩展记录404和文件名称扩展记录406。应注意,示例目录条目400表示根据一个文件系统定义的目录条目的一个例示性实施例,且为了简洁起见,在本文中未提供根据一个文件系统所定义的目录条目的穷尽描述。目录条目400的附加细节可以在对应的文件系统规范中找到。例如,在根据基于exFAT文件系统的文件系统定义目录条目400的情况下,目录条目400的附加细节可以在MicrosoftexFAT Revision 1.00 File System Basic Specification(第四版,2009年1月1日)中找到。
如图4A中所例示的,描述数据对象的名称、数据对象的第一簇和数据对象的数据大小的信息被包括在目录条目400中。目录条目记录402包括DOS文件标志和时间数据。在一个实施例中,DOS文件标志可以包括指示文件是否是只读文件、隐藏文件、系统文件或存档文件的信息。时间数据可以包括指示文件何时被创建、被访问和/或被修改的信息。流扩展记录404包括识别索引节点的第一簇和数据对象的数据大小的信息。文件名称扩展记录406包括类型值和对象识别信息,即,文件名称。目录条目400可以包括一个或多个文件名称扩展记录。文件名称扩展记录的数目可以基于文件名称的长度。如下文进一步详细描述的,重命名文件可能增加用于该文件的文件扩展的数目,且这样会要求将数据写到一个或多个扇区。如图4A中例示的,目录条目记录402和流扩展记录404也包括类型值。在一个实施例中,每个类型值可以包括一个指示数据对象是否已经被删除的位。在一个实施例中,将类型值的第一位设置为0可以指示数据对象已经被删除。如下文进一步详细描述的,在重命名操作期间,在目录条目记录、流扩展记录和文件名称扩展记录中的每个中的类型值可以被更新,以指示数据对象已经被删除。例如,当将数据对象从起始目录移动到目标目录时,该起始目录中的目录条目记录、流扩展记录和文件扩展记录可以具有所得到的类型值,所述所得到的类型值指示该数据对象已经从该目录被删除。
参考图4B,目录条目450包括目录条目记录452(可以被称为短目录条目记录),且可以包括一个或多个长名称目录条目记录454。目录条目450可以是根据一个文件系统规范(诸如,FAT12、FAT16和FAT32)定义的。在FAT12、FAT16和FAT32的实施例中,一个或多个扇区中的目录条目记录452和一个或多个长名称目录条目记录454的顺序可以是如下:一个或多个长名称目录条目记录454和目录条目记录452。以与文件名称扩展记录406的数目类似的方式,长名称目录条目记录454的数据可以基于文件名称的长度。如下文进一步描述的,重命名文件可能增加用于该文件的长名称目录条目记录的数目,且这样会要求将数据写到一个或多个扇区。应注意,示例目录条目450表示根据一个文件系统所定义的目录条目的一个例示性实施例,且为了简洁起见,在本文中未提供根据一个文件系统所定义的目录条目记录的穷尽描述。目录条目450的附加细节可以在对应的文件系统规范中找到。例如,在根据基于FAT12、FAT16和FAT32文件系统中的一个或多个的文件系统定义目录条目450的情况下,目录条目450的附加细节可以在Microsoft Extensible Firmware Initiative FAT32File System Specification(版本1.03,2000年12月6日)中找到。
以与上文参考目录条目400所描述的方式类似的方式,目录条目450的值可以指示数据对象是否已经被删除。在一个实施例中,目录条目记录的第一字节可以被设置为指示目录条目记录未在使用中(即,一个扇区内的一个槽(slot)是否可用)的默认值。在一个实施例中,该默认值可以是十六进制值E5h。如下文进一步详细描述的,一个扇区中的一个槽的第一字节可以被用来确定一个槽是否是空闲的,以及是否可以以原子方式执行重命名操作。
如上文所描述的,操作系统108和/或文件系统驱动器206可以被配置成将数据存储到存储设备,诸如根据通过一个文件系统规范定义的卷的存储设备118。在一个实施例中,操作系统108和/或文件系统驱动器206可以被配置成分配簇、使簇解除分配、创建数据对象、删除数据对象和/或重命名数据对象。如上文所描述的,操作系统108和/或文件系统驱动器206可以被配置成基于由一个或多个应用所接收的指令来导致将数据存储到根据一个卷的存储设备。在一个实施例中,操作系统108和/或文件系统驱动器206可以被配置成根据本文中所描述的技术中的一个或多个执行重命名操作。另外,操作系统108和/或文件系统驱动器206还可以被配置成检测存储设备(诸如,存储设备118)并且纠正错误。操作系统108和/或文件系统驱动器206可以定位错误的一种方式是通过将卷分配位映射与分派到文件系统中的文件的磁盘扇区进行比较。fsck是Linux中可以被用来校验和可选择地修复根据一个文件系统定义的卷的可用的命令。chkdsk是操作系统中可以被用来校验和可选地修复根据一个文件系统定义的卷的可用的命令。如下文进一步详细描述的,操作系统108和/或文件系统驱动器206可以根据本文中所描述的技术中的一个或多个来定位错误和纠正错误。
图5是例示重命名数据对象的实施例的概念图。在图5中所例示的实施例中,用户将文件“PIC_A.JPG”重命名为“XMAS_VACATION.JPG”,且随后将重命名的文件“XMAS_VACATION.JPG”从目录“VACATIONS”移动到目录“HOLIDAYS”。如上文描述的,将文件从一个目录移动到另一目录可以被认为是重命名操作。图6是例示将文件从“PIC_A.JPG”重命名为“XMAS_VACATION.JPG”如何会导致在目录“VACATIONS”中创建附加目录条目的一个实施例。也就是说,在图6的实施例中,将文件从“PIC_A.JPG”重命名为“XMAS_VACATION.JPG”导致要求附加的长条目来包含文件名称。如上文描述的,改变附加目录条目的数目在一些情况下是原子的,以及在其他情况下可以是非原子的。图8是例示将文件“XMAS_VACATION.JPG”从目录“VACATIONS”移动到目录“HOLIDAYS”如何会导致在目录“HOLIDAYS”中创建附加目录条目的一个实施例的概念图。如上文所描述的,将文件从一个目录移动到另一目录可以是非原子的。应注意,参考图6和图8,目录条目通常可以对应于根据FAT12文件系统、FAT16文件系统和FAT32文件系统所定义的目录条目。应注意,为了简洁起见,在本文中未提供对图6和图8中的目录条目中的值的完整描述。另外,应注意,本文中所描述的技术可以可适用于exFAT文件系统,并且通常可以可适用于重命名操作会改变用来描述数据对象的存储器单元的数目的文件系统。
图7A-图7B例示了当将文件从“PIC_A.JPG”重命名为“XMAS_VACATION.JPG”时会如何修改簇(例如,对应于一个目录表的簇)中的扇区的实施例。图9例示了当将文件“XMAS_VACATION.JPG”从目录“VACATIONS”移动到目录“HOLIDAYS”时会如何修改簇中的扇区的一个实施例。在图7A-图7B和图9中所例示的实施例中,每个扇区是512字节且在逻辑上被分区成十六个32字节槽。应注意,在其他实施例中,可以使用其他扇区大小和槽大小。在图7A所例示的实施例中,一个附加的长条目以原子方式添加到一个目录表。在图7B所例示的实施例中,一个附加的长条目以非原子方式添加到一个目录表。在图9所例示的实施例中,多个目录条目以非原子方式添加到一个目录表。
参考图7A-图7B所例示的实施例,是否可以以原子方式执行重命名操作可以基于一个扇区中的槽的可用性。参考图7A-图7B的顶部处的扇区1,用于“PIC_A.JPG”的目录条目使用扇区1的槽0至槽15中的槽1和槽2。除了槽1和槽2以外的槽(例如,槽0和槽3-槽15)可以在使用中或不在使用中(即,可用的或空闲的)。如上文参考图4A-图4B所描述的,默认值(例如,E5h)可以指示一个先前的目录条目已经被删除,且使得一个对应的槽是可用的。应注意,在一些文件系统中,默认值可以被存储为一个槽的第一字节。因此,文件系统驱动器206能够通过读槽的第一字节的值来确定扇区中的槽是否是可用的。应注意,在一些文件系统中,一个特定的默认值(例如,00h)可以指示扇区(例如,直到簇的最后一个扇区)中的所有随后的槽是可用的。因此,在一个实施例中,文件系统驱动器206可以通过读一个扇区中的槽的一个或多个字节值来确定是否能够以原子方式执行重命名操作。也就是说,文件系统驱动器206可以读一个或多个槽的字节值、确定一个扇区中的槽是否是可用的,以及确定可用的槽是否能够容纳附加目录条目。
在图7A-图7B中的实施例中,为了以原子方式执行重命名操作,需要扇区1中的三个可用的连续的槽。因此,文件系统驱动器206可以首选确定槽0或槽3(它们邻近用于“PIC_A.JPG”的目录条目的槽)中的任一个是否是可用的。在图7A所例示的实施例中,文件系统驱动器206确定槽0是不可用的以及槽3是可用的。在此情况下,文件系统驱动器206可以使用可用的槽3以及槽1和槽2(即,在重命名之前用于“PIC_A.JPG”目录条目的槽)用于“XMAS_VACATION.JPG”的目录条目,且这样可以以原子方式(即,通过重写扇区1中的数据)执行重命名操作。应注意,如果槽0和槽3不是可用的,如果扇区1中的三个连续槽是可用的(例如,槽12-槽14)(这可以通过读相应的字节值(例如,读连续槽中的三个E5h字节值或读槽14之前的一个槽中的一个00h字节值)来确定),则可以原子方式执行重命名操作。应注意,在一些实施例中,文件系统206可以被配置成只要可能就以原子方式执行重命名操作。然而,应注意,在一些实施例中,尽管可以以原子方式执行重命名操作,但是文件系统206可以被配置成以非原子方式执行重命名操作。例如,文件系统206可以确定一个扇区中仅一个槽可用,并且随后要求附加目录条目的重命名操作对于特定数据对象是可能的,且这样可以将目录条目写到包括更多可用槽的扇区,以避免将来的非原子重命名操作。
在图7B所例示的实施例中,文件系统驱动器206可以确定用于“XMAS_VACATION.JPG”的目录条目将被写到扇区2中的槽11至槽13,且这样,将以非原子方式执行重命名操作(即,扇区1和扇区2要求改变数据值)。如图7B中例示的,作为重命名操作的最终结果,扇区1中的槽1和槽2(即,在重命名操作之前用于“PIC_A.JPG”目录条目的槽)将被标记为空闲的(例如,每个槽的第一字节值都被改变为E5h)。类似地,参考图9,文件系统驱动器206可以确定用于“XMAS_VACATION.JPG”的目录条目将被写到扇区63中的槽12到槽14,且这样,以原子方式执行重命名操作,其中目录条目将被写到扇区63中的槽12到槽14,并且扇区1中的槽1到槽3将被标记为空闲的。
如上文所描述的,在一些情况下,重命名操作期间的故障可能导致正被重命名的数据对象的丢失(或潜在地导致数据对象的重复),这可能导致文件系统损坏和/或数据丢失。参考图7B和图9,以非原子方式执行的每个重命名操作要求将起始扇区中的槽标记为空闲的,且将目录条目写到目标扇区中的槽。在一个实施例中,为了在写扇区之间发生故障的情况下避免使得一个卷具有指向相同簇的两个目录条目组(即,有效地交联,这可能在一些情况下导致卷的灾难性故障),文件系统驱动器206可以被配置成将起始扇区中的槽标记为空闲的,之后将目录条目写到目标扇区中的槽。在此情况下,如果发生故障,则起始扇区中的槽可能被标记为空闲的,并且目录条目尚未被写到目标扇区中的槽。将起始扇区中的槽标记为空闲的而不将目录条目写到目标扇区中的槽可能导致重命名的数据对象完全丢失并且导致其簇丢失。
在一个实施例中,文件系统驱动器206可以被配置成登记非原子重命名操作。文件系统206可以被配置成以如下方式来登记非原子重命名操作:使得文件系统驱动器206在发生导致起始扇区中的槽被标记为空闲的而未将目录条目写到目标扇区中的槽的故障的情况下能够恢复数据对象。图10A-图10B是例示根据本公开内容的一个或多个技术所生成的重命名日志的实施例的概念图。图10A中所例示的重命名日志对应于如图7A中所例示的以原子方式执行将“PIC_A.JPG”重命名为“XMAS_VACATION.JPG.”的重命名操作的实施例,且图10B中所例示的重命名日志对应于如图7B中所例示的以非原子方式执行将“PIC_A.JPG”重命名为“XMAS_VACATION.JPG.”的重命名操作的实施例。在图10A-图10B的两个实施例中,如图9中所例示的以非原子方式执行将“XMAS_VACATION.JPG”从目录“VACATIONS”移动到目录“HOLIDAYS”的重命名操作。以此方式,在一个实施例中,文件系统驱动器206可以被配置成仅为以非原子方式执行的重命名操作创建日志条目。
参考图10A-图10B,每个日志条目包括如下内容:起始路径、起始扇区位置(被指定为一个偏移槽,且在图10A-图10B的实施例中被指定为多个槽)、目标路径、目标扇区位置和指示重命名操作是否完成的标志。应注意,在其他实施例中,重命名日志可以包括附加信息,诸如定时数据等。另外,在一些情况下,重命名日志的格式可以是基于文件系统的定义的日志格式。在图10A-图10B中例示的实施例中,将“XMAS_VACATION.JPG”从目录“VACATIONS”移动到目录“HOLIDAYS”的重命名操作被指示为未完成。如上文所描述的,文件系统驱动器206可以被配置成将起始扇区中的槽标记为空闲的,之后将目录条目写到目标扇区中的槽。因此,图10A-图10B中所例示的每个日志都可以表示一个卷状态,其中在将“XMAS_VACATION.JPG”从目录“VACATIONS”移动到目录“HOLIDAYS”的重命名操作期间发生故障,该故障导致扇区1中的槽1到槽3被标记为空闲的,而目录条目尚未被写到目标扇区中的扇区63中的槽12到槽14。
在一个实施例中,文件系统驱动器206可以被配置成恢复重命名操作并且在随后安装一个卷时完成重命名操作。也就是说,在随后安装一个卷时,文件系统驱动器206可以读日志条目,且确定重命名操作是否完成。对于指示重命名操作未完成的日志条目,文件系统驱动器206可以从起始扇区中的槽读数据,从目标扇区中的槽读数据,且确定目录条目是否已经丢失。在可以恢复目录条目中所包括的数据的情况下,文件系统驱动器206可以完成重命名操作。例如,在图10A-图10B的实施例中,文件系统驱动器206可以将可用的目录条目写到扇区63中的槽12到槽14,以完成重命名操作。另外,在目录条目中所包括的数据不能够被恢复的情况下,文件系统驱动器206可以尝试撤销重命名操作。例如,在图10A-图10B的实施例中,文件系统驱动器206可以将扇区1中的槽1到槽3标记为在使用中,且在一些情况下,有效地将卷返回到所尝试的失败的重命名操作之前的状态。以此方式,文件系统驱动器206可以被配置成选择性地登记特定类型的重命名操作,且可以在维持可接受的系统性能的同时减轻潜在的数据丢失和/或文件系统损坏。
应注意,尽管关于要求附加目录条目的重命名操作描述了图10A-图10B中所例示的实施例,但是本文中所描述的技术可以被用于减少所要求的目录条目的数目的重命名操作。例如,长文件名称可以包括跨越两个扇区的目录条目,且可以被重命名为具有能够装配在一个扇区中的较少的目录条目的较短名称。在此情况下,文件系统驱动器206可以被配置成首先写更新的目标扇区(即,所得到的单个扇区),并且利用屏障操作(barrieroperation)将其刷写(flush)到磁盘。然后,文件系统驱动器206可以之后写更新的起始扇区(即,具有所得到的被标记为空闲的槽的扇区)。在此情况下,如果第二写操作(将起始扇区中的槽写为空闲的)不发生(例如,由于功率故障或拔掉插头),则对应于部分旧长名称的目录条目被留在槽上。应注意,在此情况下留下目录条目可能是不重要的。也就是说,当下次访问卷(或目录)读这些目录条目时,可以删除它们。在一些情况下,这样的部分名称被称为“虚假(ghost)名称条目”,且在FAT文件系统标准中,指定这样的部分名称是无意义的并且可以被忽略。在一些实施例中,文件系统驱动器206可以在它遇到虚假名称条目的槽时将虚假名称条目的槽标记为空闲的。在一些实施例中,文件系统驱动器206可以创建用于减少所要求的目录条目的数目的非原子重命名操作的日志条目。在一些实施例中,文件系统驱动器206可以不创建用于减少所要求的目录条目的数目的非原子重命名操作的日志条目。也就是说,文件系统驱动器206可以确定非原子重命名操作期间的故障是否可能具有重大后果并且可以相应地选择性地登记所述操作。
如上文描述的,重命名日志可以作为文件存储在卷中。在一些情况下,包括重命名日志的卷可以被安装到不识别重命名日志文件的设备(例如,具有多个驱动器和/或一个操作系统)。在一些情况下,设备可以修改和/或删除重命名日志文件。参考图10A-图10B,示例重命名日志包括一个校验和值。文件系统驱动器206可以被配置成使用校验和值来确定重命名日志是否被修改(例如,在被安装到一个中间设备时)。在一个实施例中,文件系统驱动器206可以被配置成忽略修改的重命名日志并且清除它的内容。在一个实施例中,文件系统驱动器206可以被配置成例如如果它正在尝试恢复数据对象,则还原修改的重命名日志。如果重命名日志被删除,则文件系统驱动器206可以简单地创建新日志。
图11是例示根据本公开内容的一个或多个技术重命名数据对象的一个实施例的流程图。应注意,尽管关于文件系统驱动器206描述了流程图1100,但是可以通过计算设备100及其部件的任何组合来执行图11中所例示的技术。应注意,流程图1100对应于被确定为在发生故障时具有重大后果的非原子重命名操作。也就是说,关于图11的重命名操作可以包括关于图5所描述的那些重命名操作,且可以根据另一进程处理减少所要求的目录条目的数目的非原子重命名操作,如上文描述的。
文件系统驱动器206a接收重命名操作(1102)。文件系统驱动器206确定是否能够以原子方式执行重命名操作(1104)。确定是否能够以原子方式执行重命名操作可以包括读扇区中的槽的字节值,如上文描述的。文件系统驱动器206确定是否将以原子方式执行重命名操作(1106)。如上文描述的,在一些情况下,能够以原子方式执行的重命名操作实际上可能不以原子方式执行,例如,由于优化。在确定将以原子方式执行重命名操作时,文件系统驱动器206重写起始扇区中的数据(1108)并且完成重命名操作。
在确定将以非原子方式执行重命名操作时,文件系统驱动器206创建日志条目(1110)。应注意,在一些情况下,创建日志条目可以包括创建日志文件。如上文所描述的,日志可以包括目标路径、目标扇区位置和指示重命名操作是否完成的标志。文件系统驱动器206将起始扇区中的目录条目标记为空闲的(1112),且随后,将目录条目写在目标扇区中(1114)。文件系统驱动器206更新日志条目,以指示重命名操作已经完成(1116)。计算设备100和/或其部件可以执行本文中所描述的技术,以允许计算机可读介质(诸如,系统存储器104和/或存储设备118)的更多故障安全(fail-safe)操作。以此方式,计算设备100表示被配置成实现存储设备的故障安全操作的设备的一个实施例。
在一个或多个实施例中,可以以硬件、软件、固件或其任何组合实施所描述的功能。如果以软件实施,则所述功能可以作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质传输,并且通过基于硬件的处理单元执行。计算可读介质可以包括对应于有形介质(诸如,数据存储介质)的计算机可读存储介质,或可以包括具有便于计算机程序从一个地方转移到另一地方的任何介质(例如,根据通信协议)的通信介质。以此方式,计算机可读介质通常可以对应于(1)非暂时性有形计算机存储介质或(2)通信介质,诸如信号或载波。数据存储介质可以是能够通过一个或多个计算机或一个或多个处理器访问以检索用于实施本公开内容中所描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
通过实施例而非限制的方式,这样的计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储设备、磁盘存储设备或其他磁性存储设备、闪存或可以被用来以指令或数据结构的形式存储所需的程序代码并且可以被计算机访问的任何其他介质。此外,任何连接被恰当地称为计算机可读介质。例如,如果使用同轴电缆、纤维光缆、双绞线、数字用户线路(DSL)或无线技术(诸如,红外线、无线电和微波)从网站、服务器或其他远程源传输指令,则同轴电缆、纤维光缆、双绞线、DSL或无线技术(诸如,红外线、无线电和微波)被包括在介质的定义中。然而,应理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂态介质,但是代替地被指向非暂态的、有形的存储介质。如在本文中使用的磁盘和光盘包括压缩光盘(CD)、激光光盘、光学光盘、数字通用光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘使用激光来光学地复制数据。以上的组合也应该被包括在计算机可读介质的范围内。
指令可以由一个或多个处理器(诸如,一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其他等同的集成或分立逻辑电路系统)执行。因此,如本文中所使用的术语“处理器”可以指任何前述结构或适合于实施本文中所描述的技术的任何其他结构。此外,在一些方面,可以将本文中所描述的功能设置供在专用硬件模块和/或软件模块内。此外,可以在一个或多个电路或逻辑元件中完全实施所述技术。
可以在多种设备或装置中实施本公开内容的技术,所述设备或装置包括无线手持机、集成电路(IC)或一组IC(例如,芯片组)。在本公开内容中描述了多种部件、模块或单元以强调被配置成执行所公开的技术的设备的功能方面,但是不一定需要通过不同的硬件单元实现。而是,如上文描述的,多种单元可以被组合到一个编码解码器硬件单元中或由可互操作硬件单元的集合连同合适的软件和/或固件提供,所述可互操作硬件单元的集合包括一个或多个如上文描述的处理器。
已描述了多个实施例。这些和其他实施例在所附权利要求的范围内。
Claims (20)
1.一种对数据对象进行重命名的方法,该方法包括:
确定是否能够以原子方式执行重命名操作;
仅当将以非原子方式执行该重命名操作时才为该重命名操作创建一个日志条目;以及
在完成该重命名操作时更新该日志条目。
2.根据权利要求1所述的方法,其中确定是否能够以原子方式执行重命名操作包括读起始扇区中的槽的字节值。
3.根据权利要求1所述的方法,其中在完成该重命名操作时更新该日志条目包括更新一个标志。
4.根据权利要求1所述的方法,其中仅当将以非原子方式执行该重命名操作时才为该重命名操作创建一个日志条目还包括仅当该重命名操作要求一个或多个附加目录条目时才创建一个日志条目。
5.根据权利要求1所述的方法,其中仅当将以非原子方式执行该重命名操作时才为该重命名操作创建一个日志条目还包括仅当该重命名操作要求阈值数目的附加目录条目时才创建一个日志条目。
6.根据权利要求1所述的方法,其中一个数据对象包括一个文件。
7.根据权利要求1所述的方法,其中该数据对象被包括在根据exFAT文件系统所定义的卷中。
8.根据权利要求1所述的方法,其中该数据对象被包括在根据FAT12文件系统、FAT16文件系统或FAT32文件系统中的一个所定义的卷中。
9.一种设备,该设备包括一个或多个处理器,所述一个或多个处理器被配置成:
确定是否能够以原子方式执行重命名操作;
仅当将以非原子方式执行该重命名操作时才为该重命名操作创建一个日志条目;以及
在完成该重命名操作时更新该日志条目。
10.根据权利要求9所述的设备,其中确定是否能够以原子方式执行重命名操作包括读起始扇区中的槽的字节值。
11.根据权利要求9所述的设备,其中在完成该重命名操作时更新该日志条目包括更新一个标志。
12.根据权利要求9所述的设备,其中仅当将以非原子方式执行该重命名操作时才为该重命名操作创建一个日志条目还包括仅当该重命名操作要求一个或多个附加目录条目时才创建一个日志条目。
13.根据权利要求9所述的设备,其中仅当将以非原子方式执行该重命名操作时才为该重命名操作创建一个日志条目还包括仅当该重命名操作要求阈值数目的附加目录条目时才创建一个日志条目。
14.根据权利要求9所述的设备,其中该数据对象被包括在根据exFAT文件系统所定义的卷中。
15.根据权利要求9所述的设备,其中该数据对象被包括在根据FAT12文件系统、FAT16文件系统或FAT32文件系统中的一个所定义的卷中。
16.一种非暂时性计算机可读存储介质,包括存储在该非暂时性计算机可读存储介质上的指令,在执行所述指令时,所述指令导致设备的一个或多个处理器:
确定是否能够以原子方式执行重命名操作;
仅当将以非原子方式执行该重命名操作时才为该重命名操作创建一个日志条目;以及
在完成该重命名操作时更新该日志条目。
17.根据权利要求16所述的非暂时性计算机可读存储介质,其中确定是否能够以原子方式执行重命名操作包括读起始扇区中的槽的字节值。
18.根据权利要求17所述的非暂时性计算机可读存储介质,其中在完成该重命名操作时更新该日志条目包括更新一个标志。
19.根据权利要求18所述的非暂时性计算机可读存储介质,其中仅当将以非原子方式执行该重命名操作时才为该重命名操作创建一个日志条目还包括仅当该重命名操作要求阈值数目的附加目录条目时才创建一个日志条目。
20.根据权利要求16所述的非暂时性计算机可读存储介质,其中该数据对象是被包括在根据FAT12文件系统、FAT16文件系统或FAT32文件系统中的一个所定义的卷中的文件。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662359562P | 2016-07-07 | 2016-07-07 | |
US62/359,562 | 2016-07-07 | ||
US15/641,922 US10614044B2 (en) | 2016-07-07 | 2017-07-05 | Systems and methods for performing data object renaming operations |
US15/641,922 | 2017-07-05 | ||
PCT/US2017/040967 WO2018009710A1 (en) | 2016-07-07 | 2017-07-06 | Systems and methods for performing data object renaming operations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109690523A true CN109690523A (zh) | 2019-04-26 |
Family
ID=60910442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780054792.2A Pending CN109690523A (zh) | 2016-07-07 | 2017-07-06 | 用于执行数据对象重命名操作的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10614044B2 (zh) |
EP (1) | EP3482287A4 (zh) |
CN (1) | CN109690523A (zh) |
WO (1) | WO2018009710A1 (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7702659B2 (en) | 2003-03-27 | 2010-04-20 | Sandisk Il Ltd. | Robust, self-maintaining file system |
US7349926B2 (en) * | 2004-03-30 | 2008-03-25 | International Business Machines Corporation | Atomic renaming and moving of data files while permitting lock-free look-ups |
US8108429B2 (en) | 2004-05-07 | 2012-01-31 | Quest Software, Inc. | System for moving real-time data events across a plurality of devices in a network for simultaneous data protection, replication, and access services |
WO2006008911A1 (ja) | 2004-07-20 | 2006-01-26 | Konica Minolta Photo Imaging, Inc. | 情報記録装置、情報記録プログラム及び記録媒体 |
US8321439B2 (en) * | 2004-12-17 | 2012-11-27 | Microsoft Corporation | Quick filename lookup using name hash |
US7529780B1 (en) * | 2005-12-30 | 2009-05-05 | Google Inc. | Conflict management during data object synchronization between client and server |
US8131723B2 (en) | 2007-03-30 | 2012-03-06 | Quest Software, Inc. | Recovering a file system to any point-in-time in the past with guaranteed structure, content consistency and integrity |
US8589347B2 (en) * | 2010-05-28 | 2013-11-19 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US10198452B2 (en) | 2014-05-30 | 2019-02-05 | Apple Inc. | Document tracking for safe save operations |
US10691553B2 (en) * | 2015-12-16 | 2020-06-23 | Netapp, Inc. | Persistent memory based distributed-journal file system |
-
2017
- 2017-07-05 US US15/641,922 patent/US10614044B2/en active Active
- 2017-07-06 EP EP17824918.1A patent/EP3482287A4/en not_active Ceased
- 2017-07-06 CN CN201780054792.2A patent/CN109690523A/zh active Pending
- 2017-07-06 WO PCT/US2017/040967 patent/WO2018009710A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
US10614044B2 (en) | 2020-04-07 |
EP3482287A4 (en) | 2020-01-22 |
WO2018009710A1 (en) | 2018-01-11 |
US20180011872A1 (en) | 2018-01-11 |
EP3482287A1 (en) | 2019-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10489059B2 (en) | Tier-optimized write scheme | |
US10013166B2 (en) | Virtual tape library system | |
US9015209B2 (en) | Download management of discardable files | |
US8463802B2 (en) | Card-based management of discardable files | |
US8417907B2 (en) | Synchronizing snapshot volumes across hosts | |
US9928210B1 (en) | Constrained backup image defragmentation optimization within deduplication system | |
US11176100B2 (en) | Systems and methods for fail-safe operations of storage devices | |
US20140173226A1 (en) | Logical object deletion | |
CN109918352B (zh) | 存储器系统和存储数据的方法 | |
CA2893594C (en) | Virtual tape library system | |
CN112800007A (zh) | 适用于fat32文件系统的目录项扩展方法和系统 | |
US9020993B2 (en) | Download management of discardable files | |
CN114327292B (zh) | 文件管理方法、系统、电子设备和存储介质 | |
CN109690523A (zh) | 用于执行数据对象重命名操作的系统和方法 | |
CN109478181A (zh) | 用于使得能够修改文件系统卷内的多个数据对象的系统和方法 | |
US20230342293A1 (en) | Method and system for in-memory metadata reduction in cloud storage system | |
WO2015102670A1 (en) | Systems and methods for fail-safe operations of storage devices | |
Khan | Identifying factors affecting deleted file persistence through empirical study and analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190426 |