With ZFS, is ECC memory useless?

I've googled for this, but I could find a good answer. ZFS has self healing with checksums to prevent silent data corruption. Is it necessary to spend extra money on ECC memory? Or is it practically useless in this situation?

For an application server I see the need for ECC memory, but for a pure fileserver?
 
it depends on your services, that you provide.
If you can afford, possibility, that some bits change in ram (for example price) then you probably can avoid ECC.
If you not afford to lose any bit of information, or, your can't afford to have inadequate memory (for example dealing with a lot of money stuff), then I'd spend more cash for ECC.

EEC is to make sure, that things won't get corrupted in memory. (it's not quite related to ZFS, however zfs also depend on RAM :) )
 
Memory management and filesystem management are different things. ECC memory protects against memory corruption. While ZFS only deals with filesystem errors.
 
SirDice said:
Memory management and filesystem management are different things. ECC memory protects against memory corruption. While ZFS only deals with filesystem errors.

however memory corruption, may cause FS problems (at least for some FS), which ZFS should be able to fix, right?
 
killasmurf86 said:
however memory corruption, may cause FS problems (at least for some FS), which ZFS should be able to fix, right?

No, ZFS has no idea the data that came from memory is corrupt or not. ZFS only error corrects data that comes from the filesystem.
 
yes, but metadata and such are stored in memory as well, not only on disk
and all data is in ram, before it's written to disk (so once correct place is corrupted, corruption might get written to disk, and later be fixed (by zfs self-healing))
 
The 'self-healing' properties of ZFS are only on the on-disk structure. Not on it's memory structures.
 
No, you're saying that if corrupted data gets written to disk it will be corrected if it's read back. This is not the case. The corruption occurred before ZFS handles the data. As such it has no idea that data block is corrupted and will write 'bad' data to disk. The data itself is bad but ZFS will accept it as good. It has no way of knowing it was corrupt when it was written to disk. The read will be without problems as the checksums (that where created when the data was written) are good. The data however is not correct.
 
So the conclusion is, having checksums enabled is only useful if you have ECC memory?
 
Nope, conclusion is: have both checksums and ECC enabled memory, or any possible combination of error prevention/consistency check mechanisms available in software and hardware.
 
Suppose you calculate a formula (A simple one) In C (Or any other programming language):
Code:
float pi = 3.14159;
area = pi * radius^2;

There is no disk IO here, but the variables pi, area, and radius are stored in memory.
Do you think that the result of this equation will be the same (i.e. CORRECT!) if a bit of memory changed on one of these variables? ;)
 
Back
Top