I’ve been running using the Docker commands and after leaving it for a day or two, then entire servers storage has been consumed. It appears that IPFS Docker doesn’t run with the garbage collection enable and the Docker file doesn’t use the ‘–enable-gc’ flag. Running the gc manually freed up 85% of the storage.
Is there any reason IPFS Docker doesn’t have gc enable by default? Looking through the Docker file and the source code of GitHub - ipfs/go-ipfs: IPFS implementation in Go there is no option to enable gc. How do people enable it without forking and adding the option to the Docker file?
Is there any reason IPFS Docker doesn’t have gc enable by default?
The GC is slow, it pause the datastore and retrace all blocks starting from your pins making your node unusable from a few seconds to a few minutes depending of your datastore size.
The plan is to change that to refcounting in the future so this could be made partially locking and / or really fast.
A node with full storage makes the IPFS endpoint suffer worse consequences. As in, once the storage is full, you can’t load any new objects and basic commands like unpinning fail because it can’t write to the storage. Plus the server SSD I’m using runs at 200,000 IOPS (3GB/s), so any block retrace should be quick.