[wellylug] CF card lifetime

Richard Hector richard at walnut.gen.nz
Tue Mar 22 16:05:27 NZDT 2011


On Tue, 2011-03-22 at 12:35 +1300, Ewen McNeill wrote:
> On 2011-03-22 11:52 , Sam Vilain wrote:
> > On 21/03/11 22:56, Richard Hector wrote:
> >> I've recently started using a Soekris box with a CF card as my home
> >> firewall.  [...]
> >> Does anyone know if there are tools to
> >> let me know how close to the end I am? It doesn't support S.M.A.R.T.
> >
> > Hey Richard, apprently YAFFS / YAFFS2 supports wear-level counts at the
> > filesystem layer - try formatting it as that.  And make double sure you
> > take regular backups as with any unusual filesystem :-).
> 
> As I understand it YAFFS is designed to work on raw flash (NAND/NOR), 
> and provides the flash translation layer, etc (like JFFS does).  That's 
> presumably how it can provide wear level counts.  By contrast a CF card 
> has its own firmware in it which provides the flash translation layer, 
> and that's what knows about the wear level counts of individual 
> sections.  So at first glance I'd say that YAFFS wouldn't work on a CF card.
> 
> There was an excellent article in LWN a few weeks back about CF/SD/etc 
> cards and the wear levelling they provide:
> 
> http://lwn.net/Articles/428584/
> 
> A _few_ of them do provide either SMART (mostly SSD, rather than CF/SD) 
> or some proprietary tool for getting at the wear levelling counts (IIRC 
> there's a link in the comments to some article that talks about 
> vendor-supported real world testing, and gives wear counts).
> 
> That same article also talks about how most of the CF/SD cards have 
> firmware that is optimised (to some lesser or greater degree) for 
> FAT(32) file systems, and can perform from poorly to terribly when used 
> with other file systems (eg, quite a bit of wear multiplication when 
> writing less-than-full-erase-blocks in areas outside the position it 
> expects the FAT to be).  There is considerably variance between vendors.
> (The comments also point out that the wear levelling algorithms in SSDs 
> tend to be fairly good these days -- they have a big enough CPU to run 
> the firmware to use sane algorithms -- but the ones on resource limited 
> CF/SD cards are often very primitive.)
> 
> For a firewall, the typical mode of operation with a CF/SD card is to 
> boot and run from a RAM disk which holds everything, possibly with a 
> read-only partition for things which are used only occasionally. 
> Logging and anything else involving writes is either to a RAM disk, or 
> via the network (eg, syslog).  Most of the dedicated-firewall embedded 
> Linux/etc systems work like that.  Assuming that's the case the number 
> of writes to the CF should be "almost none" at which point wear 
> levelling ceases to be an issue (which is, of course, one of the major 
> reasons they do it that way).
> 
> If you're treating your CF as a regular hard drive, mounting with 
> typical linux file systems (and even worse haven't mounted with 
> "noatime" -- so every read is also a write!), then I'd guess the 
> lifetime would be relatively poor.  But even so the write load on a 
> _firewall_ shouldn't be that high, unless you're logging packets 
> traversing the system.  So I'd guess the CF should be good for many 
> months, possibly years.  (If you are logging non trivial amounts of 
> traffic directly to CF, you probably want to stop now!)

Yep. I'm running ordinary squeeze, having looked at various embedded
options and not liked them much - I know how to apply security updates
on debian, is the main one.

I have, however, told syslog to send everything elsewhere, so the only
logging left local is stuff that doesn't use syslog (aptitude, dpkg,
wtmp/utmp, ... forgot to put my work key on it so I can't check now).
And I have set noatime :-)

> PS: Aside from SMART and some vendor proprietary (possibly Microsoft 
> Windows only) tools I'm not aware of any other way to peak into what the 
> embedded firmware is doing for wear levelling.  So you essentially get 
> no warning that it's no longer possible to erase some of the blocks on 
> the CF.  (And depending on the firmware in the CF it may either silently 
> work around that for you, as modern hard spinning rust hard drives work 
> around bad blocks, or -- more likely on cheap CF -- randomly give you 
> corrupt blocks.  Fun.)

Ok. I was afraid of that :-(

Thanks,

Richard




More information about the wellylug mailing list