From df0f4d5ee9167253624516aec024a5fae4963944 Mon Sep 17 00:00:00 2001 From: Robert Bohne Date: Wed, 3 Dec 2025 09:16:13 +0100 Subject: [PATCH 1/2] Update new-page-template.md --- new-page-template.md | 1 + 1 file changed, 1 insertion(+) diff --git a/new-page-template.md b/new-page-template.md index d36f774f..73049571 100644 --- a/new-page-template.md +++ b/new-page-template.md @@ -3,6 +3,7 @@ title: New Page linktitle: New Page description: Some information tags: ['tagA','tagB','v4.17'] +icon: redhat/Technology_icon-Red_Hat-OpenShift_Virtualization-Standard-RGB --- # Some information From 26d1e91959598be586a5c01d818ac33aec9a687d Mon Sep 17 00:00:00 2001 From: Robert Bohne Date: Tue, 30 Dec 2025 17:35:05 +0100 Subject: [PATCH 2/2] Add storage/ibm-fusion-access-san --- .../storage/ibm-fusion-access-san/index.md | 137 ++++++++++++++++++ .../ibm-fusion-access-san/iscsi-helper.yaml | 86 +++++++++++ content/storage/index.md | 25 ++++ mkdocs.yml | 4 + overrides/.icons/ibm/logo.svg | 7 + 5 files changed, 259 insertions(+) create mode 100644 content/storage/ibm-fusion-access-san/index.md create mode 100644 content/storage/ibm-fusion-access-san/iscsi-helper.yaml create mode 100644 content/storage/index.md create mode 100644 overrides/.icons/ibm/logo.svg diff --git a/content/storage/ibm-fusion-access-san/index.md b/content/storage/ibm-fusion-access-san/index.md new file mode 100644 index 00000000..30a68319 --- /dev/null +++ b/content/storage/ibm-fusion-access-san/index.md @@ -0,0 +1,137 @@ +--- +title: IBM Fusion Access SAN +linktitle: IBM Fusion Access SAN +description: IBM Fusion Access SAN +tags: ['storage','v4.20'] +icon: ibm/logo +--- +# IBM Fusion Access SAN + +Official documentation: + +* + +Tested with: + +|Component|Version| +|---|---| +|OpenShift|v4.20.4| +|OpenShift Virt|v4.20.x| +|IBM Fussion Access for SAN|2.12.0| + +# Prerequisites + +## Create an IBMid + + + +## Request a 60day IBM Storage Fusion trail version + + + +## Create an Entitlement key + + + +## Create an OpenShift cluster + +* With at least 3 worker nodes each with ~32 GB memory +* All nodes need a shared disk. Via iSCSI, FC and KVM +* OpenShift internal registry is running with storage + +!!! warning + + OpenShift internal registry is mandatory because IBM Fusion Access for SAN builds via Kernel Module Management a container image with the kernel module. + + It means you need highly available storage for the internal registry to start highly available storage. + +## At this point, there is a demo video available + + + + + +## Install Operator + + + +## Create a Kubernetes pull secret + +with the entitlement key from above: + +```shell +oc create secret -n ibm-fusion-access generic fusion-pullsecret \ +--from-literal=ibm-entitlement-key= +``` + +## Creating the FusionAccess CR + + + +## Creating a storage cluster + + + +After creating the storage cluster, it's building the kernel module container image. Check builds in ibm-fusion-access project. + +Check the pods i folowing projects + +* `ibm-fusion-access` +* `ibm-spectrum-scale` + +more details around the deployment. + +## Creating a filesystem + + + +# Notes for various lab environments + +Add a shared disk to all worker nodes + +## Plain KVM environment + +I deployed via . Now let's add a shared lvm disk becaus all is running on one node. + +!!! warning + + In my lab environment, I had following issue during the load of gpfs related kernel modules: + + ```log + I0105 18:25:24.083670 1 funcs_kmod.go:12] "Starting worker" logger="kmm-worker" version="" git commit="" + I0105 18:25:24.083696 1 funcs_kmod.go:24] "Reading config" logger="kmm-worker" path="/etc/kmm-worker/config.yaml" + I0105 18:25:24.083968 1 worker.go:77] "preparing firmware for loading" logger="kmm-worker" image directory="/tmp/opt/lxtrace" host mount directory="/var/lib/firmware" + I0105 18:25:24.084219 1 modprobe.go:33] "Running modprobe" logger="kmm-worker" command="/usr/sbin/modprobe -vd /tmp/opt mmfs26" + I0105 18:25:24.086346 1 cmdlog.go:70] "modprobe: ERROR: could not insert 'mmfs26': Key was rejected by service" logger="kmm-worker.modprobe.stderr" + I0105 18:25:24.086394 1 cmdlog.go:70] "insmod /tmp/opt/lib/modules/5.14.0-570.72.1.el9_6.x86_64/tracedev.ko " logger="kmm-worker.modprobe.stdout" + E0105 18:25:24.086679 1 cmdutils.go:11] "Fatal error" err="error while waiting on the command: exit status 1" logger="kmm-worker" + ``` + + Tested with following CPUs `Intel(R) Xeon(R) W-2145 CPU @ 3.70GHz` or `AMD Ryzen 9 3900 12-Core Processor` + +```shell +lvcreate -L1T -n fusion vg0 +``` + +```shell +export CLUSTER_NAME=demo +for node in ${CLUSTER_NAME}-compute-0 ${CLUSTER_NAME}-compute-1 ${CLUSTER_NAME}-compute-2 ; do + virsh attach-disk $node /dev/mapper/vg0-fusion sdb --targetbus scsi --cache none --persistent --live --wwn 5000c500155a3456 +done +``` + +## iSCSI & RHCOS + +This is ugly as hel, but works for quick testing. + +=== "Apply iscsi helper" + + ``` + oc apply -f {{ page.canonical_url }}iscsi-helper.yaml + ``` + +=== "iscsi-helper.yaml" + + ```yaml + --8<-- "content/storage/ibm-fusion-access-san/iscsi-helper.yaml" + ``` diff --git a/content/storage/ibm-fusion-access-san/iscsi-helper.yaml b/content/storage/ibm-fusion-access-san/iscsi-helper.yaml new file mode 100644 index 00000000..5ad3e9b2 --- /dev/null +++ b/content/storage/ibm-fusion-access-san/iscsi-helper.yaml @@ -0,0 +1,86 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: iscsi-helper +spec: {} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: iscsi-helper + namespace: iscsi-helper +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: system:openshift:scc:privileged + namespace: iscsi-helper +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: system:openshift:scc:privileged +subjects: + - kind: ServiceAccount + name: iscsi-helper +--- +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: iscsi-helper + namespace: iscsi-helper +spec: + selector: + matchLabels: + name: iscsi-helper + template: + metadata: + annotations: + openshift.io/required-scc: "privileged" + labels: + name: iscsi-helper + spec: + nodeSelector: + node-role.kubernetes.io/worker: "" + serviceAccountName: iscsi-helper + tolerations: + - key: "node-role.kubernetes.io/master" + operator: "Exists" + effect: "NoSchedule" + containers: + - name: iscsi-helper + image: registry.access.redhat.com/ubi10-micro:10.1 + securityContext: + privileged: true + capabilities: + add: + - SYS_CHROOT + runAsGroup: 0 + runAsUser: 0 + env: + - name: ISCSI_HELPER_TARGET + value: "iqn.1992-08.com.netapp:sn.4f0586e4962411efb20d00a0987cd31a:vs.19" + command: + - /usr/sbin/chroot + - /host + - sh + - -c + - | + + iscsiadm --mode discovery --op update --type sendtargets --portal 10.32.97.20 + for i in $(seq 20 23); do iscsiadm -m node --targetname ${ISCSI_HELPER_TARGET} -p 10.32.97.${i} --login ; done + + multipath -ll + sleep infinity + volumeMounts: + - name: host-root + mountPath: /host + readOnly: false + hostNetwork: true + hostPID: true + hostIPC: true + volumes: + - name: host-root + hostPath: + path: / + type: Directory diff --git a/content/storage/index.md b/content/storage/index.md new file mode 100644 index 00000000..c52afb56 --- /dev/null +++ b/content/storage/index.md @@ -0,0 +1,25 @@ +--- +title: Storage +linktitle: Storage +description: Storage +tags: ['storage',] +icon: fontawesome/solid/database +--- +# Storage + +## Content + +{% set current_page_title = page.title %} +{% for n in navigation if n.title == current_page_title %} +{% for c in n.children if c.title != current_page_title %} +{% if c.abs_url is string %} + +- [{{ c.title }}]({{c.canonical_url}}) + +{% else %} + +- **[{{ c.title }}]({{ c.children[0].canonical_url }})** + +{% endif %} +{% endfor %} +{% endfor %} diff --git a/mkdocs.yml b/mkdocs.yml index 8cbacf13..916fc588 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -193,6 +193,10 @@ nav: - control-plane/index.md - Restoring etcd quorum: control-plane/lost-quorum/index.md + - Storage: + - storage/index.md + - IBM Fussion Access SAN: storage/ibm-fusion-access-san/index.md + - Troubleshooting: troubleshooting/index.md - Client: client/index.md diff --git a/overrides/.icons/ibm/logo.svg b/overrides/.icons/ibm/logo.svg new file mode 100644 index 00000000..b60c9f45 --- /dev/null +++ b/overrides/.icons/ibm/logo.svg @@ -0,0 +1,7 @@ + + \ No newline at end of file