Storage limits per-app
-
If anyone knows how this can be done on linux, I am open to investigating this. As in how does mount a storage directory into a docker container that has a specific size? I can only think of some (sparse) file based loopback filesystem. I don't like that approach and would prefer some other alternative. I haven't looked into recent developments in linux quota system.
-
If storage for Apps was integrated with container attached storage from MayaData.com, this would be an easier option.
This will also help Apps be more distributed and clustered, among other benefits.
-
@robi said in Storage limits per-app:
I think they use OpenEBS, and as all the distributed storage solutions are complicated to set up, we use Ceph and need a dedicated port on the cluster server for the sync job, not as a requirement but as a need for reasonable performance to be able to use there features.
-
@msbt Interesting link, thanks. I wonder if it works for volumes also. It says it depends on the "volume plugin". Have to investigate. On Cloudron, the data directory is just a normal volume and doesn't use any plugin and it's unclear if that standard thing supports storage-opt.
-
@moocloud_matt said in Storage limits per-app:
OpenEBS
Yes, but there is a more advanced version at MayaData.
@staff and I have spoken with them before.
-
-
-
-
Maybe we have use usrquota - https://www.digitalocean.com/community/tutorials/how-to-set-filesystem-quotas-on-ubuntu-18-04 . I guess this involves creating a user per app.
XFS has pquota - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/managing_file_systems/assembly_limiting-storage-space-usage-on-xfs-with-quotas_managing-file-systems . EXT4 has prjquota - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/managing_file_systems/assembly_limiting-storage-space-usage-on-ext4-with-quotas_managing-file-systems
Also, found that there is a
--storage-size
when using XFS in Docker - https://docs.docker.com/engine/reference/commandline/run/#set-storage-driver-options-per-container -
@girish It does not matter that VPS providers use as you control what happens inside containers.
If you choose to attach container volumes they can be XFS layers with all the nice tools XFS comes with, which EXT4 lacks.
Similarly for attaching external volumes of additional space apart from the default FS the OS is installed on.
-
@robi the volumes can be XFS, but it requires a backing device. On a standard VPS, this means that we have to create a (big enough) file on EXT4 file system and then format it as XFS. This setup has the usual issues of loopback devices - what size this initial file should be, how to resize it live to increase/decrease storage etc. Not sure how well this performs either.
-
@girish yep, or do a little parted scripting first to have a device backed partition avoiding loopback issues for a more static setup..
wanna make changes? restore from remote backup.
For a more dynamic setup integrate OpenEBS/MayaData so you can keep attaching additional extent layers or do virtual migrations to different sized container attached storage mounts.
-
-
-
@Aizat No plans yet. But as a workaround, you can always do this:
- Setup a block storage of appropriate size
- Then, add it as Cloudron Volume
- Move app's data directory into the Volume
That way, the app cannot use more data than the volume itself. This does not cover databasize size which is stored outside the volume.