Renommer des disques /dev/emcpowerX
Soit 2 noeuds d'un cluster : noeud1 et noeud2. Chaque noeud dispose de plusieurs disques SAN /dev/emcpowerX visibles par chacun. Pour monter un cluster on doit avoir les mêmes noms de disques correspondants au même ID logique de la même baie. En effet chaque noeud doit travailler sur les mêmes disques. Parfois sous Linux PowerPath perd les pédales au boot et on peut avoir la la conf suivante :
- noeud1
root@noeud1:~# powermt display dev=emcpowerh Pseudo name=emcpowerh Symmetrix ID=000287750899 Logical device ID=0040 state=alive; policy=SymmOpt; priority=0; queued-IOs=0 ============================================================================== ---------------- Host --------------- - Stor - -- I/O Path - -- Stats --- ### HW Path I/O Paths Interf. Mode State Q-IOs Errors ============================================================================== 1 lpfc sdah FA 7bA active alive 0 0 0 lpfc sdk FA 10bA active alive 0 0
- noeud2
root@noeud2:~# powermt display dev=emcpowerh Pseudo name=emcpowerh Symmetrix ID=000287750899 Logical device ID=0544 state=alive; policy=SymmOpt; priority=0; queued-IOs=0 ============================================================================== ---------------- Host --------------- - Stor - -- I/O Path - -- Stats --- ### HW Path I/O Paths Interf. Mode State Q-IOs Errors ============================================================================== 1 lpfc sdam FA 7bA active alive 0 0 0 lpfc sdp FA 10bA active alive 0 0
Ce qui nous intéresse ici est le Logical device ID. On prend une machine de référence, ici c'est le noeud1. Soit pour le disque emcpowerh :
noeud1 | noeud2 | |
---|---|---|
Pseudo name | emcpowerh | emcpowerh |
Symmetrix ID | 000287750899 | 0040 |
Logical device | 000287750899 | 0544 |
On voit bien que le disque emcpowerh n'est pas le même pour les 2 noeuds. On pourrait avoir une baie différente (c'est-à-dire un Symmetrix ID différent). Dans ce cas le Logical device ID suffirait quand même (à moins d'avoir le même ID sur 2 baies différentes). Voici la marche à suivre :
- On renomme d'abord l'emcpowerh sur le noeud2 avec un nom libre (sinon on ne peut pas bosser dessus) :
root@noeud2:~# emcpadm getfree -n 5 -b emcpowerh Next free pseudo device name(s) from emcpowerh are: Pseudo Device Name Major# Minor# emcpoweru 120 320 emcpowerv 120 336 emcpowerw 120 352 emcpowery 120 384 emcpowerz 120 400
root@noeud2:~# emcpadm rename -s emcpowerh -t emcpoweru
- Quel est le disque ayant l'ID 0040 (cf. noeud1)
root@noeud2:~# powermt display dev=all|grep -B 2 0040 Pseudo name=emcpowerm Symmetrix ID=000287750899 Logical device ID=0040
- On le renomme :
root@noeud2:~# emcpadm rename -s emcpowerm -t emcpowerh
Et voila résultat :
root@noeud2:~# powermt display dev=emcpowerh Pseudo name=emcpowerh Symmetrix ID=000287750899 Logical device ID=0040 state=alive; policy=SymmOpt; priority=0; queued-IOs=0 ============================================================================== ---------------- Host --------------- - Stor - -- I/O Path - -- Stats --- ### HW Path I/O Paths Interf. Mode State Q-IOs Errors ============================================================================== 1 lpfc sdah FA 7bA active alive 0 0 0 lpfc sdk FA 10bA active alive 0 0
Quand tout est OK ne pas oublier de faire un powermt save sur le noeud modifié.
Problème de cohérence chemins ⇔ devices PowerPath
Lorsqu'on utilise des commandes LVM on peut obtenir ces erreurs :
root@server1101582:/# vgchange -an vg_vrk1 vg_vrk2 vg_vrk2_raw 0 logical volume(s) in volume group "vg_vrk1" now active Can't deactivate volume group "vg_vrk2" with 5 open logical volume(s) Found duplicate PV ZjelLvmkIdZxspuWDvgbHtWe1Mt6dWy0: using /dev/sdq not /dev/emcpowere Found duplicate PV iboistKzZhnuI7vamjgSCbjNx98BNLfa: using /dev/sdag not /dev/emcpowerf Found duplicate PV 3ePFHbke6WBeWbWRjHmk0DipIbzo2IxH: using /dev/sdb not /dev/emcpowerg Found duplicate PV SakxwlEATnYsYk6GpUhq52QCGQTzFaDW: using /dev/sdr not /dev/emcpowerb
De la même façon lors d'un vgdisplay on ne voit que les chemins et non pas les emcpowerX. Ce qui est incorrect car on doit utiliser les disques PowerPath, dans le cas contraire on risque de sérieux soucis si un chemin lâche.
--- Physical volumes --- PV Name /dev/sdj PV UUID iboist-KzZh-nuI7-vamj-gSCb-jNx9-8BNLfa PV Status allocatable Total PE / Free PE 871 / 0 PV Name /dev/sdy PV UUID 3ePFHb-ke6W-BeWb-WRjH-mk0D-ipIb-zo2IxH PV Status allocatable Total PE / Free PE 871 / 0
En il peut s'agir soit d'une erreur de manipulation (un pvcreate sur un /dev/sdX) ou d'un mauvais filtre utilisé dans /etc/lvm/lvm.conf. Par défaut le filtre ci-dessous est utilisé :
filter = [ “a/.*/” ]
Comme on utilise des emcpowerX il faut modifier le filtre. En effet la couche LVM trouve des PV identiques si elle scanne l'emcpowerX et ses n chemins. Et donc elle utilise le premier qu'elle trouve. On peut modifier le filtre pour prendre tout ce qui contient emcpower, c0d0 (ou autre), etc :
filter = [ “a/emcpower/”,“a/c0d0.*/”,“r/.*/” ]
ou
filter = [ “a/emcpower/”, “a/sda[1-9]$/”, “r/sd.*/”, “r/disk.*/”, “r|/dev/cdrom|”, “a/.*/” ]
A adapter selon les besoins.
Ensuite un vgscan pour remettre d'équerre :
--- Physical volumes --- PV Name /dev/emcpowerf PV UUID iboist-KzZh-nuI7-vamj-gSCb-jNx9-8BNLfa PV Status allocatable Total PE / Free PE 871 / 0 PV Name /dev/emcpowerg PV UUID 3ePFHb-ke6W-BeWb-WRjH-mk0D-ipIb-zo2IxH PV Status allocatable Total PE / Free PE 871 / 0
Parfois en RHEL3 le package lvm est trop ancien et ne permet pas de travailler avec le LVM sur des devices PowerPath … Il faut donc mettre à jour le package.
Found Duplicate PV
Le filtre dans le fichier /etc/lvm/lvm.conf n'est pas correct. Le système voit plusieurs PVs identiques à cause de PowerPath : un device PowerPath = 2n devices. Pour cela on peut utiliser ce filtre (à adapter selon ses besoins) :
filter = [ "a/emcpower/","a/sda/","r/.*/" ]
On accepte tous les devices emcpower, sda et on rejette les autres. Penser à lancer un vgscan par la suite.
Rescanner les devices
Cartes Emulex
/usr/sbin/lpfc/lun_scan all
Ce qui revient à faire :
echo '- - -' > /sys/class/scsi_host/host[1,2,3,...n]/scan
Cartes QLogic
echo "scsi-qlascan" > /proc/scsi/qla2xxx/1 echo "scsi-qlascan" > /proc/scsi/qla2xxx/1 echo "scsi-qlascan" > /proc/scsi/qla2xxx/2 echo "scsi-qlascan" > /proc/scsi/qla2xxx/3 echo "scsi-qlascan" > /proc/scsi/qla2xxx/4 echo "- - -" > /sys/class/scsi_host/host1/scan echo "- - -" > /sys/class/scsi_host/host2/scan echo "- - -" > /sys/class/scsi_host/host3/scan echo "- - -" > /sys/class/scsi_host/host4/scan
Trouver les WWN
- RHEL4
root@server7410521:/sys/class/scsi_host# cat host3/port_name 0x10000000c9840edb root@server7410521:/sys/class/scsi_host# cat host4/port_name 0x10000000c9840ca5
- RHEL5
root@server9011354:/sys/class/fc_host/host1# cat port_name 0x10000000c97565ca
Erreur lors du renommage des disques
Un disque à priori non utilisé ne peut pas être renommé et la commande emcpadm renamepseudo renvoit une erreur du style cannot renamed pseudo device currently in use. Il suffit d'utiliser la commande emcppurge (sans paramètre).
Export / import de conf PowerPath
emcpadm export -f /tmp/emcpower.xml emcpadm import -f /tmp/emcpower.xml
ou
emcpadm export_mappings -f /tmp/emcpower.xml emcpadm import_mappings -f /tmp/emcpower.xml
⇒ évite se de retaper tous les emcpadm rename sur d'autres noeuds d'un cluster par ex.
Déterminer le modèle d'une carte SAN
- Si aucun outil n'est installé (hbanyware par ex.)
lpsci grep -i emulex -A 4 /etc/sysconfig/hwconf|grep deviceId|sort -u
Puis checker sur un site comme http://www.pcidatabase.com/vendor_details.php?id=607
- Avec hbanyware :
/usr/sbin/hbanyware/hbacmd listhbas /usr/sbin/hbanyware/hbacmd hbaAttributes "Port WWN" de la carte
Supprimer un disque SAN
Pour supprimer proprement un device SAN sur un linux :
- supprimer le disque du VG (vgreduce) ou du DG (si VxFs → vxdg -g DG rmdisk DISK)
- si PowerPath : powermt remove du emcpower
- si multipath : multipath -ll pour récupérer l'ID, puis dmsetup remove ID
Enfin on supprime les /dev/sdX avec :
echo 1 > /sys/block/sdX/device/delete
Montage des FS sur SAN
Rajouter _netdev pour les FS sur du SAN si PowerPath ne démarre pas comme prévu (si filtré dans /etc/lvm.conf)
Faire clignoter les LEDs d'une carte Emulex
# hbacmd ListHBAs Manageable HBA List Port WWN : 10:00:00:00:c9:4f:d2:05 Node WWN : 20:00:00:00:c9:4f:d2:05 Fabric Name: 10:00:08:00:88:a0:92:2f Flags : 8000f980 Host Name : parsl3004325 Mfg : Emulex Corporation Port WWN : 10:00:00:00:c9:34:24:d9 Node WWN : 20:00:00:00:c9:34:24:d9 Fabric Name: 10:00:08:00:88:04:2a:2f Flags : 8000f980 Host Name : parsl3004325 Mfg : Emulex Corporation
# hbacmd GetBeacon 10:00:00:00:c9:4f:d2:05 Beacon state = 'Off' # hbacmd SetBeacon 10:00:00:00:c9:4f:d2:05 1 Beacon state successfully set to ON. # hbacmd GetBeacon 10:00:00:00:c9:4f:d2:05 Beacon state = 'On'
forcerescan-scsi-bus.sh / read-only
- Issue : When I execute rescan-scsi-bus.sh –forcerescan on a system with SAN LUNs, all filesystems become read-only.
- Resolution :
Use –hosts paramater to ignore local adapters.
host0: local device host1: local device host2: SAN device rescan-scsi-bus.sh --forcerescan --hosts=2