CN108255414A - 固态硬盘访问方法及装置 - Google Patents
固态硬盘访问方法及装置 Download PDFInfo
- Publication number
- CN108255414A CN108255414A CN201710244793.5A CN201710244793A CN108255414A CN 108255414 A CN108255414 A CN 108255414A CN 201710244793 A CN201710244793 A CN 201710244793A CN 108255414 A CN108255414 A CN 108255414A
- Authority
- CN
- China
- Prior art keywords
- data
- sector
- band
- caching
- written
- 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.)
- Granted
Links
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/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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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/068—Hybrid storage device
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/1008—Correctness of operation, e.g. memory ordering
-
- 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
-
- 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/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
- G06F2212/262—Storage comprising a plurality of storage devices configured as RAID
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
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)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Read Only Memory (AREA)
Abstract
本申请提供一种固态硬盘访问方法及装置,其中,固态硬盘SSD中包括:缓存、三个以上物理通道、以及每个物理通道挂载的闪存,该方法应用于SSD,该方法包括:接收写数据命令,确定与该写数据命令中携带的待写入数据的LBA相对应的第一条带和第一扇区,其中,每个条带中包括三个以上扇区,且扇区数等于SSD中的物理通道数;若缓存中存在第一条带,则将该待写入数据作为第一扇区的最新数据写入缓存;若缓存中不存在第一条带,则创建第一条带,将该待写入数据作为第一扇区的最新数据写入缓存。
Description
技术领域
本申请涉及存储技术领域,特别涉及一种固态硬盘访问方法及装置。
背景技术
SSD(Solid State Disk,固态硬盘)主要由控制器和闪存(Flash)组成。目前,SSD通常采用多通道并行技术,以便提供更高的数据读写速度。具体的,控制器使用多个物理通道(Channel)并行操作多个闪存。
发明内容
有鉴于此,本申请提供一种固态硬盘访问方法及装置。
具体地,本申请是通过如下技术方案实现的:
一方面,提供了一种SSD访问方法,SSD中包括:缓存、三个以上物理通道、以及每个物理通道挂载的闪存,该方法应用于SSD,该方法包括:
接收写数据命令,确定与写数据命令中携带的待写入数据的LBA相对应的第一条带和第一扇区,其中,每个条带中包括三个以上扇区,且扇区数等于SSD中的物理通道数;
若缓存中存在第一条带,则将待写入数据作为第一扇区的最新数据写入缓存;
若缓存中不存在第一条带,则创建第一条带,将待写入数据作为第一扇区的最新数据写入缓存。
另一方面,还提供了一种SSD访问装置,SSD中包括:缓存、三个以上物理通道、以及每个物理通道挂载的闪存,该装置应用于SSD上,该装置包括:
接收单元,用于接收写数据命令,确定与写数据命令中携带的待写入数据的逻辑区块地址LBA相对应的第一条带和第一扇区,其中,每个条带中包括三个以上扇区,且扇区数等于SSD中的物理通道数;
读写单元,用于若缓存中存在第一条带,则将待写入数据作为第一扇区的最新数据写入缓存,若缓存中不存在第一条带,则创建第一条带,将待写入数据作为第一扇区的最新数据写入缓存。
通过本申请的以上技术方案,在SSD中设置了缓存,SSD在接收到写数据命令后,先将待写入数据存放到缓存中,这样,对于某些需要经常进行修改的热点数据,只需修改缓存中的数据即可,而无需反复对闪存进行擦除写入,从而减少了写入放大比。
附图说明
图1是本申请实施例示出的未采用条带化技术和采用了条带化技术的数据存储对比示意图;
图2是本申请实施例示出的SSD的结构示意图;
图3是本申请实施例示出的SSD访问方法的流程图;
图4是本申请实施例示出的在接收到写数据命令后的写入操作流程图;
图5是本申请实施例示出的条带老化操作的流程图;
图6是本申请实施例示出的在接收到读数据命令后的读取操作流程图;
图7是本申请实施例示出的在物理通道失效时的数据恢复和迁移操作的流程图;
图8是本申请实施例示出的SSD访问装置所在SSD的硬件结构示意图;
图9是本申请实施例示出的SSD访问装置的一种结构示意图;
图10是本申请实施例示出的SSD访问装置的另一种结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
采用多通道并行技术可以并行的进行数据读写,但是,在实际应用中数据读写并不总是连续的,大部分情况下都是随机读写,这样,在同时访问同一物理通道挂载的闪存时就会导致访问冲突。解决上述访问冲突问题的方案主要是将数据进行条带化。条带化技术就是一种自动的将数据读写的负载均衡到各个物理通道挂载的闪存上的技术。
如图1所示,通过采用条带化技术,可以按照预定大小将数据分割成多份子数据,并将它们分别存储到不同物理通道挂载的闪存中,从而实现数据并行读写,并且有效避免访问冲突。
另外,闪存具有必须先擦除(erase)才能写入(program)的特性,擦除的最小单位是块(Block),读写的最小单位是页(Page),一个块包含多个页,因此,对闪存中的数据进行修改时,不可以直接用新数据覆盖原有数据,而是需要将整个块中的数据读取出来保存到内存中,将内存中需要修改的数据更新为新数据,然后擦除整个块中的数据,将内存中修改后的数据写入该块中。这样就会产生SSD的写入放大(Write Application)问题。例如,一个块中的1024个页全部被写满了,此时,若需要修改其中一个页中的数据,则需要将该块中的所有数据读取到内存中并修改其中一个页中的数据,然后将该块中的数据擦除,将内存中修改后的数据写入该块中,此时的写入放大比为1024。
现有技术的SSD存在写入放大比很大的问题,从而影响了SSD的性能和使用寿命。
为了解决上述问题,本申请以下实施例中提供了一种SSD访问方法,以及一种可以应用该方法的装置。如图2所示,本申请实施例的SSD中包括:控制器、缓存(Cache)、三个以上物理通道、以及每个物理通道挂载的闪存(Flash)。其中,缓存具体可以是内存中划分出的存储空间。本申请实施例的SSD采用多通道并行技术和条带化技术进行数据读写。
基于此,如图3所示,本申请实施例的SSD访问方法包括以下步骤:
步骤S301,接收写数据命令,确定与该写数据命令中携带的待写入数据的LBA(Logical Block Address,逻辑区块地址)相对应的第一条带和第一扇区;
其中,每个条带中包括三个以上扇区,且扇区数等于SSD中的物理通道数。例如,当SSD中的物理通道数为4时,每个条带中包含4个扇区。
步骤S302,判断缓存中是否存在第一条带,若是,则执行步骤S303,否则,执行步骤S304;
步骤S303,将待写入数据作为第一扇区的最新数据写入缓存;
步骤S304,创建第一条带,将待写入数据作为第一扇区的最新数据写入缓存。
本申请上述实施例的方法中,在SSD中设置了缓存,SSD在接收到写数据命令后,先将待写入数据存放到缓存中,这样,对于某些需要经常进行修改的热点数据,只需修改缓存中的数据即可,而无需反复对闪存进行擦除写入,从而减少了写入放大比。
下面对上述的SSD访问方法进行详述。本申请实施例中的SSD通过计算冗余的校验数据来提供容错机制,其原理是对各个条带中的用户数据进行校验计算得到校验数据,并将校验数据按照一定规律分布在不同物理通道挂载的闪存上,这样,当某个物理通道失效时,例如,该物理通道故障、或者该物理通道挂载的闪存故障,可以实现数据恢复。另外,当条带中某个扇区的数据读取失败时,也可以实现数据恢复。
在内存中划分一个存储空间作为缓存,用于缓存各个条带的各个扇区的数据,以及存储各个条带的条带信息。
在本申请实施例中,以扇区(sector)大小作为条带深度,以物理通道数N作为条带宽度,即,每个条带中包含N个扇区。为了提供容错机制,每个条带的N个扇区中包括:用于存放用户数据的N1个用户数据扇区、以及用于存放校验数据的N2个校验数据扇区,N1+N2=N,N1>N2。具体的,一个扇区的大小为4K比特。
在实际实施过程中,通常将每个条带(strip)中的N个扇区从0开始进行编号,依次为扇区0、扇区1、扇区2、…、扇区N-1,而且,校验数据扇区可以固定使用最后N2个扇区。
基于此,本申请实施例的SSD访问方法包括以下内容:
数据写入
如图4所示,在接收到主机(Host)发来的写数据命令后,SSD执行的写入操作如下:
步骤S401,在接收到主机发来的写数据命令后,确定与该写数据命令中携带的待写入数据的LBA相对应的第一条带和第一扇区;
其中,确定LBA对应的条带的索引strip_index和扇区标识sector_id的计算方法可以参见公式(1)和公式(2):
sector_id=LBA%N1 (2)
其中,表示向下取整运算符,%表示取模运算符。
通过公式(1),可以将各个LBA分配到不同的条带中,而且,连续N1个LBA会分配到同一条带中。
当N1=4时,按照公式(1)和公式(2)计算得到的各个LBA对应的条带和扇区,可以参见表1所示。
表1
假设,步骤S401中待写入数据的LBA为14,则按照公式(1)和公式(2)确定出该待写入数据对应于条带3中的扇区2,即,第一条带为条带3,第一扇区为扇区2。
步骤S402,判断缓存中是否存在第一条带,若是,则执行步骤S403,否则,执行步骤S406;
在实际实施过程中,可以预先在内存中创建多个Hash桶(bucket),每个Hash桶用于存放多个条带的条带索引和条带信息的缓存地址。从而,在步骤S402中判断缓存中是否存在第一条带的具体方法为:
对第一条带的条带索引和物理通道数N进行哈希计算,将哈希计算结果作为桶ID(标识),在内存中查找该桶ID所标识的Hash桶;例如,对第一条带的条带索引和N之和进行CRC32(Cyclic Redundancy Check,循环冗余校验码)计算,然后取计算结果的低18位作为桶ID。
判断查找到的Hash桶中是否存在第一条带的条带索引,若存在,则确定缓存中存在第一条带,可以从该Hash桶中获取第一条带的条带信息的缓存地址;否则,确定缓存中不存在第一条带。
步骤S403,判断缓存中是否存放有第一扇区的最新数据,若是,则执行步骤S404,否则,则执行步骤S405;
在获取到第一条带的条带信息的缓存地址后,可以在缓存中查找到第一条带的条带信息,根据该条带信息判断缓存中是否存放有第一扇区的最新数据。由于在条带老化时,才会将缓存中存放的该条带的数据写入闪存,后续,该条带中某些扇区的数据需要修改时,会在缓存中写入这些扇区的修改后的新数据,此时,缓存中存放有这些扇区的数据(称为最新数据),而闪存中也存放有该扇区的数据(称为老数据)。因此,为了便于判断扇区的最新数据存放在缓存中还是存放在闪存中,可以在条带信息中为每个扇区设置对应的第一标记和第二标记。当扇区的第一标记为有效、第二标记为有效时,表示缓存中存储有该扇区的最新数据,闪存中存储有该扇区的老数据;当扇区的第一标记为有效、第二标记为无效时,表示缓存中存储有该扇区的最新数据,而闪存中不存在该扇区的数据;当扇区的第一标记为无效、第二标记为有效时,表示缓存中不存在该扇区的数据,闪存中存储有该扇区的最新数据;当扇区的第一标记为无效、第二标记为无效时,表示缓存和闪存中均不存在该扇区的数据。
其中,当条带中的某一扇区的最新数据存储在缓存中时,还会在该条带的条带信息中记录该扇区的最新数据在缓存中的缓存地址。
这样,在步骤S403中可以判断第一扇区的第一标记是否为有效,若是,则确定缓存中存放有第一扇区的最新数据。
步骤S404,将缓存中存放的第一扇区的最新数据更新为待写入数据。此时,该待写入数据成为第一扇区的最新数据。
具体的,在步骤S404中,将缓存中存放的第一扇区的最新数据更新为待写入数据的方式可以是:将待写入数据写入缓存,并将第一条带的条带信息中记录的第一扇区的最新数据的缓存地址更新为该待写入数据的缓存地址,并将第一扇区对应的第一标记维持为有效。另外,还可以将第一扇区的更新前数据的缓存地址记录为空闲地址,以便后续写入其它数据。
例如,缓存中存放的更新前数据为Dada A,Dada A的缓存地址为Addr A;该待写入数据为Dada B,则,在步骤S404中,将缓存中存放的第一扇区的最新数据更新为待写入数据Dada B的方式可以是:将Dada B写入缓存,缓存地址为Addr B,将第一条带的条带信息中记录的第一扇区的最新数据的缓存地址由Addr A更新为Addr B,另外,还可以将第一扇区的更新前数据Dada A的缓存地址Addr A记录为空闲地址,以便后续写入其它数据。
需要说明的是:如果第一条带中的第一扇区的数据频繁发生修改,则会反复执行上述步骤S401至步骤S404,每次执行步骤S404时,会将缓存中存放的第一扇区的最新数据进行更新,而更新前数据此时会被看作无效数据,等待后续被其它数据覆盖。等到第一条带老化时,会将缓存中存放的第一条带的最新数据写入闪存,具体方法可以参见图5,这里不再赘述。
步骤S405,将待写入数据作为第一扇区的最新数据写入缓存。另外,还需要在第一条带的条带信息中记录第一扇区的最新数据的缓存地址为该待写入数据的缓存地址,并将第一扇区的第一标记置为有效。
步骤S406,创建第一条带,将待写入数据作为第一扇区的最新数据写入缓存。另外,还需要在第一条带的条带信息中记录第一扇区的最新数据的缓存地址为该待写入数据的缓存地址,并将第一扇区的第一标记置为有效。此时,第一扇区的最新数据为该待写入数据。
具体的,创建条带的过程可以是:在该条带对应的Hash桶中记录该条带的条带索引和条带信息的缓存地址,计算该条带中每个扇区对应的逻辑通道并记录到该条带信息中,在条带信息中将每个扇区的第一标记和第二标记均置为无效。
其中,可以按照公式(3)计算校验数据扇区对应的逻辑通道的标识p_logic_channel_id:
p_logic_channel_id=strip_index%N (3)
可以按照公式(4)计算用户数据扇区对应的逻辑通道的标识d_logic_channel_id:
其中,sector_id表示扇区标识,strip_index表示扇区所在条带的索引,%表示取模运算符。
SSD中的逻辑通道总数与物理通道总数相同。初始时,逻辑通道与物理通道具有一一对应关系,通常情况下,初始时,逻辑通道0对应于物理通道0,逻辑通道1对应于物理通道1,以此类推。后续,SSD中的物理通道可能会失效,例如,物理通道自身故障或该通道挂载的闪存故障,此时,原本对应于失效的物理通道的逻辑通道,会与其它正常的物理通道建立对应关系。逻辑通道与物理通道之间的对应关系可以保存在通道映射表中。
从公式(3)可以看出,在不同的条带中,校验数据扇区对应的逻辑通道均匀分布在所有逻辑通道中,从而,不同条带中的校验数据会均匀的分布在所有物理通道挂载的闪存中。这样可以有效避免所有校验数据都存放在同一物理通道挂载的闪存而影响该闪存的使用寿命。
从公式(3)和公式(4)可以看出,同一条带中的各个扇区对应的逻辑通道也是均匀分布在所有逻辑通道中,从而提高了SSD的并行访问能力。
通过如图4所示的方法,在接收到主机发来的写数据命令后,先将待写入数据存放到缓存中,这样,对于某些需要经常进行修改的热点数据,只需修改缓存中的数据即可,而无需反复对闪存进行擦除写入,从而减少了写入放大比。
条带老化
另外,在创建任一个条带后,会将该条带的条带索引添加到老化链表中,老化链表中的每个条带具有对应的优先级。条带对应的优先级与缓存的存储空间大小、读/写数据命令数量、条带使用频率、条带最近使用时间、条带有效数据数等参数中的一个或多个组合有关。例如,使用频率较高的条带的优先级会较低,从而确保经常需要进行修改的数据尽量存放在缓存中,以便减少对闪存的擦除写入次数。在实际实施过程中,可以周期性的从老化链表中选择一个优先级最高的条带进行老化。
当第一条带需要进行老化,即需要将第一条带的最新数据写入闪存时,SSD执行的步骤如图5所示,包括以下步骤:
步骤S501,针对第一条带中的每个用户数据扇区,若该扇区的最新数据存储在闪存中,则从闪存中读取该扇区的最新数据并写入缓存;
具体的,针对第一条带中的每个用户数据扇区,若该扇区的第一标记为无效、第二标记为有效,说明该扇区的最新数据存储在闪存中,则确定该扇区对应的LBA,在地址转换表中查找与该LBA对应的PBA(Physical Block Address,物理区块地址),根据查找到的PBA从闪存中读取该扇区的最新数据并写入缓存,另外,还可以将该用户数据扇区的第一标记置为有效,在第一条带的条带信息中记录该用户数据扇区的最新数据的缓存地址。其中,确定扇区对应的LBA的方式可以是:在已知条带索引和扇区标识的情况下,按照公式(1)和公式(2)计算出该扇区对应的LBA。
从而,在步骤S501执行完之后,第一条带中各个用户数据扇区的最新数据均存放到了缓存中。
步骤S502,对缓存中存放的第一条带的所有用户数据扇区的最新数据进行校验计算,得到校验数据,将该校验数据作为第一条带的校验数据扇区的最新数据写入缓存;此时,第一条带中各个扇区(包括用户数据扇区和校验数据扇区)的最新数据均存放在了缓存中。
可见,在将条带中的数据写入闪存时,需要根据条带中的用户数据计算出校验数据。
步骤S503,将缓存中存放的第一条带的各个扇区的最新数据写入闪存。具体的,针对第一条带中的每个扇区,确定该扇区对应的逻辑通道,查找与该逻辑通道对应的物理通道,从缓存中读取该扇区的最新数据并写入该物理通道挂载的闪存,写入完成后,在地址转换表中记录LBA与PBA的对应关系。其中,LBA可以在已知条带索引和扇区标识的情况下,按照公式(1)和公式(2)得到,PBA是在数据写入完成后即可获知,具体的,PBA可以标识出数据在闪存中的块、页中的偏移位置。
在将缓存中存放的第一条带的各个扇区的最新数据写入闪存之后,还可以将第一条带删除。具体的,删除第一条带的方法具体可以是:将Hash桶中记录的第一条带的条带索引和条带信息的缓存地址删除,删除第一条带的条带信息。另外,还可以将这些数据的缓存地址记录为空闲地址,以便后续写入其它数据。
通过如图5所示的方法,当某一条带老化时,会将条带中的用户数据和校验数据一起写入闪存。
数据读取
如图6所示,在接收到主机发来的读数据命令后,SSD执行的读取操作如下:
步骤S601,在接收到主机发来的读数据命令之后,确定与该读数据命令中携带的待读取数据的LBA相对应的第二条带和第二扇区;
在步骤S601中,可以按照公式(1)和公式(2)确定LBA对应的第二条带和第二扇区。
步骤S602,判断缓存中是否存在第二条带,若存在,则执行步骤S603,否则,执行步骤S606;
在实际实施过程中,可以预先在内存中创建多个Hash桶,每个Hash桶用于存放多个条带的条带索引和条带信息的缓存地址。从而,在步骤S602中判断缓存中是否存在第二条带的具体方法为:
对第二条带的条带索引和物理通道数N进行哈希计算,将哈希计算结果作为桶ID,在内存中查找该桶ID所标识的Hash桶;例如,对第二条带的条带索引和N之和进行CRC32计算,然后取计算结果的低18位作为桶ID。
判断查找到的Hash桶中是否存在第二条带的条带索引,若存在,则确定缓存中存在第二条带,可以从该Hash桶中获取第二条带的条带信息的缓存地址;否则,确定缓存中不存在第二条带。
步骤S603,判断第二扇区的最新数据是否存储在缓存中,若是,则执行步骤S604,否则,若存放在闪存中,则执行步骤S606;
在获取到第二条带的条带信息的缓存地址后,可以在缓存中查找到第二条带的条带信息,根据该条带信息判断第二扇区的最新数据是否存储在缓存中。具体的,若条带信息中记录的第二扇区的第一标记为有效,则判断出第二扇区的最新数据存储在缓存中,否则,判断出第二扇区的最新数据存储在闪存中。
步骤S604,从缓存中读取第二扇区的最新数据,读出的数据即为待读取数据,之后,执行步骤S605;
具体的,在第二条带的条带信息中获取第二扇区的最新数据的缓存地址,从而,根据该缓存地址读取第二扇区的最新数据。
步骤S605,将读出的数据返回给主机;
步骤S606,从闪存中读取第二扇区的最新数据,读出的数据即为待读取数据,之后,执行步骤S605。
其中,从闪存中读取数据的方式可以是:根据数据的LBA,在地址转换表中查找与该LBA对应的PBA,根据查找到的PBA从闪存中读取数据。
如果在步骤S606中从闪存中读取第二扇区的最新数据失败,则从闪存中读取第二条带中除第二扇区以外的其它扇区的数据,使用读出的其它扇区的数据恢复出第二扇区的数据并返回给主机。
通过如图6所示的方法,读取数据时,若缓存中存在待读取数据,则直接从缓存中读取该数据,若缓存中不存在待读取数据,则从闪存中读取该数据,从缓存中读取数据的速度更快,从而能够为用户提供更高的数据读写速度。
物理通道失效时的数据恢复和迁移
为了提高SSD的可靠性,当某个物理通道失效时,需要在不中断业务的前提下,将失效的物理通道挂载的闪存中存储的数据进行恢复,并且,将失效前的老条带中的数据迁移到失效后的新条带中。为了确定出已经完成数据恢复和迁移的老条带,在老条带完成数据恢复和迁移后,可以将该老条带的条带索引记录到条带恢复(strip_recover)表中。
具体的,如图7所示,当检测到某一物理通道失效时,针对缓存中的每个老条带执行以下步骤:
步骤S701,从闪存中读取该老条带中除失效扇区以外的其它扇区的数据,使用读出的数据(包括用户数据和校验数据)恢复失效扇区的数据,将恢复出的数据作为失效扇区的最新数据写入缓存;
其中,老条带中的扇区数等于失效前的物理通道数,失效扇区对应的逻辑通道所绑定的物理通道失效。
假设,在失效前,SSD中的物理通道数为N,此时的条带称为老条带,每个老条带的N个扇区中包括:N1个用户数据扇区和N2个校验数据扇区。
当某一物理通道失效后,SSD中的物理通道数为N-1,此时的条带称为新条带,每个新条带的N-1个扇区中包括:N1-1个用户数据扇区和N2个校验数据扇区。此时,在执行读写数据操作时,需要按照N1-1来确定LBA对应的新条带和新扇区。
步骤S702,针对该老条带中的每个老用户数据扇区,根据该老用户数据扇区的LBA确定该LBA对应的新条带和新用户数据扇区,若该老用户数据扇区的最新数据存储在缓存中,则将该老用户数据扇区的最新数据迁移到该新条带中的该新用户数据扇区;若该老用户数据扇区的最新数据存储在闪存中,则从闪存中读取该用户数据扇区的最新数据并写入缓存,将该老用户数据扇区的最新数据迁移到该新条带中的该新用户数据扇区。
后续,在老条带的数据迁移完成后,可以将该老条带删除,并将该老条带的条带索引记录到strip_recover表中。
具体的,可以按照公式(1)和公式(2)确定LBA对应的新条带和新用户数据扇区。
将该老用户数据扇区的最新数据迁移到该新条带中的该新用户数据扇区的方式可以是:在该新条带的条带信息中,记录该新用户数据扇区的最新数据的缓存地址为:该老用户数据扇区的最新数据的缓存地址。
显然,在步骤S702中,在将该老用户数据扇区的最新数据迁移到该新条带中的该新用户数据扇区之前,还需要判断缓存中是否存在该新条带,若不存在,需要先创建该新条带,然后,再将该老用户数据扇区的最新数据迁移到该新条带中的该新用户数据扇区。
由于与失效前相比,失效后的物理通道数减少了,新条带中的扇区数也比老条带少,因此,一个新条带中的用户数据来自于1个或2个老条带,将这1个或2个老条带称为与该新条带关联的老条带。
在实际实施过程中,任一新条带被创建后,需要将该新条带添加到老化链表中,在数据恢复和迁移过程中,老化链表中既存在老条带也存在新条带,为了便于区别老条带和新条带,可以在老化链表中标记每个条带对应的SSD模式,老条带对应的是失效前的SSD模式,例如失效前的SSD模式为N1+N2模式,新条带对应的是失效后的SSD模式,例如失效后的SSD模式为(N1-1)+N2模式。在预定周期到达时,从老化链表中选择优先级最高的新条带进行老化,老条带无需进行老化。需要注意的是:当需要对某一新条带进行老化时,需要先判断与该新条带关联的老条带是否已经完成了数据恢复和迁移,若已经完成了数据恢复和迁移,才能对该新条带进行老化,将该新条带的数据写入闪存;若尚未完成数据恢复和迁移,则暂时不对该新条带进行老化,对关联的老条带进行数据恢复,然后,将老条带的数据迁移到新条带。这样,可以避免老条带的数据被破坏而无法恢复数据。
其中,确定与某一新条带关联的老条带的方法可以是:按照公式(1)在已知该新条带的条带索引的情况下,确定该新条带对应的LBA范围;针对该LBA范围中的最小值,按照公式(1)确定对应的第一老条带的条带索引,针对该LBA范围中的最大值,按照公式(1)确定对应的第二老条带的条带索引;若第一老条带的条带索引与第二老条带的条带索引相同,则确定与该新条带关联的老条带只有1个,即为第一老条带(也就是第二老条带);若第一老条带的条带索引与第二老条带的条带索引不相同,并且两者的差值为1,则确定与该新条带关联的老条带有2个,分别为第一老条带和第二老条带。
在数据恢复和迁移过程中,在接收到了主机发来的读数据命令后,确定与该读数据命令中携带的待读取数据的LBA相对应的新条带;在缓存中不存在该新条带的情况下,执行以下步骤:
确定与该LBA对应的老条带和老扇区;
若缓存中存在该老条带,则当该老扇区对应的逻辑通道所绑定的物理通道正常时,从缓存或内存中读取该老扇区的最新数据并返回给主机,当该老扇区对应的逻辑通道所绑定的物理通道失效时,对该老条带的数据进行数据恢复和迁移;
若缓存中不存在该老条带,则当该老扇区对应的逻辑通道所绑定的物理通道正常时,在地址转换表中查找该LBA对应的PBA,根据该PBA从闪存中读取数据并返回给主机,当该老扇区对应的逻辑通道所绑定的物理通道失效时,对该老条带的数据进行数据恢复和迁移。
通过上述的数据恢复和迁移方法,能够在物理通道失效时,对失效的物理通道挂载的闪存中存储的数据进行恢复,将老条带数据迁移到新条带上去,保证业务的延续,提高了SSD的容错能力,提高了业务的高可用性(HA),并且,在数据恢复和迁移过程中,SSD能正常进行数据读写,新老条带可以并行存在。
与前述SSD访问方法的实施例相对应,本申请还提供了SSD访问装置的实施例。
本申请SSD访问装置的实施例可以应用在SSD上。从硬件层面而言,如图8所示,为本申请SSD访问装置所在SSD的一种硬件结构示意图,该SSD中包括:控制器10、三个以上物理通道20、每个物理通道20挂载的闪存30、总线40、以及内存50,其中,闪存50中划分出了一块存储空间作为缓存70。在实际实施过程中,根据该SSD的实际功能,还可以包括其他硬件,对此不再赘述。
本申请SSD访问装置60的实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在SSD的控制器10读取并运行内存50中的计算机程序指令中形成的。
请参考图9,本申请实施例的SSD访问装置60中包括:接收单元601和读写单元602,其中:
接收单元601,用于接收写数据命令,确定与写数据命令中携带的待写入数据的LBA相对应的第一条带和第一扇区,其中,每个条带中包括三个以上扇区,且扇区数等于SSD中的物理通道数;
读写单元602,用于若缓存中存在第一条带,则将待写入数据作为第一扇区的最新数据写入缓存,若缓存中不存在第一条带,则创建第一条带,将待写入数据作为第一扇区的最新数据写入缓存。
其中,每个条带包括的N个扇区中包括:用于存放用户数据的N1个用户数据扇区、以及用于存放校验数据的N2个校验数据扇区,N1+N2=N,N1>N2;接收单元601具体用于按照以下公式确定LBA对应的条带的索引strip_index和扇区标识sector_id:
sector_id=LBA%N1;
其中,表示向下取整运算符,%表示取模运算符。
其中,每个条带中包括:用于存放用户数据的用户数据扇区、以及用于存放校验数据的校验数据扇区;则,如图10所示,上述SSD访问装置60中还包括:计算单元603,其中:
读写单元602,用于针对第一条带中的每个用户数据扇区,若该扇区的最新数据存储在闪存中,则从闪存中读取该扇区的最新数据并写入缓存;还用于将计算单元603计算得到的第一条带的校验数据扇区的校验数据写入缓存;还用于将缓存中存放的第一条带的所有扇区的最新数据写入闪存;
计算单元603,用于对缓存中存放的第一条带的所有用户数据扇区的最新数据进行校验计算,得到第一条带的校验数据扇区的校验数据。
其中,读写单元602还用于通过以下方式将缓存中存放的扇区的数据写入闪存:
确定该扇区对应的逻辑通道,查找与该逻辑通道对应的物理通道,将缓存中存放的该扇区的数据写入该物理通道挂载的闪存。
其中,每个条带中包括:用于存放用户数据的用户数据扇区、以及用于存放校验数据的校验数据扇区;则,
用户数据扇区对应的逻辑通道的标识d_logic_channel_id满足公式:
校验数据扇区对应的逻辑通道的标识p_logic_channel_id满足公式:p_logic_channel_id=strip_index%N;
其中,sector_id表示扇区标识,strip_index表示扇区所在条带的索引,%表示取模运算符。
其中,接收单元601,还用于接收读数据命令,确定与读数据命令中携带的待读取数据的LBA相对应的第二条带和第二扇区;
读写单元602,还用于若缓存中存在第二条带、并且第二扇区的最新数据存储在缓存中,则从缓存中读取第二扇区的最新数据作为待读取数据;若缓存中存在第二条带、并且第二条带中的第二扇区的最新数据存放在闪存中,或者,若缓存中不存在第二条带,则从闪存中读取第二扇区的最新数据作为待读取数据。
其中,每个条带中包括:用于存放用户数据的用户数据扇区、以及用于存放校验数据的校验数据扇区;如图10所示,上述SSD访问装置60中还包括:
检测单元604,用于检测物理通道的状态;
恢复迁移单元605,用于当检测单元604检测到物理通道失效时,针对缓存中的老条带执行以下步骤:
从闪存中读取该老条带中除失效扇区以外的其它扇区的数据,使用读出的数据恢复失效扇区的数据,将恢复出的数据作为失效扇区的最新数据写入缓存;其中,老条带中的扇区数等于失效前的物理通道数,失效扇区对应的逻辑通道所绑定的物理通道失效;
针对该老条带中的每个老用户数据扇区,根据该老用户数据扇区的LBA确定该LBA对应的新条带和新用户数据扇区,若该老用户数据扇区的最新数据存储在缓存中,则将该老用户数据扇区的最新数据迁移到该新条带中的该新用户数据扇区;若该老用户数据扇区的最新数据存储在闪存中,则从闪存中读取该用户数据扇区的最新数据并写入缓存,将该老用户数据扇区的最新数据迁移到该新条带中的该新用户数据扇区;其中,新条带中的扇区数等于失效后的物理通道数。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (14)
1.一种固态硬盘SSD访问方法,其特征在于,所述SSD中包括:缓存、三个以上物理通道、以及每个物理通道挂载的闪存,所述方法应用于所述SSD,所述方法包括:
接收写数据命令,确定与所述写数据命令中携带的待写入数据的逻辑区块地址LBA相对应的第一条带和第一扇区,其中,每个条带中包括三个以上扇区,且扇区数等于所述SSD中的物理通道数;
若所述缓存中存在所述第一条带,则将所述待写入数据作为所述第一扇区的最新数据写入所述缓存;
若所述缓存中不存在所述第一条带,则创建所述第一条带,将所述待写入数据作为所述第一扇区的最新数据写入所述缓存。
2.根据权利要求1所述的方法,其特征在于,每个条带包括的N个扇区中包括:用于存放用户数据的N1个用户数据扇区、以及用于存放校验数据的N2个校验数据扇区,N1+N2=N,N1>N2;按照以下公式确定LBA对应的条带的索引strip_index和扇区标识sector_id:
sector_id=LBA%N1;
其中,表示向下取整运算符,%表示取模运算符。
3.根据权利要求1所述的方法,其特征在于,每个条带中包括:用于存放用户数据的用户数据扇区、以及用于存放校验数据的校验数据扇区;所述方法还包括:
针对所述第一条带中的每个用户数据扇区,若该扇区的最新数据存储在闪存中,则从闪存中读取该扇区的最新数据并写入所述缓存;
对所述缓存中存放的第一条带的所有用户数据扇区的最新数据进行校验计算,得到所述第一条带的校验数据扇区的校验数据并写入所述缓存;
将所述缓存中存放的所述第一条带的所有扇区的最新数据写入闪存。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:通过以下方式将所述缓存中存放的扇区的数据写入闪存:
确定该扇区对应的逻辑通道,查找与该逻辑通道对应的物理通道,将缓存中存放的该扇区的数据写入该物理通道挂载的闪存。
5.根据权利要求4所述的方法,其特征在于,每个条带中包括:用于存放用户数据的用户数据扇区、以及用于存放校验数据的校验数据扇区;则,
用户数据扇区对应的逻辑通道的标识d_logic_channel_id满足公式:
校验数据扇区对应的逻辑通道的标识p_logic_channel_id满足公式:p_logic_channel_id=strip_index%N;
其中,sector_id表示扇区标识,strip_index表示扇区所在条带的索引,%表示取模运算符。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收读数据命令,确定与所述读数据命令中携带的待读取数据的LBA相对应的第二条带和第二扇区;
若所述缓存中存在所述第二条带、并且所述第二扇区的最新数据存储在所述缓存中,则从所述缓存中读取所述第二扇区的最新数据作为所述待读取数据;
若所述缓存中存在所述第二条带、并且所述第二条带中的所述第二扇区的最新数据存放在闪存中,或者,若所述缓存中不存在所述第二条带,则从闪存中读取所述第二扇区的最新数据作为所述待读取数据。
7.根据权利要求1所述的方法,其特征在于,每个条带中包括:用于存放用户数据的用户数据扇区、以及用于存放校验数据的校验数据扇区;所述方法还包括:当检测到物理通道失效时,针对缓存中的老条带执行以下步骤:
从闪存中读取该老条带中除失效扇区以外的其它扇区的数据,使用读出的数据恢复所述失效扇区的数据,将恢复出的数据作为所述失效扇区的最新数据写入所述缓存;其中,老条带中的扇区数等于失效前的物理通道数,所述失效扇区对应的逻辑通道所绑定的物理通道失效;
针对该老条带中的每个老用户数据扇区,根据该老用户数据扇区的LBA确定该LBA对应的新条带和新用户数据扇区,若该老用户数据扇区的最新数据存储在缓存中,则将该老用户数据扇区的最新数据迁移到该新条带中的该新用户数据扇区;若该老用户数据扇区的最新数据存储在闪存中,则从闪存中读取该用户数据扇区的最新数据并写入所述缓存,将该老用户数据扇区的最新数据迁移到该新条带中的该新用户数据扇区;其中,新条带中的扇区数等于失效后的物理通道数。
8.一种固态硬盘SSD访问装置,其特征在于,所述SSD中包括:缓存、三个以上物理通道、以及每个物理通道挂载的闪存,所述装置应用于所述SSD上,所述装置包括:
接收单元,用于接收写数据命令,确定与所述写数据命令中携带的待写入数据的逻辑区块地址LBA相对应的第一条带和第一扇区,其中,每个条带中包括三个以上扇区,且扇区数等于所述SSD中的物理通道数;
读写单元,用于若所述缓存中存在所述第一条带,则将所述待写入数据作为所述第一扇区的最新数据写入所述缓存,若所述缓存中不存在所述第一条带,则创建所述第一条带,将所述待写入数据作为所述第一扇区的最新数据写入所述缓存。
9.根据权利要求8所述的装置,其特征在于,每个条带包括的N个扇区中包括:用于存放用户数据的N1个用户数据扇区、以及用于存放校验数据的N2个校验数据扇区,N1+N2=N,N1>N2;所述接收单元具体用于按照以下公式确定LBA对应的条带的索引strip_index和扇区标识sector_id:
sector_id=LBA%N1;
其中,表示向下取整运算符,%表示取模运算符。
10.根据权利要求8所述的装置,其特征在于,每个条带中包括:用于存放用户数据的用户数据扇区、以及用于存放校验数据的校验数据扇区;所述装置还包括:计算单元,其中:
所述读写单元,用于针对所述第一条带中的每个用户数据扇区,若该扇区的最新数据存储在闪存中,则从闪存中读取该扇区的最新数据并写入所述缓存;还用于将所述计算单元计算得到的所述第一条带的校验数据扇区的校验数据写入所述缓存;还用于将所述缓存中存放的所述第一条带的所有扇区的最新数据写入闪存;
所述计算单元,用于对所述缓存中存放的第一条带的所有用户数据扇区的最新数据进行校验计算,得到所述第一条带的校验数据扇区的校验数据。
11.根据权利要求8所述的装置,其特征在于,所述读写单元还用于通过以下方式将所述缓存中存放的扇区的数据写入闪存:
确定该扇区对应的逻辑通道,查找与该逻辑通道对应的物理通道,将缓存中存放的该扇区的数据写入该物理通道挂载的闪存。
12.根据权利要求11所述的装置,其特征在于,每个条带中包括:用于存放用户数据的用户数据扇区、以及用于存放校验数据的校验数据扇区;则,
用户数据扇区对应的逻辑通道的标识d_logic_channel_id满足公式:
校验数据扇区对应的逻辑通道的标识p_logic_channel_id满足公式:p_logic_channel_id=strip_index%N;
其中,sector_id表示扇区标识,strip_index表示扇区所在条带的索引,%表示取模运算符。
13.根据权利要求8所述的装置,其特征在于,
所述接收单元,还用于接收读数据命令,确定与所述读数据命令中携带的待读取数据的LBA相对应的第二条带和第二扇区;
所述读写单元,还用于若所述缓存中存在所述第二条带、并且所述第二扇区的最新数据存储在所述缓存中,则从所述缓存中读取所述第二扇区的最新数据作为所述待读取数据;若所述缓存中存在所述第二条带、并且所述第二条带中的所述第二扇区的最新数据存放在闪存中,或者,若所述缓存中不存在所述第二条带,则从闪存中读取所述第二扇区的最新数据作为所述待读取数据。
14.根据权利要求8所述的装置,其特征在于,每个条带中包括:用于存放用户数据的用户数据扇区、以及用于存放校验数据的校验数据扇区;所述装置还包括:
检测单元,用于检测物理通道的状态;
恢复迁移单元,用于当所述检测单元检测到物理通道失效时,针对缓存中的老条带执行以下步骤:
从闪存中读取该老条带中除失效扇区以外的其它扇区的数据,使用读出的数据恢复所述失效扇区的数据,将恢复出的数据作为所述失效扇区的最新数据写入所述缓存;其中,老条带中的扇区数等于失效前的物理通道数,所述失效扇区对应的逻辑通道所绑定的物理通道失效;
针对该老条带中的每个老用户数据扇区,根据该老用户数据扇区的LBA确定该LBA对应的新条带和新用户数据扇区,若该老用户数据扇区的最新数据存储在缓存中,则将该老用户数据扇区的最新数据迁移到该新条带中的该新用户数据扇区;若该老用户数据扇区的最新数据存储在闪存中,则从闪存中读取该用户数据扇区的最新数据并写入所述缓存,将该老用户数据扇区的最新数据迁移到该新条带中的该新用户数据扇区;其中,新条带中的扇区数等于失效后的物理通道数。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710244793.5A CN108255414B (zh) | 2017-04-14 | 2017-04-14 | 固态硬盘访问方法及装置 |
EP18785096.1A EP3598290B1 (en) | 2017-04-14 | 2018-04-12 | Solid-state disk access |
US16/604,984 US11126377B2 (en) | 2017-04-14 | 2018-04-12 | Accessing solid state disk |
JP2019556277A JP6823734B2 (ja) | 2017-04-14 | 2018-04-12 | ソリッドステートディスクアクセス |
PCT/CN2018/082740 WO2018188618A1 (zh) | 2017-04-14 | 2018-04-12 | 固态硬盘访问 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710244793.5A CN108255414B (zh) | 2017-04-14 | 2017-04-14 | 固态硬盘访问方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108255414A true CN108255414A (zh) | 2018-07-06 |
CN108255414B CN108255414B (zh) | 2020-04-03 |
Family
ID=62721790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710244793.5A Active CN108255414B (zh) | 2017-04-14 | 2017-04-14 | 固态硬盘访问方法及装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11126377B2 (zh) |
EP (1) | EP3598290B1 (zh) |
JP (1) | JP6823734B2 (zh) |
CN (1) | CN108255414B (zh) |
WO (1) | WO2018188618A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112130762A (zh) * | 2020-09-07 | 2020-12-25 | 上海威固信息技术股份有限公司 | 一种固态硬盘数据存储与操作方法 |
CN112817533A (zh) * | 2021-01-29 | 2021-05-18 | 深圳忆联信息系统有限公司 | Ssd管理方法、装置计算机设备及存储介质 |
CN113918485A (zh) * | 2021-10-12 | 2022-01-11 | 广东省高峰科技有限公司 | 一种闪存资料防丢失方法、装置、设备及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112395216A (zh) * | 2019-07-31 | 2021-02-23 | 北京百度网讯科技有限公司 | 用于存储管理的方法、装置、设备和计算机可读存储介质 |
JP7491545B2 (ja) | 2019-12-27 | 2024-05-28 | Necソリューションイノベータ株式会社 | 情報処理方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090204872A1 (en) * | 2003-12-02 | 2009-08-13 | Super Talent Electronics Inc. | Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules |
CN101727295A (zh) * | 2008-10-31 | 2010-06-09 | 西安奇维测控科技有限公司 | 一种基于虚拟块闪存地址映射的数据写入及读出方法 |
CN101819509A (zh) * | 2010-04-19 | 2010-09-01 | 清华大学深圳研究生院 | 一种固态硬盘读写方法 |
CN101840364A (zh) * | 2010-01-29 | 2010-09-22 | 成都市华为赛门铁克科技有限公司 | 一种恢复数据的方法及存储装置 |
CN102713828A (zh) * | 2011-12-21 | 2012-10-03 | 华为技术有限公司 | 提供多设备镜像和条带功能的磁盘缓存方法、设备和系统 |
US20150058384A1 (en) * | 2013-08-26 | 2015-02-26 | Vmware, Inc. | Scalable distributed storage architecture |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4440803B2 (ja) * | 2005-03-03 | 2010-03-24 | 富士通株式会社 | 記憶装置、その制御方法及びプログラム |
US8959280B2 (en) * | 2008-06-18 | 2015-02-17 | Super Talent Technology, Corp. | Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear |
JP2012064158A (ja) * | 2010-09-17 | 2012-03-29 | Toshiba Corp | メモリ管理装置及びメモリ管理方法 |
CN102779548A (zh) * | 2011-05-09 | 2012-11-14 | 深圳市晶凯电子技术有限公司 | 用闪存介质作为存储体进行分级管理的固态存储装置及其构建方法 |
US9390020B2 (en) * | 2012-07-06 | 2016-07-12 | Seagate Technology Llc | Hybrid memory with associative cache |
KR102116713B1 (ko) | 2012-07-13 | 2020-06-01 | 삼성전자 주식회사 | 솔리드 스테이트 드라이브 콘트롤러, 솔리드 스테이트 드라이브, 솔리드 스테이트 드라이브의 데이터 처리 방법, 다채널 솔리드 스테이트 드라이브, 레이드 콘트롤러, 시퀀스 정보를 솔리드 스테이트 드라이브에 제공하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체 |
US11037625B2 (en) * | 2012-11-20 | 2021-06-15 | Thstyme Bermuda Limited | Solid state drive architectures |
US9703699B2 (en) * | 2014-09-17 | 2017-07-11 | Kabushiki Kaisha Toshiba | Hybrid-HDD policy for what host-R/W data goes into NAND |
KR102368071B1 (ko) * | 2014-12-29 | 2022-02-25 | 삼성전자주식회사 | 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템 |
KR20160083762A (ko) * | 2015-01-02 | 2016-07-12 | 삼성전자주식회사 | 스토리지 시스템에서의 매핑 테이블 관리 방법 및 이를 적용한 스토리지 시스템 |
US9678665B2 (en) * | 2015-03-06 | 2017-06-13 | Western Digital Technologies, Inc. | Methods and systems for memory page allocation |
SG11201802566PA (en) * | 2016-12-29 | 2018-08-30 | Huawei Tech Co Ltd | Storage system and solid state disk |
-
2017
- 2017-04-14 CN CN201710244793.5A patent/CN108255414B/zh active Active
-
2018
- 2018-04-12 US US16/604,984 patent/US11126377B2/en active Active
- 2018-04-12 WO PCT/CN2018/082740 patent/WO2018188618A1/zh unknown
- 2018-04-12 EP EP18785096.1A patent/EP3598290B1/en active Active
- 2018-04-12 JP JP2019556277A patent/JP6823734B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090204872A1 (en) * | 2003-12-02 | 2009-08-13 | Super Talent Electronics Inc. | Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules |
CN101727295A (zh) * | 2008-10-31 | 2010-06-09 | 西安奇维测控科技有限公司 | 一种基于虚拟块闪存地址映射的数据写入及读出方法 |
CN101840364A (zh) * | 2010-01-29 | 2010-09-22 | 成都市华为赛门铁克科技有限公司 | 一种恢复数据的方法及存储装置 |
CN101819509A (zh) * | 2010-04-19 | 2010-09-01 | 清华大学深圳研究生院 | 一种固态硬盘读写方法 |
CN102713828A (zh) * | 2011-12-21 | 2012-10-03 | 华为技术有限公司 | 提供多设备镜像和条带功能的磁盘缓存方法、设备和系统 |
US20150058384A1 (en) * | 2013-08-26 | 2015-02-26 | Vmware, Inc. | Scalable distributed storage architecture |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112130762A (zh) * | 2020-09-07 | 2020-12-25 | 上海威固信息技术股份有限公司 | 一种固态硬盘数据存储与操作方法 |
CN112130762B (zh) * | 2020-09-07 | 2024-01-26 | 上海威固信息技术股份有限公司 | 一种固态硬盘数据存储与操作方法 |
CN112817533A (zh) * | 2021-01-29 | 2021-05-18 | 深圳忆联信息系统有限公司 | Ssd管理方法、装置计算机设备及存储介质 |
CN113918485A (zh) * | 2021-10-12 | 2022-01-11 | 广东省高峰科技有限公司 | 一种闪存资料防丢失方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP6823734B2 (ja) | 2021-02-03 |
US11126377B2 (en) | 2021-09-21 |
CN108255414B (zh) | 2020-04-03 |
EP3598290A4 (en) | 2020-04-08 |
JP2020517026A (ja) | 2020-06-11 |
US20200159458A1 (en) | 2020-05-21 |
EP3598290B1 (en) | 2024-02-28 |
EP3598290A1 (en) | 2020-01-22 |
WO2018188618A1 (zh) | 2018-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108255414A (zh) | 固态硬盘访问方法及装置 | |
US11481121B2 (en) | Physical media aware spacially coupled journaling and replay | |
US8762661B2 (en) | System and method of managing metadata | |
KR101870521B1 (ko) | 스토리지 저널링을 개선하는 방법 및 시스템 | |
US7512864B2 (en) | System and method of accessing non-volatile computer memory | |
KR101678868B1 (ko) | 플래시 주소 변환 장치 및 그 방법 | |
US20140351526A1 (en) | Data storage controller with multiple pipelines | |
JP2016534439A (ja) | アトミック記憶操作のためのシステム及び方法 | |
US7730358B2 (en) | Stress testing method of file system | |
CN109902034B (zh) | 快照创建方法、装置、电子设备及机器可读存储介质 | |
CN104731674B (zh) | 使用mlc nvm存储电子系统固件的方法与设备 | |
CN110413454B (zh) | 基于存储阵列的数据重建方法、装置及存储介质 | |
US20110320689A1 (en) | Data Storage Devices and Data Management Methods for Processing Mapping Tables | |
CN102981969A (zh) | 重复数据删除的方法及其固态硬盘 | |
US20230342054A1 (en) | Method, electronic device and computer program product for processing data | |
US8938641B2 (en) | Method and apparatus for synchronizing storage volumes | |
WO2006095356A1 (en) | A method of logging transactions and a method of reversing a transaction | |
CN110504002B (zh) | 一种硬盘数据一致性测试方法与装置 | |
US9122416B2 (en) | Mainframe storage apparatus that utilizes thin provisioning | |
CN107273306A (zh) | 一种固态硬盘的数据读取、数据写入方法及固态硬盘 | |
CN114924923A (zh) | 一种硬盘写入点正确性验证方法、系统、设备及介质 | |
CN110187834A (zh) | 重删副本的数据处理方法、装置、电子设备 | |
CN106547472A (zh) | 存储阵列管理方法及装置 | |
CN112527693A (zh) | 一种固态硬盘磨损均衡方法、系统、设备及介质 | |
CN107402890A (zh) | 一种基于固态盘阵列和缓存的数据处理方法及系统 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 310052 11th Floor, 466 Changhe Road, Binjiang District, Hangzhou City, Zhejiang Province Applicant after: Xinhua Sanxin Information Technology Co., Ltd. Address before: 310052 11th Floor, 466 Changhe Road, Binjiang District, Hangzhou City, Zhejiang Province Applicant before: Huashan Information Technology Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |