Io 每秒对SSD进行多次小写入是否安全?

Io 每秒对SSD进行多次小写入是否安全?,io,solid-state-drive,Io,Solid State Drive,我有一个应用程序,它通过网络每秒接收几百个字符串,大约50字节长。我想将这些缓存到SSD以进行进一步处理。如果每秒执行数百~50字节的文件追加写入,SSD是否安全?我怀疑操作系统可能会聚合这些写操作,但我不知道。我确实模糊地理解SSD是由单元组成的,这些单元必须在全部或无更新的基础上进行更新,而且每个单元只能承受如此多的写操作(我认为,对于商品驱动器,可以承受数百或数千次)。我的许多小写入应用程序是否将我的SSD置于毁灭之路上?如果我缓存到内存中,并每分钟/小时将数据块写入磁盘,我会更安全吗?显

我有一个应用程序,它通过网络每秒接收几百个字符串,大约50字节长。我想将这些缓存到SSD以进行进一步处理。如果每秒执行数百~50字节的文件追加写入,SSD是否安全?我怀疑操作系统可能会聚合这些写操作,但我不知道。我确实模糊地理解SSD是由单元组成的,这些单元必须在全部或无更新的基础上进行更新,而且每个单元只能承受如此多的写操作(我认为,对于商品驱动器,可以承受数百或数千次)。我的许多小写入应用程序是否将我的SSD置于毁灭之路上?如果我缓存到内存中,并每分钟/小时将数据块写入磁盘,我会更安全吗?显然这更复杂(最近几分钟/小时的内存缓存的web服务,旧数据的磁盘),但我也不希望破坏太多硬件


我已经做了几个月没有太大的不同,而不是几年没有副作用,但那是几年前,我没有做过认真的测试。我从经验中确实知道,如果采用这种简单的方法,我可以在几个月内非常可靠地销毁HDD。

我相信现代SSD有足够的智能将写操作分发到使用较少的单元,而不是不断地写入同一存储区域(以帮助防止耗尽)

也就是说,我可能会缓存到内存,直到达到某个阈值大小,然后将所有内容转储到SSD。但出于性能原因,我会这么做


如果你仔细想想,写50字节500次和写500字节50次的理论区别是什么?同样数量的字节最终仍在写入驱动器,只是分解方式不同而已。无论采用哪种方式,您都会向驱动器上相同数量的单元写入数据,这似乎更重要的是驱动器控制器是否能够满足需求。

SSD本身也会进行写入合并。它们在板载缓存中缓存写操作,直到拥有一个大的块,然后与许多NAND管芯并行写入该块。这就是SSD如何实现如此高的写入速度,尽管NAND本身的写入速度非常低。只要写操作或多或少是连续的,那么大小就不是很重要(直到写请求的数量使控制器处理能力饱和为止)


根据需要写入字符串的速率,将字符串聚集到至少与SSD中NAND页面大小相同的块中可能是有意义的。现在的页面大小通常是8KB

我建议读卡器在单独提交中将一小部分数据写入数据库时控制其SSD的智能值

就我个人而言,我启动了一个项目,其中有两个守护进程将数据包写入MySQL Innodb。 数据包的大小约为100字节。一个守护进程每15秒写入一个数据包,另一个在1.5秒内写入一个数据包。 每个数据包都是一个单独的提交,我得到了巨大的,对我的SSD产生了难以置信的巨大影响

项目启动后,“平均块擦除”计数器开始每天增加1。 据我所知,这意味着整个SSD(70%为空)每天都在被重写,以支持两个各为60MB的Innodb表。
我在我的中对这种情况进行了更多(不必要)的详细描述。

您无法覆盖NAND中的现有数据,因此对同一LBA的多次写入必然会分散到NAND中的不同物理页。谢谢大家。这与我粗略地回忆起来的很接近。8k指南非常有用。