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?

ProxmoxでiSCSIマルチパスを使う

Posted at

vSphereからの移行の為にiSCSIストレージを作成して利用してみた。

ことの背景はvSphereからの移行先としてProxmoxが選ばれた。
今ある環境vSphereClusterを1台ずつ消していき、最終的に全台Proxmoxにしようという計画

iSCSIストレージについて

訳あってストレージが用意出来ない為、
nvmeディスクを積んだサーバをmdadmでRAID化し、rawデバとしてiSCSIターゲットに利用することとする。
構成はこんな感じ

image.png
でもたぶん今回の環境だとクラスタ化したら壊れちゃう気がする。
排他制御が上手く働くかは不明。
ちゃんと検証したいがホストが足りないのでまた今度。

本当は製品としてちゃんとしてる共有ストレージ用意出来たらいいんだけどね。。
環境は以下の通り

tgtadm --mode target --op show
Target 1: iqn.2025-09.iscsi-flachesan:iscsi
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: null
            Backing store path: None
            Backing store flags:
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 26884343 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: rdwr
            Backing store path: /dev/md1
            Backing store flags:
    Account information:
    ACL information:
        10.0.1.0/24
        10.0.2.0/24

Proxmoxについて

特別な手順を踏まず普通にインストールし、ストレージと繋がるNICにIPを振っている
image.png

Proxmox側multipathの設定

物理NICは2本で、iSCSIマルチパスを利用する。

推奨設定(マニュアルに記載のあった設定)

vi /etc/iscsi/iscsid.conf
node.session.timeo.replacement_timeout = 15

node.session.timeo.replacement_timeout = 120をコメントアウトし、15を追記

デフォルトのパラメータは120だが、より短い15秒が推奨とのこと

GUIでストレージ登録

「データセンター」->「ストレージ」->「追加」->「iSCSI」を選択
image.png
ID:適当にわかりやすい名前を入力
Portal:iSCSIのIPを入力
ターゲット:LUNが自動的に認識されるので、ドロップボックスから選ぶ
今回は iqn.2025-09.iscsi-flachesan:iscsi
image.png

iscsiadm -m session
tcp: [1] 10.0.1.1:3260,1 iqn.2025-09.iscsi-flachesan:iscsi (non-flash)
tcp: [2] 10.0.2.1:3260,1 iqn.2025-09.iscsi-flachesan:iscsi (non-flash)

iscsiセッションが見えている。

iscsiadm -m session -P3
iSCSI Transport Class version 2.0-870
version 2.1.11
Target: iqn.2025-09.iscsi-flachesan:iscsi (non-flash)
        Current Portal: 10.0.1.1:3260,1
        Persistent Portal: 10.0.1.1:3260,1
                **********
                Interface:
                **********
                Iface Name: default
                Iface Transport: tcp
                Iface Initiatorname: iqn.1993-08.org.debian:01:4c97face5ba
                Iface IPaddress: 10.0.1.2
                Iface HWaddress: default
                Iface Netdev: default
                SID: 1
                iSCSI Connection State: LOGGED IN
                iSCSI Session State: LOGGED_IN
                Internal iscsid Session State: NO CHANGE
                *********
                Timeouts:
                *********
                Recovery Timeout: 15
                Target Reset Timeout: 30
                LUN Reset Timeout: 30
                Abort Timeout: 15
                *****
                CHAP:
                *****
                username: <empty>
                password: ********
                username_in: <empty>
                password_in: ********
                ************************
                Negotiated iSCSI params:
                ************************
                HeaderDigest: None
                DataDigest: None
                MaxRecvDataSegmentLength: 262144
                MaxXmitDataSegmentLength: 8192
                FirstBurstLength: 65536
                MaxBurstLength: 262144
                ImmediateData: Yes
                InitialR2T: Yes
                MaxOutstandingR2T: 1
                ************************
                Attached SCSI devices:
                ************************
                Host Number: 8  State: running
                scsi8 Channel 00 Id 0 Lun: 0
                scsi8 Channel 00 Id 0 Lun: 1
                        Attached scsi disk sdd          State: running
        Current Portal: 10.0.2.1:3260,1
        Persistent Portal: 10.0.2.1:3260,1
                **********
                Interface:
                **********
                Iface Name: default
                Iface Transport: tcp
                Iface Initiatorname: iqn.1993-08.org.debian:01:4c97face5ba
                Iface IPaddress: 10.0.2.2
                Iface HWaddress: default
                Iface Netdev: default
                SID: 2
                iSCSI Connection State: LOGGED IN
                iSCSI Session State: LOGGED_IN
                Internal iscsid Session State: NO CHANGE
                *********
                Timeouts:
                *********
                Recovery Timeout: 15
                Target Reset Timeout: 30
                LUN Reset Timeout: 30
                Abort Timeout: 15
                *****
                CHAP:
                *****
                username: <empty>
                password: ********
                username_in: <empty>
                password_in: ********
                ************************
                Negotiated iSCSI params:
                ************************
                HeaderDigest: None
                DataDigest: None
                MaxRecvDataSegmentLength: 262144
                MaxXmitDataSegmentLength: 8192
                FirstBurstLength: 65536
                MaxBurstLength: 262144
                ImmediateData: Yes
                InitialR2T: Yes
                MaxOutstandingR2T: 1
                ************************
                Attached SCSI devices:
                ************************
                Host Number: 9  State: running
                scsi9 Channel 00 Id 0 Lun: 0
                scsi9 Channel 00 Id 0 Lun: 1
                        Attached scsi disk sdc          State: running

こんな感じで表示されるはず。

※Proxmox側でscsi diskがsdc,sddとして認識されてる

multipath-toolsの導入

デフォルトではmutilpath-toolsが入っていない為、インストール

apt install -y multipath-tools

WWWIDを追記

デバイスの識別には以下コマンドにてWWIDを確認することができる

/lib/udev/scsi_id -g -u -d /dev/sdc
360000000000000000e00000000010001
/lib/udev/scsi_id -g -u -d /dev/sdd
360000000000000000e00000000010001

同じ結果となっているので、1つのデバイスであることがわかる。

multipath -a 360000000000000000e00000000010001
wwid '360000000000000000e00000000010001' added

この時のWWWIDは/lib/udev/scsi_id -g -u -d /dev/sdXコマンドの結果であること。

multipathのリロード

multipath -r
multipath -ll
360000000000000000e00000000010001 dm-5 IET,VIRTUAL-DISK
size=24T features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| `- 8:0:0:1 sdd 8:48 active ready running
`-+- policy='service-time 0' prio=1 status=enabled
  `- 9:0:0:1 sdc 8:32 active ready running

フェイルオーバ形式で表示された。
公式の例だと、ラウンドロビンで表示されたので調べてみた。

multipath -t

このコマンドで設定値が確認出来るらしい。

デフォルト設定が以下の通りだった。

defaults {
        verbosity 2
        polling_interval 5
        max_polling_interval 20
        reassign_maps "no"
        path_selector "service-time 0"
        path_grouping_policy "failover"
        uid_attribute "ID_SERIAL"
        prio "const"
        prio_args ""
        features "0"
        path_checker "tur"
        alias_prefix "mpath"
        failback "manual"
        rr_min_io 1000
        rr_min_io_rq 1
        max_fds "max"
        rr_weight "uniform"
        queue_without_daemon "no"
        allow_usb_devices "no"
        flush_on_last_del "unused"
        user_friendly_names "no"
        fast_io_fail_tmo 5
        log_checker_err "always"
        all_tg_pt "no"
        retain_attached_hw_handler "yes"
        detect_prio "yes"
        detect_checker "yes"
        detect_pgpolicy "yes"
        detect_pgpolicy_use_tpg "no"
        force_sync "no"
        strict_timing "no"
        deferred_remove "no"
        delay_watch_checks "no"
        delay_wait_checks "no"
        san_path_err_threshold "no"
        san_path_err_forget_rate "no"
        san_path_err_recovery_time "no"
        marginal_path_err_sample_time "no"
        marginal_path_err_rate_threshold "no"
        marginal_path_err_recheck_gap_time "no"
        marginal_path_double_failed_time "no"
        find_multipaths "strict"
        uxsock_timeout 4000
        retrigger_tries 3
        retrigger_delay 10
        missing_uev_wait_timeout 30
        skip_kpartx "no"
        remove_retries 0
        ghost_delay "no"
        auto_resize "never"
        find_multipaths_timeout -10
        enable_foreign "NONE"
        marginal_pathgroups "off"
        recheck_wwid "no"
}

どうやらデフォルトはfailoverのようです。

※マニュアル見た感じメーカーから出ている共有ストレージを使っている場合は適切なデフォルトが読み込まれてるかも?あんまりいじらない方が良さげ?

今回は無理やりiSCSI動かしているので、変更してみる。
というわけでconfigをchatgptに作ってもらった

defaults {
    user_friendly_names yes
    path_selector "round-robin 0"
    path_grouping_policy multibus
    rr_min_io 100
    rr_weight priorities
    failback immediate
    no_path_retry 300
}

multipaths {
    multipath {
        wwid "360000000000000000e00000000010001"
        alias proxmox-san
    }
}

devices {
    device {
        vendor "*"
        product "*"
        path_checker tur
        features "1 queue_if_no_path"
        hardware_handler "0"
        failback immediate
        rr_weight priorities
        no_path_retry 300
        path_selector "round-robin 0"
    }
}

パッと見たところ問題無さそうなので、これで設定

vi /etc/multipath.conf

↑のやつを入力それぞれWWIDは変えてね。
再読み込み後、確認。

multipath -r
multipath -ll
proxmox-san (360000000000000000e00000000010001) dm-5 IET,VIRTUAL-DISK
size=24T features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 8:0:0:1 sdd 8:48 active ready running
  `- 9:0:0:1 sdc 8:32 active ready running

ラウンドロビンになっている。やったぜ。

LVMでストレージを作成

この後VMデータが配置出来る様にGUIでLUN上にLVMを作成していきます。
「データセンター」->「ストレージ」->「追加」
image.png

この時共有済みにチェックを入れている(将来的にクラスタ化を検討する為)
ただ排他制御が上手く働いてくれるかはしっかり検証してみないと怪しい。

こんな感じでLVMストレージを作成

このVMを作成するときにこのストレージを選択することでVMを作成することが出来る。

残念な点

snapshotが取れない。やっぱりCephが一番いいと思います。IO遅いけど。

参考情報

先人が共有ストレージとしての利用を検証してくれていた。

最後に

クラスタ化を考えるとこれを全台作成するのは面倒(かもしれない)
一時利用としてのiSCSIターゲットなので、早くちゃんとした共有ストレージ使いたいな。

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?