Skip to content
This repository was archived by the owner on Aug 2, 2023. It is now read-only.
This repository was archived by the owner on Aug 2, 2023. It is now read-only.

Virtual folder API #28

Closed
Closed
@achimnol

Description

@achimnol

Provide a virtual folder API. Users can create virtual folders with limited storage and mount them when launching kernel sessions by passing the list of virtual folders via options.

  • Write an initial master-agent negotiation step to get mount information
    • This is done via etcd.
  • Test mounting mounted SMB volumes into docker containers
    • This works like a charm with Azure FileShare storage.
  • Test mounting mounted NFS volumes into docker containers
  • Configurations (separate NFS host or a local root directory)
  • CRUD of virtual folder instances with a database schema
    • Each folder has a unique ID, filesystem alias, ownership and ACL, size/file limits.
    • Filesystem alias cannot start with dots.
    • sorna-agent should skip mounted virtual folders when uploading output files in /home/work of kernel containers
  • Deploy a backend NFS/SMB server - later, we would migrate to Amazon EFS or other similar NFS-compatible storage services for scalability
    • How could we dynamically mount/unmount subtree of the NFS? Fuse?
    • The NFS server itself may use the standard kernel-side NFS daemon, but should use a separate EBS volume for ease of management and backups.
    • UPDATE: This is done using Azure File Share. It has some latency due to geographic distances, so later we will revisit for performance optimization using closer locations if available.
  • Implement mounting of virtual folders to agent instances and kernels
    • We should keep each virtual folder exclusively mounted. (not shared among multiple kernels even for a single user) -- release this limitation later? (it's NFS's responsibility to keep filesystem consistency anyway)
    • Filesystem-level synchronization should be handled by the NFS/SMB server.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions