« IscsiAdm + Multipath » : différence entre les versions

De Justine's wiki
Aller à la navigation Aller à la recherche
(Page créée avec « = Quoi ? = Nous allons voir comment monter sur une Debian 11 un volume iscsi en multipath. Il va s'agir dans mon cas de monter un volume hébergé sur un cluster PureStorage. Nous aurons donc une multiprésentation du volume iscsi qui sera ensuité géré par multipath. Toutes les confs suivront, autant que ce que j'ai pu trouver dans le cadre de mes tests, une conf suivant les recommandations PureStorage - cependant, c'est ici une configuration de tests. = Sources... »)
 
Aucun résumé des modifications
Ligne 165 : Ligne 165 :
#Ajout fs
#Ajout fs
#Ajout dans le fstab, etc
#Ajout dans le fstab, etc
</nowiki>

Version du 25 mai 2022 à 16:17

Quoi ?

Nous allons voir comment monter sur une Debian 11 un volume iscsi en multipath. Il va s'agir dans mon cas de monter un volume hébergé sur un cluster PureStorage.

Nous aurons donc une multiprésentation du volume iscsi qui sera ensuité géré par multipath. Toutes les confs suivront, autant que ce que j'ai pu trouver dans le cadre de mes tests, une conf suivant les recommandations PureStorage - cependant, c'est ici une configuration de tests.

Sources

Mise en place

Préalable

Avoir fait le nécessaire côté target (côté serveur) : créé le volume, autorisé l'hôte.

Pour cela, on peut avoir besoin de l'iqn de l'initiateur (le client).

iqn de l'initiateur

Dans tous les cas - une fois le paquet open-iscsi installé -, il se trouve toujours dans:

/etc/iscsi/initiatorname.iscsi

Récupérer des infos détaillées sur les disques (Vendor, product name, etc)

Cela peut me servir n'importe quand, notamment une fois que je me suis connectée à mes iscsi:

lsblk -pS

Install

Installer les paquets suivants:

apt install open-iscsi
apt install multipath-tools

Puis on active et démarre les services iscsid et multipathd.

Config iscsi

Avant toute chose, je vais aller dans /etc/iscsi/iscsid.conf et modifier la valeur suivante:

node.startup

Celle-ci doit être en "automatic", sinon les noeuds ne se reconnecteront pas tous seuls au reboot.

Connection au LUN

Donc, j'ai un volume dispo sur 2 baies à la fois dans mon cas (un pod stretché pour être exacte, en langage PureStorage !).

Pour chacune de mes baies, et ce sur chaque adresse IP où elle est joignable sur son réseau iSCSI, je vais faire la commande suivante de découverte des targets:

iscsiadm -m discovery -t st -p 10.1.2.3
On découvre les targets (ici, le -t st signifie "send targets") disponibles pour nous à chaque fois. À chaque fois, iscsiadm garde ses nodes en mémoire dans /etc/iscsiadm/nodes. Chacun a son dossier avec sa conf.

Je peux voir toutes les targets trouvées:

iscsiadm -m node

Enfin, je vais m'y connecter à toutes en même temps:

iscsiadm -m node -L all

Et voilà ! Je peux voir que j'ai désormais plein de disques qui sont apparus avec la commande lsblk -pS.

Config multipath

Maintenant que tous les disques sont montés, on va les utiliser tous en même temps avec multipath.

La config multipath est assez simple. Le principe de multipath est qu'il va chercher des périphériques de stockage similaires (par exemple, tous mes liens iscsi menant au même volume) et les regrouper dans /dev/mapper/quelquechose afin que l'on puisse y accéder comme un seul périph.

On va commencer par récupérer toutes les valeurs de conf actives pour savoir où il attend son fichier de conf:

multipath -T | grep config_dir
#Donne
config_dir "/etc/multipath/conf.d"

Je vais ensuite créer ce dossier (il n'existe pas par défaut) et y créer un fichier multipath.conf:

defaults {
       polling_interval      10
}

blacklist {
	device {
		vendor "VMWARE.*"
		product "Virtual_disk.*"
	}
}

devices {
  device {
        vendor "PURE"
        product "FlashArray"
        fast_io_fail_tmo 10
        path_grouping_policy "group_by_prio"
        failback "immediate"
        prio "alua"
        hardware_handler "1 alua"
        max_sectors_kb 4096
    }
}

Redhat a une référence pas mal pour les confs.

Explications

  • defaults: Configurations par défaut. Cette config est issue des préco PureStorage.
  • Blacklist : Ici, je blackliste tous les disques VMWare : ils ne seront pas pris en compte par multipath. En réalité, ce n'est pas très grave si ils le sont.
  • Devices : Ici, sert à donner des confs pour les disques pureStorage : ils seront groupés ensemble, et les sont issues des précos purestorage (encore).

Une fois fait, je redémarre le service multipath (systemctl restart multipathd) et je regarde ce que cela donne avec la commande de contrôle multipath -ll:

3624a9370368d17fbea94216800012487 dm-4 PURE,FlashArray
size=10G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| |- 11:0:0:1 sdj 8:144 active ready running
| |- 12:0:0:1 sdk 8:160 active ready running
| |- 13:0:0:1 sdl 8:176 active ready running
| |- 14:0:0:1 sdm 8:192 active ready running
| |- 16:0:0:1 sdo 8:224 active ready running
| |- 15:0:0:1 sdn 8:208 active ready running
| |- 17:0:0:1 sdp 8:240 active ready running
| `- 18:0:0:1 sdq 65:0  active ready running
`-+- policy='service-time 0' prio=10 status=enabled
  |- 4:0:0:1  sdc 8:32  active ready running
  |- 3:0:0:1  sdb 8:16  active ready running
  |- 7:0:0:1  sdf 8:80  active ready running
  |- 5:0:0:1  sde 8:64  active ready running
  |- 6:0:0:1  sdd 8:48  active ready running
  |- 8:0:0:1  sdg 8:96  active ready running
  |- 10:0:0:1 sdi 8:128 active ready running
  `- 9:0:0:1  sdh 8:112 active ready running

Ici, le long numéro (3624a93... etc) est le WWID. On le note, puis on va rajouter le bloc suivant dans la conf de multipath afin de créer un alias.

multipaths {
	multipath {
		wwid 3624a9370368d17fbea94216800012487
		alias pure_vol
	}
}

On le voit, il s'agit ici de créer un alias : de base, dans /dev/mapper, je n'aurais que le WWID (peu pratique). J'ai créé l'alias "pure_vol" (nom au choix bien sûr). Ainsi, mon disque s'appellera /dev/mapper/pure_vol. Je peux revérifier:

multipath -ll
pure_vol (3624a9370368d17fbea94216800012487) dm-4 PURE,FlashArray
size=10G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| |- 11:0:0:1 sdj 8:144 active ready running
| |- 12:0:0:1 sdk 8:160 active ready running
| |- 13:0:0:1 sdl 8:176 active ready running
| |- 14:0:0:1 sdm 8:192 active ready running
| |- 16:0:0:1 sdo 8:224 active ready running
| |- 15:0:0:1 sdn 8:208 active ready running
| |- 17:0:0:1 sdp 8:240 active ready running
| `- 18:0:0:1 sdq 65:0  active ready running
`-+- policy='service-time 0' prio=10 status=enabled
  |- 4:0:0:1  sdc 8:32  active ready running
  |- 3:0:0:1  sdb 8:16  active ready running
  |- 7:0:0:1  sdf 8:80  active ready running
  |- 5:0:0:1  sde 8:64  active ready running
  |- 6:0:0:1  sdd 8:48  active ready running
  |- 8:0:0:1  sdg 8:96  active ready running
  |- 10:0:0:1 sdi 8:128 active ready running
  `- 9:0:0:1  sdh 8:112 active ready running

Et après ?

Après, je peux utiliser /dev/mapper/pure_vol comme n'importe quel disque:

fdisk /dev/mapper/pure_vol
#Création partition
mkfs.ext4 /dev/mapper/pure_vol-part1
#Ajout fs
#Ajout dans le fstab, etc