CN110312986B - 用于在固态设备上存储数据的流的机会性使用 - Google Patents
用于在固态设备上存储数据的流的机会性使用 Download PDFInfo
- Publication number
- CN110312986B CN110312986B CN201880011893.6A CN201880011893A CN110312986B CN 110312986 B CN110312986 B CN 110312986B CN 201880011893 A CN201880011893 A CN 201880011893A CN 110312986 B CN110312986 B CN 110312986B
- Authority
- CN
- China
- Prior art keywords
- stream
- file
- erase blocks
- data associated
- data
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
-
- 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/1724—Details of de-fragmentation performed by the file system
-
- 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/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
可以通过基于写入给定流的数据的大小执行流式和非流式写入的组合来优化流式传输功能在存储设备上的使用。例如,一种方法可以包括将与多个文件相关联的数据写入第一组一个或多个擦除块,确定第一组一个或多个擦除块中与多个文件中的给定文件相关联的数据量已经达到阈值,并且将与给定文件相关联的数据从第一组一个或多个擦除块移动到流,流包括存储设备上与第一组一个或多个擦除块不同的第二组一个或多个擦除块。
Description
背景技术
诸如闪存等的固态设备(SSD)提供优于传统硬盘驱动器(HDD)的优点。例如,SSD通常比HDD硬盘更快,更安静,功耗更低。然而,还存在与SSD相关的缺点。例如,SSD在某种意义上是有限的,即数据只能以块的形式从存储设备中擦除,也被称为“擦除块”。除了用户希望擦除的数据之外,这些块还可以包含用户希望保持存储在SSD上的重要数据。为了擦除不需要的数据,SSD必须执行被称为“垃圾收集”的过程以便在SSD上移动数据,以便不会意外地删除重要文件。然而,该过程可能导致被称为“写入放大”的效果,其中相同的数据被多次写入SSD上的物理介质,从而缩短了SSD的寿命。流式传输是一种过程,通过该过程,存储在SSD上的数据可以基于例如流中的所有数据的估计删除时间,在包括一个或多个擦除块的流中被一起分组。通过将可能一起删除的数据存储在同一擦除块或同一组擦除块(即,同一流)中,可以减轻与SSD存储相关联的很多问题。
发明内容
本文中公开了用于通过基于写入流的数据的大小执行流式和非流式写入的组合来优化流的使用的方法和系统。例如,一种方法可以包括将与多个文件相关联的数据写入与流不相关的第一组一个或多个擦除块,确定第一组一个或多个擦除块中与多个文件中的给定文件相关联的数据量已经达到阈值,并且将与给定文件相关联的数据从第一组一个或多个擦除块移动到流,流包括与第一组一个或多个擦除块不同的第二组一个或多个擦除块,第一组一个或多个擦除块和第二组一个或多个擦除块位于存储设备上。在一个实施例中,一种与计算设备相关联的文件系统可以被配置为将数据复制到主机存储器,将数据重写到存储设备上的流,并且更新由文件系统保持的元数据以考虑数据的新位置。在第二实施例中,存储设备可以被配置为接收与流相关联的流标识符,将与给定文件相关联的数据从第一组一个或多个擦除块复制到流,并且更新由存储设备保持的元数据以考虑数据在存储设备上的新位置。
附图说明
当结合附图阅读时,可以更好地理解前述“发明内容”以及以下“具体实施方式”。为了说明本公开,示出了本公开的各个方面。然而,本公开不限于所讨论的具体方面。在附图中:
图1示出了其中可以采用本文中公开的各方面的示例计算设备;
图2示出了示例固态设备(SSD);
图3A-3D示出了在SSD上执行的垃圾收集过程;
图4示出了在设备上(例如,在SSD上)流式传输多个擦除块的过程;
图5示出了用于在设备上实现流式传输功能的示例架构;
图6示出了用于优化可用流在存储设备上的使用的示例方法;
图7示出了以非流方式将与多个文件相关联的数据写入擦除块的方法;
图8示出了以非流方式将与多个文件相关联的数据连续写入第二擦除块;
图9示出了将与给定文件相关联的数据从一组一个或多个擦除块移动到流的方法;
图10示出了将与给定文件相关联的附加数据写入流的方法;
图11示出了响应于确定流已满来以非流方式写入与给定文件相关联的数据的方法;
图12示出了实现用于优化可用流在存储设备上的使用的方法的文件系统;以及
图13示出了实现用于优化可用流在存储设备上的使用的方法的存储设备。
具体实施方式
本文中公开了用于基于例如与给定文件相关联的数据量和存储设备上的可用流的大小来优化写入到存储设备的流的数量的方法和系统。例如,一种方法可以包括将与多个文件相关联的数据写入第一组一个或多个擦除块,确定第一组一个或多个擦除块中与多个文件中的给定文件相关联的数据量已经达到阈值,并且将与给定文件相关联的数据从第一组一个或多个擦除块移动到流,流包括存储设备上与第一组一个或多个擦除块不同的第二组一个或多个擦除块。
图1示出了其中可以实现或实施本文中公开的技术和解决方案的示例计算设备112。计算设备112可以是各种不同类型的计算设备中的任何一种,包括但不限于计算机、个人计算机、服务器、便携式计算机、移动计算机、可穿戴计算机、膝上型计算机、平板电脑、个人数字助理、智能电话、数码相机或自动执行计算的任何其他机器。
计算设备112包括处理单元114、系统存储器116和系统总线118。系统总线118将系统组件(包括但不限于系统存储器116)耦合到处理单元114。处理单元114可以是各种可用处理器中的任何一种。双微处理器和其他多处理器架构也可以用作处理单元114。
系统总线118可以是若干类型的总线结构中的任何一种,包括使用各种可用总线架构的存储器总线或存储器控制器、外围总线或外部总线、和/或本地总线,总线架构包括但不限于工业标准架构(ISA)、微通道架构(MSA)、扩展ISA(EISA)、智能驱动电子设备(IDE)、VESA本地总线(VLB)、外围组件互连(PCI)、卡总线、通用串行总线(USB)、高级图形端口(AGP)、个人计算机存储卡国际协会总线(PCMCIA)、Firewire(IEEE 1394)和小型计算机系统接口(SCSI)。
系统存储器116包括易失性存储器120和非易失性存储器122。基本输入/输出系统(BIOS)(包含用于在计算设备112内的元件之间传送信息的基本例程,诸如在启动期间)被存储在非易失性存储器122中。作为说明而非限制,非易失性存储器122可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除ROM(EEPROM)或闪存。易失性存储器120包括随机存取存储器(RAM),RAM用作外部高速缓冲存储器。作为说明而非限制,RAM以很多形式可用,诸如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)和直接Rambus RAM(DRRAM)。
计算设备112还可以包括可移动/不可移动、易失性/非易失性计算机可读存储介质。图1示出了例如辅助存储器124。辅助存储器124包括但不限于诸如磁盘驱动器、软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、LS-100驱动器、存储卡(诸如SD存储卡)或记忆棒之类设备。另外,辅助存储器124可以单独地或与其他存储介质组合地包括存储介质,包括但不限于光盘驱动器,诸如光盘ROM设备(CD-ROM)、CD可记录驱动器(CD-R驱动器)、CD可重写驱动器(CD-RW驱动器)或数字通用磁盘ROM驱动器(DVD-ROM)。为了便于辅助存储器124与系统总线118的连接,通常使用可移动或不可移动接口,诸如接口126。
图1进一步描绘了用作用户与计算设备112中描述的基本计算机资源之间的中介的软件。这种软件包括操作系统128。可以存储在辅助存储器124上的操作系统128用于控制和分配计算设备112的资源。应用130使用操作系统128通过程序模块132和存储在系统存储器116中或在辅助存储器124上的程序数据134利用资源的管理。应当理解,本文中描述的各方面可以使用各种操作系统或操作系统的组合来实现。如进一步所示,操作系统128包括文件系统129,文件系统129用于在辅助存储器124上存储和组织计算机文件及其包含的数据,以使查找和访问它们变得容易。
用户可以通过输入设备136向计算设备112中输入命令或信息。输入设备136包括但不限于指示设备,诸如鼠标、轨迹球、触控笔、触摸板、键盘、麦克风、操纵杆、游戏手柄、卫星天线、扫描仪、电视调谐卡、数码相机、数码摄像机、网络摄像头等。这些和其他输入设备经由接口端口138通过系统总线118连接到处理单元114。接口端口138包括例如串行端口、并行端口、游戏端口和通用串行总线(USB)。输出设备140使用与输入设备136相同类型的端口中的某种端口。因此,例如,USB端口可以被用于向计算设备112提供输入,并且从计算设备112向输出设备140输出信息。提供输出适配器142以说明存在一些输出设备140,例如显示器、扬声器和打印机、以及需要特殊适配器的其他输出设备140。作为说明而非限制,输出适配器142包括提供输出设备140与系统总线118之间的连接手段的视频卡和声卡。应当注意,其他设备和/或设备系统提供输入和输出能力两者,诸如远程计算机144。
计算设备112可以使用到一个或多个远程计算设备(诸如远程计算设备144)的逻辑连接在联网环境中操作。远程计算设备144可以是个人计算机、服务器、路由器、网络PC、工作站、基于微处理器的设备、对等设备、与计算设备112相同的另一计算设备等,并且通常包括关于计算设备112描述的很多或所有元件。为了简洁起见,仅用远程计算设备144示出了存储器存储设备146。远程计算设备144通过网络接口148逻辑连接到计算设备112,并且然后经由通信连接150被物理连接。网络接口148包括诸如局域网(LAN)和广域网(WAN)等通信网络。LAN技术包括光纤分布式数据接口(FDDI)、铜分布式数据接口(CDDI)、以太网、令牌环等。WAN技术包括但不限于点对点链路、诸如综合业务数字网络(ISDN)及其变体等电路交换网络、分组交换网络和数字用户线(DSL)。
通信连接150是指用于将网络接口148连接到总线118的硬件/软件。虽然为了说明清楚而将通信连接150示出为在计算设备112内部,但是它也可以在计算设备112外部。仅出于示例性目的,到网络接口148的连接所需要的硬件/软件包括内部和外部技术,诸如调制解调器(包括常规电话级调制解调器、电缆调制解调器和DSL调制解调器)、ISDN适配器和以太网卡。
如本文中使用的,术语“组件”、“系统”、“模块”等旨在指代与计算机相关的实体,不管是硬件、硬件和软件的组合、软件还是执行软件。例如,组件可以是但不限于是在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。作为说明,在服务器上运行的应用和服务器都可以是组件。一个或多个组件可以驻留在进程和/或执行线程内,并且组件可以定位于一个计算机上和/或分布在两个或更多个计算机之间。
图2示出了示例固态设备(SSD)200。图2所示的SSD可以是例如NAND闪存设备。例如,SSD 200可以用于实现图1中所示的示例计算设备的辅助存储器124。如图所示,SSD可以包括管芯202。管芯可以表示可以独立执行命令的SSD的最小单元。虽然图2中的SSD仅包括单个管芯,但是应当理解,SSD可以包括任何数目的管芯。如图2进一步所示,每个管芯可以包括一个或多个平面204。SSD通常可以包括一个或两个平面,并且并发操作可以在每个平面上进行。然而,应当理解,SSD可以包括任何数目的平面。如图2进一步所示,每个平面204可以包括多个块206。块可以是可以被擦除的SSD的最小单元。本文中的块也可以称为“擦除块”。最后,如图2所示,每个块206可以包括多个页面208。页面可以是可以被编程的SSD的最小单元。
可以对SSD上的任何给定页面进行SSD上的编程操作,也被称为“写入”或“写入操作”。页面的大小可以是例如大约4-16KB,但是应当理解,可以使用任何大小。相反,擦除操作可以仅在块级别进行。块的大小可以是例如大约4-8MB,但是应当理解,可以使用任何大小。与SSD相关联的控制器可以使用逻辑到物理映射系统(例如,逻辑块寻址(LBA))来管理闪存并且与主机系统相连接。
SSD通常不允许更新存储在给定页面中的数据。当新的或已更新的数据被保存到SSD时,控制器可以被配置为在SSD上的新位置中写入新的或已更新的数据并且更新逻辑映射以指向新的物理位置。该新位置可以是例如同一擦除块内的不同页面,如图3进一步所示。此时,旧位置的数据可能不再有效,并且可能需要在该位置可以再次被写入之前被擦除。
然而,如上所述,在不擦除同一擦除块内的所有数据的情况下,可能无法擦除旧的或无效的数据。例如,该擦除块可能包含新的或已更新的数据、以及用户可能希望保持存储在SSD上的其他数据。为了解决该问题,控制器可以被配置为将不打算删除的所有数据复制或重写到不同擦除块中的新页面。这在本文中可以被称为“垃圾收集”。新的或已更新的数据可以直接被写入新页面,或者可以跨新擦除块中的多个页面被条带化。由于SSD不能更新数据而将数据多次写入SSD的这种不期望的过程被称为写入放大,并且在下面结合图3进一步说明。写入放大在SSD存储方面存在严重问题,因为SSD只能被编程和擦除有限次数。这在本文中可以被称为SSD可以承受的编程/擦除周期的数目。
如图3A中所示,SSD可以包括两个块:块X和块Y。应当理解,虽然图3A-3D所示的SSD包括两个块,但是SSD可以包括任何数目的块。如上所述,块或“擦除块”可以包括可以被擦除的SSD的最小单元。图3A-3D中所示的块X和块Y中的每个块包括16个页面,然而,应当理解,给定块可以包括任何数目的页面。可以将数据直接写入块X或块Y上的任何一个页面。此外,可以跨与块X或块Y相关联的多个页面条带化数据。如图3A中所示,可以将数据写入与块X相关联的页面A、页面B、页面C和页面D,而块X的剩余页面可以留空(空闲)。块Y可以类似地留空。
如图3B中所示,可以由控制器经由写入操作在稍后的时间将附加数据写入块X。同样,该写入操作可以包括将数据直接写入块X或块Y中的任何一个页面,或者跨多个页面条带化数据。例如,数据可以被直接写入与块X相关的页面E、页面F、页面G、页面H、页面I、页面J、页面K和页面L或跨这些页面被条带化。此外,用户或应用可能希望更新存储在图3A的A-D页面的信息。然而,如上所述,SSD可能不允许更新数据。因此,为了存储新数据,与SSD相关联的控制器可以被配置为对块X中的附加页面执行表示对页面A-D的更新的写入操作。如图3B中所示,这些页面可以被标记为页面A'、页面B'、页面C'和页面D'。存储在页面A'-D'处的数据可以表示对存储在页面A-D处的数据的任何次要或主要更新。
如图3C中进一步所示,为了对存储在页面A-D处的数据执行删除操作,并且如上面进一步讨论的,可能需要擦除整个块X。与SSD相关联的控制器可以被配置为将用户不希望删除的块X上的重要数据复制或重写到不同的擦除块,例如块Y。如图3C中所示,控制器可以被配置为将存储在页面E-L处的数据以及存储在块X的页面A'-D'处的数据复制到块Y。
如上所述,将数据“更新”到新位置的过程可以称为“垃圾收集”。如图3中所示的垃圾收集过程可以解决在保持存储在设备上的重要数据的同时擦除不需要的数据的问题。然而,这以在同一SSD上多次复制和重写单条数据为代价。例如,SSD的块X和块Y都可以包含存储在页面E-L处的数据的副本以及存储在页面A'-D'处的数据的副本。重写同一数据的多个副本的这种不期望的过程可以被称为写入放大。
最后,如图3D中所示,控制器可以被配置为擦除存储在块X处的所有数据。由于在SSD上要保留的所有重要数据已经被复制到块Y,所以可以通过控制器删除整个块X。一旦该过程完成,控制器可以被配置为将新数据写入块X中的任何页面。然而,如上所述,这种写入放大过程在SSD存储方面存在严重问题,因为SSD只能被编程和擦除有限次数。例如,在单级闪存的情况下,SSD可以被写入和擦除最多50,000-100,000次。
与SSD存储相关联的一个附加特征是存储空间的过度供应。过度供应可以被表示为闪存的物理容量与通过操作系统呈现的用户可用的逻辑容量之间的差异。在例如垃圾收集过程期间,来自过度供应的附加空间可以帮助降低控制器写入闪存时的写入放大。控制器可以使用该附加空间来跟踪非操作系统数据,例如块状态标志。过度供应可以提供减少的写入放大、增加的耐久性和增加的SSD的性能。然而,这以SSD的用户可用于存储操作的空间较少为代价。
固态设备可以支持被称为“流式传输”的功能,通过该功能,数据可以基于例如数据的估计删除时间与特定流相关联,以便减少与写入放大和过度供应相关的问题。如本文中讨论的,流可以包括一个或多个擦除块。流式传输SSD的过程可以包括,例如指示SSD将一堆数据在同一擦除块或一组擦除块组(即,在同一“流”中)关联在一起,因为很可能所有数据将被同时删除。因为将被一起删除的数据将被写入同一擦除块或一组擦除块中的页面或者跨同一擦除块或一组擦除块中的页面被条带化,所以可以减少与写入放大和过度供应相关的问题。可以进一步示出流式传输SSD的过程,如结合图4所示。
如图4中的示例所示,数据可以基于例如存储在每个擦除块处的数据的估计擦除时间,在一个或多个擦除块中被分组在一起。控制器可以组织一个或多个擦除块,使得可以一起擦除每个擦除块中的数据。基于例如一个或多个擦除块中的数据的估计删除时间来将数据组织成一个或多个擦除块在本文中可以被称为“流式传输”。如图4中所示,4个擦除块可以与流A相关联,8个擦除块可以与流B相关联,并且单个擦除块可以与流C相关联。控制器可以被配置为例如执行可以在两个月内擦除的数据到流A的所有写入操作、可以在两周内擦除的数据到流B的所有写入操作、以及可以在两天内擦除的数据到流C的所有写入操作。在另一示例中,控制器可以被配置为执行到在事件发生时可以被擦除的流A的写入操作,该事件将导致写入流A的所有数据被“更新”并且随后被标记为无效。
可以向与计算设备相关联的文件系统和存储驱动器提供对SSD的“流式传输”能力的认识,以便使得文件系统和/或应用能够利用流式传输能力以实现更高效的存储。例如,文件系统可以被配置为从应用接收第一请求,以将文件与存储设备上可用的特定流标识符相关联,拦截一个或多个后续请求以将数据写入文件,将一个或多个后续请求与流标识符相关联,并且指示与存储设备相关联的存储驱动器,以将所请求的数据写入所标识的流。文件系统还可以被配置为存储与文件相关联的元数据,元数据包括与文件相关联的流标识符。另外,文件系统可以被配置为向应用发送与流相关联的多个流参数。在将文件与流标识符相关联之前,文件系统还可以被配置为验证流标识符。
图5是示出用于实现本文中公开的流SSD功能的架构的示例组件的框图。如图所示,在一个实施例中,该架构可以包括应用502、文件系统504、存储驱动器506和存储设备508。
应用502可以被配置为通过与文件系统504通信来向设备508读取和写入文件,并且文件系统504又可以与存储驱动器506通信。为了利用对SSD上的流的写入,应用502可以向文件系统指示哪个ID与给定文件相关联。应用502可以被配置为基于例如确定可以同时删除文件的所有数据来向文件系统指示哪个ID与给定文件一起。在一个实施例中,可以使用特定流ID标记多个擦除块。例如,使用图5中所示的设备,多个擦除块可以与流A相关联,并且数据可以被直接写入给定擦除块,或者跨多个页面被条带化,该多个页面与流A中的擦除块相关联。作为另一示例,流B可以包括单个擦除块,并且数据可以被写入给定页面,或者跨多个页面被条带化,该多个页面与与流B相关联的擦除块相关联。与流A相关联的数据可以具有与与流B相关联的数据不同的估计删除时间。
文件系统504可以被配置为向应用502公开应用程序编程接口(API)。例如,经由文件系统504提供的API,应用502可以被配置为使用特定流ID标记文件。另外,经由文件系统504提供的API,应用502可以被配置为执行流管理,例如,确定可以同时写入多少流、哪些流ID可用、以及关闭给定流的能力。此外,经由文件系统504提供的API,应用502可以被配置为确定与流相关联的多个参数,例如,与流相关联的最佳写入大小。
文件系统504还可以被配置为拦截应用502对设备508中的文件的写入操作,确定文件与特定流ID相关联,以及使用流ID标记写入操作(即,I/O调用)。文件系统504还可以被配置为存储与设备508的每个文件相关联的元数据,并且进一步存储与每个文件相关联的特定流ID以及文件元数据。
存储驱动器506可以被配置为向文件系统504公开API。例如,经由存储驱动器506提供的API,文件系统504可以被配置为在存储设备508上启用流式传输功能。经由存储驱动器506提供的API,文件系统504还可以被配置为发现设备508上的现有流。经由存储驱动器506提供的API,文件系统504还可以被配置为获取来自设备的信息,例如,设备支持流的能力以及当前在设备上打开的流(如果有的话)。存储驱动器506可以被配置为与设备508通信,并且向文件系统504公开协议设备不可知接口,使得在文件系统504不知道特定设备的细节的情况下,存储驱动器506可以与设备508通信。
设备508可以包括例如SSD。图5中所示的SSD例如包括8个擦除块。数据可以单独写入给定擦除块,或者可以跨多个擦除块被条带化,以便最大化SSD上的吞吐量。还如508中所示,并且如本文中进一步讨论的,可以将多个擦除块组织成流,使得可以以更有效的方式擦除数据,如上所述。例如,图5中所示的SSD包括与3个擦除块相关联的流A和与单个擦除块相关联的流B。
如本文中讨论的,流式传输是一种过程,通过该过程,基于例如流中的所有数据的估计删除时间,存储在SSD上的数据可以在包括一个或多个擦除块的流中被一起分组。通过将可能被一起删除的数据存储在同一擦除块或同一组擦除块中,可以减轻与SSD存储相关联的很多问题。但是,给定SSD上可用的流的数目可能是有限的。在一些情况下,给定流的大小可能比为特定文件存储的数据量大得多,并且将其分配给单个流可能导致SSD提供的流式传输功能的低效使用。因此,可能希望基于例如为特定文件存储的数据量和每个可用流块的大小来执行与特定文件相关联的数据的流式和非流式写入的组合。
用于优化存储设备上可用的流的使用的示例方法在图6中示出。例如,该方法可以包括将与多个文件相关联的数据写入与流不相关的第一组一个或多个擦除块,确定第一组一个或多个擦除块中与多个文件中的给定文件相关联的数据量已经达到阈值,并且将与给定文件相关联的数据从第一组一个或多个擦除块移动到流,流包括与第一组一个或多个擦除块不同的第二组一个或多个擦除块。第一组一个或多个擦除块和第二组一个或多个擦除块可以位于存储设备上,诸如图5中所示的SSD 508。下面讨论的图7-11更详细地说明了使用流式和非流式写入来优化可用流的使用的过程。应当理解,图7-11中所示的步骤可以由任何数目的设备执行,包括例如与计算设备相关联的文件系统或包括一个或多个流的SSD。
图7示出了将与多个文件相关联的数据写入存储设备上的第一组一个或多个擦除块的方法。如图7中所示,可以将与文件A、文件B和文件C相关联的数据写入第一组一个或多个擦除块。第一组一个或多个擦除块可以不与流相关联。一组一个或多个擦除块可以包括存储设备上可用的任何数目的擦除块。在一个示例中,第一组一个或多个擦除块可以包括存储设备上与流不相关的所有擦除块。在另一示例中,第一组一个或多个擦除块可以包括存储设备上与流不相关的所有擦除块的子集。在另一示例中,该组一个或多个擦除块可以包括单个擦除块。在另一示例中,第一组一个或多个擦除块可以包括流中的一个或多个擦除块。如图7中的示例所示,可以将与文件A、文件B和文件C相关联的数据写入擦除块1。该组一个或多个擦除块还可以包括擦除块2和擦除块3。也如图7中的示例所示,擦除块4可以与流1相关联,并且擦除块5可以与流2相关联。然而,如本文中讨论的,流可以包括任何数目的擦除块。来自文件A、文件B和文件C中的每个的数据可以作为非流式写入的一部分被写入擦除块1、2或3中的任何一个。因此,应当理解,来自文件A、文件B和文件C中的每个的数据可以具有不同的估计擦除时间。例如,可以估计与文件A相关联的数据可以在写入操作的两周之后被删除,与文件B相关联的数据可以在写入操作的两个月之后被删除,并且与文件C相关联的数据可以在写入操作的两年之后被删除。
如图7中进一步所示,文件系统可以被配置为跟踪为每个文件写入的数据量。例如,文件系统可以被配置为存储与每个文件相关联的元数据。在一个实施例中,文件系统可以被配置为保持关于文件及其在存储设备上的位置的元数据。例如,元数据可以采用文件范围映射表的形式,以定义与给定文件相关联的所有数据的偏移、逻辑块地址(LBA)和长度,如下面进一步讨论的。
如图8所示,与文件A、文件B和文件C中的每个相关联的数据可以被连续写入第一组一个或多个擦除块。在一个实施例中,当擦除块1达到容量时,可以将与每个文件相关联的数据写入擦除块2。当为每个文件连续写入数据时,可以确定第一组一个或多个擦除块中与多个文件中的给定文件相关联的数据量已经达到阈值。阈值可以基于存储设备上的一个或多个流的存储容量。例如,给定流可能能够存储256MB的数据。然而,应当理解,阈值可以基于任何数目的因素。例如,驻留在计算设备上的应用或某种其他实体可能向文件系统发送关于文件的大小将很快扩展并且开始写入流是有意义的的指示。另外,与流相关联的元数据可以定义例如200MB的阈值。阈值可以定义可以移动到流的最小数据量。因此,当第一组一个或多个擦除块中与给定文件相关联的数据量达到200MB时,可以将与给定文件相关联的数据移动到流。应当理解,流可以具有任何大小,并且阈值可以基于任何数目的度量。还应当理解,存储设备可以包括具有不同长度的多个流,并且这些流中的每个可以与不同的阈值相关联。
如图9所示,一旦达到该阈值,就可以将与给定文件相关联的数据从第一组一个或多个擦除块移动到流。该流可以包括与第一组一个或多个擦除块不同的第二组一个或多个擦除块。如本文中讨论的,流可以被专门用于存储给定文件的数据。例如,如图9中所示,第一组一个或多个擦除块中与文件A相关联的所有数据可以被移动到流1,流1被专门用于存储文件A的数据。在第一组一个或多个擦除块与第一流相关联的示例中,数据可以从与第一流相关联的第一组一个或多个擦除块移动到与第二流相关联的一个或多个擦除块,第一流包括与多个文件相关联的数据并且第二流包括仅与给定文件相关联的数据。还如图9中所示,可以对第一组一个或多个擦除块中与给定文件相关联的数据执行修整操作。例如,文件系统可以被配置为指示存储设备对数据执行修整命令,从而向存储设备通知第一组一个或多个擦除块内的数据不再被使用并且可以被删除。响应于接收到修整命令,存储设备可以被配置为“删除”第一组一个或多个擦除块中与给定文件相关联的数据。如本文中讨论的,存储设备可能需要在数据可以被永久删除之前执行垃圾收集。
如图10所示,可以将与给定文件相关联的数据写入流。例如,可以继续将与文件A相关联的数据写入流2,直到流中的数据量达到第二阈值,如下面进一步讨论的。流的大小可以存储为元数据。如图10中的示例所示,已经对流1进行了对文件A的附加写入操作。如图10中的示例进一步所示,流1中与文件A相关联的数据量可能接近流的容量。
如图11所示,响应于确定流中的数据量已经达到第二阈值,可以再次将与给定文件相关联的其他数据写入第一组一个或多个擦除块,第二阈值基于流的大小。如图11中所示,第一组一个或多个擦除块还可以包括SSD上的擦除块3。擦除块3可以包括例如与文件A和文件C相关联的数据。然而,应当理解,可以将数据写入存储设备上的任何擦除块。例如,与文件A相关联的数据可以被写入擦除块3以及SSD上与流不相关的任何其他可用擦除块。如果在任何时刻,与给定文件相关联的数据已经达到与存储设备上的可用流相关联的预定阈值,则可以将数据移动到包括专为该文件所独有的数据的流,如本文中讨论的。
在一个示例中,图7-11中所示的步骤可以由与计算设备相关联的文件系统来执行。该方法在本文中可以被称为“主机管理”方法。下面进一步讨论的该示例方法可以包括:将与给定文件相关联的数据从第一组一个或多个擦除块移动到本地存储器,并且然后向存储设备发送将与给定文件相关联的数据从本地存储器写入存储设备上的流的请求。然后,文件系统可以更新它为文件保持的元数据以反映存储设备上的数据位置的变化。在另一示例中,图7-11中所示的步骤可以由包括一个或多个流的存储设备执行。该方法在本文中可以被称为“设备管理”方法。从存储设备的角度来看,下面进一步讨论的该示例方法可以包括:接收与流相关联的流标识符,以及将与给定文件相关联的数据从第一组一个或多个擦除块移动到流的请求,将与给定文件相关联的数据从第一组一个或多个擦除块复制到流,并且更新由存储设备保持的元数据以反映存储设备上的数据位置的变化。
图12示出了由文件系统实现的用于优化可用流在存储设备上的使用的示例方法。该方法可以被称为“主机管理”。如图12中的步骤1202所示,文件系统可以被配置为确定第一组一个或多个擦除块中与给定文件相关联的数据量已经达到阈值,第一组一个或多个擦除块包括与多个文件相关联的数据。文件系统可以是例如图5中所示的文件系统504。存储设备可以是例如图5中所示的SSD 508。如上面结合图7-11讨论的,可以将与多个文件相关联的数据写入第一组一个或多个擦除块。第一组一个或多个擦除块可以对应于例如第一擦除块和第二擦除块。阈值可以基于存储设备上的一个或多个可用流的存储容量。例如,文件系统504可以确定当第一组一个或多个擦除块中与给定文件相关联的数据达到给定流的最大存储容量的一半时,将与该文件相关联的数据移动到可用流。如下面进一步讨论的,流的大小可以被存储为元数据。
如图12中的步骤1204所示,文件系统504可以被配置为将与给定文件相关联的数据写入存储器。存储器可以是例如与图1中所示的计算设备112相关联的系统存储器116。
如图12中的步骤1206所示,文件系统504可以被配置为向存储设备508发送对流标识符的请求,该流标识符与流相关联。流可以包括与第一组一个或多个擦除块不同的第二组一个或多个擦除块。例如,如图9中所示,流可以包括单个擦除块,诸如擦除块4。然而,应当理解,流可以包括存储设备508上的任何数目的擦除块。
如图12中的步骤1208所示,文件系统504可以从存储设备508接收流标识符。存储设备508可以被配置为基于例如与要存储在流中的文件相关联的数据量来确定可用流,并且向文件系统504发送与该流相关联的流标识符。从存储设备508接收流标识符可以授予文件A对流的独占访问权。
如图12中的步骤1210所示,文件系统504可以向存储设备508发送将与给定文件相关联的数据从本地存储器写入流的请求。如图9中所示,流可以包括专为给定文件所独有的数据。发送将与给定文件相关联的数据写入流的请求可以包括向存储设备508发送与流相关联的流标识符。发送流标识符可以指示存储设备508在何处写入与给定文件相关联的数据。
如图9中进一步所示,文件系统504还可以被配置为指示存储设备508对第一组一个或多个擦除块中与给定文件相关联的数据执行修整命令。修整命令可以向存储设备508通知第一组一个或多个擦除块内的数据不再使用并且可以被删除。响应于接收到修整命令,存储设备508可以被配置为删除第一组一个或多个擦除块中与给定文件相关联的数据。如上所述,存储设备508可能需要在数据可以被永久删除之前执行垃圾收集。
如上所述,文件系统504可以保持每个文件的元数据,该元数据跟踪与给定文件相关联的数据在存储介质上的位置。该元数据可以采用例如文件范围表的形式,如图7-11中所示。文件范围表可以定义例如存储在存储设备上的给定文件的每个数据范围的偏移、逻辑块地址(LBA)和长度。在图7的示例中,文件范围表包括文件A的数据。然而,应当理解,文件范围表可以包括任何数目的文件的数据。擦除块中的给定文件的每个数据条目可以对应于数据页面,诸如图2中所示的页面208之一。如上面结合图2所讨论的,页面可以是可以编程的SSD 508的最小单元。如图7中的表所示,可以将两页数据写入擦除块1,页面从LBA 0开始并且具有偏移2。偏移可以是指在写入操作时与给定文件相关联的数据页面的数目,而长度可以是指与文件关联的连续页面的数目。如图7中进一步所示,可以将与文件A相关联的第三页数据写入擦除块1,第三页数据从LBA 3开始并且偏移为2。如图8所示,可以对第一组一个或多个擦除块执行附加写入操作。例如,与文件A相关联的单页数据可以在LBA 8处开始,与文件A相关联的两页数据可以在LBA 10处开始,并且与文件A相关联的两页数据可以在LBA 14处开始。
如本文中讨论的,当已经满足文件系统504确定与给定文件相关联的阈值数据量时,文件系统可以将数据从第一组一个或多个擦除块移动到流。一旦写入操作完成,文件系统可以更新它为文件存储的元数据以反映文件A的数据的位置变化。例如,在文件元数据采取文件范围表中将文件的数据范围的字节偏移映射到与这些范围在存储设备上的位置相关联的逻辑块地址(LBA)的一个或多个条目的形式的实施例中,可以更新文件的LBA以反映流中的数据在存储设备上的新位置。例如,如图9中所示,与文件A相关联的每个数据页面已经被移动到流1。因此,可以更新文件范围表以反映流1中与文件A相关联的数据范围的新LBA。因为数据的范围已经被移动到流1中的存储设备上的连续逻辑地址,所以单个条目足以指示具有长度为“8”的数据现在从存储设备的LBA“30”处开始存在。
如图10中所示,当对文件A进行附加写入操作时,可以更新文件范围表以包括附加数据页。例如,当将一数据页添加到流1时,可以更新文件范围表以包括关于与文件A相关联的附加数据页的位置的信息。如图11中所示,当已经达到流1的阈值并且没有新数据可以被写入流时,与文件A相关联的数据可以被写入存储设备上的另一位置,例如,与流不相关的第一组擦除块。因此,可以进一步更新文件范围表以包括这些新条目。在图11的示例中,与文件A相关联的两个新的数据页已经被写入第一组一个或多个擦除块,第一页在LBA 20处开始,第二页在LBA 22处开始。
图13示出了由诸如图5中所示的SSD 508等存储设备执行的方法,以用于优化可用流在存储设备上的使用。该示例可以被称为“设备管理”。例如,如图13的步骤1302所示,存储设备508可以被配置为从文件系统接收对流标识符的请求,该文件系统被配置为:响应于在文件系统处确定存储设备上的第一组一个或多个擦除块中与给定文件相关联的数据已经达到阈值,而向存储设备发送对流标识符的请求,第一组一个或多个擦除块包括与多个文件相关联的数据。文件系统可以是例如图5中所示的文件系统504。文件系统504可以基于存储在文件系统中的元数据来确定第一组一个或多个擦除块中与给定文件相关联的数据已经达到阈值。作为一个示例,元数据可以包括流的大小。
如图13的步骤1304所示,存储设备508可以向文件系统504发送流标识符。流标识符可以与包括存储设备508上与第一组一个或多个擦除块不同的第二组一个或多个擦除块的流相关联。
如图13的步骤1306所示,存储设备508可以从文件系统504接收将与给定文件相关联的数据从第一组一个或多个擦除块复制到流的请求。该请求可以包括与流相关联的流标识符。如图9中的示例所示,与文件A相关联的所有数据可以从擦除块1和2移动到流1。接收将与给定文件相关联的数据从第一组一个或多个擦除块复制到流的请求可以包括从文件系统504接收与给定文件相关联的数据的逻辑块地址。在一个实施例中,存储设备508还可以被配置为更新存储设备508中的元数据以包括流中与给定文件相关联的数据的位置。该位置可以包括流中与给定文件相关联的数据的物理块地址。例如,存储设备508可以将LBA保持到物理块映射表,并且在接收到与给定文件相关联的数据的LBA并且将与给定文件相关联的数据从第一组一个或多个擦除块复制到流时,可以将LBA更新到物理块映射表,以包括与给定文件相关联的数据的新物理块地址。使存储设备将其LBA更新到物理块映射减轻了文件系统更新其自己的元数据(例如,文件范围表)的需要;因此,使用术语“设备管理”来描述该实施例。
如步骤1308所示,存储设备508可以被配置为将与给定文件相关联的数据从第一组一个或多个擦除块复制到流。如图9中所示,存储设备508还可以被配置为对第一组一个或多个擦除块中与给定文件相关联的数据执行修整命令。如上所述,与由存储设备执行的示例方法相关联的开销可以较少,因为文件系统可能不需要更新其文件位置元数据(例如,文件范围映射表)。相反,存储设备可以更新与每个LBA范围相关联的物理地址,同时从文件系统的角度保持相同的LBA。
本文中描述的各方面的说明旨在提供对各个方面的结构的一般理解。这些说明不旨在用作利用本文中描述的结构或方法的装置和系统的所有元件和特征的完整描述。在阅读本公开之后,很多其他方面对于本领域技术人员而言是很清楚的。可以利用其他方面并且从本公开得出其他方面,使得可以在不脱离本公开的范围的情况下进行结构和逻辑替换和改变。因此,本公开和附图应当被视为是说明性的而非限制性的。
结合本文中公开的各方面而描述的各种说明性逻辑块、配置、模块和方法步骤或指令可以被实现为电子硬件或计算机软件。已经在功能方面一般性地描述了各种说明性组件、块、配置、模块或步骤。将这样的功能实现为硬件还是软件取决于特定应用和强加于整个系统的设计约束。所描述的功能可以针对每个特定应用以不同方式实现,但是这种实现决策不应当被解释为导致脱离本公开的范围。
结合本文中公开的各方面或其某些方面或部分而描述的各种说明性逻辑块、配置、模块和方法步骤或指令可以以存储在计算机可读存储介质上的计算机可执行指令(即,程序代码)的形式实现,这些指令在由诸如计算设备等机器执行时,执行和/或实现本文中描述的系统、方法和过程。具体地,上述任何步骤、操作或功能可以以这种计算机可执行指令的形式实现。计算机可读存储介质包括以用于存储信息的任何非暂态(即,有形或物理)方法或技术实现的易失性和非易失性的、可移动和不可移动介质,但是这种计算机可读存储介质不包括信号。计算机可读存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字通用盘(DVD)或其他光盘存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备、或者可以用于存储所需信息并且可以由计算机访问的任何其他有形或物理介质。
尽管用结构特征和/或动作专用的语言描述了本主题,但应当理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上面描述的具体特征和动作被公开作为实现权利要求的示例,并且其他等同特征和动作旨在落入权利要求的范围内。
提供对这些方面的描述是为了能够制作或使用这些方面。对这些方面的各种修改将是很清楚的,并且在不脱离本公开的范围的情况下,本文中定义的一般原理可以应用于其他方面。因此,本公开不旨在限于本文中所示的各方面,而是与符合由所附权利要求限定的原理和新颖特征的可能的最宽范围相一致。
Claims (20)
1.一种用于优化用于在存储设备上存储数据的流的使用的方法,包括:
将与多个文件相关联的数据写入位于所述存储设备上的与一个或多个流不关联的第一组一个或多个擦除块,所述一个或多个流中的每个流包括位于所述存储设备上的至少一个其他组一个或多个擦除块;
确定所述第一组一个或多个擦除块中与所述多个文件中的给定文件相关联的数据量;
确定与所述给定文件相关联的所述数据量已经达到预定阈值;以及
响应于确定已经达到所述阈值,将与所述给定文件相关联的所述数据从所述第一组一个或多个擦除块移动到所述一个或多个流中的流,所述流包括位于所述存储设备上的与所述第一组一个或多个擦除块不同的第二组一个或多个擦除块。
2.根据权利要求1所述的方法,其中所述流包括专为所述给定文件所独有的数据。
3.根据权利要求1所述的方法,还包括将与所述给定文件相关联的数据写入所述流。
4.根据权利要求3所述的方法,还包括:响应于确定所述流中的所述数据量已经达到第二阈值,将与所述给定文件相关联的数据写入所述第一组一个或多个擦除块,所述第二阈值基于所述流的大小。
5.根据权利要求4所述的方法,其中所述流的所述大小被存储为元数据。
6.根据权利要求1所述的方法,还包括对所述第一组一个或多个擦除块中与所述给定文件相关联的所述数据执行修整操作。
7.根据权利要求1所述的方法,其中将与所述给定文件相关联的所述数据从所述第一组一个或多个擦除块移动到所述流包括通过文件系统:
将与所述给定文件关联的所述数据写入本地存储器;
向所述存储设备发送对于将与所述给定文件相关联的数据写入所述流的请求;以及
更新与所述文件相关联并且由所述文件系统保持的元数据,以反映与所述给定文件相关联的所述数据在所述存储设备上的新位置。
8.根据权利要求1所述的方法,其中将与所述给定文件相关联的所述数据从所述第一组一个或多个擦除块移动到所述流包括通过上述存储设备:
接收与所述流相关联的流标识符;
将与所述给定文件相关联的所述数据从所述第一组一个或多个擦除块复制到所述流;以及
更新由所述存储设备保持的元数据,以反映所述流中与所述给定文件相关联的所述数据在所述存储设备上的新位置。
9.一种计算设备,包括处理单元、存储器和在所述处理单元上执行的文件系统,所述文件系统在所述处理单元上执行时执行操作,所述操作包括:
将与多个文件相关联的数据写入位于存储设备上的与一个或多个流不关联的第一组一个或多个擦除块,所述一个或多个流中的每个流包括位于所述存储设备上的至少一个其他组一个或多个擦除块;
确定所述第一组一个或多个擦除块中与所述多个文件中的给定文件相关联的数据量;
确定与所述给定文件相关联的所述数据量已经达到预定阈值;以及
响应于确定已经达到所述阈值,将与所述给定文件相关联的所述数据从所述第一组一个或多个擦除块移动到所述一个或多个流中的流,所述流包括位于所述存储设备上的与所述第一组一个或多个擦除块不同的第二组一个或多个擦除块。
10.根据权利要求9所述的计算设备,其中所述文件系统还被配置为执行操作,所述操作包括:更新与所述文件相关联并且由所述文件系统保持的元数据,以反映与所述给定文件相关联的所述数据在所述存储设备上的新位置。
11.根据权利要求10所述的计算设备,其中与所述给定文件相关联的所述数据的所述位置是逻辑块地址。
12.根据权利要求10所述的计算设备,其中所述元数据还包括所述流的大小。
13.根据权利要求9所述的计算设备,其中所述文件系统还被配置为执行包括指示所述存储设备对所述第一组一个或多个擦除块中与所述给定文件相关联的所述数据执行修整命令的操作。
14.根据权利要求9所述的计算设备,其中将与所述给定文件相关联的所述数据从所述第一组一个或多个擦除块移动到所述流包括通过所述文件系统:
将与所述给定文件关联的所述数据写入所述存储器;
向所述存储设备发送对流标识符的请求;
从所述存储设备接收与所述流相关联的流标识符;以及
向所述存储设备发送对于将与所述给定文件相关联的所述数据写入所述流的请求,其中对于将所述数据写入所述流的请求包括与所述流相关联的所述流标识符。
15.一种计算机可读存储介质,其存储指令,所述指令在由计算设备执行时使所述计算设备执行操作,所述操作包括:
将与多个文件相关联的数据写入位于存储设备上的与一个或多个流不关联的第一组一个或多个擦除块,所述一个或多个流中的每个流包括位于所述存储设备上的至少一个其他组一个或多个擦除块;
确定所述第一组一个或多个擦除块中与所述多个文件中的给定文件相关联的数据量;
确定与所述给定文件相关联的所述数据量已经达到预定阈值;以及
响应于确定已经达到所述阈值,将与所述给定文件相关联的所述数据从所述第一组一个或多个擦除块移动到所述一个或多个流中的流,所述流包括位于所述存储设备上的与所述第一组一个或多个擦除块不同的第二组一个或多个擦除块。
16.根据权利要求15所述的计算机可读存储介质,其中所述流包括专为所述给定文件所独有的数据。
17.根据权利要求15所述的计算机可读存储介质,其中所述指令在被执行时还引起将与所述给定文件相关联的数据写入所述流。
18.根据权利要求17所述的计算机可读存储介质,其中所述指令在被执行时还引起响应于确定所述流中的所述数据量已经达到第二阈值,将与所述给定文件相关联的数据写入所述第一组一个或多个擦除块,所述第二阈值基于所述流的大小。
19.根据权利要求15所述的计算机可读存储介质,其中所述指令在被执行时还引起对所述第一组一个或多个擦除块中与所述给定文件相关联的所述数据执行修整操作。
20.根据权利要求15所述的计算机可读存储介质,其中将与所述给定文件相关联的所述数据从所述第一组一个或多个擦除块移动到所述流包括通过文件系统:
将与所述给定文件关联的所述数据写入存储器;
向所述存储设备发送对于将与所述给定文件相关联的数据写入所述流的请求;以及
更新与所述文件相关联并且由所述文件系统保持的元数据,以反映与所述给定文件相关联的所述数据在所述存储设备上的新位置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762459426P | 2017-02-15 | 2017-02-15 | |
US62/459,426 | 2017-02-15 | ||
US15/628,994 US10768829B2 (en) | 2017-02-15 | 2017-06-21 | Opportunistic use of streams for storing data on a solid state device |
US15/628,994 | 2017-06-21 | ||
PCT/US2018/016937 WO2018151969A1 (en) | 2017-02-15 | 2018-02-06 | Opportunistic use of streams for storing data on a solid state device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110312986A CN110312986A (zh) | 2019-10-08 |
CN110312986B true CN110312986B (zh) | 2023-07-07 |
Family
ID=63105174
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880011893.6A Active CN110312986B (zh) | 2017-02-15 | 2018-02-06 | 用于在固态设备上存储数据的流的机会性使用 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10768829B2 (zh) |
EP (1) | EP3552121A1 (zh) |
CN (1) | CN110312986B (zh) |
WO (1) | WO2018151969A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180321855A1 (en) * | 2017-05-03 | 2018-11-08 | Samsung Electronics Co., Ltd. | Multistreaming in heterogeneous environments |
US10338842B2 (en) * | 2017-05-19 | 2019-07-02 | Samsung Electronics Co., Ltd. | Namespace/stream management |
US11803517B2 (en) * | 2019-04-30 | 2023-10-31 | Microsoft Technology Licensing, Llc | File system for anonymous write |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176752A (zh) * | 2012-07-02 | 2013-06-26 | 晶天电子(深圳)有限公司 | 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器 |
WO2016153605A1 (en) * | 2015-03-26 | 2016-09-29 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8452940B2 (en) * | 2008-12-30 | 2013-05-28 | Sandisk Technologies Inc. | Optimized memory management for random and sequential data writing |
US9110594B2 (en) | 2009-11-04 | 2015-08-18 | Seagate Technology Llc | File management system for devices containing solid-state media |
US20110119462A1 (en) * | 2009-11-19 | 2011-05-19 | Ocz Technology Group, Inc. | Method for restoring and maintaining solid-state drive performance |
US8966201B2 (en) * | 2010-12-10 | 2015-02-24 | Sandisk Technologies Inc. | Method and system for hijacking writes to a non-volatile memory |
US20130173842A1 (en) | 2011-12-28 | 2013-07-04 | King Ying Ng | Adaptive Logical Group Sorting to Prevent Drive Fragmentation |
US8990477B2 (en) | 2012-04-19 | 2015-03-24 | Sandisk Technologies Inc. | System and method for limiting fragmentation |
US8862810B2 (en) | 2012-09-27 | 2014-10-14 | Arkologic Limited | Solid state device write operation management system |
CN104298465B (zh) | 2013-07-17 | 2017-06-20 | 光宝电子(广州)有限公司 | 固态储存装置中的区块分组方法 |
US9329797B2 (en) * | 2013-12-30 | 2016-05-03 | Sandisk Technologies Inc. | Method and system for adjusting block erase or program parameters based on a predicted erase life |
JP2016170583A (ja) * | 2015-03-12 | 2016-09-23 | 株式会社東芝 | メモリシステムおよび情報処理システム |
KR102401600B1 (ko) | 2015-08-31 | 2022-05-25 | 삼성전자주식회사 | 데이터 양에 기초하여 복수의 데이터 스트림을 관리하도록 구성되는 스토리지 장치 |
-
2017
- 2017-06-21 US US15/628,994 patent/US10768829B2/en active Active
-
2018
- 2018-02-06 WO PCT/US2018/016937 patent/WO2018151969A1/en unknown
- 2018-02-06 CN CN201880011893.6A patent/CN110312986B/zh active Active
- 2018-02-06 EP EP18706353.2A patent/EP3552121A1/en not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176752A (zh) * | 2012-07-02 | 2013-06-26 | 晶天电子(深圳)有限公司 | 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器 |
WO2016153605A1 (en) * | 2015-03-26 | 2016-09-29 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
Also Published As
Publication number | Publication date |
---|---|
WO2018151969A1 (en) | 2018-08-23 |
EP3552121A1 (en) | 2019-10-16 |
CN110312986A (zh) | 2019-10-08 |
US10768829B2 (en) | 2020-09-08 |
US20180232160A1 (en) | 2018-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11636032B2 (en) | Memory system, data storage device, user device and data management method thereof | |
US8626987B2 (en) | Flash memory system and defragmentation method | |
JP5418808B2 (ja) | 適応ハイブリッド密度メモリ記憶装置の制御方法、及び適応ハイブリッド密度メモリ記憶装置 | |
US20080195833A1 (en) | Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit | |
EP3752905B1 (en) | Append only streams for storing data on a solid state device | |
US10298649B2 (en) | Guaranteeing stream exclusivity in a multi-tenant environment | |
US20130103893A1 (en) | System comprising storage device and related methods of operation | |
JPWO2007066720A1 (ja) | 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法 | |
US10108342B2 (en) | Method for reducing use of DRAM in SSD and the SSD using the same | |
CN110312986B (zh) | 用于在固态设备上存储数据的流的机会性使用 | |
WO2021035555A1 (zh) | 一种固态硬盘的数据存储方法、装置及固态硬盘ssd | |
US20170160940A1 (en) | Data processing method and apparatus of solid state disk | |
KR20210046377A (ko) | 마이그레이션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법 | |
US20210026763A1 (en) | Storage device for improving journal replay, operating method thereof, and electronic device including the storage device | |
US20180232154A1 (en) | Append Only Streams For Storing Data On A Solid State Device | |
US11132134B2 (en) | Flexible over-provisioning of storage space within solid-state storage devices (SSDs) | |
CN110515861B (zh) | 处理刷写命令的存储设备及其方法 | |
US20180150257A1 (en) | File System Streams Support And Usage | |
CN111625477B (zh) | 访问擦除块的读请求的处理方法与装置 | |
US20210303212A1 (en) | Data processing method and memory controller utilizing the same | |
WO2024060944A1 (zh) | 键值存储方法及系统 | |
US11941246B2 (en) | Memory system, data processing system including the same, and operating method thereof | |
KR102497213B1 (ko) | 안전 삭제를 수행하는 컨트롤러, 이를 포함하는 키-밸류 스토리지 장치 및 키-밸류 스토리지 장치의 동작방법 | |
US11657000B2 (en) | Controller and memory system including the same | |
US20220156003A1 (en) | Controller and operation method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |