System Configuration
StorageOS requires certain kernel modules to function. In particular it requires Linux-IO, an open-source implementation of the SCSI target, on all nodes that will execute StorageOS (usually the workers).
We require the following modules to be loaded:
target_core_mod
tcm_loop
target_core_file
configfs
target_core_user
uio
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.
Distribution Specifics
The following distributions are supported by default:
- RHEL 7.5
- CentOS 7
- Debian 9
- Ubuntu Azure
- RancherOS - Note CSI is not supported on RancherOS
Ubuntu 16.04/18.04 requires the installation of additional packages.
N.B. Ubuntu 16.04/18.04 AWS and Ubuntu 18.04 GCE do not provide the necessary linux-image-extra package - see below for more information
Ubuntu Package Installation
Ubuntu 16.04/18.04 Generic and Ubuntu 16.04 GCE require extra packages:
Ubuntu 16.04:
sudo apt -y update
sudo apt -y install linux-image-extra-$(uname -r)
Ubuntu 18.04+:
sudo apt -y update
sudo apt -y install linux-modules-extra-$(uname -r)
Ubuntu With AWS Or GCE Kernels
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
Automatic Configuration
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
Manual Configuration
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