Resolving "synology dsm insufficient system capacity for update"
Lately I’ve been having issues upgrading the DSM version on my Synology DS418 play. The updater refused to download/start the update with the error “Insufficient system capacity for update”.
The previous time I had this error I tried messing around with files on my root partition until the error disappeared. I can’t remember the details but it was a lot of trial and error, and in general shouldn’t be necessary.
But today I got the same error when trying to do another update. According to Synology support, the issue might be caused by third party packages that install files somewhere where they shouldn’t. I thought this might be because I installed docker, since that’s not “officially” supported but I really didn’t wanted to get rid of it (or remove it temporarily in the first place). And since it’s still sort of an official package, just not findable by default, I assumed it would behave properly.
Analyzing disk usage
The total space used on the root partition was near 2GB
root@/: # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md0 2.3G 1.9G 345M 85% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 236K 3.9G 1% /dev/shm
tmpfs 3.9G 15M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 3.9G 2.1M 3.9G 1% /tmp
/dev/vg1000/lv 3.5T 965G 2.6T 28% /volume1
However, when summing up all directories in the root
root@/: # du -hs usr config dev etc etc.defaults initrd lost+found mnt opt root run tmp usr var var.defaults
996M usr
0 config
236K dev
3.6M etc
2.4M etc.defaults
4.0K initrd
4.0K lost+found
4.0K mnt
16K opt
28K root
15M run
2.1M tmp
145M var
5.8M var.defaults
Summing these values 996+1+4+3+15+2+145+6, I got 1.2GB at most. Over a gig, but not near 2 GB.
Then I realized I completely ignored .dotfiles
root@/: # du -hs .??*
677M .SynoUpgrade.tar
1.6M .log.junior
36K .old_patch_info
4.0K .rnd
32M .syno
20K .system_info
and I noticed a rather old .SynoUpgrade.tar
root@Sien:/ # ls -lh .SynoUpgrade.tar
-rw-r--r-- 1 root root 681M Sep 13 2020 .SynoUpgrade.tar
So probably an old update that somehow didn’t get removed. Moving it to the storage partition I ended up with the expected 1.2GB of usage, and the install could continue :)
root@/: # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md0 2.3G 1.2G 1022M 54% /
...
Howver, after the update I noticed I was low on space again
root@/: # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md0 2.3G 1.7G 541M 76% /
...
Looking around for another install tarbal left behind, I quickly found a large file, space-preserve
in /usr/syno/synoinstall
root@/usr/syno/synoinstall/: # ls -lh
total 497M
-rw-r--r-- 1 root root 513M Sep 11 10:26 space-preserve
but I suspect this file is actually meant to “claim” the space that’s required for upgrades so I’ll leave it for now and see if the error reappears during a later upgrade.
TL;DR
If you get the error “insufficient system capacity for update”, check if you have an old .SynoUpdate.tar
in your /