mpatha에서 부팅 드라이브의 다중 경로 지정을 사용하는 노드에서 두 TGT 서버 중 하나를 시작하지 않고 시작해야 하는 이유는 무엇입니까?

mpatha에서 부팅 드라이브의 다중 경로 지정을 사용하는 노드에서 두 TGT 서버 중 하나를 시작하지 않고 시작해야 하는 이유는 무엇입니까?

이게 내가 한 일이야

다음과 같은 가상 머신이 있습니다.

  1. 세프 클라이언트
  2. TGT 서버
  3. DHCP 서버

머신은 Ceph(RHEL)에 있는 이미지를 노출하고 PXE는 원격 노드(즉, 개시자)를 부팅합니다.

VM을 복제하고 DHCP 서버를 꺼서 복제된 VM에 Ceph 클라이언트와 TGT 서버가 모두 포함되도록 했습니다. 이제 동일한 대상을 노출하는 두 개의 TGT 서버가 있고 파일에 두 TGT 서버의 IP가 있습니다 tftpboot. 예를 들면 다음과 같습니다.

#!ipxe
  sleep 23
  set keep-san 1
  ifconf --configurator=dhcp net0
  sanboot iscsi:10.20.30.1:tcp:3260:1:kumo-dan-installscript-img37 \
          iscsi:10.20.30.2:tcp:3260:1:kumo-dan-installscript-img37
  boot

노출된 대상은 다음과 같습니다.

[root@bmi-introspect conf.d]# tgt-admin -s

Target 1: kumo-dan-installscript-img37
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
        I_T nexus: 4
            Initiator: iqn.2010-04.org.ipxe:4c4c4544-0034-4410-8056-cac04f4c3032 alias: localhost.localdomain
            Connection: 0
                IP Address: 10.20.30.70
    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: 10737 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: rbd
            Backing store path: bmi-introspect/kumo-dan-installscript-img37
            Backing store flags:
    Account information:
    ACL information:
        ALL

노드가 부팅되면 두 개의 드라이브가 표시됩니다.

  1. 부팅 드라이브가 존재하는 sdb
  2. sda는 다른 드라이브입니다(멀티패스로 사용됨). 3.device-multimapper-multipath를 설치합니다.
  3. mpathconf --enable --with_multipathd y
  4. mpathconf --enable
  5. 파일이 다음과 같이 변경되었습니다 /etc/multipath.conf.

    (uncommenting the defaults settings)
    
    defaults {
            polling_interval        10
            path_selector           "round-robin 0"
            path_grouping_policy    multibus
            uid_attribute           ID_SERIAL
    #       prio                    alua
            path_checker            readsector0
            rr_min_io               100
            max_fds                 8192
            rr_weight               priorities
            failback                immediate
            no_path_retry           5
            user_friendly_names     yes
            find_multipaths         yes
    }
    
  6. systemctl start multipathd; systemctl enable multipathd

  7. 이제 multipath -ll에서는 장치가 표시되지 않으며 lsblk드라이브가 mpath로 표시 되지 않습니다.
  8. 노드를 다시 시작하면 하나의 드라이브가 다중 경로 드라이브로 표시됩니다( lsblk).

이제 저는 이렇게 합니다:

$ multipath -a /dev/sdb (which is where my boot drive is)
$ dracut --force -H --add multipath

...그런 다음 시스템을 종료하고 다시 시작했습니다.

  1. 표시된 노드에 로그인하세요.

    [root@localhost ~]# multipath -l
    mpatha (360000000000000000e00000000010001) dm-0 IET     ,VIRTUAL-DISK
    size=10G features='1 queue_if_no_path' hwhandler='0' wp=rw
    `-+- policy='round-robin 0' prio=0 status=active
      |- 7:0:0:1 sda 8:0  active undef unknown
      `- 8:0:0:1 sdb 8:16 active undef unknown
    
    [root@localhost ~]# multipath -ll
    mpatha (360000000000000000e00000000010001) dm-0 IET     ,VIRTUAL-DISK
    size=10G features='1 queue_if_no_path' hwhandler='0' wp=rw
    `-+- policy='round-robin 0' prio=1 status=active
      |- 7:0:0:1 sda 8:0  active ready running
      `- 8:0:0:1 sdb 8:16 active ready running
    
    [root@localhost ~]# lsblk
    NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
    sda           8:0    0   10G  0 disk
    +-mpatha    253:0    0   10G  0 mpath
      +-mpatha1 253:1    0  476M  0 part  /boot
      +-mpatha2 253:2    0    5G  0 part  /
    sdb           8:16   0   10G  0 disk
    +-mpatha    253:0    0   10G  0 mpath
      +-mpatha1 253:1    0  476M  0 part  /boot
      +-mpatha2 253:2    0    5G  0 part  /
    

노트:TGT 서버 중 하나에 오류가 발생하더라도 다중 경로가 작동하고 노드는 두 번째 서버로 동적으로 전송됩니다.

질문

  1. 이것이 올바른 접근 방식입니까, 아니면 뭔가 빠졌습니까?
  2. 노드를 다시 시작하려고 하면 두 TGT 서버가 모두 시작될 때까지 기다리고 두 서버에 모두 연결할 수 없으면 시작되지 않습니다(따라서 목적이 무산됨).

이 문제를 해결할 방법이 있나요?

관련 정보