SD cards have always boggled me as a storage medium and I've personally only ever used them on Pis and other SBCs, it seemed like the more expensive ones my brother would purchase would die fairly fast on the PI's I was maintaining for him. On the other hand I have a tinker board (gen 1) that has used the same SD[0] since 2017 that is currently running Bind9, Nginx, Prometheus, Grafana, Matrix synapse home server, and several go projects I've made that use a mix of either postgresql or MySQL. While each year my anxiety raises about it dying, it seems to be running fine still at around 89% utilization. Not sure if it is just built different or I hit jackpot bin of SD cards, either way I've been looking for an SBC upgrade that uses either pcie NVMe or has SATA capabilities for an actual HDD so that I don't have to worry about it as much. Even if it did die today everything on it is backed up to my PC.
I've heard it suggested that Raspberry Pis are typically run on terrible quality power supplies which contribute to SD cards being corrupted at a much higher rate than if they were using in a PC or mobile phone that has more stable power.
I’m looking into using sd cards for my backups. Easy to transport, easy to store elsewhere, not a challenging write-erase workload. Does anyone have experience with this or have recent measurements? I do see many of the problems mentioned in the article below.
While not quite as tiny, an nvme enclosure with a real drive is likely going to be more reliable, assuming the USB port it’s connected to can actually supply the power it needs.
The enclosures I’m currently fond of are from dockcase, which have a capacitor (PLP meaning power loss protection), so if power is cut, the drive is sent a “oh shit make things safe now” signal and has a few seconds to do so.
That said, expect all drives to fail. Some you get a warning, others you don’t, so have multiple backups. I don’t recommend the cheap vendor branded Samsung SSDs on eBay, had too many of those die with the firmware version reporting as “ERRMOD” (error mode).
Another good thing to note, is how to power cycle SSDs. Outside of Samsung drives, this has worked on a few drives over the years that decided to suddenly stop working: https://dfarq.homeip.net/fix-dead-ssd/
In my experience, Raspberry Pi DIYers are more than happy to talk about their experiences, but they've only got small sample sizes, they're buying things at retail, some will be relatively price-insensitive, and people who have problems might be particularly eager to complain.
These people hate SD cards with a passion.
The kind of people who are in a position to report on failure rates across a fleet of hundreds of SD cards (a) don't always have their employer's permission to talk about it, (b) don't want to publicly bitch about vendors they want to maintain a good relationship with, (c) can be very price sensitive depending on the product and (d) are often buying through special channels where vendors will do things like guarantee a specific controller firmware version.
These people keep on releasing products that use SD cards.
probably not a good idea. Modern, high density SD cards will likely use not very reliable MLC NAND internally, pretty much requiring active maintenance by the software on the built-in controller.
I once had an embedded board booting from MLC NAND that lost its entire u-boot environment after being without power for a year, just sitting on a shelf in my office.
Similarly, at home, I have an SSD with Windows on it for occasionally playing games. It required extensive recovery after sitting in a desk drawer for a little over a year.
I generally wouldn't really trust flash memory for offline backups.
I've heard of this, but there seems to be a lack of practical information. If this is true, then:
* Shouldn't SD cards have an expiration date? What if you buy a card that's been sitting on the shelf for a year?
* What is the proper maintenance procedure? Like should I let it sit in the reader for an a minute, 15 minutes, an hour for the controller do its magic?
* Are the translation tables better protected? Does the card return to full working order when reformatted?
* Are there testing tools for this? I remember CDs had tools that could tell you how much error correction the drive had to do.
Shouldn't SD cards have an expiration date? What if you buy a card that's been sitting on the shelf for a year?
If the flash was blank at manufacturing, it would remain blank after a year as there would be no charge to leak out. The problem is when the controller also stores its firmware on the main NAND, but AFAIK that isn't the case for SD cards (which have very little in the way of firmware compared to SSDs.)
Note that that’s only when the drives have hit their rated program/erase cycles, meaning completely worn out but still functioning. Does not apply to drives with lots of life left in them, which is the vast majority of consumer drives.
From the linked pdf:
>In MLC and SLC, this can be as low as 3 months and best case can be more than 10
years. The retention is highly dependent on temperature and workload.
Interestingly, while heat can increase the rate of information loss (when drive is worn out), it can also decrease wear on the drive by making writes easier and less destructive to flash cells. The controller is still going to hate heat though.
Thanks for the extra references! I'll make sure to bookmark those and take a closer look later.
Yeah, MLC already losing data after 3 months doesn't really surprise me that much. If you play with a raw MLC chip and turn off the ECC engine, the amount of bit flips you get from reading on some chips isn't even funny anymore. With one chip I tried, even with ECC, I managed to induce persistent bit flips fairly quickly just by reading the same physical page over-and-over. For extra fun: those bit flips can happen in another page that you didn't touch, because the bits are paired :-)
What actually still does surprise me sometimes, is how reliable those things can work after all, if you just pile enough software abstraction and management on top.
Are there tools available to a normal person to take a look at this stuff? Eg, is there some way I can evaluate a not yet failing SD card? CDs had tools to check for C1 and C2 errors, is there a way to do the same with a SD card or SSD?
For SSD, I'd imagine you might get SMART data or something similar?
I know that on Linux, there are mmc-utils, but I only used those with eMMC so far.
I just tried to read out some general status information on uSD cards I have around: it didn't work for 2 Kingston and Acon cards (command timeout). But for a Swissbit card (industrial), it took some solid 10 seconds before reporting back that it's doing ok and is ready for data. Looks like it depends heavily on vendor support, possibly also undocumented/non-standard command sequences?
You might be referring to "MLC" in the generic sense of multiple bits per cell, but SD cards are more likely to be TLC or QLC these days (and there may even be some PLC appearing now), 3 or 4 bits per cell rather than the original meaning of MLC for 2-bit MLC.
My experience with old (as in ~2008-2009) 2-bit MLC NAND, with not much wear, has been that they've been OK for over a decade. Ditto for some early SLC USB drives (the biggest being 512MB).
USB flash failed in terms of writes? I'm kind of curious about the story of longterm offline storage, vs occasional use since I think the controller needs to both have logic to actively refresh over months/years and occasionally be on to do so?
[0] https://www.amazon.com/Samsung-MicroSDHC-Adapter-MB-ME32GA-A...