Use cases is as follows: Devices require persistent volumes/data in high turn over environment. I have network storage for that exact purpose but cannot find anywhere on ResinOS to define a common NFS mount point on all my devices so they can retrieve and store bulk data from the shared directory on my SAN/NAS.
I think you would connect NFS mounts in your start script (so the application connects to the shared storage whenever the application starts up). So that would be just running the regular NFS mount commands in your start script (or using systemd to automate that at start).
If I’m not mistaken, @andrei was doing something like that recently, he might be able to add some more details?
I did exactly what you proposed @imrehg : Added the mount in my startup script.
Hi !
Well can’t find more info regarding nfs docker volume. It seems to be a plugin in first that have been include in docker. It could explain why not working in the balena engine.
I also try to install nfs-utils and mount it using Dockerfile (my ugly way in the CMD) :
FROM arm32v7/alpine:latest
RUN apk update && \
apk upgrade && \
apk add --no-cache alsa-utils alsa-utils-doc alsa-lib alsaconf && \
apk add --no-cache nfs-utils && \
apk add --no-cache busybox gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly py3-gst py3-libxml2 py3-pykka py3-requests py3-setuptools py3-six py3-tornado python3 python3-dev
RUN python3 -m pip install --upgrade pip && \
python3 -m pip install --upgrade mopidy && \
python3 -m pip install --upgrade Mopidy-Iris && \
python3 -m pip install --upgrade Mopidy-Local && \
python3 -m pip install --upgrade Mopidy-Youtube && \
python3 -m pip install --upgrade Mopidy-SoundCloud
RUN mkdir /root/music
COPY mopidy.conf /root/.config/mopidy/mopidy.conf
CMD mount -t nfs 192.168.100.100:/MUSIC /root/music && mopidy
I will look for a better way later. I have to work on the mopidy conf
I think you’re doing exactly as my colleagues mentioned above, we also have some useful information about mounting external storage media in our docs https://www.balena.io/docs/learn/develop/runtime/#mounting-external-storage-media so please have a look.
So, it appears that balenaOS 2.31.5+rev1
is not providing NFS support (yet):
root@xxxxxxx:~# cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev ramfs
nodev bdev
nodev proc
nodev cpuset
nodev cgroup
nodev cgroup2
nodev tmpfs
nodev devtmpfs
nodev binfmt_misc
nodev debugfs
nodev tracefs
nodev sockfs
nodev dax
nodev pipefs
nodev hugetlbfs
nodev rpc_pipefs
nodev devpts
ext3
ext2
ext4
vfat
msdos
iso9660
nodev nfs
nodev nfs4
nodev autofs
nodev aufs
nodev mqueue
Notice the nodev
in front of:
nodev nfs
nodev nfs4
Also, we can check the kernel modules for NFS via:
root@xxxxxxx:~# lsmod | grep -i nfs
root@xxxxxxx:~#
This differs from a system with NFS installed:
$ lsmod | grep nfs
nfsd 339968 13
auth_rpcgss 61440 1 nfsd
nfs_acl 16384 1 nfsd
lockd 94208 1 nfsd
grace 16384 2 nfsd,lockd
sunrpc 331776 18 nfsd,auth_rpcgss,lockd,nfs_acl
So, you this will require compiling these kernel modules yourself and adding them. It’s possible, but requires some tricks due to the ReadOnly root FS that Balana uses.
Luckily, balenaOS will run containers in --privileged
mode. So, loading kernel module binaries packaged with a Docker container is possible! I tested this with some other kernel modules with some success. I was able to get snd-usb-audio
and snd-usb-caiaq
sound card drivers working on an Intel Edison running balenaOS!