The original post: /r/datahoarder by /u/mad-jester69 on 2024-07-05 16:06:56.
I've bought a few TeamGroup CX2 SATA SSDs about a year or two ago since they were so cheap, and they seem to handle their primary function of "storing data". I put some data on them, and put them in mostly "cold storage". A year later, I've noticed read speeds of under 10 MB/s on them (as opposed to the usual 400+ MB/s).
I was puzzled at first, but now I think I understand what happened. They leak charge in cold storage, which results in the controller having to spend more time reconstructing the data. If I write any new data on them, then this data has normal read speed, but anything "old" remains slow. So, the solution is to copy all the data somewhere else and then back, or simply duplicate all data "in-place", then remove the "old" copies.
This finally gave me a revelation. The reason no one cares about wear, and everyone seems to care about the controller instead, is because normally, the controller is supposed to detect "rotten" data automatically, and "refresh" it even without the user noticing! So, as long as you keep the SSD plugged in, as opposed to often recommended "cold storage", it will take care of everything on its own! No matter if your memory cells leak in even under a month - it will be noticed in time and refreshed!
My cheap SSD, however, seems to lack this capability. I've tried leaving it plugged in for the whole night, and nothing changed. So apparently this is the answer to my question, "what is the difference between a crap-tier SSD and a good one". I don't think I've encountered this on my old MLC/TLC Goodram Iridiums. Maybe the memory chip type also plays a role here.
I wonder if any owners of TeamGroup CX2 series could either confirm or disprove this explanation.
And there is one more thing that comes to mind. Could it be that the controller does not in fact do that on its own, but needs some kind of SMART command to run some kind of self-test? It is most likely that my Linux setup does not issue those to USB-attached storage. Maybe instead of copying all the data, I could simply issue a command to start the test, and leave it plugged in for a day or two? I am aware of the existence of something called "SMART self-tests", but not aware of what they actually do or if they are supposed to be automatically issued from time to time during normal operation.