[ZFS-Backed VM Storage, PVE 9] Adding a zVol to a VM for an ext4 data drive: Disable Journaling on the ext4 disk inside the VM?

Hello,

I’ve added a new zVol-backed virtual disk to my VM for bulk storage. The backing storage is a a SATA HDD mirror pool with 8 HDDs in 4 mirrors. The virtual disk is in the RAW format, since it’s being stored directly on my PVE node’s local ZFS pool.

I’ve been reading some new guides lately, trying to learn more about reasonable optimizations for data storage when working inside VMs, and I came across this:
tune2fs -O ^has_journal /dev/{nvme dev name}

Apparently, when used inside the VM where the virtual disk is using ext4, this disables the ext4 journalism features for the drive, so we can “rely on ZFS” on the underlying real storage.

I generally understand the idea of not needing to use every protective feature of ext4 (designed for data integrity on a real physical disk) on a virtual disk that’s really just a zVol in a ZFS dataset on a mirror pool, but aside from that, what are the real-world implications of this? I assume there’s less overhead in general, but is there anything else I should be aware of when using this in production?

I asked on the Proxmox forum (here), and got some great feedback (summarized):

  • (Negative) If the VM goes down unexpectedly without ext4 journaling, the ext4 volume is more likely to be damaged.
  • (Positive) Less writes inside the VM → Less write amplification → maybe better write performance on host’s ZFS where the virtual disk lives.

My immediate thought is that the presumed benefits for this config probably aren’t worth the increased likelihood of data corruption if something goes wrong.

  • Write amplification probably isn’t a huge deal on a 4x HDD mirror pool. I think. I’m using a 64k recordsize for the backing zVol, and since I’m on an HDD pool, I don’t have to worry about depleting the finite write endurance of my flash pool.
  • I/O doesn’t need to be min-maxed. This is primarily a read-focused workload for storing data used in emulation and other retro stuff. It’s not write intensive work, and any writes that happen will be at 1990s speed. I’m pretty sure, even with journaliing on, my 4x mirror vdev with 450-600 MB/s write performance will be able to handily outpace whatever the vintage hardware I’m pretending to own expects its storage to do.

tl;dr I think disabling journaling is more appropriate for attempting to min-max performance on a flash storage pool with a write intensive workload?

(Assume I have backups of my data.)

Thanks!

Last edited: Today at 00:58