ECC RAM Protection for VM Files on a Btrfs Formatted System within a Proxmox Host

Bauanga

Member
Feb 23, 2021
8
0
6
38
Hello everyone,

I am currently diving into the details of ECC RAM functionality in relation to file system integrity, specifically within a virtualized environment on Proxmox. My setup involves a Proxmox host with a ZFS volume, and the system is equipped with ECC RAM.

Here's where I need some guidance: I am planning to create a virtual machine (VM) on this Proxmox host and format the VM's system with Btrfs. This VM will reside on the ZFS volume mentioned earlier. My question revolves around the protection ECC RAM offers in this scenario:

Given that the Btrfs formatted system within the VM is stored on a ZFS volume, does the ECC RAM functionality extend its protection to the files within the VM? In other words, are the files within the Btrfs formatted VM also protected against memory errors due to the underlying ZFS volume being supported by ECC RAM?

I'm looking for insights into how ECC RAM's error correction capabilities are applied in a layered file system environment, especially when different file systems are used at the host and VM levels. Any experiences, technical explanations, or advice on best practices would be greatly appreciated.

Thank you in advance for your help!
 
Given that the Btrfs formatted system within the VM is stored on a ZFS volume, does the ECC RAM functionality extend its protection to the files within the VM? In other words, are the files within the Btrfs formatted VM also protected against memory errors due to the underlying ZFS volume being supported by ECC RAM?
ECC only helps data not to corrupt while in RAM, not data that is stored on the disks. But it is important to have ECC RAM, as the checksumming of the storage relies on data not corrupting before writing it from RAM to disk, as then the data might have been corrupted in RAM without the storage knowing it and for example ZFS telling you that everything is fine while it is not. And everything stored in RAM, no matter if it is used by the host or a VM, will benefit from the ECC, as this is done on the hardware level.

And for the checksumming of ZFS. With ZFS ensuring the data integrity of the data stored on the disks you don't need a guest filesystem doing this again. All guest filesystems stored on zvols will be protected too. Its by the way not great to run a Copy-on-Write filesystem on top of another CoW filesystem, as the overhead will multiply. So btrfs on ZFS will cost you performance, more SSD wear and maybe less capacity. I prefer to use a simple filesystem for the guests unless I really need some more features, when using ZFS pools. Or in case I want the complex filesystem inside the guest, I try to keep the storage on the host simple.
 
Thank you for your detailed explanation! It really helped me understand the basic mechanisms of ECC RAM and the considerations around using file systems with ZFS. When you mention preferring a "simple filesystem" for the guests, could you specify which filesystem you are referring to?
 
Thank you for your detailed explanation! It really helped me understand the basic mechanisms of ECC RAM and the considerations around using file systems with ZFS. When you mention preferring a "simple filesystem" for the guests, could you specify which filesystem you are referring to?
Some classic journaling filesystems without CoW like ext4, xfs or ntfs.
 
  • Like
Reactions: Bauanga