哪些写入模式是“闪存友好的”?


0

假设我们正在谈论的是普通的USB闪存驱动器(可能会或可能不会进行磨损平衡)和未专门针对闪存(例如FAT32等)进行优化的“哑”文件系统。可能没有TRIM支持。

由于闪存驱动器块仅具有有限的重写次数,因此尝试最小化尽可能多的重写是有意义的。现在,如果我要创建一些文件A,B和C,然后重复就地修改文件,这会增加驱动器的磨损,而不仅仅是添加B',C'等,最终在空间不足时删除原始文件?

我是不是过早地进行了优化,还是其中有一点真理?

(注意:这与驱动器或操作系统在内部的功能无关。这与用户使用方式有关)


为澄清起见,您的问题是:“就闪存存储的写入寿命而言,修改就地文件是否不算作写入?”
安德鲁

3
闪存介质很便宜,并且比以前具有更大的弹性。只需使用驱动器,就可以避免磨损。
Keltari '18年

1
我认为您会发现自己并不会真正使事情变得更好。我在CNET上发现了这篇文章,基本上说,除非您每天向驱动器写入50GB的内容,否则不要着急。cnet.com/how-to/…–
安德鲁(Andrew)

1
是时候删除冗余文件了怎么办?您需要浏览GB的文件以识别要删除的内容。您还需要跟踪可用空间和已用空间,并重建事实后要删除的内容,而不是允许自动及时删除。如果等待时间太长,由于空间不足,您的实际工作可能会延迟。听起来您想用自己的时间和精力来在便宜的驱动器上执行控制器芯片的功能。(续)
fixer1234 '18

1
这无助于您完成自己的工作,而是为您增加了工作量,从而有可能使廉价设备的使用寿命更长。旨在让您的生活更轻松的一便士价值的硅,将把它的工作委托给您,因此您可以将其工作速度降低许多个数量级。人类是硅大师的次要奴隶-听起来像科幻恐怖电影。:-)
fixer1234 '18

Answers:


1

所有USB驱动器都有一个微控制器,可接收传入的USB请求并将其转换为与USB设备上实际存储一致的操作。

对于具有NAND闪存的USB驱动器,这些设备上的固件/微控制器可能(希望)实现确实损耗均衡的FTL。

不幸的是,如果没有任何固件的源代码以及对该USB闪存驱动器上小型硬件平台的全面了解,您将无法知道微控制器到底在做什么。

没有USB闪存驱动器的标准硬件,固件或软件平台之类的东西,因此您不能依靠任何种类的标准来帮助您准确预测固件在处理传入USB请求时可能在做什么,而无需深入了解USB闪存驱动器。微控制器,NAND闪存硬件和相关固件。

这与驱动器或操作系统内部的功能无关。

我知道,但是没有这些内部知识,您就无法有意义地修改写入行为。特别是由于存在各种微控制器,固件和NAND闪存芯片,可能会对一个闪存驱动器产生任何影响的东西可能无法在另一个闪存驱动器上工作。


未针对闪存优化的“哑”文件系统

“针对闪存进行了优化”的文件系统需要直接访问闪存硬件,因此它们可以自己向闪存发出擦除命令。通过大容量存储命令通过USB,SATA,SCSI总线与设备通讯不是直接访问。

可能最容易遇到这种情况的情况是基于Linux的消费级路由器-基础Linux操作系统已打开,可以访问4MB,8MB,16MB或类似的闪存芯片,并且可以与其通信并直接对其进行管理。Android手机与此类似。

除了TRIM之外,您不能在USB或SATA大容量存储设备上发出擦除命令(这只是对设备固件的请求,而不是对闪存芯片的直接命令),这些标准是针对硬盘驱动器而不是闪存硬件的。

现在,如果我要创建一些文件A,B和C,然后重复就地修改文件,这会使驱动器磨损多于添加B',C'等。

闪存芯片以页面形式读写。它们在Linux项目称为“ eraseblocks”的页面集中被擦除。(这与机械硬盘驱动器非常不同)。

基于闪存的存储设备实现FTL(闪存转换层)。这是什么:它们维护一个内部表,该表将OS可见的“块”映射到固件可见的闪存页(从PBA到LBA),并且还将跟踪哪些“擦除块”已准备好用于新数据。传入的写入不会仅根据传入的块号进入闪存页面,而是在固件认为合适的任何地方-固件都会将其内部PBA更新到LBA表以在下一个需要时找到它。

良好的固件会出于性能原因而尝试将写入重定向到具有已擦除页面的擦除块,并且它们将在后台交换块以尝试进行写入,因此在写入之前不需要擦除。当驱动器已满时,这样做的可能性较小,并且性能会受到影响。

然后,您可以假定即使从OS角度来看相同的文件和“阻止”写入,也不会到达闪存上的相同位置。因此,您无需担心就地修改文件,因此一无所获。


这个故事的寓意:不要担心。像对待普通硬盘一样对待它,并保留备份。坏脾气的闪存驱动器将比优质的闪存驱动器更早地死亡。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.