Add support for reading and mounting block devices from the configuration file#10
Merged
Add support for reading and mounting block devices from the configuration file#10
Conversation
Add information to README regarding the new changes in urunit and specifically for the support of a configuration file for the environment variables and the proccess execution environment. Furthermore, rephrase some comments in the code and reduce the search area in the config buffer for searching the configuration for the application execution environment. Signed-off-by: Charalampos Mainas <cmainas@nubificus.co.uk>
Read from the configuration the respective info for mounting attached block devices to the respective mountpoint. In particular the configuration for the block mounts has the following format: UBS ID: <serial_id> MP: <mountpoint> ... UBE Therefore, for every block device there is a pair of ID and MP where ID refers to the serial ID of the device and MP refers to the mountpoint of that block device. Signed-off-by: Charalampos Mainas <cmainas@nubificus.co.uk>
Discover every block device from its serial ID or its order in the config and create all the necessary directories for the mountpoint. Currently, urunit will only look for virtio block devices (vd[a-z]), since urunc will use virtIO for passing a block device to the VM. We might want to revisit this in case urunc uses other types of block devices apart virtio-block. Signed-off-by: Charalampos Mainas <cmainas@nubificus.co.uk>
Make sure that all external filesystem mounts are unmounted before shuttidng down to avoid any corruptions. External means all mounts that use an external to the current VM source (e.g. block devices network filesystems). For the time being urunit checks the filesystem type in the mountinfo and compares it with some well known block, network and cloud-based filesystems. We might want to update this list in the future. Signed-off-by: Charalampos Mainas <cmainas@nubificus.co.uk>
9d67566 to
d0a121a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add support for reading the list of block devices that should be mounted before the execution of the application. The list is tored in the configuration file with the following format:
Given such a list,
urunitfor each pair of serial id and mountpoint will search all virtio block devices (vd[a-z]) and compare the serial IDs. If they match,urunitwill create all necessary directories for the mountpoint and mount the device in the given mountpoint.It is important to note, that the current approach assumes that all block devices will be virtio-based (since
uruncuses only virtIO for block devices) and there are no more than 26 devices (a-z). However, the current approach is easily extensible for more devices.At last, in case of a failure all created directories will get removed and before shutting down,
urunitwill unmount all mounted filesystems with an external source. External means a source outside of the VM (e.g. block, network).