Si vous utilisez Symantec Storage Foundation (ex-Veritas Volume Manager et File System, que je continuerai sans doute à appeler VM toute ma vie) et que vous utilisez des baies de stockage, il y a de grandes chances pour que vous ayiez à gérer VxDMP, la couche de gestion du multipathing intégrée au produit. Et si par hasard vos baies SAN sont des baies EMC², il y a d'encore plus grandes chances que vous utilisiez PowerPath - l'outil étant très vivement recommandé par le constructeur.

Mais passons sur le côté abracadabrantesque de cet empilement de solutions de multipathing que nous imposent pratiquement constructeurs et éditeurs, et intéressons-nous plutôt à une remarquable feature de VxDMP, à savoir, les fake arrays.

Enclosure name et tpdmode

Pour comprendre cette notion de fake array, il faut savoir que la couche VxDMP propose de renommer tous les disques d'une baie à partir du nom de la baie elle-même, pour mieux les identifier. Ce nom de baie est appelé enclosure name.

Quand ce mode est activé, les noms de devices affichés par VM deviennent basés sur le nom de la baie, au lieu d'être de la forme cXtXsX (ou emcpowerX si on utilise PowerPath). Au final, l'affichage des disques ressemble à ceci :

# vxdisk list DEVICE TYPE DISK GROUP STATUS TOTO_0 auto:cdsdisk disk01 rootdg online TITI_0 auto:cdsdisk disk02 rootdg online TITI_1 auto:cdsdisk disk03 mondg online TITI_2 auto:cdsdisk disk04 monautredg online

Pour revenir au mode d'affichage par défaut, on utilise les mêmes commandes pour positionner le tpdmode (pour third-party driver) à pseudo au lieu de native.

Boot et fake_array

Cette fonctionnalité, fort intéressante au demeurant, a tout de même un petit défaut au niveau de la gestion du disque de boot.

Lors du démarrage, le disque de boot est d'abord affecté à une baie virtuelle, nommée FAKE_ARRAY, en attendant que la vraie baie puisse être découverte par VxDMP. Une fois la vraie baie découverte, le disque est migré dans cette baie, et la baie virtuelle est effacée.

Si par hasard le disque de boot n'est pas géré par VM, il ne peut pas être déplacé d'une baie à l'autre, et le FAKE_ARRAY n'est pas effacé. Dixit l'éditeur, "this is by design", et en soi, ça n'a rien de choquant. Malheureusement, VxDMP ne fait jamais le ménage dans sa liste de baies, et comme VM incrémente le numéro à chaque fois, au bout de quelques reboots, la liste s'allonge sérieusement :

# vxdmpadm listenclosure all ENCLR_NAME ENCLR_TYPE ENCLR_SNO STATUS ARRAY_TYPE ======================================================================= Disk Disk DISKS DISCONNECTED - OTHER_DISKS OTHER_DISKS OTHER_DISKS DISCONNECTED - FAKE_ARRAY0 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY1 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY2 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY3 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY4 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY5 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY6 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY7 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY8 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY9 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY10 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY11 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY12 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY13 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY14 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY15 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY16 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - TOTO EMC 111444 CONNECTED A/A TITI EMC 111445 CONNECTED A/A FAKE_ARRAY17 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY18 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY19 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY20 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY21 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY22 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY23 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY24 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY25 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY26 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY27 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY28 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY29 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY30 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY31 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY32 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY33 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED - FAKE_ARRAY34 FAKE_ARRAY FAKE_ENCLR_SNO DISCONNECTED -

Ca n'est pas particulièrement grave, mais … ça offense mon sens de l'esthétique!

Voici donc une solution un poil brutale pour faire le ménage là-dedans. On commence par supprimer la configuration mémorisée par VxDMP au niveau des baies :

# mv /etc/vx/array.info /etc/vx/array.info.old # vxconfigd -k

Suite à cette modification, les baies reprennent leurs noms par défaut, que nous retrouvons de la manière suivante :

# vxdmpadm listenclosure all ENCLR_NAME ENCLR_TYPE ENCLR_SNO STATUS ARRAY_TYPE ==================================================================== EMC0 EMC 111444 CONNECTED A/A EMC1 EMC 111445 CONNECTED A/A

Ces noms (définis par défaut pour des baies EMC²) sont donc à redéfinir :

# vxdmpadm setattr enclosure EMC0 name=TOTO # vxdmpadm setattr enclosure EMC1 name=TITI # vxdmpadm listenclosure all ENCLR_NAME ENCLR_TYPE ENCLR_SNO STATUS ARRAY_TYPE ==================================================================== TOTO EMC 111444 CONNECTED A/A TITI EMC 111445 CONNECTED A/A

Comme on peut le voir, tous les FAKE_ARRAY ont disparu!

Après ce petit coup de balai, il ne reste qu'à réactiver le mode d'affichage enclosure-based pour les disques :

# vxdmpadm setattr enclosure TOTO tpdmode=native # vxdmpadm setattr enclosure TITI tpdmode=native

Comme on n'a touché ni à la couche PowerPath, ni à la couche de gestion des disques eux-mêmes, le disk name (affiché par vxdisk list) et l'os_native_name (dans le cas de PowerPath, affiché par format ou vxdisk -e list) ne sont pas modifiés.