Starmate Articles

11 janvier 2017

Le but de la manœuvre est de brasser des ports HBA (auquel est lié un WWN unique pour chaque port) d’un serveur sur deux switchs Brocade (pour la tolérance au panne), pour qu’il soit raccordé à une baie de stockage VNX5300.

Les WWNs à raccorder sont les suivant:

WWN du port HBA n°1 du serveur => 10:00:00:90:fa:13:cc:44
WWN du port HBA n°2 du serveur => 10:00:00:90:fa:13:cc:45

Pour y parvenir, nous allons commencer par raccorder via une fibre optique un port sur le switch n°1 et le deuxième sur le switch n°2.
Les ports du switch Brocade sont numérotés, cela va nous faciliter la tache. Je vais donc brasser sur le port n°3 pour chacun des switchs.

Une fois que cela est fait, en se connectant via SSH aux deux switchs, on peux voir/vérifier le numéro de WWN connecté au port n°3 via la commande « switchshow« .

Switch n°1:

switchshow

........
Index Port Address Media Speed State     Proto
==============================================
0   0   310c00   id     N8   No_Light    FC
1   1   310400   id     N8   No_Light    FC
2   2   310200   id     8G   No_Light    FC
3   3   313600   id     8G   Online      FC  F-Port  10:00:00:90:fa:13:cc:45
4   4   310100   id     N8   Online      FC  F-Port  xx:xx:xx:xx:xx:xx:xx:xx
5   5   310500   id     N8   No_Light    FC
6   6   310600   id     N8   No_Light    FC
7   7   310700   id     N8   No_Light    FC
....

Switch n°2:

switchshow

.....
Index Port Address Media Speed State     Proto
==============================================
0   0   320000   id     N8   Online      FC  F-Port  xx:xx:xx:xx:xx:xx:xx:xx
1   1   320100   id     N8   Online      FC  F-Port  xx:xx:xx:xx:xx:xx:xx:xx
2   2   320200   id     N8   No_Light    FC
3   3   320300   id     N8   Online      FC  F-Port  10:00:00:90:fa:13:cc:44
4   4   320400   id     N8   No_Light    FC
5   5   320500   id     N8   No_Light    FC
6   6   320600   id     N8   No_Light    FC
7   7   320700   id     N8   No_Light    FC
8   8   320800   id     N8   Online      FC  F-Port  xx:xx:xx:xx:xx:xx:xx:xx
.....

Les numéros WWNs des ports HBA, correspondent bien à ceux de la machine physique que l’on vient de brasser.

Si il ne correspond pas à celui désiré, c’est que vous vous êtes trompé de port  lors du branchement sur le serveur.
Il va falloir alors trouver le bon port, en les testant un part un (débranchement+branchement+commande switchshow).

Avant de créer une nouvelle zone, nous allons sauvegarder la configuration des deux switchs pour palier à toutes mauvaises manipulations.
Dans le cas présent, j’utilise un serveur FTP acceptant les connections en mode anonymous, et ayant pour IP, 10.0.0.27:

Switch n°1:

configupload -all -p ftp 10.0.0.27,anonymous,sauvegarde_switch_1.txt

Switch n°2:

configupload -all -p ftp 10.0.0.27,anonymous,sauvegarde_switch_2.txt

Je vais également sauvegarder la sortie standard dans un fichier texte, de la commande cfgshow sur les deux switchs.

Switch n°1:

cfgshow

Switch n°2:

cfgshow

Maintenant que cela est fait, nous allons pouvoir créer notre zone en toute sérenité.

On commence donc par créer un alias pour chacun des identifiants WWNs des ports HBA:

Switch n°1:

alicreate "CTZLABTGLB001_emulex2", "10:00:00:90:fa:13:cc:45"

Switch n°2:

alicreate "CTZLABTGLB001_emulex1", "10:00:00:90:fa:13:cc:44"

Ensuite nous allons créer une zone spécifique:

Switch n°1:

zonecreate "CTZLABTGLB001_VNX", "CTZLABTGLB001_emulex2"

Switch n°2:

zonecreate "CTZLABTGLB001_VNX", "CTZLABTGLB001_emulex1"

Il faut maintenant ajouter à la zone, les alias des WWNs des ports HBA qui eux sont connectés à la baie VNX5300 et non pas au serveur.
Pour les identifier (déjà existant), nous passons par la commande alishow:

Switch n°1:

alishow

...
alias: VNX5300_SPA_FC1
50:06:01:65:3d:e0:2d:7e
alias: VNX5300_SPB_FC0
50:06:01:6c:3d:e0:2d:7e
...

Switch n°2:

alishow

...
alias: VNX5300_SPA_FC0
50:06:01:64:3d:e0:2d:7e
alias: VNX5300_SPB_FC1
50:06:01:6d:3d:e0:2d:7e
....

Nous connaissons maintenant les alias pour les WWNs branchés sur la baie de stockage VNX5300.

Nous allons donc les ajouter à la zone créée précédemment:

Switch n°1:

zoneadd "CTZLABTGLB001_VNX", "VNX5300_SPA_FC1; VNX5300_SPB_FC0"

Switch n°2:

zoneadd "CTZLABTGLB001_VNX", "VNX5300_SPA_FC0; VNX5300_SPB_FC1"

 

On peut voir la configuration des zones existantes  et celle que l’on vient de faire via la commande zoneshow:

Switch n°1:

zoneshow

Switch n°2:

zoneshow

Si cela correspond bien à la configuration voulu, nous allons enregistrer cette configuration.

Pour cela nous devons connaître le nom utilisé pour la configuration (par défaut, le nom de la configuration est « DEFAULT« ), via cette commande:

Switch n°1:

cfgshow | grep cfg

....
cfg:   DEFAULT

Switch n°2:

cfgshow | grep cfg

....
cfg:   DEFAULT

 

Maintenant que nous connaissons le nom de la configuration, nous allons lui ajouter notre zone:

Switch n°1:

cfgadd "DEFAULT", "CTZLABTGLB001_VNX"

Switch n°2:

cfgadd "DEFAULT", "CTZLABTGLB001_VNX"

 

On sauvegarde:

Switch n°1:

cfgsave

Switch n°2:

cfgsave

 

Il ne nous reste plus qu’à l’activer:

Switch n°1:

cfgenable "DEFAULT"

Switch n°2:

cfgenable "DEFAULT"

Voila,

il ne reste plus qu’a y affecter des LUNs.

3 janvier 2017

Je reprend l’exemple d’un fichier texte contenant une multitude d’identifiants.
Des identifiants qui commencent par 4 chiffres puis 2 lettres (exemple: 1502KQ) respecte le standard voulu, les autres non.

Nous souhaitons donc isoler les identifiants ne correspondant pas à ce standard.

Pour cela, crée un fichier, test.txt par exemple, et on y inscrit cette liste d’identifiants:

7737OM
8053HR
8184MH
8579MX
9254NF
1034AP
ADMIN01
ADMIN26
BIZOT
4569DF
BOURGAINET
CHACONNI
4126NR
4685ET
D?ALES
5016NW
DESOUSASSE06
FITGERERT
FRANCINETTE

Pour afficher les occurrences qui correspondent à notre expression régulière, [0-9]{4}[a-zA-Z]{2} (pour 4 chiffres et 2 lettres en minuscule ou majuscule):

egrep "[0-9]{4}[a-zA-Z]{2}" test.txt

7737OM
8053HR
8184MH
8579MX
9254NF
1034AP
4569DF
4126NR
4685ET
5016NW

Pour afficher au contraire les occurrences qui correspondent pas à notre expression régulière, on rajoute l’option « -v »:

egrep -v "[0-9]{4}[a-zA-Z]{2}" test.txt

ADMIN01
ADMIN26
BIZOT
BOURGAINET
CHACONNI
D?ALES
DESOUSASSE06
FITGERERT
FRANCINETTE

Note: On peut également utiliser grep avec l’option « -E » qui forcer grep à se comporter comme egrep:

grep -E "[0-9]{4}[a-zA-Z]{2}" test.txt

Autres exemples:

Recherche les mots dont b n’est pas suivi de o:

egrep "b[^o]" test.txt

Recherche toute ligne qui commence par « De: », « Sujet: » ou « Date: »:

egrep "^(De|Sujet|Date):" test.txt

Recherche et affiche chaque ligne du fichier test.txt qui contient l’occurence bonjour ou Bonjour, les numéros de ligne sont également affichés (option -n):

egrep -n "[bB]onjour" test.txt

Liste toute les lignes du fichier test.txt commençant avec le caractère $:

egrep "^\\$" test.txt

Liste tous les fichiers et répertoires dans le répertoire courant qui ne se terminent pas avec .txt:

ls -l | egrep "[^.txt]$"

Liste tous les fichiers et répertoires dans le répertoire courant qui se terminent avec .txt:

ls -l | egrep "[.txt]$"

Affiche uniquement les lignes dont le numéro de téléphone commence par un 1:

egrep "^1" test.txt

Recherche les lignes avec un 2 à la seconde position et n’importe quel caractère en première position:

egrep "^.2" test.txt

Recherche les lignes dont le premier caractère est différent de 1:

egrep "^[^1]" test.txt

27 décembre 2016

Notepad++ permet de filtrer un texte avec des expressions régulières.

Prenons l’exemple d’un fichier texte contenant une multitude d’identifiants.
Les identifiants qui commencent par 4 chiffres puis 2 lettres (exemple: 1502KQ) respecte le standard voulu, les autres non.

Nous souhaitons donc isoler les identifiants ne correspondant pas à ce standard.

Pour cela, on ouvre le fichier texte contenant l’ensemble des identifiants avec Notepad++.
Voici un exemple de texte à ouvrir avec Notepad++:

7737OM
8053HR
8184MH
8579MX
9254NF
1034AP
ADMIN01
ADMIN26
BIZOT
4569DF
BOURGAINET
CHACONNI
4126NR
4685ET
D?ALES
5016NW
DESOUSASSE06
FITGERERT
FRANCINETTE

Dans le menu de Notepad++, on va dans Recherche -> Remplacer…:

Dans cette fenêtre, on va mettre dans le champ « Recherche » notre expression régulière, [0-9]{4}[a-zA-Z]{2} (pour 4 chiffres et 2 lettres en minuscule ou majuscule).

On va également cocher « Expression régulière » dans la case « Mode de recherche« :

Une fois que cela est fait, on clique sur « Remplacer tout« .

Notre liste devrait maintenant ressembler à cela:

ADMIN01
ADMIN26
BIZOT
BOURGAINET
CHACONNI
D?ALES
DESOUSASSE06
FITGERERT
FRANCINETTE
KANNAOUITTET

Tout les identifiants correspondant au REGEX ont été supprimé, ne laissant que les identifiants ne le respectant pas.

12 décembre 2016

Pour voir la quantité de Ram physique installé sur un Solaris:

prtconf | grep Memory

Memory size: 15872 Megabytes

ou

prtdiag | grep Memory


Memory size: 15872 Megabytes
======================= Physical Memory Configuration ========================

4 décembre 2016

Pour augmenter la taille d’un .vmdk sur une appliance vCenter 6.x:

  1. Connectez-vous en ssh (en root) sur le vCenter.
  2. Exécutez cette commande pour activer le shell Bash:

    Shell.set --enabled true

  3. Il faut maintenant taper le mot « shell » puis on valide en appuyant sur entrée pour le lancer.
  4. On utilise la commande « df » pour identifier la partition à augmenter:

    df -h

  5. Une fois identifiée, on peut en déduire son numéro de VMDK, on va donc cette fois sur le client Vsphere (web ou client lourd) et on augmente la taille du disque VMDK.
  6. On retourne sur notre connexion ssh, et on exécute cette commande pour que le volume logique prenne en compte l’espace ajouté dans l’étape précédente:

    vpxd_servicecfg storage lvm autogrow

  7. Si tout c’est bien passé, le message suivant apparaîtra :
    VC_CFG_RESULT=0 
  8. On peut alors vérifier que la taille a bien été augmenté avec la commande df:

    df -h

Rappel:

Disque VMDK Taille par défaut Point de montage
VMDK1 12 Go / (10Go), /boot (132Mo), SWAP (1Go)
VMDK2 1,3 Go /tmp
VMDK3 25 Go SWAP
VMDK4 25 Go /storage/core
VMDK5 10 Go /storage/log
VMDK6 10 Go /storage/db
VMDK7 5 Go /storage/dblog
VMDK8 10 Go /storage/seat
VMDK9 1 Go /storage/netdump
VMDK10 10 Go /storage/autodeploy
VMDK11 5 Go /storage/invsvc

Source