Fibre Channel (FC) support
You can now use the Fibre Channel (FC) protocol with Trident to provision and manage storage resources on ONTAP system.
SCSI over Fibre Channel (FC) is a tech preview feature in the Trident 24.10 release.
Fibre Channel is a widely adopted protocol in enterprise storage environments due to its high performance, reliability, and scalability. It provides a robust and efficient communication channel for storage devices, enabling fast and secure data transfers.
By using SCSI over Fibre Channel, you can leverage their existing SCSI-based storage infrastructure while benefiting from the high-performance and long-distance capabilities of Fibre Channel. It enables the consolidation of storage resources and the creation of scalable and efficient storage area networks (SANs) that can handle large amounts of data with low latency.
Using the FC feature with Trident, you can do the following:
-
Dynamically provision PVCs using a deployment spec.
-
Take volume snapshots and create a new volume from the snapshot.
-
Clone an existing FC-PVC.
-
Resize an already deployed volume.
Prerequisites
Configure the required network and node settings for FC.
Network settings
-
Get the WWPN of the target interfaces. Refer to network interface show for more information.
-
Get the WWPN for the interfaces on initiator (Host).
Refer to the corresponding host operating system utilities.
-
Configure zoning on the FC switch using WWPNs of the Host and target.
Refer to the respecive switch vendor documentation for information.
Refer to the following ONTAP documentation for details:
Prepare the worker node
All worker nodes in the Kubernetes cluster must be able to mount the volumes you have provisioned for your pods. To prepare the worker nodes for FC, you must install the required tools.
Install the FC tools using the commands for your operating system.
-
When using worker nodes that run RHEL/RedHat CoreOS with iSCSI PVs, specify the
discard
mountOption in the StorageClass to perform inline space reclamation. Refer to RedHat documentation.
-
Install the following system packages:
sudo yum install -y lsscsi iscsi-initiator-utils device-mapper-multipath
-
Check that iscsi-initiator-utils version is 6.2.0.874-2.el7 or later:
rpm -q iscsi-initiator-utils
-
Enable multipathing:
sudo mpathconf --enable --with_multipathd y --find_multipaths n
Ensure etc/multipath.conf
containsfind_multipaths no
underdefaults
. -
Ensure that
iscsid
andmultipathd
are running:sudo systemctl enable --now iscsid multipathd
-
Enable and start
iscsi
:sudo systemctl enable --now iscsi
-
Install the following system packages:
sudo apt-get install -y open-iscsi lsscsi sg3-utils multipath-tools scsitools
-
Check that open-iscsi version is 2.0.874-5ubuntu2.10 or later (for bionic) or 2.0.874-7.1ubuntu6.1 or later (for focal):
dpkg -l open-iscsi
-
Set scanning to manual:
sudo sed -i 's/^\(node.session.scan\).*/\1 = manual/' /etc/iscsi/iscsid.conf
-
Enable multipathing:
sudo tee /etc/multipath.conf <<-EOF defaults { user_friendly_names yes find_multipaths no } EOF sudo systemctl enable --now multipath-tools.service sudo service multipath-tools restart
Ensure etc/multipath.conf
containsfind_multipaths no
underdefaults
. -
Ensure that
open-iscsi
andmultipath-tools
are enabled and running:sudo systemctl status multipath-tools sudo systemctl enable --now open-iscsi.service sudo systemctl status open-iscsi
For Ubuntu 18.04, you must discover target ports with iscsiadm
before startingopen-iscsi
for the iSCSI daemon to start. You can alternatively modify theiscsi
service to startiscsid
automatically.
Create a backend configuration
Create a Trident backend for ontap-san
driver and fcp
as the sanType.
Refer to:
apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: backend-tbc-ontap-san spec: version: 1 backendName: ontap-san-backend storageDriverName: ontap-san managementLIF: 10.0.0.1 sanType: fcp svm: trident_svm credentials: name: backend-tbc-ontap-san-secret
Create a storage class
For more information, refer to:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fcp-sc provisioner: csi.trident.netapp.io parameters: backendType: "ontap-san" protocol: "fcp" storagePool: "aggr1" allowVolumeExpansion: True