Removing unused modules from IoT Edge devices
I am successfully able to add and remove custom modules from a deployment. However, I notice that modules that I remove through a deployment, remain on the device, occupying space. So at some point, the device's storage will get filled up with junk (outdated or unnecessary modules), leading to a system crash.
This is the response I received from Microsoft - "Thanks for your feedback @baharw . That is by design - you can easily integrate a direct method for example that would be responsible to remove all unused docker images on your edge device. I nevertheless suggest that you request that feature here with a business justification so others can vote."
So by design, there is no cleanup of modules, and at some point, the system will crash. Industrial IoT devices are expected to run for years without a reboot. Often they are in-service for 5-10 years. During which time they may receive several updates. If there is no automatic cleanup, then by design, the system is bound to fail.
I believe this is a design flaw, and not a cool to have feature.
Thanks for the feedback. While we design a more integrated solution, using a cron job or scheduled task to automate this might be a workable solution.
See responses to this issue for details:
Ajit Bhor commented
I will recommend Microsoft to consider this feature on priority. From Industrial IoT devices this will be a must have device. As mentioned they are expected to run for years without a reboot. So having this feature inbuilt will be essential.
Joe McFall commented
This is really crucial. Agree with OP that this is a design flaw. Our CI/CD pipeline might be pushing new modules out DAILY. We're already finding in testing that our CI/CD is failing because we've run out of disk space on our test devices. Manually removing module images is not scalable.
António Sérgio Azevedo commented
See workaround suggested on docs.microsoft.com issue - https://github.com/MicrosoftDocs/azure-docs/issues/19208