====== Multipath ====== Voir aussi : https://access.redhat.com/solutions/137073 Variables importantes : * **polling_interval :** intervalle entre 2 check.. Quand tous les paths sont ok, cette valeur augmente jusqu’à atteindre la valeur définie par la variable **//max_polling_interval//**. (defaut : 5) * **max_polling_interval :** temps maximum entre 2 check (défaut : 4 * polling_interval) * **checker_timeout :** timeout du path (défaut : valeur de ''/sys/block//device/timeout'') * **fast_io_fail_tmo :** temps à attendre avant que le path passe en état failed lors d'une perte de link de la carte SAN. Pendant ce temps les io sont en queue (défaut : ''/sys/class/fc_remote_ports/rport-/fast_io_fail_tmo'') * **dev_loss_tmo :** temps avant du supprimer le path lors d'une perte de link de la carte SAN. On peut définir la valeur **//infinity//** pour garder les path en état failed sans les supprimer (Default : **//no_path_retry//** * **//polling_interval//** si **//no_path_retry//** et **//polling_interval//** sont supérieurs à **//dev_loss_tmo//**, sinon : 300 si **//fast_io_fail_tmo//** est à **//off//** sinon 600) => ''/sys/class/fc_remote_ports/rport-/dev_loss_tmo'' * **no_path_retry :** bloque les IO en queue si un nombre de tentatives est spécifiée. Mettre la valeur **//fail//** ou **//0//** pour désactiver la queue (fail immédiat sauf si **//fast_io_fail_tmo//** est spécifié alors les io seront en queue le temps de cette valeur). Spécifier la valeur **//queue//** pour qu’un path ne tombe jamais en état failed. Temps estimé avant état failed si on a positionné un nombre : **//max_polling_interval//** + (**//no_path_retry//** * **//polling_interval//**). * Explication d'une ligne de **multipath -ll** : 8:1:5:0 sdk 8:160 active ready running Voir https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/dm_multipath/mpio_output `- host:channel:id:lun devnode major:minor dm_status_if_known path_status online_status Cela signifie : * **8** est l'identifiant de la carte HBA (host) * **1** est le port de la carte (channel) * **5** est la scsi target (id) * **0** est le numéro de lun (lun) * **sdk** est le nom du disque (devnode) * **8:160** est le major:minor device (major:minor) * **active** : le path est actif et accepte les IO. Les IO sont placés en queue si le champs suivant est en état **faulty**, par exemple **active faulty running**. Si ce champ est en état **failed** alors le path n'accepte plus le IO (dm_status_if_known) * **ready** : le path acceptes les IO /ou faulty (path_status) * **running** : Le path est actif. **offline** signifie que le périphérique scsi a été désactivé (online_status) Exemple fichier ''multipath.conf'' : blacklist { device { vendor ".*" product ".*" } } blacklist_exceptions { device { vendor "3PARdata" product "VV" } } defaults { max_polling_interval 10 polling_interval 5 checker_timeout 15 } devices { device { vendor "3PARdata" product "VV" path_grouping_policy "group_by_prio" uid_attribute "ID_SERIAL" prio "alua" #path_selector "round-robin 0" path_selector "service-time 0" path_checker "tur" hardware_handler "1 alua" failback "immediate" rr_weight "uniform" rr_min_io_rq 1 fast_io_fail_tmo 10 # IO 10s en queue avant path failed (avec no_path_retry à 0) dev_loss_tmo 14 #Prendra la valeur 14 avec no_path_retry à 0 ou 180 avec no_path_retry à 36 ou infini avec no_path_retry à queue #no_path_retry "queue" #Sans mirroir / Sans Pacemaker => IO bloqués jusqu'à ce que le SAN redevienne opérationnel no_path_retry 36 #En mirroir sans pacemaker : 18 x polling_interval + max_polling_interval => soit environ 180s (la préco d'HP est de 18 avec un polling_interval à 10, j'ai divisé par 2 le polling_interval et multiplié par 2 le no_path_retry, ce qui a pour conséquence de mettre le dev_loss_tmo à 180 dans les 2 cas) #no_path_retry 0 #En mirroir avec Pacemaker } } multipaths { multipath { wwid WWID_LUN alias MON_ALIAS } }