U盘存储:闪存如何避免数据丢失?

所有存储设备都比许多人意识到的要复杂得多 。NAND 设备(包括 SSD、USB 拇指驱动器等)都容易出现故障,这与存储的 One Job? 背道而驰:把我要求你为我保留的正确位还给我 。
术语的几个定义,首先是:
SSD:代表固态驱动器(或磁盘),不需要任何移动部件 。SSD 更像是一种外形而非内存技术,但这些术语经常(错误地)互换使用 。
闪存:是一种不需要电源的存储器 。也就是说,您不会在电源关闭时丢失数据 。DRAM、sRAM 等是易失性存储器(它们在电源关闭时会丢失数据),因此这些类型的存储器不被视为闪存 。
NAND:是闪存设备中常用的实际非易失性存储器类型,恰好被构建到 SSD 外形中 。它还用于计算机的 BIOS 芯片 CompactFlash(用于数码相机、USB 记忆棒、视频游戏机的存储卡等 。
阅读更多:SSD(固态硬盘)和HHD的区别,哪个更好?
现在,我们都知道 Flash 技术非常快 。事实上,它们是如此之快,我们为什么要使用其他东西呢?
问题在于 NAND 技术并不完美 。事实上,就像其他任何事情一样,存在权衡取舍,当回答这样一个问题时,了解这些权衡是什么会对事情可能出错的地方产生巨大影响 。
一方面,重要的是要知道 NAND 技术实际上非常脆弱 。事实上,它比用于旋转磁盘的介质更脆弱 。要记住的事情包括数据的擦除、使用和保留 。
让我们依次看一下 。

U盘存储:闪存如何避免数据丢失?

文章插图
您可能听说过单层电池 (SLC)、多层电池 (MLC)、三层电池 (TLC) 或四层电池 (QLC) 技术 。这些与您可以将多少位填充到一个单元格(分别为 1、2、3 和 4)有关 。早期闪存设备(例如 Violin Memory)中使用的 NAND 技术是 SLC 。事实上,它们中的许多仍然存在,尽管由于成本原因,它们如今已远不那么受欢迎 。
冒着过度简化的风险,每单元的位数越多,设备就越便宜,但设备也越慢、越脆弱、越容易出现故障 。这就是为什么用于数据中心和消费类电子产品的许多不同类型的 SSD 都是 MLC 类型或修改后的 TLC 类型 。稍后将详细介绍这些修改 。
“好吧,如果我想擦除我写到一个页面上的东西,但块中还有我不想擦除的其他页面怎么办?” 是的,我们到了棘手的部分 。您必须将数据移动到新位置 。这种在磁盘上移动数据以“清理”区域的过程称为垃圾收集 。
它一直在发生 。
更糟糕的是,这必须在整个设备上统一完成 。为了保持磨损和撕裂的某种可预测性,整个设备需要在闪存设备的所有块/页面上以相同的速率写入和擦除 。
即使您的程序/应用程序不需要移动数据,NAND 设备也需要这样做 。事实上,您的数据并不是简单地“坐着”等待使用;NAND 材料必须持续更新,因此无论您是否愿意,数据每 90 天、60 天或 30 天或更短时间就会移动一次!
风险与回报每次移动数据时,无论是通过网络还是在同一存储设备上,您都面临丢失数据的风险 。这意味着必须进行检查和重新检查,以确保数据在移动过程中没有损坏 。
每个闪存设备都有所谓的闪存转换层(FTL) 。这是确保您不会丢失数据的真正重要的拼图 。如果这被冲洗干净,那你就完蛋了 。它是设备的一部分,它知道一切都在哪里,一切都被移动到哪里,以及哪些部分准备好被覆盖 。
显然,该设备会尽其所能保护 FTL 。根据设备的不同,这意味着可能非常健壮(冗余内存缓冲区),也可能非常弱(如 U 盘,它应该是一次性的) 。
不同的设备也有不同程度的缓存和缓冲区 。这些是用于高速存储的临时存放位置 。(对于真正的极客来说,缓存和缓冲区之间的主要区别在于缓存是有索引的,可以为 READ 请求提供服务,而 Buffer 没有索引,不能为 READ 请求提供服务) 。
可能发生并可能损坏系统的大问题之一是,当您尝试写入设备时是否出现电源中断/波动 。例如,突然断电会导致易失性写入缓冲区中的主机数据丢失,并可能导致 SSD 上的数据损坏 。
所以,你需要准备和管理它 。好吧,无论如何,该设备确实如此 。
写入设备有多个阶段,设备将向主机(例如执行写入的应用程序或操作系统)确认它在进程中的位置 。
即使在基于 PCIe 的系统上,主机和存储设备也充当独立的实体(因为它们是不同的、物理上独立的实体) 。当您有一个需要将数据写入设备的应用程序时,它需要将数据从易失性内存(例如,RAM)移动到 SSD 上的缓冲区(称为写缓冲区) 。当 SSD 收到数据时,它需要向主机确认数据已收到 。此时,由主机决定在获得此确认之前不要从易失性内存中释放数据) 。
这种来回是恒定的 。“你有吗?” “还没有 。” “现在怎么样?” “是的,我知道了 。”
设备之间的差异现在,在这个阶段,当 SSD 有数据时,它会告诉主机它已获得信息 。这是不同类别的 SSD/USB 记忆棒等处理事情的不同之处 。
企业 SSD(存在于数据中心的 SSD 类型)保护主缓冲区中的这些数据 。请记住,这个缓冲区是易变的,这意味着此时如果突然断电,它就消失了 。
让我换一种稍微不同的方式说 。宿主认为SSD有,SSD有说有 。主机从其主内存中转储数据并认为它是安全的 。然后停电了 。
SSD 上的写入缓冲区(易失性)突然变空了 。但是它还没有写入Flash 。随之而来的是欢闹 。
正如我所说,企业级 SSD 具有此缓冲区的保护机制,但其他类型的闪存设备(包括您从本地电子商店购买的消费级 SSD、USB 记忆棒等)则没有 。
事实上,“消费类”固态硬盘在数据处于最后休眠阶段之前根本无法保护您的数据 。数据在从主机传输期间不受保护,即使在它被确认回主机之后,或者当它从写缓冲区迁移回 NAND 页时也是如此 。(看看所有这些东西是如何组合在一起的?在这里你认为关于页面和块的讨论是多余的 。)
【U盘存储:闪存如何避免数据丢失?】另一方面,企业级 SSD 会在传输过程中的每个阶段保护数据(主机的初始传输除外——任何设备都无法保护尚未收到的数据) 。
额外保护有一种称为数据路径保护的东西,旨在保护数据在数据传输过程中免受位错误的影响 。假设您对我所写的内容没有感到不知所措,美光发布了一个很棒的 PDF(直接链接),介绍了消费者和企业 SSD 之间的差异 。
此外,还有一种叫做异步断电保护的东西,其目标是在断电事件期间保护静态数据 。可以想象,消费级和企业级 SSD 之间存在差异 。
正如您可能已经猜到的那样,这种额外的保护解释了企业级和消费级 SSD 之间的成本差异 。设计为一次性的闪存设备(例如相机 SD 卡、USB 记忆棒等)没有很多(如果有)这些额外保护 。保护得越多,成本就越高 。
当然,这些是设备的数据保护机制 。我们预计设备最终会屈服于故障(不是如果,而是何时),因此除了良好的备份和恢复机制外,我们还使用RAID 系统、纠删码和其他系统的数据保护方法 。
这可能超出您的预期,但希望它足够易用且平易近人,足以获得您正在寻找的答案(然后是一些) 。
如果您有兴趣了解有关存储、存储网络或数据中心技术的更多信息,我为您组织了一个内容丰富的内容库——从绝对初学者到核心管理员 。反馈总是非常感谢 。