固态双硬盘好还是纯固态好换回普通双硬盘好还是纯固态好后处理

电脑双双硬盘好还是纯固态好好還是纯固态好这个问题早前固态双硬盘好还是纯固态好上市的时候受到很多网友的热烈讨论,但是对于现在的情况来说答案已经很清楚了,下面一起发表你的看法聊聊电脑双双硬盘好还是纯固态好好还是纯固态好吧

因为固态双硬盘好还是纯固态好的读写数据的速度远遠大过机械双硬盘好还是纯固态好,所以系统安装的位置强烈推荐安装到固态双硬盘好还是纯固态好上,开机和系统运行速度都有很大提升毕竟目前一个120G的固态双硬盘好还是纯固态好大概100多,现在固态盘已经很便宜了如果你的主板支持NVMe接口那速度就更加快了。

对于游戲玩家来说除了系统安装在固态上面,如果你的游戏装在机械双硬盘好还是纯固态好上那么游戏加载速度就会变成龟速,这个时候游戲依然需要安装到固态盘目前的120G固态估计无法满足,需要至少256G以上如果是土豪级朋友预算和需求都是没有问题的,但是普通游戏玩家256G凅态已经足够了

对于工作上需要存储空间大的文件,比如大型室内设计、影楼婚纱等等如果纯固态双硬盘好还是纯固态好存储资料成夲是非常高的,万一固态盘坏了是无法修复的,普通的机械盘还可以找回部分数据小白系统推荐双双硬盘好还是纯固态好(固态+机械),特别是电脑有需要存储重要的资料毕竟双硬盘好还是纯固态好有价,数据无价

对于普通用户而言,只是玩玩游戏娱乐看剧又没囿土豪般的出手,只有预算和需求综合衡量还是追求性价比高才是王道,那么纯固态或者双双硬盘好还是纯固态好都可以

以上就是关於双双硬盘好还是纯固态好好还是纯固态好的解答。对于普通用户而且还是用笔记本电脑的那么就不要瞎折腾了,老老实实使用纯固态等你有了需求和预算再考虑换大点的固态或者双双硬盘好还是纯固态好吧。我是小白系统关注我获取更多电脑科普知识,我们下期见!

}

原标题:专业深度好文:固态双硬盘好还是纯固态好SSD 核心如何设计

本文介绍了此类设计选择的分类,并使用跟踪驱动的模拟器和从实际系统中提取的工作负载跟踪分析各种配置的可能性能我们发现SSD性能和生命周期对工作负载非常敏感,并且通常较高的复杂系统问题出现在存储堆栈中甚至在分布式系统Φ与设备固件相关。

  • 最快多久可以代替传统双硬盘好还是纯固态好
  • Flash块受磨损影响

SSD设计中出现的许多问题似乎都模仿了以前在存储堆栈中絀现的问题在解决这些难题时,设计选择有相当大的自由度我们表明以下系统问题与SSD性能有关:

  1. data placement:在SSD的芯片上仔细放置数据不仅对负载岼衡至关重要,而且对于实现耗损均衡至关重要
  2. parallelism: 任何给定闪存芯片的带宽和操作速率都不足以实现最佳性能因此,存储器组件必须协调鉯便实行并行操作
  3. write ordering:Nand闪存的属性给SSD设计者带来了难题。小的随机排序的写入尤其棘手。
  4. workload management: 性能高度依赖于工作负载例如,在顺序工作負载下产生良好性能的设计决策可能不会使非顺序工作负载受益反之亦然。

随着SSD复杂性的增加现有的磁盘模型将不足以预测性能。特別是由于磁盘写入操作的位置,随机写入性能和磁盘寿命会有很大差异我们引入了一种基于清除效率来表征这种行为的新模型,并提絀了一种新的耗损均衡算法来延长SSD寿命

闪存包接收命令和传输数据的串行接口是SSD性能的主要瓶颈。三星部分需要大约100μs才能将4KB页面从片內寄存器传输到片外控制器这使将数据从NAND单元移入寄存器所需的25μs相形见绌。当这两个操作串联时闪存包每秒只能产生8000页读取(32 MB /秒)。如果在die内采用交织则单个部分的最大读取带宽提高到每秒10000个读取(40 MB /秒)。另一方面写入每页需要与读取相同的100μs串行传输时间,但编程时间為200μs在没有交错的情况下,这给出了每秒3330页(13 MB /秒)的最大单部分写入速率交错串行传输时间和程序操作使总带宽加倍。理论上因为我们囸在考虑的封装上有两个独立的die,我们可以将两个die上的三个操作交错放在一起这将允许写入和读取以串行互连的速度进行。

当操作等待時间大于串行访问等待时间时交错可以提供相当大的加速。例如在某些情况下,昂贵的擦除命令可以与其他命令并行进行作为另一個示例,尽管单个写入操作的成本为200μs但是如图所示,两个封装之间的完全交错packages复制可以以接近100μs的每页 进行这里,4个源平面和4个目標平面以高速复制pages而不在同一plane对上执行同时操作同时最佳地利用连接到两个闪存die的串行总线引脚。加载pipe后每隔一段时间(100μs)完成写入。

並行的研究:采用交织技术外部串行,内部并行

即使闪存架构支持交错,它们也会受到严格限制因此,例如同一闪存plane上的操作不能交错。这表明相同的package交错最适用于精心设计的一组相关操作例如图2所示的多页读或写 。我们检查的三星部件支持快速内部复制操作尣许将数据复制到片上的另一个模块而不会穿过串行引脚。这种优化是有代价的:数据只能在同一个闪存plane(2048块)内复制两个这样的副本本身鈳以在不同的plane上交错,结果产生与图2所示的完全交错的封装间复制相似的性能,但不要垄断串行引脚

NAND闪存的性质决定了写入不能像在旋转磁盘上那样执行。此外为了实现可接受的性能,必须尽可能顺序执行写入如在log中。由于每个单个逻辑磁盘块地址(LBA)的写入对应于不同闪存页面的写入因此即使最简单的SSD也必须在逻辑块地址和物理闪存位置之间保持某种形式的映射。我们假设逻辑块映射保存在易失性存储器中并在启动时从易失性存储器重建。

pool的属性时会想到以下变量。

  • Page span:逻辑页面可能跨越不同packages上的相关pages从而创建了并行访问部分pages的可能性

以上这些变量受三个条件的约束:

  • Parallel access:分配LBA到物理地址时,应尽可能少干扰并行访问这些LBA的能力例如,如果始终同时访问.LBAn则不应将咜们存储在需要逐个访问的组件中
  • Block erasure:如果没有先擦除,就无法重写Flash页面只能删除固定大小的连续页面块

定义allocation pool 的变量会与这些约束进行权衡。例如如果LBA空间的大部分是静态映射的,那么平衡负载的余地很小如果连续范围的LBA被映射到相同的物理die上,则large chunk中的顺序访问的性能將受到影响使用较小的逻辑页面大小,将需要更多工作来消除擦除候选者的有效页面如果逻辑页面大小(单位跨度)等于块大小,则擦除被简化因为写入单元和擦除单元是相同的,但是所有小于逻辑页面大小的写入都会导致读取 - 修改 - 写入操作涉及逻辑页面的部分未被修改

RAID系统通常跨多个物理磁盘划分逻辑上连续的数据块(例如64KB或更大)。在这里我们使用fine granularity精细粒度来在多个闪存die或package上分配逻辑页面(4K)。这样做既鈳以分配负载也可以将连续的页面放在可以并行访问的不同package上。

使用flash blocks作为allocation pool中的自然分配单元,在任何给定时间内一个pool中可以具有很多可鼡于保持写入的active blocks,为了支持继续分配新的活动块我们需要一个垃圾收集器来枚举以前使用过的块,这些块必须被擦除和回收如果logical page size小于閃block size, 则必须在擦除之前清除闪存块。Cleaning可以这样总结当完成一个page写入,那么之前page映射的page 位置将被取代,因为这个位置的内容现在已经被更新了在回收候选的block时,所有未被取代的page必须在擦除前写入其他位置

最坏的情况下,当被取代的页面均匀地分布在所有块上时必须为每个噺数据写入发出N-1个cleaning写入( 每个块有N个 页面)。当然大多数工作负载会产生写入活动的集群,当数据被覆盖时会导致一个block上有多个被取代的頁。我们引入术语cleaning efficiency来量化块清理期间取代页面与总页面的比率尽管存在许多用于选择用于回收的候选块的可能算法,但都是优化cleaning efficiency值得紸意的是,使用条带化来增强顺序地址的并行访问可以抵消被取代页面的集群

block列表,使用GC填充在这篇论文中假设一种贪婪算法,跟据潛在的清除效率来选择回收的blocksNand闪存每个block的擦除数量有限。因此在选择要清除的block时,是所有的块能够均匀的老化这个过程叫做平衡磨損(wear-leveling)。所以设计时候要考虑怎么选择这个要被擦除的候选block能够同时平衡磨损,提出优化贪婪算法

在模拟传统磁盘接口的SSD中,没有free磁盘扇區的抽象因此,就其广告容量而言SSD总是满的。为了执行cleaning , 必须有足够的备用blocks(不计入总容量)来使得写入和和清除继续执行并允许在块发苼故障时更换块。一个SSD配置overprovisioned备用容量以减少对前台清洁块的需求。延迟块清除还可以在非随机工作负载中更好地聚集被取代的页面

在湔面,我们规定给定的LBA静态映射到特定的allocation pool然而,cleaning可以以更细的粒度操作这样做的一个原因是利用闪存架构中的低级效率,例如前面描述的内部copy-back操作 该操作仅适用于在同一plane内移动page的情况。由于2048 blocks的单个闪存plane代表用于负载分配的非常小的allocation

中的log-cleaning看的很相似但是,除了我们模擬块存储而不是文件系统的明显区别之外以严格的磁盘顺序写入和清除的日志结构存储不能选择候选块以便产生更高的清除效率。而且与类似LFS的文件系统一样,组合工作负载太容易了这会导致所有可恢复空间远离日志的清除指针。例如反复写入相同的块集将需要在磁盘内容上进行完整循环,以使清洁指针到达日志末尾附近的空闲空间并且,与日志结构文件系统不同此处的磁盘始终为“满”,始終对应于最大清洁压力

如果SSD要实现的带宽或I / O速率高于2.2节中描述的单芯片最大值 ,它必须能够并行处理多个闪存package上的I / O请求利用额外的串荇连接来实现他们的针脚。假设与闪存完全连接有几种可能的技术可以获得这种并行性,其中一些我们已经触及过

Parallel requests: 在完全连接的闪存陣列中,每个元素都是一个独立的实体因此可以接受单独的请求流。然而维持每个元素的队列所需的逻辑的复杂性对于具有降低的处悝能力的实现可能是一个问题。

Ganging: 一个gang的闪存package可以同步使用一组闪存包来优化多页请求这样做可以允许并行使用多个package,而不会出现多个队列的复杂性但是,如果只有一个请求队列流向这样的gang则当请求不跨越所有组件时,元素将处于空闲状态

Interleaving: 交错的技术可以用于提高带寬并且隐藏昂贵操作的延迟。

Background cleaning:在一个完美的情况下cleaning将在后台连续执行,否则空闲组件使用它不需要数据穿过串行接口的操作(例如内蔀复制)可以帮助隐藏cleaning成本。

当无法完全连接到闪存package时情况会变得更加有趣。对于一个gang下的闪存packages有两个选择是显而易见的:1)packages连接到串行總线,其中控制器动态地选择每个命令的目标; 2)每个package具有到控制器的单独数据路径但控制引脚连接在单个广播总线中。

交错可以在gang中发挥莋用可以在一个元件上执行诸如块擦除的长时间运行操作,而在其他元件上进行读取或写入(因此控制线仅需要保持足够长的时间来发出命令)唯一的限制是竞争共享数据和命令总线。这在块回收期间可能变得非常重要因为块擦除比其他操作昂贵一个数量级。

在另一种并荇形式中可以使用平面内复制来在后台实现块清理。但是如果页面在两个芯片之间以最大速度流式传输,则可以以稍低的延迟进行清悝当然,这种好处是以占用两组控制器引脚为代价的

利用并行性的任何一种选择都不太可能适用于所有工作负载,当然随着SSD容量的增加,很难确保控制器和闪存包之间的完全连接毫无疑问,最好的选择取决于工作负载属性例如,高度顺序的工作负载将受益于组合具有固有并行性的工作负载将利用深度并行的请求排队结构,并且清洁效率差(例如没有位置)的工作负载将依赖于与之兼容的清理策略。前景负载

Flash是非易失的长久存储介质,然而为了恢复SSD状态,重建逻辑块映射和所有相关数据结构至关重要这种恢复还必须考虑到失敗块,以便不将它们重新引入到活动使用中有几种可能的方法来解决这个问题。大多数利用每个闪存页面包含的专用区域(128字节)的元数据存储该元数据存储可用于存储映射到给定闪存页面的逻辑块地址。在这里提到的模拟器中该技术不需要在启动时访问每个page,以为要存儲每个块而不是页的映射信息注意在这类的算法中,内容已被取代但尚未擦除的页面将在恢复期间多次出现在这些情况下,稳定存储表示必须允许恢复算法确定allocation pool中逻辑页的最新实例

通常,闪存部件不提供错误检测和纠正这些功能必须由应用程序固件提供。页面元数據还可以包含错误检测代码以确定哪些页面有效以及哪些块无故障以及纠错代码以从NAND闪存预期的单比特错误中恢复。假设存在单比特ECC彡星指定块寿命[ 29 ]。通过使用更稳健的纠错可以延长块寿命

痛过在相变RAM [ 14 ]或磁阻RAM [ 9 ]中保持逻辑块映射,可以完全绕过恢复SSD状态的问题这些非噫失性存储器可以以字节粒度写入,并且不具有NAND闪存的块擦除约束前者尚未广泛使用,后者可以小容量获得但成本是NAND闪存的1000倍。或者备用电源(例如大电容器)可能足以将必要的恢复状态刷新为按需闪存。

当前的SSD可以从理想的工作负载(workloads)中获得非常好的性能数据例如,在順序工作负载下这些设备会使任何互连,RAID控制器[ 24 ]或主机外设芯片组饱和但是,目前还不清楚单个顺序流(single sequential stream)或多个流(multi streams)是否属实如果是多個,有多少流是最佳的?所述的写入性能是否会影响cleaning开销?什么是随机写入性能以及在cleaning过程中有关被取代页面分布的假设是什么?

本节介绍跟踪驅动的仿真环境使我们能够深入了解各种工作负载下的SSD行为。

这里用到的仿真环境是CMU Parallel Data Lab的DiskSim仿真器(如果你是专门搞SSD内部的算法,现在比较受欢迎的是flashsim网上可以查的到开源代码,C++编程的好处是面向对象,把SSD内部器件都设计成对象在Linux环境下做测试)

DiskSim并不专门支持SSD的仿真,但昰其处理trace log的基础架构及其可扩展性使其成为定制的良好工具

DiskSim模拟存储器件的层次结构,比如总线和控制器(例如:RAID)以及磁盘这里实现了從通用的旋转磁盘模块派生的SSD模块。由于该模块最初不支持多个请求队列因此这里添加了一个辅助级别的并行元素,每个元素都有一个密封队列代表着flash的每个元素或者gangs。还添加了logic来序列化来自这些并行元素的request完成对于每一个元素,维护了数据结构来表示SSD的逻辑映射块cleaning 状态和weal-leveling状态。在处理每个请求时跟据下表的规范引入充分的延迟来模拟实时延迟。如果跟据模拟器的状来要求cleaning和回收就会引入额外嘚延迟,并且相应的更新状态这里添加了配置参数以启用后台cleaning,gang大小gang组织(例如交换或共享控制),交错(interleaving)和过度配置(overprovisioning)等功能

这里提供了┅系列工作负载跟踪的结果,其命名如下以便进行说明:TPC-C,ExchangeIOzone和Postmark。

首先检查了DiskSim生成的综合工作负载此工作负载来表征顺序和随机访问請求流的基线行为。IOzone 和Postmark 是在具有750 GB SATA磁盘的工作站级PC上运行的标准文件系统基准测试这些基准测试需要的容量相对较小,可以在单个SSD上进行模拟尽管我们没有模拟on-disk缓存,但在上面的跟踪中磁盘缓存已启用,从而为写入产生不自然的低请求到达间隔时间

TPC-C是完善的数据库基准的实例。我们的跟踪是30分钟的大规模TPC-C配置跟踪运行16,000个仓库。跟踪系统包括14个RAID(HP MSA1500光纤通道)控制器每个控制器支持28个高速36 GB磁盘。我们的目標是一个服务于非日志数据表的控制器:混合读/写工作负载读取数量是写入的两倍。(13个非日志控制器具有相似的工作负载)虽然每个控淛器管理超过1TB的存储,但基准测试每个控制器仅使用大约160GB需要大量磁盘才能获得可以并行处理请求的磁盘臂。此工作负载中的所有请求嘟是8KB块的倍数对齐非常重要,因为对闪存的未对齐请求会为每次读取或写入添加页面访问权限我们配置中的几个逻辑大小未对齐,产苼了所有LBA的LBA mod 8 = 7的跟踪我们通过对此跟踪中的大约6.8M事件进行后处理来纠正此问题。

Exchange工作负载来自运行Microsoft Exchange的服务器这是一个专门的数据库工作負载,具有大约3:2的读写比跟踪服务器有6个非日志RAID控制器,每个TB级别为1 TB(14个磁盘)我们从其中一个控制器中提取了大约65000个事件的15分钟跟踪,涉及超过250GB磁盘容量的请求

首先介绍DiskSim工作负载生成器合成的简单工作负载的结果。然后我们根据宏观基准改变不同的配置参数并研究咜们对SSD性能的影响

基准配置是具有32GB闪存的SSD:8个完全连接的闪存package。在此配置中allocation pool的大小与闪存package相同,逻辑page和stripe大小为4KBcleaning需要穿过package串行接口进行數据传输。由于我们只对小型SSD进行建模因此较大的工作负载要求模拟RAID控制器。我们假设每个SSD op为15%这意味着主机可用的磁盘容量约为27 GB。当剩余少于5%的空闲区块时我们会调用cleaning。TPC-C工作负载在此配置中需要6个连接的SSD并且Exchange工作负载需要10个。

运行了一组6个合成微基准测试涉及4 KB I / O操莋,下表给出了访问延迟和相应的I / O速率 在完全连接的SSD中,顺序和随机I / O具有相同的延迟请注意,此延迟包括传输页面数据和128字节页面元數据的时间启用cleaning后,写入操作的延迟会反映额外的开销请注意,顺序写入可以提高cleaning效率从而减少cleaning开销。

逻辑页面大小的选择对整体性能有重大影响, 每个小于逻辑页大小的写操作都需要read-modify-write操作当以单位深度(例如,同一die上全部逻辑页面)运行全块页面大小(256KB)时TPC-C产生的平均I / O延遲超过20毫秒,比4KB页面大小可以预期的那样超过两个数量级八个package配置(256KB页面大小)可以(几乎没有)跟上每个SSD 300 IOPS的平均跟踪速率,但这仅仅是由于SSD中鈳用的固有并行性当page-size较小时可以做的更好。4KB的Page size 的TPC-C的平均延迟为200μs尽管工作负载没有足够的事件来测试40,000 IOPS。

前面说到通过在单个闪存package或die內交错多个请求,可以提高I / O性能这个模拟器通过注意当两个请求在闪存package上排队时可以考虑交错,闪存package可以根据硬件约束同时进行下图顯示了关于基线配置标准化的I / O速率,并显示了各种类型的交错如何改善配置的性能虽然IOzone和Postmark显示吞吐量增加,但TPC-C和Exchange不会受益于交错对于這两个工作负载,排队请求的平均数量(每个闪存package由DiskSim测量)非常接近于零。没有排队不会发生交错。IOzone和Postmark具有重要的顺序I / O组件当由于stripe边界洏将大的顺序请求分派给多个package时,发生排队并且交错变得有益有人可能认为TPC-C将以8KB的增量从8KB请求中剥离,从而允许每个请求在package或die级交错泹是,在这种情况下将每个请求拆分为并行的4KB请求是优越的。

组合(ganging)闪存组件提供了扩展容量的可能性而无需线性扩展引脚密度和固件邏辑复杂性。提出了两种类型的联合:share-bus和share-control

IOPS,因此即使必须串行访问组合组件16gangs也足够快。当使用简单的页面级striping时没有明显的负载平衡問题,即使人们会期望通过ganging来加剧这些问题

share-control组合可以通过两种方式组织。首先尽管闪存packages是组合的的,但是可以对每个package进行单独的分配囷cleaning决策使得能够并行操作,例如当两个读取同时呈现在不同gangs成员上时,它们可以同时执行我们称之为异步share-control gangs。其次其次,通过利用與gang大小相等的逻辑页面深度可以同步管理gang中的所有packags,例如8宽gang的页面大小为32KB,我们将此设计称为同步share-control gangs我们使用plane内copy-back来实现对同步组合中尐于一页的写入的read-modify-write。

下图显示了来自各种同步和异步share-control gang大小的标准化响应时间(相对于基线配置)由于同步gang的逻辑页面大小大于相应的异步gang,洇此它限制了可以一个gang单元中执行的同时操作的数量因此与异步gamg相比,同步gang统一地表现不佳同步8路gang不能在模拟实时中支持IOzone工作负载,洇此其结果在图中不存在

Cleaning一个block需要设计把有效页面迁移到另一个block。如果源块和目标块在同一个palne内则可以使用Copy-back移动页面,而无需通过串荇引脚传输它们否则,页面可以通过串行引脚在plane之间移动下表列出了每个package的平均清洁过的块数,clean一个块的平均时间以及平均cleaniing效率使鼡Copy-back,TPC-C显示每块cleaning成本提高40%尽管清理了大量的块,但IOzone和Postmark并没有显示任何Copy-back的好处这些基准产生了完美的清洁效率; 它们在cleaning期间不移动任何页面。

SSD需要最少数量的空闲块才能正常运行; 例如需要空闲块来在清理期间执行数据传输或者支持突然的写入请求突发。增加此最小块阈值会提早触发cleaning从而增加观察到的开销。下图显示了随着我们增加空闲块阈值的访问延迟的变化虽然TPC-C中的访问延迟随着阈值而增加,但其他笁作负载几乎没有差别图8(b)解释了不同工作负载之间的访问延迟的这种差异 ,其绘制了在cleaning期间移动的页面数与空闲块阈值之间的关系图 8(a)囷 8(b)表明增加最小空闲块阈值可能会影响SSD的整体性能,具体取决于在工作负载下移动的页面

4.4 关于设计权衡的小总结

下表简要概述了上面讨論的设计技术的优点和缺点。我们认为这些权衡在很大程度上是相互独立的但是对未来工作的假设进行了严格的检验。

在下面的讨论中提出了适用于NAND闪存SSD的cleaning和wl算法。假设SSD实现了面向块的磁盘接口该接口不提供最佳数据放置或可能长寿的先验知识。

高效cleaning虽然可以减少整體wear但不能转化为均匀wear。选择贪婪方法(最大cleaning效率)的缺点是可能一次又一次地使用相同的块并且具有相对冷的内容的大量块可能保持未使鼡。比如如果50%的块包含永远不会被取代的冷数据,并且其余块包含经常修改的热数据则要擦除的块始终从热块中取出。这就会导致热塊的寿命被消耗而冷块不被使用浪费了设备的一半寿命。

我们的目标是设计一个块管理算法以便延迟任何单个块的寿命期限; 也就是说,我们希望避免一个或几个块寿命到期然而大多数块还没有到期。为此我们建议跟踪所有块的剩余平均寿命。任何块的剩余寿命应在岼均剩余寿命的年龄差异 (例如20%)内

只要选择剩余生命周期超过阈值的页面,就可以通过运行GC策略来实现此期望策略为此,我们必须在持玖存储中保留注意块擦除计数(例如在第一页的元数据部分中)。我们应该做些什么来磨损这些块使其低于阈值?一种简单的方法是仅在候选塊的剩余寿命超过阈值时允许回收这样做可以排除大量的块,这反过来会导致剩余的块更频繁地回收并且cleaning效率较差例如,如果25%的块具囿冷数据而剩余的75%具有均匀访问的热数据那么在经过一定数量的写入之后,后者将被磨损并且变得不适合被擦除随后,回收将集中在含有冷数据的25%的块上所以这些块将被4倍速度被重用,每次擦除的页数相应减少因此,我们需要避免在很长一段时间内大量的块变成不洅符合回收

我们可以对其使用率进行限速,而不是冻结废旧块的回收这里可以使用随机化来均匀地分散速率限制对磨损块的影响。我們使用类似于Random Early Discard 的方法其中回收概率从1线性下降到0,因为块的剩余寿命从平均值的80%下降到0%

另一个减少磨损块的使用率是把冷数据迁移到咾的块中。迁移数据时像往常一样执行cleaning,但不是将回收块附加到allocation pool队列而是使用冷块中的数据来填充它。然后将冷块再回收并添加到空閑队列中例如,如果块中的剩余生命周期低于退休年龄(例如平均剩余生命期的85%),则可以触发此操作 退休年龄应小于 平均剩余寿命的姩龄差异,以便在限速开始之前将冷数据迁移到磨损的块

识别冷数据的一种方法是查找自上次擦除以来剩余寿命和时间超过指定参数的塊。通过跟踪上次在其元数据中写入块的时间可以使该近似更准确。在这种情况下重要的是温度元数据随着内容移动到新的物理块而隨内容一起移动。迁移块时迁移不应影响其温度指标。然而cleaning过程可以在同一块中对不同温度的页面进行分组,在这种情况下所得到嘚块温度需要反映聚集体的温度。

总而言之我们提出运行贪婪策略(例如,最该被取代的页面)来选择要回收的下一个块如下所述。

如果所选块中的剩余生命周期低于 平均剩余生命周期的退休年龄则将冷数据从迁移候选队列迁移到此块中,并回收队列的头块使用超过参數阈值的块填充队列以保留生命周期和持续时间,或者通过跟踪内容温度来选择迁移候选者

否则,如果所选块中的剩余寿命低于 ageVariance则限淛块的回收,其概率随着剩余寿命降至0而线性增加

我们运行IOzone(由于其高cleaning率)来研究上述的耗损均衡算法。对于我们的实验我们将闪存块的壽命从100K减少到50个循环,以便 ageRariance(设置为20%)和 retirementAge(设置为85%)阈值变得相关表7和 表 8 介绍了3种不同技术的结果:贪婪算法,贪婪的cleaning速率限制磨损的块贪婪嘚cleaning速率限制和冷数据迁移。虽然平均块寿命在各种技术中是相似的但调用迁移会在运行结束时提供更小的剩余块寿命标准偏差。此外通过迁移,没有块到期(例如超过擦除限制的块)。由于简单的贪婪技术不执行任何速率限制因此当使用速率限制时,与没有速率限制相仳更少的块到期。表 8列出了平均值周围闪存块寿命的分布可以看出,冷数据迁移提供了比其他选项更好的聚类

跨块迁移冷页的成本會产生与工作负载相关的性能成本。我们对IOzone的损耗均衡模拟涉及每个package7902次迁移这增加了4.7%的平均I / O操作延迟开销。

实现传统磁盘块接口的系统從文件系统的角度来看通过管理不受影响的磁盘块产生不必要的开销在随机工作负载下,半满的磁盘将具有两倍于完整磁盘的cleaning效率(除了那些op的磁盘外所有磁盘都已满)。以前关于语义智能磁盘系统的工作已经展示了在磁盘级别提供更多文件系统信息的好处虽然实现纯磁盤接口的SSD从兼容性的角度提供了优势,但是值得考虑SSD API是否可以支持未使用块的抽象通过这样的修改,SSD性能将随着自由空间的百分比而变囮而不是总是遭受最大化的cleaning负载和磨损。

如果SSD了解内容易变性则可以减少cleaning负载。例如某些文件类型(如音频和视频文件)通常不会被修妀。如果在磁盘块级别可用则此信息将提供比上述基于历史记录的近似值更好的预测度量。更重要的是如果可以预先识别冷数据,那麼有更好的机会为热数据建立局部性热数据的定位将导致更好的cleaning效率。

我们将讨论设计固态存储设备提高性能的文件系统以及为此类設备开发算法和数据结构的相关工作。

以前关于固态存储设计的工作主要集中在资源受限的环境如嵌入式系统或传感器网络(例如,Capsule [ 19 ]MicroHash [ 34 ])。這项工作主要涉及小型闪存设备(高达几百MB)低功耗,抗冲击和尺寸是主要考虑因素MicroHash索引试图在存在低能量预算的情况下支持对存储在闪存芯片上的数据的时间查询。Nath和Kansal提出FlashDB [ 23]混合B + -tree索引设计。关键思想是根据读写频率采用不同的更新策略:对经常读取或不经常写入的页面进荇就地更新并为经常编写的页面进行日志记录。

虽然嵌入式和传感器环境中的工作对固态器件的工作和约束提供了有用的见解但我们嘚工作系统地探索了高性能存储系统中的设计问题。在这些环境中操作吞吐量通常是最重要的关注度量。

混合磁盘是另一个研究领域和商业利益这些设备将一小部分闪存与更大的传统磁盘放在一起,以提高性能Flash不是最终的持久存储,而是一个写缓存(write-cache)来改善延迟混合磁盘上的非易失性缓存可以通过特定的ATA命令进行控制。

文件系统还使用非易失性存储器来记录数据或请求WAFL 是一个这样的文件系统,它使鼡非易失性RAM(NVRAM)来记录自上一个一致点以来它已处理的NFS请求在不清理的关闭之后,WAFL重放日志中的任何请求以防止它们丢失

混合磁盘和NVRAM方法使用闪存作为旋转磁盘的附加存储。在我们的设计中固态设备可以替代旋转磁盘,从而提供更好的操作吞吐率

Kim和Ahn [ 17 ]提出了一种缓存管理筞略,该策略可以提高使用块大小逻辑页面运行的SSD的随机写入性能它们尝试同时刷新占用同一块的写入缓存页面,从而减少read-modify-write开销如果笁作负载不会超出缓存或需要立即写入持久性,则此方法很有效此外,处理突发或重复写入的写入缓存是我们的方法的补充

本文还提絀了特定于闪存设备的文件系统。大多数这些设计都基于Log-Structured File System, 作为补偿与擦除相关的写入延迟的一种方法JFFS及其后继者JFFS2 [ 27 ]是用于flash的日志文件系统。JFFS文件系统对于存储易失性数据结构不是有效的并且需要完全扫描以在崩溃时从持久存储重构这些数据结构。JFFS2以某种特殊的方式执行耗損均衡cleaner在每100次cleaning时选择具有有效数据的块,而在其他时间选择具有大多数无效数据的块YAFFS 是用于嵌入式设备的闪存文件系统。它处理磨损岼衡的处理类似于处理坏块这些块在设备被使用时出现。嵌入式微控制器文件系统的其他示例包括事务性闪存文件系统[ 11 ]和高效日志结构囮闪存文件系统前者设计用于更昂贵的字节可寻址NOR闪存,其限制比NAND闪存少得多后者是为使用NAND闪存的传感器节点设计的。它支持简单的垃圾收集并提供可选的尽力而为崩溃恢复机制。

将我们的方法与存储堆栈中较高的改进(例如闪存设备的专用文件系统)进行比较是有用的闪存控制器的增强功能可以避免在重写自定义闪存文件系统方面投入大量精力。它还可以通过导出即使使用现有文件系统也能很好地运荇的“闪存盘”来减轻从旋转磁盘转换到基于闪存的存储的开销

在提出和评估特别适合在闪存设备中操作的算法和数据结构方面已经做叻很多先前的工作。最近的一项调查更详细地讨论了这项工作的大部分内容

耗损均衡是闪存设备的重要约束,并且已经提出了若干提议來有效地执行它增加了设备的使用寿命。Wu和Zwaenepoel 使用块的相对磨损数来进行磨损平衡与我们的方法类似,当选择用于清洁的块超过磨损计數时数据被交换。Wells 提出了一种基于效率和损耗均衡的加权组合的回收策略而Chiang和Chang 的工作使用了即将使用块的可能性,这相当于数据的逻輯热度或冷度,在选择清洁的区块内

Myers最近的工作研究了利用闪存芯片提供的固有并行性的方法。他将一个块分段并将其存储在不同芯片上嘚多个物理页面上假设基于工作负载的动态条带化或复制策略将优于静态策略。他的工作重点是闪存对数据库工作负载的适用性并得絀结论认为尚无法广泛采用。相比之下我们的设计和分析表明,虽然存在多种权衡但SSD对于诸如TPC-C之类的事务性工作负载来说是可行且可能是有吸引力的选择。

正如我们所示SSD有许多设计权衡因素会影响性能。硬件和软件组件以及工作负载之间也存在显着的相互作用我们嘚工作可以深入了解所有这些组件必须如何合作才能生成满足目标工作负载性能目标的SSD设计。从硬件角度来看SSD接口(SATA,IDEPCI-Express)和封装组织决定叻理论上的最大I / O性能。在软件方面分配池的属性,负载平衡数据放置和块管理(耗损均衡和清理)与工作负载特性相结合,可确定整体SSD性能此外,我们已经证明所有设计都可以受益于平面交错和某种程度的过度配置我们已经演示了一种基于仿真的技术,用于对从真实硬件中提取的迹线驱动的SSD性能建模在某些情况下,跟踪系统需要的存储组件对于大多数组织来说太昂贵无法提供实验目的。我们的仿真框架已证明具有弹性和灵活性我们期望继续添加我们可以建模的行为集。共享控制组合和精确的磨损均衡数据是感兴趣的特定主题

没囿固定的规则将NAND闪存作为磁盘存储集成到计算机系统中。然而NAND的块访问性质表明面向块的接口通常是合适的。虽然超出了这项工作的范圍但我们怀疑我们的仿真技术将适用于独立于架构的NAND闪存块存储,因为仍会出现相同的问题(例如清洁耗损均衡)。

基于闪存的存储肯定會在未来的存储架构中发挥重要作用我们的仿真结果的一个必然结果是,支持大量TPC-C工作负载所需的存储系统(过去涉及数百个主轴)将来可能会被少量类似SSD的设备所取代我们的工作代表了理解和优化此类系统性能的一步。

点击阅读原文免费申请阿斯加特SSD ↓↓

}

我要回帖

更多关于 双硬盘好还是纯固态好 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信