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:
Depending on the distribution, the modules are sometimes shipped as part of the base kernel package, and sometimes in a kernel extras package which requires installation.
RHEL 7.5, CentOS 7, Debian 9, Ubuntu Azure and RancherOS are fully supported.
Ubuntu 16.04/18.04 Generic and Ubuntu 16.04 GCE require extra packages:
sudo apt -y update sudo apt -y install linux-image-extra-$(uname -r)
Ubuntu 16.04/18.04 AWS and Ubuntu 18.04 GCE do not yet provide the linux-image-extra package. As such you should either use Debian, CentOS or RHEL, or install the non-cloud-provider optimised Ubuntu kernel.
Installing the non-cloud-provider optimised Ubuntu kernel is something that should only be done with full understanding of potential ramifications.
sudo apt -y update sudo apt install -y linux-virtual linux-image-extra-virtual sudo apt purge -y linux*aws # Reboot the machine sudo shutdown -r now
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.1
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