Storage Node

At ExPECA testbed, we configure Cinder and Swift storage services of Openstack and a seperate storage node is used. We configure Openstack to share the Cinder's block storage (e.g. /dev/sdb on the storage node) among all worker nodes using iSCSI.

Make sure the following are set in site-config/defaults.yaml:

enable_cinder: yes
enable_cinder_backend_lvm: yes
enable_swift: yes

Also make sure that a storage node is set in site-config/inventory/hosts as mentioned in the deployment instructions.

After the deployment, tgtd service will be running on the storage node. All the volumes created using Cinder will be added as targets in tgt so K8S pods can connect to them to get access to the Cinder's block storage.

Prepare the Storage Node

The storage node on Openstack is a machine with sufficient block storage capacity. Preferably multiple hdds configured in raid format. For instance, the following block storage setup could be used:

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 447.1G  0 disk 
|-sda1   8:1    0   1.1G  0 part /boot/efi
|-sda2   8:2    0   512M  0 part 
|-sda3   8:3    0  31.3G  0 part [SWAP]
`-sda4   8:4    0 414.3G  0 part /
sdb      8:16   0   2.7T  0 disk 
sdc      8:32   0   3.7T  0 disk

The sda block is the SSD storage that the machine uses for the operating system. Additionally, there is sdb and sdc that can be used for Openstack storage node.

ExPECA testbed offers both block storage (Cinder) and object store services (Swift). A simple plan is to use each block for each service. For example sdb for Cinder and sdc for Swift.

Set up Linux users and permissions

Make the expeca user password a sudoer. Add the following it to the end of the file:

Add controller's public key to ssh authorized keys

Swift preparations

Create labeled partitions

Swift configuration works best if the disk is partitioned. In order to do that according to your needs, you can use online tutorials such as this for the disks smaller than 2TB. However, for disks larger than 2TB, parted must be used. The following commands will create one primary partition that takes over all the space on sdc and adds KOLLA_SWIFT_DATA label to it.

Then we format the partition to xfs file system with label d0

Verify that the partition with file system xfs and label KOLLA_SWIFT_DATA

For evaluation pureposes, loop devices could be created as shown in the upstream references.

Cinder preparations

In this section we describe the commands to prepare a storage device sdb to serve as an LVM backend for Cinder. Unlike Swift, Cinder needs the disk to be without any partition table. The goal is to create cinder-volumes LVM volume group.

Make sure there is an unused storage device on the host.

In this case sda is the OS device and we consider sdb for the LVM volume group.

Create the LVM physical volume /dev/vdb:

If you encountered the following error

The reason is that there is partition info on the disk that must be wiped:

Create the LVM volume group cinder-volumes:

Verify the volumes are ready:

References

Last updated