platform
platform copied to clipboard
Support volumes and their sharing
Description
A component should be enabled to define a (named) volume and share this volume with other containers.
Discussion
- When do we have to define a volume? Does it have to be mounted while the container is created or can we add it later on?
- If we have to define it during the creation, how should we enable a benchmark controller (or a system adapter) to define that it needs shared volumes? Does it has to be defined via its meta data (
.ttl
) file?
- If we have to define it during the creation, how should we enable a benchmark controller (or a system adapter) to define that it needs shared volumes? Does it has to be defined via its meta data (
- Should it be possible for a benchmark to share a volume with a system?
- Do we need to take care of the removing of these volumes after the experiment ended?
Volumes are mounted on container creation, yes (see ContainerCreate method for details). Creation of the volume itself can be done any time before that.
The named volume definition and attachment to a container can be done easily. However, given that container can be deployed on any of the nodes inside docker swarm (7 in our case), we can not use "local" volume driver.
To solve this issue the following steps are necessary:
- [ ] Short list distributed FS available for docker swarm (e.g. GlusterFS, NFS etc). Volume driver should be available.
- [ ] Implement lifecycle of named volumes given selected distributed FS.
- [ ] Modify HOBBIT infrastructure to include custom volume driver.