課題
対象サーバには Brocade OEM の Emulex LPe35002 というFCカードが刺さっている。
$ lspci | grep Emulex
b1:00.0 Fibre Channel: Emulex Corporation LPe35000/LPe36000 Series 32Gb/64Gb Fibre Channel Adapter (rev 10)
b1:00.1 Fibre Channel: Emulex Corporation LPe35000/LPe36000 Series 32Gb/64Gb Fibre Channel Adapter (rev 10)
これに ubuntu 22.04 をインストールして FC-SAN のディスクを割り当てようとしたところ、内部ストレージしか認識しない。
以下は RockyLinux 9.1 のインストーラで認識させたもの。 3.64TiB のものが FC-SAN 接続先にあるストレージのディスク。
色々ググって調べたところ、 ubuntu 22.04 の FCドライバが古いのでは?というQAを見かけた。
ubuntu 22.04 の FCドライバのバージョンは 14.0.0.4
$ modinfo lpfc
filename: /lib/modules/5.15.0-70-generic/kernel/drivers/scsi/lpfc/lpfc.ko
version: 0:14.0.0.4
author: Broadcom
description: Emulex LightPulse Fibre Channel SCSI driver 14.0.0.4
license: GPL
srcversion: AA59CA7813B3B325F81A3F1
...
Brocade のサイトを見ると、最新ドライバは 14.0.639.23 が提供されているがLinux系は RHEL, SUSE しか無い。 (ubuntu 22.04用のソースコードはあるが、ドライバパッケージは未提供)
FCドライバ更新
Brocadeのサイト カーネルモジュール用のソースコード を取得する。
ビルド
$ tar xzf lpfcdriver-ubuntu22.04-14.0.639.23.tar.gz
$ cd lpfcdriver-ubuntu22.04-14.0.639.23/
$ make -j4
GNUmakefile setting EXTRA_CFLAGS to -DCONFIG_SCSI_LPFC_DEBUG_FS
make -C /lib/modules/5.15.0-71-generic/build M=/tmp/lpfcdriver-ubuntu22.04-14.0.639.23 CONFIG_SCSI_LPFC=m modules
make[1]: Entering directory '/usr/src/linux-headers-5.15.0-71-generic'
warning: the compiler differs from the one used to build the kernel
The kernel was built by: gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0
You are using: gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0
CC [M] /tmp/lpfcdriver-ubuntu22.04-14.0.639.23/lpfc_mem.o
...
LD [M] /tmp/lpfcdriver-ubuntu22.04-14.0.639.23/lpfc.ko
BTF [M] /tmp/lpfcdriver-ubuntu22.04-14.0.639.23/lpfc.ko
Skipping BTF generation for /tmp/lpfcdriver-ubuntu22.04-14.0.639.23/lpfc.ko due to unavailability of vmlinux
make[1]: Leaving directory '/usr/src/linux-headers-5.15.0-71-generic'
カーネルモジュール更新
現バージョンの確認。
$ modinfo lpfc
filename: /lib/modules/5.15.0-71-generic/kernel/drivers/scsi/lpfc/lpfc.ko
version: 0:14.0.0.4
...
念の為バックアップしておく。
$ sudo cp /lib/modules/5.15.0-71-generic/kernel/drivers/scsi/lpfc/lpfc.ko /lib/modules/5.15.0-71-generic/kernel/drivers/scsi/lpfc/lpfc.ko.bak
モジュール更新し、再ロード
$ sudo cp lpfc.ko /lib/modules/5.15.0-71-generic/kernel/drivers/scsi/lpfc/lpfc.ko
$ sudo modprobe lpfc
$ modinfo lpfc
filename: /lib/modules/5.15.0-71-generic/kernel/drivers/scsi/lpfc/lpfc.ko
supported: external
version: 0:14.0.639.23
author: Broadcom
description: Emulex LightPulse Fibre Channel SCSI driver 14.0.639.23
license: GPL v2
srcversion: 219A0B35AC907142F4FD9AD
alias: pci:v000010DFd0000F500sv*sd*bc*sc*i*
alias: pci:v000010DFd0000F400sv*sd*bc*sc*i*
alias: pci:v000010DFd0000E300sv*sd*bc*sc*i*
depends: scsi_transport_fc,nvme-fc
retpoline: Y
name: lpfc
vermagic: 5.15.0-71-generic SMP mod_unload modversions
...
以上の操作で 14.0.0.4 -> 14.0.639.23 に更新された。
動作確認
割り当てたボリュームを認識したぽい。
$ lsscsi
[0:3:111:0] disk DELL PERC H755 Front 5.21 /dev/sda
[1:0:0:0] disk DellEMC ME5 I200 /dev/sdb
...
multipath でも見えている。
$ sudo multipath -ll
mpatha (****************************) dm-4 DellEMC,ME5
size=3.6T features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
...