How to limit bandwidth of ZFS send/recv?

Hey all,
I've been messing around with ZFS lately and it seems pretty cool. However, I can't seem to find a way to limit the bandwidth that is used for a ZFS send/recv.

I'm trying to send a ~400GB filesystem between two systems (sending is Ubuntu, receiving is FreeBSD): one at my house, and another on a server. I don't have a particularly fast connection (50 mbit/s), so I'm looking for a way to limit the bandwidth that ZFS uses so that my internet doesn't grind to a halt for almost a day.

I'm not in a rush to have the data transferred or anything, so I'd rather be able to use my internet than have it finish faster. I don't have a way of limiting the connection speed of a single host on my router, so a software solution on either the sending or receiving end would be highly preferred.

Any help would be greatly appreciated.

Thanked by (1)vimalware
Tagged:

Comments

  • MasonMason AdministratorOG

    Looks like zfs' built-in readlimit & sendlimit options are what you're looking for. I don't use zfs myself, but here's the commands:

    zfs set writelimit=10mb rpool/my/pool
    zfs set readlimit=10mb rpool/my/pool
    

    Just set it to something low so that both of the limits combined won't eat up all your bandwich, i.e. readlimit=10mb,sendlimit=10mb. Adjust as needed or maybe even configure a cronjob that changes the limits when you're sleeping to get the max usage, then goes back down during your 'active' hours.

    Thanked by (3)vimalware laskinforest bdl

    Humble janitor of LES
    Proud papa of YABS

  • Doing the rate limiting directly in zfs is probably the best. In addition, you might investigate piping it through pv with the -L option.

    Thanked by (2)vimalware laskinforest
  • And if you are using Proxmox pve-zsync for schedled/adhoc ZFS backups, it has the " --limit VALUE " option.

    https://pve.proxmox.com/wiki/PVE-zsync

    Thanked by (1)laskinforest
  • I'm getting the following error when I try to set the limits (both on the Ubuntu and FreeBSD systems):

    cannot set property for 'poolname': invalid property 'writelimit'

    Any ideas for what could be going on? Ubuntu version is 18.04 and FreeBSD is 12.1.

  • comicomi OG
    edited July 2020

    @laskinforest said:
    I'm getting the following error when I try to set the limits (both on the Ubuntu and FreeBSD systems):

    cannot set property for 'poolname': invalid property 'writelimit'

    Any ideas for what could be going on? Ubuntu version is 18.04 and FreeBSD is 12.1.

    I think you need to set it on a filesystem, not entire pool

    EDIT: nope, you're right, it looks like it's not implemented in OpenZFS, only Oracle's version has that

    Thanked by (1)laskinforest
  • edited July 2020

    Not quite your question but why not instead just do overall nic bandwidth limiting either on your router or the operating system.

    https://vitux.com/how-to-limit-network-bandwidth-in-ubuntu/

    If you have a decent router or one that can take an open source flash you can even prioritize the mac address of your operating system so it uses 90% of your bandwidth but if anything else needs it then it drops to like 30%.

    That's the ideal route to take frankly otherwise just limiting upload/download speeds would be next.

    Thanked by (1)laskinforest
  • @sureiam said:
    Not quite your question but why not instead just do overall nic bandwidth limiting either on your router or the operating system.

    https://vitux.com/how-to-limit-network-bandwidth-in-ubuntu/

    If you have a decent router or one that can take an open source flash you can even prioritize the mac address of your operating system so it uses 90% of your bandwidth but if anything else needs it then it drops to like 30%.

    That's the ideal route to take frankly otherwise just limiting upload/download speeds would be next.

    Yeah, I ended up just picking up a decent router and limiting it router-side. My old router couldn't do that, so I was wondering if there was a way of doing it without buying a new one. Thanks all for your suggestions and help.

    Thanked by (1)sureiam
  • @laskinforest said:

    @sureiam said:
    Not quite your question but why not instead just do overall nic bandwidth limiting either on your router or the operating system.

    https://vitux.com/how-to-limit-network-bandwidth-in-ubuntu/

    If you have a decent router or one that can take an open source flash you can even prioritize the mac address of your operating system so it uses 90% of your bandwidth but if anything else needs it then it drops to like 30%.

    That's the ideal route to take frankly otherwise just limiting upload/download speeds would be next.

    Yeah, I ended up just picking up a decent router and limiting it router-side. My old router couldn't do that, so I was wondering if there was a way of doing it without buying a new one. Thanks all for your suggestions and help.

    Yup that's the best route frankly. Silly thing to say but make sure you set the device to a static dhcp address on your router and also to do the rate limiting via mac address if possible vs IP

    Thanked by (1)laskinforest
Sign In or Register to comment.

This Site is currently in maintenance mode.
Please check back here later.

→ Site Settings