les informaticiens travaillent beaucoup le jeudi!

J’ai commencé récemment une nouvelle mission où il y a de réels problèmes de performances. Suite à un problème applicatif à résoudre, je vais voir directement l’utilisatrice. Après quelques minutes de discussion, j’apprends que l’informatique travaille beaucoup le jeudi… Voyant mon air perplexe, elle me dit que les ordinateurs sont très lents le jeudi, et que l’informatique fait des mises à jour le jeudi!

L’analyse des utilisateurs est parfois maladroite, mais la récurrence sur le jeudi précisément est tout de même troublante… Je jette un oeil sur l’antivirus..Surprise, scan général tous les jeudis à midi en priorité maximale!
Je dis scan général, car c’était à la fois pour les postes clients et les serveurs. Aucun doute que les serveurs de fichiers apprécient le geste.

J’ai changé le paramétrage comme suit:

Stations de travail:

  • Scan quotidien à 21:00
  • Priorité la plus basse
  • pas de scan si il est sur batterie est qu’il reste moins de 20% de celle-ci
  • Si un scan est raté, il est joué au prochain démarrage

Serveurs:

  • Scan le dimanche midi
  • Priorité la plus basse
  • Si un scan est raté, il est joué au prochain démarrage

Le risque est que les utilisateurs éteignent leur stations le soir, et qu’ils aient donc un scan au démarrage tous les jours.

Cependant, je pense que c’est à l’informatique de gérer l’allumage/extinction des ordinateurs via un outil de gestion de parc. L’idée est de pouvoir déployer les patchs et applications la nuit sans rater de station (vive le wakeonlan).

Et vous, comment avez-vous programmé votre antivirus ?

BGI info: l’erreur avec succès sans succès…

Je n’avais pas utilisé bginfo de sysinternals depuis quelques temps. Comme d’hab, je mets un fond avec notamment le logo de l’entreprise, et là surprise au moment de l’enregistrement:
bginfo
(Error saving settings to registry: The operation completed sucessfully)

Pour les non anglophones, il y a donc une erreur à l’enregistrement dans la base de registre, mais l’opération à réussi…Surprenant hein ?
Evidemment, grosse déception, point de fichier bgi…

Contexte:

  • Windows Vista SP1 32 bit
  • dernier bginfo (4.15)
  • Avec et sans élévation de privilège (comment ça tout de suite on accuse UAC?)

Que faire quand un outil sysinternal échoue ? Utiliser un autre outil Sysinternal pour diagnostiquer !
Process monitor
montre notamment une erreur pour « ressource insuffisante« :

bginfo_processmonitor

Process explorer montre que le système est utilisé et manque un peu de ressource (quoi que, encore 742Mo de ram disponible tout de suite)
procexp

J’essaye sur ma station avec 8Go de ram, idem…Windows XP: idem!

Finalement, j’ai réduit et importé de nouveau l’image, fonctionne nickel.

Je me suis permis un petit mail à Mark Russinovich…Retour une heure plus tard:

« Thanks for the bug report, Mathieu. It looks like Bginfo was trying to write 7MB to the registry.« 

SCOM 2007: SQL Server a de la mémoire!

on m’a demandé de remettre sur pied une plateforme SCOM 2007, en commençant par une réinstallation. J’ai donc désinstallé SCOM du serveur, et supprimé les bases de données du serveur SQL distants.

Après l’installation, SQL indiquait que le service broker était déjà activé…Bonne surprise ou annonce d’autres problèmes ? J’ai eu droit à la deuxième hypothèse…

Suite à la réinstallation, j’ai eu quelques problèmes liés à SQL (An exception occured while enqueuing a message in the target queue):

  • Error: 15404, State 11. Could not obtain information about Windows NT group/user
  • Error: 9728,  State: 1. Cannot find the security certificate because the lookup database principal is not valid

scom_erreur_sql_2scom_erreur_sql

Résolution:

  • D’ anciens messages (de l’installation précédente) sont toujours en files d’attente dans le broker. Il faut les purger en exécutant ce code SQL sur la base OperationsManager:

declare @conversation uniqueidentifier

while exists (select 1 from sys.transmission_queue)

begin

set @conversation = (select top 1 conversation_handle from sys.transmission_queue)

end conversation @conversation with cleanup

end

Et voilà, le discovery fonctionne de nouveau aussi, car il dépend des messages passant via le broker.

Windows + Disque SSD + shrink + defrag

La technologie SSD permet de s’affranchir notamment des problèmes de performances liés à la fragmentation. C’est donc tout naturellement que j’ai désactivé la défragmentation sur le Windows 7 de mon MacBook Air.

Voilà une semaine que je l’ai, et j’ai décidé de faire une autre partition que C:\ afin de la protéger avec bitlocker. Le MacBook Air n’a pas de puce TPM, mais elle n’est pas requise pour crypter une partition autre que celle du système d’exploitation. Ayant 43Go de libre sur 66Go, bien que toutes les applications soient installées, je décide de laisser 10Go de plus au système, et de réclamer le reste. Depuis Windows Vista et ultérieur, on peut directement, à chaud y compris pour la partition système, étendre et réduire les partitions via le gestionnaire de disque:

shrink menu

estimation du shrink

Sauf que là, surprise, Windows ne trouve que 26Go à réclamer…La faute à qui ? La fragmentation ne réduit pas les performances, mais les fichiers sont réellement éparpillé sur le volume. Windows accepte de réduire le volume en partant de la fin jusqu’au dernier fichier du volume (le plus loin depuis le début). Je me dis qu’une défrag pourrait me permettre de réclamer davantage. Je fais donc une défrag, et là surprise, même pas 1Mo de plus à réclamer. Pourquoi ? shrink consulte en fait déjà la commande defrag afin de calculer l’emplacement dernier fichier non déplaçable. Ce qui sous entend qu’il fera une defragmentation au moment du shrink.

estimation du shrink

Activer BitLocker sur la partition est très simple:bitlocker menubitlocker

Tout ce que vous devez savoir sur NLB

La technologie NLB (Network Load Balacing) de Microsoft a l’avantage d’être intégrée directement avec le système d’exploitation. Comme son nom l’indique, est permet de répartir la charge sur plusieurs noeuds, qui sont membre de la ferme (cluster). La mise en route est très simple en apparence, mais il y a cependant plusieurs points à ne pas négliger, sous peine d’avoir l’impression que tout va bien sans que ca soit le cas…

Impact sur le réseau

NLB peut fonctionner dans deux modes:

  • Unicast
  • Multicast (avec ou sans IGMP)

Lequel choisir ? Ca dépend! Les variables à prendre en compte pour faire son choix:

  • Quelle application sera accédée via la ferme? Est-ce qu’elle supporte les deux modes ? Par exemple, ISA 2006 avant le Service Pack 1 ne supportait que Unicast (un hotfix était aussi possible mais plus confidentiel)
  • Combien de cartes réseaux ont les membres de la ferme ? Unicast va exiger 2 cartes réseaux minimum pour être à l’état de l’art
  • Est-ce que les noeuds doivent pouvoir communiquer entre eux ?
  • Est-ce que l’IGMP multicast est actif sur les switchs ? il permet de ne pas flooder le réseau inutilement
  • Certains switchs (Cisco par exemple) n’apprécie pas du tout de voir la même adresse mac depuis chaque membre de la ferme. Il faut alors transformer le switch en hub, en envoyant tous les paquets réseaux à destination de l’adresse mac virtuelle à l’ensemble des noeuds.

Supervision et disponibilité

Il est vrai que si un noeud disparait du réseau, les autres prennent la relève. Mais on entend par là une coupure franche. Si vous avez 2 serveurs dans la ferme, et que vous arrêtez votre application métier sur un noeud, il continuera à recevoir autant de requête que l’autre, et il y aura donc la moitié des utilisateurs « dans le vent ». NLB travaille au niveau 3 (IP), et n’a pas conscience de ce qui ce passe plus haut, au niveau applicatif. Même si le port TCP n’est plus écouté, il n’en aura pas conscience. C’est le grand point faible de NLB. Microsoft incluait sentinel dans le resource kit. Il permettait de tester une page web sur chaque noeud et de le sortir de la ferme en cas de problème. ISA 2006 gère le NLB est peut sortir de la ferme en cas de problème dans ISA. Pour le reste, c’est à vous de combler le manque. S’il s’agit d’un site Web sous IIS, vous pouvez modifierLoadBalancerCapabilities dans la metabase de IIS afin de remplacer un 503 par un reset TCP. Le client va ainsi recommencer la requête et aller sur un autre serveur.

Pour combler le manque, vous pouvez utiliser votre solution de supervision (ou un script en boucle sur chaque nœud). L’idée est de tester chaque noeud d’un point de vue applicatif, et de le sortir de la ferme en cas d’erreur. Cela implique plusieurs éléments à étudier:

  • Il faut vérifier très régulièrement chaque nœud sans générer de surcharge. L’idéal est d’avoir la supervision prévue dans l’application, par exemple en appelant une page web spécialement prévue à cet effet, qui test les composants applicatif et renvoi directement un code.
  • La  supervision devient active (elle va agir directement sur la production)

La solution SCOM prends alors de l’intérêt, notamment via l’implémentation de trigger sur évènement (eventlog, fichier de log…)

NLB versus MSCS ?

Un cluster MSCS est prévu pour être actif/passif. A un instant T, les ressources sont sur un seul serveur, qui doit donc pouvoir supporter toute la charge. Il a l’avantage de pouvoir gérer des données partagées (espaces disques), et de pouvoir superviser des ressources (état de services Windows). Là aussi, cela ne couvre pas l’application dont le service Windows est bien démarré, mais qui ne fonctionne plus (perte de l’accès à la base de données..).

Autre solution ?

  • J’ai déjà mis en place du Safekit de Evidian sur Windows. Cette solution est pas trop mal, mais les vérifications applicatifs sont là aussi complètement à votre charge.
  • Répartiteur de charge sous forme d’appliance (F5, Alteon…): ils peuvent faire des vérifications applicatives, mais surtout appeler une page Web pour savoir si le nœud est opérationnel ou non.
  • Rester avec un seul nœud ?

KB/Articles:

IIS Responses to Load-Balanced Application Pool Behaviors

NLB Operations Affect All Network Adapters on the Server

Unicast NLB nodes cannot communicate over an NLB-enabled network adaptor in Windows Server 2003

The « NLB troubleshooting overview for Windows Server 2003 » article is available

How to deploy a Secure Socket Tunneling Protocol (SSTP)-based VPN server that uses Network Load Balancing (NLB) in Windows Server 2008

An update enables multicast operations for ISA Server integrated NLB

Windows Server 2008 Hyper-V virtual machines generate a Stop error when NLB is configured or when the NLB cluster does not converge as expected

Terminal Services Client Cannot Connect to NLB Cluster TCP/IP Address

The NLB WMI Provider Generates a Lot of Error Entries in the Wbemcore.log File

How NLB Hosts Converge When Connected to a Layer 2 Switch

Windows Server 2003-based NLB nodes in an NLB cluster cannot communicate with each other over an NLB network adapter

Servers in a Network Load Balancing (NLB) failover cluster cannot be used as print servers in Windows Server 2008

Network Load Balancing (NLB) clients cannot connect to the Windows Server 2008 NLB cluster by using the virtual IP address when NLB is running in multicast mode

The virtual IP address of a Windows Server 2008 NLB cluster is bound to the NetBIOS host name of a particular server or of multiple servers

J’ai un Mac…C’est grave docteur ?

Ceux qui lisent mon blog régulièrement pourraient être surpris, mais je viens d’acheter un Mac ! Un MacBook Air 2,1Ghz avec un SSD de 128Go. Mon bon vieux Dell XPS M1210 date de 2006. Il chauffe pas mal et pèse presque 2,3 kilos avec la batterie 9 cellules. Un portable très performant amène rapidement dans les 3 kilos (8Go de ram, du stockage..). J’ai donc décidé d’arrêter la course vers la performance, et plutôt me connecter à ma dedibox pour avoir les ressources nécessaires…

Le bon:

  • il boost vraiment plus que mon Dell. Le processeur est moins puissant, mais le bus à plus de 1Ghz compense largement, ainsi que d’avoir de la DDR3.
  • Le wifi est vraiment top, les débit montent tout de suite au taquet avec ma freebox, que ce soit sous MacOS X ou Windows 7. C’est du Broadcom 802.11n
  • Le SSD est vraiment top, proche en terme de performance de mon SuperTalent (voir le post sur le sujet pour comparaison)
  • Windows 7 64 bit RC met 28 secondes depuis le début jusqu’au bureau chargé.
  • On a l’impression qu’il manque des touches (page down/up notamment). En fait, Apple utilise le multitouch pour faire ces fonctions (en autre, il y a beaucoup de raccourcis via le multitouch du trackpad). Terrible aussi sous Windows 7 64 bit quand ca fonctionne pas…
  • Le clavier est rétro éclairé

Le moyen:

  • J’ai cherché la petite bête en installant Windows 7 RC en 64 bit via Boot Camp. Windows fonctionne très bien mais les pilotes Apple beaucoup moins.
  • MacOSX maintiens le bios à l’heure mais en GMT. Quand Windows 7 démarre, il retarde de 2 heures par rapport à l’heure de Paris en été (GMT +2). Boot Camp, si installé, ajoute un service de temps pour masquer cette différence (AppleTimesrv.exe).
  • mémoire de la carte graphique étant partagé, on obtient 1764Mo de ram pour Windows.
  • Pas de puce TPM, donc pas d’encryption du disque système sympathique.

Performance du SSD:

hd tune

Les pilotes Boot Camp & Windows 7 64 bit:

Par défaut, l’installation de BootCamp ne fonctionne pas:

Capture

A ce stade 2 possibilités:

  • Modifier le MSI pour passer la vérification. Windows alerte cependant sur des problèmes connus sur Windows 7 si on l’installe.
  • Appliquer directement juste les pilotes aux périphériques sans utiliser le setup Apple.

J’ai choisi la deuxième possibilité, qui a fonctionné, mais n’ayant pas installé la couche Apple, je n’ai pas le panneau de contrôle Boot Camp dans Windows 7. Cela génère des petits problèmes:

  • Pour passer sous MaxOSX, il faut maintenir la touche Alt au boot de la machine pour choisir entre les deux OS.
  • Pas de clique droit ni de multitouch via le trackpad. J’ai pourtant mis les pilotes
  • Pas d’accès aux fonctions qui sont sur les touches de fonctions (F1-F12)

A ce stade, ne pas avoir de clique droit ne fait plus rire du tout. Le MacBook Air n’a qu’un seul port USB, et donc brancher une souris a ses limites, que la raison n’ignore pas.

J’ai donc choisi d’installer quand même BootCamp. Le DVD fourni avec le Mac contient déjà BootCamp 2.1 d’origine. Seulement il ne se laisse pas faire, et il faut donc procéder comme suit:

  • Passer les paramètres régionaux (Formats) en English (United States). Leur MSI ne supporte rien d’autre, et génère l’erreur 2229.
  • Lancer directement le msi depuis le DVD: Boot CampDriversAppleBootCamp64.msi
  • Si cela ne suffit pas, il faut modifier la clé HKLMSOFTWAREMicrosoftWindows NTCurrentVersion en mettant 6.0 pour simuler Vista. A remettre en 6.1 après.

Si vous êtes en galère, voici quelques infos:

Chemin du panneau de contrôle Apple Boot Camp: C:windowssystem32AppleControlPanel.exe

Pilotes/services/bidules Apple lancés automatiquement par Windows:
HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun:
Apple_KbdMgr    Boot Camp Manager           c:program filesboot campkbdmgr.exe
IRW                          IR Receiver Application   c:windowssystem32irw.exe
RtHDVCpl              HD Audio Control Panel    Realtek Semiconductor    c:program filesrealtekaudiohdaravcpl64.exe

HKLMSystemCurrentControlSetServices:
AppleOSSMgr         c:windowssystem32appleossmgr.exe
AppleTimeSrv       c:windowssystem32appletimesrv.exe
aapltctp                         Apple Trackpad Enabler   c:windowssystem32driversaapltctp.sys
aapltp                             Apple Trackpad Driver     c:windowssystem32driversaapltp.sys
applebt                           Apple Bluetooth     c:windowssystem32driversapplebt.sys
applemtm                     Apple Multitouch Mouse Driver    c:windowssystem32driversapplemtm.sys
applemtp                      Apple Multitouch Trackpad Driver  c:windowssystem32driversapplemtp.sys
AppleODD                     Apple Optical Disc Drive    c:windowssystem32driversappleodd.sys
AppleUSBEthernet    Apple USB Ethernet Adapter Driver  c:windowssystem32driversappleusbethernet.sys
DevUpper                     Apple iSight Driver  c:windowssystem32driversisightft.sys
IRRemoteFlt               IR Receiver Driver   c:windowssystem32driversirfilter.sys
KeyAgent                     Apple KeyAgent Driver c:windowssystem32driverskeyagent.sys
KeyMagic                    Apple Keyboard Driver  c:windowssystem32driverskeymagic.sys

Périphériques tels qu’ils doivent apparaitre:

devices

Boot Camp doit avoir un onglet TrackPad entre autres:

bootcamp

Quelques astuces:

  • Clique droit: deux doigts sur le touchpad + bouton de clique gauche
  • Page up/down: deux doigts qui montent/descendent sur le touchpad
  • Touche Suppr: fn + <-
  • Touche Windows: la touche cmd
  • touche : alt de droite + 8
  • ctrl+alt+suppr: ctrl + alt + <–
  • Pause: Fn + esc
  • impr écran: Fn + Maj + F11
  • Choisir l’OS au boot: maintenir appuyer la touche Alt de gauche jusqu’à avoir le menu de choix

l’ordinateur transfuge ?

En tombant sur un jeu nrj, quel surprise de découvrir le premier Mac qui est un PC:

pc_mac

Visiblement, ça ne les dérangent pas de mettre un Mac en photo, et de marquer juste dessous « PC portable ». En creusant un peu, cela devient encore plus rigolo, le règlement évoque un mini PC ACER Aspire ONE D150-0BW ou équivalent, pour un prix de 298 (vous direz, l’unité monétaire n’est pas indiquée, si c’est en livre sterling ca fait plus!):

aspire

Pourquoi donc mettre un Mac alors que pour 298€ (supposons), on n’aurait que le carton d’emballage ? Tout simplement parce qu’à gauche il y a un iphone, et que graphiquement ce Acer est plutôt moche!

iphone

Tant qu’à massacrer, ils ont mis un espace entre le « I » et « phone ».

Bizarre aussi, cette présence de Cisco pour un jeu comme celui-ci, avec même pas un firewall Asa ou un switch à gagner 😉

Tout ça pour dire que c’est pratiquement de la publicité mensongère, car il mette une photo d’un produit qu’il n’est pas possible d’avoir pour 298€, sans compter que ce n’est pas un PC portable mais un mini PC Portable, et donc un mini cadeau comparé à un Mac portable.

Pour ceux qui trouve que mon blog est orienté Microsoft, voilà de la bonne pub pour Apple qui rétablit l’équilibre ! Et si j’avoue que j’ai personnellement un iphone ?

DSI++: déploiement 64bit, maillot jaune ou voiture balais ?

Le 64 bit fut longtemps « réservé » si je puis dire aux systèmes ayant des besoins très importants (calculs ou allocation mémoire), au départ sur Unix (True64…).  Il s’est peu à peu démocratisé, jusqu’à avoir les OS postes clients Microsoft eux aussi en 64 bit. Cependant, l’intérêt du 64 bit ne parait pas évident de prime abord, on l’évoque seulement comme passage obligé pour profiter pleinenement d’un système avec plus de 4Go de mémoire. Microsoft a « jeté un pavé dans la mare » en supportant Exchange 2007 uniquement en 64 bit en production. La deuxième couche arrive avec Windows 2008 R2, qui sera seulement supporté en 64 bit en production.

Pourquoi freiner le passage au 64 bit en entreprise ?

  • La plupart des éditeurs ne proposent toujours pas de version 64 bit de leur produit. Windows passera donc par Wow64 pour émuler du 32 bit de toute façon.
  • Les pilotes doivent être signés par Microsoft. Pourquoi ce forcing ? près des deux tiers des plantages systèmes (les fameux écrans bleus) sont dûs à des problèmes dans les pilotes. Basiquement, pour que Microsoft signe un pilote, il doit passer un test automatisé, gage de stabilité. Vous pouvez tester vous même les pilotes de votre poste client sous XP / vista. Il suffit de faire Démarrer / Exécuter / verifier. Bien que ce soit écrit « pour les développeurs », c’est aussi le choix pour les « administrateurs ». Plusieurs types de vérification sont proposés:

verifier

  • Il ne faut pas activer ces vérifications sur tous les pilotes sous peine de ne plus pouvoir booter le système, sauf si vous êtes certains de la qualité de vos pilotes (ou s’ils sont déjà signés).
  • Certains éditeurs propose une version 64 bit, mais tous les processus sont 32 bit, c’est juste que leur produit 32 bit fonctionne en environnement 64 bit.
  • Les logiciels qui fonctionnent difficilements en 32 bit, fonctionnent encore plus péniblement en 64 bit.

Apple, avec Snow Leopard, a finalement fait le choix de la rupture: Ils ne fournissent qu’une version 64 bit. Les iMac et autre anciens mac n’auront donc pas droit à la mise à jour. Les éditeurs vont être forcés de sortir des versions 64 bit décentes.

Faut-il donc être le maillot jaune du 64 bit ? Je ne pense pas, à moins d’avoir des besoins avérés réels. Cependant, déployer du 64 bit en 2009 ne fait plus de vous un maillot jaune ! Il ne faut cependant pas négliger la gestion du changement auprès de vos équipes systèmes et surtout développements. Je recommande, comme toujours, de penser grand mais commencer petit. Profitez de nouveaux projets pour vous faire la main (enfin le plutôt le cerveau!). Cela évite aussi de refaire une recette juste pour le passage au 64 bit.

Voici une proposition d’ordre déploiement:

  1. Les serveurs d’infrastructure pures (DC, WSUS, backup…)
  2. Serveur de messagerie (Exchange 2007)
  3. Serveur de bases de données (SQL 2005..)
  4. Serveur Web
  5. Serveurs TSE/Citrix (implique les applications hébergées dessus)
  6. Le reste !

Cygwin1.dll et le mystérieux problème de version

Ayant commencé l’informatique sur Linux/FreeBSD, j’ai mes petites habitudes pour analyser des logs (awk/sed/cat/sort/uniq…).
Récemment cygwin, un port de shell Unix (bash) et outils diverses s’est mis à ne plus fonctionner:
cygwin

Il s’agit donc d’un problème sur cygwin1.dll. Effectivement, j’utilise aussi en ce moment un autre outil, John the ripper, qui a été porté sur Windows via cygwin.
La DLL pour JTR est beaucoup plus ancienne que mon installation de cygwin. Démarrer dans l’ordre inverse donne le même résultat, c’est JTR qui plante.

Procmon de Sysinternals indique bien que chaque programme charge la dll cygwin1.dll de son répertoire, mais JTR lis la DLL et fini par « Load image » alors que cygwin fait uniquement un « Load image »:

procmon

Process Explorer m’a permis de mettre en évidence d’où vient le problème. Cygwin1.dll utilise un handle de type section qui porte le même nom quelque soit la version de la DLL.

Voici les handles pour JTR:
cygwin1_processexplorer_jtr

Voici les handles pour cygwin lui même (bash.exe)cygwin1_processexplorer_cygwin

J’ai pu confirmer le diagnostique en utilisant une fonctionnalité de Process Explorer: fermer arbitrairement un handle:

cygwin1_processexplorer_jtr_close

Le shell Cygwin (bash.exe) se lance maintenant, alors que JTR tourne toujours. Je ne sais pas cependant si cela peut avoir des conséquences dans JTR:

cygwin