juin 29 2011

HPVM disk physical/virtual mapping script

Tag: Scripts,UnixUggla @ 17 h 02 min

This is a short script to create a physical (host)/virtual (guest) map.
This is a basic script written quickly, that was used to simplify data migration operations. So improvements welcomed.

    Requirements :

  • script must be run from host. (not guest)
  • ssh must be allowed using keys (no passwd) to all guests.
  • hpvmstatus command must be available from path.

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my @hpvmstatus=`hpvmstatus`;
my @vms;
my $vm;

my %vm_data;

foreach(@hpvmstatus) {
        ($vm)=$_ =~ /^(.+)\s+[0-9]+\sHPUX\s+On/;
        if (defined($vm)){
                $vm =~ s/\s+//g;
                push (@vms,$vm);
        }
}

foreach $vm (@vms){
        my @hpvmstatus_vm=`hpvmstatus -P $vm`;

        foreach(@hpvmstatus_vm){
                #Device  Adaptor    Bus Dev Ftn Tgt Lun Storage   Device
                #======= ========== === === === === === ========= =========================
                #disk    avio_stor    0   2   0   0   0 disk      /dev/rdisk/disk17

                (my $ftn,my $tgt,my $lun,my $disk)=$_ =~ /^disk\s+avio_stor\s+\d+\s+\d+\s+(\d+)\s+(\d+)\s+(\d+)\s+disk\s+(.+)$/;

                if (defined($ftn)){
                $vm_data{$vm}->{$disk}->{"dev"}=$ftn;
                $vm_data{$vm}->{$disk}->{"tgt"}=$tgt;
                $vm_data{$vm}->{$disk}->{"lun"}=$lun;

                #Convert tgt to the good legacy device
                my $tgtconv=sprintf("%02X",$tgt);
                my $tgtconv_part1;
                my $tgtconv_part2;

                ($tgtconv_part1)=$tgtconv=~/(.)./;
                ($tgtconv_part2)=$tgtconv=~/.(.)/;

                $tgtconv_part1=hex($tgtconv_part1);
                $tgtconv_part2=hex($tgtconv_part2);

                #$vm_data{$vm}->{$disk}->{"legacy"}="c".$ftn."t".$tgtconv_part2."d".$tgtconv_part1;
                $vm_data{$vm}->{$disk}->{"legacy"}="c\\dt".$tgtconv_part2."d".$tgtconv_part1; # Don't know how the instance number is defined (cX) so use a more gereric regexp
                }
        }
}

foreach $vm (@vms){
        my @ioscan=`ssh -q -o stricthostkeychecking=no -o batchmode=yes root\@$vm \"ioscan -m dsf\"`;

        foreach(keys(%{$vm_data{$vm}})){
                my $regex=$vm_data{$vm}->{$_}->{"legacy"}."\$";
                my @vdisk=grep(/$regex/,@ioscan);
                my $vdisk_str=join(",",@vdisk);
                ($vdisk_str)=split(",",$vdisk_str);
                $vdisk_str=~s#\s+/dev/rdsk/.+##g;
                $vdisk_str=~s/\s//g;
                $vm_data{$vm}->{$_}->{"vdisk"}=$vdisk_str;
        }
}

# Debuging purpose
#print Dumper(\%vm_data);

foreach $vm (@vms){
        printf("VM\tPhys\t\t\tVirt\n");

        foreach(keys(%{$vm_data{$vm}})){
                printf("%s\t%s\t%s\n",$vm,$_,$vm_data{$vm}->{$_}->{"vdisk"});

        }
}


juin 21 2011

Disk operations with ASM.

Tag: DBUggla @ 11 h 12 min

A short article to keep some useful queries for ASM.

  1. Querie to list disks and groups.
    set pages 1000
    set lines 300
    col path format a50
    col instance_name format a20
    select v$asm_diskgroup.name,v$asm_disk.GROUP_NUMBER,v$asm_client.INSTANCE_NAME,v$asm_disk.PATH,v$asm_disk.name,v$asm_disk.STATE
    from v$asm_diskgroup, v$asm_client, v$asm_disk
    where v$asm_client.GROUP_NUMBER=v$asm_disk.GROUP_NUMBER and v$asm_disk.GROUP_NUMBER=v$asm_diskgroup.GROUP_NUMBER
    order by group_number,path;
    

    NAME                           GROUP_NUMBER INSTANCE_NAME        PATH                                               NAME                           STATE
    ------------------------------ ------------ -------------------- -------------------------------------------------- ------------------------------ --------
    DCLICDGR                                  1 MODEFRR12            /dev/oracle/asmdisk_decldr1                        DCLICDGR_0000                  NORMAL
    DCLICDG                                   2 MODEFRR12            /dev/oracle/asmdisk_decldd1                        DCLICDG_0000                   NORMAL
    DCLICDG                                   2 MODEFRR12            /dev/oracle/asmdisk_decldd2                        DCLICDG_0001                   NORMAL
    DCLICDG                                   2 MODEFRR12            /dev/oracle/asmdisk_decldd3                        DCLICDG_0002                   NORMAL
    DCLICDG                                   2 MODEFRR12            /dev/oracle/asmdisk_decldd4                        DCLICDG_0003                   NORMAL
    ESBDGR                                    3 ASCGFRR12            /dev/oracle/asmdisk_esbdr1                         ESBDGR_0000                    NORMAL
    ESBDG                                     4 ASCGFRR12            /dev/oracle/asmdisk_esbdd1                         ESBDG_0000                     NORMAL
    ESBDG                                     4 ASCGFRR12            /dev/oracle/asmdisk_esbdd2                         ESBDG_0001                     NORMAL
    ESBDG                                     4 ASCGFRR12            /dev/oracle/asmdisk_esbdd3                         ESBDG_0002                     NORMAL
    ETTDGR                                    5 ITECFRR12            /dev/oracle/asmdisk_ettdr1                         ETTDGR_0001                    NORMAL
    ETTDG                                     6 ITECFRR12            /dev/oracle/asmdisk_ettdd1                         ETTDG_0001                     NORMAL
    ETTDG                                     6 ITECFRR12            /dev/oracle/asmdisk_ettdd2                         ETTDG_0002                     NORMAL
    ETTDG                                     6 ITECFRR12            /dev/oracle/asmdisk_ettdd3                         ETTDG_0003                     NORMAL
    OCRDG                                     7 +ASM2                /dev/oracle/asmdisk_ocr1                           OCRDG_0000                     NORMAL
    OCRDG                                     7 +ASM2                /dev/oracle/asmdisk_ocr2                           OCRDG_0001                     NORMAL
    OCRDG                                     7 +ASM2                /dev/oracle/asmdisk_ocr3                           OCRDG_0002                     NORMAL
    PYRADGR                                   8 FISOFRR02            /dev/oracle/asmdisk_pyradr1                        PYRADGR_0000                   NORMAL
    PYRADG                                    9 FISOFRR02            /dev/oracle/asmdisk_pyradd1                        PYRADG_0001                    NORMAL
    PYRADG                                    9 FISOFRR02            /dev/oracle/asmdisk_pyradd2                        PYRADG_0002                    NORMAL
    PYRADG                                    9 FISOFRR02            /dev/oracle/asmdisk_pyradd3                        PYRADG_0003                    NORMAL
    PYRADG                                    9 FISOFRR02            /dev/oracle/asmdisk_pyradd4                        PYRADG_0004                    NORMAL
    DATA3                                    10 EDOCFRE12            /dev/oracle/asmdisk_data3                          DATA3_0000                     NORMAL
    EDOCDG                                   12 EDOCFRU02            /dev/oracle/asmdisk_edocdg                         EDOCDG_0000                    NORMAL
    EDOCARCHDG                               13 EDOCFRU02            /dev/oracle/asmdisk_edocarchdg                     EDOCARCHDG_0000                NORMAL
    
  2. Add / remove disk.
    alter diskgroup EDOCDG add disk '/dev/oracle/asmdisk_xp01','/dev/oracle/asmdisk_xp02'
    alter diskgroup EDOCDG drop disk 'EDOCDG_0000';
    
  3. Follow oprations.
    select * from v$asm_operation;
    
  4. Change rebalancing power (1 –>11) to speed up operations.
    alter diskgroup DATA2 REBALANCE POWER 5;
    

Warning : Take care about ownerships and rights on the disk special files !

A good synthetic article about ASM can be found here : http://www.oracle-base.com/articles/10g/AutomaticStorageManagement10g.php


juin 05 2011

Marre des plans loose

Tag: VTTUggla @ 21 h 06 min

Bon comme le dit le titre, plein le cul des plans foireux cette semaine.
Donc on part sur une valeur sure, a proximité car la météo annonce des orages violents dans l’après midi : La Ferme Durant.

Rien à dire sur la montée, efficace et propice à la mauvaise fois, exagérations en tout genre et poésie sur plein de sujets. :roll:
La descente sans surprise, toujours excellente même si un peu grasse. Seul le passage des rochers nous fera poser pieds à terre.
Le coup de sabre lui sera qu’une formalité pour l’équipe.

Les photos sur la galerie.


juin 03 2011

Balcons de Chartreuse

Tag: VTTUggla @ 18 h 41 min

Première sortie de Thierry D, avec son nouveau vélo. Pour l’occasion on choisit un parcours sur vtopo : Les Balcons de Chartreuse.
Sortie prévue de 4h, et la deuxième plan loose de la semaine !

  1. On loupe la prise du chemin de montée –> 1h a galérer dans les couloirs de purge des falaises de Chartreuse.
  2. Le parcours doit vraiment pas être roulé, de nombreux arbres en travers et végétation abondante.
  3. Première partie du topo, descente quasi inexistante.
  4. Monté qui doit passer sur le vélo relativement facilement d’après le topo –> on doit pas avoir la même conception du faux plat montant….
  5. Humidité globale –> hyper difficile de rouler avec les cailloux bien glissant. (pas la faute du topo)
  6. Deuxième partie un peu mieux, mais ça sent le chemin pas beaucoup parcouru quand même. Quelque épingles ou BG 33 fera de beaux passages… On a manqué aussi perdre Thierry dans un fossé ! :roll:
  7. La fin se termine sur un chemin super large, plein de boue.

Bref encore une sortie finalement de 6h30 à oublier….
Une note positive, gros tirage de bourre pour rentrer à la voiture ! :)

Distance : ~31 km D+ : ~1100 m.

Le fichier gpx: http://uggla.free.fr/gps_track/2k11/20110603-BalconChartreuse.gpx.
Le fichier kml : http://uggla.free.fr/gps_track/2k11/20110603-BalconChartreuse.kmz.

Les photos sur la galerie.


juin 02 2011

Habert de Chamechaude

Tag: VTTUggla @ 18 h 34 min

Sortie du Jeudi férié.
La météo est pas top, mais on part quand même faire un tour avec Frank.

J’ai récupéré un topo, qui passe par le Habert de Chamechaude. Montée principalement sur le bitume jusqu’au col de porte, un peu dure la montée pour moi.
On mange un peu et on continue jusqu’au Habert, de la on descend c’est hyper gras donc ça glisse à mort sur les racines.

Bon je passe rapidement, quelques sentiers sont pas mal mais trop courts. Le ratio montée/descente est pas favorable, on est couvert de boue, bref un beau plan loose.
Le seul truc positif, c’est la rencontre avec « Maurice », un chien qui nous suivra une bonne partie de la sortie. :)
Mis a part pour le coté physique, sortie globalement à oublier. Sauf peut être quelques chemins sur le sec.

Distance : ~63 km D+ : ~2100 m.

Le fichier gpx: http://uggla.free.fr/gps_track/2k11/20110602-HabertChamechaude.gpx.
Le fichier kml : http://uggla.free.fr/gps_track/2k11/20110602-HabertChamechaude.kmz.

Les photos sur la galerie.