0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Fedora Server で FC-SAN ターゲットを構築(Qlogic HBA)

Last updated at Posted at 2025-02-28

はじめに

Proxmox VEでFC-SANストレージの接続試験を行うために、
Fedora Server 41 上で Fibre Channel (FC) ターゲットを構築し、LUN を提供してみました。
2台のProxmox VEから同時接続を行うために、2ポート実装のQlogicの FC HBA を利用しました。

参考情報: Fibre Channel in the Homelab (kenmoini.com)
Qlogic HBA をターゲットモードで動かす方法などを含んでいます。

検証環境

項目 内容
OS Fedora Server 41
HBA Qlogic 2662
ターゲット設定 LIO (targetcli) を使用
接続プロトコル Fibre Channel (FC)
ストレージ領域 LVM ボリューム /dev/fedora/fc_lun1 (500GB 例)

1. HBA の認識を確認

まず、FC HBA が OS に正しく認識されているかを確認します。

確認

lspci | grep -i fibre
lsmod | grep -i qla
[flathill@localhost ~]$ lspci | grep -i fibre
01:00.0 Fibre Channel: QLogic Corp. ISP8324-based 16Gb Fibre Channel to PCI Express Adapter (rev 02)
01:00.1 Fibre Channel: QLogic Corp. ISP8324-based 16Gb Fibre Channel to PCI Express Adapter (rev 02)
[flathill@localhost ~]$ lsmod | grep -i qla
qla2xxx              1212416  0
nvme_fc                69632  1 qla2xxx
scsi_transport_fc     126976  1 qla2xxx

Qlogic のドライバ qla2xxx がロードされていれば OK です。認識されていない場合は、modprobe qla2xxx でロードしてください。


2. HBA をターゲットモードに設定

FC HBA では、イニシエータモードを無効化してターゲットモードを有効にする設定が必要です。

Qlogic (qla2xxx) ドライバの場合

  1. lpfc モジュール設定ファイルの編集
    Fedora では /usr/lib/modprobe.d/qla2xxx.conf のようなファイルを作成し、以下を記載します。
options qla2xxx qlini_mode="disabled"
[root@localhost ~]# cat /usr/lib/modprobe.d/qla2xxx.conf
options qla2xxx qlini_mode="disabled"
  1. initramfs の更新
    設定を反映させるため、dracut で initramfs を再生成します。
dracut -f
[root@localhost ~]# dracut -f
dracut[E]: Module 'systemd-pcrphase' depends on 'tpm2-tss', which can't be installed
dracut[E]: Module 'systemd-pcrphase' depends on 'tpm2-tss', which can't be installed
  1. 再起動
reboot

再起動後、qla2xxx ドライバがターゲットモードになっているかを確認します。

  1. ターゲットモジュールのロード
    起動後に以下のコマンドを実行し、必要なモジュールがロードされているか確認します。
lsmod | grep lpfc
[root@localhost flathill]# modprobe configfs
[root@localhost flathill]# modprobe target_core_mod
[root@localhost flathill]# modprobe tcm_fc
[root@localhost flathill]# lsmod | grep qla2xxx
qla2xxx              1212416  0
nvme_fc                69632  1 qla2xxx
scsi_transport_fc     126976  2 qla2xxx,libfc

3. targetcli のインストール

FC ターゲットを作成するには、targetcli を利用します。
Fedora では以下のようにインストールします。

dnf install targetcli sysfsutils
[root@localhost flathill]# dnf install targetcli sysfsutils
Updating and loading repositories:
 Fedora 41 - x86_64 - Updates                                                 100% |   4.3 MiB/s |  10.8 MiB |  00m02s
 Fedora 41 openh264 (From Cisco) - x86_64                                     100% |   4.3 KiB/s |   6.0 KiB |  00m01s
 Fedora 41 - x86_64                                                           100% |   9.5 MiB/s |  35.4 MiB |  00m04s
Repositories loaded.
Package                                Arch       Version                                Repository               Size
Installing:
 sysfsutils                            x86_64     2.1.1-8.fc41                           fedora              100.6 KiB
 targetcli                             noarch     2.1.58-3.fc41                          fedora              275.7 KiB
省略

インストール後、以下のコマンドでqla2xxxが含まれているか確認します。

targetcli ls
[root@localhost flathill]# targetcli ls
o- / ........................................................................................................... [...]
  o- backstores ................................................................................................ [...]
  | o- block .................................................................................... [Storage Objects: 0]
  | o- fileio ................................................................................... [Storage Objects: 0]
  | o- pscsi .................................................................................... [Storage Objects: 0]
  | o- ramdisk .................................................................................. [Storage Objects: 0]
  o- iscsi .............................................................................................. [Targets: 0]
  o- loopback ........................................................................................... [Targets: 0]
  o- qla2xxx ............................................................................................ [Targets: 0]
  o- vhost .............................................................................................. [Targets: 0]

この結果から、QlogicのHBAがtargetとして利用出来ることが分かります。


4. バックストアの作成

LVM で 500GB の論理ボリュームを作成し、それをバックストアとして提供する例です。

LVM ボリュームの作成 (例)

lvcreate -L 200G -n fc_lun1 fedora
lvs
  • ボリュームグループ名を fedora、論理ボリューム名を fc_lun1 としています。
[root@localhost flathill]# lvcreate -L 200G -n fc_lun1 fedora
  Logical volume "fc_lun1" created.
[root@localhost flathill]# lvs
  LV      VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  fc_lun1 fedora -wi-a----- 200.00g
  root    fedora -wi-ao----  15.00g

targetcli でバックストア登録

targetcli /backstores/block create name=fc_lun1 dev=/dev/fedora/fc_lun1
  • name には任意のバックストア名を指定
  • dev には先ほど作成した LVM ボリュームを指定
[root@localhost flathill]# targetcli /backstores/block create name=fc_lun1 dev=/dev/fedora/fc_lun1
Created block storage object fc_lun1 using /dev/fedora/fc_lun1.

登録後に以下を実行し、バックストアが作成されたか確認します。

targetcli /backstores/block ls
[root@localhost flathill]# targetcli /backstores/block ls
o- block ........................................................................................ [Storage Objects: 1]
  o- fc_lun1 ................................................. [/dev/fedora/fc_lun1 (200.0GiB) write-thru deactivated]
    o- alua ......................................................................................... [ALUA Groups: 1]
      o- default_tg_pt_gp ............................................................. [ALUA state: Active/optimized]

5. WWPNの登録

QLogic HBAが2ポート構成のため、それぞれのWWPNをFCターゲットとして設定し、同じbackstore (/backstores/block/fc_lun1) にアサインすることで、マルチパス構成を実現します。

1. HBAのWWPNを確認

まず、QLogic HBAの各ポートのWWPNを取得します。

cat /sys/class/fc_host/host*/port_name
[root@localhost ~]# cat /sys/class/fc_host/host*/port_name
0x2100000e1efd7802
0x2100000e1efd7803

ここで取得した2つのWWPN (0x2100000e1efd7802, 0x2100000e1efd7803) をターゲットに設定します。


2. targetcli でFCターゲットを作成

targetcli を開きます。

targetcli
[root@localhost ~]# targetcli
targetcli shell version 2.1.58
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.

(1) qla2xxx にFCターゲットを作成

/> cd /qla2xxx
/qla2xxx> create 0x2100000e1efd7802
Created target naa.2100000e1efd7802.
/qla2xxx> create 0x2100000e1efd7803
Created target naa.2100000e1efd7803.

→ 2つのポートをFCターゲットとして登録

(2) それぞれのターゲットに LUN をアタッチ

/qla2xxx> cd /qla2xxx/naa.2100000e1efd7802/luns
/qla2xxx/naa....1efd7802/luns> ls
o- luns .................................................................................................... [LUNs: 0]
/qla2xxx/naa....1efd7802/luns> create /backstores/block/fc_lun1
Created LUN 0.
/qla2xxx/naa....1efd7802/luns> ls
o- luns .................................................................................................... [LUNs: 1]
  o- lun0 ................................................... [block/fc_lun1 (/dev/fedora/fc_lun1) (default_tg_pt_gp)]
/qla2xxx/naa....1efd7802/luns> cd /qla2xxx/naa.2100000e1efd7803/luns
/qla2xxx/naa....1efd7803/luns> ls
o- luns .................................................................................................... [LUNs: 0]
/qla2xxx/naa....1efd7803/luns> create /backstores/block/fc_lun1
Created LUN 0.
/qla2xxx/naa....1efd7803/luns> ls
o- luns .................................................................................................... [LUNs: 1]
  o- lun0 ................................................... [block/fc_lun1 (/dev/fedora/fc_lun1) (default_tg_pt_gp)]

→ 両方のポートに /backstores/block/fc_lun1 をアサイン


3. ACL(イニシエータWWPN)を設定

2台のイニシエータ(ホスト)側のWWPNを取得し、ACLとして登録します。

(イニシエータ(ホスト)側のWWPN取得方法)

cat /sys/class/fc_host/host*/port_name
root@d-1697:~# cat /sys/class/fc_host/host5/port_name
0x10000090fad99630
root@d-1698:~# cat /sys/class/fc_host/host*/port_name
0x10000090fad995fe

(取得したWWPNをターゲットに登録)

/qla2xxx/naa....1efd7802/luns> cd /qla2xxx/naa.2100000e1efd7802/acls
/qla2xxx/naa....1efd7802/acls> create 0x10000090fad99630
Created Node ACL for naa.10000090fad99630
Created mapped LUN 0.
/qla2xxx/naa....1efd7802/acls> create 0x10000090fad995fe
Created Node ACL for naa.10000090fad995fe
Created mapped LUN 0.
/qla2xxx/naa....1efd7802/acls> cd /qla2xxx/naa.2100000e1efd7803/acls
/qla2xxx/naa....1efd7803/acls> create 0x10000090fad99630
Created Node ACL for naa.10000090fad99630
Created mapped LUN 0.
/qla2xxx/naa....1efd7803/acls> create 0x10000090fad995fe
Created Node ACL for naa.10000090fad995fe
Created mapped LUN 0.

→ ホスト側のWWPNをターゲットのACLに登録


4. 設定を保存

ルートディレクトリに戻ってから設定を保存します。

/qla2xxx/naa....1efd7803/acls> cd /
/> saveconfig
Configuration saved to /etc/target/saveconfig.json
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup/.
Configuration saved to /etc/target/saveconfig.json

5. ターゲットサービスの再起動

systemctl restart target
[root@localhost ~]# systemctl restart target
[root@localhost ~]# systemctl status target
● target.service - Restore LIO kernel target configuration
     Loaded: loaded (/usr/lib/systemd/system/target.service; disabled; preset: disabled)
    Drop-In: /usr/lib/systemd/system/service.d
             mq10-timeout-abort.conf
     Active: active (exited) since Fri 2025-02-28 11:25:28 JST; 4s ago
 Invocation: 0a8e2dc95a574fe2b72f1b6692dab0f4
    Process: 2352 ExecStart=/usr/bin/targetctl restore (code=exited, status=0/SUCCESS)
   Main PID: 2352 (code=exited, status=0/SUCCESS)
   Mem peak: 8.2M
        CPU: 79ms

 2月 28 11:25:20 localhost.localdomain systemd[1]: Starting target.service - Restore LIO kernel target configuration.>
 2月 28 11:25:28 localhost.localdomain systemd[1]: Finished target.service - Restore LIO kernel target configuration.

6. 設定の確認

targetcli ls
[root@localhost ~]# targetcli ls
o- / ........................................................................................................... [...]
  o- backstores ................................................................................................ [...]
  | o- block .................................................................................... [Storage Objects: 1]
  | | o- fc_lun1 ............................................... [/dev/fedora/fc_lun1 (200.0GiB) write-thru activated]
  | |   o- alua ..................................................................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ......................................................... [ALUA state: Active/optimized]
  | o- fileio ................................................................................... [Storage Objects: 0]
  | o- pscsi .................................................................................... [Storage Objects: 0]
  | o- ramdisk .................................................................................. [Storage Objects: 0]
  o- iscsi .............................................................................................. [Targets: 0]
  o- loopback ........................................................................................... [Targets: 0]
  o- qla2xxx ............................................................................................ [Targets: 2]
  | o- naa.2100000e1efd7802 ............................................................................... [gen-acls]
  | | o- acls .............................................................................................. [ACLs: 2]
  | | | o- naa.10000090fad99630 ..................................................................... [Mapped LUNs: 1]
  | | | | o- mapped_lun0 ................................................................... [lun0 block/fc_lun1 (rw)]
  | | | o- naa.10000090fad995fe ..................................................................... [Mapped LUNs: 1]
  | | |   o- mapped_lun0 ................................................................... [lun0 block/fc_lun1 (rw)]
  | | o- luns .............................................................................................. [LUNs: 1]
  | |   o- lun0 ............................................. [block/fc_lun1 (/dev/fedora/fc_lun1) (default_tg_pt_gp)]
  | o- naa.2100000e1efd7803 ............................................................................... [gen-acls]
  |   o- acls .............................................................................................. [ACLs: 2]
  |   | o- naa.10000090fad99630 ..................................................................... [Mapped LUNs: 1]
  |   | | o- mapped_lun0 ................................................................... [lun0 block/fc_lun1 (rw)]
  |   | o- naa.10000090fad995fe ..................................................................... [Mapped LUNs: 1]
  |   |   o- mapped_lun0 ................................................................... [lun0 block/fc_lun1 (rw)]
  |   o- luns .............................................................................................. [LUNs: 1]
  |     o- lun0 ............................................. [block/fc_lun1 (/dev/fedora/fc_lun1) (default_tg_pt_gp)]
  o- vhost .............................................................................................. [Targets: 0]

7. イニシエータ(ホスト)側の確認

2台のホスト側でターゲットが見えているかを確認します。

lsblk
root@d-1697:~# lsblk | grep sdb
sdb                  8:16   0   200G  0 disk
root@d-1698:~# lsblk | grep sdb
sdb                  8:16   0   200G  0 disk

最初に作成した、200Gのlvが見えていることが分かります。


まとめ

  • targetcli でQLogic HBAの2ポート (qla2xxx) をターゲットに登録
  • 両ポートに fc_lun1 をアタッチ
  • イニシエータ(ホスト)のWWPNをACLに追加
  • 設定を保存し、target サービスを再起動
  • ホスト側で lsscsi で確認

以上の構成により、ターゲット側HBAの2ポートを活用し、2台のイニシエータ側HBAから単一の fc_lun1 に対してアクセスが可能になります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?