Skip to main content

Fibre Channel (FC) support

Contributors netapp-aruldeepa

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

  1. Get the WWPN of the target interfaces. Refer to network interface show for more information.

  2. Get the WWPN for the interfaces on initiator (Host).

    Refer to the corresponding host operating system utilities.

  3. 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

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.

RHEL 8+
  1. Install the following system packages:

    sudo yum install -y lsscsi iscsi-initiator-utils device-mapper-multipath
  2. Check that iscsi-initiator-utils version is 6.2.0.874-2.el7 or later:

    rpm -q iscsi-initiator-utils
  3. Enable multipathing:

    sudo mpathconf --enable --with_multipathd y --find_multipaths n
    Note Ensure etc/multipath.conf contains find_multipaths no under defaults.
  4. Ensure that iscsid and multipathd are running:

    sudo systemctl enable --now iscsid multipathd
  5. Enable and start iscsi:

    sudo systemctl enable --now iscsi
Ubuntu
  1. Install the following system packages:

    sudo apt-get install -y open-iscsi lsscsi sg3-utils multipath-tools scsitools
  2. 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
  3. Set scanning to manual:

    sudo sed -i 's/^\(node.session.scan\).*/\1 = manual/' /etc/iscsi/iscsid.conf
  4. 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
    Note Ensure etc/multipath.conf contains find_multipaths no under defaults.
  5. Ensure that open-iscsi and multipath-tools are enabled and running:

    sudo systemctl status multipath-tools
    sudo systemctl enable --now open-iscsi.service
    sudo systemctl status open-iscsi
    Note For Ubuntu 18.04, you must discover target ports with iscsiadm before starting open-iscsi for the iSCSI daemon to start. You can alternatively modify the iscsi service to start iscsid automatically.

Create a backend configuration

Create a Trident backend for ontap-san driver and fcp as the sanType.

Refer to:

Backend configuration example with FC
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:

Storage class example
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