ECC Memory - Host ZFS - Non-Error correcting clients

Would you get the benefits of error correcting memory in a ZFS host environment when the diskless clients do not have error correcting memory?

Environment
Host SAN
*ECC memory with supporting CPU

Diskless KVM Virtual Host
*Non-ECC memory

Aim
I would like to build a KVM on top of a ZFS environment. The cost of a Xeon chip that can support the amount of virtual machines I hope to support are prohibitively expensive. Ideally I would like to use a consumer chip and then network that out to a ZFS storage server with ECC.

My fear is that it will be pointless to have non-error correcting memory on the client because any error made on the client side will be written to the ZFS host and corrupt the virtual volume.

FYI I'm a little drunk right now, so I'm sorry if you don't understand me.

You're not going to have an issue with using non-ECC on the KVM host. Just be aware that it's important to choose the proper CPU type for what you're doing.

Starting early, eh?

1 Like

Only a day early.

On-topic: You shouldn't have any problems and you will also have the benefits of ECC without using them in the clients. Like sgtawesomesauce said, just make sure that you have a proper CPU.

To expound on my CPU choice warning, maybe tell us exactly what you're planning to virtualize so we can give you some advice on the best way to proceed with hardware.

Virtualized shared disks for a VM host is one of the somewhat weird edge cases for ZFS. It can perform poorly and requires more experimentation to find d what sort of striping and pool arrangement works well.

Snapshots and such are a good idea but high performance is super important if you need to clone or rollback a snapshot.

2 Likes

Thanks for your replies, they have been very helpful.

The KVM host is going to be a part-time gaming pc, mac and test environment (I work on a IT service desk). To do this I will have to select a CPU with VT-d.

My assumption is the Gaming VM will benifit having a high clock and the storage server would be happy with just more cores and a lower clock on the CPU.
I'm I right?

Thanks for the heads up.

It's just for my personal use, would it likely effect performance enough to make it unbearable?

PS Love the show!

You probably fine just do some testing. I'd rather have a bunz of z1 vdevs of mirrored vdevs as a starting point for testing

The performance isn't terrible, you'll be fine for things that don't require a lot of disk performance. You should use raw format for the VM disks as using something that uses copy on write on top of ZFS will slow down quite a lot (as ZFS is also copy on write). I've also read that you should disable memory caching on the dataset used to store the VM disks as the VMs will do their own caching.

Your data is being generated on a system that does not have ECC. If you generate bad data and send it to ZFS, ZFS will defend that bad data with its life. However, memory rarely goes south over time, so if you want to use a system with non-ECC memory, just make sure you run a thorough memtest on it.

Also, performance data can be found around the interwebs.

http://jrs-s.net/2013/05/17/kvm-io-benchmarking/

That link presumes a system with local storage. If you're going to look into network storage, simplicity says use NFS. However, performance says use iSCSI. I'm using both in my setup right now, and while I can transfer large files over NFS and flood the gigabit connection, it chokes hard on small files. I prefer the additional performance of iSCSI as the complexity is not so bad once you know how.