GL-MT3600BE: AdGuard Home "Disk Full" Error When Adding Blocklists

Hello! I was setting up my Beryl 7 and came across some errors adding filter lists to Adguard Home. Specifically, the error was that my “disk was full” and I was unable to add new lists. I did a bit of digging (with the help of Claude) and this was what the investigation revealed. I should note that I’ve never had any problem with this on either my Beryl 6 (MT-3000) or Flint 3 (BE9300) – so it seems unique to this device.

Findings

GL-iNet's AdGuard Home init script (/etc/init.d/adguardhome) contains a model-specific case block that creates a small loopback image file specifically for AGH filter storage on the MT3600BE:

case "$model" in
    "mt3600be")
        mount_filter_img 5M 2
        ;;
esac

This creates a 10MB ext4 image file at /etc/AdGuardHome/data.img, which is then mounted at /etc/AdGuardHome/data/filters/. With ext4 filesystem overhead, only about 8.5MB is usable — and it starts partially full. Any reasonably sized blocklist will push it over the limit.

Other routers don't have a matching case block and simply use the regular overlay filesystem, which has hundreds of MB free.

I was able to confirm this on my device with:

df -h /etc/AdGuardHome/data/filters
cat /sys/block/loop0/loop/backing_file

Workaround

  1. Edit the init script to increase the image size:
   vi /etc/init.d/adguardhome

Change:

   mount_filter_img 5M 2

To: (or something larger; e.g. 5M * 20 == 100MB as shown below

   mount_filter_img 5M 20

This will create a 100MB image on next startup (5M * 20 == 100MB, but you can adjust as you see fit). This will leave plenty of room for multiple large filter lists. Check your underlying file system storage space to ensure you’ve got enough (for me, I had about 340MB free on a fresh out-of-the-box setup).

  1. Stop AGH, unmount the loop device, and delete the old image:
   /etc/init.d/adguardhome stop
   umount /etc/AdGuardHome/data/filters
   rm /etc/AdGuardHome/data.img
  1. Start AGH again:
   /etc/init.d/adguardhome start

The init script will detect that data.img is missing, recreate it at the new size, format it as ext4, mount it, and start AdGuard Home.

Note: Deleting data.img will wipe your existing filter list configuration, so you'll need to re-add your blocklists in the AGH interface afterwards. Back up /etc/AdGuardHome/config.yaml first if you want a reference.

To verify:

root@GL-MT3600BE:~# df -h /etc/AdGuardHome/
Filesystem                Size      Used Available Use% Mounted on
overlayfs:/overlay      354.3M     19.1M    330.5M   5% /

To GL-iNet Staff:

Is there a reason for the specific mt3600be case here, or is this a bug? If it’s intentional, 10MB is far too small for practical use and it should be increased by default or simply removed; letting it use the overlay filesystem like other routers.

Apologies, I was just re-reading this and my verification step is wrong. df -h in the terminal though will show all the mounts and can verify the before/after.

Hi

This is a storage usage limit for AdGuard Home introduced in our newer firmware versions. The main purpose is to limit the number of rules loaded, preventing excessive memory usage that could lead to sluggish performance, application crashes, or even system instability.

Currently, we will:

  1. Roll out this measure to additional models through future firmware updates.
  2. Set reasonable limits based on the available memory of each device.

The limits we’ve set are relatively conservative—aimed at maintaining smooth performance while reserving sufficient memory for other processes, rather than pushing the system to its limits.

That said, if you’ve verified that your current configuration runs well in your environment, it should be fine to keep using it.

We also appreciate your detailed guide—some advanced users will likely find it helpful.

2 Likes

Understood! It’s working for me, but a reasonable call from your perspective especially since there is a workaround. Thanks for the info.

1 Like