GEOM MULTIPATH でマルチパスを構成する (1)

FreeBSD

GEOM MULTIPATH は,ストレージ IO を複数のインターフェイスで冗長させることができるものです.

iSCSI 環境を用いて,GEOM MULTIPATH によるマルチパスアクセスを構成してみます.
長くなるので,今回は iSCSI ターゲット / イニシエーター のマルチパスに向けた設定を解説し,GEOM MULTIPATH については次回に纏めます.

FreeBSD で Multipath なターゲットを設定する

先日の iSCSI ターゲット/イニシエーターは iSCSI 用ネットワークが一つでしたが,二つの iSCSI ネットワークの構成にアップグレードしていきます.
イメージとしてはこのようになります.


まずは,ターゲット (サーバー) 側でマルチパスに向けた設定に修正していきます.
修正と言ってもそんなに多くありません.やったこととしては,172.16.255.0/24 が元々あったネットワークです.これに 172.17.255.0/24 のネットワークを足した形となります.
各 auth-group および portal-group に 172.17.255.x を足しました.

ctl.conf の詳細については「FreeBSD で iSCSI を利用する (サーバー/ターゲット編)」を参照ください.

# cat /etc/ctl.conf
auth-group ag0 {
  chap-mutual "iscsi-user1" "Password-user1" "mutual-user" "Password-mutual"
  initiator-portal 172.16.255.0/24
  initiator-portal 172.17.255.0/24
}

auth-group ag1 {
  chap "iscsi-user2" "Password-user2"
  initiator-portal 172.16.255.1/24
  initiator-portal 172.17.255.1/24
}

auth-group ag2 {
  auth-type none
  initiator-portal 172.16.255.1/24
  initiator-portal 172.17.255.1/24
}


portal-group pg0 {
  discovery-auth-group no-authentication
  listen 172.16.255.254:3260
  listen 172.17.255.254:3260
}

target iqn.2023-12.iscsi.org.seichan:target0 {
  alias "target0"
  auth-group ag0
  portal-group pg0
  lun 0 {
    path /dev/da1
    option vendor "FreeBSD"
  }
  lun 1 {
    path /mnt/lun1.img
    option vendor "FreeBSD"
    blocksize 4096
    size 10G
  }
}

target iqn.2023-12.iscsi.org.seichan:target1 {
  alias "target1"
  auth-group ag1
  portal-group pg0
  lun 2 {
    path /mnt/lun2.img
    option vendor "FreeBSD"
    blocksize 4096
    size 10G
  }
}

target iqn.2023-12.iscsi.org.seichan:target2 {
  alias "target2"
  auth-group ag2
  portal-group pg0
  lun 3 {
    path /mnt/lun3.img
    option vendor "FreeBSD"
    blocksize 4096
    size 10G
  }
}

設定の再読み込み

次のコマンドでサービスに新しい設定を通知します.

# /etc/rc.d/ctld reload

以上でターゲット側は完了です.続いてイニシエーター側になります.

FreeBSD で Multipath なイニシエーターを設定する

イニシエーター側のマルチパスに向けた準備も大きな変更はありません.

以下が元々の設定ファイルになります.これを修正していきます.
設定ファイルの詳細については「FreeBSD で iSCSI を利用する (クライアント/イニシエーター編)」を参照してください.

# cat /etc/iscsi.conf
iscsi_target0 {
  targetaddress = 172.16.255.254;
  targetname = iqn.2023-12.iscsi.org.seichan:target0;
  authmethod = chap;
  chapiname = "iscsi-user1";
  chapsecret = "Password-user1";
  tgtchapname = "mutual-user";
  tgtchapsecret = "Password-mutual";
}

iscsi_target1 {
  targetaddress = 172.16.255.254;
  targetname = iqn.2023-12.iscsi.org.seichan:target1;
  authmethod = chap;
  chapiname = "iscsi-user2";
  chapsecret = "Password-user2";
}

iscsi_target2 {
  targetaddress = 172.16.255.254;
  targetname = iqn.2023-12.iscsi.org.seichan:target2;
  authmethod = none;
}

どういう名前付けが良いのか悩みましたが,これが一番分かりやすそうだったのでこうしました.
各設定を 172.16.255 と 172.17.255 分増やした形となります.iscsi_target0_0 と iscsi_target_0_1 の違いはこのニックネームの部分と targetaddress のみとなります.
これをマルチパスを構成するデバイス分増やしていった形となります.

# cat /etc/iscsi.conf
iscsi_target0_0 {
  targetaddress = 172.16.255.254;
  targetname = iqn.2023-12.iscsi.org.seichan:target0;
  authmethod = chap;
  chapiname = "iscsi-user1";
  chapsecret = "Password-user1";
  tgtchapname = "mutual-user";
  tgtchapsecret = "Password-mutual";
}

iscsi_target0_1 {
  targetaddress = 172.17.255.254;
  targetname = iqn.2023-12.iscsi.org.seichan:target0;
  authmethod = chap;
  chapiname = "iscsi-user1";
  chapsecret = "Password-user1";
  tgtchapname = "mutual-user";
  tgtchapsecret = "Password-mutual";
}


iscsi_target1_0 {
  targetaddress = 172.16.255.254;
  targetname = iqn.2023-12.iscsi.org.seichan:target1;
  authmethod = chap;
  chapiname = "iscsi-user2";
  chapsecret = "Password-user2";
}

iscsi_target1_1 {
  targetaddress = 172.17.255.254;
  targetname = iqn.2023-12.iscsi.org.seichan:target1;
  authmethod = chap;
  chapiname = "iscsi-user2";
  chapsecret = "Password-user2";
}

iscsi_target2_0 {
  targetaddress = 172.16.255.254;
  targetname = iqn.2023-12.iscsi.org.seichan:target2;
  authmethod = none;
}

iscsi_target2_1 {
  targetaddress = 172.17.255.254;
  targetname = iqn.2023-12.iscsi.org.seichan:target2;
  authmethod = none;
}

設定ファイルの修正が終わったら iscsictl を再起動します.本来は手動で追加するか,再起動を入れたほうがいいかもしれません.
サービスの再起動時,デバイスをマウントしていない事を確認してください.

# /etc/rc.d/iscsictl restart
iscsictl not running?
Starting iscsictl.
iscsictl: ISCSISADD: Device busy
iscsictl: ISCSISADD: Device busy
iscsictl: ISCSISADD: Device busy
/etc/rc.d/iscsictl: WARNING: failed to start iscsictl

# iscsictl -L
Target name                          Target portal    State
iqn.2023-12.iscsi.org.seichan:target0 172.16.255.254   Connected: da4 da5
iqn.2023-12.iscsi.org.seichan:target1 172.16.255.254   Connected: da3
iqn.2023-12.iscsi.org.seichan:target2 172.16.255.254   Connected: da2
iqn.2023-12.iscsi.org.seichan:target0 172.17.255.254   Connected: da7 da9
iqn.2023-12.iscsi.org.seichan:target1 172.17.255.254   Connected: da8
iqn.2023-12.iscsi.org.seichan:target2 172.17.255.254   Connected: da6

エラーが出ちゃってますが,iscsictl -L で見ると二つのネットワークから接続できている事が確認できました.
これで GEOM MULTIPATH で束ねる準備ができました.

コメント

タイトルとURLをコピーしました