Por que o nó (multipathed com boot drive no mpatha) requer que ambos os servidores TGT inicializem e que nenhum deles

1

Isso é o que eu fiz

Eu tenho uma VM que contém:

  1. Um cliente do Ceph
  2. Um servidor TGT
  3. servidor DHCP

a máquina expõe a imagem (RHEL) presente no Ceph e o PXE inicializa o nó remoto (que é o iniciador).

Eu clonei a VM e fechei o servidor DHCP de forma que a VM clonada tenha o cliente Ceph e o servidor TGT. Então agora eu tenho dois servidores TGT expondo o mesmo Target e incluí os IP's de ambos os servidores TGT no arquivo tftpboot como:

#!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

E o alvo exposto são:

[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

Quando o nó é inicializado, vejo duas unidades:

  1. sdb em que a unidade de inicialização está presente
  2. sda que é outro drive (para ser usado como multipath) 3. Eu instalo o device-multimapper-multipath
  3. mpathconf --enable --with_multipathd y
  4. mpathconf --enable
  5. Feitas as seguintes alterações no arquivo /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. agora em multipath -ll eu não vejo nenhum dispositivo, nem lsblk mostra a unidade como mpath
  8. quando eu reinicio o nó, vejo a única unidade como uma unidade multipath ( lsblk )

Agora, eu faço:

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

... após o qual eu encerro o sistema e o reinicializo.

  1. Efetuando login no nó que eu vejo:

    [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  /
    

NOTA: O multipathing está funcionando bem, até mesmo um dos servidores TGT desce pelo nó muda dinamicamente sobre o segundo servidor.

Problemas

  1. Esta é a maneira correta de fazer isso ou estou perdendo alguma coisa?
  2. Sempre que tento reinicializar o nó, ele aguarda que os servidores TGT estejam ativos e não inicializa, a menos que ambos os servidores estejam acessíveis (matando assim o propósito).

Existe uma maneira de corrigir isso?

    
por Mihir Borkar 20.06.2018 / 19:16

0 respostas