StorageOS requires certain kernel modules to function, in particular Linux-IO , an open-source implementation of the SCSI target.
We require the following modules to be loaded:
N.B. Other applications utilising TCMU cannot be run concurrently with StorageOS. Doing so may result in corruption of data. On startup, StorageOS will detect if other applications are using TCMU and fall back to FUSE. However if StorageOS is started first there is no mechanism for StorageOS to fallback to FUSE if another application begins to use TCMU. TCMU can be disabled using the DISABLE_TCMU StorageOSCluster spec parameter.
Depending on the distribution, the modules are shipped as part of the base kernel package or as part of a kernel extras package which needs to be installed.
The following distributions are supported:
- RHEL 7.5
- CentOS 7
- Debian 9
- Ubuntu - May require additional packages
- RancherOS - Note CSI is not supported on RancherOS
Ubuntu Package Installation
Ubuntu 16.04 and 18.04 standard may require extra packages:
sudo apt -y update sudo apt -y install linux-image-extra-$(uname -r)
Ubuntu 18.04+ standard and AWS Ubuntu 16.04, 18.04:
sudo apt -y update sudo apt -y install linux-modules-extra-$(uname -r)
Cloud Provider Optimized Kernels
Most cloud provider optimized kernels provide the necessary packages, either by default or as extra packages. If you are using a cloud provider optimised kernel that does not provide the extra packages required you can install a non-cloud-provider optimised kernel. However installing a non-cloud-provider optimised kernel is something that should only be done with full understanding of potential ramifications.
Once required kernel modules are installed on the system, for convenience we provide a container which will ensure the appropriate modules are loaded and ready for use at runtime. On Docker installations, you will need to run the init container prior to starting StorageOS. Our installation guides for Kubernetes and OpenShift include this step.
# Load the required kernel modules. The Kubernetes and OpenShift installations include this step. docker run --name enable_lio \ --privileged \ --rm \ --cap-add=SYS_ADMIN \ -v /lib/modules:/lib/modules \ -v /sys:/sys:rshared \ storageos/init:0.2
For those wishing to manage their own kernel configuration, rather than using the init container, perform the following steps:
- Ensure kernel modules are all loaded per list above
- Ensure configfs is loaded and mounted at /sys/kernel/config
Shared FileSystem volumes
StorageOS ReadWriteMany volumes are implemented using a nfs-ganesha server over
StorageOS ReadWriteOnce volumes. To be able to mount nfs shares, the hosts
require that nfs client drivers are installed. StorageOS along with the kubelet
handle the volume mount. RHEL based distributions use the package
which is very often present with the default installation image, while Debian
family distributions require the package