Premièrement il faut bien configurer son zoning et ses LUN coté brocade/netapp ou autre.
On assume que l’on a des interfaces qlogic donc il faut un kernel debian qui supporte la carte.
Ils faut aussi installer les qla-tools que l’on peut trouver dans sid.
Une fois ceci configuré on doit avoir de beau messages si l’on fait un :
# dmesg | grep qla
[ 2.634180] qla2xxx 0000:04:00.0: LOOP UP detected (4 Gbps).
[ 2.637149] qla2xxx 0000:09:00.0: LOOP UP detected (4 Gbps).
[ 2.652926] qla2xxx 0000:04:00.0: SNS scan failed -- assuming zero-entry result...
et
# dmesg | egrep 'sdc|sdd|NETAPP'
[ 3.771579] scsi 3:0:0:0: Direct-Access NETAPP LUN 7320 PQ: 0 ANSI: 4
[ 3.772161] sd 3:0:0:0: [sdc] 167407616 512-byte logical blocks: (85.7 GB/79.8 GiB)
[ 3.772368] sd 3:0:0:0: [sdc] Write Protect is off
[ 3.772436] sd 3:0:0:0: [sdc] Mode Sense: bd 00 00 08
[ 3.772664] sd 3:0:0:0: [sdc] Write cache: disabled, read cache: enabled
[ 3.773316] sdc: sdc1
[ 3.774416] sd 3:0:0:0: [sdc] Attached SCSI disk
[ 3.823540] scsi 4:0:0:0: Direct-Access NETAPP LUN 7320 PQ: 0 ANSI: 4
[ 3.824107] sd 4:0:0:0: [sdd] 167407616 512-byte logical blocks: (85.7 GB/79.8 GiB)
[ 3.824925] sd 4:0:0:0: [sdd] Write Protect is off
[ 3.824992] sd 4:0:0:0: [sdd] Mode Sense: bd 00 00 08
[ 3.825312] sd 4:0:0:0: [sdd] Write cache: disabled, read cache: enabled
[ 3.826084] sdd: sdd1
A ce stade on voit le disque des deux cotés, ce qui prouve que notre conf est bonne.
Vérifions en lançant la commande ql-hba-snapshot :
# ql-hba-snapshot
QLogic HBA Host0 Information
WWPN: 0x20010026b930aaa5
WWNN: 0x20000026b930aaa5
Driver Version: 8.03.01-k6
Model: QME2572
Firmware Version: 4.04.05 (80)
Link State: running
Device Information
Device : 0
Vendor: NETAPP
Model: LUN
WWPN: 0x500a098186083903
Port ID: 0x9b1100
Number of LUNs: 1
QLogic HBA Host1 Information
WWPN: 0x20020026b930aaa5
WWNN: 0x20000026b930aaa5
Driver Version: 8.03.01-k6
Model: QME2572
Firmware Version: 4.04.05 (80)
Link State: running
Device Information
Device : 0
Vendor: NETAPP
Model: LUN
WWPN: 0x500a098286083903
Port ID: 0x9c1100
Number of LUNs: 1
On peut évidement attaquer nos disque en direct, mais du coup plus d’intérêt à faire du multipath. Configurons donc !
Ils faut installer le paquet multipath-tools.
ATTENTION : on évitera d’installer le paquet multipath-tools-boot sauf si :
- on veut voir son système foirer au prochain reboot
- on veut absolument vouloir booter sur un device en multipath (ce que je déconseille fortement)
Identifions le wwwid de nos deux disques :
# /lib/udev/scsi_id -g -u -d /dev/sdd
360a980004335434a654a565353477537
# /lib/udev/scsi_id -g -u -d /dev/sdc
360a980004335434a654a565353477537
Bonne nouvelle c’est le même.
Ensuite configurons le fichier /etc/multipath.conf :
defaults {
udev_dir /dev
polling_interval 2
default_getuid_callout "/lib/udev/scsi_id -g -u -d /dev/%n"
user_friendly_names yes
}
blacklist {
wwid 3603456781234567812d85e8d065bf234
wwid 3603456781234567812d85e9006877672
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z][[0-9]*]"
}
devices {
device
{
vendor "NETAPP "
product "LUN"
path_grouping_policy group_by_serial
path_checker tur
path_selector "round-robin 0"
prio_callout "/sbin/mpath_prio_netapp /dev/%n"
failback immediate
no_path_retry 300
}
}
multipaths {
multipath {
wwid 360a980004335434a654a565353477537
alias data-mp
}
}
Alors quelques commentaires :
- La section multipath est la ou l’on définit notre mapping sur nos deux path.
- La section device définit les paramètres par défaut du SAN
- La section blacklist est importante car elle permet d’exclure des disques du probe du multipath, par exemple ici on exclue les disques locaux sda et sdb. On peut aussi mettre un wwwid d’un disque pour plus de finesse.
Si tout se passe bien on peut taper la commande magique :
# multipath -l
data-mp (360a980004335434a654a565353477537) dm-0 NETAPP ,LUN
[size=80G][features=1 queue_if_no_path][hwhandler=0]
_ round-robin 0 [prio=0][active]
_ 3:0:0:0 sdc 8:32 [active][undef]
_ 4:0:0:0 sdd 8:48 [active][undef]
Après il est de bon ton d’utiliser LVM sur ce genre de disque, car on pourra le redimensionner à chaud, etc…
# apt-get install lvm2
Attention il faut configurer /etc/lvm/lvm.conf pour qu’il cherche ses PVs dans le device-mapper et exclure les disques physiques sinon on aura des doublons de PVs, et des messages du style ‘Duplicate PVs found’. Donc dans la section device il faut rajouter/changer les lignes suivantes :
filter = [ "r/sd.*/", "a/.*/" ]
types = [ "device-mapper", 1 ]
On crée ses PV/VG/LV de manière classique :
# pvcreate /dev/mapper/data-mp
# vgcreate data-vg /dev/mapper/data-mp
# lvcreate -n data-lv -L 40g data-vg
# mkfs -j /dev/data-vg/data-lv
Et voila !
On peut jouer un peu avec son fabric ou ses fibres pour casser un des deux chemins. On doit voir deux trucs :
[ 582.333842] qla2xxx 0000:09:00.0: LOOP DOWN detected (2 0 0).
dans le dmesg et
# multipath -l
data-mp (360a980004335434a654a565353477537) dm-0 ,
[size=80G][features=1 queue_if_no_path][hwhandler=0]
_ round-robin 0 [prio=0][active]
_ #:#:#:# - #:# [failed][undef]
_ 4:0:0:0 sdd 8:48 [active][undef]
Et bien sur on doit toujours accéder à nos données. Le mutlipath fonctionne.
J’ai aussi testé le resize, rajout de Lun à chaud et cela a pu fonctionner à coup de :
# echo "1" > /sys/class/fc_host/host1/issue_lip
# echo "1" > /sys/class/fc_host/host2/issue_lip
# echo '- - -' > /sys/class/scsi_host/host1/scan
# echo '- - -' > /sys/class/scsi_host/host2/scan
ou plus simple :
# ql-dynamic-tgt-lun-disc
puis les commande lvm classiques.
Attention tout cela peut paraitre cool et facile, mais il faut bien voir que j’ai fracassé le boot de mon serveur une bonne dizaine de fois avant d’avoir un setup fonctionnel.