QLA Linux et RDAC - Sun 6140 liaison redondante

| | Comments (1) | TrackBacks (0)
Acceder un Sun 6140 avec redondance par Fiberchannel à partir d'un système Linux avec des cartes fiberchannel de Q-Logic n'est pas si facile. Sur Solaris, avec scsi_vhci (Sun MPxIO) ça marche presque automatiquement.

Le système de disques Sun 6140 ne supporte pas les connexions symmetriques, seulement un chemin du contrôleur de disque au système host est possible par volume. Vous auriez une erreur SCSI si vous essayer d'acceder un volume par un chemin non-actif.

En plus: Linux (avec les pilotes Q-Logic actuels) offre deux possibilités de redondance, mais aucune d'eux n'est utilisable avec le système RAID Sun 6140:

  1. Q-Logic qla2xxx failover: Le système RAID doit supporter le mode dit "Target Group Mode", l'activation du chemin se deroule avec des CDB spéciaux ou avec un reset de LUN. Mais cela ne marche pas avec le Sun 6140.
  2. dm-multipath, une part du système Linux dm. Il ne supporte que les liens symmetriques, alors pas de chance non plus avec le 6140.

Sun offre un logiciel "Linux-RDAC for Linux 09" (par téléchargement gratuit) mais ceci ne compilera pas sous SLES 10, 11 et Redhat 5.

J'ai trouvé une version actuelle sur le site web de LSI:

http://www.lsi.com/rdac/ds4000.html#current

Le fichier pour SLES 10, SLES 11 et Redhat est:

http://www.lsi.com/rdac/rdac-LINUX-09.03.0C05.0214-source.tar.gz

Ne vous en faites pas qu'il y a marqué "DS4000", ce pilote marchera sans problème avec votre RAID de Sun.

D'abord:
  1. Le code source du noyau linux doit être installé, ainsi que le compilateur gcc et les dépendances (résolues automatiquement par les installateurs yast (SLES) et yum (Redhat)).
  2. le pilote Q-Logic doit être chargé:
    modprobe qla2xxx
  3. Veuillez éteindre la redondance du pilote Q-Logic: ql2xfailover=0  (dans modprobe.conf.local pour SLES).

Devenez "root" sur votre machine, desemballez le code source, allez dans le répertoire du code source et tapez "make":



primitivo:/usr/src/sun-rdac # wget http://www.lsi.com/rdac/rdac-LINUX-09.03.0C05.0214-source.tar.gz
--10:48:20--  http://www.lsi.com/rdac/rdac-LINUX-09.03.0C05.0214-source.tar.gz
           => `rdac-LINUX-09.03.0C05.0214-source.tar.gz'
Resolving www.lsi.com... 192.19.195.53
Connecting to www.lsi.com|192.19.195.53|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 376,020 (367K) [application/x-gzip]

100%[========================================================================================>] 376,020      231.11K/s

10:48:22 (230.46 KB/s) - `rdac-LINUX-09.03.0C05.0214-source.tar.gz' saved [376020/376020]

primitivo:/usr/src/sun-rdac # tar zxf rdac-LINUX-09.03.0C05.0214-source.tar.gz
primitivo:/usr/src/sun-rdac # cd linuxrdac-09.03.0C05.0214
primitivo:/usr/src/sun-rdac/linuxrdac-09.03.0C05.0214 # make

The result should be like this:

make[1]: Entering directory `/usr/src/linux-2.6.16.60-0.42.4-obj/x86_64/smp'
make -C ../../../linux-2.6.16.60-0.42.4 O=../linux-2.6.16.60-0.42.4-obj/x86_64/smp modules
  CC [M]  /usr/src/sun-rdac/linuxrdac-09.03.0C05.0214/MPP_hba.o
  CC [M]  /usr/src/sun-rdac/linuxrdac-09.03.0C05.0214/mppLnx26p_upper.o


[... Beaucoup de lignes omises ...]


Checking Host Adapter Configuration...
Detected 1 LSI Host Adapter Port(s) on the system
Detected 2 QLogic Host Adapter Port(s) on the system
Host Adapters from different supported vendors co-exists on your system.
Please wait while we modify the system configuration files.
Your kernel version is 2.6.16.60-0.42.4-smp
Preparing to install MPP driver against this kernel version...
Generating module dependencies...
Warning:Duplicate module options detected.
Option in /etc/modprobe.conf.local ( ql2xfailover=0 ) takes precedence
Creating new MPP initrd image...
Root device:    /dev/disk/by-id/scsi-3600508e0000000009ec1e521e0b4940e-part5 (/dev/sda5) (mounted on / as ext3)
Module list:     scsi_mod sd_mod sg mppUpper amd74xx mptsas processor thermal fan jbd ext3 edd qla2xxx_conf qla2xxx mppVhba (xennet xenblk)

[...]

Kernel image:   /boot/vmlinuz-2.6.16.60-0.42.4-smp
Initrd image:   /boot/mpp-2.6.16.60-0.42.4-smp.img
        You must now edit your boot loader configuration file, /boot/grub/menu.lst, to
        add a new boot menu, which uses mpp-2.6.16.60-0.42.4-smp.img as the initrd image.
        Now Reboot the system for MPP to take effect.
        The new boot menu entry should look something like this (note that it may
        vary with different system configuration):

        ...

                title SUSE Linux (2.6.16.60-0.42.4-smp) with MPP support
                kernel (hd1,3)/boot/vmlinuz root=/dev/hdb4 vga=0x31a selinux=0 splash=silent console=tty0 resume=/dev/hda2 elevator=cfq showopts
                initrd (hd0,8)/boot/mpp-2.6.16.60-0.42.4-smp.img

You're ready to go!

La procedure à crée une nouvelle image initrd avec les pilotes mpp inclus (redondance RDAC)
It created a new initrd image including mpp drivers (RDAC multipathing). Il suffit de mettre le nom de cette image dans une entrée de GRUB si vous voulez démarrer avec les pilotes mpp inclus.

Pour activer mpp manuellement:

D'abord, déchargez les pilotes de Q-LOGIC: modprobe -r qla2xxx


  1. Chargez le nouveau pilote "mppUpper":

    modprobe mppUpper

  2. Chargez le pilote de Q-Logic:

    modprobe qla2xxx

    Le resultat affichable par "dmesg" devrait être ainsi:

    qla2xxx 0000:83:00.0: LOOP UP detected (2 Gbps).
      Vendor: SUN       Model: CSM200_R          Rev: 0710
      Type:   Direct-Access                      ANSI SCSI revision: 05
    736 [RAIDarray.mpp]Host 52 Target 0 Lun 0 Is a physical device but is an Unconfigured Device.
      Vendor: SUN       Model: CSM200_R          Rev: 0710
      Type:   Direct-Access                      ANSI SCSI revision: 05
      Vendor: SUN       Model: CSM200_R          Rev: 0710
      Type:   Direct-Access                      ANSI SCSI revision: 05

  3. Chargez le nouveau pilote pour un adaptateur SCSI virtuelle:

    modprobe mppVhba

  4. De nouveaux "disques" devraient apparaître (visible par "dmesg"):

    scsi54 : mpp virtual bus adapter :version:09.03.0C05.0214,timestamp:Fri Jun 26 18:02:53 CDT 2009
     54:0:0:0: scsi scan: consider passing scsi_mod.dev_flags=SUN:VirtualDisk:0x240 or 0x1000240
      Vendor: SUN       Model: VirtualDisk       Rev: 0710
      Type:   Direct-Access                      ANSI SCSI revision: 05
    scsi(54:0:0:10): Enabled tagged queuing, queue depth 30.
    SCSI device sdb: 1048576000 512-byte hdwr sectors (536871 MB)
    sdb: Write Protect is off
    sdb: Mode Sense: 77 00 10 08
    SCSI device sdb: drive cache: write back w/ FUA
    SCSI device sdb: 1048576000 512-byte hdwr sectors (536871 MB)
    sdb: Write Protect is off
    sdb: Mode Sense: 77 00 10 08
    SCSI device sdb: drive cache: write back w/ FUA
     sdb: sdb1
Eh bien voilà! Le disque "sdb" et lié avec redonance.

Pour contrôler le fonctionnement de RDAC, prenez le logiciel "mppUtil":

primitivo:/dev/disk/by-id # mppUtil -a
Hostname    = primitivo
Domainname  = N/A
Time        = GMT 10/14/2009 13:17:49

---------------------------------------------------------------
Info of Array Module's seen by this Host.
---------------------------------------------------------------
ID              WWN                      Type     Name
---------------------------------------------------------------
 0      600a0b800048a6920000000048699e5b FC     st6100_2
 1      600a0b8000487f960000000048467441 FC     st6100_1
---------------------------------------------------------------


Pour avoir des informations détaillés sur un systéme RAID, prenez l'option "-a":

primitivo:/dev/disk/by-id # mppUtil -a st6100_1
Hostname    = primitivo
Domainname  = N/A
Time        = GMT 10/14/2009 13:18:02

MPP Information:
----------------
      ModuleName: st6100_1                                 SingleController: N
 VirtualTargetID: 0x001                                       ScanTriggered: N
     ObjectCount: 0x000                                          AVTEnabled: N
             WWN: 600a0b8000487f960000000048467441               RestoreCfg: N
    ModuleHandle: none                                        Page2CSubPage: Y
 FirmwareVersion: 7.10.25.xx
   ScanTaskState: 0x00000000
        LBPolicy: LeastQueueDepth


Controller 'A' Status:
-----------------------
ControllerHandle: none                                    ControllerPresent: Y
    UTMLunExists: Y (127)                                            Failed: N
   NumberOfPaths: 1                                          FailoverInProg: N
                                                                ServiceMode: N

    Path #1
    ---------
 DirectoryVertex: present                                           Present: Y
       PathState: OPTIMAL
          PathId: 77350000 (hostId: 53, channelId: 0, targetId: 0)


Controller 'B' Status:
-----------------------
ControllerHandle: none                                    ControllerPresent: Y
    UTMLunExists: Y (127)                                            Failed: N
   NumberOfPaths: 1                                          FailoverInProg: N
                                                                ServiceMode: N

    Path #1
    ---------
 DirectoryVertex: present                                           Present: Y
       PathState: OPTIMAL
          PathId: 77340001 (hostId: 52, channelId: 0, targetId: 1)


[... rest omitted ...]

Veuillez prendre le système "by-id" pour réferencier un disque attaché par RDAC. Ce n'est pas sûr que votre volume étant sdb ne serait pas "sdc" après un redemarrage.

Dans /dev/disk/by-id your trouverez des liens d'une ID unique à une instance de disque actuelle:

Example:

lrwxrwxrwx 1 root root   9 2009-10-14 14:32 scsi-3600a0b800048a692000007ed4a7ca15a ->
../../sdb
lrwxrwxrwx 1 root root  10 2009-10-14 14:32 scsi-3600a0b800048a692000007ed4a7ca15a-part1 ->
../../sdb1



Pour rechercher de nouveaux volumes dans votre réseau redondant, utilisez la commande "mppBusRescan":

primitivo:/dev/disk/by-id # mppBusRescan
scan qla2 HBA host /sys/class/scsi_host/host53...
        no new device found
scan qla2 HBA host /sys/class/scsi_host/host52...
        no new device found
scan mptsas HBA host /sys/class/scsi_host/host0...
        no new device found
run /usr/sbin/mppUtil -s busscan...
scan mpp virtual host /sys/class/scsi_host/host54...
        no new virtual device found
primitivo:/dev/disk/by-id #



La configuration fine se fait dans la fichier /etc/mpp.conf. Ne changez pas de paramètre que vous ne connaissez pas.

0 TrackBacks

Listed below are links to blogs that reference this entry: QLA Linux et RDAC - Sun 6140 liaison redondante.

TrackBack URL for this entry: http://southbrain.com/mt/mt-tb.cgi/124

1 Comments

Excellent article, Je suis DBA oracle et ça ma aidé à voire plus claire dans un incident de production sur un environnement cluster.

J'aimerai bien un petit article reprenant les différentes commandes:
mppBusRescan,mppUtil par exemples ou mieux un petit article sur comment diagnostiquer.

PS: Bravo au grands voyages ;-)

Leave a comment

juillet 2010

Dim Lun Mar Mer Jeu Ven Sam
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Mentions légales

Ce blog appartient à:

Pascal Gienger
Kanzleistr. 14
78462 Konstanz
Téléphone +49 7531 584298-0
Télécopie +49 7531 584298-9

Téléphone États Unis: 1-678-791-4182

Canal YouTube: pascalgienger