btrfs and nfs dont play nicely together

i use ghettoVCB to take backups of vmware esxi 6.5 vms. data is copied to a nfs share hosted on Debian Linux. for over a year i used btrfs partition as an underlying datastore for the nfs share. and i just could not get it to work for backups which size larger than available RAM [ 64GB ] on the linux server.

to get a good performance the nfs share has async attribute in /etc/exports. as long as i’ve used BTRFS and tried to make backups of VMs having total disk size > 100GB i observed this:

  • prolonged period where the incoming network traffic was significantly exceeding available disk throughput. as long as VM was smaller than available memory – page cache accepted it quickly
  • eventually data was flushed to the disk but at some point NFS could not accept more data at a fast rate – the network traffic would drop to nearly zero while data was being written to the disk
  • with some luck the backup would finish, but quite often it would end up with NFS timeout on the vmware side

i gave up on tweaking vm.vfs_cache_pressure, vm.min_free_kbytes, vm.dirty_ratio, vm.dirty_background_ratio, vm.dirty_expire_centisecs. instead i got back to ext4 for the partition hosting the nfs share, timeout issues are gone!

Leave a Reply

Your email address will not be published. Required fields are marked *

(Spamcheck Enabled)