Lundi 2 août 2010 1 02 /08 /Août /2010 16:08

 

Very good article on changing a root password when it's lost. Caution still the policy of passwords must be begin with 'passwd' in the nsswitch.conf file. Click...

Par gloumps - Publié dans : divers
Ecrire un commentaire - Voir les 0 commentaires

Jeudi 1 juillet 2010 4 01 /07 /Juil /2010 11:28

 

Le 18 juin dernier, j'ai eu l'occasion de présenter un retour d'expérience sur la mise en place d'une solution de virtualisation (sous Solaris 10 avec container) lors du salon annuel de l'itiforums (en partenariat avec le CRIP).

 

Petit résumé des faits :

 

Différents constats monétaires ou non sont à l'origine de ce projet portant à restructurer l'infrastructure de test/dev/uat. La mise en place d'une solution de virtualisation basée sur les zones Solaris à permis de répondre aux différents besoins buisness exprimés lors de cette étude tout en améliorant les gains de productivités.. Les slides sont disponibles si vous suivez le lien.

 

Vous trouverez un très bon résumé de la la présentation (un peu plus technique) sur le blog d'Eric Bezille à l'adresse suivante : lien. J'ai présenté ce sujet lors d'une conférence Guses en décembre dernier. Si vous souhaiter obtenir cette présentation merci de me contacter.

Par gloumps - Publié dans : divers
Ecrire un commentaire - Voir les 1 commentaires

Mardi 29 juin 2010 2 29 /06 /Juin /2010 15:05

 

Afin de mieux appréhender la gestion des ressources CPU, il est nécessaire de mieux cerner le système et notamment l'ordonnancement des processus. A ce titre j'ai eu l'occasion de faire une petite présentation pour l'association Guses sur l'ordonnencement dans Solaris/Opensolaris  en m'appuyant sur des cas pratiques où l'optimisation des ressources CPU est nécessaire. La présentation est disponible ici.

Par gloumps - Publié dans : kernel
Ecrire un commentaire - Voir les 0 commentaires

Mercredi 21 avril 2010 3 21 /04 /Avr /2010 23:07

 

Lors de la création d'un snapshot, j'obtiens un message d'erreur EBUSY. Il s'agit d'un bug connu mais j'ai décidé de l'analyser. En voiture...

 

# zfs snapshot zone01/root@today
cannot create snapshot 'zone01/root@today': dataset is busy

 

Il s'agit d'un bug déjà connu mais j'ai eu envie de l'analyser un peu. Je commence par tracer le process :

 

# truss  zfs snapshot zone01/root@today
...
ioctl(3, ZFS_IOC_OBJEST_STATS, 0xFFBFCB90)
 = 0
ioctl(3, ZFS_IOC_SNAPSHOT, 0xFFBFE478)
 Err#16 EBUSY
...

 

L'ioctl passe la main au driver ZFS. On sait juste que le code retour de correspond à EBUSY (16). Je vais donc rechercher avec dtrace les fonctions ZFS lors de la création du snapshot.

 

# ./zfs.d
FCT Code Retour
... 
3
 <- dmu_objest_snapshot_one  16
3    <-
 dmu_objest_snapshot 16
3  <-
 zfsdev_ioctl 16

 

Ce petit script dtrace (script maison) permet de localiser facilement les fonctions ZFS appelées lors de l'exécution de la commande. On remarque les choses suivantes :

  • zfsdev_ioctl() transmet le code retour égal 16 à ioctl().
  • dmu_objest_snaphot() transmet le code retour égal 16 à zfsdev_ioctl()
  • dmu_objest_snaphot_one() transmet le code retour égale 16 à dmu_objest_snaphot()

 

Après lecture du code source de ZFS, je remarque que la fonction dmu_objest_snaphot_one() récupère le code d'erreur de zil_suspend(). Ci-joint l'extrait de la fonction :

 

int zil_suspend(zilog_t *zilog)
{
...
mutex_enter(&zilog->zl_lock);

if (zh->zh_claim_txg != 0) {
mutex_exit(&zilog->zl_lock);
return (EBUSY);

 

Lors de la création du snapshot, la zil doit être vide. Vérifions maintenant si je suis bien dans ce cas :

 

# zdb -ivv snapshot zone01/root
Dataset zone01/root@today [ZPL], ID 21, cr_txg 14, 370 Mo, 9556 objects

ZIL header : claim_txg 98167, seq 0

 

Il semble en effet que je sois dans ce cas. J'applique le workround afin de vérifier complètement ces hypothèses :

 

# zfs list zone01/root
NAME USED AVAIL REFER MOUNTPOINT
zone01/root@today 370 Mo 24.5 Go 370 Mo legacy

# mount | egrep -c zone01/root
0
# zfs set mountpoint=/test zone01/root
# zfs umount zone01/root
# zfs mount zone01/root
# zdb -ivv snapshot zone01/root

Dataset zone01/root@today [ZPL], ID 21, cr_txg 14, 370 Mo, 9556 objects

ZIL header : claim_txg 0, seq 0

 

Comme on peut le voir la zil est vide. J'essaye de créer mon snapshot :

 

# zfs snapshot zone01/root@today
# zfs list -t snapshot | egrep zone01/root@today
zone01/root@today
 0 - 370 Mo -

 

J'ai pu créer mon snapshot ce qui prouve que mon analyse semble correct. J'ai réussi à démontrer le bug 6462803 corrigé dans le patch kernel 141444-01 (à l'heure actuelle, la version de ce patch n'est plus dispo voir la version 141444-09).

 

Par gloumps - Publié dans : zfs
Ecrire un commentaire - Voir les 0 commentaires

Vendredi 16 avril 2010 5 16 /04 /Avr /2010 19:15

 

Voyons ce que nous apporter le protocole CDP (Cisco Discovery Protocol) quand on capture l'un de ces paquets depuis un serveur. Suivre le lapin blanc...

 

Les équipements CISCO utilisent un protocole de découverte réseau nommé CDP. Je ne fais pas rentrer dans l'explication de ce protocole mais c'est grâce à lui que nous pouvons récupérer les informations suivantes :

 

# snoop -d bnx0 -o /tmp/snoop -s 400 -c 1 ether dst 1:0:c:cc:cc:cc and ether[20:2]=0x2000
Using device /dev/bnx0 (promiscuous mode)
1 1 packets captured

# strings /tmp/snoop
snoop
KEj
**a:
"myswitch.domain.com
Cisco IOS Software, s72033_rp Software (s72033_rp-IPSERVICESK9-M), Version 12.2(33)SXH2, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2008 by Cisco Systems, Inc.
Compiled Sat 29-Mar-08 13:28 by prod_rel_team
cisco WS-C6509-E
GigabitEthernet4/27

 

Cela permet notamment d'obtenir le nom du switch et le port sur lequel le serveur est connecté. Cela fonctionne aussi avec la commande tcpdump (ajouter simplement l'option verbose).

Par gloumps - Publié dans : réseau
Ecrire un commentaire - Voir les 0 commentaires

Dimanche 20 décembre 2009 7 20 /12 /Déc /2009 11:35

 

Suite à une mauvaise manipulation (synchronistation baie d'un système de fichiers encore monté), les process associés à ce système de fichiers ne peuvent plus être stopper (killer). A part l'arrêt/relance du serveur rien n'y fait. S'il s'agit d'un container Solaris 10, seul l'arrêt relance de la globale permet de rétablir la situation.

 

Situons nous un peu :

  • Serveur sous Solaris 10u7 avec des containers
  • Systèmes de fichiers montés sur la globale zone puis en lofs dans les containers

 

Soit un container avec une base Oracle où le système de fichiers a été synchronisé (synchro baie) alors qu'il n'était pas démonté au préalable ni dans le container ni dans la globale (normal la base n'a pas été totalement arrêté).

 

# ps -ef | egrep -i [o]rad3
  oracle 18780     1   1   Nov 25 ?  26455:53 oracleORAD3 (DESCRIPTION=(LOCAL=YES)(
ADDRESS=(PROTOCOL=beq)))

 # kill -9 18780
 

# ps -ef | egrep -i [o]rad3
  oracle 18780     1   1   Nov 25 ?  26457:39 oracleORAD3 (DESCRIPTION=(LOCAL=YES)(
ADDRESS=(PROTOCOL=beq)))

 

Ca commence mal, non ?

 

# pfiles 18780 
pfiles: no such process: 18780 

# pargs 18780 
pargs: cannot examine 18780: no such process 

# truss -p 18780 
truss: no such process: 18780

 

C'est encore pire. Voyons ce que dtrace peut nous dire (lancer la commande dtrace dans un 1er shell, et le kill dans un 2ème shell)

 

# dtrace -n 'fbt::sigtoproc:entry /pid == 18780/ { trace(arg2); trace(execname); }' 
dtrace: description 'fbt::sigtoproc:entry ' matched 1 probe

# kill -9 18780

 

 

Aucun signal reçu pour le pid 18780 et pourtant, le kill est bien initialisé

 

# signal.d 
... 
2009 Dec  2 08:12:25 ksh(pid:19084 uid:0) is sending signal 9 to oracle(pid:18780 ppid:1 uid:100) 
...

 

Regardons côté kernel

 

# ls /proc/18780 
as   contracts ctl   fd      lstatus lwp object   path psinfo  root    status     watch 
auxv cred      cwd   lpsinfo lusage  map pagedata priv rmap    sigact  usage      xmap 

 

# mdb -kw 
> 0t18780::pid2proc 
30155422488 
> 30155422488::kill 
mdb: command is not supported by current target

 > 30155422488::pfiles 
FD   TYPE            VNODE INFO
   0  CHR 0000030023723ec0 /zones/zone01/root/dev/pts/3
   1  CHR 0000030023723ec0 /zones/zone01/root/dev/pts/3
   2  CHR 0000030023723ec0 /zones/zone01/root/dev/pts/3 
   3  CHR 000006010b548b00 /zones/zone01/root/dev/null
   4  CHR 000006010b548b00 /zones/zone01/root/dev/null
[...] 
  11  REG 00000300a2ec6940 /zones/zone01/root/oracle/product/10.2.0/rdbms/mesg/oraus.msb
[...]
 256  REG 0000030095c4f900 /zones/zone01/root/ORAD3/data/ORAD3_01.ctl
 257  REG 00000300a4ba0740 /zones/zone01/root/ORAD3/data/system.256. 662477099
[...]
 279  REG 000003009469edc0 /zones/zone01/root/ORAD3/data/o1_mf_risk_dat_4w6ktdfx_.dbf

 > ::quit

# cd /proc/18780/fd
ksh: /proc/18780/fd:  not found

 # gcore 18780
gcore: cannot grab 18780: no such process

 

Comme on peut le voir, il y a toujours des fd en mémoire. Reste un à faire un arrêt/relance forcé du système. Si quelqu'un à une solution je suis preneur. Et aller pas me dire de ne pas synchroniser les données quand un système de fichiers est monté...

Par gloumps - Publié dans : kernel
Ecrire un commentaire - Voir les 0 commentaires

Présentation

Informations personnelles

  • Passionné d'informatique, je travaille actuellement comme expert système Solaris. Vous trouverez plus de renseignements à mon sujet sur mon profil Linkedin.

Flux RSS

  • Flux RSS des articles

Recherche

Calendrier

Février 2012
L M M J V S D
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29        
<< < > >>
Créer un blog gratuit sur over-blog.com - Contact - C.G.U. - Signaler un abus - Articles les plus commentés