I mean 21GB of pihole logs (based on "/var/log/pihole: 21.3GB used", but maybe that's a red herring?) seems excessive. But you can build up that amount of compressed logs in a year on a very busy system that's getting, say, 2 million queries a day.
By default, Pi-hole rotates the logs at midnight every night, using logrotate if it's available and keeps 5 days worth of logs. This can be modified by the user, of course, so you can check this in /etc/cron.d/pihole in the section that begins "Pi-hole: Flush the log daily at 00:00" and see what it's doing in your setup.
Assuming that's working, it will compress your logs every night, creating a bunch of .gz (compressed) files in /var/log/pihole. You should see only 5 days worth in that directory. If you see more, or don't need these old logs you can safely delete *.gz from that folder...
sudo rm /var/log/pihole/*.gz
You may also want to see if /etc/pihole/pihole-FTL.db is getting big. If that's taking up several GB of space you can just delete it too and Pi-hole will automatically recreate it...
sudo service pihole-FTL stop
sudo rm /etc/pihole/pihole-FTL.db
sudo service pihole-FTL start
Then recheck your disk space with the following, especially looking at the /dev/root line:
df -h
If the disk use isn't from the above two locations, then you'll need to find what is using 20GB of space and remove it, or work around it.