Configure LVM Thin with ONTAP FC for OpenNebula
Configure Logical Volume Manager (LVM) Datastore for shared storage across OpenNebula hosts using Fibre Channel protocol with NetApp ONTAP. This configuration enables block-level storage access with high performance and low latency.
Initial virtualization administrator tasks
Complete these initial tasks to prepare OpenNebula hosts for FC connectivity and collect the necessary information for the storage administrator.
-
Verify two HBA interfaces are available.
-
Ensure multipath-tools is installed on all OpenNebula hosts and starts on boot.
Debian/Ubuntuapt list | grep multipath-tools # If need to install, execute the following line. apt-get install multipath-tools # If /etc/multipath.conf is not present, first make sure the multipathd service is started. systemctl enable --now multipathdRHEL/AlmaLinuxdnf list installed | grep device-mapper-multipath # If need to install, execute the following line. dnf install device-mapper-multipath # If /etc/multipath.conf is not present, first make sure the multipathd service is started. systemctl enable --now multipathd -
Collect the WWPN for all OpenNebula hosts and provide it to the storage administrator and administrator who takes care of fabric zoning.
cat /sys/class/fc_host/host*/port_name
Storage administrator tasks
If you are new to ONTAP, use System Manager for a better experience.
-
Ensure the SVM is available with FC protocol enabled. Follow ONTAP 9 documentation.
-
Create two LIFs per controller dedicated for FC. Gather the WWPN addresses for the FC LIFs created and provide them to the administrator who takes care of fabric zoning.
-
Create an igroup and populate the host FC initiators. Typically one igroup is created for one OpenNebula cluster. Include frontend servers and hypervisor hosts in the same igroup to support both Image and System datastores.
-
Create the LUN with the desired size on the SVM and present it to the igroup created in the previous step. Ensure Anti-Ransomware protection is enabled on the security tab for ASA systems and on the volume security tab for AFF/FAS systems.
-
Notify the virtualization administrator that the LUN is created.
Final virtualization administrator tasks
Complete these tasks to configure the FC LUN as shared LVM Datastore in OpenNebula.
-
SSH to all OpenNebula servers and complete the following steps on each host.
-
Execute
rescan-scsi-bus.shorecho "- - -" > /sys/class/scsi_host/host*/scanto rescan the SCSI bus and detect new LUNs. -
Verify the LUN is visible on all OpenNebula hosts using
lsblk -Sor fdisk -l command. Note the device name (e.g., sde, sdf) for the LUN created. -
Add the device to multipath configuration by executing
multipath -a /dev/<device_name>. Then, executemultipath -rto reload the multipath configuration. Verify the multipath configuration by executingmultipath -llcommand. -
SSH to one of the fronend server and create a configuration file based on desired Datastore type. For complete attribute list, refer OpenNebula LVM documentation. Sample files are shown below:
Backup-
For Restic,
$cat fc-restic.conf NAME = "Backup-Restic-FC" TYPE = "BACKUP_DS" DS_MAD = "restic" TM_MAD = "-" RESTIC_PASSWORD = "<restic_password>" RESTIC_SFTP_SERVER = "<backup server>"
-
For Rsync,
$cat fc-rsync.conf NAME = "Backup-Rsync-FC" TYPE = "BACKUP_DS" DS_MAD = "rsync" TM_MAD = "-" RSYNC_USER = "<rsync_user>" RSYNC_HOST = "<backup server>"
File$cat fc-kernel.conf NAME = "File-Kernel-FC" TYPE = "FILE_DS" DS_MAD = "fs" TM_MAD = "local" SAFE_DIRS = "/var/tmp/files"Image$cat fc-image.conf NAME = "Image-FC01" TYPE = "IMAGE_DS" DS_MAD = "fs" TM_MAD = "fs_lvm_ssh" DISK_TYPE = "block" LVM_THIN_ENABLE = "yes"System$cat fc-system.conf NAME = "System-FC02" TYPE = "SYSTEM_DS" TM_MAD = "fs_lvm_ssh" DISK_TYPE = "block" BRIDGE_LIST = "<space-separated list of OpenNebula hosts>" # If LUN not presented to frontend hosts LVM_THIN_ENABLE = "yes" -
-
Execute
onedatastore create <configuration file>. Note the datastore ID returned after creation.onedatastore create fc-system.conf
ID: 107 -
Create volume group on the FC LUN using
vgcreate <vg_name> <multipath_device>command. For Image datastores, the volume group name can be named anything desired. For System datastores, the volume group name must be of formatvg-one-<datastore id>. This is required for OpenNebula to identify the correct volume group for system datastores. Proceed with following steps if you are creating Backup/File/Image datastore. For system datastores, stop here. -
Create logical volume thin pool using
lvcreate -l 100%FREE -n <logical volume name> <volume group name>command. For System datastores, OpenNebula automatically creates the LVM thin pool when required. -
Create filesystem on the logical volume using
mkfs.ext4 /dev/<volume group>/<logical volume>command. System datastores do not require filesystem creation. -
Update /etc/fstab or automount configuration to mount the datastore with desired mount options. Assuming the default datastore location as /var/lib/one/datastores. Can be validated with
onedatastore show <datastore_id>. If not check the DATASTORE_LOCATION parameter in /etc/one/oned.conf. Ensure the <datastore_id> folder exists under the datastores location. Sample entries are shown below:Using /etc/fstab/dev/<vg name>/<logical volume> /var/lib/one/datastores/<datastore_id> ext4 _netdev,noauto,x-systemd.automount,nofail 0 2Using automount/var/lib/one/datastores/<datastore_id> -fstype=ext4,_netdev,noauto,x-systemd.automount,nofail,rw :/dev/<vg name>/<logical volume> -
Mount the datastore using
mount -aorsystemctl reload autofscommand. -
Verify the datastore is mounted with mount command and verify the datastore capacity with
onedatastore show <datastore_id>command. -
Ensure oneadmin user and group own the datastore folder. Adjust permissions using
chown -R oneadmin:oneadmin /var/lib/one/datastores/<datastore_id>command.