u盘存储:闪存如何避免数据丢失呢(u盘存储:闪存如何避免数据丢失的方法)

所有存储设备都比许多人意识到的要复杂得多。NAND 设备(包括 SSD、USB 拇指驱动器等)都容易出现故障,这与存储的 One Job? 背道而驰:把我要求你为我保留的正确位还给我。

术语的几个定义,首先是:

SSD:代表固态驱动器(或磁盘),不需要任何移动部件。SSD 更像是一种外形而非内存技术,但这些术语经常(错误地)互换使用。

闪存:是一种不需要电源的存储器。也就是说,您不会在电源关闭时丢失数据。DRAM、sRAM 等是易失性存储器(它们在电源关闭时会丢失数据),因此这些类型的存储器不被视为闪存。

NAND:是闪存设备中常用的实际非易失性存储器类型,恰好被构建到 SSD 外形中。它还用于计算机的 BIOS 芯片 CompactFlash(用于数码相机、USB 记忆棒、视频游戏机的存储卡等。

阅读更多:SSD(固态硬盘)和HHD的区别,哪个更好?

现在,我们都知道 Flash 技术非常快。事实上,它们是如此之快,我们为什么要使用其他东西呢?

问题在于 NAND 技术并不完美。事实上,就像其他任何事情一样,存在权衡取舍,当回答这样一个问题时,了解这些权衡是什么会对事情可能出错的地方产生巨大影响。

一方面,重要的是要知道 NAND 技术实际上非常脆弱。事实上,它比用于旋转磁盘的介质更脆弱。要记住的事情包括数据的擦除、使用和保留。

让我们依次看一下。

您可能听说过单层电池 (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 页时也是如此。(看看所有这些东西是如何组合在一起的?在这里你认为关于页面和块的讨论是多余的。)

另一方面,企业级 SSD 会在传输过程中的每个阶段保护数据(主机的初始传输除外——任何设备都无法保护尚未收到的数据)。

额外保护

有一种称为数据路径保护的东西,旨在保护数据在数据传输过程中免受位错误的影响。假设您对我所写的内容没有感到不知所措,美光发布了一个很棒的 PDF(直接链接),介绍了消费者和企业 SSD 之间的差异。

此外,还有一种叫做异步断电保护的东西,其目标是在断电事件期间保护静态数据。可以想象,消费级和企业级 SSD 之间存在差异。

正如您可能已经猜到的那样,这种额外的保护解释了企业级和消费级 SSD 之间的成本差异。设计为一次性的闪存设备(例如相机 SD 卡、USB 记忆棒等)没有很多(如果有)这些额外保护。保护得越多,成本就越高。

当然,这些是设备的数据保护机制。我们预计设备最终会屈服于故障(不是如果,而是何时),因此除了良好的备份和恢复机制外,我们还使用RAID 系统、纠删码和其他系统的数据保护方法。

这可能超出您的预期,但希望它足够易用且平易近人,足以获得您正在寻找的答案(然后是一些)。

如果您有兴趣了解有关存储、存储网络或数据中心技术的更多信息,我为您组织了一个内容丰富的内容库——从绝对初学者到核心管理员。反馈总是非常感谢。

版权声明